Mercurial > hg > octave-nkf > gnulib-hg
changeset 5851:d39411e1c5e6
Sync from coreutils.
* modules/yesno (Depends-on): Add getline.
* gethrxtime.c, gethrxtime.h, getpass.h, mountlist.h, path-concat.c,
regex.h, strtoll.c, unlocked-io.h, xtime.h:
White space changes only.
* makepath.c (make_path): Port to hosts where leading "//" is special.
* yesno.c: Include getline.h, not ctype.h.
(yesno): Don't remove leading white space; POSIX doesn't allow it.
Use getline to remove arbitrary restriction on response length.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sun, 15 May 2005 04:45:43 +0000 |
parents | 1b7017c2d9b8 |
children | 995d030c6a1f |
files | ChangeLog lib/ChangeLog lib/gethrxtime.c lib/gethrxtime.h lib/getpass.h lib/makepath.c lib/mountlist.h lib/path-concat.c lib/regex.h lib/strtoll.c lib/unlocked-io.h lib/xtime.h lib/yesno.c modules/yesno |
diffstat | 14 files changed, 158 insertions(+), 139 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-05-14 Paul Eggert <eggert@cs.ucla.edu> + + * modules/yesno (Depends-on): Add getline. + 2005-05-13 Paul Eggert <eggert@cs.ucla.edu> * MODULES.html.sh, README, gnulib-tool, tests/test-base64.c,
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,14 @@ +2005-05-14 Paul Eggert <eggert@cs.ucla.edu> + + Sync from coreutils. + * gethrxtime.c, gethrxtime.h, getpass.h, mountlist.h, path-concat.c, + regex.h, strtoll.c, unlocked-io.h, xtime.h: + White space changes only. + * makepath.c (make_path): Port to hosts where leading "//" is special. + * yesno.c: Include getline.h, not ctype.h. + (yesno): Don't remove leading white space; POSIX doesn't allow it. + Use getline to remove arbitrary restriction on response length. + 2005-05-13 Bruno Haible <bruno@clisp.org> * stdint_.h (int64_t, uint64_t, int_least64_t, uint_least64_t,
--- a/lib/gethrxtime.c +++ b/lib/gethrxtime.c @@ -58,7 +58,7 @@ } # endif -#if HAVE_MICROUPTIME +# if HAVE_MICROUPTIME { struct timeval tv; microuptime (&tv);
--- a/lib/gethrxtime.h +++ b/lib/gethrxtime.h @@ -19,19 +19,19 @@ /* Written by Paul Eggert. */ #ifndef GETHRXTIME_H_ -#define GETHRXTIME_H_ 1 +# define GETHRXTIME_H_ 1 -#include "xtime.h" +# include "xtime.h" /* Get the current time, as a count of the number of nanoseconds since an arbitrary epoch (e.g., the system boot time). This clock can't be set, is always increasing, and is nearly linear. */ -#if HAVE_ARITHMETIC_HRTIME_T && HAVE_DECL_GETHRTIME -# include <time.h> +# if HAVE_ARITHMETIC_HRTIME_T && HAVE_DECL_GETHRTIME +# include <time.h> static inline xtime_t gethrxtime (void) { return gethrtime (); } -#else +# else xtime_t gethrxtime (void); -#endif +# endif #endif
--- a/lib/getpass.h +++ b/lib/getpass.h @@ -17,15 +17,15 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef GETPASS_H -#define GETPASS_H +# define GETPASS_H /* Get getpass declaration, if available. */ -#include <unistd.h> +# include <unistd.h> -#if defined HAVE_DECL_GETPASS && !HAVE_DECL_GETPASS +# if defined HAVE_DECL_GETPASS && !HAVE_DECL_GETPASS /* Read a password of arbitrary length from /dev/tty or stdin. */ char *getpass (const char *prompt); -#endif +# endif #endif /* GETPASS_H */
--- a/lib/makepath.c +++ b/lib/makepath.c @@ -1,7 +1,7 @@ /* makepath.c -- Ensure that a directory path exists. - Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free - Software Foundation, Inc. + Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005 + 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 @@ -207,8 +207,14 @@ /* If we've saved the cwd and DIRPATH is an absolute pathname, we must chdir to `/' in order to enable the chdir optimization. So if chdir ("/") fails, turn off the optimization. */ - if (do_chdir && *dirpath == '/' && chdir ("/") < 0) - do_chdir = false; + if (do_chdir && dirpath[0] == '/') + { + /* POSIX says "//" might be special, so chdir to "//" if the + file name starts with exactly two slashes. */ + char const *root = "//" + (dirpath[1] != '/' || dirpath[2] == '/'); + if (chdir (root) != 0) + do_chdir = false; + } slash = dirpath;
--- a/lib/mountlist.h +++ b/lib/mountlist.h @@ -18,10 +18,10 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef MOUNTLIST_H_ -#define MOUNTLIST_H_ +# define MOUNTLIST_H_ -#include <stdbool.h> -#include <sys/types.h> +# include <stdbool.h> +# include <sys/types.h> /* A mount table entry. */ struct mount_entry
--- a/lib/path-concat.c +++ b/lib/path-concat.c @@ -89,8 +89,8 @@ } #ifdef TEST_PATH_CONCAT -#include <stdlib.h> -#include <stdio.h> +# include <stdlib.h> +# include <stdio.h> int main () {
--- a/lib/regex.h +++ b/lib/regex.h @@ -193,7 +193,7 @@ & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS \ | RE_CONTEXT_INVALID_OPS )) -#define RE_SYNTAX_POSIX_AWK \ +#define RE_SYNTAX_POSIX_AWK \ (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \ | RE_INTERVALS | RE_NO_GNU_OPS)
--- a/lib/strtoll.c +++ b/lib/strtoll.c @@ -16,7 +16,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#define QUAD 1 +#define QUAD 1 #include <strtol.c>
--- a/lib/unlocked-io.h +++ b/lib/unlocked-io.h @@ -19,7 +19,7 @@ /* Written by Jim Meyering. */ #ifndef UNLOCKED_IO_H -#define UNLOCKED_IO_H 1 +# define UNLOCKED_IO_H 1 /* These are wrappers for functions/macros from the GNU C library, and from other C libraries supporting POSIX's optional thread-safe functions. @@ -32,106 +32,106 @@ the *_unlocked functions directly. On hosts that lack those functions, invoke the non-thread-safe versions instead. */ -#include <stdio.h> +# include <stdio.h> -#if HAVE_DECL_CLEARERR_UNLOCKED -# undef clearerr -# define clearerr(x) clearerr_unlocked (x) -#else -# define clearerr_unlocked(x) clearerr (x) -#endif +# if HAVE_DECL_CLEARERR_UNLOCKED +# undef clearerr +# define clearerr(x) clearerr_unlocked (x) +# else +# define clearerr_unlocked(x) clearerr (x) +# endif -#if HAVE_DECL_FEOF_UNLOCKED -# undef feof -# define feof(x) feof_unlocked (x) -#else -# define feof_unlocked(x) feof (x) -#endif +# if HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(x) feof_unlocked (x) +# else +# define feof_unlocked(x) feof (x) +# endif -#if HAVE_DECL_FERROR_UNLOCKED -# undef ferror -# define ferror(x) ferror_unlocked (x) -#else -# define ferror_unlocked(x) ferror (x) -#endif +# if HAVE_DECL_FERROR_UNLOCKED +# undef ferror +# define ferror(x) ferror_unlocked (x) +# else +# define ferror_unlocked(x) ferror (x) +# endif -#if HAVE_DECL_FFLUSH_UNLOCKED -# undef fflush -# define fflush(x) fflush_unlocked (x) -#else -# define fflush_unlocked(x) fflush (x) -#endif +# if HAVE_DECL_FFLUSH_UNLOCKED +# undef fflush +# define fflush(x) fflush_unlocked (x) +# else +# define fflush_unlocked(x) fflush (x) +# endif -#if HAVE_DECL_FGETS_UNLOCKED -# undef fgets -# define fgets(x,y,z) fgets_unlocked (x,y,z) -#else -# define fgets_unlocked(x,y,z) fgets (x,y,z) -#endif +# if HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(x,y,z) fgets_unlocked (x,y,z) +# else +# define fgets_unlocked(x,y,z) fgets (x,y,z) +# endif -#if HAVE_DECL_FPUTC_UNLOCKED -# undef fputc -# define fputc(x,y) fputc_unlocked (x,y) -#else -# define fputc_unlocked(x,y) fputc (x,y) -#endif +# if HAVE_DECL_FPUTC_UNLOCKED +# undef fputc +# define fputc(x,y) fputc_unlocked (x,y) +# else +# define fputc_unlocked(x,y) fputc (x,y) +# endif -#if HAVE_DECL_FPUTS_UNLOCKED -# undef fputs -# define fputs(x,y) fputs_unlocked (x,y) -#else -# define fputs_unlocked(x,y) fputs (x,y) -#endif +# if HAVE_DECL_FPUTS_UNLOCKED +# undef fputs +# define fputs(x,y) fputs_unlocked (x,y) +# else +# define fputs_unlocked(x,y) fputs (x,y) +# endif -#if HAVE_DECL_FREAD_UNLOCKED -# undef fread -# define fread(w,x,y,z) fread_unlocked (w,x,y,z) -#else -# define fread_unlocked(w,x,y,z) fread (w,x,y,z) -#endif +# if HAVE_DECL_FREAD_UNLOCKED +# undef fread +# define fread(w,x,y,z) fread_unlocked (w,x,y,z) +# else +# define fread_unlocked(w,x,y,z) fread (w,x,y,z) +# endif -#if HAVE_DECL_FWRITE_UNLOCKED -# undef fwrite -# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) -#else -# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) -#endif +# if HAVE_DECL_FWRITE_UNLOCKED +# undef fwrite +# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) +# else +# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) +# endif -#if HAVE_DECL_GETC_UNLOCKED -# undef getc -# define getc(x) getc_unlocked (x) -#else -# define getc_unlocked(x) getc (x) -#endif +# if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc(x) getc_unlocked (x) +# else +# define getc_unlocked(x) getc (x) +# endif -#if HAVE_DECL_GETCHAR_UNLOCKED -# undef getchar -# define getchar() getchar_unlocked () -#else -# define getchar_unlocked() getchar () -#endif +# if HAVE_DECL_GETCHAR_UNLOCKED +# undef getchar +# define getchar() getchar_unlocked () +# else +# define getchar_unlocked() getchar () +# endif -#if HAVE_DECL_PUTC_UNLOCKED -# undef putc -# define putc(x,y) putc_unlocked (x,y) -#else -# define putc_unlocked(x,y) putc (x,y) -#endif +# if HAVE_DECL_PUTC_UNLOCKED +# undef putc +# define putc(x,y) putc_unlocked (x,y) +# else +# define putc_unlocked(x,y) putc (x,y) +# endif -#if HAVE_DECL_PUTCHAR_UNLOCKED -# undef putchar -# define putchar(x) putchar_unlocked (x) -#else -# define putchar_unlocked(x) putchar (x) -#endif +# if HAVE_DECL_PUTCHAR_UNLOCKED +# undef putchar +# define putchar(x) putchar_unlocked (x) +# else +# define putchar_unlocked(x) putchar (x) +# endif -#undef flockfile -#define flockfile(x) ((void) 0) +# undef flockfile +# define flockfile(x) ((void) 0) -#undef ftrylockfile -#define ftrylockfile(x) 0 +# undef ftrylockfile +# define ftrylockfile(x) 0 -#undef funlockfile -#define funlockfile(x) ((void) 0) +# undef funlockfile +# define funlockfile(x) ((void) 0) #endif /* UNLOCKED_IO_H */
--- a/lib/xtime.h +++ b/lib/xtime.h @@ -19,24 +19,24 @@ /* Written by Paul Eggert. */ #ifndef XTIME_H_ -#define XTIME_H_ 1 +# define XTIME_H_ 1 /* xtime_t is a signed type used for time stamps. It is an integer type that is a count of nanoseconds -- except for obsolescent hosts without sufficiently-wide integers, where it is a count of seconds. */ -#if HAVE_LONG_LONG +# if HAVE_LONG_LONG typedef long long int xtime_t; -# define XTIME_PRECISION 1000000000LL -#else -# include <limits.h> +# define XTIME_PRECISION 1000000000LL +# else +# include <limits.h> typedef long int xtime_t; -# if LONG_MAX >> 31 >> 31 == 0 -# define XTIME_PRECISION 1L -# else -# define XTIME_PRECISION 1000000000L +# if LONG_MAX >> 31 >> 31 == 0 +# define XTIME_PRECISION 1L +# else +# define XTIME_PRECISION 1000000000L +# endif # endif -#endif /* Return an extended time value that contains S seconds and NS nanoseconds, without any overflow checking. */
--- a/lib/yesno.c +++ b/lib/yesno.c @@ -1,5 +1,7 @@ /* yesno.c -- read a yes/no response from stdin - Copyright (C) 1990, 1998, 2001, 2003, 2004 Free Software Foundation, Inc. + + Copyright (C) 1990, 1998, 2001, 2003, 2004, 2005 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 @@ -21,36 +23,31 @@ #include "yesno.h" -#include <ctype.h> #include <stdlib.h> #include <stdio.h> -#if USE_UNLOCKED_IO -# include "unlocked-io.h" -#endif +#include "getline.h" -/* Read one line from standard input - and return nonzero if that line begins with y or Y, - otherwise return 0. */ +/* Return true if we read an affirmative line from standard input. */ extern int rpmatch (char const *response); bool yesno (void) { - /* We make some assumptions here: - a) leading white space in the response are not vital - b) the first 128 characters of the answer are enough (the rest can - be ignored) - I cannot think for a situation where this is not ok. --drepper@gnu */ - char buf[128]; - int len = 0; - int c; + char *response = NULL; + size_t response_size = 0; + ssize_t response_len = getline (&response, &response_size, stdin); + bool yes; - while ((c = getchar ()) != EOF && c != '\n') - if ((len > 0 && len < 127) || (len == 0 && !isspace (c))) - buf[len++] = c; - buf[len] = '\0'; + if (response_len <= 0) + yes = false; + else + { + response[response_len - 1] = '\0'; + yes = (0 < rpmatch (response)); + } - return rpmatch (buf) == 1; + free (response); + return yes; }