From unknown Mon Aug 18 04:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h. Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Nov 2012 17:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 12945 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 12945@debbugs.gnu.org Cc: Eli Zaretskii X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.135343321527511 (code B ref -1); Tue, 20 Nov 2012 17:41:02 +0000 Received: (at submit) by debbugs.gnu.org; 20 Nov 2012 17:40:15 +0000 Received: from localhost ([127.0.0.1]:57188 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tarnx-00079d-90 for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:40:14 -0500 Received: from eggs.gnu.org ([208.118.235.92]:47727) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tarnt-00079V-5z for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:40:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tarma-0003Dr-Q5 for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:38:59 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:55308) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tarma-0003Dm-MB for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:38:48 -0500 Received: from eggs.gnu.org ([208.118.235.92]:39213) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TarmT-0003Qs-SF for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 12:38:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TarmM-0003AE-Q2 for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 12:38:41 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:37247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TarmM-00039y-By; Tue, 20 Nov 2012 12:38:34 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 8672D39E8105; Tue, 20 Nov 2012 09:38:33 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jjo+XunsKbf7; Tue, 20 Nov 2012 09:38:32 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D9A1539E8106; Tue, 20 Nov 2012 09:38:31 -0800 (PST) Message-ID: <50ABC017.7060802@cs.ucla.edu> Date: Tue, 20 Nov 2012 09:38:31 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121029 Thunderbird/16.0.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) Here's a patch that I plan to install to simplify Emacs based on assuming that the underyling system supports POSIX 1003.1-1988 or later with respect to unistd.h. This is universal these days on GNUish hosts, and I don't forsee any problems with Microsoft hosts. I'm CC:ing this to Eli, though, to give him a heads-up just in case. It may help in a later patch to simplify the Microsoft side by removing getwd and standardizing on getcwd, since that's what POSIX did back in 1988, but that's an issue that's independent of this patch. === modified file 'ChangeLog' --- ChangeLog 2012-11-20 08:29:04 +0000 +++ ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,5 +1,8 @@ 2012-11-20 Paul Eggert + Assume POSIX 1003.1-1988 or later for unistd.h. + * configure.ac: Do not check for getcwd or getwd. + Improve static checking of integer overflow and stack smashing. * configure.ac (WARN_CFLAGS): Add -Wstack-protector if using GCC 4.7.2 or later on a platform with === modified file 'admin/CPP-DEFINES' --- admin/CPP-DEFINES 2012-11-17 22:12:47 +0000 +++ admin/CPP-DEFINES 2012-11-20 17:33:00 +0000 @@ -86,7 +86,6 @@ AMPERSAND_FULL_NAME BROKEN_DATAGRAM_SOCKETS BROKEN_FIONREAD -BROKEN_GETWD BROKEN_GET_CURRENT_DIR_NAME BROKEN_NON_BLOCKING_CONNECT BROKEN_PTY_READ_AFTER_EAGAIN @@ -161,7 +160,6 @@ HAVE_GAI_STRERROR HAVE_GCONF HAVE_GETADDRINFO -HAVE_GETCWD HAVE_GETDELIM HAVE_GETGRENT HAVE_GETHOSTNAME @@ -178,7 +176,6 @@ HAVE_GETRUSAGE HAVE_GETSOCKNAME HAVE_GETTIMEOFDAY -HAVE_GETWD HAVE_GET_CURRENT_DIR_NAME HAVE_GHOSTSCRIPT HAVE_GIF @@ -304,7 +301,6 @@ HAVE_SIGNED_WCHAR_T HAVE_SIGNED_WINT_T HAVE_SIGSET_T -HAVE_SIZE_T HAVE_SNPRINTF HAVE_SOCKETS HAVE_SOUND @@ -369,7 +365,6 @@ HAVE_TOUCHLOCK HAVE_TZNAME HAVE_TZSET -HAVE_UNISTD_H HAVE_UNSIGNED_LONG_LONG_INT HAVE_UTIL_H HAVE_UTIMENSAT === modified file 'admin/ChangeLog' --- admin/ChangeLog 2012-11-17 22:12:47 +0000 +++ admin/ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,3 +1,9 @@ +2012-11-20 Paul Eggert + + Assume POSIX 1003.1-1988 or later for unistd.h. + * CPP-DEFINES (BROKEN_GETWD, HAVE_GETCWD, HAVE_GETWD, HAVE_SIZE_T) + (HAVE_UNISTD_H): Remove. + 2012-11-17 Paul Eggert Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881). === modified file 'configure.ac' --- configure.ac 2012-11-20 08:29:04 +0000 +++ configure.ac 2012-11-20 17:33:00 +0000 @@ -2889,7 +2889,7 @@ closedir getrusage get_current_dir_name \ lrand48 \ select getpagesize setlocale \ -utimes getrlimit setrlimit getcwd shutdown getaddrinfo \ +utimes getrlimit setrlimit shutdown getaddrinfo \ strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ gai_strerror mkstemp getline getdelim fsync sync \ @@ -2898,14 +2898,6 @@ touchlock \ cfmakeraw cfsetspeed copysign __executable_start) -dnl getwd appears to be buggy on SVR4.2, so we don't use it. -if test $opsys = unixware; then - dnl In case some other test ends up checking for getwd. - AC_DEFINE(BROKEN_GETWD, 1, [Define if getwd should not be used.]) -else - AC_CHECK_FUNCS(getwd) -fi - ## Eric Backus says, HP-UX 9.x on HP 700 machines ## has a broken `rint' in some library versions including math library ## version number A.09.05. === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2012-11-20 08:31:19 +0000 +++ lib-src/ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,5 +1,15 @@ 2012-11-20 Paul Eggert + Assume POSIX 1003.1-1988 or later for unistd.h. + * emacsclient.c (getcwd): Remove decl. + (get_current_dir_name): Assume getcwd exists. + * etags.c (HAVE_GETCWD): Remove. + (getcwd): Remove decl. + (NO_LONG_OPTIONS): Remove this. All uses removed. + Emacs always has GNU getopt. + (etags_getcwd): Assume getcwd exists. + * movemail.c (F_OK, X_OK, W_OK, R_OK): Remove. + * emacsclient.c (handle_sigcont, handle_sigtstp): Use raise (sig) rather than kill (getpid (), sig), as it's simpler and safer. === modified file 'lib-src/emacsclient.c' --- lib-src/emacsclient.c 2012-11-20 08:31:19 +0000 +++ lib-src/emacsclient.c 2012-11-20 17:33:00 +0000 @@ -88,10 +88,7 @@ -char *getenv (const char *), *getwd (char *); -#ifdef HAVE_GETCWD -char *(getcwd) (char *, size_t); -#endif +char *getenv (const char *); #ifndef VERSION #define VERSION "unspecified" @@ -223,7 +220,7 @@ char *buf; const char *pwd; struct stat dotstat, pwdstat; - /* If PWD is accurate, use it instead of calling getwd. PWD is + /* If PWD is accurate, use it instead of calling getcwd. PWD is sometimes a nicer name, and using it may avoid a fatal error if a parent directory is searchable but not readable. */ if ((pwd = egetenv ("PWD")) != 0 @@ -240,7 +237,6 @@ buf = (char *) xmalloc (strlen (pwd) + 1); strcpy (buf, pwd); } -#ifdef HAVE_GETCWD else { size_t buf_size = 1024; @@ -267,20 +263,6 @@ } } } -#else - else - { - /* We need MAXPATHLEN here. */ - buf = (char *) xmalloc (MAXPATHLEN + 1); - if (getwd (buf) == NULL) - { - int tmp_errno = errno; - free (buf); - errno = tmp_errno; - return NULL; - } - } -#endif return buf; } #endif @@ -1592,7 +1574,6 @@ cwd = get_current_dir_name (); if (cwd == 0) { - /* getwd puts message in STRING if it fails. */ message (TRUE, "%s: %s\n", progname, "Cannot get current working directory"); fail (); === modified file 'lib-src/etags.c' --- lib-src/etags.c 2012-09-17 00:56:08 +0000 +++ lib-src/etags.c 2012-11-20 17:33:00 +0000 @@ -123,19 +123,9 @@ # undef HAVE_NTGUI # undef DOS_NT # define DOS_NT -# ifndef HAVE_GETCWD -# define HAVE_GETCWD -# endif /* undef HAVE_GETCWD */ -#else /* not WINDOWSNT */ -#endif /* !WINDOWSNT */ +#endif /* WINDOWSNT */ #include -#ifndef HAVE_UNISTD_H -# if defined (HAVE_GETCWD) && !defined (WINDOWSNT) - extern char *getcwd (char *buf, size_t size); -# endif -#endif /* HAVE_UNISTD_H */ - #include #include #include @@ -152,16 +142,7 @@ # define assert(x) ((void) 0) #endif -#ifdef NO_LONG_OPTIONS /* define this if you don't have GNU getopt */ -# define NO_LONG_OPTIONS TRUE -# define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr) - extern char *optarg; - extern int optind, opterr; -#else -# define NO_LONG_OPTIONS FALSE -# include -#endif /* NO_LONG_OPTIONS */ - +#include #include /* Define CTAGS to make the program "ctags" compatible with the usual one. @@ -869,11 +850,7 @@ printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\ \n\ These are the options accepted by %s.\n", progname, progname); - if (NO_LONG_OPTIONS) - puts ("WARNING: long option names do not work with this executable,\n\ -as it is not linked with GNU getopt."); - else - puts ("You may use unambiguous abbreviations for the long option names."); + puts ("You may use unambiguous abbreviations for the long option names."); puts (" A - as file name means read names from stdin (one per line).\n\ Absolute names are stored in the output file as they are.\n\ Relative ones are stored relative to the output file's directory.\n"); @@ -1065,9 +1042,9 @@ /* When the optstring begins with a '-' getopt_long does not rearrange the non-options arguments to be at the end, but leaves them alone. */ - optstring = concat (NO_LONG_OPTIONS ? "" : "-", - "ac:Cf:Il:o:r:RSVhH", - (CTAGS) ? "BxdtTuvw" : "Di:"); + optstring = concat ("-ac:Cf:Il:o:r:RSVhH", + (CTAGS) ? "BxdtTuvw" : "Di:", + ""); while ((opt = getopt_long (argc, argv, optstring, longopts, NULL)) != EOF) switch (opt) @@ -6333,8 +6310,8 @@ static void suggest_asking_for_help (void) { - fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n", - progname, NO_LONG_OPTIONS ? "-h" : "--help"); + fprintf (stderr, "\tTry `%s --help' for a complete list of options.\n", + progname); exit (EXIT_FAILURE); } @@ -6372,7 +6349,6 @@ static char * etags_getcwd (void) { -#ifdef HAVE_GETCWD int bufsize = 200; char *path = xnew (bufsize, char); @@ -6387,34 +6363,6 @@ canonicalize_filename (path); return path; - -#else /* not HAVE_GETCWD */ -#if MSDOS - - char *p, path[MAXPATHLEN + 1]; /* Fixed size is safe on MSDOS. */ - - getwd (path); - - for (p = path; *p != '\0'; p++) - if (*p == '\\') - *p = '/'; - else - *p = lowcase (*p); - - return strdup (path); -#else /* not MSDOS */ - linebuffer path; - FILE *pipe; - - linebuffer_init (&path); - pipe = (FILE *) popen ("pwd 2>/dev/null", "r"); - if (pipe == NULL || readline_internal (&path, pipe) == 0) - pfatal ("pwd"); - pclose (pipe); - - return path.buffer; -#endif /* not MSDOS */ -#endif /* not HAVE_GETCWD */ } /* Return a newly allocated string containing the file name of FILE === modified file 'lib-src/movemail.c' --- lib-src/movemail.c 2012-11-17 22:12:47 +0000 +++ lib-src/movemail.c 2012-11-20 17:33:00 +0000 @@ -96,13 +96,6 @@ #include #endif /* WINDOWSNT */ -#ifndef F_OK -#define F_OK 0 -#define X_OK 1 -#define W_OK 2 -#define R_OK 4 -#endif - #ifdef WINDOWSNT #include #endif === modified file 'src/ChangeLog' --- src/ChangeLog 2012-11-20 11:41:57 +0000 +++ src/ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,5 +1,10 @@ 2012-11-20 Paul Eggert + Assume POSIX 1003.1-1988 or later for unistd.h. + * alloc.c: Assume unistd.h exists. + * sysdep.c (get_current_dir_name): Assume getcwd exists. + (getwd) [USG]: Remove; no longer needed. + * eval.c (interactive_p): Remove no-longer-used decl. 2012-11-20 Dmitry Antipov === modified file 'src/alloc.c' --- src/alloc.c 2012-11-12 01:09:34 +0000 +++ src/alloc.c 2012-11-20 17:33:00 +0000 @@ -63,10 +63,6 @@ #endif #include -#ifndef HAVE_UNISTD_H -extern void *sbrk (); -#endif - #include #ifdef USE_GTK === modified file 'src/sysdep.c' --- src/sysdep.c 2012-11-17 22:12:47 +0000 +++ src/sysdep.c 2012-11-20 17:33:00 +0000 @@ -134,12 +134,12 @@ get_current_dir_name (void) { char *buf; - char *pwd; + char *pwd = getenv ("PWD"); struct stat dotstat, pwdstat; - /* If PWD is accurate, use it instead of calling getwd. PWD is + /* If PWD is accurate, use it instead of calling getcwd. PWD is sometimes a nicer name, and using it may avoid a fatal error if a parent directory is searchable but not readable. */ - if ((pwd = getenv ("PWD")) != 0 + if (pwd && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1]))) && stat (pwd, &pwdstat) == 0 && stat (".", &dotstat) == 0 @@ -155,7 +155,6 @@ return NULL; strcpy (buf, pwd); } -#ifdef HAVE_GETCWD else { size_t buf_size = 1024; @@ -179,22 +178,6 @@ return NULL; } } -#else - else - { - /* We need MAXPATHLEN here. */ - buf = malloc (MAXPATHLEN + 1); - if (!buf) - return NULL; - if (getwd (buf) == NULL) - { - int tmp_errno = errno; - free (buf); - errno = tmp_errno; - return NULL; - } - } -#endif return buf; } #endif @@ -2238,60 +2221,6 @@ &emacs_norealloc_allocator, careadlinkatcwd); } -#ifdef USG -/* - * All of the following are for USG. - * - * On USG systems the system calls are INTERRUPTIBLE by signals - * that the user program has elected to catch. Thus the system call - * must be retried in these cases. To handle this without massive - * changes in the source code, we remap the standard system call names - * to names for our own functions in sysdep.c that do the system call - * with retries. Actually, for portability reasons, it is good - * programming practice, as this example shows, to limit all actual - * system calls to a single occurrence in the source. Sure, this - * adds an extra level of function call overhead but it is almost - * always negligible. Fred Fish, Unisoft Systems Inc. - */ - -/* - * Warning, this function may not duplicate 4.2 action properly - * under error conditions. - */ - -#if !defined (HAVE_GETWD) || defined (BROKEN_GETWD) - -#ifndef MAXPATHLEN -/* In 4.1, param.h fails to define this. */ -#define MAXPATHLEN 1024 -#endif - -char * -getwd (char *pathname) -{ - char *npath, *spath; - extern char *getcwd (char *, size_t); - - block_input (); /* getcwd uses malloc */ - spath = npath = getcwd ((char *) 0, MAXPATHLEN); - if (spath == 0) - { - unblock_input (); - return spath; - } - /* On Altos 3068, getcwd can return @hostname/dir, so discard - up to first slash. Should be harmless on other systems. */ - while (*npath && *npath != '/') - npath++; - strcpy (pathname, npath); - free (spath); /* getcwd uses malloc */ - unblock_input (); - return pathname; -} - -#endif /* !defined (HAVE_GETWD) || defined (BROKEN_GETWD) */ -#endif /* USG */ - /* Directory routines for systems that don't have them. */ #ifdef HAVE_DIRENT_H From unknown Mon Aug 18 04:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h. Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Nov 2012 18:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12945 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Paul Eggert Cc: 12945@debbugs.gnu.org X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org Reply-To: Eli Zaretskii Received: via spool by submit@debbugs.gnu.org id=B.135343541930736 (code B ref -1); Tue, 20 Nov 2012 18:17:02 +0000 Received: (at submit) by debbugs.gnu.org; 20 Nov 2012 18:16:59 +0000 Received: from localhost ([127.0.0.1]:57239 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TasNW-0007zh-T6 for submit@debbugs.gnu.org; Tue, 20 Nov 2012 13:16:59 -0500 Received: from eggs.gnu.org ([208.118.235.92]:35505) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TasNV-0007zc-JM for submit@debbugs.gnu.org; Tue, 20 Nov 2012 13:16:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TasMM-0000q2-76 for submit@debbugs.gnu.org; Tue, 20 Nov 2012 13:15:47 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:46389) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TasMM-0000py-3T for submit@debbugs.gnu.org; Tue, 20 Nov 2012 13:15:46 -0500 Received: from eggs.gnu.org ([208.118.235.92]:53948) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TasMG-0007Hi-Fk for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 13:15:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TasMF-0000oK-91 for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 13:15:40 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]:34698) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TasMF-0000o8-11 for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 13:15:39 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MDS00800TCJ2Z00@a-mtaout20.012.net.il> for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 20:15:15 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MDS0078YTDEOZD0@a-mtaout20.012.net.il>; Tue, 20 Nov 2012 20:15:15 +0200 (IST) Date: Tue, 20 Nov 2012 20:14:55 +0200 From: Eli Zaretskii In-reply-to: <50ABC017.7060802@cs.ucla.edu> X-012-Sender: halo1@inter.net.il Message-id: <83fw44w38g.fsf@gnu.org> References: <50ABC017.7060802@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -4.6 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.4 (-----) > Date: Tue, 20 Nov 2012 09:38:31 -0800 > From: Paul Eggert > CC: Eli Zaretskii > > Here's a patch that I plan to install to simplify Emacs based > on assuming that the underyling system supports POSIX 1003.1-1988 > or later with respect to unistd.h. This is universal these days > on GNUish hosts, and I don't forsee any problems with Microsoft > hosts. I'm CC:ing this to Eli, though, to give him a heads-up > just in case. > > It may help in a later patch to simplify the Microsoft side by > removing getwd and standardizing on getcwd, since that's what > POSIX did back in 1988, but that's an issue that's independent > of this patch. It's not independent. The getwd in w32.c must be modified to be getcwd instead. Otherwise, I see no problems with this, as far as the MS-Windows build is concerned. From unknown Mon Aug 18 04:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h. Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Nov 2012 20:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12945 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: eggert@cs.ucla.edu Cc: 12945@debbugs.gnu.org Reply-To: Eli Zaretskii Received: via spool by 12945-submit@debbugs.gnu.org id=B12945.135344250912093 (code B ref 12945); Tue, 20 Nov 2012 20:16:02 +0000 Received: (at 12945) by debbugs.gnu.org; 20 Nov 2012 20:15:09 +0000 Received: from localhost ([127.0.0.1]:57348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TauDt-000390-KW for submit@debbugs.gnu.org; Tue, 20 Nov 2012 15:15:09 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]:39261) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TauDr-00038s-6y for 12945@debbugs.gnu.org; Tue, 20 Nov 2012 15:15:08 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0MDS00800XTH0700@a-mtaout22.012.net.il> for 12945@debbugs.gnu.org; Tue, 20 Nov 2012 22:13:55 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MDS008LEYV67Z10@a-mtaout22.012.net.il>; Tue, 20 Nov 2012 22:13:55 +0200 (IST) Date: Tue, 20 Nov 2012 22:13:35 +0200 From: Eli Zaretskii In-reply-to: <83fw44w38g.fsf@gnu.org> X-012-Sender: halo1@inter.net.il Message-id: <833904vxqo.fsf@gnu.org> References: <50ABC017.7060802@cs.ucla.edu> <83fw44w38g.fsf@gnu.org> X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Date: Tue, 20 Nov 2012 20:14:55 +0200 > From: Eli Zaretskii > Cc: 12945@debbugs.gnu.org > > > It may help in a later patch to simplify the Microsoft side by > > removing getwd and standardizing on getcwd, since that's what > > POSIX did back in 1988, but that's an issue that's independent > > of this patch. > > It's not independent. The getwd in w32.c must be modified to be > getcwd instead. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.179.55.172 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.4999] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Date: Tue, 20 Nov 2012 20:14:55 +0200 > From: Eli Zaretskii > Cc: 12945@debbugs.gnu.org > > > It may help in a later patch to simplify the Microsoft side by > > removing getwd and standardizing on getcwd, since that's what > > POSIX did back in 1988, but that's an issue that's independent > > of this patch. > > It's not independent. The getwd in w32.c must be modified to be > getcwd instead. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.179.55.172 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.4681] > Date: Tue, 20 Nov 2012 20:14:55 +0200 > From: Eli Zaretskii > Cc: 12945@debbugs.gnu.org > > > It may help in a later patch to simplify the Microsoft side by > > removing getwd and standardizing on getcwd, since that's what > > POSIX did back in 1988, but that's an issue that's independent > > of this patch. > > It's not independent. The getwd in w32.c must be modified to be > getcwd instead. Here's the patch for that: === modified file 'src/w32.c' --- src/w32.c 2012-11-17 22:12:47 +0000 +++ src/w32.c 2012-11-20 20:11:08 +0000 @@ -901,8 +901,18 @@ static char startup_dir[MAXPATHLEN]; /* Get the current working directory. */ char * -getwd (char *dir) +getcwd (char *dir, int dirsize) { + if (!dirsize) + { + errno = EINVAL; + return NULL; + } + if (dirsize < strlen (startup_dir) + 1) + { + errno = ERANGE; + return NULL; + } #if 0 if (GetCurrentDirectory (MAXPATHLEN, dir) > 0) return dir; From unknown Mon Aug 18 04:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h. Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Nov 2012 20:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12945 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 12945@debbugs.gnu.org Received: via spool by 12945-submit@debbugs.gnu.org id=B12945.135344474115487 (code B ref 12945); Tue, 20 Nov 2012 20:53:02 +0000 Received: (at 12945) by debbugs.gnu.org; 20 Nov 2012 20:52:21 +0000 Received: from localhost ([127.0.0.1]:57431 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Taunr-00041j-Up for submit@debbugs.gnu.org; Tue, 20 Nov 2012 15:52:21 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:36195) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Taunm-00041X-EM for 12945@debbugs.gnu.org; Tue, 20 Nov 2012 15:52:18 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id CAB80A60001; Tue, 20 Nov 2012 12:51:02 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IZjskYowla7g; Tue, 20 Nov 2012 12:51:01 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 2319339E8100; Tue, 20 Nov 2012 12:51:01 -0800 (PST) Message-ID: <50ABED34.7040307@cs.ucla.edu> Date: Tue, 20 Nov 2012 12:51:00 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121029 Thunderbird/16.0.2 MIME-Version: 1.0 References: <50ABC017.7060802@cs.ucla.edu> <83fw44w38g.fsf@gnu.org> <833904vxqo.fsf@gnu.org> In-Reply-To: <833904vxqo.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------010808090100000307020503" X-Spam-Score: -4.6 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.6 (----) This is a multi-part message in MIME format. --------------010808090100000307020503 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 11/20/12 12:13, Eli Zaretskii wrote: > Here's the patch for that: Thanks. Won't we need patches elswhere to match? Something like the following. I'm attaching a combined patch, relative to trunk bzr 110966. Also, how is this related to the "#define getcwd _getcwd" in lib-src/ntlib.h? === modified file 'nt/config.nt' --- nt/config.nt 2012-11-17 23:58:56 +0000 +++ nt/config.nt 2012-11-20 20:44:17 +0000 @@ -411,11 +411,10 @@ /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO -/* Define to 1 if you have the `getcwd' function. - If you think about defining HAVE_GETCWD, don't: the alternative - getwd is redefined on w32.c, and does not really return the current +/* Define to 1 if you have the `getcwd' function. This is + defined on w32.c, and does not really return the current directory, to get the desired results elsewhere in Emacs. */ -#undef HAVE_GETCWD +#define HAVE_GETCWD 1 /* Define to 1 if you have the `getdelim' function. */ #undef HAVE_GETDELIM === modified file 'src/fileio.c' --- src/fileio.c 2012-11-14 04:55:41 +0000 +++ src/fileio.c 2012-11-20 20:44:17 +0000 @@ -1133,7 +1133,7 @@ newdir = "/"; } else - getwd (adir); + getcwd (adir, MAXPATHLEN + 1); newdir = adir; } === modified file 'src/msdos.c' --- src/msdos.c 2012-11-05 03:18:32 +0000 +++ src/msdos.c 2012-11-20 20:44:17 +0000 @@ -3784,7 +3784,7 @@ Lisp_Object cmd; /* Get current directory as MSDOS cwd is not per-process. */ - getwd (oldwd); + getcwd (oldwd, sizeof oldwd); /* If argv[0] is the shell, it might come in any lettercase. Since `Fmember' is case-sensitive, we need to downcase === modified file 'src/sysdep.c' --- src/sysdep.c 2012-11-20 17:33:00 +0000 +++ src/sysdep.c 2012-11-20 20:44:17 +0000 @@ -101,7 +101,6 @@ #define _P_WAIT 0 int _cdecl _spawnlp (int, const char *, const char *, ...); int _cdecl _getpid (void); -extern char *getwd (char *); #endif #include "syssignal.h" @@ -504,7 +503,7 @@ const char *sh = 0; #ifdef DOS_NT /* MW, Aug 1993 */ - getwd (oldwd); + getcwd (oldwd, sizeof oldwd); if (sh == 0) sh = (char *) egetenv ("SUSPEND"); /* KFS, 1994-12-14 */ #endif === modified file 'src/w32.c' --- src/w32.c 2012-11-17 22:12:47 +0000 +++ src/w32.c 2012-11-20 20:44:17 +0000 @@ -901,8 +901,18 @@ /* Get the current working directory. */ char * -getwd (char *dir) +getcwd (char *dir, size_t dirsize) { + if (!dirsize) + { + errno = EINVAL; + return NULL; + } + if (dirsize <= strlen (startup_dir)) + { + errno = ERANGE; + return NULL; + } #if 0 if (GetCurrentDirectory (MAXPATHLEN, dir) > 0) return dir; @@ -1818,7 +1828,7 @@ memcpy (*envp, "COMSPEC=", 8); } - /* Remember the initial working directory for getwd. */ + /* Remember the initial working directory for getcwd. */ /* FIXME: Do we need to resolve possible symlinks in startup_dir? Does it matter anywhere in Emacs? */ if (!GetCurrentDirectory (MAXPATHLEN, startup_dir)) === modified file 'src/w32.h' --- src/w32.h 2012-10-17 19:02:44 +0000 +++ src/w32.h 2012-11-20 20:44:17 +0000 @@ -163,7 +163,7 @@ extern void register_child (int, int); extern void sys_sleep (int); -extern char *getwd (char *); +extern char *getcwd (char *, size_t); extern int sys_link (const char *, const char *); @@ -181,4 +181,3 @@ #endif /* HAVE_GNUTLS */ #endif /* EMACS_W32_H */ - --------------010808090100000307020503 Content-Type: text/plain; charset=us-ascii; name="unistd.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="unistd.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTExLTIw IDA4OjI5OjA0ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMS0yMCAxNzo0NTo0NSArMDAw MApAQCAtMSw1ICsxLDggQEAKIDIwMTItMTEtMjAgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgogCisJQXNzdW1lIFBPU0lYIDEwMDMuMS0xOTg4IG9yIGxhdGVyIGZvciB1 bmlzdGQuaCAoQnVnIzEyOTQ1KS4KKwkqIGNvbmZpZ3VyZS5hYzogRG8gbm90IGNoZWNrIGZv ciBnZXRjd2Qgb3IgZ2V0d2QuCisKIAlJbXByb3ZlIHN0YXRpYyBjaGVja2luZyBvZiBpbnRl Z2VyIG92ZXJmbG93IGFuZCBzdGFjayBzbWFzaGluZy4KIAkqIGNvbmZpZ3VyZS5hYyAoV0FS Tl9DRkxBR1MpOiBBZGQgLVdzdGFjay1wcm90ZWN0b3IKIAlpZiB1c2luZyBHQ0MgNC43LjIg b3IgbGF0ZXIgb24gYSBwbGF0Zm9ybSB3aXRoCgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4v Q1BQLURFRklORVMnCi0tLSBhZG1pbi9DUFAtREVGSU5FUwkyMDEyLTExLTE3IDIyOjEyOjQ3 ICswMDAwCisrKyBhZG1pbi9DUFAtREVGSU5FUwkyMDEyLTExLTIwIDE3OjMzOjAwICswMDAw CkBAIC04Niw3ICs4Niw2IEBACiBBTVBFUlNBTkRfRlVMTF9OQU1FCiBCUk9LRU5fREFUQUdS QU1fU09DS0VUUwogQlJPS0VOX0ZJT05SRUFECi1CUk9LRU5fR0VUV0QKIEJST0tFTl9HRVRf Q1VSUkVOVF9ESVJfTkFNRQogQlJPS0VOX05PTl9CTE9DS0lOR19DT05ORUNUCiBCUk9LRU5f UFRZX1JFQURfQUZURVJfRUFHQUlOCkBAIC0xNjEsNyArMTYwLDYgQEAKIEhBVkVfR0FJX1NU UkVSUk9SCiBIQVZFX0dDT05GCiBIQVZFX0dFVEFERFJJTkZPCi1IQVZFX0dFVENXRAogSEFW RV9HRVRERUxJTQogSEFWRV9HRVRHUkVOVAogSEFWRV9HRVRIT1NUTkFNRQpAQCAtMTc4LDcg KzE3Niw2IEBACiBIQVZFX0dFVFJVU0FHRQogSEFWRV9HRVRTT0NLTkFNRQogSEFWRV9HRVRU SU1FT0ZEQVkKLUhBVkVfR0VUV0QKIEhBVkVfR0VUX0NVUlJFTlRfRElSX05BTUUKIEhBVkVf R0hPU1RTQ1JJUFQKIEhBVkVfR0lGCkBAIC0zMDQsNyArMzAxLDYgQEAKIEhBVkVfU0lHTkVE X1dDSEFSX1QKIEhBVkVfU0lHTkVEX1dJTlRfVAogSEFWRV9TSUdTRVRfVAotSEFWRV9TSVpF X1QKIEhBVkVfU05QUklOVEYKIEhBVkVfU09DS0VUUwogSEFWRV9TT1VORApAQCAtMzY5LDcg KzM2NSw2IEBACiBIQVZFX1RPVUNITE9DSwogSEFWRV9UWk5BTUUKIEhBVkVfVFpTRVQKLUhB VkVfVU5JU1REX0gKIEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVAogSEFWRV9VVElMX0gK IEhBVkVfVVRJTUVOU0FUCgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ2hhbmdlTG9nJwot LS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTEtMTcgMjI6MTI6NDcgKzAwMDAKKysrIGFkbWlu L0NoYW5nZUxvZwkyMDEyLTExLTIwIDE3OjQ1OjQ1ICswMDAwCkBAIC0xLDMgKzEsOSBAQAor MjAxMi0xMS0yMCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlBc3N1 bWUgUE9TSVggMTAwMy4xLTE5ODggb3IgbGF0ZXIgZm9yIHVuaXN0ZC5oIChCdWcjMTI5NDUp LgorCSogQ1BQLURFRklORVMgKEJST0tFTl9HRVRXRCwgSEFWRV9HRVRDV0QsIEhBVkVfR0VU V0QsIEhBVkVfU0laRV9UKQorCShIQVZFX1VOSVNURF9IKTogUmVtb3ZlLgorCiAyMDEyLTEx LTE3ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KIAogCUFzc3VtZSBQT1NJ WCAxMDAzLjEtMTk4OCBvciBsYXRlciBmb3IgZmNudGwuaCAoQnVnIzEyODgxKS4KCj09PSBt b2RpZmllZCBmaWxlICdjb25maWd1cmUuYWMnCi0tLSBjb25maWd1cmUuYWMJMjAxMi0xMS0y MCAwODoyOTowNCArMDAwMAorKysgY29uZmlndXJlLmFjCTIwMTItMTEtMjAgMTc6MzM6MDAg KzAwMDAKQEAgLTI4ODksNyArMjg4OSw3IEBACiBjbG9zZWRpciBnZXRydXNhZ2UgZ2V0X2N1 cnJlbnRfZGlyX25hbWUgXAogbHJhbmQ0OCBcCiBzZWxlY3QgZ2V0cGFnZXNpemUgc2V0bG9j YWxlIFwKLXV0aW1lcyBnZXRybGltaXQgc2V0cmxpbWl0IGdldGN3ZCBzaHV0ZG93biBnZXRh ZGRyaW5mbyBcCit1dGltZXMgZ2V0cmxpbWl0IHNldHJsaW1pdCBzaHV0ZG93biBnZXRhZGRy aW5mbyBcCiBzdHJzaWduYWwgc2V0aXRpbWVyIFwKIHNlbmR0byByZWN2ZnJvbSBnZXRzb2Nr bmFtZSBnZXRwZWVybmFtZSBnZXRpZmFkZHJzIGZyZWVpZmFkZHJzIFwKIGdhaV9zdHJlcnJv ciBta3N0ZW1wIGdldGxpbmUgZ2V0ZGVsaW0gZnN5bmMgc3luYyBcCkBAIC0yODk4LDE0ICsy ODk4LDYgQEAKIHRvdWNobG9jayBcCiBjZm1ha2VyYXcgY2ZzZXRzcGVlZCBjb3B5c2lnbiBf X2V4ZWN1dGFibGVfc3RhcnQpCiAKLWRubCBnZXR3ZCBhcHBlYXJzIHRvIGJlIGJ1Z2d5IG9u IFNWUjQuMiwgc28gd2UgZG9uJ3QgdXNlIGl0LgotaWYgdGVzdCAkb3BzeXMgPSB1bml4d2Fy ZTsgdGhlbgotICBkbmwgSW4gY2FzZSBzb21lIG90aGVyIHRlc3QgZW5kcyB1cCBjaGVja2lu ZyBmb3IgZ2V0d2QuCi0gIEFDX0RFRklORShCUk9LRU5fR0VUV0QsIDEsIFtEZWZpbmUgaWYg Z2V0d2Qgc2hvdWxkIG5vdCBiZSB1c2VkLl0pCi1lbHNlCi0gIEFDX0NIRUNLX0ZVTkNTKGdl dHdkKQotZmkKLQogIyMgRXJpYyBCYWNrdXMgPGVyaWNiQGxzaWQuaHAuY29tPiBzYXlzLCBI UC1VWCA5Lnggb24gSFAgNzAwIG1hY2hpbmVzCiAjIyBoYXMgYSBicm9rZW4gYHJpbnQnIGlu IHNvbWUgbGlicmFyeSB2ZXJzaW9ucyBpbmNsdWRpbmcgbWF0aCBsaWJyYXJ5CiAjIyB2ZXJz aW9uIG51bWJlciBBLjA5LjA1LgoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1zcmMvQ2hhbmdl TG9nJwotLS0gbGliLXNyYy9DaGFuZ2VMb2cJMjAxMi0xMS0yMCAwODozMToxOSArMDAwMAor KysgbGliLXNyYy9DaGFuZ2VMb2cJMjAxMi0xMS0yMCAxNzo0NTo0NSArMDAwMApAQCAtMSw1 ICsxLDE1IEBACiAyMDEyLTExLTIwICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVk dT4KIAorCUFzc3VtZSBQT1NJWCAxMDAzLjEtMTk4OCBvciBsYXRlciBmb3IgdW5pc3RkLmgg KEJ1ZyMxMjk0NSkuCisJKiBlbWFjc2NsaWVudC5jIChnZXRjd2QpOiBSZW1vdmUgZGVjbC4K KwkoZ2V0X2N1cnJlbnRfZGlyX25hbWUpOiBBc3N1bWUgZ2V0Y3dkIGV4aXN0cy4KKwkqIGV0 YWdzLmMgKEhBVkVfR0VUQ1dEKTogUmVtb3ZlLgorCShnZXRjd2QpOiBSZW1vdmUgZGVjbC4K KwkoTk9fTE9OR19PUFRJT05TKTogUmVtb3ZlIHRoaXMuICBBbGwgdXNlcyByZW1vdmVkLgor CUVtYWNzIGFsd2F5cyBoYXMgR05VIGdldG9wdC4KKwkoZXRhZ3NfZ2V0Y3dkKTogQXNzdW1l IGdldGN3ZCBleGlzdHMuCisJKiBtb3ZlbWFpbC5jIChGX09LLCBYX09LLCBXX09LLCBSX09L KTogUmVtb3ZlLgorCiAJKiBlbWFjc2NsaWVudC5jIChoYW5kbGVfc2lnY29udCwgaGFuZGxl X3NpZ3RzdHApOiBVc2UgcmFpc2UgKHNpZykKIAlyYXRoZXIgdGhhbiBraWxsIChnZXRwaWQg KCksIHNpZyksIGFzIGl0J3Mgc2ltcGxlciBhbmQgc2FmZXIuCiAKCj09PSBtb2RpZmllZCBm aWxlICdsaWItc3JjL2VtYWNzY2xpZW50LmMnCi0tLSBsaWItc3JjL2VtYWNzY2xpZW50LmMJ MjAxMi0xMS0yMCAwODozMToxOSArMDAwMAorKysgbGliLXNyYy9lbWFjc2NsaWVudC5jCTIw MTItMTEtMjAgMTc6MzM6MDAgKzAwMDAKQEAgLTg4LDEwICs4OCw3IEBACiAKIAogDAotY2hh ciAqZ2V0ZW52IChjb25zdCBjaGFyICopLCAqZ2V0d2QgKGNoYXIgKik7Ci0jaWZkZWYgSEFW RV9HRVRDV0QKLWNoYXIgKihnZXRjd2QpIChjaGFyICosIHNpemVfdCk7Ci0jZW5kaWYKK2No YXIgKmdldGVudiAoY29uc3QgY2hhciAqKTsKIAogI2lmbmRlZiBWRVJTSU9OCiAjZGVmaW5l IFZFUlNJT04gInVuc3BlY2lmaWVkIgpAQCAtMjIzLDcgKzIyMCw3IEBACiAgIGNoYXIgKmJ1 ZjsKICAgY29uc3QgY2hhciAqcHdkOwogICBzdHJ1Y3Qgc3RhdCBkb3RzdGF0LCBwd2RzdGF0 OwotICAvKiBJZiBQV0QgaXMgYWNjdXJhdGUsIHVzZSBpdCBpbnN0ZWFkIG9mIGNhbGxpbmcg Z2V0d2QuICBQV0QgaXMKKyAgLyogSWYgUFdEIGlzIGFjY3VyYXRlLCB1c2UgaXQgaW5zdGVh ZCBvZiBjYWxsaW5nIGdldGN3ZC4gIFBXRCBpcwogICAgICBzb21ldGltZXMgYSBuaWNlciBu YW1lLCBhbmQgdXNpbmcgaXQgbWF5IGF2b2lkIGEgZmF0YWwgZXJyb3IgaWYgYQogICAgICBw YXJlbnQgZGlyZWN0b3J5IGlzIHNlYXJjaGFibGUgYnV0IG5vdCByZWFkYWJsZS4gICovCiAg ICAgaWYgKChwd2QgPSBlZ2V0ZW52ICgiUFdEIikpICE9IDAKQEAgLTI0MCw3ICsyMzcsNiBA QAogICAgICAgYnVmID0gKGNoYXIgKikgeG1hbGxvYyAoc3RybGVuIChwd2QpICsgMSk7CiAg ICAgICBzdHJjcHkgKGJ1ZiwgcHdkKTsKICAgICB9Ci0jaWZkZWYgSEFWRV9HRVRDV0QKICAg ZWxzZQogICAgIHsKICAgICAgIHNpemVfdCBidWZfc2l6ZSA9IDEwMjQ7CkBAIC0yNjcsMjAg KzI2Myw2IEBACiAJICAgIH0KICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gIGVsc2UKLSAg ICB7Ci0gICAgICAvKiBXZSBuZWVkIE1BWFBBVEhMRU4gaGVyZS4gICovCi0gICAgICBidWYg PSAoY2hhciAqKSB4bWFsbG9jIChNQVhQQVRITEVOICsgMSk7Ci0gICAgICBpZiAoZ2V0d2Qg KGJ1ZikgPT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAgIGludCB0bXBfZXJybm8gPSBl cnJubzsKLSAgICAgICAgICBmcmVlIChidWYpOwotICAgICAgICAgIGVycm5vID0gdG1wX2Vy cm5vOwotICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlm CiAgIHJldHVybiBidWY7CiB9CiAjZW5kaWYKQEAgLTE1OTIsNyArMTU3NCw2IEBACiAgIGN3 ZCA9IGdldF9jdXJyZW50X2Rpcl9uYW1lICgpOwogICBpZiAoY3dkID09IDApCiAgICAgewot ICAgICAgLyogZ2V0d2QgcHV0cyBtZXNzYWdlIGluIFNUUklORyBpZiBpdCBmYWlscy4gICov CiAgICAgICBtZXNzYWdlIChUUlVFLCAiJXM6ICVzXG4iLCBwcm9nbmFtZSwKIAkgICAgICAg IkNhbm5vdCBnZXQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSIpOwogICAgICAgZmFpbCAo KTsKCj09PSBtb2RpZmllZCBmaWxlICdsaWItc3JjL2V0YWdzLmMnCi0tLSBsaWItc3JjL2V0 YWdzLmMJMjAxMi0wOS0xNyAwMDo1NjowOCArMDAwMAorKysgbGliLXNyYy9ldGFncy5jCTIw MTItMTEtMjAgMTc6MzM6MDAgKzAwMDAKQEAgLTEyMywxOSArMTIzLDkgQEAKICMgdW5kZWYg SEFWRV9OVEdVSQogIyB1bmRlZiAgRE9TX05UCiAjIGRlZmluZSBET1NfTlQKLSMgaWZuZGVm IEhBVkVfR0VUQ1dECi0jICAgZGVmaW5lIEhBVkVfR0VUQ1dECi0jIGVuZGlmIC8qIHVuZGVm IEhBVkVfR0VUQ1dEICovCi0jZWxzZSAvKiBub3QgV0lORE9XU05UICovCi0jZW5kaWYgLyog IVdJTkRPV1NOVCAqLworI2VuZGlmIC8qIFdJTkRPV1NOVCAqLwogCiAjaW5jbHVkZSA8dW5p c3RkLmg+Ci0jaWZuZGVmIEhBVkVfVU5JU1REX0gKLSMgaWYgZGVmaW5lZCAoSEFWRV9HRVRD V0QpICYmICFkZWZpbmVkIChXSU5ET1dTTlQpCi0gICAgZXh0ZXJuIGNoYXIgKmdldGN3ZCAo Y2hhciAqYnVmLCBzaXplX3Qgc2l6ZSk7Ci0jIGVuZGlmCi0jZW5kaWYgLyogSEFWRV9VTklT VERfSCAqLwotCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj aW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0xNTIsMTYgKzE0Miw3IEBACiAjIGRlZmluZSBhc3Nl cnQoeCkgKCh2b2lkKSAwKQogI2VuZGlmCiAKLSNpZmRlZiBOT19MT05HX09QVElPTlMJCS8q IGRlZmluZSB0aGlzIGlmIHlvdSBkb24ndCBoYXZlIEdOVSBnZXRvcHQgKi8KLSMgZGVmaW5l IE5PX0xPTkdfT1BUSU9OUyBUUlVFCi0jIGRlZmluZSBnZXRvcHRfbG9uZyhhcmdjLGFyZ3Ys b3B0c3RyLGxvcHRzLGxpbmQpIGdldG9wdCAoYXJnYywgYXJndiwgb3B0c3RyKQotICBleHRl cm4gY2hhciAqb3B0YXJnOwotICBleHRlcm4gaW50IG9wdGluZCwgb3B0ZXJyOwotI2Vsc2UK LSMgZGVmaW5lIE5PX0xPTkdfT1BUSU9OUyBGQUxTRQotIyBpbmNsdWRlIDxnZXRvcHQuaD4K LSNlbmRpZiAvKiBOT19MT05HX09QVElPTlMgKi8KLQorI2luY2x1ZGUgPGdldG9wdC5oPgog I2luY2x1ZGUgPHJlZ2V4Lmg+CiAKIC8qIERlZmluZSBDVEFHUyB0byBtYWtlIHRoZSBwcm9n cmFtICJjdGFncyIgY29tcGF0aWJsZSB3aXRoIHRoZSB1c3VhbCBvbmUuCkBAIC04NjksMTEg Kzg1MCw3IEBACiAgIHByaW50ZiAoIlVzYWdlOiAlcyBbb3B0aW9uc10gW1tyZWdleC1vcHRp b24gLi4uXSBmaWxlLW5hbWVdIC4uLlxuXAogXG5cCiBUaGVzZSBhcmUgdGhlIG9wdGlvbnMg YWNjZXB0ZWQgYnkgJXMuXG4iLCBwcm9nbmFtZSwgcHJvZ25hbWUpOwotICBpZiAoTk9fTE9O R19PUFRJT05TKQotICAgIHB1dHMgKCJXQVJOSU5HOiBsb25nIG9wdGlvbiBuYW1lcyBkbyBu b3Qgd29yayB3aXRoIHRoaXMgZXhlY3V0YWJsZSxcblwKLWFzIGl0IGlzIG5vdCBsaW5rZWQg d2l0aCBHTlUgZ2V0b3B0LiIpOwotICBlbHNlCi0gICAgcHV0cyAoIllvdSBtYXkgdXNlIHVu YW1iaWd1b3VzIGFiYnJldmlhdGlvbnMgZm9yIHRoZSBsb25nIG9wdGlvbiBuYW1lcy4iKTsK KyAgcHV0cyAoIllvdSBtYXkgdXNlIHVuYW1iaWd1b3VzIGFiYnJldmlhdGlvbnMgZm9yIHRo ZSBsb25nIG9wdGlvbiBuYW1lcy4iKTsKICAgcHV0cyAoIiAgQSAtIGFzIGZpbGUgbmFtZSBt ZWFucyByZWFkIG5hbWVzIGZyb20gc3RkaW4gKG9uZSBwZXIgbGluZSkuXG5cCiBBYnNvbHV0 ZSBuYW1lcyBhcmUgc3RvcmVkIGluIHRoZSBvdXRwdXQgZmlsZSBhcyB0aGV5IGFyZS5cblwK IFJlbGF0aXZlIG9uZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgb3V0cHV0IGZpbGUn cyBkaXJlY3RvcnkuXG4iKTsKQEAgLTEwNjUsOSArMTA0Miw5IEBACiAKICAgLyogV2hlbiB0 aGUgb3B0c3RyaW5nIGJlZ2lucyB3aXRoIGEgJy0nIGdldG9wdF9sb25nIGRvZXMgbm90IHJl YXJyYW5nZSB0aGUKICAgICAgbm9uLW9wdGlvbnMgYXJndW1lbnRzIHRvIGJlIGF0IHRoZSBl bmQsIGJ1dCBsZWF2ZXMgdGhlbSBhbG9uZS4gKi8KLSAgb3B0c3RyaW5nID0gY29uY2F0IChO T19MT05HX09QVElPTlMgPyAiIiA6ICItIiwKLQkJICAgICAgImFjOkNmOklsOm86cjpSU1Zo SCIsCi0JCSAgICAgIChDVEFHUykgPyAiQnhkdFR1dnciIDogIkRpOiIpOworICBvcHRzdHJp bmcgPSBjb25jYXQgKCItYWM6Q2Y6SWw6bzpyOlJTVmhIIiwKKwkJICAgICAgKENUQUdTKSA/ ICJCeGR0VHV2dyIgOiAiRGk6IiwKKwkJICAgICAgIiIpOwogCiAgIHdoaWxlICgob3B0ID0g Z2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsIG9wdHN0cmluZywgbG9uZ29wdHMsIE5VTEwpKSAh PSBFT0YpCiAgICAgc3dpdGNoIChvcHQpCkBAIC02MzMzLDggKzYzMTAsOCBAQAogc3RhdGlj IHZvaWQKIHN1Z2dlc3RfYXNraW5nX2Zvcl9oZWxwICh2b2lkKQogewotICBmcHJpbnRmIChz dGRlcnIsICJcdFRyeSBgJXMgJXMnIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2Ygb3B0aW9ucy5c biIsCi0JICAgcHJvZ25hbWUsIE5PX0xPTkdfT1BUSU9OUyA/ICItaCIgOiAiLS1oZWxwIik7 CisgIGZwcmludGYgKHN0ZGVyciwgIlx0VHJ5IGAlcyAtLWhlbHAnIGZvciBhIGNvbXBsZXRl IGxpc3Qgb2Ygb3B0aW9ucy5cbiIsCisJICAgcHJvZ25hbWUpOwogICBleGl0IChFWElUX0ZB SUxVUkUpOwogfQogCkBAIC02MzcyLDcgKzYzNDksNiBAQAogc3RhdGljIGNoYXIgKgogZXRh Z3NfZ2V0Y3dkICh2b2lkKQogewotI2lmZGVmIEhBVkVfR0VUQ1dECiAgIGludCBidWZzaXpl ID0gMjAwOwogICBjaGFyICpwYXRoID0geG5ldyAoYnVmc2l6ZSwgY2hhcik7CiAKQEAgLTYz ODcsMzQgKzYzNjMsNiBAQAogCiAgIGNhbm9uaWNhbGl6ZV9maWxlbmFtZSAocGF0aCk7CiAg IHJldHVybiBwYXRoOwotCi0jZWxzZSAvKiBub3QgSEFWRV9HRVRDV0QgKi8KLSNpZiBNU0RP UwotCi0gIGNoYXIgKnAsIHBhdGhbTUFYUEFUSExFTiArIDFdOyAvKiBGaXhlZCBzaXplIGlz IHNhZmUgb24gTVNET1MuICAqLwotCi0gIGdldHdkIChwYXRoKTsKLQotICBmb3IgKHAgPSBw YXRoOyAqcCAhPSAnXDAnOyBwKyspCi0gICAgaWYgKCpwID09ICdcXCcpCi0gICAgICAqcCA9 ICcvJzsKLSAgICBlbHNlCi0gICAgICAqcCA9IGxvd2Nhc2UgKCpwKTsKLQotICByZXR1cm4g c3RyZHVwIChwYXRoKTsKLSNlbHNlIC8qIG5vdCBNU0RPUyAqLwotICBsaW5lYnVmZmVyIHBh dGg7Ci0gIEZJTEUgKnBpcGU7Ci0KLSAgbGluZWJ1ZmZlcl9pbml0ICgmcGF0aCk7Ci0gIHBp cGUgPSAoRklMRSAqKSBwb3BlbiAoInB3ZCAyPi9kZXYvbnVsbCIsICJyIik7Ci0gIGlmIChw aXBlID09IE5VTEwgfHwgcmVhZGxpbmVfaW50ZXJuYWwgKCZwYXRoLCBwaXBlKSA9PSAwKQot ICAgIHBmYXRhbCAoInB3ZCIpOwotICBwY2xvc2UgKHBpcGUpOwotCi0gIHJldHVybiBwYXRo LmJ1ZmZlcjsKLSNlbmRpZiAvKiBub3QgTVNET1MgKi8KLSNlbmRpZiAvKiBub3QgSEFWRV9H RVRDV0QgKi8KIH0KIAogLyogUmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyBjb250 YWluaW5nIHRoZSBmaWxlIG5hbWUgb2YgRklMRQoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi1z cmMvbW92ZW1haWwuYycKLS0tIGxpYi1zcmMvbW92ZW1haWwuYwkyMDEyLTExLTE3IDIyOjEy OjQ3ICswMDAwCisrKyBsaWItc3JjL21vdmVtYWlsLmMJMjAxMi0xMS0yMCAxNzozMzowMCAr MDAwMApAQCAtOTYsMTMgKzk2LDYgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2VuZGlmIC8q IFdJTkRPV1NOVCAqLwogCi0jaWZuZGVmIEZfT0sKLSNkZWZpbmUgRl9PSyAwCi0jZGVmaW5l IFhfT0sgMQotI2RlZmluZSBXX09LIDIKLSNkZWZpbmUgUl9PSyA0Ci0jZW5kaWYKLQogI2lm ZGVmIFdJTkRPV1NOVAogI2luY2x1ZGUgPHN5cy9sb2NraW5nLmg+CiAjZW5kaWYKCj09PSBt b2RpZmllZCBmaWxlICdudC9DaGFuZ2VMb2cnCi0tLSBudC9DaGFuZ2VMb2cJMjAxMi0xMS0x OCAxNjo1NDozMSArMDAwMAorKysgbnQvQ2hhbmdlTG9nCTIwMTItMTEtMjAgMjA6NDQ6MTcg KzAwMDAKQEAgLTEsMyArMSw4IEBACisyMDEyLTExLTIwICBQYXVsIEVnZ2VydCAgPGVnZ2Vy dEBjcy51Y2xhLmVkdT4KKworCUFzc3VtZSBQT1NJWCAxMDAzLjEtMTk4OCBvciBsYXRlciBm b3IgdW5pc3RkLmggKEJ1ZyMxMjk0NSkuCisJKiBjb25maWcubnQgKEhBVkVfR0VUQ1dEKTog Tm93IDEuCisKIDIwMTItMTEtMTggIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+CiAK IAkqIGluYy91bmlzdGQuaDogRG9uJ3QgaW5jbHVkZSBmY250bC5oIGFuZCBkb24ndCBkZWZp bmUgT19SRFdSLgoKPT09IG1vZGlmaWVkIGZpbGUgJ250L2NvbmZpZy5udCcKLS0tIG50L2Nv bmZpZy5udAkyMDEyLTExLTE3IDIzOjU4OjU2ICswMDAwCisrKyBudC9jb25maWcubnQJMjAx Mi0xMS0yMCAyMDo0NDoxNyArMDAwMApAQCAtNDExLDExICs0MTEsMTAgQEAKIC8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0YWRkcmluZm8nIGZ1bmN0aW9uLiAqLwogI3Vu ZGVmIEhBVkVfR0VUQUREUklORk8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl IGBnZXRjd2QnIGZ1bmN0aW9uLgotICAgSWYgeW91IHRoaW5rIGFib3V0IGRlZmluaW5nIEhB VkVfR0VUQ1dELCBkb24ndDogdGhlIGFsdGVybmF0aXZlCi0gICBnZXR3ZCBpcyByZWRlZmlu ZWQgb24gdzMyLmMsIGFuZCBkb2VzIG5vdCByZWFsbHkgcmV0dXJuIHRoZSBjdXJyZW50Cisv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGN3ZCcgZnVuY3Rpb24uICBUaGlz IGlzCisgICBkZWZpbmVkIG9uIHczMi5jLCBhbmQgZG9lcyBub3QgcmVhbGx5IHJldHVybiB0 aGUgY3VycmVudAogICAgZGlyZWN0b3J5LCB0byBnZXQgdGhlIGRlc2lyZWQgcmVzdWx0cyBl bHNld2hlcmUgaW4gRW1hY3MuICAqLwotI3VuZGVmIEhBVkVfR0VUQ1dECisjZGVmaW5lIEhB VkVfR0VUQ1dEIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRkZWxp bScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRERUxJTQoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIwMTItMTEtMjAgMjA6MDY6 MTcgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0xMS0yMCAyMDo0NDoxNyArMDAwMApA QCAtMSwzICsxLDE1IEBACisyMDEyLTExLTIwICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51 Y2xhLmVkdT4KKworCUFzc3VtZSBQT1NJWCAxMDAzLjEtMTk4OCBvciBsYXRlciBmb3IgdW5p c3RkLmggKEJ1ZyMxMjk0NSkuCisJKiBhbGxvYy5jOiBBc3N1bWUgdW5pc3RkLmggZXhpc3Rz LgorCSogZmlsZWlvLmMgKEZleHBhbmRfZmlsZV9uYW1lKSBbRE9TX05UXToKKwkqIG1zZG9z LmMgKHJ1bl9tc2Rvc19jb21tYW5kKToKKwlVc2UgZ2V0Y3dkLCBub3QgZ2V0d2QuCisJKiBz eXNkZXAuYyAoZ2V0X2N1cnJlbnRfZGlyX25hbWUpOiBBc3N1bWUgZ2V0Y3dkIGV4aXN0cy4K KwkoZ2V0d2QpIFtVU0ddOiBSZW1vdmU7IG5vIGxvbmdlciBuZWVkZWQuCisJKHN5c19zdWJz aGVsbCkgW0RPU19OVF06IFVzZSBnZXRjd2QsIG5vdCBnZXR3ZC4KKwkqIHczMi5jLCB3MzIu aCAoZ2V0Y3dkKTogUmVuYW1lIGZyb20gZ2V0d2QsIGFuZCBzd2l0Y2ggdG8gZ2V0Y3dkJ3Mg QVBJLgorCiAyMDEyLTExLTIwICBTdGVmYW4gTW9ubmllciAgPG1vbm5pZXJAaXJvLnVtb250 cmVhbC5jYT4KIAogCUNvbmZsYXRlIFFuaWwgYW5kIFF1bmJvdW5kIGZvciBgc3ltYm9sLWZ1 bmN0aW9uJy4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYWxsb2MuYycKLS0tIHNyYy9hbGxv Yy5jCTIwMTItMTEtMjAgMjA6MDY6MTcgKzAwMDAKKysrIHNyYy9hbGxvYy5jCTIwMTItMTEt MjAgMjA6MDk6NDkgKzAwMDAKQEAgLTYzLDEwICs2Myw2IEBACiAjZW5kaWYKIAogI2luY2x1 ZGUgPHVuaXN0ZC5oPgotI2lmbmRlZiBIQVZFX1VOSVNURF9ICi1leHRlcm4gdm9pZCAqc2Jy ayAoKTsKLSNlbmRpZgotCiAjaW5jbHVkZSA8ZmNudGwuaD4KIAogI2lmZGVmIFVTRV9HVEsK Cj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWlvLmMnCi0tLSBzcmMvZmlsZWlvLmMJMjAx Mi0xMS0xNCAwNDo1NTo0MSArMDAwMAorKysgc3JjL2ZpbGVpby5jCTIwMTItMTEtMjAgMjA6 NDQ6MTcgKzAwMDAKQEAgLTExMzMsNyArMTEzMyw3IEBACiAJCW5ld2RpciA9ICIvIjsKIAkg ICAgfQogCSAgZWxzZQotCSAgICBnZXR3ZCAoYWRpcik7CisJICAgIGdldGN3ZCAoYWRpciwg TUFYUEFUSExFTiArIDEpOwogCSAgbmV3ZGlyID0gYWRpcjsKIAl9CiAKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvbXNkb3MuYycKLS0tIHNyYy9tc2Rvcy5jCTIwMTItMTEtMDUgMDM6MTg6 MzIgKzAwMDAKKysrIHNyYy9tc2Rvcy5jCTIwMTItMTEtMjAgMjA6NDQ6MTcgKzAwMDAKQEAg LTM3ODQsNyArMzc4NCw3IEBACiAgIExpc3BfT2JqZWN0IGNtZDsKIAogICAvKiBHZXQgY3Vy cmVudCBkaXJlY3RvcnkgYXMgTVNET1MgY3dkIGlzIG5vdCBwZXItcHJvY2Vzcy4gICovCi0g IGdldHdkIChvbGR3ZCk7CisgIGdldGN3ZCAob2xkd2QsIHNpemVvZiBvbGR3ZCk7CiAKICAg LyogSWYgYXJndlswXSBpcyB0aGUgc2hlbGwsIGl0IG1pZ2h0IGNvbWUgaW4gYW55IGxldHRl cmNhc2UuCiAgICAgIFNpbmNlIGBGbWVtYmVyJyBpcyBjYXNlLXNlbnNpdGl2ZSwgd2UgbmVl ZCB0byBkb3duY2FzZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNy Yy9zeXNkZXAuYwkyMDEyLTExLTE3IDIyOjEyOjQ3ICswMDAwCisrKyBzcmMvc3lzZGVwLmMJ MjAxMi0xMS0yMCAyMDo0NDoxNyArMDAwMApAQCAtMTAxLDcgKzEwMSw2IEBACiAjZGVmaW5l IF9QX1dBSVQgMAogaW50IF9jZGVjbCBfc3Bhd25scCAoaW50LCBjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgLi4uKTsKIGludCBfY2RlY2wgX2dldHBpZCAodm9pZCk7Ci1leHRlcm4g Y2hhciAqZ2V0d2QgKGNoYXIgKik7CiAjZW5kaWYKIAogI2luY2x1ZGUgInN5c3NpZ25hbC5o IgpAQCAtMTM0LDEyICsxMzMsMTIgQEAKIGdldF9jdXJyZW50X2Rpcl9uYW1lICh2b2lkKQog ewogICBjaGFyICpidWY7Ci0gIGNoYXIgKnB3ZDsKKyAgY2hhciAqcHdkID0gZ2V0ZW52ICgi UFdEIik7CiAgIHN0cnVjdCBzdGF0IGRvdHN0YXQsIHB3ZHN0YXQ7Ci0gIC8qIElmIFBXRCBp cyBhY2N1cmF0ZSwgdXNlIGl0IGluc3RlYWQgb2YgY2FsbGluZyBnZXR3ZC4gIFBXRCBpcwor ICAvKiBJZiBQV0QgaXMgYWNjdXJhdGUsIHVzZSBpdCBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2V0 Y3dkLiAgUFdEIGlzCiAgICAgIHNvbWV0aW1lcyBhIG5pY2VyIG5hbWUsIGFuZCB1c2luZyBp dCBtYXkgYXZvaWQgYSBmYXRhbCBlcnJvciBpZiBhCiAgICAgIHBhcmVudCBkaXJlY3Rvcnkg aXMgc2VhcmNoYWJsZSBidXQgbm90IHJlYWRhYmxlLiAgKi8KLSAgICBpZiAoKHB3ZCA9IGdl dGVudiAoIlBXRCIpKSAhPSAwCisgIGlmIChwd2QKICAgICAgICYmIChJU19ESVJFQ1RPUllf U0VQICgqcHdkKSB8fCAoKnB3ZCAmJiBJU19ERVZJQ0VfU0VQIChwd2RbMV0pKSkKICAgICAg ICYmIHN0YXQgKHB3ZCwgJnB3ZHN0YXQpID09IDAKICAgICAgICYmIHN0YXQgKCIuIiwgJmRv dHN0YXQpID09IDAKQEAgLTE1NSw3ICsxNTQsNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsK ICAgICAgIHN0cmNweSAoYnVmLCBwd2QpOwogICAgIH0KLSNpZmRlZiBIQVZFX0dFVENXRAog ICBlbHNlCiAgICAgewogICAgICAgc2l6ZV90IGJ1Zl9zaXplID0gMTAyNDsKQEAgLTE3OSwy MiArMTc3LDYgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAg fQotI2Vsc2UKLSAgZWxzZQotICAgIHsKLSAgICAgIC8qIFdlIG5lZWQgTUFYUEFUSExFTiBo ZXJlLiAgKi8KLSAgICAgIGJ1ZiA9IG1hbGxvYyAoTUFYUEFUSExFTiArIDEpOwotICAgICAg aWYgKCFidWYpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgICAgaWYgKGdldHdkIChidWYp ID09IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICBpbnQgdG1wX2Vycm5vID0gZXJybm87 Ci0gICAgICAgICAgZnJlZSAoYnVmKTsKLSAgICAgICAgICBlcnJubyA9IHRtcF9lcnJubzsK LSAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgogICBy ZXR1cm4gYnVmOwogfQogI2VuZGlmCkBAIC01MjEsNyArNTAzLDcgQEAKICAgICAgIGNvbnN0 IGNoYXIgKnNoID0gMDsKIAogI2lmZGVmIERPU19OVCAgICAvKiBNVywgQXVnIDE5OTMgKi8K LSAgICAgIGdldHdkIChvbGR3ZCk7CisgICAgICBnZXRjd2QgKG9sZHdkLCBzaXplb2Ygb2xk d2QpOwogICAgICAgaWYgKHNoID09IDApCiAJc2ggPSAoY2hhciAqKSBlZ2V0ZW52ICgiU1VT UEVORCIpOwkvKiBLRlMsIDE5OTQtMTItMTQgKi8KICNlbmRpZgpAQCAtMjIzOCw2MCArMjIy MCw2IEBACiAJCSAgICAgICAmZW1hY3Nfbm9yZWFsbG9jX2FsbG9jYXRvciwgY2FyZWFkbGlu a2F0Y3dkKTsKIH0KIAwKLSNpZmRlZiBVU0cKLS8qCi0gKglBbGwgb2YgdGhlIGZvbGxvd2lu ZyBhcmUgZm9yIFVTRy4KLSAqCi0gKglPbiBVU0cgc3lzdGVtcyB0aGUgc3lzdGVtIGNhbGxz IGFyZSBJTlRFUlJVUFRJQkxFIGJ5IHNpZ25hbHMKLSAqCXRoYXQgdGhlIHVzZXIgcHJvZ3Jh bSBoYXMgZWxlY3RlZCB0byBjYXRjaC4gIFRodXMgdGhlIHN5c3RlbSBjYWxsCi0gKgltdXN0 IGJlIHJldHJpZWQgaW4gdGhlc2UgY2FzZXMuICBUbyBoYW5kbGUgdGhpcyB3aXRob3V0IG1h c3NpdmUKLSAqCWNoYW5nZXMgaW4gdGhlIHNvdXJjZSBjb2RlLCB3ZSByZW1hcCB0aGUgc3Rh bmRhcmQgc3lzdGVtIGNhbGwgbmFtZXMKLSAqCXRvIG5hbWVzIGZvciBvdXIgb3duIGZ1bmN0 aW9ucyBpbiBzeXNkZXAuYyB0aGF0IGRvIHRoZSBzeXN0ZW0gY2FsbAotICoJd2l0aCByZXRy aWVzLiAgQWN0dWFsbHksIGZvciBwb3J0YWJpbGl0eSByZWFzb25zLCBpdCBpcyBnb29kCi0g Kglwcm9ncmFtbWluZyBwcmFjdGljZSwgYXMgdGhpcyBleGFtcGxlIHNob3dzLCB0byBsaW1p dCBhbGwgYWN0dWFsCi0gKglzeXN0ZW0gY2FsbHMgdG8gYSBzaW5nbGUgb2NjdXJyZW5jZSBp biB0aGUgc291cmNlLiAgU3VyZSwgdGhpcwotICoJYWRkcyBhbiBleHRyYSBsZXZlbCBvZiBm dW5jdGlvbiBjYWxsIG92ZXJoZWFkIGJ1dCBpdCBpcyBhbG1vc3QKLSAqCWFsd2F5cyBuZWds aWdpYmxlLiAgIEZyZWQgRmlzaCwgVW5pc29mdCBTeXN0ZW1zIEluYy4KLSAqLwotCi0vKgot ICoJV2FybmluZywgdGhpcyBmdW5jdGlvbiBtYXkgbm90IGR1cGxpY2F0ZSA0LjIgYWN0aW9u IHByb3Blcmx5Ci0gKgl1bmRlciBlcnJvciBjb25kaXRpb25zLgotICovCi0KLSNpZiAhZGVm aW5lZCAoSEFWRV9HRVRXRCkgfHwgZGVmaW5lZCAoQlJPS0VOX0dFVFdEKQotCi0jaWZuZGVm IE1BWFBBVEhMRU4KLS8qIEluIDQuMSwgcGFyYW0uaCBmYWlscyB0byBkZWZpbmUgdGhpcy4g ICovCi0jZGVmaW5lIE1BWFBBVEhMRU4gMTAyNAotI2VuZGlmCi0KLWNoYXIgKgotZ2V0d2Qg KGNoYXIgKnBhdGhuYW1lKQotewotICBjaGFyICpucGF0aCwgKnNwYXRoOwotICBleHRlcm4g Y2hhciAqZ2V0Y3dkIChjaGFyICosIHNpemVfdCk7Ci0KLSAgYmxvY2tfaW5wdXQgKCk7CQkJ LyogZ2V0Y3dkIHVzZXMgbWFsbG9jICovCi0gIHNwYXRoID0gbnBhdGggPSBnZXRjd2QgKChj aGFyICopIDAsIE1BWFBBVEhMRU4pOwotICBpZiAoc3BhdGggPT0gMCkKLSAgICB7Ci0gICAg ICB1bmJsb2NrX2lucHV0ICgpOwotICAgICAgcmV0dXJuIHNwYXRoOwotICAgIH0KLSAgLyog T24gQWx0b3MgMzA2OCwgZ2V0Y3dkIGNhbiByZXR1cm4gQGhvc3RuYW1lL2Rpciwgc28gZGlz Y2FyZAotICAgICB1cCB0byBmaXJzdCBzbGFzaC4gIFNob3VsZCBiZSBoYXJtbGVzcyBvbiBv dGhlciBzeXN0ZW1zLiAgKi8KLSAgd2hpbGUgKCpucGF0aCAmJiAqbnBhdGggIT0gJy8nKQot ICAgIG5wYXRoKys7Ci0gIHN0cmNweSAocGF0aG5hbWUsIG5wYXRoKTsKLSAgZnJlZSAoc3Bh dGgpOwkJCS8qIGdldGN3ZCB1c2VzIG1hbGxvYyAqLwotICB1bmJsb2NrX2lucHV0ICgpOwot ICByZXR1cm4gcGF0aG5hbWU7Ci19Ci0KLSNlbmRpZiAvKiAhZGVmaW5lZCAoSEFWRV9HRVRX RCkgfHwgZGVmaW5lZCAoQlJPS0VOX0dFVFdEKSAqLwotI2VuZGlmIC8qIFVTRyAqLwotDAog LyogRGlyZWN0b3J5IHJvdXRpbmVzIGZvciBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGVt LiAqLwogCiAjaWZkZWYgSEFWRV9ESVJFTlRfSAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93 MzIuYycKLS0tIHNyYy93MzIuYwkyMDEyLTExLTE3IDIyOjEyOjQ3ICswMDAwCisrKyBzcmMv dzMyLmMJMjAxMi0xMS0yMCAyMDo0NDoxNyArMDAwMApAQCAtOTAxLDggKzkwMSwxOCBAQAog CiAvKiBHZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICAqLwogY2hhciAqCi1n ZXR3ZCAoY2hhciAqZGlyKQorZ2V0Y3dkIChjaGFyICpkaXIsIHNpemVfdCBkaXJzaXplKQog eworICBpZiAoIWRpcnNpemUpCisgICAgeworICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAg ICByZXR1cm4gTlVMTDsKKyAgICB9CisgIGlmIChkaXJzaXplIDw9IHN0cmxlbiAoc3RhcnR1 cF9kaXIpKQorICAgIHsKKyAgICAgIGVycm5vID0gRVJBTkdFOworICAgICAgcmV0dXJuIE5V TEw7CisgICAgfQogI2lmIDAKICAgaWYgKEdldEN1cnJlbnREaXJlY3RvcnkgKE1BWFBBVEhM RU4sIGRpcikgPiAwKQogICAgIHJldHVybiBkaXI7CkBAIC0xODE4LDcgKzE4MjgsNyBAQAog CW1lbWNweSAoKmVudnAsICJDT01TUEVDPSIsIDgpOwogICB9CiAKLSAgLyogUmVtZW1iZXIg dGhlIGluaXRpYWwgd29ya2luZyBkaXJlY3RvcnkgZm9yIGdldHdkLiAgKi8KKyAgLyogUmVt ZW1iZXIgdGhlIGluaXRpYWwgd29ya2luZyBkaXJlY3RvcnkgZm9yIGdldGN3ZC4gICovCiAg IC8qIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHJlc29sdmUgcG9zc2libGUgc3ltbGlua3MgaW4g c3RhcnR1cF9kaXI/CiAgICAgIERvZXMgaXQgbWF0dGVyIGFueXdoZXJlIGluIEVtYWNzPyAg Ki8KICAgaWYgKCFHZXRDdXJyZW50RGlyZWN0b3J5IChNQVhQQVRITEVOLCBzdGFydHVwX2Rp cikpCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3czMi5oJwotLS0gc3JjL3czMi5oCTIwMTIt MTAtMTcgMTk6MDI6NDQgKzAwMDAKKysrIHNyYy93MzIuaAkyMDEyLTExLTIwIDIwOjQ0OjE3 ICswMDAwCkBAIC0xNjMsNyArMTYzLDcgQEAKIGV4dGVybiB2b2lkIHJlZ2lzdGVyX2NoaWxk IChpbnQsIGludCk7CiAKIGV4dGVybiB2b2lkIHN5c19zbGVlcCAoaW50KTsKLWV4dGVybiBj aGFyICpnZXR3ZCAoY2hhciAqKTsKK2V4dGVybiBjaGFyICpnZXRjd2QgKGNoYXIgKiwgc2l6 ZV90KTsKIGV4dGVybiBpbnQgc3lzX2xpbmsgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq KTsKIAogCkBAIC0xODEsNCArMTgxLDMgQEAKICNlbmRpZiAvKiBIQVZFX0dOVVRMUyAqLwog CiAjZW5kaWYgLyogRU1BQ1NfVzMyX0ggKi8KLQoK --------------010808090100000307020503-- From unknown Mon Aug 18 04:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h. Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Nov 2012 03:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12945 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Paul Eggert Cc: 12945@debbugs.gnu.org Reply-To: Eli Zaretskii Received: via spool by 12945-submit@debbugs.gnu.org id=B12945.135346932718475 (code B ref 12945); Wed, 21 Nov 2012 03:43:02 +0000 Received: (at 12945) by debbugs.gnu.org; 21 Nov 2012 03:42:07 +0000 Received: from localhost ([127.0.0.1]:57635 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tb1CQ-0004nv-Jf for submit@debbugs.gnu.org; Tue, 20 Nov 2012 22:42:07 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]:61319) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tb1CN-0004nT-9B for 12945@debbugs.gnu.org; Tue, 20 Nov 2012 22:42:04 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0MDT00C00JCM2R00@a-mtaout22.012.net.il> for 12945@debbugs.gnu.org; Wed, 21 Nov 2012 05:40:48 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MDT00B4FJK0X790@a-mtaout22.012.net.il>; Wed, 21 Nov 2012 05:40:48 +0200 (IST) Date: Wed, 21 Nov 2012 05:40:30 +0200 From: Eli Zaretskii In-reply-to: <50ABED34.7040307@cs.ucla.edu> X-012-Sender: halo1@inter.net.il Message-id: <83wqxfvd1t.fsf@gnu.org> References: <50ABC017.7060802@cs.ucla.edu> <83fw44w38g.fsf@gnu.org> <833904vxqo.fsf@gnu.org> <50ABED34.7040307@cs.ucla.edu> X-Spam-Score: 0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Tue, 20 Nov 2012 12:51:00 -0800 > From: Paul Eggert > CC: 12945@debbugs.gnu.org > > > Here's the patch for that: > > Thanks. Won't we need patches elswhere to match? Some, but not all. See below. > Also, how is this related to the "#define getcwd _getcwd" in > lib-src/ntlib.h? We might need that for MSVC. But that's a different issue, since lib-src programs don't use any code in w32.c. > --- nt/config.nt 2012-11-17 23:58:56 +0000 > +++ nt/config.nt 2012-11-20 20:44:17 +0000 > @@ -411,11 +411,10 @@ > /* Define to 1 if you have the `getaddrinfo' function. */ > #undef HAVE_GETADDRINFO > > -/* Define to 1 if you have the `getcwd' function. > - If you think about defining HAVE_GETCWD, don't: the alternative > - getwd is redefined on w32.c, and does not really return the current > +/* Define to 1 if you have the `getcwd' function. This is > + defined on w32.c, and does not really return the current > directory, to get the desired results elsewhere in Emacs. */ > -#undef HAVE_GETCWD > +#define HAVE_GETCWD 1 This should be removed entirely, since there are no HAVE_GETCWD tests anymore, right? > === modified file 'src/msdos.c' > --- src/msdos.c 2012-11-05 03:18:32 +0000 > +++ src/msdos.c 2012-11-20 20:44:17 +0000 > @@ -3784,7 +3784,7 @@ > Lisp_Object cmd; > > /* Get current directory as MSDOS cwd is not per-process. */ > - getwd (oldwd); > + getcwd (oldwd, sizeof oldwd); MSDOS is unrelated. This can be changed or left alone. > --- src/sysdep.c 2012-11-20 17:33:00 +0000 > +++ src/sysdep.c 2012-11-20 20:44:17 +0000 > @@ -101,7 +101,6 @@ > #define _P_WAIT 0 > int _cdecl _spawnlp (int, const char *, const char *, ...); > int _cdecl _getpid (void); > -extern char *getwd (char *); > #endif > > #include "syssignal.h" > @@ -504,7 +503,7 @@ > const char *sh = 0; > > #ifdef DOS_NT /* MW, Aug 1993 */ > - getwd (oldwd); > + getcwd (oldwd, sizeof oldwd); > if (sh == 0) > sh = (char *) egetenv ("SUSPEND"); /* KFS, 1994-12-14 */ > #endif This is needed. > === modified file 'src/w32.h' > --- src/w32.h 2012-10-17 19:02:44 +0000 > +++ src/w32.h 2012-11-20 20:44:17 +0000 > @@ -163,7 +163,7 @@ > extern void register_child (int, int); > > extern void sys_sleep (int); > -extern char *getwd (char *); > +extern char *getcwd (char *, size_t); > extern int sys_link (const char *, const char *); This isn't needed; the prototype for getcwd is on a system header. The prototype for getwd should be removed. From unknown Mon Aug 18 04:46:04 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Paul Eggert Subject: bug#12945: closed (Re: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h.) Message-ID: References: <50AD42A1.6010501@cs.ucla.edu> <50ABC017.7060802@cs.ucla.edu> X-Gnu-PR-Message: they-closed 12945 X-Gnu-PR-Package: emacs Reply-To: 12945@debbugs.gnu.org Date: Wed, 21 Nov 2012 21:10:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1353532203-17488-1" This is a multi-part message in MIME format... ------------=_1353532203-17488-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #12945: Assume POSIX 1003.1-1988 or later for unistd.h. which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 12945@debbugs.gnu.org. --=20 12945: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D12945 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1353532203-17488-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 12945-done) by debbugs.gnu.org; 21 Nov 2012 21:09:06 +0000 Received: from localhost ([127.0.0.1]:59651 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TbHXd-0004Wb-FZ for submit@debbugs.gnu.org; Wed, 21 Nov 2012 16:09:05 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:41868) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TbHXb-0004WR-FV for 12945-done@debbugs.gnu.org; Wed, 21 Nov 2012 16:09:04 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A9D6BA60012; Wed, 21 Nov 2012 13:07:45 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BDrp9G1Xhnpl; Wed, 21 Nov 2012 13:07:45 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 657C5A60008; Wed, 21 Nov 2012 13:07:45 -0800 (PST) Message-ID: <50AD42A1.6010501@cs.ucla.edu> Date: Wed, 21 Nov 2012 13:07:45 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121029 Thunderbird/16.0.2 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#12945: Assume POSIX 1003.1-1988 or later for unistd.h. References: <50ABC017.7060802@cs.ucla.edu> <83fw44w38g.fsf@gnu.org> <833904vxqo.fsf@gnu.org> <50ABED34.7040307@cs.ucla.edu> <83wqxfvd1t.fsf@gnu.org> In-Reply-To: <83wqxfvd1t.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -1.8 (-) X-Debbugs-Envelope-To: 12945-done Cc: 12945-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.8 (-) Thanks for the further review. I installed the patch with your suggested changes and am marking this as done. ------------=_1353532203-17488-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 20 Nov 2012 17:40:15 +0000 Received: from localhost ([127.0.0.1]:57188 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tarnx-00079d-90 for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:40:14 -0500 Received: from eggs.gnu.org ([208.118.235.92]:47727) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tarnt-00079V-5z for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:40:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tarma-0003Dr-Q5 for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:38:59 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:55308) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tarma-0003Dm-MB for submit@debbugs.gnu.org; Tue, 20 Nov 2012 12:38:48 -0500 Received: from eggs.gnu.org ([208.118.235.92]:39213) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TarmT-0003Qs-SF for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 12:38:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TarmM-0003AE-Q2 for bug-gnu-emacs@gnu.org; Tue, 20 Nov 2012 12:38:41 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:37247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TarmM-00039y-By; Tue, 20 Nov 2012 12:38:34 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 8672D39E8105; Tue, 20 Nov 2012 09:38:33 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jjo+XunsKbf7; Tue, 20 Nov 2012 09:38:32 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D9A1539E8106; Tue, 20 Nov 2012 09:38:31 -0800 (PST) Message-ID: <50ABC017.7060802@cs.ucla.edu> Date: Tue, 20 Nov 2012 09:38:31 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121029 Thunderbird/16.0.2 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: Assume POSIX 1003.1-1988 or later for unistd.h. Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit Cc: Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) Here's a patch that I plan to install to simplify Emacs based on assuming that the underyling system supports POSIX 1003.1-1988 or later with respect to unistd.h. This is universal these days on GNUish hosts, and I don't forsee any problems with Microsoft hosts. I'm CC:ing this to Eli, though, to give him a heads-up just in case. It may help in a later patch to simplify the Microsoft side by removing getwd and standardizing on getcwd, since that's what POSIX did back in 1988, but that's an issue that's independent of this patch. === modified file 'ChangeLog' --- ChangeLog 2012-11-20 08:29:04 +0000 +++ ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,5 +1,8 @@ 2012-11-20 Paul Eggert + Assume POSIX 1003.1-1988 or later for unistd.h. + * configure.ac: Do not check for getcwd or getwd. + Improve static checking of integer overflow and stack smashing. * configure.ac (WARN_CFLAGS): Add -Wstack-protector if using GCC 4.7.2 or later on a platform with === modified file 'admin/CPP-DEFINES' --- admin/CPP-DEFINES 2012-11-17 22:12:47 +0000 +++ admin/CPP-DEFINES 2012-11-20 17:33:00 +0000 @@ -86,7 +86,6 @@ AMPERSAND_FULL_NAME BROKEN_DATAGRAM_SOCKETS BROKEN_FIONREAD -BROKEN_GETWD BROKEN_GET_CURRENT_DIR_NAME BROKEN_NON_BLOCKING_CONNECT BROKEN_PTY_READ_AFTER_EAGAIN @@ -161,7 +160,6 @@ HAVE_GAI_STRERROR HAVE_GCONF HAVE_GETADDRINFO -HAVE_GETCWD HAVE_GETDELIM HAVE_GETGRENT HAVE_GETHOSTNAME @@ -178,7 +176,6 @@ HAVE_GETRUSAGE HAVE_GETSOCKNAME HAVE_GETTIMEOFDAY -HAVE_GETWD HAVE_GET_CURRENT_DIR_NAME HAVE_GHOSTSCRIPT HAVE_GIF @@ -304,7 +301,6 @@ HAVE_SIGNED_WCHAR_T HAVE_SIGNED_WINT_T HAVE_SIGSET_T -HAVE_SIZE_T HAVE_SNPRINTF HAVE_SOCKETS HAVE_SOUND @@ -369,7 +365,6 @@ HAVE_TOUCHLOCK HAVE_TZNAME HAVE_TZSET -HAVE_UNISTD_H HAVE_UNSIGNED_LONG_LONG_INT HAVE_UTIL_H HAVE_UTIMENSAT === modified file 'admin/ChangeLog' --- admin/ChangeLog 2012-11-17 22:12:47 +0000 +++ admin/ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,3 +1,9 @@ +2012-11-20 Paul Eggert + + Assume POSIX 1003.1-1988 or later for unistd.h. + * CPP-DEFINES (BROKEN_GETWD, HAVE_GETCWD, HAVE_GETWD, HAVE_SIZE_T) + (HAVE_UNISTD_H): Remove. + 2012-11-17 Paul Eggert Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881). === modified file 'configure.ac' --- configure.ac 2012-11-20 08:29:04 +0000 +++ configure.ac 2012-11-20 17:33:00 +0000 @@ -2889,7 +2889,7 @@ closedir getrusage get_current_dir_name \ lrand48 \ select getpagesize setlocale \ -utimes getrlimit setrlimit getcwd shutdown getaddrinfo \ +utimes getrlimit setrlimit shutdown getaddrinfo \ strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ gai_strerror mkstemp getline getdelim fsync sync \ @@ -2898,14 +2898,6 @@ touchlock \ cfmakeraw cfsetspeed copysign __executable_start) -dnl getwd appears to be buggy on SVR4.2, so we don't use it. -if test $opsys = unixware; then - dnl In case some other test ends up checking for getwd. - AC_DEFINE(BROKEN_GETWD, 1, [Define if getwd should not be used.]) -else - AC_CHECK_FUNCS(getwd) -fi - ## Eric Backus says, HP-UX 9.x on HP 700 machines ## has a broken `rint' in some library versions including math library ## version number A.09.05. === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2012-11-20 08:31:19 +0000 +++ lib-src/ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,5 +1,15 @@ 2012-11-20 Paul Eggert + Assume POSIX 1003.1-1988 or later for unistd.h. + * emacsclient.c (getcwd): Remove decl. + (get_current_dir_name): Assume getcwd exists. + * etags.c (HAVE_GETCWD): Remove. + (getcwd): Remove decl. + (NO_LONG_OPTIONS): Remove this. All uses removed. + Emacs always has GNU getopt. + (etags_getcwd): Assume getcwd exists. + * movemail.c (F_OK, X_OK, W_OK, R_OK): Remove. + * emacsclient.c (handle_sigcont, handle_sigtstp): Use raise (sig) rather than kill (getpid (), sig), as it's simpler and safer. === modified file 'lib-src/emacsclient.c' --- lib-src/emacsclient.c 2012-11-20 08:31:19 +0000 +++ lib-src/emacsclient.c 2012-11-20 17:33:00 +0000 @@ -88,10 +88,7 @@ -char *getenv (const char *), *getwd (char *); -#ifdef HAVE_GETCWD -char *(getcwd) (char *, size_t); -#endif +char *getenv (const char *); #ifndef VERSION #define VERSION "unspecified" @@ -223,7 +220,7 @@ char *buf; const char *pwd; struct stat dotstat, pwdstat; - /* If PWD is accurate, use it instead of calling getwd. PWD is + /* If PWD is accurate, use it instead of calling getcwd. PWD is sometimes a nicer name, and using it may avoid a fatal error if a parent directory is searchable but not readable. */ if ((pwd = egetenv ("PWD")) != 0 @@ -240,7 +237,6 @@ buf = (char *) xmalloc (strlen (pwd) + 1); strcpy (buf, pwd); } -#ifdef HAVE_GETCWD else { size_t buf_size = 1024; @@ -267,20 +263,6 @@ } } } -#else - else - { - /* We need MAXPATHLEN here. */ - buf = (char *) xmalloc (MAXPATHLEN + 1); - if (getwd (buf) == NULL) - { - int tmp_errno = errno; - free (buf); - errno = tmp_errno; - return NULL; - } - } -#endif return buf; } #endif @@ -1592,7 +1574,6 @@ cwd = get_current_dir_name (); if (cwd == 0) { - /* getwd puts message in STRING if it fails. */ message (TRUE, "%s: %s\n", progname, "Cannot get current working directory"); fail (); === modified file 'lib-src/etags.c' --- lib-src/etags.c 2012-09-17 00:56:08 +0000 +++ lib-src/etags.c 2012-11-20 17:33:00 +0000 @@ -123,19 +123,9 @@ # undef HAVE_NTGUI # undef DOS_NT # define DOS_NT -# ifndef HAVE_GETCWD -# define HAVE_GETCWD -# endif /* undef HAVE_GETCWD */ -#else /* not WINDOWSNT */ -#endif /* !WINDOWSNT */ +#endif /* WINDOWSNT */ #include -#ifndef HAVE_UNISTD_H -# if defined (HAVE_GETCWD) && !defined (WINDOWSNT) - extern char *getcwd (char *buf, size_t size); -# endif -#endif /* HAVE_UNISTD_H */ - #include #include #include @@ -152,16 +142,7 @@ # define assert(x) ((void) 0) #endif -#ifdef NO_LONG_OPTIONS /* define this if you don't have GNU getopt */ -# define NO_LONG_OPTIONS TRUE -# define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr) - extern char *optarg; - extern int optind, opterr; -#else -# define NO_LONG_OPTIONS FALSE -# include -#endif /* NO_LONG_OPTIONS */ - +#include #include /* Define CTAGS to make the program "ctags" compatible with the usual one. @@ -869,11 +850,7 @@ printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\ \n\ These are the options accepted by %s.\n", progname, progname); - if (NO_LONG_OPTIONS) - puts ("WARNING: long option names do not work with this executable,\n\ -as it is not linked with GNU getopt."); - else - puts ("You may use unambiguous abbreviations for the long option names."); + puts ("You may use unambiguous abbreviations for the long option names."); puts (" A - as file name means read names from stdin (one per line).\n\ Absolute names are stored in the output file as they are.\n\ Relative ones are stored relative to the output file's directory.\n"); @@ -1065,9 +1042,9 @@ /* When the optstring begins with a '-' getopt_long does not rearrange the non-options arguments to be at the end, but leaves them alone. */ - optstring = concat (NO_LONG_OPTIONS ? "" : "-", - "ac:Cf:Il:o:r:RSVhH", - (CTAGS) ? "BxdtTuvw" : "Di:"); + optstring = concat ("-ac:Cf:Il:o:r:RSVhH", + (CTAGS) ? "BxdtTuvw" : "Di:", + ""); while ((opt = getopt_long (argc, argv, optstring, longopts, NULL)) != EOF) switch (opt) @@ -6333,8 +6310,8 @@ static void suggest_asking_for_help (void) { - fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n", - progname, NO_LONG_OPTIONS ? "-h" : "--help"); + fprintf (stderr, "\tTry `%s --help' for a complete list of options.\n", + progname); exit (EXIT_FAILURE); } @@ -6372,7 +6349,6 @@ static char * etags_getcwd (void) { -#ifdef HAVE_GETCWD int bufsize = 200; char *path = xnew (bufsize, char); @@ -6387,34 +6363,6 @@ canonicalize_filename (path); return path; - -#else /* not HAVE_GETCWD */ -#if MSDOS - - char *p, path[MAXPATHLEN + 1]; /* Fixed size is safe on MSDOS. */ - - getwd (path); - - for (p = path; *p != '\0'; p++) - if (*p == '\\') - *p = '/'; - else - *p = lowcase (*p); - - return strdup (path); -#else /* not MSDOS */ - linebuffer path; - FILE *pipe; - - linebuffer_init (&path); - pipe = (FILE *) popen ("pwd 2>/dev/null", "r"); - if (pipe == NULL || readline_internal (&path, pipe) == 0) - pfatal ("pwd"); - pclose (pipe); - - return path.buffer; -#endif /* not MSDOS */ -#endif /* not HAVE_GETCWD */ } /* Return a newly allocated string containing the file name of FILE === modified file 'lib-src/movemail.c' --- lib-src/movemail.c 2012-11-17 22:12:47 +0000 +++ lib-src/movemail.c 2012-11-20 17:33:00 +0000 @@ -96,13 +96,6 @@ #include #endif /* WINDOWSNT */ -#ifndef F_OK -#define F_OK 0 -#define X_OK 1 -#define W_OK 2 -#define R_OK 4 -#endif - #ifdef WINDOWSNT #include #endif === modified file 'src/ChangeLog' --- src/ChangeLog 2012-11-20 11:41:57 +0000 +++ src/ChangeLog 2012-11-20 17:33:00 +0000 @@ -1,5 +1,10 @@ 2012-11-20 Paul Eggert + Assume POSIX 1003.1-1988 or later for unistd.h. + * alloc.c: Assume unistd.h exists. + * sysdep.c (get_current_dir_name): Assume getcwd exists. + (getwd) [USG]: Remove; no longer needed. + * eval.c (interactive_p): Remove no-longer-used decl. 2012-11-20 Dmitry Antipov === modified file 'src/alloc.c' --- src/alloc.c 2012-11-12 01:09:34 +0000 +++ src/alloc.c 2012-11-20 17:33:00 +0000 @@ -63,10 +63,6 @@ #endif #include -#ifndef HAVE_UNISTD_H -extern void *sbrk (); -#endif - #include #ifdef USE_GTK === modified file 'src/sysdep.c' --- src/sysdep.c 2012-11-17 22:12:47 +0000 +++ src/sysdep.c 2012-11-20 17:33:00 +0000 @@ -134,12 +134,12 @@ get_current_dir_name (void) { char *buf; - char *pwd; + char *pwd = getenv ("PWD"); struct stat dotstat, pwdstat; - /* If PWD is accurate, use it instead of calling getwd. PWD is + /* If PWD is accurate, use it instead of calling getcwd. PWD is sometimes a nicer name, and using it may avoid a fatal error if a parent directory is searchable but not readable. */ - if ((pwd = getenv ("PWD")) != 0 + if (pwd && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1]))) && stat (pwd, &pwdstat) == 0 && stat (".", &dotstat) == 0 @@ -155,7 +155,6 @@ return NULL; strcpy (buf, pwd); } -#ifdef HAVE_GETCWD else { size_t buf_size = 1024; @@ -179,22 +178,6 @@ return NULL; } } -#else - else - { - /* We need MAXPATHLEN here. */ - buf = malloc (MAXPATHLEN + 1); - if (!buf) - return NULL; - if (getwd (buf) == NULL) - { - int tmp_errno = errno; - free (buf); - errno = tmp_errno; - return NULL; - } - } -#endif return buf; } #endif @@ -2238,60 +2221,6 @@ &emacs_norealloc_allocator, careadlinkatcwd); } -#ifdef USG -/* - * All of the following are for USG. - * - * On USG systems the system calls are INTERRUPTIBLE by signals - * that the user program has elected to catch. Thus the system call - * must be retried in these cases. To handle this without massive - * changes in the source code, we remap the standard system call names - * to names for our own functions in sysdep.c that do the system call - * with retries. Actually, for portability reasons, it is good - * programming practice, as this example shows, to limit all actual - * system calls to a single occurrence in the source. Sure, this - * adds an extra level of function call overhead but it is almost - * always negligible. Fred Fish, Unisoft Systems Inc. - */ - -/* - * Warning, this function may not duplicate 4.2 action properly - * under error conditions. - */ - -#if !defined (HAVE_GETWD) || defined (BROKEN_GETWD) - -#ifndef MAXPATHLEN -/* In 4.1, param.h fails to define this. */ -#define MAXPATHLEN 1024 -#endif - -char * -getwd (char *pathname) -{ - char *npath, *spath; - extern char *getcwd (char *, size_t); - - block_input (); /* getcwd uses malloc */ - spath = npath = getcwd ((char *) 0, MAXPATHLEN); - if (spath == 0) - { - unblock_input (); - return spath; - } - /* On Altos 3068, getcwd can return @hostname/dir, so discard - up to first slash. Should be harmless on other systems. */ - while (*npath && *npath != '/') - npath++; - strcpy (pathname, npath); - free (spath); /* getcwd uses malloc */ - unblock_input (); - return pathname; -} - -#endif /* !defined (HAVE_GETWD) || defined (BROKEN_GETWD) */ -#endif /* USG */ - /* Directory routines for systems that don't have them. */ #ifdef HAVE_DIRENT_H ------------=_1353532203-17488-1--