Mercurial > hg > octave-lojdl > gnulib-hg
changeset 14880:608708e78fec
canonicalize-lgpl: work around AIX realpath bug
AIX 7.1 realpath() gets horribly confused by consecutive /
in the name to be resolved.
* m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS): Expose AIX bug.
* doc/posix-functions/realpath.texi (realpath): Document it.
Reported by Bruno Haible.
Signed-off-by: Eric Blake <eblake@redhat.com>
author | Eric Blake <eblake@redhat.com> |
---|---|
date | Mon, 06 Jun 2011 16:17:50 -0600 |
parents | 7900fd3c88e4 |
children | a45bd474f320 |
files | ChangeLog doc/posix-functions/realpath.texi m4/canonicalize.m4 |
diffstat | 3 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-06-06 Eric Blake <eblake@redhat.com> + canonicalize-lgpl: work around AIX realpath bug + * m4/canonicalize.m4 (gl_FUNC_REALPATH_WORKS): Expose AIX bug. + * doc/posix-functions/realpath.texi (realpath): Document it. + Reported by Bruno Haible. + strerror: work around FreeBSD bug * lib/strerror.c (strerror): Special case 0. Reported by Bruno Haible.
--- a/doc/posix-functions/realpath.texi +++ b/doc/posix-functions/realpath.texi @@ -27,6 +27,9 @@ This function fails to recognize non-directories followed @samp{..} on some platforms: cygwin. +@item +This function misbehaves on consecutive slashes on some platforms: +AIX 7. @end itemize Portability problems not fixed by Gnulib:
--- a/m4/canonicalize.m4 +++ b/m4/canonicalize.m4 @@ -1,4 +1,4 @@ -# canonicalize.m4 serial 19 +# canonicalize.m4 serial 20 dnl Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc. @@ -62,10 +62,12 @@ AC_CHECK_FUNCS_ONCE([realpath]) AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [ touch conftest.a + mkdir conftest.d AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ ]GL_NOCRASH[ #include <stdlib.h> + #include <string.h> ]], [[ int result = 0; { @@ -83,10 +85,17 @@ if (name != NULL) result |= 4; } + { + char *name1 = realpath (".", NULL); + char *name2 = realpath ("conftest.d//./..", NULL); + if (strcmp (name1, name2) != 0) + result |= 8; + } return result; ]]) ], [gl_cv_func_realpath_works=yes], [gl_cv_func_realpath_works=no], [gl_cv_func_realpath_works="guessing no"]) + rm -Rf conftest.a conftest.d ]) if test "$gl_cv_func_realpath_works" = yes; then AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath()