bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

fchdir on OSF/1


From: Bruno Haible
Subject: fchdir on OSF/1
Date: Sun, 19 Dec 2010 14:34:41 +0100
User-agent: KMail/1.9.9

Hi,

On newer versions of OSF/1 5.1, fchdir is not declared in <unistd.h> by default,
leading to this error:

source='test-fchdir.c' object='test-fchdir.o' libtool=no  DEPDIR=.deps 
depmode=tru64 /bin/ksh ./../build-aux/depcomp  cc -O -DHAVE_CONFIG_H -I.  
-DGNULIB_STRICT_CHECKING=1  -I. -I.  -I.. -I./..  -I../gllib -I./../gllib  
-ieee   -c -o test-fchdir.o test-fchdir.c
cc: Error: test-fchdir.c, line 24: In the initializer for signature_check24, 
"fchdir" is not declared. (undeclared)
SIGNATURE_CHECK (fchdir, int, (int));
^
*** Exit 1

The declaration could be made available by passing the flag -D_XOPEN_SOURCE=1,
but this flag causes many declarations (of truncl() in <math.h> and many others)
to become invisible. So this cure would be worse than the symptom.

Instead, this fixes it. I'll push it when savannah is back up again.


2010-12-19  Bruno Haible  <address@hidden>

        fchdir: Add missing declaration on OSF/1 5.1.
        * lib/unistd.in.h (fchdir): Provide declaration if systems lacks it.
        * m4/fchdir.m4 (gl_FUNC_FCHDIR): Check whether fchdir is declared.
        * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Initialize HAVE_DECL_FCHDIR.
        * modules/unistd (Makefile.am): Substitute HAVE_DECL_FCHDIR.
        * doc/posix-functions/fchdir.texi: Mention the OSF/1 5.1 problem.

--- doc/posix-functions/fchdir.texi.orig        Sun Dec 19 14:27:42 2010
+++ doc/posix-functions/fchdir.texi     Sun Dec 19 14:10:50 2010
@@ -12,6 +12,9 @@
 This function is missing on some platforms:
 Tandem/NSK, mingw, BeOS.
 But the replacement function is not safe to be used in libraries and is not 
multithread-safe.
address@hidden
+This function is not declared on some platforms:
+OSF/1 5.1.
 @end itemize
 
 Portability problems not fixed by Gnulib:
--- lib/unistd.in.h.orig        Sun Dec 19 14:27:42 2010
+++ lib/unistd.in.h     Sun Dec 19 14:12:49 2010
@@ -435,6 +435,10 @@
 _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
 _GL_EXTERN_C const char *_gl_directory_name (int fd);
 
+# else
+#  if address@hidden@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+#  endif
 # endif
 _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
 _GL_CXXALIASWARN (fchdir);
--- m4/fchdir.m4.orig   Sun Dec 19 14:27:42 2010
+++ m4/fchdir.m4        Sun Dec 19 14:15:24 2010
@@ -1,4 +1,4 @@
-# fchdir.m4 serial 14
+# fchdir.m4 serial 15
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -9,6 +9,12 @@
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
   AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+
+  AC_CHECK_DECLS_ONCE([fchdir])
+  if test $ac_cv_have_decl_fchdir = no; then
+    HAVE_DECL_FCHDIR=0
+  fi
+
   AC_CHECK_FUNCS_ONCE([fchdir])
   if test $ac_cv_func_fchdir = no; then
     HAVE_FCHDIR=0
--- m4/unistd_h.m4.orig Sun Dec 19 14:27:42 2010
+++ m4/unistd_h.m4      Sun Dec 19 14:13:34 2010
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 49
+# unistd_h.m4 serial 50
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -126,6 +126,7 @@
   HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
   HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
   HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
+  HAVE_DECL_FCHDIR=1;     AC_SUBST([HAVE_DECL_FCHDIR])
   HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
   HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
   HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
--- modules/unistd.orig Sun Dec 19 14:27:42 2010
+++ modules/unistd      Sun Dec 19 14:13:15 2010
@@ -100,6 +100,7 @@
              -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
              -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
              -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
              -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' 
\
              -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
              -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]