mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-05-13 15:13:36 +00:00
popen: Set gl_cv_func_popen_works to "guessing no" on OS/2.
* doc/posix-functions/popen.texi: List OS/2 kLIBC case. * m4/popen.m4 (gl_FUNC_POPEN): Set gl_cv_func_popen_works to "guessing no" on OS/2. Copyright-paperwork-exempt: Yes
This commit is contained in:
committed by
Bruno Haible
parent
4d18fa815a
commit
39ed3d9cb6
@@ -1,3 +1,10 @@
|
||||
2025-02-10 KO Myung-Hun <komh78@gmail.com>
|
||||
|
||||
popen: Set gl_cv_func_popen_works to "guessing no" on OS/2.
|
||||
* doc/posix-functions/popen.texi: List OS/2 kLIBC case.
|
||||
* m4/popen.m4 (gl_FUNC_POPEN): Set gl_cv_func_popen_works to
|
||||
"guessing no" on OS/2.
|
||||
|
||||
2025-02-10 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
mbsstr, unistr, unigbrk: Support library namespacing.
|
||||
|
||||
@@ -16,6 +16,9 @@ MSVC 14.
|
||||
Some platforms start the child with closed stdin or stdout if the
|
||||
standard descriptors were closed in the parent:
|
||||
Cygwin 1.5.x.
|
||||
@item
|
||||
This function hangs if called with closed stdin or stdout on some platforms:
|
||||
OS/2 kLIBC.
|
||||
@end itemize
|
||||
|
||||
Portability problems not fixed by Gnulib:
|
||||
|
||||
58
m4/popen.m4
58
m4/popen.m4
@@ -1,5 +1,5 @@
|
||||
# popen.m4
|
||||
# serial 7
|
||||
# serial 8
|
||||
dnl Copyright (C) 2009-2025 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
@@ -17,30 +17,38 @@ AC_DEFUN([gl_FUNC_POPEN],
|
||||
AC_CACHE_CHECK([whether popen works with closed stdin],
|
||||
[gl_cv_func_popen_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <stdio.h>]],
|
||||
[[int result = 0;
|
||||
FILE *child;
|
||||
fclose (stdin);
|
||||
fclose (stdout);
|
||||
child = popen ("echo a", "r");
|
||||
if (fgetc (child) != 'a')
|
||||
result |= 1;
|
||||
if (pclose (child) != 0)
|
||||
result |= 2;
|
||||
return result;
|
||||
]])],
|
||||
[gl_cv_func_popen_works=yes],
|
||||
[gl_cv_func_popen_works=no],
|
||||
[case "$host_os" in
|
||||
# For now, only cygwin 1.5 or older is known to be broken.
|
||||
cygwin*) gl_cv_func_popen_works="guessing no" ;;
|
||||
# Guess yes on native Windows.
|
||||
mingw* | windows*) gl_cv_func_popen_works="guessing yes" ;;
|
||||
*) gl_cv_func_popen_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
case "$host_os" in
|
||||
os2*)
|
||||
# On OS/2 kLIBC, popen() with closed stdios hangs on.
|
||||
gl_cv_func_popen_works="guessing no"
|
||||
;;
|
||||
*)
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <stdio.h>]],
|
||||
[[int result = 0;
|
||||
FILE *child;
|
||||
fclose (stdin);
|
||||
fclose (stdout);
|
||||
child = popen ("echo a", "r");
|
||||
if (fgetc (child) != 'a')
|
||||
result |= 1;
|
||||
if (pclose (child) != 0)
|
||||
result |= 2;
|
||||
return result;
|
||||
]])],
|
||||
[gl_cv_func_popen_works=yes],
|
||||
[gl_cv_func_popen_works=no],
|
||||
[case "$host_os" in
|
||||
# For now, only cygwin 1.5 or older is known to be broken.
|
||||
cygwin*) gl_cv_func_popen_works="guessing no" ;;
|
||||
# Guess yes on native Windows.
|
||||
mingw* | windows*) gl_cv_func_popen_works="guessing yes" ;;
|
||||
*) gl_cv_func_popen_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
case "$gl_cv_func_popen_works" in
|
||||
*yes) ;;
|
||||
|
||||
Reference in New Issue
Block a user