mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-01 02:34:55 +00:00
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.
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ gethrxtime (void)
|
||||
}
|
||||
# endif
|
||||
|
||||
#if HAVE_MICROUPTIME
|
||||
# if HAVE_MICROUPTIME
|
||||
{
|
||||
struct timeval tv;
|
||||
microuptime (&tv);
|
||||
|
||||
+6
-6
@@ -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
|
||||
|
||||
+4
-4
@@ -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 */
|
||||
|
||||
+10
-4
@@ -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 @@ make_path (const char *argpath,
|
||||
/* 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;
|
||||
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
+2
-2
@@ -89,8 +89,8 @@ path_concat (char const *dir, char const *abase, char **base_in_result)
|
||||
}
|
||||
|
||||
#ifdef TEST_PATH_CONCAT
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
# include <stdio.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
+1
-1
@@ -193,7 +193,7 @@ extern reg_syntax_t re_syntax_options;
|
||||
& ~(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)
|
||||
|
||||
|
||||
+1
-1
@@ -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>
|
||||
|
||||
|
||||
+86
-86
@@ -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 */
|
||||
|
||||
+10
-10
@@ -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>
|
||||
typedef long int xtime_t;
|
||||
# if LONG_MAX >> 31 >> 31 == 0
|
||||
# define XTIME_PRECISION 1L
|
||||
# define XTIME_PRECISION 1000000000LL
|
||||
# else
|
||||
# define XTIME_PRECISION 1000000000L
|
||||
# include <limits.h>
|
||||
typedef long int xtime_t;
|
||||
# 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. */
|
||||
|
||||
+18
-21
@@ -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;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ lib/yesno.h
|
||||
m4/yesno.m4
|
||||
|
||||
Depends-on:
|
||||
getline
|
||||
rpmatch
|
||||
stdbool
|
||||
|
||||
|
||||
Reference in New Issue
Block a user