mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-01 02:34:55 +00:00
Merge from coreutils.
This commit is contained in:
@@ -1,3 +1,17 @@
|
||||
2004-08-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
More merge from coreutils.
|
||||
* modules/raise, modules/readtokens0, modules/utimens,
|
||||
modules/utimecmp, module/xnanosleep: New files.
|
||||
* modules/strftime: Add lib/strftime.h.
|
||||
Change include from <time.h> to "strftime.h".
|
||||
* modules/yesno: Add lib/yesno.h.
|
||||
* modules/backupfile: Remove lib/addext.c.
|
||||
* modules/euidaccess: Add stat-macros.h.
|
||||
* modules/canonicalize, modules/euidaccess,
|
||||
modules/filemode, modules/lchown, modules/makepath,
|
||||
modules/rmdir, modules/stat: Likewise.
|
||||
|
||||
2004-08-03 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* modules/progname (Depends-on): Don't depend on stdbool.
|
||||
|
||||
@@ -1,3 +1,25 @@
|
||||
2004-08-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
More merges from coreutils.
|
||||
* raise.c, readtokens0.h, readtokens0.c, strftime.h, utimens.h,
|
||||
utimens.c, utimecmp.h, utimecmp.c, xnanosleep.h, xnanosleep.c,
|
||||
yesno.h: New files.
|
||||
* addext.c: Remove; no longer needed.
|
||||
* yesno.c, argmatch.h, argmatch.c, backupfile.h, backupfile.c,
|
||||
euidaccess.c, filemode.c, closeout.c, dup2.c, exclude.c,
|
||||
fileblocks.c, filemode.c, fnmatch.c, fnmtahc_loop.c,
|
||||
fopen-safer.c, fsusage.c, fsusage.h, ftruncate.c, full-write.c,
|
||||
getdate.y, getloadavg.c, getugroups.c, hard-locale.c, hard-locale.h,
|
||||
hash.c, human.c, human.h, lchown.c, lchown.h, makepath.c, makepath.h,
|
||||
md5.c, md5.h, memchr.c, memcoll.c, memrchr.c, modechange.c,
|
||||
modechange.h, mountlist.c, mountlist.h, nanosleep.c, posixtm.c,
|
||||
putenv.c, quotearg.c, quotearg.h, readtokens.c, readutmp.c,
|
||||
readutmp.h, rmdir.c, safe-read.c, save-cwd.c, savedir.c, setenv.c,
|
||||
sig2str.c, stat.c, strtoimax.c, strverscmp.c, userspec.c, utime.c,
|
||||
version-etc.c., xgethostname.c, xmemcoll.c, xreadlink.c, xstrtod.c,
|
||||
xstrtod.h, xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtoumax.c:
|
||||
Import changes from coreutils.
|
||||
|
||||
2004-08-03 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* progname.h: Don't include stdbool.h.
|
||||
|
||||
@@ -36,9 +36,6 @@
|
||||
# include <sys/file.h>
|
||||
#endif
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
/* Provide a more-closely POSIX-conforming version of chown on
|
||||
systems with one or both of the following problems:
|
||||
|
||||
+3
-5
@@ -1,5 +1,7 @@
|
||||
/* closeout.c - close standard output
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 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
|
||||
@@ -22,11 +24,7 @@
|
||||
#include "closeout.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
+1
-4
@@ -1,5 +1,5 @@
|
||||
/* Duplicate an open file descriptor to a specified file descriptor.
|
||||
Copyright 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2004 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
|
||||
@@ -22,9 +22,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#if HAVE_FCNTL_H
|
||||
# include <fcntl.h>
|
||||
|
||||
+2
-5
@@ -1,7 +1,7 @@
|
||||
/* exclude.c -- exclude file names
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003,
|
||||
2004 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
|
||||
@@ -28,9 +28,6 @@
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
+3
-2
@@ -1,5 +1,6 @@
|
||||
/* Convert file size to number of blocks on System V-like machines.
|
||||
Copyright (C) 1990, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2004 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
|
||||
@@ -73,5 +74,5 @@ st_blocks (off_t size)
|
||||
#else
|
||||
/* This declaration is solely to ensure that after preprocessing
|
||||
this file is never empty. */
|
||||
extern int textutils_fileblocks_unused;
|
||||
typedef int textutils_fileblocks_unused;
|
||||
#endif
|
||||
|
||||
+2
-119
@@ -1,5 +1,5 @@
|
||||
/* filemode.c -- make a string describing file modes
|
||||
Copyright (C) 1985, 1990, 1993, 1998-2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1985, 1990, 1993, 1998-2000, 2004 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
|
||||
@@ -23,98 +23,7 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "filemode.h"
|
||||
|
||||
#if !S_IRUSR
|
||||
# if S_IREAD
|
||||
# define S_IRUSR S_IREAD
|
||||
# else
|
||||
# define S_IRUSR 00400
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IWUSR
|
||||
# if S_IWRITE
|
||||
# define S_IWUSR S_IWRITE
|
||||
# else
|
||||
# define S_IWUSR 00200
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IXUSR
|
||||
# if S_IEXEC
|
||||
# define S_IXUSR S_IEXEC
|
||||
# else
|
||||
# define S_IXUSR 00100
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !S_IRGRP
|
||||
# define S_IRGRP (S_IRUSR >> 3)
|
||||
#endif
|
||||
#if !S_IWGRP
|
||||
# define S_IWGRP (S_IWUSR >> 3)
|
||||
#endif
|
||||
#if !S_IXGRP
|
||||
# define S_IXGRP (S_IXUSR >> 3)
|
||||
#endif
|
||||
#if !S_IROTH
|
||||
# define S_IROTH (S_IRUSR >> 6)
|
||||
#endif
|
||||
#if !S_IWOTH
|
||||
# define S_IWOTH (S_IWUSR >> 6)
|
||||
#endif
|
||||
#if !S_IXOTH
|
||||
# define S_IXOTH (S_IXUSR >> 6)
|
||||
#endif
|
||||
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISBLK
|
||||
# undef S_ISCHR
|
||||
# undef S_ISDIR
|
||||
# undef S_ISFIFO
|
||||
# undef S_ISLNK
|
||||
# undef S_ISMPB
|
||||
# undef S_ISMPC
|
||||
# undef S_ISNWK
|
||||
# undef S_ISREG
|
||||
# undef S_ISSOCK
|
||||
#endif /* STAT_MACROS_BROKEN. */
|
||||
|
||||
#if !defined S_ISBLK && defined S_IFBLK
|
||||
# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
|
||||
#endif
|
||||
#if !defined S_ISCHR && defined S_IFCHR
|
||||
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
|
||||
#endif
|
||||
#if !defined S_ISDIR && defined S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
#if !defined S_ISREG && defined S_IFREG
|
||||
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#endif
|
||||
#if !defined S_ISFIFO && defined S_IFIFO
|
||||
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||
#endif
|
||||
#if !defined S_ISLNK && defined S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
#endif
|
||||
#if !defined S_ISSOCK && defined S_IFSOCK
|
||||
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
#endif
|
||||
#if !defined S_ISMPB && defined S_IFMPB /* V7 */
|
||||
# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
|
||||
# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
|
||||
#endif
|
||||
#if !defined S_ISNWK && defined S_IFNWK /* HP/UX */
|
||||
# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
|
||||
#endif
|
||||
#if !defined S_ISDOOR && defined S_IFDOOR /* Solaris 2.5 and up */
|
||||
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
|
||||
#endif
|
||||
#if !defined S_ISCTG && defined S_IFCTG /* MassComp */
|
||||
# define S_ISCTG(m) (((m) & S_IFMT) == S_IFCTG)
|
||||
#endif
|
||||
|
||||
#include "stat-macros.h"
|
||||
|
||||
|
||||
/* Set the 's' and 't' flags in file attributes string CHARS,
|
||||
@@ -123,7 +32,6 @@
|
||||
static void
|
||||
setst (mode_t bits, char *chars)
|
||||
{
|
||||
#ifdef S_ISUID
|
||||
if (bits & S_ISUID)
|
||||
{
|
||||
if (chars[3] != 'x')
|
||||
@@ -132,8 +40,6 @@ setst (mode_t bits, char *chars)
|
||||
else
|
||||
chars[3] = 's';
|
||||
}
|
||||
#endif
|
||||
#ifdef S_ISGID
|
||||
if (bits & S_ISGID)
|
||||
{
|
||||
if (chars[6] != 'x')
|
||||
@@ -142,8 +48,6 @@ setst (mode_t bits, char *chars)
|
||||
else
|
||||
chars[6] = 's';
|
||||
}
|
||||
#endif
|
||||
#ifdef S_ISVTX
|
||||
if (bits & S_ISVTX)
|
||||
{
|
||||
if (chars[9] != 'x')
|
||||
@@ -152,7 +56,6 @@ setst (mode_t bits, char *chars)
|
||||
else
|
||||
chars[9] = 't';
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Return a character indicating the type of file described by
|
||||
@@ -174,60 +77,40 @@ setst (mode_t bits, char *chars)
|
||||
static char
|
||||
ftypelet (mode_t bits)
|
||||
{
|
||||
#ifdef S_ISBLK
|
||||
if (S_ISBLK (bits))
|
||||
return 'b';
|
||||
#endif
|
||||
if (S_ISCHR (bits))
|
||||
return 'c';
|
||||
if (S_ISDIR (bits))
|
||||
return 'd';
|
||||
if (S_ISREG (bits))
|
||||
return '-';
|
||||
#ifdef S_ISFIFO
|
||||
if (S_ISFIFO (bits))
|
||||
return 'p';
|
||||
#endif
|
||||
#ifdef S_ISLNK
|
||||
if (S_ISLNK (bits))
|
||||
return 'l';
|
||||
#endif
|
||||
#ifdef S_ISSOCK
|
||||
if (S_ISSOCK (bits))
|
||||
return 's';
|
||||
#endif
|
||||
#ifdef S_ISMPC
|
||||
if (S_ISMPC (bits))
|
||||
return 'm';
|
||||
#endif
|
||||
#ifdef S_ISNWK
|
||||
if (S_ISNWK (bits))
|
||||
return 'n';
|
||||
#endif
|
||||
#ifdef S_ISDOOR
|
||||
if (S_ISDOOR (bits))
|
||||
return 'D';
|
||||
#endif
|
||||
#ifdef S_ISCTG
|
||||
if (S_ISCTG (bits))
|
||||
return 'C';
|
||||
#endif
|
||||
|
||||
/* The following two tests are for Cray DMF (Data Migration
|
||||
Facility), which is a HSM file system. A migrated file has a
|
||||
`st_dm_mode' that is different from the normal `st_mode', so any
|
||||
tests for migrated files should use the former. */
|
||||
|
||||
#ifdef S_ISOFD
|
||||
if (S_ISOFD (bits))
|
||||
/* off line, with data */
|
||||
return 'M';
|
||||
#endif
|
||||
#ifdef S_ISOFL
|
||||
/* off line, with no data */
|
||||
if (S_ISOFL (bits))
|
||||
return 'M';
|
||||
#endif
|
||||
return '?';
|
||||
}
|
||||
|
||||
|
||||
+1
-4
@@ -35,6 +35,7 @@
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -156,10 +157,6 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
|
||||
/* Avoid depending on library functions or files
|
||||
whose names are inconsistent. */
|
||||
|
||||
# ifndef errno
|
||||
extern int errno;
|
||||
# endif
|
||||
|
||||
/* Global variable. */
|
||||
static int posixly_correct;
|
||||
|
||||
|
||||
+22
-22
@@ -18,14 +18,14 @@
|
||||
/* Match STRING against the filename pattern PATTERN, returning zero if
|
||||
it matches, nonzero if not. */
|
||||
static int EXT (INT opt, const CHAR *pattern, const CHAR *string,
|
||||
const CHAR *string_end, int no_leading_period, int flags)
|
||||
const CHAR *string_end, bool no_leading_period, int flags)
|
||||
internal_function;
|
||||
static const CHAR *END (const CHAR *patternp) internal_function;
|
||||
|
||||
static int
|
||||
internal_function
|
||||
FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
int no_leading_period, int flags)
|
||||
bool no_leading_period, int flags)
|
||||
{
|
||||
register const CHAR *p = pattern, *n = string;
|
||||
register UCHAR c;
|
||||
@@ -41,7 +41,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
|
||||
while ((c = *p++) != L('\0'))
|
||||
{
|
||||
int new_no_leading_period = 0;
|
||||
bool new_no_leading_period = false;
|
||||
c = FOLD (c);
|
||||
|
||||
switch (c)
|
||||
@@ -161,9 +161,9 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
{
|
||||
int flags2 = ((flags & FNM_FILE_NAME)
|
||||
? flags : (flags & ~FNM_PERIOD));
|
||||
int no_leading_period2 = no_leading_period;
|
||||
bool no_leading_period2 = no_leading_period;
|
||||
|
||||
for (--p; n < endp; ++n, no_leading_period2 = 0)
|
||||
for (--p; n < endp; ++n, no_leading_period2 = false)
|
||||
if (FCT (p, n, string_end, no_leading_period2, flags2)
|
||||
== 0)
|
||||
return 0;
|
||||
@@ -186,7 +186,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (c == L('\\') && !(flags & FNM_NOESCAPE))
|
||||
c = *p;
|
||||
c = FOLD (c);
|
||||
for (--p; n < endp; ++n, no_leading_period2 = 0)
|
||||
for (--p; n < endp; ++n, no_leading_period2 = false)
|
||||
if (FOLD ((UCHAR) *n) == c
|
||||
&& (FCT (p, n, string_end, no_leading_period2, flags2)
|
||||
== 0))
|
||||
@@ -200,7 +200,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
case L('['):
|
||||
{
|
||||
/* Nonzero if the sense of the character class is inverted. */
|
||||
register int not;
|
||||
register bool not;
|
||||
CHAR cold;
|
||||
UCHAR fn;
|
||||
|
||||
@@ -410,10 +410,10 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
return FNM_NOMATCH;
|
||||
else
|
||||
{
|
||||
int is_range = 0;
|
||||
bool is_range = false;
|
||||
|
||||
#ifdef _LIBC
|
||||
int is_seqval = 0;
|
||||
bool is_seqval = false;
|
||||
|
||||
if (c == L('[') && *p == L('.'))
|
||||
{
|
||||
@@ -460,7 +460,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
const int32_t *symb_table;
|
||||
# ifdef WIDE_CHAR_VERSION
|
||||
char str[c1];
|
||||
unsigned int strcnt;
|
||||
size_t strcnt;
|
||||
# else
|
||||
# define str (startp + 1)
|
||||
# endif
|
||||
@@ -550,7 +550,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
}
|
||||
|
||||
/* Get the collation sequence value. */
|
||||
is_seqval = 1;
|
||||
is_seqval = true;
|
||||
# ifdef WIDE_CHAR_VERSION
|
||||
cold = wextra[1 + wextra[idx]];
|
||||
# else
|
||||
@@ -629,7 +629,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
|
||||
# endif
|
||||
|
||||
is_seqval = 0;
|
||||
is_seqval = false;
|
||||
if (cend == L('[') && *p == L('.'))
|
||||
{
|
||||
uint32_t nrules =
|
||||
@@ -668,7 +668,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
const int32_t *symb_table;
|
||||
# ifdef WIDE_CHAR_VERSION
|
||||
char str[c1];
|
||||
unsigned int strcnt;
|
||||
size_t strcnt;
|
||||
# else
|
||||
# define str (startp + 1)
|
||||
# endif
|
||||
@@ -738,7 +738,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
wextra = (int32_t *) &extra[idx + 4];
|
||||
# endif
|
||||
/* Get the collation sequence value. */
|
||||
is_seqval = 1;
|
||||
is_seqval = true;
|
||||
# ifdef WIDE_CHAR_VERSION
|
||||
cend = wextra[1 + wextra[idx]];
|
||||
# else
|
||||
@@ -929,7 +929,7 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
if (n == string_end || c != (UCHAR) *n)
|
||||
return FNM_NOMATCH;
|
||||
|
||||
new_no_leading_period = 1;
|
||||
new_no_leading_period = true;
|
||||
break;
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
@@ -996,10 +996,10 @@ END (const CHAR *pattern)
|
||||
static int
|
||||
internal_function
|
||||
EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
int no_leading_period, int flags)
|
||||
bool no_leading_period, int flags)
|
||||
{
|
||||
const CHAR *startp;
|
||||
int level;
|
||||
size_t level;
|
||||
struct patternlist
|
||||
{
|
||||
struct patternlist *next;
|
||||
@@ -1013,7 +1013,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
|
||||
/* Parse the pattern. Store the individual parts in the list. */
|
||||
level = 0;
|
||||
for (startp = p = pattern + 1; level >= 0; ++p)
|
||||
for (startp = p = pattern + 1; ; ++p)
|
||||
if (*p == L('\0'))
|
||||
/* This is an invalid pattern. */
|
||||
return -1;
|
||||
@@ -1066,6 +1066,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
*lastp = newp; \
|
||||
lastp = &newp->next
|
||||
NEW_PATTERN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (*p == L('|'))
|
||||
@@ -1100,7 +1101,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
&& (FCT (p, rs, string_end,
|
||||
rs == string
|
||||
? no_leading_period
|
||||
: rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0,
|
||||
: rs[-1] == '/' && NO_LEADING_PERIOD (flags),
|
||||
flags & FNM_FILE_NAME
|
||||
? flags : flags & ~FNM_PERIOD) == 0
|
||||
/* This didn't work. Try the whole pattern. */
|
||||
@@ -1108,8 +1109,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
&& FCT (pattern - 1, rs, string_end,
|
||||
rs == string
|
||||
? no_leading_period
|
||||
: (rs[-1] == '/' && NO_LEADING_PERIOD (flags)
|
||||
? 1 : 0),
|
||||
: rs[-1] == '/' && NO_LEADING_PERIOD (flags),
|
||||
flags & FNM_FILE_NAME
|
||||
? flags : flags & ~FNM_PERIOD) == 0)))
|
||||
/* It worked. Signal success. */
|
||||
@@ -1156,7 +1156,7 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
|
||||
&& (FCT (p, rs, string_end,
|
||||
rs == string
|
||||
? no_leading_period
|
||||
: rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0,
|
||||
: rs[-1] == '/' && NO_LEADING_PERIOD (flags),
|
||||
flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD)
|
||||
== 0))
|
||||
/* This is successful. */
|
||||
|
||||
+1
-5
@@ -1,5 +1,5 @@
|
||||
/* Invoke fopen, but avoid some glitches.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001, 2004 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
|
||||
@@ -31,10 +31,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdio-safer.h>
|
||||
|
||||
|
||||
+9
-7
@@ -1,6 +1,6 @@
|
||||
/* fsusage.c -- return space usage of mounted filesystems
|
||||
/* fsusage.c -- return space usage of mounted file systems
|
||||
|
||||
Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002, 2003 Free
|
||||
Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -23,10 +23,12 @@
|
||||
|
||||
#if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#else
|
||||
# if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
# endif
|
||||
#endif
|
||||
#if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifndef UINTMAX_MAX
|
||||
# define UINTMAX_MAX ((uintmax_t) -1)
|
||||
@@ -102,7 +104,7 @@ int statvfs ();
|
||||
#define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1))
|
||||
|
||||
/* Fill in the fields of FSP with information about space usage for
|
||||
the filesystem on which PATH resides.
|
||||
the file system on which PATH resides.
|
||||
DISK is the device on which PATH is mounted, for space-getting
|
||||
methods that need to know it.
|
||||
Return 0 if successful, -1 if not. When returning -1, ensure that
|
||||
|
||||
+8
-5
@@ -1,6 +1,7 @@
|
||||
/* fsusage.h -- declarations for filesystem space usage info
|
||||
/* fsusage.h -- declarations for file system space usage info
|
||||
|
||||
Copyright (C) 1991, 1992, 1997, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1992, 1997, 2003, 2004 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
|
||||
@@ -16,18 +17,20 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Space usage statistics for a filesystem. Blocks are 512-byte. */
|
||||
/* Space usage statistics for a file system. Blocks are 512-byte. */
|
||||
|
||||
#if !defined FSUSAGE_H_
|
||||
# define FSUSAGE_H_
|
||||
|
||||
# include <stdbool.h>
|
||||
|
||||
struct fs_usage
|
||||
{
|
||||
int fsu_blocksize; /* Size of a block. */
|
||||
uintmax_t fsu_blocksize; /* Size of a block. */
|
||||
uintmax_t fsu_blocks; /* Total blocks. */
|
||||
uintmax_t fsu_bfree; /* Free blocks available to superuser. */
|
||||
uintmax_t fsu_bavail; /* Free blocks available to non-superuser. */
|
||||
int fsu_bavail_top_bit_set; /* 1 if fsu_bavail represents a value < 0. */
|
||||
bool fsu_bavail_top_bit_set; /* 1 if fsu_bavail represents a value < 0. */
|
||||
uintmax_t fsu_files; /* Total file nodes. */
|
||||
uintmax_t fsu_ffree; /* Free file nodes. */
|
||||
};
|
||||
|
||||
@@ -79,9 +79,6 @@ ftruncate (int fd, off_t length)
|
||||
# else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
|
||||
|
||||
# include <errno.h>
|
||||
# ifndef errno
|
||||
extern int errno;
|
||||
# endif
|
||||
|
||||
int
|
||||
ftruncate (int fd, off_t length)
|
||||
|
||||
+2
-4
@@ -1,6 +1,7 @@
|
||||
/* An interface to read and write that retries (if necessary) until complete.
|
||||
|
||||
Copyright (C) 1993, 1994, 1997-2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||
2004 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
|
||||
@@ -28,9 +29,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifdef FULL_READ
|
||||
# include "safe-read.h"
|
||||
|
||||
+5
-2
@@ -768,8 +768,11 @@ lookup_word (parser_control const *pc, char *word)
|
||||
|
||||
/* Make it uppercase. */
|
||||
for (p = word; *p; p++)
|
||||
if (ISLOWER ((unsigned char) *p))
|
||||
*p = toupper ((unsigned char) *p);
|
||||
{
|
||||
unsigned char ch = *p;
|
||||
if (ISLOWER (ch))
|
||||
*p = toupper (ch);
|
||||
}
|
||||
|
||||
for (tp = meridian_table; tp->name; tp++)
|
||||
if (strcmp (word, tp->name) == 0)
|
||||
|
||||
+59
-69
@@ -48,8 +48,6 @@
|
||||
not an array.
|
||||
HAVE_STRUCT_NLIST_N_UN_N_NAME `n_un.n_name' is member of `struct nlist'.
|
||||
LINUX_LDAV_FILE [__linux__]: File containing load averages.
|
||||
HAVE_LOCALE_H locale.h is available.
|
||||
HAVE_SETLOCALE The `setlocale' function is available.
|
||||
|
||||
Specific system predefines this file uses, aside from setting
|
||||
default values if not emacs:
|
||||
@@ -70,9 +68,9 @@
|
||||
UMAX4_3
|
||||
VMS
|
||||
WINDOWS32 No-op for Windows95/NT.
|
||||
__linux__ Linux: assumes /proc filesystem mounted.
|
||||
__linux__ Linux: assumes /proc file system mounted.
|
||||
Support from Michael K. Johnson.
|
||||
__NetBSD__ NetBSD: assumes /kern filesystem mounted.
|
||||
__NetBSD__ NetBSD: assumes /kern file system mounted.
|
||||
|
||||
In addition, to avoid nesting many #ifdefs, we internally set
|
||||
LDAV_DONE to indicate that the load average has been computed.
|
||||
@@ -85,39 +83,28 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* Exclude all the code except the test program at the end
|
||||
if the system has its own `getloadavg' function. */
|
||||
|
||||
#ifndef HAVE_GETLOADAVG
|
||||
|
||||
# include <sys/types.h>
|
||||
|
||||
/* Both the Emacs and non-Emacs sections want this. Some
|
||||
configuration files' definitions for the LOAD_AVE_CVT macro (like
|
||||
sparc.h's) use macros like FSCALE, defined here. */
|
||||
#if defined (unix) || defined (__unix)
|
||||
# include <sys/param.h>
|
||||
#endif
|
||||
# if defined (unix) || defined (__unix)
|
||||
# include <sys/param.h>
|
||||
# endif
|
||||
|
||||
|
||||
/* Exclude all the code except the test program at the end
|
||||
if the system has its own `getloadavg' function.
|
||||
|
||||
The declaration of `errno' is needed by the test program
|
||||
as well as the function itself, so it comes first. */
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LOCALE_H
|
||||
# include <locale.h>
|
||||
#endif
|
||||
#ifndef HAVE_SETLOCALE
|
||||
# define setlocale(Category, Locale) ((char *) NULL)
|
||||
#endif
|
||||
|
||||
#include "cloexec.h"
|
||||
#include "xalloc.h"
|
||||
|
||||
#ifndef HAVE_GETLOADAVG
|
||||
# include "c-strtod.h"
|
||||
# include "cloexec.h"
|
||||
# include "xalloc.h"
|
||||
|
||||
/* The existing Emacs configuration files define a macro called
|
||||
LOAD_AVE_CVT, which accepts a value of type LOAD_AVE_TYPE, and
|
||||
@@ -362,7 +349,7 @@ extern int errno;
|
||||
# include <unistd.h>
|
||||
# endif
|
||||
|
||||
# include <stdio.h>
|
||||
# include <limits.h>
|
||||
|
||||
/* LOAD_AVE_TYPE should only get defined if we're going to use the
|
||||
nlist method. */
|
||||
@@ -436,7 +423,6 @@ extern int errno;
|
||||
# endif /* sgi */
|
||||
|
||||
# ifdef UMAX
|
||||
# include <stdio.h>
|
||||
# include <signal.h>
|
||||
# include <sys/time.h>
|
||||
# include <sys/wait.h>
|
||||
@@ -472,7 +458,7 @@ extern int errno;
|
||||
|
||||
# ifdef NeXT
|
||||
static processor_set_t default_set;
|
||||
static int getloadavg_initialized;
|
||||
static bool getloadavg_initialized;
|
||||
# endif /* NeXT */
|
||||
|
||||
# ifdef UMAX
|
||||
@@ -487,8 +473,8 @@ static struct dg_sys_info_load_info load_info; /* what-a-mouthful! */
|
||||
# if !defined (HAVE_LIBKSTAT) && defined (LOAD_AVE_TYPE)
|
||||
/* File descriptor open to /dev/kmem or VMS load ave driver. */
|
||||
static int channel;
|
||||
/* Nonzero iff channel is valid. */
|
||||
static int getloadavg_initialized;
|
||||
/* True iff channel is valid. */
|
||||
static bool getloadavg_initialized;
|
||||
/* Offset in kmem to seek to read load average, or 0 means invalid. */
|
||||
static long offset;
|
||||
|
||||
@@ -592,33 +578,37 @@ getloadavg (double loadavg[], int nelem)
|
||||
# define LINUX_LDAV_FILE "/proc/loadavg"
|
||||
# endif
|
||||
|
||||
char ldavgbuf[40];
|
||||
double load_ave[3];
|
||||
/* Upper bound on the string length of an integer converted to string.
|
||||
302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit;
|
||||
add 1 for integer division truncation; add 1 more for a minus sign. */
|
||||
# define INT_STRLEN_BOUND(t) ((sizeof (t) * CHAR_BIT - 1) * 302 / 1000 + 2)
|
||||
|
||||
char ldavgbuf[3 * (INT_STRLEN_BOUND (long int) + sizeof ".00")];
|
||||
char const *ptr = ldavgbuf;
|
||||
int fd, count;
|
||||
char *old_locale;
|
||||
|
||||
fd = open (LINUX_LDAV_FILE, O_RDONLY);
|
||||
if (fd == -1)
|
||||
return -1;
|
||||
count = read (fd, ldavgbuf, 40);
|
||||
count = read (fd, ldavgbuf, sizeof ldavgbuf - 1);
|
||||
(void) close (fd);
|
||||
if (count <= 0)
|
||||
return -1;
|
||||
ldavgbuf[count] = '\0';
|
||||
|
||||
/* The following sscanf must use the C locale. */
|
||||
old_locale = setlocale (LC_NUMERIC, NULL);
|
||||
if (old_locale)
|
||||
old_locale = xstrdup (old_locale);
|
||||
setlocale (LC_NUMERIC, "C");
|
||||
count = sscanf (ldavgbuf, "%lf %lf %lf",
|
||||
&load_ave[0], &load_ave[1], &load_ave[2]);
|
||||
setlocale (LC_NUMERIC, old_locale);
|
||||
free (old_locale);
|
||||
if (count < 1)
|
||||
return -1;
|
||||
|
||||
for (elem = 0; elem < nelem && elem < count; elem++)
|
||||
loadavg[elem] = load_ave[elem];
|
||||
for (elem = 0; elem < nelem; elem++)
|
||||
{
|
||||
char *endptr;
|
||||
double d = c_strtod (ptr, &endptr);
|
||||
if (ptr == endptr)
|
||||
{
|
||||
if (elem == 0)
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
loadavg[elem] = d;
|
||||
ptr = endptr;
|
||||
}
|
||||
|
||||
return elem;
|
||||
|
||||
@@ -659,7 +649,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
|
||||
host_t host;
|
||||
struct processor_set_basic_info info;
|
||||
unsigned info_count;
|
||||
unsigned int info_count;
|
||||
|
||||
/* We only know how to get the 1-minute average for this system,
|
||||
so even if the caller asks for more than 1, we only return 1. */
|
||||
@@ -667,7 +657,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
if (!getloadavg_initialized)
|
||||
{
|
||||
if (processor_set_default (host_self (), &default_set) == KERN_SUCCESS)
|
||||
getloadavg_initialized = 1;
|
||||
getloadavg_initialized = true;
|
||||
}
|
||||
|
||||
if (getloadavg_initialized)
|
||||
@@ -676,7 +666,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
if (processor_set_info (default_set, PROCESSOR_SET_BASIC_INFO, &host,
|
||||
(processor_set_info_t) &info, &info_count)
|
||||
!= KERN_SUCCESS)
|
||||
getloadavg_initialized = 0;
|
||||
getloadavg_initialized = false;
|
||||
else
|
||||
{
|
||||
if (nelem > 0)
|
||||
@@ -837,7 +827,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
/* VMS specific code -- read from the Load Ave driver. */
|
||||
|
||||
LOAD_AVE_TYPE load_ave[3];
|
||||
static int getloadavg_initialized = 0;
|
||||
static bool getloadavg_initialized;
|
||||
# ifdef eunice
|
||||
struct
|
||||
{
|
||||
@@ -857,7 +847,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
$DESCRIPTOR (descriptor, "LAV0:");
|
||||
# endif
|
||||
if (sys$assign (&descriptor, &channel, 0, 0) & 1)
|
||||
getloadavg_initialized = 1;
|
||||
getloadavg_initialized = true;
|
||||
}
|
||||
|
||||
/* Read the load average vector. */
|
||||
@@ -866,7 +856,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
load_ave, 12, 0, 0, 0, 0) & 1))
|
||||
{
|
||||
sys$dassgn (channel);
|
||||
getloadavg_initialized = 0;
|
||||
getloadavg_initialized = false;
|
||||
}
|
||||
|
||||
if (!getloadavg_initialized)
|
||||
@@ -919,7 +909,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
|
||||
ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
|
||||
if (ldav_off != -1)
|
||||
offset = (long) ldav_off & 0x7fffffff;
|
||||
offset = (long int) ldav_off & 0x7fffffff;
|
||||
# endif /* sgi */
|
||||
}
|
||||
|
||||
@@ -933,7 +923,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
/* Set the channel to close on exec, so it does not
|
||||
litter any child's descriptor table. */
|
||||
set_cloexec_flag (channel, true);
|
||||
getloadavg_initialized = 1;
|
||||
getloadavg_initialized = true;
|
||||
}
|
||||
# else /* SUNOS_5 */
|
||||
/* We pass 0 for the kernel, corefile, and swapfile names
|
||||
@@ -944,7 +934,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
/* nlist the currently running kernel. */
|
||||
kvm_nlist (kd, nl);
|
||||
offset = nl[0].n_value;
|
||||
getloadavg_initialized = 1;
|
||||
getloadavg_initialized = true;
|
||||
}
|
||||
# endif /* SUNOS_5 */
|
||||
}
|
||||
@@ -959,14 +949,14 @@ getloadavg (double loadavg[], int nelem)
|
||||
!= sizeof (load_ave))
|
||||
{
|
||||
close (channel);
|
||||
getloadavg_initialized = 0;
|
||||
getloadavg_initialized = false;
|
||||
}
|
||||
# else /* SUNOS_5 */
|
||||
if (kvm_read (kd, offset, (char *) load_ave, sizeof (load_ave))
|
||||
!= sizeof (load_ave))
|
||||
{
|
||||
kvm_close (kd);
|
||||
getloadavg_initialized = 0;
|
||||
getloadavg_initialized = false;
|
||||
}
|
||||
# endif /* SUNOS_5 */
|
||||
}
|
||||
@@ -999,7 +989,7 @@ getloadavg (double loadavg[], int nelem)
|
||||
#endif /* ! HAVE_GETLOADAVG */
|
||||
|
||||
#ifdef TEST
|
||||
void
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int naptime = 0;
|
||||
@@ -1017,7 +1007,7 @@ main (int argc, char **argv)
|
||||
if (loads == -1)
|
||||
{
|
||||
perror ("Error getting load average");
|
||||
exit (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (loads > 0)
|
||||
printf ("1-minute: %f ", avg[0]);
|
||||
@@ -1033,6 +1023,6 @@ main (int argc, char **argv)
|
||||
sleep (naptime);
|
||||
}
|
||||
|
||||
exit (0);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
#endif /* TEST */
|
||||
|
||||
+13
-1
@@ -1,5 +1,7 @@
|
||||
/* getugroups.c -- return a list of the groups a user is in
|
||||
Copyright (C) 1990, 1991, 1998, 1999, 2000, 2003 Free Software Foundation.
|
||||
|
||||
Copyright (C) 1990, 1991, 1998, 1999, 2000, 2003, 2004 Free
|
||||
Software Foundation.
|
||||
|
||||
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
|
||||
@@ -29,6 +31,11 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef EOVERFLOW
|
||||
# define EOVERFLOW EINVAL
|
||||
#endif
|
||||
|
||||
/* setgrent, getgrent, and endgrent are not specified by POSIX.1,
|
||||
so header files might not declare them.
|
||||
If you don't have them at all, we can't implement this function.
|
||||
@@ -88,6 +95,11 @@ getugroups (int maxcount, GETGROUPS_T *grouplist, char *username, gid_t gid)
|
||||
grouplist[count] = grp->gr_gid;
|
||||
}
|
||||
count++;
|
||||
if (count < 0)
|
||||
{
|
||||
errno = EOVERFLOW;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-8
@@ -1,6 +1,7 @@
|
||||
/* hard-locale.c -- Determine whether a locale is hard.
|
||||
|
||||
Copyright (C) 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2002, 2003, 2004 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
|
||||
@@ -29,23 +30,23 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Return nonzero if the current CATEGORY locale is hard, i.e. if you
|
||||
/* Return true if the current CATEGORY locale is hard, i.e. if you
|
||||
can't get away with assuming traditional C or POSIX behavior. */
|
||||
int
|
||||
bool
|
||||
hard_locale (int category)
|
||||
{
|
||||
#if ! HAVE_SETLOCALE
|
||||
return 0;
|
||||
return false;
|
||||
#else
|
||||
|
||||
int hard = 1;
|
||||
char const *p = setlocale (category, 0);
|
||||
bool hard = true;
|
||||
char const *p = setlocale (category, NULL);
|
||||
|
||||
if (p)
|
||||
{
|
||||
# if defined __GLIBC__ && 2 <= __GLIBC__
|
||||
if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
|
||||
hard = 0;
|
||||
hard = false;
|
||||
# else
|
||||
char *locale = malloc (strlen (p) + 1);
|
||||
if (locale)
|
||||
@@ -59,7 +60,7 @@ hard_locale (int category)
|
||||
&& strcmp (p, locale) == 0)
|
||||
|| ((p = setlocale (category, "POSIX"))
|
||||
&& strcmp (p, locale) == 0))
|
||||
hard = 0;
|
||||
hard = false;
|
||||
|
||||
/* Restore the caller's locale. */
|
||||
setlocale (category, locale);
|
||||
|
||||
+4
-2
@@ -1,6 +1,6 @@
|
||||
/* Determine whether a locale is hard.
|
||||
|
||||
Copyright (C) 1999, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2003, 2004 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
|
||||
@@ -19,6 +19,8 @@
|
||||
#ifndef HARD_LOCALE_H_
|
||||
# define HARD_LOCALE_H_ 1
|
||||
|
||||
int hard_locale (int);
|
||||
# include <stdbool.h>
|
||||
|
||||
bool hard_locale (int);
|
||||
|
||||
#endif /* HARD_LOCALE_H_ */
|
||||
|
||||
+8
-6
@@ -1,7 +1,7 @@
|
||||
/* hash - hashing table processing.
|
||||
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
Written by Jim Meyering, 1992.
|
||||
|
||||
@@ -400,9 +400,10 @@ hash_string (const char *string, size_t n_buckets)
|
||||
((Byte) + ROTATE_LEFT (Value, 7))
|
||||
|
||||
size_t value = 0;
|
||||
unsigned char ch;
|
||||
|
||||
for (; *string; string++)
|
||||
value = HASH_ONE_CHAR (value, (unsigned char) *string);
|
||||
for (; (ch = *string); string++)
|
||||
value = HASH_ONE_CHAR (value, ch);
|
||||
return value % n_buckets;
|
||||
|
||||
# undef ROTATE_LEFT
|
||||
@@ -420,9 +421,10 @@ size_t
|
||||
hash_string (const char *string, size_t n_buckets)
|
||||
{
|
||||
size_t value = 0;
|
||||
unsigned char ch;
|
||||
|
||||
while (*string)
|
||||
value = (value * 31 + (unsigned char) *string++) % n_buckets;
|
||||
for (; (ch = *string); string++)
|
||||
value = (value * 31 + ch) % n_buckets;
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -300,8 +300,8 @@ human_readable (uintmax_t n, char *buf, int opts,
|
||||
{
|
||||
do
|
||||
{
|
||||
unsigned r10 = (amt % base) * 10 + tenths;
|
||||
unsigned r2 = (r10 % base) * 2 + (rounding >> 1);
|
||||
unsigned int r10 = (amt % base) * 10 + tenths;
|
||||
unsigned int r2 = (r10 % base) * 2 + (rounding >> 1);
|
||||
amt /= base;
|
||||
tenths = r10 / base;
|
||||
rounding = (r2 < base
|
||||
|
||||
+7
-8
@@ -1,7 +1,7 @@
|
||||
/* human.h -- print human readable file size
|
||||
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
||||
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
|
||||
@@ -29,12 +29,11 @@
|
||||
# include <limits.h>
|
||||
# include <stdbool.h>
|
||||
|
||||
# if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
# else
|
||||
# if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
# endif
|
||||
# if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
# endif
|
||||
# if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
# endif
|
||||
|
||||
/* A conservative bound on the maximum length of a human-readable string.
|
||||
|
||||
+6
-21
@@ -22,46 +22,31 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include "lchown.h"
|
||||
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISLNK
|
||||
#endif
|
||||
|
||||
#ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# else
|
||||
# define S_ISLNK(m) 0
|
||||
# endif
|
||||
#endif
|
||||
#include "stat-macros.h"
|
||||
|
||||
/* Declare chown to avoid a warning. Don't include unistd.h,
|
||||
because it may have a conflicting prototype for lchown. */
|
||||
int chown ();
|
||||
|
||||
/* Work just like chown, except when FILE is a symbolic link.
|
||||
In that case, set errno to ENOSYS and return -1.
|
||||
In that case, set errno to EOPNOTSUPP and return -1.
|
||||
But if autoconf tests determined that chown modifies
|
||||
symlinks, then just call chown. */
|
||||
|
||||
int
|
||||
lchown (const char *file, uid_t uid, gid_t gid)
|
||||
{
|
||||
#if CHOWN_MODIFIES_SYMLINK
|
||||
return chown (file, uid, gid);
|
||||
#else
|
||||
#if ! CHOWN_MODIFIES_SYMLINK
|
||||
struct stat stats;
|
||||
|
||||
if (lstat (file, &stats) == 0 && S_ISLNK (stats.st_mode))
|
||||
{
|
||||
errno = ENOSYS;
|
||||
errno = EOPNOTSUPP;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return chown (file, uid, gid);
|
||||
#endif
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,9 +1,9 @@
|
||||
/* Some systems don't have ENOSYS. */
|
||||
#ifndef ENOSYS
|
||||
/* Some systems don't have EOPNOTSUPP. */
|
||||
#ifndef EOPNOTSUPP
|
||||
# ifdef ENOTSUP
|
||||
# define ENOSYS ENOTSUP
|
||||
# define EOPNOTSUPP ENOTSUP
|
||||
# else
|
||||
/* Some systems don't have ENOTSUP either. */
|
||||
# define ENOSYS EINVAL
|
||||
# define EOPNOTSUPP EINVAL
|
||||
# endif
|
||||
#endif
|
||||
|
||||
+45
-86
@@ -1,6 +1,6 @@
|
||||
/* makepath.c -- Ensure that a directory path exists.
|
||||
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003 Free
|
||||
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -34,53 +34,10 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#if STAT_MACROS_BROKEN
|
||||
# undef S_ISDIR
|
||||
#endif
|
||||
|
||||
#if !defined S_ISDIR && defined S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
|
||||
#ifndef S_IRWXUGO
|
||||
# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO)
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#ifndef S_ISUID
|
||||
# define S_ISUID 04000
|
||||
#endif
|
||||
#ifndef S_ISGID
|
||||
# define S_ISGID 02000
|
||||
#endif
|
||||
#ifndef S_ISVTX
|
||||
# define S_ISVTX 01000
|
||||
#endif
|
||||
#ifndef S_IRUSR
|
||||
# define S_IRUSR 0200
|
||||
#endif
|
||||
#ifndef S_IWUSR
|
||||
# define S_IWUSR 0200
|
||||
#endif
|
||||
#ifndef S_IXUSR
|
||||
# define S_IXUSR 0100
|
||||
#endif
|
||||
|
||||
#ifndef S_IRWXU
|
||||
# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
|
||||
#endif
|
||||
|
||||
#define WX_USR (S_IWUSR | S_IXUSR)
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(msgid) gettext (msgid)
|
||||
|
||||
@@ -88,6 +45,9 @@ extern int errno;
|
||||
#include "dirname.h"
|
||||
#include "error.h"
|
||||
#include "quote.h"
|
||||
#include "stat-macros.h"
|
||||
|
||||
#define WX_USR (S_IWUSR | S_IXUSR)
|
||||
|
||||
#define CLEANUP_CWD \
|
||||
do \
|
||||
@@ -119,18 +79,19 @@ extern int errno;
|
||||
while (0)
|
||||
|
||||
/* Attempt to create directory DIR (aka DIRPATH) with the specified MODE.
|
||||
If CREATED_DIR_P is non-NULL, set *CREATED_DIR_P to non-zero if this
|
||||
function creates DIR and to zero otherwise. Give a diagnostic and
|
||||
return non-zero if DIR cannot be created or cannot be determined to
|
||||
If CREATED_DIR_P is non-NULL, set *CREATED_DIR_P if this
|
||||
function creates DIR and clear it otherwise. Give a diagnostic and
|
||||
return false if DIR cannot be created or cannot be determined to
|
||||
exist already. Use DIRPATH in any diagnostic, not DIR.
|
||||
Note that if DIR already exists, this function returns zero
|
||||
(indicating success) and sets *CREATED_DIR_P to zero. */
|
||||
Note that if DIR already exists, this function returns true
|
||||
(indicating success) and clears *CREATED_DIR_P. */
|
||||
|
||||
int
|
||||
make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
|
||||
bool
|
||||
make_dir (const char *dir, const char *dirpath, mode_t mode,
|
||||
bool *created_dir_p)
|
||||
{
|
||||
int fail = 0;
|
||||
int created_dir;
|
||||
bool ok = true;
|
||||
bool created_dir;
|
||||
|
||||
created_dir = (mkdir (dir, mode) == 0);
|
||||
|
||||
@@ -151,12 +112,12 @@ make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
|
||||
{
|
||||
error (0, saved_errno, _("cannot create directory %s"),
|
||||
quote (dirpath));
|
||||
fail = 1;
|
||||
ok = false;
|
||||
}
|
||||
else if (!S_ISDIR (stats.st_mode))
|
||||
{
|
||||
error (0, 0, _("%s exists but is not a directory"), quote (dirpath));
|
||||
fail = 1;
|
||||
ok = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -167,7 +128,7 @@ make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
|
||||
if (created_dir_p)
|
||||
*created_dir_p = created_dir;
|
||||
|
||||
return fail;
|
||||
return ok;
|
||||
}
|
||||
|
||||
/* Ensure that the directory ARGPATH exists.
|
||||
@@ -181,36 +142,36 @@ make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
|
||||
If VERBOSE_FMT_STRING is nonzero, use it as a printf format
|
||||
string for printing a message after successfully making a directory,
|
||||
with the name of the directory that was just made as an argument.
|
||||
If PRESERVE_EXISTING is non-zero and ARGPATH is an existing directory,
|
||||
If PRESERVE_EXISTING is true and ARGPATH is an existing directory,
|
||||
then do not attempt to set its permissions and ownership.
|
||||
|
||||
Return 0 if ARGPATH exists as a directory with the proper
|
||||
ownership and permissions when done, otherwise 1. */
|
||||
Return true iff ARGPATH exists as a directory with the proper
|
||||
ownership and permissions when done. */
|
||||
|
||||
int
|
||||
bool
|
||||
make_path (const char *argpath,
|
||||
int mode,
|
||||
int parent_mode,
|
||||
mode_t mode,
|
||||
mode_t parent_mode,
|
||||
uid_t owner,
|
||||
gid_t group,
|
||||
int preserve_existing,
|
||||
bool preserve_existing,
|
||||
const char *verbose_fmt_string)
|
||||
{
|
||||
struct stat stats;
|
||||
int retval = 0;
|
||||
bool retval = true;
|
||||
|
||||
if (stat (argpath, &stats))
|
||||
{
|
||||
char *slash;
|
||||
int tmp_mode; /* Initial perms for leading dirs. */
|
||||
int re_protect; /* Should leading dirs be unwritable? */
|
||||
mode_t tmp_mode; /* Initial perms for leading dirs. */
|
||||
bool re_protect; /* Should leading dirs be unwritable? */
|
||||
struct ptr_list
|
||||
{
|
||||
char *dirname_end;
|
||||
struct ptr_list *next;
|
||||
};
|
||||
struct ptr_list *p, *leading_dirs = NULL;
|
||||
int do_chdir; /* Whether to chdir before each mkdir. */
|
||||
bool do_chdir; /* Whether to chdir before each mkdir. */
|
||||
struct saved_cwd cwd;
|
||||
char *basename_dir;
|
||||
char *dirpath;
|
||||
@@ -231,23 +192,23 @@ make_path (const char *argpath,
|
||||
&& (parent_mode & (S_ISUID | S_ISGID | S_ISVTX)) != 0))
|
||||
{
|
||||
tmp_mode = S_IRWXU;
|
||||
re_protect = 1;
|
||||
re_protect = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_mode = parent_mode;
|
||||
re_protect = 0;
|
||||
re_protect = false;
|
||||
}
|
||||
|
||||
/* If we can record the current working directory, we may be able
|
||||
to do the chdir optimization. */
|
||||
do_chdir = !save_cwd (&cwd);
|
||||
do_chdir = (save_cwd (&cwd) == 0);
|
||||
|
||||
/* 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 = 0;
|
||||
do_chdir = false;
|
||||
|
||||
slash = dirpath;
|
||||
|
||||
@@ -257,8 +218,7 @@ make_path (const char *argpath,
|
||||
|
||||
while (1)
|
||||
{
|
||||
int newly_created_dir;
|
||||
int fail;
|
||||
bool newly_created_dir;
|
||||
|
||||
/* slash points to the leftmost unprocessed component of dirpath. */
|
||||
basename_dir = slash;
|
||||
@@ -273,11 +233,10 @@ make_path (const char *argpath,
|
||||
basename_dir = dirpath;
|
||||
|
||||
*slash = '\0';
|
||||
fail = make_dir (basename_dir, dirpath, tmp_mode, &newly_created_dir);
|
||||
if (fail)
|
||||
if (! make_dir (basename_dir, dirpath, tmp_mode, &newly_created_dir))
|
||||
{
|
||||
CLEANUP;
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (newly_created_dir)
|
||||
@@ -295,7 +254,7 @@ make_path (const char *argpath,
|
||||
error (0, errno, _("cannot change owner and/or group of %s"),
|
||||
quote (dirpath));
|
||||
CLEANUP;
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (re_protect)
|
||||
@@ -317,7 +276,7 @@ make_path (const char *argpath,
|
||||
error (0, errno, _("cannot chdir to directory %s"),
|
||||
quote (dirpath));
|
||||
CLEANUP;
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
|
||||
*slash++ = '/';
|
||||
@@ -337,10 +296,10 @@ make_path (const char *argpath,
|
||||
/* We're done making leading directories.
|
||||
Create the final component of the path. */
|
||||
|
||||
if (make_dir (basename_dir, dirpath, mode, NULL))
|
||||
if (! make_dir (basename_dir, dirpath, mode, NULL))
|
||||
{
|
||||
CLEANUP;
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (verbose_fmt_string != NULL)
|
||||
@@ -356,7 +315,7 @@ make_path (const char *argpath,
|
||||
{
|
||||
error (0, errno, _("cannot change owner and/or group of %s"),
|
||||
quote (dirpath));
|
||||
retval = 1;
|
||||
retval = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -370,7 +329,7 @@ make_path (const char *argpath,
|
||||
{
|
||||
error (0, errno, _("cannot change permissions of %s"),
|
||||
quote (dirpath));
|
||||
retval = 1;
|
||||
retval = false;
|
||||
}
|
||||
|
||||
CLEANUP_CWD;
|
||||
@@ -385,7 +344,7 @@ make_path (const char *argpath,
|
||||
{
|
||||
error (0, errno, _("cannot change permissions of %s"),
|
||||
quote (dirpath));
|
||||
retval = 1;
|
||||
retval = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,7 +357,7 @@ make_path (const char *argpath,
|
||||
if (!S_ISDIR (stats.st_mode))
|
||||
{
|
||||
error (0, 0, _("%s exists but is not a directory"), quote (dirpath));
|
||||
return 1;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!preserve_existing)
|
||||
@@ -418,13 +377,13 @@ make_path (const char *argpath,
|
||||
{
|
||||
error (0, errno, _("cannot change owner and/or group of %s"),
|
||||
quote (dirpath));
|
||||
retval = 1;
|
||||
retval = false;
|
||||
}
|
||||
if (chmod (dirpath, mode))
|
||||
{
|
||||
error (0, errno, _("cannot change permissions of %s"),
|
||||
quote (dirpath));
|
||||
retval = 1;
|
||||
retval = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+14
-13
@@ -1,7 +1,7 @@
|
||||
/* makepath.c -- Ensure that a directory path exists.
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1997, 2000, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 1994, 1995, 1996, 1997, 2000, 2003, 2004 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
|
||||
@@ -19,17 +19,18 @@
|
||||
|
||||
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> and Jim Meyering. */
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
int make_path (const char *_argpath,
|
||||
int _mode,
|
||||
int _parent_mode,
|
||||
uid_t _owner,
|
||||
gid_t _group,
|
||||
int _preserve_existing,
|
||||
const char *_verbose_fmt_string);
|
||||
bool make_path (const char *argpath,
|
||||
mode_t mode,
|
||||
mode_t parent_mode,
|
||||
uid_t owner,
|
||||
gid_t group,
|
||||
bool preserve_existing,
|
||||
const char *verbose_fmt_string);
|
||||
|
||||
int make_dir (const char *dir,
|
||||
const char *dirpath,
|
||||
mode_t mode,
|
||||
int *created_dir_p);
|
||||
bool make_dir (const char *dir,
|
||||
const char *dirpath,
|
||||
mode_t mode,
|
||||
bool *created_dir_p);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* md5.c - Functions to compute MD5 message digest of files or memory blocks
|
||||
according to the definition of MD5 in RFC 1321 from April 1992.
|
||||
Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1996, 2001, 2003, 2004 Free Software Foundation, Inc.
|
||||
NOTE: The canonical source of this file is maintained with the GNU C
|
||||
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
|
||||
@@ -26,9 +26,7 @@
|
||||
|
||||
#include "md5.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "unlocked-io.h"
|
||||
@@ -246,13 +244,8 @@ md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)
|
||||
if (len >= 64)
|
||||
{
|
||||
#if !_STRING_ARCH_unaligned
|
||||
/* To check alignment gcc has an appropriate operator. Other
|
||||
compilers don't. */
|
||||
# if __GNUC__ >= 2
|
||||
# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0)
|
||||
# else
|
||||
# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0)
|
||||
# endif
|
||||
# define alignof(type) offsetof (struct { char c; type x; }, x)
|
||||
# define UNALIGNED_P(p) (((size_t) p) % alignof (md5_uint32) != 0)
|
||||
if (UNALIGNED_P (buffer))
|
||||
while (len > 64)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* md5.h - Declaration of functions and data types used for MD5 sum
|
||||
computing library functions.
|
||||
Copyright (C) 1995, 1996, 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1995, 1996, 1999, 2000, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C
|
||||
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
|
||||
@@ -22,41 +25,15 @@
|
||||
#define _MD5_H 1
|
||||
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
|
||||
/* The following contortions are an attempt to use the C preprocessor
|
||||
to determine an unsigned integral type that is 32 bits wide. An
|
||||
alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
|
||||
doing that would require that the configure script compile and *run*
|
||||
the resulting executable. Locally running cross-compiled executables
|
||||
is usually not possible. */
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <stdint.h>
|
||||
typedef uint32_t md5_uint32;
|
||||
typedef uintptr_t md5_uintptr;
|
||||
#else
|
||||
# define UINT_MAX_32_BITS 4294967295U
|
||||
|
||||
# if UINT_MAX == UINT_MAX_32_BITS
|
||||
typedef unsigned int md5_uint32;
|
||||
# else
|
||||
# if USHRT_MAX == UINT_MAX_32_BITS
|
||||
typedef unsigned short md5_uint32;
|
||||
# else
|
||||
# if ULONG_MAX == UINT_MAX_32_BITS
|
||||
typedef unsigned long md5_uint32;
|
||||
# else
|
||||
/* The following line is intended to evoke an error.
|
||||
Using #error is not portable enough. */
|
||||
"Cannot determine unsigned 32-bit data type."
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
/* We have to make a guess about the integer type equivalent in size
|
||||
to pointers which should always be correct. */
|
||||
typedef unsigned long int md5_uintptr;
|
||||
#if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#endif
|
||||
#if HAVE_STDINT_H || _LIBC
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
typedef uint32_t md5_uint32;
|
||||
|
||||
/* Structure to save state of computation between the single steps. */
|
||||
struct md5_ctx
|
||||
|
||||
+29
-27
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003 Free
|
||||
/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
|
||||
@@ -31,6 +31,8 @@ USA. */
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#if defined _LIBC
|
||||
# include <memcopy.h>
|
||||
#else
|
||||
@@ -38,11 +40,7 @@ USA. */
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define LONG_MAX_32_BITS 2147483647
|
||||
|
||||
#include <sys/types.h>
|
||||
#if HAVE_BP_SYM_H || defined _LIBC
|
||||
# include <bp-sym.h>
|
||||
#else
|
||||
@@ -60,22 +58,22 @@ __memchr (void const *s, int c_in, size_t n)
|
||||
const unsigned long int *longword_ptr;
|
||||
unsigned long int longword, magic_bits, charmask;
|
||||
unsigned reg_char c;
|
||||
int i;
|
||||
|
||||
c = (unsigned char) c_in;
|
||||
|
||||
/* Handle the first few characters by reading one character at a time.
|
||||
Do this until CHAR_PTR is aligned on a longword boundary. */
|
||||
for (char_ptr = (const unsigned char *) s;
|
||||
n > 0 && ((unsigned long int) char_ptr
|
||||
& (sizeof (longword) - 1)) != 0;
|
||||
n > 0 && (size_t) char_ptr % sizeof longword != 0;
|
||||
--n, ++char_ptr)
|
||||
if (*char_ptr == c)
|
||||
return (void *) char_ptr;
|
||||
|
||||
/* All these elucidatory comments refer to 4-byte longwords,
|
||||
but the theory applies equally well to 8-byte longwords. */
|
||||
but the theory applies equally well to any size longwords. */
|
||||
|
||||
longword_ptr = (unsigned long int *) char_ptr;
|
||||
longword_ptr = (const unsigned long int *) char_ptr;
|
||||
|
||||
/* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
|
||||
the "holes." Note that there is a hole just to the left of
|
||||
@@ -87,26 +85,28 @@ __memchr (void const *s, int c_in, size_t n)
|
||||
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||
The 0-bits provide holes for carries to fall into. */
|
||||
|
||||
if (sizeof (longword) != 4 && sizeof (longword) != 8)
|
||||
abort ();
|
||||
/* Set MAGIC_BITS to be this pattern of 1 and 0 bits.
|
||||
Set CHARMASK to be a longword, each of whose bytes is C. */
|
||||
|
||||
#if LONG_MAX <= LONG_MAX_32_BITS
|
||||
magic_bits = 0x7efefeff;
|
||||
#else
|
||||
magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
|
||||
#endif
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
magic_bits = 0xfefefefe;
|
||||
charmask = c | (c << 8);
|
||||
charmask |= charmask << 16;
|
||||
#if LONG_MAX > LONG_MAX_32_BITS
|
||||
#if 0xffffffffU < ULONG_MAX
|
||||
magic_bits |= magic_bits << 32;
|
||||
charmask |= charmask << 32;
|
||||
if (8 < sizeof longword)
|
||||
for (i = 64; i < sizeof longword * 8; i *= 2)
|
||||
{
|
||||
magic_bits |= magic_bits << i;
|
||||
charmask |= charmask << i;
|
||||
}
|
||||
#endif
|
||||
magic_bits = (ULONG_MAX >> 1) & (magic_bits | 1);
|
||||
|
||||
/* Instead of the traditional loop which tests each character,
|
||||
we will test a longword at a time. The tricky part is testing
|
||||
if *any of the four* bytes in the longword in question are zero. */
|
||||
while (n >= sizeof (longword))
|
||||
while (n >= sizeof longword)
|
||||
{
|
||||
/* We tentatively exit the loop if adding MAGIC_BITS to
|
||||
LONGWORD fails to change any of the hole bits of LONGWORD.
|
||||
@@ -168,19 +168,21 @@ __memchr (void const *s, int c_in, size_t n)
|
||||
return (void *) &cp[2];
|
||||
if (cp[3] == c)
|
||||
return (void *) &cp[3];
|
||||
#if LONG_MAX > 2147483647
|
||||
if (cp[4] == c)
|
||||
if (4 < sizeof longword && cp[4] == c)
|
||||
return (void *) &cp[4];
|
||||
if (cp[5] == c)
|
||||
if (5 < sizeof longword && cp[5] == c)
|
||||
return (void *) &cp[5];
|
||||
if (cp[6] == c)
|
||||
if (6 < sizeof longword && cp[6] == c)
|
||||
return (void *) &cp[6];
|
||||
if (cp[7] == c)
|
||||
if (7 < sizeof longword && cp[7] == c)
|
||||
return (void *) &cp[7];
|
||||
#endif
|
||||
if (8 < sizeof longword)
|
||||
for (i = 8; i < sizeof longword; i++)
|
||||
if (cp[i] == c)
|
||||
return (void *) &cp[i];
|
||||
}
|
||||
|
||||
n -= sizeof (longword);
|
||||
n -= sizeof longword;
|
||||
}
|
||||
|
||||
char_ptr = (const unsigned char *) longword_ptr;
|
||||
|
||||
+1
-5
@@ -1,5 +1,5 @@
|
||||
/* Locale-specific memory comparison.
|
||||
Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2002, 2003, 2004 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
|
||||
@@ -24,10 +24,6 @@
|
||||
#include "memcoll.h"
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* Compare S1 (with length S1LEN) and S2 (with length S2LEN) according
|
||||
|
||||
+30
-29
@@ -1,6 +1,6 @@
|
||||
/* memrchr -- find the last occurrence of a byte in a memory block
|
||||
|
||||
Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003 Free
|
||||
Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
|
||||
@@ -27,10 +27,11 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#if defined (_LIBC)
|
||||
#include <stddef.h>
|
||||
|
||||
#if defined _LIBC
|
||||
# include <memcopy.h>
|
||||
#else
|
||||
# define reg_char char
|
||||
@@ -38,10 +39,6 @@
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#define LONG_MAX_32_BITS 2147483647
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#undef __memrchr
|
||||
#undef memrchr
|
||||
|
||||
@@ -57,22 +54,22 @@ __memrchr (void const *s, int c_in, size_t n)
|
||||
const unsigned long int *longword_ptr;
|
||||
unsigned long int longword, magic_bits, charmask;
|
||||
unsigned reg_char c;
|
||||
int i;
|
||||
|
||||
c = (unsigned char) c_in;
|
||||
|
||||
/* Handle the last few characters by reading one character at a time.
|
||||
Do this until CHAR_PTR is aligned on a longword boundary. */
|
||||
for (char_ptr = (const unsigned char *) s + n;
|
||||
n > 0 && ((unsigned long int) char_ptr
|
||||
& (sizeof (longword) - 1)) != 0;
|
||||
n > 0 && (size_t) char_ptr % sizeof longword != 0;
|
||||
--n)
|
||||
if (*--char_ptr == c)
|
||||
return (void *) char_ptr;
|
||||
|
||||
/* All these elucidatory comments refer to 4-byte longwords,
|
||||
but the theory applies equally well to 8-byte longwords. */
|
||||
but the theory applies equally well to any size longwords. */
|
||||
|
||||
longword_ptr = (unsigned long int *) char_ptr;
|
||||
longword_ptr = (const unsigned long int *) char_ptr;
|
||||
|
||||
/* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
|
||||
the "holes." Note that there is a hole just to the left of
|
||||
@@ -84,26 +81,28 @@ __memrchr (void const *s, int c_in, size_t n)
|
||||
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||
The 0-bits provide holes for carries to fall into. */
|
||||
|
||||
if (sizeof (longword) != 4 && sizeof (longword) != 8)
|
||||
abort ();
|
||||
/* Set MAGIC_BITS to be this pattern of 1 and 0 bits.
|
||||
Set CHARMASK to be a longword, each of whose bytes is C. */
|
||||
|
||||
#if LONG_MAX <= LONG_MAX_32_BITS
|
||||
magic_bits = 0x7efefeff;
|
||||
#else
|
||||
magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
|
||||
#endif
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
magic_bits = 0xfefefefe;
|
||||
charmask = c | (c << 8);
|
||||
charmask |= charmask << 16;
|
||||
#if LONG_MAX > LONG_MAX_32_BITS
|
||||
#if 0xffffffffU < ULONG_MAX
|
||||
magic_bits |= magic_bits << 32;
|
||||
charmask |= charmask << 32;
|
||||
if (8 < sizeof longword)
|
||||
for (i = 64; i < sizeof longword * 8; i *= 2)
|
||||
{
|
||||
magic_bits |= magic_bits << i;
|
||||
charmask |= charmask << i;
|
||||
}
|
||||
#endif
|
||||
magic_bits = (ULONG_MAX >> 1) & (magic_bits | 1);
|
||||
|
||||
/* Instead of the traditional loop which tests each character,
|
||||
we will test a longword at a time. The tricky part is testing
|
||||
if *any of the four* bytes in the longword in question are zero. */
|
||||
while (n >= sizeof (longword))
|
||||
while (n >= sizeof longword)
|
||||
{
|
||||
/* We tentatively exit the loop if adding MAGIC_BITS to
|
||||
LONGWORD fails to change any of the hole bits of LONGWORD.
|
||||
@@ -157,16 +156,18 @@ __memrchr (void const *s, int c_in, size_t n)
|
||||
|
||||
const unsigned char *cp = (const unsigned char *) longword_ptr;
|
||||
|
||||
#if LONG_MAX > 2147483647
|
||||
if (cp[7] == c)
|
||||
if (8 < sizeof longword)
|
||||
for (i = sizeof longword - 1; 8 <= i; i--)
|
||||
if (cp[i] == c)
|
||||
return (void *) &cp[i];
|
||||
if (7 < sizeof longword && cp[7] == c)
|
||||
return (void *) &cp[7];
|
||||
if (cp[6] == c)
|
||||
if (6 < sizeof longword && cp[6] == c)
|
||||
return (void *) &cp[6];
|
||||
if (cp[5] == c)
|
||||
if (5 < sizeof longword && cp[5] == c)
|
||||
return (void *) &cp[5];
|
||||
if (cp[4] == c)
|
||||
if (4 < sizeof longword && cp[4] == c)
|
||||
return (void *) &cp[4];
|
||||
#endif
|
||||
if (cp[3] == c)
|
||||
return (void *) &cp[3];
|
||||
if (cp[2] == c)
|
||||
@@ -177,7 +178,7 @@ __memrchr (void const *s, int c_in, size_t n)
|
||||
return (void *) cp;
|
||||
}
|
||||
|
||||
n -= sizeof (longword);
|
||||
n -= sizeof longword;
|
||||
}
|
||||
|
||||
char_ptr = (const unsigned char *) longword_ptr;
|
||||
|
||||
+7
-8
@@ -1,7 +1,7 @@
|
||||
/* modechange.c -- file mode manipulation
|
||||
|
||||
Copyright (C) 1989, 1990, 1997, 1998, 1999, 2001, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 1989, 1990, 1997, 1998, 1999, 2001, 2003, 2004 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
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "modechange.h"
|
||||
#include <sys/stat.h>
|
||||
#include "xstrtol.h"
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -220,12 +221,10 @@ mode_compile (const char *mode_string, unsigned int masked_ops)
|
||||
/* `affected_bits' modified by umask. */
|
||||
mode_t affected_masked;
|
||||
/* Operators to actually use umask on. */
|
||||
unsigned ops_to_mask = 0;
|
||||
unsigned int ops_to_mask = 0;
|
||||
|
||||
int who_specified_p;
|
||||
bool who_specified_p;
|
||||
|
||||
affected_bits = 0;
|
||||
ops_to_mask = 0;
|
||||
/* Turn on all the bits in `affected_bits' for each group given. */
|
||||
for (++mode_string;; ++mode_string)
|
||||
switch (*mode_string)
|
||||
@@ -250,10 +249,10 @@ mode_compile (const char *mode_string, unsigned int masked_ops)
|
||||
/* If none specified, affect all bits, except perhaps those
|
||||
set in the umask. */
|
||||
if (affected_bits)
|
||||
who_specified_p = 1;
|
||||
who_specified_p = true;
|
||||
else
|
||||
{
|
||||
who_specified_p = 0;
|
||||
who_specified_p = false;
|
||||
affected_bits = CHMOD_MODE_BITS;
|
||||
ops_to_mask = masked_ops;
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/* modechange.h -- definitions for file mode manipulation
|
||||
Copyright (C) 1989, 1990, 1997, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989, 1990, 1997, 2003, 2004 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
|
||||
@@ -51,7 +51,7 @@ struct mode_change
|
||||
# define MODE_MEMORY_EXHAUSTED (struct mode_change *) 1
|
||||
# define MODE_BAD_REFERENCE (struct mode_change *) 2
|
||||
|
||||
struct mode_change *mode_compile (const char *, unsigned);
|
||||
struct mode_change *mode_compile (const char *, unsigned int);
|
||||
struct mode_change *mode_create_from_ref (const char *);
|
||||
mode_t mode_adjust (mode_t, const struct mode_change *);
|
||||
void mode_free (struct mode_change *);
|
||||
|
||||
+14
-50
@@ -1,4 +1,4 @@
|
||||
/* mountlist.c -- return a list of mounted filesystems
|
||||
/* mountlist.c -- return a list of mounted file systems
|
||||
Copyright (C) 1991, 1992, 1997-2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -26,18 +26,11 @@
|
||||
|
||||
#include "xalloc.h"
|
||||
|
||||
#ifndef SIZE_MAX
|
||||
# define SIZE_MAX ((size_t) -1)
|
||||
#endif
|
||||
|
||||
#ifndef strstr
|
||||
char *strstr ();
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FCNTL_H
|
||||
# include <fcntl.h>
|
||||
@@ -143,39 +136,15 @@ extern int errno;
|
||||
#include "mountlist.h"
|
||||
#include "unlocked-io.h"
|
||||
|
||||
#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
|
||||
/* Return the value of the hexadecimal number represented by CP.
|
||||
No prefix (like '0x') or suffix (like 'h') is expected to be
|
||||
part of CP. */
|
||||
/* FIXME: this can overflow */
|
||||
|
||||
static int
|
||||
xatoi (char *cp)
|
||||
{
|
||||
int val;
|
||||
|
||||
val = 0;
|
||||
while (*cp)
|
||||
{
|
||||
if (*cp >= 'a' && *cp <= 'f')
|
||||
val = val * 16 + *cp - 'a' + 10;
|
||||
else if (*cp >= 'A' && *cp <= 'F')
|
||||
val = val * 16 + *cp - 'A' + 10;
|
||||
else if (*cp >= '0' && *cp <= '9')
|
||||
val = val * 16 + *cp - '0';
|
||||
else
|
||||
break;
|
||||
cp++;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
#endif /* MOUNTED_GETMNTENT1. */
|
||||
#ifndef SIZE_MAX
|
||||
# define SIZE_MAX ((size_t) -1)
|
||||
#endif
|
||||
|
||||
#if MOUNTED_GETMNTINFO
|
||||
|
||||
# if ! HAVE_F_FSTYPENAME_IN_STATFS
|
||||
static char *
|
||||
fstype_to_string (short t)
|
||||
fstype_to_string (short int t)
|
||||
{
|
||||
switch (t)
|
||||
{
|
||||
@@ -296,13 +265,13 @@ fstype_to_string (int t)
|
||||
}
|
||||
#endif /* MOUNTED_VMOUNT */
|
||||
|
||||
/* Return a list of the currently mounted filesystems, or NULL on error.
|
||||
/* Return a list of the currently mounted file systems, or NULL on error.
|
||||
Add each entry to the tail of the list so that they stay in order.
|
||||
If NEED_FS_TYPE is nonzero, ensure that the filesystem type fields in
|
||||
If NEED_FS_TYPE is true, ensure that the file system type fields in
|
||||
the returned list are valid. Otherwise, they might not be. */
|
||||
|
||||
struct mount_entry *
|
||||
read_filesystem_list (int need_fs_type)
|
||||
read_file_system_list (bool need_fs_type)
|
||||
{
|
||||
struct mount_entry *mount_list;
|
||||
struct mount_entry *me;
|
||||
@@ -360,12 +329,7 @@ read_filesystem_list (int need_fs_type)
|
||||
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
|
||||
devopt = strstr (mnt->mnt_opts, "dev=");
|
||||
if (devopt)
|
||||
{
|
||||
if (devopt[4] == '0' && (devopt[5] == 'x' || devopt[5] == 'X'))
|
||||
me->me_dev = xatoi (devopt + 6);
|
||||
else
|
||||
me->me_dev = xatoi (devopt + 4);
|
||||
}
|
||||
me->me_dev = strtoul (devopt + 4, NULL, 16);
|
||||
else
|
||||
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
|
||||
|
||||
@@ -438,14 +402,14 @@ read_filesystem_list (int need_fs_type)
|
||||
#if defined MOUNTED_FS_STAT_DEV /* BeOS */
|
||||
{
|
||||
/* The next_dev() and fs_stat_dev() system calls give the list of
|
||||
all filesystems, including the information returned by statvfs()
|
||||
all file systems, including the information returned by statvfs()
|
||||
(fs type, total blocks, free blocks etc.), but without the mount
|
||||
point. But on BeOS all filesystems except / are mounted in the
|
||||
point. But on BeOS all file systems except / are mounted in the
|
||||
rootfs, directly under /.
|
||||
The directory name of the mount point is often, but not always,
|
||||
identical to the volume name of the device.
|
||||
We therefore get the list of subdirectories of /, and the list
|
||||
of all filesystems, and match the two lists. */
|
||||
of all file systems, and match the two lists. */
|
||||
|
||||
DIR *dirp;
|
||||
struct rootdir_entry
|
||||
@@ -744,12 +708,12 @@ read_filesystem_list (int need_fs_type)
|
||||
int n_entries;
|
||||
int i;
|
||||
|
||||
/* Ask how many bytes to allocate for the mounted filesystem info. */
|
||||
/* Ask how many bytes to allocate for the mounted file system info. */
|
||||
if (mntctl (MCTL_QUERY, sizeof bufsize, (struct vmount *) &bufsize) != 0)
|
||||
return NULL;
|
||||
entries = xmalloc (bufsize);
|
||||
|
||||
/* Get the list of mounted filesystems. */
|
||||
/* Get the list of mounted file systems. */
|
||||
n_entries = mntctl (MCTL_QUERY, bufsize, (struct vmount *) entries);
|
||||
if (n_entries < 0)
|
||||
{
|
||||
|
||||
+6
-4
@@ -1,6 +1,6 @@
|
||||
/* mountlist.h -- declarations for list of mounted filesystems
|
||||
/* mountlist.h -- declarations for list of mounted file systems
|
||||
|
||||
Copyright (C) 1991, 1992, 1998, 2000, 2001, 2002, 2003 Free
|
||||
Copyright (C) 1991, 1992, 1998, 2000, 2001, 2002, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -17,6 +17,8 @@
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/* A mount table entry. */
|
||||
struct mount_entry
|
||||
{
|
||||
@@ -24,13 +26,13 @@ struct mount_entry
|
||||
char *me_mountdir; /* Mount point directory pathname. */
|
||||
char *me_type; /* "nfs", "4.2", etc. */
|
||||
dev_t me_dev; /* Device number of me_mountdir. */
|
||||
unsigned int me_dummy : 1; /* Nonzero for dummy filesystems. */
|
||||
unsigned int me_dummy : 1; /* Nonzero for dummy file systems. */
|
||||
unsigned int me_remote : 1; /* Nonzero for remote fileystems. */
|
||||
unsigned int me_type_malloced : 1; /* Nonzero if me_type was malloced. */
|
||||
struct mount_entry *me_next;
|
||||
};
|
||||
|
||||
struct mount_entry *read_filesystem_list (int need_fs_type);
|
||||
struct mount_entry *read_file_system_list (bool need_fs_type);
|
||||
|
||||
#ifndef ME_DUMMY
|
||||
# define ME_DUMMY(Fs_name, Fs_type) \
|
||||
|
||||
+3
-5
@@ -23,14 +23,12 @@
|
||||
prototype for rpl_nanosleep. (they'd conflict e.g., on alpha-dec-osf3.2) */
|
||||
#undef nanosleep
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
@@ -77,7 +75,7 @@ int
|
||||
rpl_nanosleep (const struct timespec *requested_delay,
|
||||
struct timespec *remaining_delay)
|
||||
{
|
||||
static int initialized;
|
||||
static bool initialized;
|
||||
|
||||
#ifdef SA_NOCLDSTOP
|
||||
struct sigaction oldact, newact;
|
||||
@@ -100,7 +98,7 @@ rpl_nanosleep (const struct timespec *requested_delay,
|
||||
if (signal (SIGCONT, SIG_IGN) != SIG_IGN)
|
||||
signal (SIGCONT, sighandler);
|
||||
#endif
|
||||
initialized = 1;
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
my_usleep (requested_delay);
|
||||
|
||||
+6
-4
@@ -1,5 +1,7 @@
|
||||
/* Parse dates for touch and date.
|
||||
Copyright (C) 1989, 1990, 1991, 1998, 2000-2003 Free Software Foundation Inc.
|
||||
|
||||
Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004
|
||||
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
|
||||
@@ -45,7 +47,7 @@
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE unless it's important to use the locale's definition
|
||||
of `digit' even when the host does not conform to POSIX. */
|
||||
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
|
||||
#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
|
||||
|
||||
time_t mktime ();
|
||||
|
||||
@@ -113,7 +115,7 @@ posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits)
|
||||
const char *dot = NULL;
|
||||
int pair[6];
|
||||
int *p;
|
||||
unsigned int i;
|
||||
size_t i;
|
||||
|
||||
size_t s_len = strlen (s);
|
||||
size_t len = (((syntax_bits & PDS_SECONDS) && (dot = strchr (s, '.')))
|
||||
@@ -304,7 +306,7 @@ main (void)
|
||||
{
|
||||
printf ("%-15s %2u ", time_str, syntax_bits);
|
||||
if (posixtime (&t, time_str, syntax_bits))
|
||||
printf ("%12ld %s", (long) t, ctime (&t));
|
||||
printf ("%12ld %s", (long int) t, ctime (&t));
|
||||
else
|
||||
printf ("%12s %s", "*", "*\n");
|
||||
}
|
||||
|
||||
+2
-5
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1994, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1994, 1997, 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
NOTE: The canonical source of this file is maintained with the GNU C
|
||||
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
@@ -26,10 +26,7 @@
|
||||
/* Include errno.h *after* sys/types.h to work around header problems
|
||||
on AIX 3.2.5. */
|
||||
#include <errno.h>
|
||||
#if !_LIBC
|
||||
# if !defined errno
|
||||
extern int errno;
|
||||
# endif
|
||||
#ifndef __set_errno
|
||||
# define __set_errno(ev) ((errno) = (ev))
|
||||
#endif
|
||||
|
||||
|
||||
+13
-12
@@ -30,6 +30,7 @@
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -192,8 +193,8 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
size_t len = 0;
|
||||
char const *quote_string = 0;
|
||||
size_t quote_string_len = 0;
|
||||
int backslash_escapes = 0;
|
||||
int unibyte_locale = MB_CUR_MAX == 1;
|
||||
bool backslash_escapes = false;
|
||||
bool unibyte_locale = MB_CUR_MAX == 1;
|
||||
|
||||
#define STORE(c) \
|
||||
do \
|
||||
@@ -208,13 +209,13 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
{
|
||||
case c_quoting_style:
|
||||
STORE ('"');
|
||||
backslash_escapes = 1;
|
||||
backslash_escapes = true;
|
||||
quote_string = "\"";
|
||||
quote_string_len = 1;
|
||||
break;
|
||||
|
||||
case escape_quoting_style:
|
||||
backslash_escapes = 1;
|
||||
backslash_escapes = true;
|
||||
break;
|
||||
|
||||
case locale_quoting_style:
|
||||
@@ -239,7 +240,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
char const *right = gettext_quote (N_("'"), quoting_style);
|
||||
for (quote_string = left; *quote_string; quote_string++)
|
||||
STORE (*quote_string);
|
||||
backslash_escapes = 1;
|
||||
backslash_escapes = true;
|
||||
quote_string = right;
|
||||
quote_string_len = strlen (quote_string);
|
||||
}
|
||||
@@ -396,12 +397,12 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
/* Length of multibyte sequence found so far. */
|
||||
size_t m;
|
||||
|
||||
int printable;
|
||||
bool printable;
|
||||
|
||||
if (unibyte_locale)
|
||||
{
|
||||
m = 1;
|
||||
printable = isprint (c);
|
||||
printable = isprint (c) != 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -409,7 +410,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
memset (&mbstate, 0, sizeof mbstate);
|
||||
|
||||
m = 0;
|
||||
printable = 1;
|
||||
printable = true;
|
||||
if (argsize == SIZE_MAX)
|
||||
argsize = strlen (arg);
|
||||
|
||||
@@ -422,12 +423,12 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
break;
|
||||
else if (bytes == (size_t) -1)
|
||||
{
|
||||
printable = 0;
|
||||
printable = false;
|
||||
break;
|
||||
}
|
||||
else if (bytes == (size_t) -2)
|
||||
{
|
||||
printable = 0;
|
||||
printable = false;
|
||||
while (i + m < argsize && arg[i + m])
|
||||
m++;
|
||||
break;
|
||||
@@ -449,9 +450,9 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||
goto use_shell_always_quoting_style;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (! iswprint (w))
|
||||
printable = 0;
|
||||
printable = false;
|
||||
m += bytes;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ enum quoting_style
|
||||
{
|
||||
/* Output names as-is (ls --quoting-style=literal). */
|
||||
literal_quoting_style,
|
||||
|
||||
|
||||
/* Quote names for the shell if they contain shell metacharacters
|
||||
or would cause ambiguous output (ls --quoting-style=shell). */
|
||||
shell_quoting_style,
|
||||
|
||||
+4
-1
@@ -96,7 +96,10 @@ readtoken (FILE *stream,
|
||||
saved_delim = delim;
|
||||
memset (isdelim, 0, sizeof isdelim);
|
||||
for (j = 0; j < n_delim; j++)
|
||||
isdelim[(unsigned char) delim[j]] = 1;
|
||||
{
|
||||
unsigned char ch = delim[j];
|
||||
isdelim[ch] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME: don't fool with this caching. Use strchr instead. */
|
||||
|
||||
+22
-23
@@ -40,28 +40,31 @@ extract_trimmed_name (const STRUCT_UTMP *ut)
|
||||
|
||||
trimmed_name = xmalloc (sizeof (UT_USER (ut)) + 1);
|
||||
strncpy (trimmed_name, UT_USER (ut), sizeof (UT_USER (ut)));
|
||||
/* Append a trailing space character. Some systems pad names shorter than
|
||||
the maximum with spaces, others pad with NULs. Remove any spaces. */
|
||||
trimmed_name[sizeof (UT_USER (ut))] = ' ';
|
||||
p = strchr (trimmed_name, ' ');
|
||||
if (p != NULL)
|
||||
*p = '\0';
|
||||
/* Append a trailing NUL. Some systems pad names shorter than the
|
||||
maximum with spaces, others pad with NULs. Remove any trailing
|
||||
spaces. */
|
||||
trimmed_name[sizeof (UT_USER (ut))] = '\0';
|
||||
for (p = trimmed_name + strlen (trimmed_name);
|
||||
trimmed_name < p && p[-1] == ' ';
|
||||
*--p = '\0')
|
||||
continue;
|
||||
return trimmed_name;
|
||||
}
|
||||
|
||||
/* Read the utmp entries corresponding to file FILENAME into freshly-
|
||||
malloc'd storage, set *UTMP_BUF to that pointer, set *N_ENTRIES to
|
||||
the number of entries, and return zero. If there is any error,
|
||||
return non-zero and don't modify the parameters. */
|
||||
return -1, setting errno, and don't modify the parameters. */
|
||||
|
||||
#ifdef UTMP_NAME_FUNCTION
|
||||
|
||||
int
|
||||
read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
read_utmp (const char *filename, size_t *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
{
|
||||
int n_read;
|
||||
size_t n_read;
|
||||
size_t n_alloc = 4;
|
||||
STRUCT_UTMP *utmp = xmalloc (n_alloc * sizeof *utmp);
|
||||
STRUCT_UTMP *u;
|
||||
STRUCT_UTMP *utmp = NULL;
|
||||
|
||||
/* Ignore the return value for now.
|
||||
Solaris' utmpname returns 1 upon success -- which is contrary
|
||||
@@ -74,16 +77,12 @@ read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
n_read = 0;
|
||||
while ((u = GET_UTMP_ENT ()) != NULL)
|
||||
{
|
||||
STRUCT_UTMP *p;
|
||||
++n_read;
|
||||
p = (STRUCT_UTMP *) realloc (utmp, n_read * sizeof (STRUCT_UTMP));
|
||||
if (p == NULL)
|
||||
if (n_read == n_alloc)
|
||||
{
|
||||
free (utmp);
|
||||
END_UTMP_ENT ();
|
||||
return 1;
|
||||
utmp = xnrealloc (utmp, n_alloc, 2 * sizeof *utmp);
|
||||
n_alloc *= 2;
|
||||
}
|
||||
utmp = p;
|
||||
++n_read;
|
||||
utmp[n_read - 1] = *u;
|
||||
}
|
||||
|
||||
@@ -98,7 +97,7 @@ read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
#else
|
||||
|
||||
int
|
||||
read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
read_utmp (const char *filename, size_t *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
{
|
||||
FILE *utmp;
|
||||
struct stat file_stats;
|
||||
@@ -108,14 +107,14 @@ read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
|
||||
utmp = fopen (filename, "r");
|
||||
if (utmp == NULL)
|
||||
return 1;
|
||||
return -1;
|
||||
|
||||
if (fstat (fileno (utmp), &file_stats) != 0)
|
||||
{
|
||||
int e = errno;
|
||||
fclose (utmp);
|
||||
errno = e;
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
size = file_stats.st_size;
|
||||
buf = xmalloc (size);
|
||||
@@ -126,14 +125,14 @@ read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf)
|
||||
free (buf);
|
||||
fclose (utmp);
|
||||
errno = e;
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
if (fclose (utmp) != 0)
|
||||
{
|
||||
int e = errno;
|
||||
free (buf);
|
||||
errno = e;
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
*n_entries = n_read;
|
||||
|
||||
+6
-4
@@ -1,7 +1,7 @@
|
||||
/* Declarations for GNU's read utmp module.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
2001, 2002, 2003, 2004 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
|
||||
@@ -116,11 +116,11 @@
|
||||
# else
|
||||
|
||||
# if HAVE_STRUCT_UTMP_UT_USER
|
||||
# define UT_USER(Utmp) Utmp->ut_user
|
||||
# define UT_USER(Utmp) ((Utmp)->ut_user)
|
||||
# endif
|
||||
# if HAVE_STRUCT_UTMP_UT_NAME
|
||||
# undef UT_USER
|
||||
# define UT_USER(Utmp) Utmp->ut_name
|
||||
# define UT_USER(Utmp) ((Utmp)->ut_name)
|
||||
# endif
|
||||
|
||||
# endif
|
||||
@@ -143,6 +143,8 @@
|
||||
|
||||
typedef struct UTMP_STRUCT_NAME STRUCT_UTMP;
|
||||
|
||||
enum { UT_USER_SIZE = sizeof UT_USER ((STRUCT_UTMP *) 0) };
|
||||
|
||||
# include <time.h>
|
||||
# ifdef HAVE_SYS_PARAM_H
|
||||
# include <sys/param.h>
|
||||
@@ -180,6 +182,6 @@ extern int errno;
|
||||
# endif
|
||||
|
||||
char *extract_trimmed_name (const STRUCT_UTMP *ut);
|
||||
int read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf);
|
||||
int read_utmp (const char *filename, size_t *n_entries, STRUCT_UTMP **utmp_buf);
|
||||
|
||||
#endif /* __READUTMP_H__ */
|
||||
|
||||
+2
-12
@@ -1,6 +1,6 @@
|
||||
/* BSD compatible remove directory function for System V
|
||||
|
||||
Copyright (C) 1988, 1990, 1999, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 1990, 1999, 2003, 2004 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
|
||||
@@ -22,19 +22,9 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#if STAT_MACROS_BROKEN
|
||||
# undef S_ISDIR
|
||||
#endif
|
||||
|
||||
#if !defined(S_ISDIR) && defined(S_IFDIR)
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
#include "stat-macros.h"
|
||||
|
||||
/* rmdir adapted from GNU tar. */
|
||||
|
||||
|
||||
+19
-19
@@ -1,5 +1,7 @@
|
||||
/* An interface to read and write that retries after interrupts.
|
||||
Copyright (C) 1993, 1994, 1998, 2002-2003 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1993, 1994, 1998, 2002, 2003, 2004 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
|
||||
@@ -33,9 +35,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifdef EINTR
|
||||
# define IS_EINTR(x) ((x) == EINTR)
|
||||
@@ -61,22 +60,23 @@ extern int errno;
|
||||
size_t
|
||||
safe_rw (int fd, void const *buf, size_t count)
|
||||
{
|
||||
ssize_t result;
|
||||
/* Work around a bug in Tru64 5.1. Attempting to read more than
|
||||
INT_MAX bytes fails with errno == EINVAL. See
|
||||
<http://lists.gnu.org/archive/html/bug-gnu-utils/2002-04/msg00010.html>.
|
||||
When decreasing COUNT, keep it block-aligned. */
|
||||
enum { BUGGY_READ_MAXIMUM = INT_MAX & ~8191 };
|
||||
|
||||
/* POSIX limits COUNT to SSIZE_MAX, but we limit it further, requiring
|
||||
that COUNT <= INT_MAX, to avoid triggering a bug in Tru64 5.1.
|
||||
When decreasing COUNT, keep the file pointer block-aligned.
|
||||
Note that in any case, read(write) may succeed, yet read(write)
|
||||
fewer than COUNT bytes, so the caller must be prepared to handle
|
||||
partial results. */
|
||||
if (count > INT_MAX)
|
||||
count = INT_MAX & ~8191;
|
||||
|
||||
do
|
||||
for (;;)
|
||||
{
|
||||
result = rw (fd, buf, count);
|
||||
}
|
||||
while (result < 0 && IS_EINTR (errno));
|
||||
ssize_t result = rw (fd, buf, count);
|
||||
|
||||
return (size_t) result;
|
||||
if (0 <= result)
|
||||
return result;
|
||||
else if (IS_EINTR (errno))
|
||||
continue;
|
||||
else if (errno == EINVAL && BUGGY_READ_MAXIMUM < count)
|
||||
count = BUGGY_READ_MAXIMUM;
|
||||
else
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+10
-12
@@ -21,6 +21,7 @@
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -35,9 +36,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifndef O_DIRECTORY
|
||||
# define O_DIRECTORY 0
|
||||
@@ -66,7 +64,7 @@ extern int errno;
|
||||
int
|
||||
save_cwd (struct saved_cwd *cwd)
|
||||
{
|
||||
static int have_working_fchdir = 1;
|
||||
static bool have_working_fchdir = true;
|
||||
|
||||
cwd->desc = -1;
|
||||
cwd->name = NULL;
|
||||
@@ -80,7 +78,7 @@ save_cwd (struct saved_cwd *cwd)
|
||||
if (cwd->desc < 0)
|
||||
{
|
||||
cwd->name = xgetcwd ();
|
||||
return cwd->name == NULL;
|
||||
return cwd->name ? 0 : -1;
|
||||
}
|
||||
|
||||
# if __sun__ || sun
|
||||
@@ -92,7 +90,7 @@ save_cwd (struct saved_cwd *cwd)
|
||||
{
|
||||
close (cwd->desc);
|
||||
cwd->desc = -1;
|
||||
have_working_fchdir = 0;
|
||||
have_working_fchdir = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -100,13 +98,13 @@ save_cwd (struct saved_cwd *cwd)
|
||||
close (cwd->desc);
|
||||
cwd->desc = -1;
|
||||
errno = saved_errno;
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
# endif /* __sun__ || sun */
|
||||
#else
|
||||
# define fchdir(x) (abort (), 0)
|
||||
have_working_fchdir = 0;
|
||||
have_working_fchdir = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -114,22 +112,22 @@ save_cwd (struct saved_cwd *cwd)
|
||||
{
|
||||
cwd->name = xgetcwd ();
|
||||
if (cwd->name == NULL)
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Change to recorded location, CWD, in directory hierarchy.
|
||||
Upon failure, return nonzero (errno is set by chdir or fchdir).
|
||||
Upon failure, return -1 (errno is set by chdir or fchdir).
|
||||
Upon success, return zero. */
|
||||
|
||||
int
|
||||
restore_cwd (const struct saved_cwd *cwd)
|
||||
{
|
||||
if (0 <= cwd->desc)
|
||||
return fchdir (cwd->desc) < 0;
|
||||
return fchdir (cwd->desc);
|
||||
else
|
||||
return chdir (cwd->name) < 0;
|
||||
return chdir (cwd->name);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
+3
-6
@@ -1,7 +1,7 @@
|
||||
/* savedir.c -- save the list of files in a directory in a string
|
||||
|
||||
Copyright 1990, 1997, 1998, 1999, 2000, 2001, 2003 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright 1990, 1997, 1998, 1999, 2000, 2001, 2003, 2004 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
|
||||
@@ -28,9 +28,6 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#if HAVE_DIRENT_H
|
||||
# include <dirent.h>
|
||||
@@ -89,7 +86,7 @@ savedir (const char *dir)
|
||||
while ((dp = readdir (dirp)) != NULL)
|
||||
{
|
||||
/* Skip "", ".", and "..". "" is returned by at least one buggy
|
||||
implementation: Solaris 2.4 readdir on NFS filesystems. */
|
||||
implementation: Solaris 2.4 readdir on NFS file systems. */
|
||||
char const *entry = dp->d_name;
|
||||
if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0')
|
||||
{
|
||||
|
||||
+2
-5
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1992,1995-1999,2000-2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1992,1995-1999,2000-2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -21,10 +21,7 @@
|
||||
#include <alloca.h>
|
||||
|
||||
#include <errno.h>
|
||||
#if !_LIBC
|
||||
# if !defined errno && !defined HAVE_ERRNO_DECL
|
||||
extern int errno;
|
||||
# endif
|
||||
#ifndef __set_errno
|
||||
# define __set_errno(ev) ((errno) = (ev))
|
||||
#endif
|
||||
|
||||
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
/* sig2str.c -- convert between signal names and numbers
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2004 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
|
||||
@@ -253,7 +253,7 @@ static struct numname { int num; char const name[8]; } numname_table[] =
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE unless it's important to use the locale's definition
|
||||
of `digit' even when the host does not conform to POSIX. */
|
||||
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
|
||||
#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
|
||||
|
||||
/* Convert the signal name SIGNAME to a signal number. Return the
|
||||
signal number if successful, -1 otherwise. */
|
||||
@@ -270,7 +270,7 @@ str2signum (char const *signame)
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned i;
|
||||
unsigned int i;
|
||||
for (i = 0; i < NUMNAME_ENTRIES; i++)
|
||||
if (strcmp (numname_table[i].name, signame) == 0)
|
||||
return numname_table[i].num;
|
||||
@@ -315,7 +315,7 @@ str2sig (char const *signame, int *signum)
|
||||
int
|
||||
sig2str (int signum, char *signame)
|
||||
{
|
||||
unsigned i;
|
||||
unsigned int i;
|
||||
for (i = 0; i < NUMNAME_ENTRIES; i++)
|
||||
if (numname_table[i].num == signum)
|
||||
{
|
||||
|
||||
+2
-16
@@ -3,7 +3,7 @@
|
||||
has this bug. Also work around a deficiency in Solaris systems (up to at
|
||||
least Solaris 9) regarding the semantics of `lstat ("symlink/", sbuf).'
|
||||
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -27,25 +27,11 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
#if defined LSTAT && ! LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||
# include <stdlib.h>
|
||||
# include <string.h>
|
||||
|
||||
# ifdef STAT_MACROS_BROKEN
|
||||
# undef S_ISLNK
|
||||
# endif
|
||||
|
||||
# ifndef S_ISLNK
|
||||
# ifdef S_IFLNK
|
||||
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
# else
|
||||
# define S_ISLNK(m) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# include "stat-macros.h"
|
||||
# include "xalloc.h"
|
||||
|
||||
/* lstat works differently on Linux and Solaris systems. POSIX (see
|
||||
|
||||
+9
-6
@@ -1,5 +1,7 @@
|
||||
/* Convert string representation of a number into an intmax_t value.
|
||||
Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1999, 2001, 2002, 2003, 2004 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
|
||||
@@ -23,7 +25,8 @@
|
||||
|
||||
#if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#elif HAVE_STDINT_H
|
||||
#endif
|
||||
#if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
@@ -66,14 +69,14 @@ strtoimax (char const *ptr, char **endptr, int base)
|
||||
{
|
||||
#if HAVE_LONG_LONG
|
||||
verify (size_is_that_of_long_or_long_long,
|
||||
(sizeof (INT) == sizeof (long)
|
||||
|| sizeof (INT) == sizeof (long long)));
|
||||
(sizeof (INT) == sizeof (long int)
|
||||
|| sizeof (INT) == sizeof (long long int)));
|
||||
|
||||
if (sizeof (INT) != sizeof (long))
|
||||
if (sizeof (INT) != sizeof (long int))
|
||||
return strtoll (ptr, endptr, base);
|
||||
#else
|
||||
verify (size_is_that_of_long,
|
||||
sizeof (INT) == sizeof (long));
|
||||
sizeof (INT) == sizeof (long int));
|
||||
#endif
|
||||
|
||||
return strtol (ptr, endptr, base);
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/* Compare strings while treating digits characters numerically.
|
||||
Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2000, 2002, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE unless it's important to use the locale's definition
|
||||
of `digit' even when the host does not conform to POSIX. */
|
||||
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
|
||||
#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
|
||||
|
||||
#undef __strverscmp
|
||||
#undef strverscmp
|
||||
|
||||
+38
-45
@@ -27,6 +27,7 @@
|
||||
|
||||
#include <alloca.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
@@ -44,6 +45,7 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "inttostr.h"
|
||||
#include "strdup.h"
|
||||
#include "xalloc.h"
|
||||
#include "xstrtol.h"
|
||||
@@ -96,9 +98,9 @@ struct group *getgrgid ();
|
||||
#define V_STRDUP(dest, src) \
|
||||
do \
|
||||
{ \
|
||||
int _len = strlen ((src)); \
|
||||
(dest) = (char *) alloca (_len + 1); \
|
||||
strcpy (dest, src); \
|
||||
size_t size = strlen (src) + 1; \
|
||||
(dest) = (char *) alloca (size); \
|
||||
memcpy (dest, src, size); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
@@ -109,19 +111,25 @@ struct group *getgrgid ();
|
||||
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
|
||||
ISDIGIT_LOCALE unless it's important to use the locale's definition
|
||||
of `digit' even when the host does not conform to POSIX. */
|
||||
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
|
||||
#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
|
||||
|
||||
/* Return nonzero if STR represents an unsigned decimal integer,
|
||||
otherwise return 0. */
|
||||
#ifdef __DJGPP__
|
||||
|
||||
static int
|
||||
/* Return true if STR represents an unsigned decimal integer. */
|
||||
|
||||
static bool
|
||||
is_number (const char *str)
|
||||
{
|
||||
for (; *str; str++)
|
||||
if (!ISDIGIT (*str))
|
||||
return 0;
|
||||
return 1;
|
||||
do
|
||||
{
|
||||
if (!ISDIGIT (*str))
|
||||
return false;
|
||||
}
|
||||
while (*++str);
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Extract from NAME, which has the form "[user][:.][group]",
|
||||
a USERNAME, UID U, GROUPNAME, and GID G.
|
||||
@@ -209,23 +217,16 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
|
||||
pwd = getpwnam (u);
|
||||
if (pwd == NULL)
|
||||
{
|
||||
|
||||
if (!is_number (u))
|
||||
error_msg = E_invalid_user;
|
||||
bool use_login_group = (separator != NULL && g == NULL);
|
||||
if (use_login_group)
|
||||
error_msg = E_bad_spec;
|
||||
else
|
||||
{
|
||||
int use_login_group;
|
||||
use_login_group = (separator != NULL && g == NULL);
|
||||
if (use_login_group)
|
||||
error_msg = E_bad_spec;
|
||||
else
|
||||
{
|
||||
unsigned long int tmp_long;
|
||||
if (xstrtoul (u, NULL, 0, &tmp_long, NULL) != LONGINT_OK
|
||||
|| tmp_long > MAXUID)
|
||||
return _(E_invalid_user);
|
||||
*uid = tmp_long;
|
||||
}
|
||||
unsigned long int tmp_long;
|
||||
if (! (xstrtoul (u, NULL, 10, &tmp_long, "") == LONGINT_OK
|
||||
&& tmp_long <= MAXUID))
|
||||
return _(E_invalid_user);
|
||||
*uid = tmp_long;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -239,12 +240,9 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
|
||||
grp = getgrgid (pwd->pw_gid);
|
||||
if (grp == NULL)
|
||||
{
|
||||
/* This is enough room to hold the unsigned decimal
|
||||
representation of any 32-bit quantity and the trailing
|
||||
zero byte. */
|
||||
char uint_buf[21];
|
||||
sprintf (uint_buf, "%u", (unsigned) (pwd->pw_gid));
|
||||
V_STRDUP (groupname, uint_buf);
|
||||
char buf[INT_BUFSIZE_BOUND (uintmax_t)];
|
||||
char const *num = umaxtostr (pwd->pw_gid, buf);
|
||||
V_STRDUP (groupname, num);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -262,16 +260,11 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
|
||||
grp = getgrnam (g);
|
||||
if (grp == NULL)
|
||||
{
|
||||
if (!is_number (g))
|
||||
error_msg = E_invalid_group;
|
||||
else
|
||||
{
|
||||
unsigned long int tmp_long;
|
||||
if (xstrtoul (g, NULL, 0, &tmp_long, NULL) != LONGINT_OK
|
||||
|| tmp_long > MAXGID)
|
||||
return _(E_invalid_group);
|
||||
*gid = tmp_long;
|
||||
}
|
||||
unsigned long int tmp_long;
|
||||
if (! (xstrtoul (g, NULL, 10, &tmp_long, "") == LONGINT_OK
|
||||
&& tmp_long <= MAXGID))
|
||||
return _(E_invalid_group);
|
||||
*gid = tmp_long;
|
||||
}
|
||||
else
|
||||
*gid = grp->gr_gid;
|
||||
@@ -336,10 +329,10 @@ main (int argc, char **argv)
|
||||
tmp = strdup (argv[i]);
|
||||
e = parse_user_spec (tmp, &uid, &gid, &username, &groupname);
|
||||
free (tmp);
|
||||
printf ("%s: %u %u %s %s %s\n",
|
||||
printf ("%s: %lu %lu %s %s %s\n",
|
||||
argv[i],
|
||||
(unsigned int) uid,
|
||||
(unsigned int) gid,
|
||||
(unsigned long int) uid,
|
||||
(unsigned long int) gid,
|
||||
NULL_CHECK (username),
|
||||
NULL_CHECK (groupname),
|
||||
NULL_CHECK (e));
|
||||
|
||||
+1
-4
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1998, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
@@ -34,9 +34,6 @@
|
||||
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include "full-write.h"
|
||||
#include "safe-read.h"
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ version_etc_va (FILE *stream,
|
||||
const char *command_name, const char *package,
|
||||
const char *version, va_list authors)
|
||||
{
|
||||
unsigned int n_authors;
|
||||
size_t n_authors;
|
||||
|
||||
/* Count the number of authors. */
|
||||
{
|
||||
|
||||
+24
-26
@@ -1,5 +1,7 @@
|
||||
/* xgethostname.c -- return current hostname with unlimited length
|
||||
Copyright (C) 1992, 1996, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1992, 1996, 2000, 2001, 2003, 2004 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
|
||||
@@ -25,60 +27,56 @@
|
||||
#include "xgethostname.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "error.h"
|
||||
#include "exit.h"
|
||||
#include "xalloc.h"
|
||||
|
||||
#ifndef ENAMETOOLONG
|
||||
# define ENAMETOOLONG 9999
|
||||
# define ENAMETOOLONG 0
|
||||
#endif
|
||||
|
||||
int gethostname ();
|
||||
|
||||
#ifndef INITIAL_HOSTNAME_LENGTH
|
||||
# define INITIAL_HOSTNAME_LENGTH 34
|
||||
#endif
|
||||
|
||||
/* Return the current hostname in malloc'd storage.
|
||||
If malloc fails, exit.
|
||||
Upon any other failure, return NULL. */
|
||||
Upon any other failure, return NULL and set errno. */
|
||||
char *
|
||||
xgethostname (void)
|
||||
{
|
||||
char *hostname;
|
||||
size_t size;
|
||||
char *hostname = NULL;
|
||||
size_t size = INITIAL_HOSTNAME_LENGTH;
|
||||
|
||||
size = INITIAL_HOSTNAME_LENGTH;
|
||||
/* Use size + 1 here rather than size to work around the bug
|
||||
in SunOS 5.5's gethostname whereby it NUL-terminates HOSTNAME
|
||||
even when the name is longer than the supplied buffer. */
|
||||
hostname = xmalloc (size + 1);
|
||||
while (1)
|
||||
{
|
||||
int k = size - 1;
|
||||
int err;
|
||||
/* Use SIZE_1 here rather than SIZE to work around the bug in
|
||||
SunOS 5.5's gethostname whereby it NUL-terminates HOSTNAME
|
||||
even when the name is as long as the supplied buffer. */
|
||||
size_t size_1;
|
||||
|
||||
hostname = x2realloc (hostname, &size);
|
||||
size_1 = size - 1;
|
||||
hostname[size_1 - 1] = '\0';
|
||||
errno = 0;
|
||||
hostname[k] = '\0';
|
||||
err = gethostname (hostname, size);
|
||||
if (err >= 0 && hostname[k] == '\0')
|
||||
break;
|
||||
else if (err < 0 && errno != ENAMETOOLONG && errno != 0)
|
||||
|
||||
if (gethostname (hostname, size_1) == 0)
|
||||
{
|
||||
if (! hostname[size_1 - 1])
|
||||
break;
|
||||
}
|
||||
else if (errno != 0 && errno != ENAMETOOLONG && errno != EINVAL)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
free (hostname);
|
||||
errno = saved_errno;
|
||||
return NULL;
|
||||
}
|
||||
size *= 2;
|
||||
hostname = xrealloc (hostname, size + 1);
|
||||
}
|
||||
|
||||
return hostname;
|
||||
|
||||
+1
-5
@@ -1,5 +1,5 @@
|
||||
/* Locale-specific memory comparison.
|
||||
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2003, 2004 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
|
||||
@@ -22,10 +22,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "gettext.h"
|
||||
|
||||
@@ -27,10 +27,6 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
+9
-9
@@ -1,5 +1,6 @@
|
||||
/* error-checking interface to strtod-like functions
|
||||
Copyright (C) 1996, 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1996, 1999, 2000, 2003, 2004 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
|
||||
@@ -34,36 +35,35 @@
|
||||
|
||||
/* An interface to strtod that encapsulates all the error checking
|
||||
one should usually perform. Like strtod, but upon successful
|
||||
conversion put the result in *RESULT and return zero. Return
|
||||
non-zero and don't modify *RESULT upon any failure. CONVERT
|
||||
conversion put the result in *RESULT and return true. Return
|
||||
false and don't modify *RESULT upon any failure. CONVERT
|
||||
specifies the conversion function, e.g., strtod itself. */
|
||||
|
||||
int
|
||||
bool
|
||||
xstrtod (char const *str, char const **ptr, double *result,
|
||||
double (*convert) (char const *, char **))
|
||||
{
|
||||
double val;
|
||||
char *terminator;
|
||||
int fail;
|
||||
bool ok = true;
|
||||
|
||||
fail = 0;
|
||||
errno = 0;
|
||||
val = convert (str, &terminator);
|
||||
|
||||
/* Having a non-zero terminator is an error only when PTR is NULL. */
|
||||
if (terminator == str || (ptr == NULL && *terminator != '\0'))
|
||||
fail = 1;
|
||||
ok = false;
|
||||
else
|
||||
{
|
||||
/* Allow underflow (in which case strtod returns zero),
|
||||
but flag overflow as an error. */
|
||||
if (val != 0.0 && errno == ERANGE)
|
||||
fail = 1;
|
||||
ok = false;
|
||||
}
|
||||
|
||||
if (ptr != NULL)
|
||||
*ptr = terminator;
|
||||
|
||||
*result = val;
|
||||
return fail;
|
||||
return ok;
|
||||
}
|
||||
|
||||
+5
-3
@@ -1,6 +1,6 @@
|
||||
/* Error-checking interface to strtod-like functions.
|
||||
|
||||
Copyright (C) 1996, 1998, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1998, 2003, 2004 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,7 +21,9 @@
|
||||
#ifndef XSTRTOD_H
|
||||
# define XSTRTOD_H 1
|
||||
|
||||
int xstrtod (const char *str, const char **ptr, double *result,
|
||||
double (*convert) (char const *, char **));
|
||||
# include <stdbool.h>
|
||||
|
||||
bool xstrtod (const char *str, const char **ptr, double *result,
|
||||
double (*convert) (char const *, char **));
|
||||
|
||||
#endif /* not XSTRTOD_H */
|
||||
|
||||
+2
-6
@@ -1,5 +1,5 @@
|
||||
/* xstrtoimax.c -- A more useful interface to strtoimax.
|
||||
Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001, 2003, 2004 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,11 +21,7 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#elif HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#include "xstrtol.h"
|
||||
|
||||
#define __strtol strtoimax
|
||||
#define __strtol_t intmax_t
|
||||
|
||||
+7
-11
@@ -1,6 +1,6 @@
|
||||
/* A more useful interface to strtol.
|
||||
|
||||
Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2003 Free
|
||||
Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2003, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -37,16 +37,11 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef errno
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
/* The extra casts work around common compiler bugs. */
|
||||
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
|
||||
#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
|
||||
@@ -121,9 +116,10 @@ __xstrtol (const char *s, char **ptr, int strtol_base,
|
||||
if (! TYPE_SIGNED (__strtol_t))
|
||||
{
|
||||
const char *q = s;
|
||||
while (ISSPACE ((unsigned char) *q))
|
||||
++q;
|
||||
if (*q == '-')
|
||||
unsigned char ch = *q;
|
||||
while (ISSPACE (ch))
|
||||
ch = *++q;
|
||||
if (ch == '-')
|
||||
return LONGINT_INVALID;
|
||||
}
|
||||
|
||||
|
||||
+3
-5
@@ -22,13 +22,11 @@
|
||||
|
||||
# include "exitfail.h"
|
||||
|
||||
/* Get uintmax_t. */
|
||||
# if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
# else
|
||||
# if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
# endif
|
||||
# endif
|
||||
# if HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
# endif
|
||||
|
||||
# ifndef _STRTOL_ERROR
|
||||
|
||||
+2
-6
@@ -1,5 +1,5 @@
|
||||
/* xstrtoumax.c -- A more useful interface to strtoumax.
|
||||
Copyright (C) 1999, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2003, 2004 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,11 +21,7 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_INTTYPES_H
|
||||
# include <inttypes.h>
|
||||
#elif HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#include "xstrtol.h"
|
||||
|
||||
#define __strtol strtoumax
|
||||
#define __strtol_t uintmax_t
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
2004-08-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
More merge from coreutils.
|
||||
|
||||
* utimens.m4, utimecmp.m4: New files.
|
||||
* backupfile.m4, euidacces.m4, acl.m4, afs.m4, calloc.m4, dirfd.m4,
|
||||
fsusage.m4, jm-macros.m4, ls-mntd-fs.m4, md5.m4, mountlist.m4,
|
||||
prereq.m4, sha.m4: Import changes from coreutils.
|
||||
|
||||
2004-08-02 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* getsubopt.m4: New file.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Written by Paul Eggert.
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
#serial 6
|
||||
#serial 7
|
||||
|
||||
AC_DEFUN([gl_AFS],
|
||||
[
|
||||
AC_MSG_CHECKING(for AFS)
|
||||
if test -d /afs; then
|
||||
AC_ARG_WITH(afs,
|
||||
AC_HELP_STRING([--with-afs],
|
||||
[support for the Andrew File System [[default=no]]]),
|
||||
test "$withval" = no || with_afs=yes, with_afs=no)
|
||||
if test "$with_afs" = yes; then
|
||||
AC_DEFINE(AFS, 1, [Define if you have the Andrew File System.])
|
||||
ac_result=yes
|
||||
else
|
||||
ac_result=no
|
||||
fi
|
||||
AC_MSG_RESULT($ac_result)
|
||||
])
|
||||
|
||||
+1
-5
@@ -1,8 +1,4 @@
|
||||
#serial 1
|
||||
|
||||
# FIXME: remove this whole file once we can depend
|
||||
# on having the definition from autoconf.
|
||||
undefine([AC_FUNC_CALLOC])
|
||||
#serial 2
|
||||
|
||||
# Determine whether calloc (N, S) returns non-NULL when N*S is zero.
|
||||
# If so, define HAVE_CALLOC. Otherwise, define calloc to rpl_calloc
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#serial 7
|
||||
#serial 8
|
||||
|
||||
dnl Find out how to get the file descriptor associated with an open DIR*.
|
||||
dnl From Jim Meyering
|
||||
|
||||
+29
-6
@@ -1,11 +1,34 @@
|
||||
#serial 12
|
||||
# fsusage.m4 serial 13
|
||||
# Obtaining file system usage information.
|
||||
|
||||
# From fileutils/configure.in
|
||||
# Copyright (C) 1997, 1998, 2000, 2001, 2003, 2004 Free Software
|
||||
# Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Written by Jim Meyering.
|
||||
|
||||
AC_DEFUN([gl_FSUSAGE],
|
||||
[
|
||||
AC_CHECK_HEADERS_ONCE(sys/param.h)
|
||||
AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs_types.h)
|
||||
AC_CHECK_HEADERS_ONCE(sys/vfs.h sys/fs_types.h)
|
||||
AC_CHECK_HEADERS(sys/mount.h, [], [],
|
||||
[AC_INCLUDES_DEFAULT
|
||||
[#if HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif]])
|
||||
gl_FILE_SYSTEM_USAGE([gl_cv_fs_space=yes], [gl_cv_fs_space=no])
|
||||
if test $gl_cv_fs_space = yes; then
|
||||
AC_LIBOBJ(fsusage)
|
||||
@@ -13,7 +36,7 @@ AC_DEFUN([gl_FSUSAGE],
|
||||
fi
|
||||
])
|
||||
|
||||
# Try to determine how a program can obtain filesystem usage information.
|
||||
# Try to determine how a program can obtain file system usage information.
|
||||
# If successful, define the appropriate symbol (see fsusage.c) and
|
||||
# execute ACTION-IF-FOUND. Otherwise, execute ACTION-IF-NOT-FOUND.
|
||||
#
|
||||
@@ -22,7 +45,7 @@ AC_DEFUN([gl_FSUSAGE],
|
||||
AC_DEFUN([gl_FILE_SYSTEM_USAGE],
|
||||
[
|
||||
|
||||
echo "checking how to get filesystem space usage..."
|
||||
echo "checking how to get file system space usage..."
|
||||
ac_fsusage_space=no
|
||||
|
||||
# Perform only the link test since it seems there are no variants of the
|
||||
@@ -199,7 +222,7 @@ if test $ac_fsusage_space = no; then
|
||||
AC_TRY_CPP([#include <sys/filsys.h>
|
||||
],
|
||||
AC_DEFINE(STAT_READ_FILSYS, 1,
|
||||
[Define if there is no specific function for reading filesystems usage
|
||||
[Define if there is no specific function for reading file systems usage
|
||||
information and you have the <sys/filsys.h> header file. (SVR2)])
|
||||
ac_fsusage_space=yes)
|
||||
fi
|
||||
|
||||
+45
-14
@@ -1,6 +1,25 @@
|
||||
#serial 72 -*- autoconf -*-
|
||||
#serial 75 -*- autoconf -*-
|
||||
|
||||
dnl Misc type-related macros for fileutils, sh-utils, textutils.
|
||||
dnl Misc type-related macros for coreutils.
|
||||
|
||||
# Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004 Free Software
|
||||
# Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Written by Jim Meyering.
|
||||
|
||||
AC_DEFUN([gl_MACROS],
|
||||
[
|
||||
@@ -73,15 +92,16 @@ AC_DEFUN([gl_MACROS],
|
||||
|
||||
# used by sleep and shred
|
||||
AC_REQUIRE([gl_CLOCK_TIME])
|
||||
AC_CHECK_FUNCS(gettimeofday)
|
||||
AC_CHECK_FUNCS_ONCE(gettimeofday)
|
||||
AC_FUNC_GETTIMEOFDAY_CLOBBER
|
||||
# used by shred
|
||||
AC_CHECK_FUNCS_ONCE(directio)
|
||||
|
||||
AC_REQUIRE([AC_FUNC_CLOSEDIR_VOID])
|
||||
|
||||
AC_CHECK_FUNCS( \
|
||||
AC_CHECK_FUNCS_ONCE( \
|
||||
endgrent \
|
||||
endpwent \
|
||||
fdatasync \
|
||||
ftruncate \
|
||||
gethrtime \
|
||||
hasmntopt \
|
||||
@@ -100,17 +120,26 @@ AC_DEFUN([gl_MACROS],
|
||||
strrchr \
|
||||
sysctl \
|
||||
sysinfo \
|
||||
tcgetpgrp \
|
||||
wcrtomb \
|
||||
tzset \
|
||||
)
|
||||
|
||||
# for test.c
|
||||
AC_CHECK_FUNCS(setreuid setregid)
|
||||
|
||||
AC_FUNC_STRTOD
|
||||
|
||||
AC_REQUIRE([cu_PREREQ_STAT_PROG])
|
||||
AC_REQUIRE([GL_FUNC_GETCWD_PATH_MAX])
|
||||
AC_REQUIRE([GL_FUNC_READDIR])
|
||||
|
||||
# for dd.c and shred.c
|
||||
fetish_saved_libs=$LIBS
|
||||
AC_SEARCH_LIBS([fdatasync], [rt posix4],
|
||||
[test "$ac_cv_search_fdatasync" = "none required" ||
|
||||
LIB_FDATASYNC=$ac_cv_search_fdatasync])
|
||||
AC_SUBST([LIB_FDATASYNC])
|
||||
AC_CHECK_FUNCS(fdatasync)
|
||||
LIBS=$fetish_saved_libs
|
||||
|
||||
# See if linking `seq' requires -lm.
|
||||
# It does on nearly every system. The single exception (so far) is
|
||||
# BeOS which has all the math functions in the normal runtime library
|
||||
@@ -146,7 +175,6 @@ AC_DEFUN([gl_MACROS],
|
||||
# If any of these functions don't exist (e.g. DJGPP 2.03),
|
||||
# use the corresponding stub.
|
||||
AC_CHECK_FUNC([fchdir], , [AC_LIBOBJ(fchdir-stub)])
|
||||
AC_CHECK_FUNC([fchown], , [AC_LIBOBJ(fchown-stub)])
|
||||
|
||||
AC_REQUIRE([gl_FUNC_FREE])
|
||||
])
|
||||
@@ -156,7 +184,7 @@ AC_DEFUN([gl_MACROS],
|
||||
# See the definition of ac_includes_default in `configure'.
|
||||
AC_DEFUN([gl_CHECK_ALL_HEADERS],
|
||||
[
|
||||
AC_CHECK_HEADERS( \
|
||||
AC_CHECK_HEADERS_ONCE( \
|
||||
errno.h \
|
||||
fcntl.h \
|
||||
float.h \
|
||||
@@ -177,13 +205,11 @@ AC_DEFUN([gl_CHECK_ALL_HEADERS],
|
||||
sys/fstyp.h \
|
||||
sys/ioctl.h \
|
||||
sys/mntent.h \
|
||||
sys/mount.h \
|
||||
sys/param.h \
|
||||
sys/resource.h \
|
||||
sys/socket.h \
|
||||
sys/statfs.h \
|
||||
sys/statvfs.h \
|
||||
sys/sysctl.h \
|
||||
sys/systeminfo.h \
|
||||
sys/time.h \
|
||||
sys/timeb.h \
|
||||
@@ -193,8 +219,12 @@ AC_DEFUN([gl_CHECK_ALL_HEADERS],
|
||||
termios.h \
|
||||
unistd.h \
|
||||
utime.h \
|
||||
values.h \
|
||||
)
|
||||
AC_CHECK_HEADERS(sys/mount.h sys/sysctl.h, [], [],
|
||||
[AC_INCLUDES_DEFAULT
|
||||
[#if HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif]])
|
||||
])
|
||||
|
||||
# This macro must be invoked before any tests that run the compiler.
|
||||
@@ -240,7 +270,6 @@ AC_DEFUN([gl_CHECK_ALL_TYPES],
|
||||
AC_REQUIRE([AC_TYPE_SIZE_T])
|
||||
AC_REQUIRE([AC_TYPE_UID_T])
|
||||
AC_CHECK_TYPE(ino_t, unsigned long int)
|
||||
AC_CHECK_TYPE(uintptr_t, size_t)
|
||||
|
||||
gt_TYPE_SSIZE_T
|
||||
|
||||
@@ -249,7 +278,9 @@ AC_DEFUN([gl_CHECK_ALL_TYPES],
|
||||
AC_CHECK_TYPE(major_t, unsigned int)
|
||||
AC_CHECK_TYPE(minor_t, unsigned int)
|
||||
|
||||
AC_REQUIRE([gl_AC_TYPE_UINT32_T])
|
||||
AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])
|
||||
AC_REQUIRE([gl_AC_TYPE_UINTPTR_T])
|
||||
AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG])
|
||||
|
||||
AC_REQUIRE([AC_HEADER_MAJOR])
|
||||
|
||||
+41
-17
@@ -1,13 +1,31 @@
|
||||
#serial 15
|
||||
#serial 17
|
||||
# How to list mounted file systems.
|
||||
|
||||
# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
|
||||
# Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
dnl This is not pretty. I've just taken the autoconf code and wrapped
|
||||
dnl it in an AC_DEFUN.
|
||||
dnl it in an AC_DEFUN and made some other fixes.
|
||||
dnl
|
||||
|
||||
# gl_LIST_MOUNTED_FILESYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
AC_DEFUN([gl_LIST_MOUNTED_FILESYSTEMS],
|
||||
# gl_LIST_MOUNTED_FILE_SYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
AC_DEFUN([gl_LIST_MOUNTED_FILE_SYSTEMS],
|
||||
[
|
||||
AC_CHECK_FUNCS(listmntent getmntinfo)
|
||||
AC_CHECK_HEADERS_ONCE(sys/param.h)
|
||||
@@ -16,7 +34,13 @@ AC_CHECK_HEADERS_ONCE(sys/param.h)
|
||||
# NGROUPS (as the array dimension for a struct member) without a definition.
|
||||
AC_CHECK_HEADERS(sys/ucred.h, [], [], [#include <grp.h>])
|
||||
|
||||
AC_CHECK_HEADERS(mntent.h sys/mount.h sys/fs_types.h)
|
||||
AC_CHECK_HEADERS(sys/mount.h, [], [],
|
||||
[AC_INCLUDES_DEFAULT
|
||||
[#if HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif]])
|
||||
|
||||
AC_CHECK_HEADERS(mntent.h sys/fs_types.h)
|
||||
getfsstat_includes="\
|
||||
$ac_includes_default
|
||||
#if HAVE_SYS_PARAM_H
|
||||
@@ -35,7 +59,7 @@ $ac_includes_default
|
||||
"
|
||||
AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes])
|
||||
|
||||
# Determine how to get the list of mounted filesystems.
|
||||
# Determine how to get the list of mounted file systems.
|
||||
ac_list_mounted_fs=
|
||||
|
||||
# If the getmntent function is available but not in the standard library,
|
||||
@@ -70,7 +94,7 @@ yes
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_LISTMNTENT, 1,
|
||||
[Define if there is a function named listmntent that can be used to
|
||||
list all mounted filesystems. (UNICOS)])
|
||||
list all mounted file systems. (UNICOS)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -86,7 +110,7 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_VMOUNT, 1,
|
||||
[Define if there is a function named mntctl that can be used to read
|
||||
the list of mounted filesystems, and there is a system header file
|
||||
the list of mounted file systems, and there is a system header file
|
||||
that declares `struct vmount.' (AIX)])
|
||||
fi
|
||||
fi
|
||||
@@ -125,7 +149,7 @@ if test $ac_cv_func_getmntent = yes; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT1, 1,
|
||||
[Define if there is a function named getmntent for reading the list
|
||||
of mounted filesystems, and that function takes a single argument.
|
||||
of mounted file systems, and that function takes a single argument.
|
||||
(4.3BSD, SunOS, HP-UX, Dynix, Irix)])
|
||||
fi
|
||||
fi
|
||||
@@ -142,7 +166,7 @@ if test $ac_cv_func_getmntent = yes; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTENT2, 1,
|
||||
[Define if there is a function named getmntent for reading the list of
|
||||
mounted filesystems, and that function takes two arguments. (SVR4)])
|
||||
mounted file systems, and that function takes two arguments. (SVR4)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -173,7 +197,7 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETFSSTAT, 1,
|
||||
[Define if there is a function named getfsstat for reading the
|
||||
list of mounted filesystems. (DEC Alpha running OSF/1)])
|
||||
list of mounted file systems. (DEC Alpha running OSF/1)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -192,7 +216,7 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD_FSTYP, 1,
|
||||
[Define if (like SVR2) there is no specific function for reading the
|
||||
list of mounted filesystems, and your system has these header files:
|
||||
list of mounted file systems, and your system has these header files:
|
||||
<sys/fstyp.h> and <sys/statfs.h>. (SVR3)])
|
||||
fi
|
||||
fi
|
||||
@@ -211,7 +235,7 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNTINFO, 1,
|
||||
[Define if there is a function named getmntinfo for reading the
|
||||
list of mounted filesystems. (4.4BSD, Darwin)])
|
||||
list of mounted file systems. (4.4BSD, Darwin)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -229,7 +253,7 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_GETMNT, 1,
|
||||
[Define if there is a function named getmnt for reading the list of
|
||||
mounted filesystems. (Ultrix)])
|
||||
mounted file systems. (Ultrix)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -250,7 +274,7 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FS_STAT_DEV, 1,
|
||||
[Define if there are functions named next_dev and fs_stat_dev for
|
||||
reading the list of mounted filesystems. (BeOS)])
|
||||
reading the list of mounted file systems. (BeOS)])
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -266,13 +290,13 @@ if test -z "$ac_list_mounted_fs"; then
|
||||
ac_list_mounted_fs=found
|
||||
AC_DEFINE(MOUNTED_FREAD, 1,
|
||||
[Define if there is no specific function for reading the list of
|
||||
mounted filesystems. fread will be used to read /etc/mnttab.
|
||||
mounted file systems. fread will be used to read /etc/mnttab.
|
||||
(SVR2) ])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$ac_list_mounted_fs"; then
|
||||
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
|
||||
AC_MSG_ERROR([could not determine how to read list of mounted file systems])
|
||||
# FIXME -- no need to abort building the whole package
|
||||
# Can't build mountlist.c or anything that needs its functions
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# md5.m4 serial 3
|
||||
dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
|
||||
# md5.m4 serial 5
|
||||
dnl Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
@@ -9,7 +9,9 @@ dnl the same distribution terms as the rest of that program.
|
||||
AC_DEFUN([gl_MD5],
|
||||
[
|
||||
dnl Prerequisites of lib/md5.h.
|
||||
AC_REQUIRE([AC_C_INLINE])
|
||||
AC_REQUIRE([gl_AC_TYPE_UINT32_T])
|
||||
|
||||
dnl No prerequisites of lib/md5.c.
|
||||
dnl Prerequisites of lib/md5.c.
|
||||
AC_REQUIRE([AC_C_BIGENDIAN])
|
||||
:
|
||||
])
|
||||
|
||||
+5
-5
@@ -1,4 +1,4 @@
|
||||
# mountlist.m4 serial 3
|
||||
# mountlist.m4 serial 4
|
||||
dnl Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
@@ -8,18 +8,18 @@ dnl the same distribution terms as the rest of that program.
|
||||
|
||||
AC_DEFUN([gl_MOUNTLIST],
|
||||
[
|
||||
gl_LIST_MOUNTED_FILESYSTEMS([gl_cv_list_mounted_fs=yes],
|
||||
[gl_cv_list_mounted_fs=no])
|
||||
gl_LIST_MOUNTED_FILE_SYSTEMS([gl_cv_list_mounted_fs=yes],
|
||||
[gl_cv_list_mounted_fs=no])
|
||||
if test $gl_cv_list_mounted_fs = yes; then
|
||||
AC_LIBOBJ(mountlist)
|
||||
gl_PREREQ_MOUNTLIST_EXTRA
|
||||
fi
|
||||
])
|
||||
|
||||
# Prerequisites of lib/mountlist.c not done by gl_LIST_MOUNTED_FILESYSTEMS.
|
||||
# Prerequisites of lib/mountlist.c not done by gl_LIST_MOUNTED_FILE_SYSTEMS.
|
||||
AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA],
|
||||
[
|
||||
dnl Note gl_LIST_MOUNTED_FILESYSTEMS checks for mntent.h, not sys/mntent.h.
|
||||
dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h.
|
||||
AC_CHECK_HEADERS_ONCE(fcntl.h unistd.h)
|
||||
AC_CHECK_HEADERS(sys/mntent.h)
|
||||
gl_FSTYPENAME
|
||||
|
||||
+6
-2
@@ -1,4 +1,4 @@
|
||||
#serial 40
|
||||
#serial 44
|
||||
|
||||
dnl We use gl_ for non Autoconf macros.
|
||||
m4_pattern_forbid([^gl_[ABCDEFGHIJKLMNOPQRSTUVXYZ]])dnl
|
||||
@@ -17,6 +17,7 @@ AC_DEFUN([gl_PREREQ],
|
||||
AC_REQUIRE([gl_FUNC_MKSTEMP])
|
||||
AC_REQUIRE([gl_ALLOCSA])
|
||||
AC_REQUIRE([gl_BACKUPFILE])
|
||||
AC_REQUIRE([gl_C_STRTOLD])
|
||||
AC_REQUIRE([gl_CANON_HOST])
|
||||
AC_REQUIRE([gl_CLOEXEC])
|
||||
AC_REQUIRE([gl_CLOSEOUT])
|
||||
@@ -24,6 +25,7 @@ AC_DEFUN([gl_PREREQ],
|
||||
AC_REQUIRE([gl_ERROR])
|
||||
AC_REQUIRE([gl_EXCLUDE])
|
||||
AC_REQUIRE([gl_EXITFAIL])
|
||||
AC_REQUIRE([gl_FCNTL_SAFER])
|
||||
AC_REQUIRE([gl_FILEBLOCKS])
|
||||
AC_REQUIRE([gl_FILEMODE])
|
||||
AC_REQUIRE([gl_FILE_TYPE])
|
||||
@@ -31,7 +33,6 @@ AC_DEFUN([gl_PREREQ],
|
||||
AC_REQUIRE([gl_FUNC_ALLOCA])
|
||||
AC_REQUIRE([gl_FUNC_ATEXIT])
|
||||
AC_REQUIRE([gl_FUNC_DUP2])
|
||||
AC_REQUIRE([gl_FUNC_EUIDACCESS])
|
||||
AC_REQUIRE([gl_FUNC_FNMATCH_GNU])
|
||||
AC_REQUIRE([gl_FUNC_GETHOSTNAME])
|
||||
AC_REQUIRE([AC_FUNC_GETLOADAVG])
|
||||
@@ -43,6 +44,7 @@ AC_DEFUN([gl_PREREQ],
|
||||
AC_REQUIRE([gl_FUNC_MEMRCHR])
|
||||
AC_REQUIRE([gl_FUNC_MEMSET])
|
||||
AC_REQUIRE([gl_FUNC_MKTIME])
|
||||
AC_REQUIRE([gl_FUNC_NONREENTRANT_EUIDACCESS])
|
||||
AC_REQUIRE([gl_FUNC_READLINK])
|
||||
AC_REQUIRE([gl_FUNC_RMDIR])
|
||||
AC_REQUIRE([gl_FUNC_RPMATCH])
|
||||
@@ -68,6 +70,7 @@ AC_DEFUN([gl_PREREQ],
|
||||
AC_REQUIRE([gl_GETNDELIM2])
|
||||
AC_REQUIRE([gl_GETOPT])
|
||||
AC_REQUIRE([gl_GETPAGESIZE])
|
||||
AC_REQUIRE([gl_GETTIME])
|
||||
AC_REQUIRE([gl_GETUGROUPS])
|
||||
AC_REQUIRE([gl_HARD_LOCALE])
|
||||
AC_REQUIRE([gl_HASH])
|
||||
@@ -113,6 +116,7 @@ AC_DEFUN([gl_PREREQ],
|
||||
AC_REQUIRE([gl_XSTRTOD])
|
||||
AC_REQUIRE([gl_XSTRTOL])
|
||||
AC_REQUIRE([gl_YESNO])
|
||||
AC_REQUIRE([AC_FUNC_CALLOC])
|
||||
AC_REQUIRE([gl_FUNC_GLIBC_UNLOCKED_IO])
|
||||
AC_REQUIRE([gl_FUNC_GNU_STRFTIME])
|
||||
AC_REQUIRE([gl_FUNC_LSTAT])
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# sha.m4 serial 2
|
||||
dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
# sha.m4 serial 3
|
||||
dnl Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
@@ -8,6 +8,7 @@ dnl the same distribution terms as the rest of that program.
|
||||
|
||||
AC_DEFUN([gl_SHA],
|
||||
[
|
||||
dnl Prerequisites of lib/sha.c.
|
||||
dnl Prerequisites of lib/sha1.c.
|
||||
AC_REQUIRE([AC_C_BIGENDIAN])
|
||||
:
|
||||
])
|
||||
|
||||
@@ -17,7 +17,7 @@ configure.ac:
|
||||
AC_FUNC_CANONICALIZE_FILE_NAME
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += canonicalize.h canonicalize.c
|
||||
lib_SOURCES += canonicalize.h canonicalize.c stat-macros.h
|
||||
|
||||
Include:
|
||||
"canonicalize.h"
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@ euidaccess() function: check effective user's permissions for a file.
|
||||
Files:
|
||||
lib/euidaccess.h
|
||||
lib/euidaccess.c
|
||||
lib/stat-macros.h
|
||||
m4/euidaccess.m4
|
||||
|
||||
Depends-on:
|
||||
@@ -13,7 +14,7 @@ configure.ac:
|
||||
gl_FUNC_EUIDACCESS
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += euidaccess.h
|
||||
lib_SOURCES += euidaccess.h stat-macros.h
|
||||
|
||||
Include:
|
||||
"euidaccess.h"
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@ file.
|
||||
Files:
|
||||
lib/filemode.h
|
||||
lib/filemode.c
|
||||
lib/stat-macros.h
|
||||
m4/filemode.m4
|
||||
|
||||
Depends-on:
|
||||
@@ -13,7 +14,7 @@ configure.ac:
|
||||
gl_FILEMODE
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += filemode.h filemode.c
|
||||
lib_SOURCES += filemode.h filemode.c stat-macros.h
|
||||
|
||||
Include:
|
||||
"filemode.h"
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@ lchown() function: change ownership of a file.
|
||||
Files:
|
||||
lib/lchown.h
|
||||
lib/lchown.c
|
||||
lib/stat-macros.h
|
||||
m4/lchown.m4
|
||||
|
||||
Depends-on:
|
||||
@@ -13,7 +14,7 @@ configure.ac:
|
||||
gl_FUNC_LCHOWN
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += lchown.h
|
||||
lib_SOURCES += lchown.h stat-macros.h
|
||||
|
||||
Include:
|
||||
"lchown.h"
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@ Ensure that a directory path exists.
|
||||
Files:
|
||||
lib/makepath.h
|
||||
lib/makepath.c
|
||||
lib/stat-macros.h
|
||||
m4/afs.m4
|
||||
m4/makepath.m4
|
||||
|
||||
@@ -20,7 +21,7 @@ configure.ac:
|
||||
gl_MAKEPATH
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += makepath.h makepath.c
|
||||
lib_SOURCES += makepath.h makepath.c stat-macros.h
|
||||
|
||||
Include:
|
||||
"makepath.h"
|
||||
|
||||
@@ -3,6 +3,7 @@ rmdir() function: delete a directory.
|
||||
|
||||
Files:
|
||||
lib/rmdir.c
|
||||
lib/stat-macros.h
|
||||
m4/rmdir.m4
|
||||
|
||||
Depends-on:
|
||||
@@ -11,6 +12,7 @@ configure.ac:
|
||||
gl_FUNC_RMDIR
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += stat-macros.h
|
||||
|
||||
Include:
|
||||
<unistd.h>
|
||||
|
||||
@@ -3,6 +3,7 @@ stat() function: return information about a file, following symbolic links.
|
||||
|
||||
Files:
|
||||
lib/stat.c
|
||||
lib/stat-macros.h
|
||||
m4/stat.m4
|
||||
|
||||
Depends-on:
|
||||
@@ -12,6 +13,7 @@ configure.ac:
|
||||
gl_FUNC_STAT
|
||||
|
||||
Makefile.am:
|
||||
lib_SOURCES += stat-macros.h
|
||||
|
||||
Include:
|
||||
<sys/stat.h>
|
||||
|
||||
Reference in New Issue
Block a user