From 6df372680c56c386edba7333490588fac1a3aa63 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 31 Jan 2012 22:04:34 -0800 Subject: [PATCH] Port to older Solaris 10 versions (Bug#10677). Bug reported by Chong Yidong for SunOS 5.10 Generic_127111-11 sparc. I cannot reproduce it on SunOS 5.10 Generic_141444-09 sparc but possibly this is because Sun fixed the 'stat' bug in my version. * Makefile.in (GNULIB_TOOL_FLAGS): Do not avoid the pathmax module. * lib/pathmax.h, m4/pathmax.m4: New files, from gnulib. * lib/gnulib.mk, m4/gl-comp.m4: Regenerate. These changes are based on gnulib version 4f11d6bebc3098c64ffde27079ab0d0cecfd0cdc dated 2011-10-07 20:59:10, because Emacs is in feature freeze and we do not want to merge any more-recent changes from gnulib. --- ChangeLog | 14 +++++++++ Makefile.in | 2 +- lib/gnulib.mk | 11 ++++++- lib/pathmax.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++ m4/gl-comp.m4 | 15 +++++++++ m4/pathmax.m4 | 42 ++++++++++++++++++++++++++ 6 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 lib/pathmax.h create mode 100644 m4/pathmax.m4 diff --git a/ChangeLog b/ChangeLog index bc5b3fcd77..731bd80d54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2012-02-01 Paul Eggert + + Port to older Solaris 10 versions (Bug#10677). + Bug reported by Chong Yidong for SunOS 5.10 Generic_127111-11 sparc. + I cannot reproduce it on SunOS 5.10 Generic_141444-09 sparc but + possibly this is because Sun fixed the 'stat' bug in my version. + * Makefile.in (GNULIB_TOOL_FLAGS): Do not avoid the pathmax module. + * lib/pathmax.h, m4/pathmax.m4: New files, from gnulib. + * lib/gnulib.mk, m4/gl-comp.m4: Regenerate. + These changes are based on gnulib version + 4f11d6bebc3098c64ffde27079ab0d0cecfd0cdc dated 2011-10-07 20:59:10, + because Emacs is in feature freeze and we do not want to merge any + more-recent changes from gnulib. + 2012-01-31 Glenn Morris * configure.in: Throw an explicit error if Motif toolkit was diff --git a/Makefile.in b/Makefile.in index f178a3aeb1..6c1f34bade 100644 --- a/Makefile.in +++ b/Makefile.in @@ -341,7 +341,7 @@ GNULIB_MODULES = \ mktime pthread_sigmask readlink \ socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat GNULIB_TOOL_FLAGS = \ - --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax \ + --avoid=msvc-inval --avoid=msvc-nothrow \ --avoid=raise --avoid=threadlib \ --conditional-dependencies --import --no-changelog --no-vc-files \ --makefile-name=gnulib.mk diff --git a/lib/gnulib.mk b/lib/gnulib.mk index 14010feb04..154ae9882d 100644 --- a/lib/gnulib.mk +++ b/lib/gnulib.mk @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=pathmax --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat MOSTLYCLEANFILES += core *.stackdump @@ -258,6 +258,15 @@ EXTRA_libgnu_a_SOURCES += mktime.c ## end gnulib module mktime +## begin gnulib module pathmax + +if gl_GNULIB_ENABLED_pathmax + +endif +EXTRA_DIST += pathmax.h + +## end gnulib module pathmax + ## begin gnulib module pthread_sigmask diff --git a/lib/pathmax.h b/lib/pathmax.h new file mode 100644 index 0000000000..c47618a1b6 --- /dev/null +++ b/lib/pathmax.h @@ -0,0 +1,84 @@ +/* Define PATH_MAX somehow. Requires sys/types.h. + Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2011 Free Software + Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _PATHMAX_H +# define _PATHMAX_H + +/* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename, + including the terminating NUL byte. + + PATH_MAX is not defined on systems which have no limit on filename length, + such as GNU/Hurd. + + This file does *not* define PATH_MAX always. Programs that use this file + can handle the GNU/Hurd case in several ways: + - Either with a package-wide handling, or with a per-file handling, + - Either through a + #ifdef PATH_MAX + or through a fallback like + #ifndef PATH_MAX + # define PATH_MAX 8192 + #endif + or through a fallback like + #ifndef PATH_MAX + # define PATH_MAX pathconf ("/", _PC_PATH_MAX) + #endif + */ + +# include + +# include + +# ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 256 +# endif + +/* Don't include sys/param.h if it already has been. */ +# if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +# endif + +# if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +# endif + +# ifdef __hpux +/* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename, + *not* including the terminating NUL byte, and is set to 1023. + Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is + not defined at all any more. */ +# undef PATH_MAX +# define PATH_MAX 1024 +# endif + +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com, + section "Maximum Path Length Limitation", + + explains that the maximum size of a filename, including the terminating + NUL byte, is 260 = 3 + 256 + 1. + This is the same value as + - FILENAME_MAX in , + - _MAX_PATH in , + - MAX_PATH in . + Undefine the original value, because mingw's gets it wrong. */ +# undef PATH_MAX +# define PATH_MAX 260 +# endif + +#endif /* _PATHMAX_H */ diff --git a/m4/gl-comp.m4 b/m4/gl-comp.m4 index 03cedf70af..4894f84030 100644 --- a/m4/gl-comp.m4 +++ b/m4/gl-comp.m4 @@ -65,6 +65,7 @@ AC_DEFUN([gl_EARLY], # Code from module mktime: # Code from module multiarch: # Code from module nocrash: + # Code from module pathmax: # Code from module pthread_sigmask: # Code from module readlink: # Code from module signal-h: @@ -217,6 +218,7 @@ AC_REQUIRE([AC_C_INLINE]) gl_UNISTD_H gl_gnulib_enabled_dosname=false gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36=false + gl_gnulib_enabled_pathmax=false gl_gnulib_enabled_sigprocmask=false gl_gnulib_enabled_stat=false gl_gnulib_enabled_strtoll=false @@ -236,6 +238,13 @@ AC_SUBST([LTLIBINTL]) gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36=true fi } + func_gl_gnulib_m4code_pathmax () + { + if ! $gl_gnulib_enabled_pathmax; then +gl_PATHMAX + gl_gnulib_enabled_pathmax=true + fi + } func_gl_gnulib_m4code_sigprocmask () { if ! $gl_gnulib_enabled_sigprocmask; then @@ -261,6 +270,9 @@ gl_SYS_STAT_MODULE_INDICATOR([stat]) if test $REPLACE_STAT = 1; then func_gl_gnulib_m4code_dosname fi + if test $REPLACE_STAT = 1; then + func_gl_gnulib_m4code_pathmax + fi if test $REPLACE_STAT = 1; then func_gl_gnulib_m4code_verify fi @@ -326,6 +338,7 @@ gl_STDLIB_MODULE_INDICATOR([strtoull]) m4_pattern_allow([^gl_GNULIB_ENABLED_]) AM_CONDITIONAL([gl_GNULIB_ENABLED_dosname], [$gl_gnulib_enabled_dosname]) AM_CONDITIONAL([gl_GNULIB_ENABLED_be453cec5eecf5731a274f2de7f2db36], [$gl_gnulib_enabled_be453cec5eecf5731a274f2de7f2db36]) + AM_CONDITIONAL([gl_GNULIB_ENABLED_pathmax], [$gl_gnulib_enabled_pathmax]) AM_CONDITIONAL([gl_GNULIB_ENABLED_sigprocmask], [$gl_gnulib_enabled_sigprocmask]) AM_CONDITIONAL([gl_GNULIB_ENABLED_stat], [$gl_gnulib_enabled_stat]) AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll]) @@ -502,6 +515,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/md5.h lib/mktime-internal.h lib/mktime.c + lib/pathmax.h lib/pthread_sigmask.c lib/readlink.c lib/sha1.c @@ -552,6 +566,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/mktime.m4 m4/multiarch.m4 m4/nocrash.m4 + m4/pathmax.m4 m4/pthread_sigmask.m4 m4/readlink.m4 m4/sha1.m4 diff --git a/m4/pathmax.m4 b/m4/pathmax.m4 new file mode 100644 index 0000000000..4913fa06cb --- /dev/null +++ b/m4/pathmax.m4 @@ -0,0 +1,42 @@ +# pathmax.m4 serial 10 +dnl Copyright (C) 2002-2003, 2005-2006, 2009-2011 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_PATHMAX], +[ + dnl Prerequisites of lib/pathmax.h. + AC_CHECK_HEADERS_ONCE([sys/param.h]) +]) + +# Expands to a piece of C program that defines PATH_MAX in the same way as +# "pathmax.h" will do. +AC_DEFUN([gl_PATHMAX_SNIPPET], [[ +/* Arrange to define PATH_MAX, like "pathmax.h" does. */ +#if HAVE_UNISTD_H +# include +#endif +#include +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif +#ifdef __hpux +# undef PATH_MAX +# define PATH_MAX 1024 +#endif +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +# undef PATH_MAX +# define PATH_MAX 260 +#endif +]]) + +# Prerequisites of gl_PATHMAX_SNIPPET. +AC_DEFUN([gl_PATHMAX_SNIPPET_PREREQ], +[ + AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h]) +]) -- 2.20.1