Compare commits

...

1438 Commits

Author SHA1 Message Date
Jim Meyering
ca5fe741ff . 2003-02-02 22:11:13 +00:00
Jim Meyering
2e881206e3 duh 2003-02-02 22:10:41 +00:00
Jim Meyering
c0e51beb61 . 2003-02-02 21:48:00 +00:00
Jim Meyering
c7366d9a4b Remove junk that somehow was improperly pasted into an entry from 2002-10-12. 2003-02-02 20:53:56 +00:00
Jim Meyering
54f1fd99a4 add a couple newlines 2003-02-02 20:51:24 +00:00
Jim Meyering
bd9a1a92b4 *** empty log message *** 2003-02-02 20:35:15 +00:00
Jim Meyering
92248c4bc9 . 2003-02-02 20:34:45 +00:00
Jim Meyering
a3fb0cc75a (check-x-vs-1): Use @PATH_SEPARATOR@, not `:'. 2003-02-02 20:34:20 +00:00
Jim Meyering
4ac006af69 (makefile_path_separator_check): New rule.
(local-check): Add it to the list.
2003-02-02 20:31:48 +00:00
Jim Meyering
b535cc4171 *** empty log message *** 2003-02-02 20:17:21 +00:00
Jim Meyering
7ffbf3d56a *** empty log message *** 2003-02-02 20:17:04 +00:00
Jim Meyering
89fc480602 *** empty log message *** 2003-02-02 20:15:11 +00:00
Jim Meyering
08b6275885 Use @PATH_SEPARATOR@ instead of hard-coding the path-separator.
Also double-quote the new PATH, to avoid problems when the
path-separator is a semi-colon or when `pwd` contains e.g. a space.
2003-02-02 20:14:53 +00:00
Jim Meyering
62631d8844 *** empty log message *** 2003-02-02 20:14:20 +00:00
Jim Meyering
183659bb72 *** empty log message *** 2003-02-02 20:14:00 +00:00
Jim Meyering
d9ad189ff7 Use @PATH_SEPARATOR@ instead of hard-coding the path-separator.
Also double-quote the new PATH, to avoid problems when the
path-separator is a semi-colon or when `pwd` contains e.g. a space.
2003-02-02 20:11:33 +00:00
Jim Meyering
a9a663e42b tweak syntax to make it consistent with others 2003-02-02 19:36:48 +00:00
Jim Meyering
7be64fb687 *** empty log message *** 2003-02-02 18:25:33 +00:00
Jim Meyering
6426d38820 . 2003-02-02 18:25:22 +00:00
Jim Meyering
45698f01ec *** empty log message *** 2003-02-02 18:24:09 +00:00
Jim Meyering
f25f4c7cf3 . 2003-02-02 18:23:56 +00:00
Jim Meyering
977ac31797 *** empty log message *** 2003-02-02 18:18:47 +00:00
Jim Meyering
4747fbf9b4 (jm_PREREQ_REGEX): Remove. 2003-02-02 18:18:43 +00:00
Jim Meyering
1facca4380 (jm_PREREQ_REGEX): New function, from gnulib.
(jm_INCLUDED_REGEX): Use it.
2003-02-02 18:18:05 +00:00
Jim Meyering
50d375102f *** empty log message *** 2003-02-02 17:15:01 +00:00
Jim Meyering
670e4e061a (lstat) [LSTAT_FOLLOWS_SLASHED_SYMLINK]: Define to rpl_lstat. 2003-02-02 17:14:59 +00:00
Jim Meyering
2d5342fb94 Require jm_FUNC_LSTAT. 2003-02-02 17:10:25 +00:00
Jim Meyering
a881942cca Don't put decl after non-decl. 2003-02-01 22:52:45 +00:00
Jim Meyering
7df6daf8a4 *** empty log message *** 2003-02-01 15:21:45 +00:00
Jim Meyering
1a26ff6e02 . 2003-02-01 15:21:29 +00:00
Jim Meyering
a7eac7f5fd *** empty log message *** 2003-02-01 15:21:18 +00:00
Jim Meyering
d606b47598 (MAX_N_DESCRIPTORS): Define. 2003-02-01 15:20:36 +00:00
Jim Meyering
07d3a99375 *** empty log message *** 2003-02-01 11:05:25 +00:00
Jim Meyering
8323669455 (jm_MACROS): Require UTILS_SYS_OPEN_MAX. 2003-02-01 11:05:23 +00:00
Jim Meyering
5acb27d993 . 2003-02-01 11:04:50 +00:00
Jim Meyering
be0c9150a0 . 2003-02-01 11:03:57 +00:00
Jim Meyering
40bc15c132 tweak syntax. duh 2003-02-01 11:03:28 +00:00
Jim Meyering
228544d08c Whoops. Swap fail/cross-compile cases. 2003-02-01 11:03:04 +00:00
Jim Meyering
ba61c1af86 add comments 2003-02-01 11:00:45 +00:00
Jim Meyering
1973da17d0 *** empty log message *** 2003-02-01 09:59:17 +00:00
Jim Meyering
442dbd2429 (G_fail): New global.
(human_time): Diagnose failed localtime, not failed nstrftime.
(main): Fail if G_fail is set.
2003-02-01 09:59:09 +00:00
Jim Meyering
3507d9868f *** empty log message *** 2003-01-31 18:28:43 +00:00
Jim Meyering
4686f1f3fd Include "file-type.h"
(print_human_type): Remove function.
(human_access): Rename from print_human_access.  Return a string.
(human_time): Rename from print_human_time.  Return a string.
(print_stat): Arrange so that field width and an alignment specifier
are honored for the %A, %F, %x, %y, and %z formats.
[%F]: Use file_type; this gives slightly different file type strings,
e.g., `directory' instead of `Directory' and `regular file' or
`regular empty file' instead of `Regular file'.
2003-01-31 18:28:39 +00:00
Jim Meyering
fb9e95e6c3 (print_stat): Use S_ISLNK rather than an explicit
test using S_IFMT and S_IFLNK.  S_IFLNK may not be defined.
2003-01-31 13:52:18 +00:00
Jim Meyering
d060450cc8 *** empty log message *** 2003-01-31 13:37:16 +00:00
Jim Meyering
d85b93c0fb ditto for invalid options 2003-01-31 13:37:08 +00:00
Jim Meyering
4bee27ae43 (main): Upon processing a bad --exclude-from or --max-depth
option argument, don't exit right away, in case there are others.
Rather record the failure and exit after processing other options.
2003-01-31 13:35:25 +00:00
Jim Meyering
aaf8697ee9 *** empty log message *** 2003-01-31 10:43:35 +00:00
Jim Meyering
d92da7460e (TAR_OPTIONS): Set and export, in order to make
tar archive easier to reproduce.
2003-01-31 10:43:29 +00:00
Jim Meyering
3f026f0448 *** empty log message *** 2003-01-31 10:39:47 +00:00
Jim Meyering
de49951491 Rewrite to perform directory traversal using nftw.
Include "dirname.h", "ftw.h", and "quotearg.h".
(AUTHORS): Add self.
(opt_one_file_system): Move global into `main'.
(path, xstat, exit_status): Remove declarations.
(arg_length, suffix_length): New globals.
(G_fail): New global, sort of like the old `exit_status'.
(IS_FTW_DIR_TYPE): Define.
(print_only_size): New function.
(process_file): New function.
(str_init, ensure_space, str_copyc, str_concatc): Remove functions.
(str_trunc, pop_dir, count_entry): Likewise.
(du_files): Rewrite to use nftw.
2003-01-31 10:39:33 +00:00
Jim Meyering
129c735cda *** empty log message *** 2003-01-30 20:23:29 +00:00
Jim Meyering
9f90080b95 Ensure that with -L we get the same results even without the trailing slash. 2003-01-30 19:40:09 +00:00
Jim Meyering
1c976d1966 get latest 2003-01-30 13:55:20 +00:00
Jim Meyering
c96b23c2ff *** empty log message *** 2003-01-30 10:42:45 +00:00
Jim Meyering
594fe72be0 no backticks in C comments 2003-01-29 20:52:02 +00:00
Jim Meyering
0267e219b7 *** empty log message *** 2003-01-29 20:36:41 +00:00
Jim Meyering
f5ded0090d *** empty log message *** 2003-01-29 20:36:18 +00:00
Jim Meyering
651da6950f *** empty log message *** 2003-01-29 20:20:40 +00:00
Jim Meyering
a3d30ef951 Detect broken re_search in e.g. glibc-2.2.93. 2003-01-29 20:20:36 +00:00
Jim Meyering
1c5a98512f . 2003-01-28 17:55:23 +00:00
Jim Meyering
88b5eb8ef1 . 2003-01-28 17:54:46 +00:00
Jim Meyering
09b1a0014b comments 2003-01-28 17:40:56 +00:00
Jim Meyering
77e740fff6 *** empty log message *** 2003-01-27 18:06:38 +00:00
Jim Meyering
fd51c35ed6 *** empty log message *** 2003-01-27 18:04:46 +00:00
Jim Meyering
3ba60a0bc5 add comments 2003-01-27 15:16:01 +00:00
Jim Meyering
96332f0a7e (FTW_DCH, FTW_DCHP): Better comments. 2003-01-27 15:00:22 +00:00
Jim Meyering
336827087f (quote_name): Add fourth parameter, width, into which to
store the screen columns, and return the number of bytes instead.
(print_dir): Pass NULL as fourth parameter of quote_name.
(print_name_with_quoting): Likewise.
(length_of_file_name_and_frills): Get the width from the fourth
parameter of quote_name instead of return value.
2003-01-27 13:42:26 +00:00
Jim Meyering
b9f33a9f76 *** empty log message *** 2003-01-27 13:40:47 +00:00
Jim Meyering
d28d7b1814 (check-misc): Check for st_blocks, too. 2003-01-27 13:40:43 +00:00
Jim Meyering
88a5f079b4 (print_stat): Use ST_NBLOCKS rather than `->st_blocks'. 2003-01-27 13:32:44 +00:00
Jim Meyering
2a22320430 . 2003-01-27 13:26:45 +00:00
Jim Meyering
3ab066a0d6 *** empty log message *** 2003-01-27 10:45:51 +00:00
Jim Meyering
7f93a5421a (decode_switches): If `dired' is set without
`format == long_format', then silently reset dired.  This doesn't
change the behavior of ls (all prior uses of dired were protected
by `&& format == long_format'), and lets us...
(DIRED_INDENT): ... remove `format == long_format' conjunct.
(PUSH_CURRENT_DIRED_POS): Likewise.
(main): Likewise.
2003-01-27 10:45:48 +00:00
Jim Meyering
ab43d63c3a *** empty log message *** 2003-01-26 11:05:46 +00:00
Jim Meyering
fe443ea297 *** empty log message *** 2003-01-26 11:03:44 +00:00
Jim Meyering
91b31aa87c [_LIBC] (ISSLASH, FILESYSTEM_PREFIX_LEN): Define.
(base_name): New function.
(ftw_startup): Don't strip trailing slashes.
Use base_name to find the offset of the basename.
2003-01-25 20:32:44 +00:00
Jim Meyering
431d1b6241 (object_compare): Compare inode numbers before device numbers.
The former is much more likely to differ for any two given file objects.
2003-01-25 16:44:07 +00:00
Jim Meyering
29faf21e94 *** empty log message *** 2003-01-25 16:31:35 +00:00
Jim Meyering
68c1da4150 (cut invocation): Describe new functionality of --output-delimiter=STR. 2003-01-25 16:31:23 +00:00
Jim Meyering
d8ab1cdcfb . 2003-01-25 08:00:05 +00:00
Jim Meyering
b998bbef74 Tweak mysql output to match input :-) From Jan. 2003-01-24 14:58:38 +00:00
Jim Meyering
cae8997185 *** empty log message *** 2003-01-24 14:49:47 +00:00
Jim Meyering
2c4d6da0a4 *** empty log message *** 2003-01-24 13:49:41 +00:00
Jim Meyering
588979c4ae Change each use of Core-utils' to Coreutils'. 2003-01-24 13:49:38 +00:00
Jim Meyering
dcbd546bf2 *** empty log message *** 2003-01-24 13:48:16 +00:00
Jim Meyering
0644a66901 (Formatting file timestamps): Fix typo: s/%M:S/%M:%S/. 2003-01-24 13:48:11 +00:00
Jim Meyering
d57cca6de0 (The cut command): Extend the new example a little. 2003-01-24 13:47:21 +00:00
Jim Meyering
527715894f (The cut command): Give an example of using cut -c
with an output delimiter.  From Jan Nieuwenhuizen.
2003-01-24 13:46:28 +00:00
Jim Meyering
37ac1f18f1 *** empty log message *** 2003-01-23 20:49:21 +00:00
Jim Meyering
2cceacc8fc *** empty log message *** 2003-01-23 20:13:48 +00:00
Jim Meyering
89beded7d0 [HAVE_CONFIG_H]: Include <config.h>.
Add autoconf-recommended block of alloca-related code.
Cast each use of alloca to the required type, (node**).
2003-01-23 20:13:42 +00:00
Jim Meyering
07dad3b45d *** empty log message *** 2003-01-23 20:12:12 +00:00
Jim Meyering
0eb62f18b3 Add autoconf-recommended block of alloca-related code.
[!_LIBC] (__getcwd): Define to xgetcwd and declare xgetcwd.
2003-01-23 20:12:08 +00:00
Jim Meyering
4d80abb25a update from master sources 2003-01-23 18:51:54 +00:00
Jim Meyering
2e4d3d565b *** empty log message *** 2003-01-23 17:56:16 +00:00
Jim Meyering
a8f272fc4e (UTILS_FUNC_DIRFD): Invoke some AC_EGREP_CPP requirements. 2003-01-23 17:55:17 +00:00
Jim Meyering
537676b8fd *** empty log message *** 2003-01-23 17:50:48 +00:00
Jim Meyering
4f045ded1c Correct typo: s/-1/no/ that kept this from working
on at least Irix and OSF1/Tru64.
2003-01-23 17:50:42 +00:00
Jim Meyering
bf7bd8329e *** empty log message *** 2003-01-22 20:46:11 +00:00
Jim Meyering
1f91d7b6de (find_object): Don't use c99-style struct initializer. 2003-01-22 20:46:08 +00:00
Jim Meyering
4a4db048f8 *** empty log message *** 2003-01-22 20:33:29 +00:00
Jim Meyering
8414999524 Change all uses of __const to const. 2003-01-22 20:33:26 +00:00
Jim Meyering
5eb68d6330 *** empty log message *** 2003-01-22 20:32:23 +00:00
Jim Meyering
a3d541f8f1 Change all uses of __const to const. 2003-01-22 20:32:16 +00:00
Jim Meyering
81d6349ec5 Require FTW_DCH and FTW_DCHP, too. 2003-01-22 20:28:25 +00:00
Jim Meyering
586bfb65d6 *** empty log message *** 2003-01-22 15:55:21 +00:00
Jim Meyering
5245b864d7 . 2003-01-22 15:51:46 +00:00
Jim Meyering
c7753e456b . 2003-01-22 15:50:54 +00:00
Jim Meyering
6046409989 *** empty log message *** 2003-01-22 15:50:07 +00:00
Jim Meyering
b88e308839 (CLEANFILES): Add generated files: ftw.h search.h. 2003-01-22 15:50:00 +00:00
Jim Meyering
4e26fbcb07 *** empty log message *** 2003-01-22 15:46:42 +00:00
Jim Meyering
3ead987ffc [anon enum] (FTW_DCHP): New member.
(FTW_DCHP): Define.
2003-01-22 15:46:38 +00:00
Jim Meyering
f0a528b13a (process_entry): Handle FTW_DCHP.
(ftw_dir): Handle FTW_DCH.
2003-01-22 15:45:48 +00:00
Jim Meyering
5b7ab2372d [!_LIBC && !__USE_XOPEN_EXTENDED]: Define __USE_XOPEN_EXTENDED
and FTW_H_STANDALONE.
[ enum] (FTW_DCH): New member.
(FTW_DCH): Define.
2003-01-22 13:27:20 +00:00
Jim Meyering
eb7d21ab94 Include autoconf-recommended block of dirent/NAMELEN
related definitions and includes.  Use NAMELEN throughout,
rather than _D_EXACT_NAMLEN.
[_LIBC]: Define NAMELEN to _D_EXACT_NAMLEN.
(stpcpy): Declare, if necessary.
(mempcpy): Define, if necessary.
[!_LIBC] (__stpcpy, __mempcpy): Define.
[!_LIBC] (LXSTAT, XSTAT): Define.
2003-01-22 13:13:04 +00:00
Jim Meyering
d4fb8aaf40 . 2003-01-22 12:49:46 +00:00
Jim Meyering
9c54e95335 (TESTS): Add no-x. 2003-01-22 12:49:37 +00:00
Jim Meyering
047c26a588 *** empty log message *** 2003-01-22 12:49:12 +00:00
Jim Meyering
997c341e37 New test, for functionality added to lib/ftw.c. 2003-01-22 12:49:08 +00:00
Jim Meyering
85d03af23a *** empty log message *** 2003-01-21 18:50:00 +00:00
Jim Meyering
c59a8e2d32 (remove_entry) [ROOT_CAN_UNLINK_DIRS && HAVE_STRUCT_DIRENT_D_TYPE]: If a file
has d_type == DT_UNKNOWN it may still be a directory -- or not (e.g., with
FreeBSD on an NFS-mounted file system), so resort to calling lstat to find out.
2003-01-21 18:49:49 +00:00
Jim Meyering
2b2a4a83de *** empty log message *** 2003-01-21 18:47:12 +00:00
Jim Meyering
0257e76d36 *** empty log message *** 2003-01-21 12:39:17 +00:00
Jim Meyering
d1b342cd01 *** empty log message *** 2003-01-21 12:38:45 +00:00
Jim Meyering
8b32e1089e Add comment, and remove now-unnecessary -l option. 2003-01-21 12:38:38 +00:00
Jim Meyering
59670ee05b Don't assume that the file owner username
length is less than 9 in ls output: instead, omit that field
altogether.  Reported by, and suggested fix from, Ferdinand.
2003-01-21 12:36:56 +00:00
Jim Meyering
8cdd6ee1d6 *** empty log message *** 2003-01-21 12:35:27 +00:00
Jim Meyering
5ece3f7020 . 2003-01-21 09:00:34 +00:00
Jim Meyering
cd36829ef0 *** empty log message *** 2003-01-21 08:57:58 +00:00
Jim Meyering
89c0589166 *** empty log message *** 2003-01-21 08:57:26 +00:00
Jim Meyering
3631c1d814 [! weak_alias]: Define __-prefixed names to publicized ones.
[! defined _LIBC]: Define-away weak_alias and internal_function.
[defined weak_alias]: Guard each use of weak_alias.
2003-01-21 08:57:13 +00:00
Jim Meyering
c9f1ed5f93 *** empty log message *** 2003-01-21 08:53:17 +00:00
Jim Meyering
0044a44ce4 New file, from GNU libc. 2003-01-21 08:52:53 +00:00
Jim Meyering
f6cabef722 Link search.h to search_.h if we use our tsearch.c. 2003-01-21 08:26:59 +00:00
Jim Meyering
24ad07391c *** empty log message *** 2003-01-20 20:17:06 +00:00
Jim Meyering
307a4ecdb5 *** empty log message *** 2003-01-20 20:01:18 +00:00
Jim Meyering
829a063ea6 . 2003-01-20 18:55:27 +00:00
Jim Meyering
97a68bfd65 change test name to wide-fmt 2003-01-20 18:20:22 +00:00
Jim Meyering
2023a466b3 *** empty log message *** 2003-01-20 18:20:13 +00:00
Jim Meyering
3429138fc9 *** empty log message *** 2003-01-20 18:20:09 +00:00
Jim Meyering
dcd7703911 (bignum): New test to demonstrate that large
format widths no longer smash strftime's stack and cause infloop.
2003-01-20 18:19:50 +00:00
Jim Meyering
9cfc4300cd *** empty log message *** 2003-01-20 16:41:31 +00:00
Jim Meyering
dadc92d2a9 Include "path-concat.h". 2003-01-20 16:41:19 +00:00
Jim Meyering
6eedcbbf3d remove the temporary directory 2003-01-20 16:38:41 +00:00
Jim Meyering
f501ec73d7 see if we can do it without rpl_ftw 2003-01-20 16:31:28 +00:00
Jim Meyering
abe155b043 New file, from GNU libc. 2003-01-20 16:30:59 +00:00
Jim Meyering
8a9ca6d9d7 *** empty log message *** 2003-01-20 16:30:49 +00:00
Jim Meyering
b266d99497 *** empty log message *** 2003-01-20 16:30:39 +00:00
Jim Meyering
009241b037 *** empty log message *** 2003-01-20 16:29:27 +00:00
Jim Meyering
538f8ebc40 (libfetish_a_SOURCES): Use ftw_.h here, too. 2003-01-20 16:28:34 +00:00
Jim Meyering
a325c0219b *** empty log message *** 2003-01-20 16:28:04 +00:00
Jim Meyering
b7d8a28ca4 renamed to ftw_.h 2003-01-20 16:27:35 +00:00
Jim Meyering
a9660519e8 renamed from ftw.h 2003-01-20 16:27:35 +00:00
Jim Meyering
b138fd4ef8 define ftw to rpl_ftw 2003-01-20 16:19:28 +00:00
Jim Meyering
5bbba381fd *** empty log message *** 2003-01-20 15:45:57 +00:00
Jim Meyering
6918da4447 (obstack_object_size): Declare temporary, __o, to be const.
(obstack_room): Likewise.
(obstack_empty_p): Likewise.
2003-01-20 15:45:53 +00:00
Jim Meyering
8df5caa414 Rename type: DS -> Dirstack_state. 2003-01-20 15:43:03 +00:00
Jim Meyering
3c7f4321a0 Remove some unnecessary parentheses. 2003-01-20 15:40:25 +00:00
Jim Meyering
ae5862eecf *** empty log message *** 2003-01-20 15:06:38 +00:00
Jim Meyering
ff5b51afdd (mail_gpg_sign_cookie): Remove now-unused definition. 2003-01-20 15:06:28 +00:00
Jim Meyering
787138d638 *** empty log message *** 2003-01-20 15:04:56 +00:00
Jim Meyering
01dfd68984 From GNU libc.
(my_strftime): Handle very large width
specifications for numeric values correctly.  Improve checks for
overflow.
2003-01-20 15:04:51 +00:00
Jim Meyering
3fa2b8a8eb *** empty log message *** 2003-01-20 15:03:12 +00:00
Jim Meyering
7565faca35 Merge in changes from libc
Eliminate many `#ifdef USE_IN_LIBIO' conditionals.
2003-01-20 15:03:04 +00:00
Jim Meyering
73af65ef56 Include config.h.
Add copyright.
2003-01-19 16:42:45 +00:00
Jim Meyering
1fab123c3c *** empty log message *** 2003-01-19 16:14:47 +00:00
Jim Meyering
17c68905a0 Include "canonicalize.h". 2003-01-19 16:14:41 +00:00
Jim Meyering
8e5aabe259 duh. fix typo 2003-01-19 16:06:13 +00:00
Jim Meyering
56b3c75e63 (widen) [COMPILE_WIDE]: Merge nearly-identical definitions.
(nl_get_alt_digit) [! defined my_strftime]: Define.
(my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of
_nl_get_alt_digit and _nl_get_walt_digit.
2003-01-19 13:01:35 +00:00
Jim Meyering
7c9bd0e59c (my_strftime): Merge in locale-related changes from libc.
These changes have no effect outside of _LIBC.
2003-01-19 11:51:32 +00:00
Jim Meyering
eb5cd04ce2 *** empty log message *** 2003-01-19 08:52:25 +00:00
Jim Meyering
2a5b4f1761 (Which files are listed): Document new option:
--dereference-command-line-symlink-to-dir.
2003-01-19 08:52:20 +00:00
Jim Meyering
825c8d1155 *** empty log message *** 2003-01-18 18:36:17 +00:00
Jim Meyering
cdb4bba0e6 (Dereference_symlink) [DEREF_COMMAND_LINE_SYMLINK_TO_DIR]: New member.
(enum) [DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION]: New member.
(long_options): Add option --dereference-command-line-symlink-to-dir.
(main): Make DEREF_COMMAND_LINE_SYMLINK_TO_DIR be the default,
rather than DEREF_COMMAND_LINE_ARGUMENTS, when none of the
-d, -F, -l options is specified.
(decode_switches): Handle --dereference-command-line-symlink-to-dir.
(gobble_file): Honor DEREF_COMMAND_LINE_SYMLINK_TO_DIR.
Change --dereference-command-line (-H) to dereference *all*
command line arguments, including broken symlinks.
2003-01-18 18:36:13 +00:00
Jim Meyering
be33a434cb reflect change in how ls -H works 2003-01-18 18:06:38 +00:00
Jim Meyering
ba2b351bbf Change ls -H back to the way it was yesterday, since this is
compatible with FreeBSD and the POSIX spec is confusing
and somewhat contradictory.

(DEREF_COMMAND_LINE_ARGUMENTS): Change name back
from DEREF_COMMAND_LINE_SYMLINK_TO_DIR, updating all uses.
(long_options): Change the long option name back.
(usage): Change the usage back.
(gobble_file): When -H is specified, dereference a top-level
arg even if it points to a non-directory.
2003-01-18 18:01:51 +00:00
Jim Meyering
f0110096ac ls [4.1.1]: Mention that --dereference-command-line (-H) is now the default,
unless one of the -d, -F, or -l options are given.
From Paul Eggert
2003-01-18 08:41:06 +00:00
Jim Meyering
328b32a49d . 2003-01-17 15:14:21 +00:00
Jim Meyering
d615969812 update from automake/lib 2003-01-17 14:53:19 +00:00
Jim Meyering
308e04e326 . 2003-01-16 22:28:13 +00:00
Jim Meyering
d3e2cd0783 *** empty log message *** 2003-01-16 19:03:42 +00:00
Jim Meyering
060c09c357 *** empty log message *** 2003-01-16 19:02:49 +00:00
Jim Meyering
496cd263e7 (Which files are listed, General output formatting): Undo last change. 2003-01-16 19:01:56 +00:00
Jim Meyering
86c7ef826a move prerequisites to precede AC_CACHE_CHECK 2003-01-16 18:23:18 +00:00
Jim Meyering
a578d7d8e9 *** empty log message *** 2003-01-16 17:34:04 +00:00
Jim Meyering
ba53003e9f The `regex' struct is both input and output.
Initialize it before each use.  Patch by Tim Waugh.
2003-01-16 17:33:52 +00:00
Jim Meyering
950fed888a rename variable 2003-01-15 21:12:19 +00:00
Jim Meyering
d7d13fa5c2 Add tsearch.o IFF we have to use the replacement ftw.c. 2003-01-15 21:11:27 +00:00
Jim Meyering
d24ceb3b32 Check for declaration of stpcpy. 2003-01-15 17:32:13 +00:00
Jim Meyering
a2c75df256 *** empty log message *** 2003-01-15 13:11:31 +00:00
Jim Meyering
a1850bde1a *** empty log message *** 2003-01-15 13:09:04 +00:00
Jim Meyering
0ba481441f (General output formatting): Reflect option name change:
s/--dereference-command-line/--dereference-command-line-symlink-to-dir/.
Say that this option changes how ls treats only symlinks to directories
specified on the command line.
2003-01-15 13:09:00 +00:00
Jim Meyering
23b5ef6146 *** empty log message *** 2003-01-15 12:24:54 +00:00
Jim Meyering
e1f1be8559 *** empty log message *** 2003-01-15 12:24:04 +00:00
Jim Meyering
3786638a49 *** empty log message *** 2003-01-15 12:23:34 +00:00
Jim Meyering
ea4d81f366 . 2003-01-15 12:14:38 +00:00
Jim Meyering
3e2ec9890b Require AC_FUNC_FTW. 2003-01-15 12:14:29 +00:00
Jim Meyering
ddd1b52c1c . 2003-01-15 12:13:34 +00:00
Jim Meyering
800f3a1e77 (gobble_file): Fall back on using lstat when required:
when --dereference (-L) is not specified, and
- when operating on a dangling symlink
- when operating on command-line-symlink-to-directories
This fixes numerous problems.  Here are examples:
- `ls dangling-symlink' would fail with `no such file...'
Now it prints `dangling-symlink'.
- `ls -i symlink' would mistakenly print the inode of the referent.
Now it prints the inode of the symlink.  Likewise for --size (-s).
Based on a patch from Michael Stone.
Reported by Deepak Goel as Debian bug #173793.
2003-01-15 11:59:07 +00:00
Jim Meyering
b1ebf2a383 *** empty log message *** 2003-01-15 11:58:26 +00:00
Jim Meyering
b6dcca8662 *** empty log message *** 2003-01-15 11:58:02 +00:00
Jim Meyering
c4abcd5882 *** empty log message *** 2003-01-15 11:32:59 +00:00
Jim Meyering
5c68fbd9a3 Rename ls's --dereference-command-line (-H)
option to   --dereference-command-line-symlink-to-dir.

[enum Dereference_symlink]
(DEREF_COMMAND_LINE_SYMLINK_TO_DIR): Rename from
DEREF_COMMAND_LINE_ARGUMENTS.  Update all uses.
(long_options): Rename the option.
(usage): Say that --dereference-... changes how ls treats
only symlinks to directories specified on the command line.
2003-01-15 11:32:47 +00:00
Jim Meyering
64a58d4cdd *** empty log message *** 2003-01-14 21:10:26 +00:00
Jim Meyering
78c9c2c7fa (TESTS): Add dangle and inode. 2003-01-14 21:10:12 +00:00
Jim Meyering
4d76e1e857 *** empty log message *** 2003-01-14 20:51:25 +00:00
Jim Meyering
a57532aeac remove diff's -u 2003-01-14 19:04:28 +00:00
Jim Meyering
fbc1a9a299 *** empty log message *** 2003-01-14 19:03:00 +00:00
Jim Meyering
c4384e7af5 *** empty log message *** 2003-01-14 16:23:03 +00:00
Jim Meyering
642bc1acfb (gobble_file): Fix a bug introduced in 4.5.4 that made it
so that ls --color would no longer highlight the names of files with
the execute bit set when not specified on the command line.
Patch by Michael Stone.  Reported by Stephen Depooter as
Debian bug 175135.
2003-01-14 16:22:55 +00:00
Jim Meyering
0c28dd9808 *** empty log message *** 2003-01-14 16:20:54 +00:00
Jim Meyering
caf5671edc factor a little 2003-01-14 16:19:09 +00:00
Jim Meyering
fb056f448a duh: close file handle 2003-01-14 15:50:18 +00:00
Jim Meyering
6c1ccdaf7f (color-exe): New test, for the above fix. 2003-01-14 15:38:23 +00:00
Jim Meyering
a5c0405752 fix typo in comment 2003-01-14 15:10:41 +00:00
Jim Meyering
0568a21a8d *** empty log message *** 2003-01-14 15:09:00 +00:00
Jim Meyering
cbe7e9daec (same_name): Declare *_basename locals to be `const'.
Consolidate declarations and initializations of *_base* locals.
2003-01-14 15:07:24 +00:00
Jim Meyering
ee45aa56cb *** empty log message *** 2003-01-14 14:44:33 +00:00
Jim Meyering
cbf24b40e3 (same_name): Reorder tests so as to avoid calling stat()
when a string comparison is sufficient.
2003-01-14 14:44:29 +00:00
Jim Meyering
72bca87dba *** empty log message *** 2003-01-14 14:15:44 +00:00
Jim Meyering
0e87cb139e (readtoken): Cast character to 'unsigned char', not 'unsigned int'. 2003-01-14 14:15:37 +00:00
Jim Meyering
ff0e20e30e *** empty log message *** 2003-01-14 12:58:27 +00:00
Jim Meyering
92602ead01 Merge in Ulrich's and my changes from libc. 2003-01-14 12:58:22 +00:00
Jim Meyering
7da8f5c488 *** empty log message *** 2003-01-13 15:33:43 +00:00
Jim Meyering
58c625df5d *** empty log message *** 2003-01-13 15:33:17 +00:00
Jim Meyering
12cb8887bc *** empty log message *** 2003-01-13 15:27:08 +00:00
Jim Meyering
495b91c2d1 *** empty log message *** 2003-01-13 13:44:14 +00:00
Jim Meyering
64977d2baa Also test for just fixed bug with --zero. 2003-01-13 13:44:11 +00:00
Jim Meyering
ebc3717c9d *** empty log message *** 2003-01-13 13:40:04 +00:00
Jim Meyering
cca0153946 *** empty log message *** 2003-01-13 13:39:44 +00:00
Jim Meyering
8355da5492 (long_opts): --zero does not require an argument.
Patch by Michael Stone.
2003-01-13 13:35:17 +00:00
Jim Meyering
01f012f2f5 *** empty log message *** 2003-01-12 18:29:54 +00:00
Jim Meyering
c5ee2230b0 *** empty log message *** 2003-01-12 18:29:32 +00:00
Jim Meyering
398ca04327 tweak comments 2003-01-12 18:16:31 +00:00
Jim Meyering
73bb03d0a6 *** empty log message *** 2003-01-12 18:03:52 +00:00
Jim Meyering
4e95cd2dff Also work on systems that have `struct direct', using autoconf's AC_HEADER_DIRENT. 2003-01-12 18:03:48 +00:00
Jim Meyering
67b5ecf8ab *** empty log message *** 2003-01-12 17:01:53 +00:00
Jim Meyering
376e889123 (ftw_startup): Rename local-shadowing local to pacify gcc. 2003-01-12 17:01:48 +00:00
Jim Meyering
cce1b15448 New file, from glibc/io. 2003-01-12 16:48:56 +00:00
Jim Meyering
0b6a1829be New file, from glibc/io. 2003-01-12 16:48:31 +00:00
Jim Meyering
d3b1d606c5 (libfetish_a_SOURCES): Add ftw.h. 2003-01-12 16:47:20 +00:00
Jim Meyering
b121bd6e31 exit nonzero for any failure 2003-01-12 13:18:16 +00:00
Jim Meyering
304728fb95 *** empty log message *** 2003-01-12 13:17:29 +00:00
Jim Meyering
9bb12a2a33 (cvs-update): Skip any file with local modifications. 2003-01-12 13:11:14 +00:00
Jim Meyering
b0312e15d4 *** empty log message *** 2003-01-12 11:52:38 +00:00
Jim Meyering
131a8fecb3 *** empty log message *** 2003-01-12 11:51:43 +00:00
Jim Meyering
65a9e6a065 Lots of syntactic clean-up, mostly from Karl Berry.
Use consistent indentation, two spaces per level.
(scriptversion): New variable.
Change initializations like `variable=""' to `variable='.
(usage): New variable.
Use `test', not `['.
Use `test -n "$var"', not `[ x"$var" = x ]'.
Use `test -z "$var"', not `[ x"$var" != x ]'.
Alphabetize case entries.
Accept --help and --version options.
Remove unnecessary `else :' clauses.
Add a `Local variables' eval block to help emacs users update
the time-stamp variable added above.
2003-01-12 11:51:36 +00:00
Jim Meyering
60ad866925 *** empty log message *** 2003-01-12 09:04:16 +00:00
Jim Meyering
932bf8f214 *** empty log message *** 2003-01-12 08:59:19 +00:00
Jim Meyering
42594a0e4a (usage): Document --first-only and mention that --tabs=N (-t) enables --all (-a). 2003-01-12 08:59:00 +00:00
Jim Meyering
079dc69267 (libfetish_a_SOURCES): Add canonicalize.h. 2003-01-12 08:57:11 +00:00
Jim Meyering
664a205be6 *** empty log message *** 2003-01-11 09:44:28 +00:00
Jim Meyering
b734cbf724 Don't test HAVE_ERRNO_H. It's not necessary. 2003-01-11 09:44:23 +00:00
Jim Meyering
7287520d21 *** empty log message *** 2003-01-11 09:43:50 +00:00
Jim Meyering
5e74b3cb3b *** empty log message *** 2003-01-11 09:39:45 +00:00
Jim Meyering
35d5499fca Include "canonicalize.h".
Use canonicalize_file_name unconditionally.
2003-01-11 09:39:40 +00:00
Jim Meyering
8a5ad5c78c *** empty log message *** 2003-01-11 09:37:31 +00:00
Jim Meyering
96a72cddd1 Require AC_FUNC_CANONICALIZE_FILE_NAME.
(jm_MACROS): No longer check for resolvepath or canonicalize_file_name.
2003-01-11 09:37:18 +00:00
Jim Meyering
a49cb29dc1 *** empty log message *** 2003-01-11 09:36:07 +00:00
Jim Meyering
23ad418ba6 add prereqs 2003-01-11 09:35:55 +00:00
Jim Meyering
5d33b7498f *** empty log message *** 2003-01-11 09:35:07 +00:00
Jim Meyering
c7463c38f8 Don't test HAVE_ERRNO_H. It's not necessary.
Don't test HAVE_STDDEF_H.  It's not necessary.
Use definition of PTR_INT_TYPE from obstack.h.
2003-01-11 09:32:48 +00:00
Jim Meyering
eb04d885c2 From Dmitry Levin. 2003-01-11 08:29:46 +00:00
Jim Meyering
c600ace840 (AC_FUNC_CANONICALIZE_FILE_NAME): New file and macro. 2003-01-11 08:16:56 +00:00
Jim Meyering
8920dfdb57 Require AC_FUNC_CANONICALIZE_FILE_NAME. 2003-01-11 08:16:46 +00:00
Jim Meyering
85bcabcba2 *** empty log message *** 2003-01-10 23:17:23 +00:00
Jim Meyering
52855f6e36 *** empty log message *** 2003-01-10 23:07:12 +00:00
Jim Meyering
b6c0821009 Don't include xalloc.h.
It's already included via system.h.
2003-01-10 23:07:04 +00:00
Jim Meyering
3bc2ea6982 *** empty log message *** 2003-01-10 23:03:18 +00:00
Jim Meyering
774f38050e Add src/readlink.c. 2003-01-10 23:03:13 +00:00
Jim Meyering
8ba73f51a0 *** empty log message *** 2003-01-10 22:55:49 +00:00
Jim Meyering
44b0813e1e Include "xgetcwd.h". 2003-01-10 22:55:33 +00:00
Jim Meyering
251cad0c9c *** empty log message *** 2003-01-10 22:48:28 +00:00
Jim Meyering
77f6ad8381 Include "xgetcwd.h". 2003-01-10 22:48:02 +00:00
Jim Meyering
76ee8c435c (libfetish_a_SOURCES): Add xgetcwd.h. 2003-01-10 22:47:38 +00:00
Jim Meyering
9805d6c5cc Remove uses of PARAMS. 2003-01-10 22:46:11 +00:00
Jim Meyering
784d409601 Include xgetcwd.h. 2003-01-10 22:45:14 +00:00
Jim Meyering
e690564cc9 *** empty log message *** 2003-01-10 22:32:08 +00:00
Jim Meyering
418e181ad8 Don't declare functions declared by xalloc.h.
Include "xalloc.h" instead.
2003-01-10 21:46:37 +00:00
Jim Meyering
4ac2ebda98 Don't declare directly functions declared by xalloc.h.
Include "xalloc.h" instead.
2003-01-10 21:45:21 +00:00
Jim Meyering
3242594f7b Don't declare directly functions declared by xalloc.h.
Include "xalloc.h" instead.
2003-01-10 21:44:56 +00:00
Jim Meyering
200a73de4f Don't declare xmalloc directly.
Include "xalloc.h" instead.
2003-01-10 21:38:20 +00:00
Jim Meyering
2e62c8ab03 . 2003-01-10 21:37:19 +00:00
Jim Meyering
8088407c6c . 2003-01-10 13:21:14 +00:00
Jim Meyering
3617805acb Remove declaration of xstrdup.
Instead, include "xalloc.h".
2003-01-10 08:41:28 +00:00
Jim Meyering
6f45173dec . 2003-01-09 20:59:09 +00:00
Jim Meyering
b1b0565faf Document readlink. 2003-01-09 20:53:40 +00:00
Jim Meyering
acd9f2ab3b copyright 2003-01-09 20:45:06 +00:00
Jim Meyering
3b3ff7872c *** empty log message *** 2003-01-09 20:43:05 +00:00
Jim Meyering
9681c225cb Include other part of Dmitry's patch.
(dist_man_MANS): Add readlink.1.
2003-01-09 20:42:33 +00:00
Jim Meyering
51accd1c5e *** empty log message *** 2003-01-09 20:39:43 +00:00
Jim Meyering
07a2a5a4be *** empty log message *** 2003-01-09 20:39:04 +00:00
Jim Meyering
30e7a37b70 Add readlink. 2003-01-09 20:38:48 +00:00
Jim Meyering
f3f599f657 Add readlink. 2003-01-09 20:37:41 +00:00
Jim Meyering
6b0465359f *** empty log message *** 2003-01-09 20:36:55 +00:00
Jim Meyering
229031ed3f (bin_PROGRAMS): Add readlink. 2003-01-09 20:36:37 +00:00
Jim Meyering
2ae02ab5b9 New program, by Dmitry V. Levin. 2003-01-09 20:35:13 +00:00
Jim Meyering
8ee5d881b1 (out-delim1, ..., out-delim5): Test new functionality. 2003-01-09 20:30:40 +00:00
Jim Meyering
322ee6e302 When selecting ranges of byte offsets (as opposed to ranges of fields)
and when --output-delimiter=STRING is specified, output STRING between
ranges of selected bytes.

(RANGE_START_SENTINEL): Define.
(output_delimiter_specified): New global.
(print_kth): Add parameter.  Adjust all callers.
(set_fields): Mark each range-start index with RANGE_START_SENTINEL.
(cut_bytes): When requested, output STRING between ranges of
selected bytes.
(main): Make a diagnostic a little clearer.
Based on a patch from Jan Nieuwenhuizen.
2003-01-09 20:16:58 +00:00
Jim Meyering
ba5be82b7e *** empty log message *** 2003-01-09 20:14:08 +00:00
Jim Meyering
a215ab54d3 *** empty log message *** 2003-01-09 19:30:28 +00:00
Jim Meyering
e66ab953ef (set_fields): Make code agree with comment:
Don't merge abutting ranges like 4- and 2-3.  This makes no
difference currently, but is required to support an upcoming change.
2003-01-09 19:30:22 +00:00
Jim Meyering
bc49481933 *** empty log message *** 2003-01-08 17:36:51 +00:00
Jim Meyering
8ca0769584 Undefine and define-away `const' after inclusion
of errno.h, not before.  Suggestion from Bruno Haible.
2003-01-08 17:36:35 +00:00
Jim Meyering
0f19450208 *** empty log message *** 2003-01-07 22:40:34 +00:00
Jim Meyering
0f076ebc12 *** empty log message *** 2003-01-07 17:12:16 +00:00
Jim Meyering
7d1c764098 (set_fields): Fix typo in comment. 2003-01-07 17:12:11 +00:00
Jim Meyering
d31fd7a77e tweak comment 2003-01-07 16:36:45 +00:00
Jim Meyering
1ef6e79882 add a comment 2003-01-07 16:06:56 +00:00
Jim Meyering
d14b4f476c *** empty log message *** 2003-01-07 15:59:48 +00:00
Jim Meyering
06ed252866 *** empty log message *** 2003-01-07 15:54:53 +00:00
Jim Meyering
819147ade4 (TESTS): Add not-owner. 2003-01-07 15:36:17 +00:00
Jim Meyering
6068858986 *** empty log message *** 2003-01-07 15:34:51 +00:00
Jim Meyering
6580a55aeb Remove the test for non-owner diagnostic.
Now, this tests only the nonexistent-directory diagnostic.
2003-01-07 15:34:34 +00:00
Jim Meyering
8586d4652e New test, mostly extracted from fail-diag. 2003-01-07 15:34:20 +00:00
Jim Meyering
0d07d1b2b7 *** empty log message *** 2003-01-07 14:44:54 +00:00
Jim Meyering
84cdbe6529 Fix typo: s/ld/ls/. 2003-01-07 14:44:45 +00:00
Jim Meyering
72d00a1c57 . 2003-01-07 14:12:30 +00:00
Jim Meyering
6a4d25740c tweak comment 2003-01-07 14:09:37 +00:00
Jim Meyering
fbb3b7b80c *** empty log message *** 2003-01-07 14:03:21 +00:00
Jim Meyering
e76d578bad Rework so that it may serve to define full_read, too. 2003-01-07 14:03:15 +00:00
Jim Meyering
0f0a65766e Simply #define FULL_READ and include full-write.c. 2003-01-07 14:03:05 +00:00
Jim Meyering
9d89ba4161 2002-12-10 Paul Eggert <eggert@twinsun.com>
Port exclude.c and exclude.h to more non-GNU systems, e.g. Solaris 7.

(FNM_CASEFOLD, FNM_LEADING_DIR): Define to 0 if not
defined (e.g., a pure POSIX system).
(EXCLUDE_macros_do_not_collide_with_FNM_macros): Use FNM_PATHNAME
instead of FNM_FILE_NAME, for compatibility with pure POSIX sytems.
2003-01-06 13:17:48 +00:00
Jim Meyering
783186bced 2002-12-10 Paul Eggert <eggert@twinsun.com>
Port exclude.c and exclude.h to more non-GNU systems, e.g. Solaris 7.

(EXCLUDE_ANCHORED, EXCLUDE_INCLUDE, EXCLUDE_WILDCARDS):
Choose values that are less likely to collide with system fnmatch
options.
2003-01-06 13:17:27 +00:00
Jim Meyering
cc334674f6 (libfetish_a_SOURCES): Add full-read.c and full-read.h. 2003-01-06 13:14:55 +00:00
Jim Meyering
685ac06eef . 2003-01-06 13:08:59 +00:00
Jim Meyering
dd02096234 Include full_read.h.
(get_fs_usage): Use full_read instead of safe_read.
2003-01-06 13:08:19 +00:00
Jim Meyering
a66b8da8d5 *** empty log message *** 2003-01-06 13:05:24 +00:00
Jim Meyering
b9ba08e368 (strdup): Remove unused declaration. 2003-01-06 13:04:50 +00:00
Jim Meyering
a7bed0741a (get_date): Test HAVE_STRUCT_TM_TM_ZONE, not HAVE_TM_ZONE. 2003-01-06 13:02:33 +00:00
Jim Meyering
d509325269 (utime_null): No need to call ftruncate if the file was
nonempty.  Patch by Bruno Haible.
(utime_null): Use SAFE_READ_ERROR.
2003-01-06 12:58:35 +00:00
Jim Meyering
e7ad638593 *** empty log message *** 2003-01-04 10:51:46 +00:00
Jim Meyering
7de3755878 Update copyright date. 2003-01-04 10:51:31 +00:00
Jim Meyering
79ea5a059c (TESTS): Add no-deref. 2003-01-04 10:46:56 +00:00
Jim Meyering
2076d0231d . 2003-01-04 10:45:42 +00:00
Jim Meyering
dc90551359 *** empty log message *** 2003-01-04 10:36:24 +00:00
Jim Meyering
7a1c2309c2 *** empty log message *** 2003-01-04 10:35:13 +00:00
Jim Meyering
a2b9cb05b7 Remove use of PARAMS. 2003-01-04 10:34:59 +00:00
Jim Meyering
a6b5021004 Remove use of PARAMS. 2003-01-04 10:33:01 +00:00
Jim Meyering
6df04c9288 Remove use of PARAMS. 2003-01-04 10:32:21 +00:00
Jim Meyering
83593d5f3a *** empty log message *** 2003-01-04 10:08:07 +00:00
Jim Meyering
8b6b22bcef rm could be tricked into mistakenly reporting a cycle.
* src/remove.c: [cycle_check_state]: New global.
(remove_cwd_entries): Adapt to new semantics of cycle_check.
(rm): Call cycle_check_init and cycle_check_free for each file.

When rm detects a cycle, don't abort the entire command,
but rather just the affected command line argument.
* src/remove.c: Include <setjmp.h>
(struct dirstack_state) [current_arg_jumpbuf]: New member.
(remove_cwd_entries): Call longjmp if we detect a cycle.
(rm): Call setjmp here.

* src/remove.c (cycle_check, is_power_of_two): Remove functions.
Instead, include cycle-check.h and use it.
2003-01-04 10:07:44 +00:00
Jim Meyering
e2b894c771 (struct dev_ino): Remove declaration. 2003-01-04 09:53:20 +00:00
Jim Meyering
a3e6d3aa63 Don't include trailing /. in diagnostics about directories.
(full_filename_): When FILENAME is just `.'
and there is a nonempty directory-name part, don't append `/.'.
2003-01-04 09:45:54 +00:00
Jim Meyering
b09da5c9d0 (remove_cwd_entries): Fix typos in comment. 2003-01-04 09:42:53 +00:00
Jim Meyering
2432611646 *** empty log message *** 2003-01-04 09:41:35 +00:00
Jim Meyering
818c25f686 (struct dirstack_state): Define.
To be used in place of these file-scoped globals ...
(dir_stack, len_stack, Active_dir): Remove globals.
(ds_init, ds_free): New functions.
(full_filename): Define.
(full_filename_): Rename from full_filename.



Begin to make AD_* functions more generic.

(AD_push_initial): Don't set status to RM_OK here.
(AD_push): Likewise.
(AD_INIT_OTHER_MEMBERS): Define.
(remove_dir): Define the `status' member manually after each
call to AD_push or AD_push_initial.
2003-01-04 09:41:24 +00:00
Jim Meyering
7e4c16df3d (TESTS): Add cycle. 2003-01-04 09:09:48 +00:00
Jim Meyering
c146a76b5d Remove trailing /. from diagnostic. 2003-01-04 09:03:45 +00:00
Jim Meyering
874f367c0a Enable this test -- now that we have the --presume-input-tty option. 2003-01-04 09:03:02 +00:00
Jim Meyering
432a5017a2 rm could be tricked into mistakenly reporting a cycle 2003-01-04 09:01:04 +00:00
Jim Meyering
5a0e8b1ab1 *** empty log message *** 2003-01-04 08:59:19 +00:00
Jim Meyering
10a0b7c14d (check-misc): New rule, to ensure that no more
S_IS* macro definitions sneak into the code.
(check): Depend on check-misc.
2003-01-04 08:59:15 +00:00
Jim Meyering
33ca4e1f5a [S_ISLNK, S_ISFIFO, S_ISSOCK]: Don't define.
They're already defined in sys2.h.
2003-01-04 08:58:12 +00:00
Jim Meyering
fd5d4e6d54 remove blank line 2003-01-04 08:55:30 +00:00
Jim Meyering
1cf764991f (count_entry) [S_ISLNK]: Don't define.
It's already defined in sys2.h.
2003-01-04 08:55:19 +00:00
Jim Meyering
a4efa35cd7 [S_ISLNK]: Don't define. It's already defined in sys2.h. 2003-01-04 08:44:11 +00:00
Jim Meyering
9434608b2b . 2003-01-04 08:42:26 +00:00
Jim Meyering
0bce0bb6f4 *** empty log message *** 2003-01-03 21:38:33 +00:00
Jim Meyering
08cf9aee8b Add copyright.
(AUTHORS): I suppose I've written it.
2003-01-03 21:38:27 +00:00
Jim Meyering
8256faecd8 *** empty log message *** 2003-01-03 21:34:16 +00:00
Jim Meyering
d45f740edc (false.c): Make the generated file be read-only. 2003-01-03 21:34:06 +00:00
Jim Meyering
8cce263649 . 2003-01-03 21:05:51 +00:00
Jim Meyering
d517c8fa79 (do_copy): Tweak diagnostic to be consistent with the one
from mv: s/missing file arguments/missing file argument/.
With --target-directory=DIR, cp and mv work with a single file argument.
Reported by Karl Berry.
2003-01-03 19:34:22 +00:00
Jim Meyering
820fd625f3 *** empty log message *** 2003-01-03 19:33:59 +00:00
Jim Meyering
1b6b9abd55 Include "dev-ino.h".
[struct dev_ino]: Remove declaration.
2003-01-03 19:33:52 +00:00
Jim Meyering
8e4c2127af *** empty log message *** 2003-01-03 19:31:10 +00:00
Jim Meyering
fe688e3d91 (libfetish_a_SOURCES): Add cycle-check.c, cycle-check.h, and dev-ino.h. 2003-01-03 19:31:01 +00:00
Jim Meyering
fab52f550d . 2003-01-03 19:30:29 +00:00
Jim Meyering
5ed7d34ed8 *** empty log message *** 2002-12-21 14:53:26 +00:00
Jim Meyering
e3c1118ce1 Generate MML-formatted announcement.
This makes it a *lot* harder to send stale MD5/SHA1 signatures.
2002-12-21 14:53:18 +00:00
Jim Meyering
317fa67e1e . 2002-12-21 14:50:45 +00:00
Jim Meyering
3156fcf62a *** empty log message *** 2002-12-21 14:42:02 +00:00
Jim Meyering
374d2948bc . 2002-12-21 14:41:58 +00:00
Jim Meyering
bb42dae7f2 *** empty log message *** 2002-12-20 20:10:59 +00:00
Jim Meyering
f331e1389c (touch): Change the wording of a diagnostic so
that it makes sense both when the file exists and when it doesn't.
2002-12-20 20:10:48 +00:00
Jim Meyering
5fcf19366e . 2002-12-19 20:30:39 +00:00
Jim Meyering
302165d602 (valid_options): Declare to be static. 2002-12-18 08:54:01 +00:00
Jim Meyering
7d29906690 . 2002-12-16 07:43:45 +00:00
Jim Meyering
4c14b0f08e . 2002-12-16 07:43:25 +00:00
Jim Meyering
63c56a6444 *** empty log message *** 2002-12-15 21:41:08 +00:00
Jim Meyering
dd2b357234 . 2002-12-15 21:40:56 +00:00
Jim Meyering
e7ff31d2ac Remove rules related to generating m4/jm-glibc-io.m4. 2002-12-15 21:40:30 +00:00
Jim Meyering
0a8353f85e *** empty log message *** 2002-12-15 21:39:41 +00:00
Jim Meyering
c7bc5000c9 Remove now-unused file. 2002-12-15 21:39:28 +00:00
Jim Meyering
a734df6426 (Makefile.am): Remove jm-glibc-io.m4 and jm-glibc-io.m4n. 2002-12-15 21:38:44 +00:00
Jim Meyering
97ce59e3bc (libfetish_a_SOURCES): Add strftime.h. 2002-12-15 21:33:42 +00:00
Jim Meyering
5da39e8d5c *** empty log message *** 2002-12-15 21:33:35 +00:00
Jim Meyering
470a990b59 New file, for declaration of nstrftime. 2002-12-15 21:33:29 +00:00
Jim Meyering
8aaa230726 *** empty log message *** 2002-12-15 20:55:20 +00:00
Jim Meyering
a05f170290 *** empty log message *** 2002-12-15 20:55:15 +00:00
Jim Meyering
85b26cb44d *** empty log message *** 2002-12-15 20:54:49 +00:00
Jim Meyering
a5f14f167e Remove all uses of `PARAMS'. 2002-12-15 20:54:29 +00:00
Jim Meyering
b7e390ca09 (PARAMS): Remove definition. 2002-12-15 20:53:36 +00:00
Jim Meyering
a6561c4753 (PARAMS): Remove definition. 2002-12-15 20:48:26 +00:00
Jim Meyering
a896d0a426 *** empty log message *** 2002-12-15 20:46:06 +00:00
Jim Meyering
eb4832a29c Remove declaration of nstrftime.
Include strftime.h instead.
2002-12-15 20:45:36 +00:00
Jim Meyering
576dca2909 . 2002-12-15 19:21:40 +00:00
Jim Meyering
60d48b0f32 *** empty log message *** 2002-12-15 08:40:42 +00:00
Jim Meyering
b647a582c0 *** empty log message *** 2002-12-15 07:43:12 +00:00
Jim Meyering
fda1cba3bf *** empty log message *** 2002-12-14 19:51:04 +00:00
Jim Meyering
e5855b15f1 ($(url_dir_list)): Use .../coreutils, not .../fetish. 2002-12-14 19:50:29 +00:00
Jim Meyering
3a0bfd5cda *** empty log message *** 2002-12-14 17:34:21 +00:00
Jim Meyering
ec2a27c16b [! HAVE_DECL_MEMRCHR]: Declare memrchr.
This is necessary at least for Irix6.5 when using c89.
Reported by Nelson Beebe.
2002-12-14 17:34:13 +00:00
Jim Meyering
80579847f4 *** empty log message *** 2002-12-14 17:21:32 +00:00
Jim Meyering
a50dbaf78c (TESTS): Add cat-tty-eof. 2002-12-14 17:21:25 +00:00
Jim Meyering
e4b01add78 *** empty log message *** 2002-12-14 17:21:04 +00:00
Jim Meyering
c5e036dcd4 test for a bug that appeared in cat from using a bad version of safe-read.c 2002-12-14 17:19:32 +00:00
Jim Meyering
5b372bd3cc *** empty log message *** 2002-12-14 16:29:11 +00:00
Jim Meyering
facdf8937d *** empty log message *** 2002-12-14 14:15:43 +00:00
Jim Meyering
6073421583 (usage): Specify how major and minor mode numbers are interpreted.
Remove now-redundant usage-specifying comment.
2002-12-14 14:15:38 +00:00
Jim Meyering
d09d7750ea *** empty log message *** 2002-12-14 14:14:25 +00:00
Jim Meyering
8ed95f0a9d *** empty log message *** 2002-12-14 13:31:05 +00:00
Jim Meyering
fcb430c20c *** empty log message *** 2002-12-14 13:27:59 +00:00
Jim Meyering
35ffb9714d (mknod invocation): Specify how major and minor mode numbers are interpreted. 2002-12-14 13:27:53 +00:00
Jim Meyering
98986162e7 bump to 4.5.5 2002-12-14 12:45:57 +00:00
Jim Meyering
0801186cb1 . 2002-12-13 22:34:11 +00:00
Jim Meyering
382b921d64 *** empty log message *** 2002-12-13 22:13:05 +00:00
Jim Meyering
6f8678a3ec *** empty log message *** 2002-12-13 22:11:32 +00:00
Jim Meyering
7d00f03b1f Allow for a directory of size `0'.
That happens at least on file systems of type tmpfs on linux-2.4.18.
2002-12-13 22:11:28 +00:00
Jim Meyering
1e966014d0 . 2002-12-13 21:03:55 +00:00
Jim Meyering
3a550fd99a . 2002-12-13 20:46:19 +00:00
Jim Meyering
e1ecc43b28 . 2002-12-13 20:25:24 +00:00
Jim Meyering
7861a52f98 remove Ascend::Init 2002-12-13 20:24:02 +00:00
Jim Meyering
93758bb4d9 (announcement): Invoke announce-gen. 2002-12-13 20:23:39 +00:00
Jim Meyering
3643096a84 (EXTRA_DIST): Add announce-gen. 2002-12-13 20:23:29 +00:00
Jim Meyering
1ac9a613b3 *** empty log message *** 2002-12-13 20:20:39 +00:00
Jim Meyering
db26c228ed . 2002-12-13 19:52:05 +00:00
Jim Meyering
d88598865b *** empty log message *** 2002-12-13 09:15:09 +00:00
Jim Meyering
edc5c8412f (TESTS): Add preserve-2. 2002-12-13 09:15:00 +00:00
Jim Meyering
22bf522917 New file/test, for latest fix. 2002-12-13 09:14:36 +00:00
Jim Meyering
1d6fcb7121 update 2002-12-13 09:07:38 +00:00
Jim Meyering
50547ce12d *** empty log message *** 2002-12-11 23:46:04 +00:00
Jim Meyering
7ba3e40970 Fix a bug whereby cp would fail to parse an option like
--preserve=mode,ownership.

(decode_preserve_arg): Advance `comma' to
point the character following the comma.
2002-12-11 23:44:23 +00:00
Jim Meyering
990f8082fd *** empty log message *** 2002-12-11 13:40:59 +00:00
Jim Meyering
a8bdf659cc . 2002-12-11 10:12:41 +00:00
Jim Meyering
f551da2212 *** empty log message *** 2002-12-11 10:01:00 +00:00
Jim Meyering
bd385df70a (NEED_PATHCONF_WRAPPER): Undefine before defining,
in case it's already defined.
2002-12-11 10:00:57 +00:00
Jim Meyering
b8b8ba810c . 2002-12-11 07:25:05 +00:00
Jim Meyering
5e71874cd7 *** empty log message *** 2002-12-11 07:21:46 +00:00
Jim Meyering
839df841d3 Sync from gnulib. 2002-12-11 07:21:42 +00:00
Jim Meyering
c15db5ab2a *** empty log message *** 2002-12-11 07:21:20 +00:00
Jim Meyering
6e04172718 Maintain this file manually rather than generating it.
Generating it caused too much trouble.  From gnulib.
2002-12-11 07:21:14 +00:00
Jim Meyering
8e5b4e9c2b update from gnulib 2002-12-09 10:30:01 +00:00
Jim Meyering
b16ec81def *** empty log message *** 2002-12-09 09:42:08 +00:00
Jim Meyering
294a26c23c Don't get a test failure if /no exists.
Instead, evoke a framework failure if /no-$$ exists.
2002-12-09 09:41:53 +00:00
Jim Meyering
833afe42f0 *** empty log message *** 2002-12-08 20:55:37 +00:00
Jim Meyering
8cf6e02841 *** empty log message *** 2002-12-08 20:55:02 +00:00
Jim Meyering
f2af80ecd0 *** empty log message *** 2002-12-08 20:51:59 +00:00
Jim Meyering
7b352458d0 (lstat) [! LSTAT_FOLLOWS_SLASHED_SYMLINK]:
Define to rpl_lstat, so that even on systems like Solaris 5.8,
du honors (per POSIX) the trailing slash on an argument referring
to a symlink-to-directory.
2002-12-08 20:51:55 +00:00
Jim Meyering
abf1b2450f *** empty log message *** 2002-12-06 15:42:31 +00:00
Jim Meyering
ccb20835c1 . 2002-12-06 15:42:12 +00:00
Jim Meyering
a461cf1008 add a FIXME comment 2002-12-06 15:38:34 +00:00
Jim Meyering
b48a49d0f7 *** empty log message *** 2002-12-06 15:38:26 +00:00
Jim Meyering
2eae3898bf *** empty log message *** 2002-12-06 14:28:02 +00:00
Jim Meyering
08301486f0 (TESTS): Add file-type. 2002-12-06 14:27:58 +00:00
Jim Meyering
0338d23883 from gnulib 2002-12-06 14:24:22 +00:00
Jim Meyering
ebb4bf20aa *** empty log message *** 2002-12-06 14:23:44 +00:00
Jim Meyering
fc670bfb38 *** empty log message *** 2002-12-06 14:16:13 +00:00
Jim Meyering
10fc9c5ee9 (gobble_file): Also stat the file if it's a
regular file and --indicator-style=classify (aka -F).
2002-12-06 14:16:09 +00:00
Jim Meyering
93968df340 *** empty log message *** 2002-12-06 13:47:50 +00:00
Jim Meyering
431c521fef A test to contrast ls -F and ls --indicator-style=file-type. 2002-12-06 13:47:40 +00:00
Jim Meyering
0d35ee704b Add copyright notice.
(libfetish_a_SOURCES): Add unlocked-io.h.
(BUILT_SOURCES, all-local): Remove unlocked-io.h.
(DISTCLEANFILES, io_functions): Remove macros.
(EXTRA_DIST): Remove gen_uio.
(unlocked-io.h): Remove rule.
2002-12-06 13:38:15 +00:00
Jim Meyering
6fe922b850 remove, now that unlocked-io.h is maintained manually 2002-12-06 13:37:49 +00:00
Jim Meyering
5d1b828601 *** empty log message *** 2002-12-06 13:37:15 +00:00
Jim Meyering
76fd0dbc45 New file, but with proper copyright notice and
attribution.  Note: this is *not* the same as the file in gnulib.
This uses #if HAVE_FUNC_UNLOCKED for each `FUNC', rather than
HAVE_DECL_FUNC_UNLOCKED.  This usage is consistent with the autoconf
macro in ../m4/jm-glibc-io.m4.  Modulo comments, this file still
contains exactly what was generated by gen-uio.
2002-12-06 13:37:11 +00:00
Jim Meyering
e84a62d126 . 2002-12-06 13:33:23 +00:00
Jim Meyering
b9e8939e0f *** empty log message *** 2002-12-06 08:33:28 +00:00
Jim Meyering
c8a0110617 this is the old, generated version 2002-12-06 08:28:58 +00:00
Jim Meyering
5327503574 *** empty log message *** 2002-12-06 08:23:55 +00:00
Jim Meyering
1252175d43 [defined emacs]: Include "lisp.h".
(xalloc_die) [defined emacs]: New macro.
(free) [defined emacs && defined EMACS_FREE]: Define to EMACS_FREE.
[! defined emacs]: Include <xalloc.h>.
(POINTER_TYPE) [!defined POINTER_TYPE]: New macro.
(pointer): Typedef to POINTER_TYPE *.
(malloc): Remove decl; we now always use xmalloc.
(alloca): Use old-style definition, since Emacs needs this.
Check for arithmetic overflow when computing combined size.
2002-12-06 08:23:28 +00:00
Jim Meyering
1e4ba6c553 update copyright from gnulib 2002-12-06 08:09:12 +00:00
Jim Meyering
663374c9b6 . 2002-12-06 07:36:39 +00:00
Jim Meyering
ada9db6db9 update comment 2002-12-04 19:33:57 +00:00
Jim Meyering
f0675b7477 *** empty log message *** 2002-12-04 19:29:46 +00:00
Jim Meyering
2a825723f1 whoops. Add -F 2002-12-04 19:28:22 +00:00
Jim Meyering
7c42947dc5 Make sure the symlink was created.
Richard Dawe reported that `ln -s link link' succeeds, but creates
no file on systems running some version of the DJGPP libc.
2002-12-04 19:23:33 +00:00
Jim Meyering
75a84d6f4a *** empty log message *** 2002-12-04 10:07:59 +00:00
Jim Meyering
08e032083c . 2002-12-04 08:59:41 +00:00
Jim Meyering
47d074ba3f Reflect the fact that stat.c and lstat.c are no longer generated.
(BUILT_SOURCES): Remove stat.c and lstat.c.
(DISTCLEANFILES): Likewise.
(EXTRA_DIST): Likewise.
(all_local): Don't depend on stat.c or lstat.c.
(stat.c, lstat.c): Remove rules.
(EXTRA_DIST): Remove xstat.in.
2002-12-04 08:59:13 +00:00
Jim Meyering
f2cb00a54a author hardly matters here :-) 2002-12-04 08:56:58 +00:00
Jim Meyering
16c87869c6 Simply #define LSTAT and include stat.c. 2002-12-04 08:55:54 +00:00
Jim Meyering
598a3babd5 Rework so that it may serve to define rpl_lstat, too. 2002-12-04 08:55:32 +00:00
Jim Meyering
962bfcd672 Remove file. Contents moved into stat.c. 2002-12-04 08:16:02 +00:00
Jim Meyering
4890f411f0 *** empty log message *** 2002-12-04 07:55:38 +00:00
Jim Meyering
c68d6cafca Simply #define SAFE_WRITE and include safe-read.c. 2002-12-04 07:51:45 +00:00
Jim Meyering
c0ff7df8cb Rework so that it may serve to define safe_write, too. 2002-12-04 07:50:55 +00:00
Jim Meyering
c5a4e28e9b . 2002-12-04 07:43:18 +00:00
Jim Meyering
a1f5754a17 New file, from which to generate safe-read.c and safe-write.c. 2002-12-03 18:30:29 +00:00
Jim Meyering
ef97c32946 s/const void */void const */ 2002-12-03 18:20:38 +00:00
Jim Meyering
7cec5a7e3c *** empty log message *** 2002-12-03 18:19:51 +00:00
Jim Meyering
3d81ed14e1 Update from gnulib (add comments, include stddef.h). 2002-12-03 18:19:45 +00:00
Jim Meyering
d4d54b4878 regenerate using automake-1.7.1b 2002-12-03 18:17:18 +00:00
Jim Meyering
c526cbabe0 no more ansi2nkr 2002-12-03 18:03:53 +00:00
Jim Meyering
7ae465f167 . 2002-12-03 17:50:46 +00:00
Jim Meyering
2e1a0e16ed *** empty log message *** 2002-12-03 17:36:34 +00:00
Jim Meyering
3fbff01425 (AUTOMAKE_OPTIONS): Remove definition (to ansi2knr)
since this package no longer panders to K&R compilers.
2002-12-03 17:36:26 +00:00
Jim Meyering
b3e08a0a69 tweak comment 2002-12-03 12:03:55 +00:00
Jim Meyering
01d5814091 tweak comment 2002-12-03 12:02:19 +00:00
Jim Meyering
90723c47a0 Add dummy stmt in `then' branch. 2002-12-03 09:50:16 +00:00
Jim Meyering
047c948de4 *** empty log message *** 2002-12-02 17:46:00 +00:00
Jim Meyering
a2ff596c1f Skip this test if `.' is on a non-local file system. 2002-12-02 17:45:54 +00:00
Jim Meyering
0d387e7ff2 *** empty log message *** 2002-12-02 17:28:21 +00:00
Jim Meyering
cba2225ce6 . 2002-12-02 09:31:04 +00:00
Jim Meyering
dadcc49a8e *** empty log message *** 2002-12-02 09:30:47 +00:00
Jim Meyering
19b3648d15 (_at_replace): Do the substitution only if there's something to replace. 2002-12-02 09:30:41 +00:00
Jim Meyering
7570cb86a6 (EINTR): Define.
(safe_read): Rewrite to loop IFF read fails with EINTR.
2002-12-02 08:11:45 +00:00
Jim Meyering
c9c5c4c3e1 *** empty log message *** 2002-12-01 17:04:49 +00:00
Jim Meyering
32b9f22700 (safe_read): Also exit the loop when read returns zero. 2002-12-01 17:04:35 +00:00
Jim Meyering
0937f50e9e comment tweak 2002-12-01 12:10:41 +00:00
Jim Meyering
3b6cb24f4b *** empty log message *** 2002-12-01 12:04:35 +00:00
Jim Meyering
b1cfe31057 (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_MAX): Define. 2002-12-01 12:04:17 +00:00
Jim Meyering
4c6c221ee2 Merge from gnulib. 2002-12-01 11:53:02 +00:00
Jim Meyering
ef266f5a81 from gnulib 2002-12-01 11:36:50 +00:00
Jim Meyering
68fd2c3b68 (libfetish_a_SOURCES): Add safe-write.c and safe-write.h. 2002-12-01 11:36:32 +00:00
Jim Meyering
e04f07c363 *** empty log message *** 2002-12-01 10:57:07 +00:00
Jim Meyering
7730fc35b7 Update from gnulib (trivial changes). 2002-12-01 10:56:47 +00:00
Jim Meyering
61bbb627cc Update from gnulib (trivial changes). 2002-12-01 10:54:01 +00:00
Jim Meyering
1ed5b3df2d Add Copyright comment. 2002-12-01 10:44:15 +00:00
Jim Meyering
3447cf0995 Add Copyright comment. 2002-12-01 10:43:35 +00:00
Jim Meyering
6cffb5b26e *** empty log message *** 2002-12-01 10:42:17 +00:00
Jim Meyering
c198111648 Update from gnulib (trivial changes). 2002-12-01 10:42:12 +00:00
Jim Meyering
422e4b4c3a *** empty log message *** 2002-12-01 10:41:22 +00:00
Jim Meyering
43aee8594d Update from gnulib (trivial changes). 2002-12-01 10:41:09 +00:00
Jim Meyering
3bd828af53 Update from gnulib (trivial changes). 2002-12-01 10:38:59 +00:00
Jim Meyering
440bb68abd *** empty log message *** 2002-12-01 10:37:02 +00:00
Jim Meyering
cffed30681 update from gnulib 2002-12-01 10:36:33 +00:00
Jim Meyering
d7f4b28a19 *** empty log message *** 2002-12-01 10:22:45 +00:00
Jim Meyering
fbb44634f7 *** empty log message *** 2002-12-01 10:20:24 +00:00
Jim Meyering
a372a5debe *** empty log message *** 2002-12-01 10:18:39 +00:00
Jim Meyering
f40bc170b0 Don't include <ctype.h>.
That's already done via system.h.
2002-12-01 10:18:34 +00:00
Jim Meyering
98ae1bbb58 *** empty log message *** 2002-12-01 10:15:32 +00:00
Jim Meyering
78f06398b8 *** empty log message *** 2002-12-01 09:58:26 +00:00
Jim Meyering
dcc3108267 *** empty log message *** 2002-12-01 09:57:39 +00:00
Jim Meyering
cb173ced29 Don't include <string.h> or <ctype.h>.
That's already done via system.h.
2002-12-01 09:49:01 +00:00
Jim Meyering
275bdd3966 update from master 2002-12-01 08:59:05 +00:00
Jim Meyering
067fc3f4ef *** empty log message *** 2002-12-01 08:57:31 +00:00
Jim Meyering
4966d758f2 ls is now more efficient: it no longer needs to stat each directory
entry on systems with valid dirent.d_type.

(print_dir): Add DT_LNK and DT_REG.
(main): Make --recursive set format_needs_type, not format_needs_stat.
(gobble_file): Remove a FIXME comment, now that this is fixed.
2002-12-01 08:57:26 +00:00
Jim Meyering
7274f62b83 (gobble_file): Remove the block of code that caused
`ls --color -F symlink-to-dir' to list the files in
`symlink-to-dir/.'.  Now, it prints `symlink-to-dir@',
(just like `ls -F symlink-to-dir') but with the addition
of highlighting.
2002-12-01 08:55:45 +00:00
Jim Meyering
d577b81792 add comment 2002-11-30 22:35:37 +00:00
Jim Meyering
6c1d1df92f (sl-F-color, sl-dF-color): New tests for the above. 2002-11-30 22:34:59 +00:00
Jim Meyering
ab1fbe7dda *** empty log message *** 2002-11-30 17:13:33 +00:00
Jim Meyering
42a42f7e4f *** empty log message *** 2002-11-30 16:34:20 +00:00
Jim Meyering
95cb2ed037 . 2002-11-30 16:17:29 +00:00
Jim Meyering
7f190fb12b *** empty log message *** 2002-11-28 09:48:47 +00:00
Jim Meyering
015aa7dfc4 Merge from gnulib/libc, for a slightly uglier solution. 2002-11-28 09:48:40 +00:00
Jim Meyering
80cff991e8 . 2002-11-28 09:38:06 +00:00
Jim Meyering
2dc7779bce (STATIC): Remvoe definitions. 2002-11-28 09:37:58 +00:00
Jim Meyering
8f5674daf9 Merge some more, in preparation for merge back into libc.
(_): Define only if not already defined.
Move definition to follow all #include directives.
Include unlocked-io.h only if !_LIBC.
2002-11-28 09:19:26 +00:00
Jim Meyering
bb07ab9b5c *** empty log message *** 2002-11-28 09:09:55 +00:00
Jim Meyering
d604ec9937 Merge in changes from libc.
[_LIBC]: Include <libio/libioP.h>.
[USE_IN_LIBIO]: Include <libio/iolibio.h>
(fflush): Tweak definition to use INTUSE.
(putc): Define.
2002-11-28 09:09:29 +00:00
Jim Meyering
e1938a7929 *** empty log message *** 2002-11-24 16:59:41 +00:00
Jim Meyering
d22a04e396 *** empty log message *** 2002-11-24 16:58:50 +00:00
Jim Meyering
8601971967 (TESTS): Add trailing-slash. 2002-11-24 16:53:59 +00:00
Jim Meyering
5857813649 *** empty log message *** 2002-11-24 16:53:06 +00:00
Jim Meyering
ce2fb08258 More clean-up, not that / means /. 2002-11-24 16:25:26 +00:00
Jim Meyering
4b8fa5d8ad (du_files): Don't strip any trailing slash.
Rewrite so that `/' is no longer represented internally as
the empty string.
(count_entry): When appending a file name component,
account for the fact that the current path may end in `/'.
Franois Pinard reported that `du symlink-to-dir/' was not
equivalent to `du symlink-to-dir/.'.  Now it is.
2002-11-24 16:12:52 +00:00
Jim Meyering
6f5375c038 *** empty log message *** 2002-11-24 16:12:28 +00:00
Jim Meyering
40d8af4244 *** empty log message *** 2002-11-24 16:03:14 +00:00
Jim Meyering
4d314289c3 Remove 2002 from copyright line,
to sync with gnulib.
2002-11-24 10:01:15 +00:00
Jim Meyering
c82be3d2ce . 2002-11-23 16:45:51 +00:00
Jim Meyering
5649aebdef (decode_switches): Use case-sensitive matching to
decode the QUOTING_STYLE environment variable.  This is more
consistent with the documentation, and with --quoting-style.
2002-11-23 16:43:49 +00:00
Jim Meyering
0c64e08266 *** empty log message *** 2002-11-23 16:28:52 +00:00
Jim Meyering
6533eac241 (output): Declare some local variables to be of type size_t,
rather than `int' to avoid warnings from gcc.
2002-11-23 16:28:44 +00:00
Jim Meyering
8442061b30 *** empty log message *** 2002-11-23 15:44:59 +00:00
Jim Meyering
f10340e27b Include gettext.h instead of <libintl.h>. 2002-11-23 15:44:51 +00:00
Jim Meyering
d6fac2ac6c *** empty log message *** 2002-11-23 15:44:07 +00:00
Jim Meyering
a14ac3568f Include gettext.h instead of <libintl.h>. 2002-11-23 15:44:01 +00:00
Jim Meyering
42cd3beba9 *** empty log message *** 2002-11-23 15:43:16 +00:00
Jim Meyering
5bd75e7682 Include gettext.h instead of <libintl.h>. 2002-11-23 15:43:13 +00:00
Jim Meyering
4372bf5619 Update from gnulib. 2002-11-23 15:42:11 +00:00
Jim Meyering
01ff25beb7 *** empty log message *** 2002-11-23 15:42:04 +00:00
Jim Meyering
4cab2486a5 *** empty log message *** 2002-11-23 15:40:44 +00:00
Jim Meyering
70212bf28b Include gettext.h instead of <libintl.h>. 2002-11-23 15:40:40 +00:00
Jim Meyering
cc7aeee22c *** empty log message *** 2002-11-23 15:38:47 +00:00
Jim Meyering
83415a7c5f Include gettext.h instead of <libintl.h>. 2002-11-23 15:38:42 +00:00
Jim Meyering
ac63441825 *** empty log message *** 2002-11-23 15:05:52 +00:00
Jim Meyering
ebd76c09f4 From gnulib, by Bruno Haible
Include gettext.h instead of <libintl.h>.
2002-11-23 15:05:32 +00:00
Jim Meyering
f1b9a8744c From gnulib, by Bruno Haible
* closeout.c: Include gettext.h instead of <libintl.h>.
2002-11-23 15:03:40 +00:00
Jim Meyering
98e5192525 . 2002-11-23 15:00:17 +00:00
Jim Meyering
ba986c2928 Update from gnulib. 2002-11-23 14:59:39 +00:00
Jim Meyering
34c25ed945 *** empty log message *** 2002-11-23 07:10:25 +00:00
Jim Meyering
08228013af Allow multiple inclusion by surrounding with
"#ifndef QUOTEARG_H_".  Include <stddef.h>, for size_t,
so that we can be included first.
(PARAMS): Remove; we now assume C89 or later.  All uses removed.
2002-11-23 07:10:19 +00:00
Jim Meyering
a328e26342 Include quotearg.h immediately after config.h.
No need to include stddef.h or sys/types.h any more.
Surround local include files with "", not "<>".
Assume HAVE_LIMITS_H unconditionally, as we assume C89.
Similarly, assume HAVE_C_BACKSLASH_A, CHAR_BIT, UCHAR_MAX, UINT_MAX,
HAVE_STDLIB_H, HAVE_STRING_H, STDC_HEADERS.
(HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
(mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.
(ISPRINT): Remove; no longer needed now that we assume C89.

(clone_quoting_options, quotearg_buffer, quotearg_n_options):
Preserve errno.

(quotearg_buffer_restyled, quotearg_n, quotearg_n_style,
quotearg_char): Use SIZE_MAX rather than
(size_t) -1 when we are talking about "infinity".

(quotearg_buffer_restyled): Fix bug when quoting trigraphs.
2002-11-23 07:08:50 +00:00
Jim Meyering
38ba9564d1 *** empty log message *** 2002-11-22 13:23:55 +00:00
Jim Meyering
17bbb9bcb1 From gnulib:
Don't include <sys/types.h>.  It's unnecessary.
2002-11-22 13:23:52 +00:00
Jim Meyering
d81d040dea fix typo in comment 2002-11-22 11:13:32 +00:00
Jim Meyering
8aa90d8488 *** empty log message *** 2002-11-22 11:07:31 +00:00
Jim Meyering
d60ce1ccab *** empty log message *** 2002-11-22 11:04:05 +00:00
Jim Meyering
3858ed5bad Remove case insensitive option matching.
(argcasematch): Remove declaration.
(ARGCASEMATCH): Remove macro.
(__xargmatch_internal): Remove case_sensitive argument.
(XARGMATCH): Update.
(XARGCASEMATCH): Remove macro.
2002-11-22 11:04:01 +00:00
Jim Meyering
13fb4290db Include gettext.h instead of <locale.h> and <libintl.h>.
Remove case insensitive option matching.
  (argmatch): Renamed from __argmatch_internal. Remove
  case_sensitive argument.
  (argcasematch): Remove function.
  (__xargmatch_internal): Remove case_sensitive argument.
  (main): Use XARGMATCH instead of XARGCASEMATCH.
2002-11-22 11:03:26 +00:00
Jim Meyering
4c9c50bf72 *** empty log message *** 2002-11-22 10:28:50 +00:00
Jim Meyering
70641e502d Change compile-time error message. Add comment about
required autoconf version.

Include gettext.h instead of <libintl.h>.
(textdomain): Remove definition.
2002-11-22 10:28:44 +00:00
Jim Meyering
cc92325877 *** empty log message *** 2002-11-21 19:17:26 +00:00
Jim Meyering
b2f999fdbb Add ms (Malay). 2002-11-21 19:17:22 +00:00
Jim Meyering
b3d845869a version: 4.5.3 2002-11-21 19:16:44 +00:00
Jim Meyering
d09524c338 *** empty log message *** 2002-11-21 13:31:07 +00:00
Jim Meyering
cae292f583 (strdup): Merge in changes from gnulib; mainly to
use memcpy rather than strcpy.
2002-11-21 13:31:03 +00:00
Jim Meyering
1a1ce790d8 *** empty log message *** 2002-11-21 13:25:31 +00:00
Jim Meyering
c8a8d77816 Update from gnulib. 2002-11-21 13:25:22 +00:00
Jim Meyering
944a426ade *** empty log message *** 2002-11-21 13:18:07 +00:00
Jim Meyering
44ad4f8ed4 (str2signum): Use unsigned, not size_t. 2002-11-21 13:17:47 +00:00
Jim Meyering
b38b96b80c *** empty log message *** 2002-11-21 13:16:49 +00:00
Jim Meyering
8281103ea4 Use "'s when including quotearg.h and xalloc.h, not the <...>' notation.
Include <errno.h> and declare errno if necessary.
2002-11-21 13:16:04 +00:00
Jim Meyering
145d77b61a *** empty log message *** 2002-11-21 12:22:56 +00:00
Jim Meyering
6c0efc5fa8 *** empty log message *** 2002-11-21 12:22:03 +00:00
Jim Meyering
e688809a5c stty doesn't support all baud rates available in current Linux kernels.
When trying to set a high baud rate using stty, it says "invalid
argument". When the high rate is already configured, "stty -a"
returns 0 instead of the true baud rate.

(struct speeds): Add support for all baud rates defined
in linux-2.4.19.
2002-11-21 12:21:55 +00:00
Jim Meyering
d80aa4a03f . 2002-11-21 10:56:27 +00:00
Jim Meyering
dcb7d1cee9 *** empty log message *** 2002-11-21 10:22:10 +00:00
Jim Meyering
cb83b79ab2 *** empty log message *** 2002-11-21 10:21:01 +00:00
Jim Meyering
91d98d2baf update copyright date 2002-11-21 09:39:58 +00:00
Jim Meyering
96a2f00434 *** empty log message *** 2002-11-21 09:36:25 +00:00
Jim Meyering
aca318c51e Merge argmatch cleanups from Bison. Assume C89.
Do not include <config.h> or <sys/types.h>.
Include <stddef.h> instead, since it's all we need for size_t.
(PARAMS): Remove.  All uses removed.
(ARRAY_CARDINALITY): Do not bother to #undef.
(ARRAY_CARDINALITY, ARGMATCH, ARGCASEMATCH, invalid_arg,
ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
Remove unnecessary parentheses.
(ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
Insert necessary parentheses.
(ARGMATCH_CONSTRAINT, ARGMATCH_VERIFY): New macros.
(ARGMATCH_ASSERT): Use ARGMATCH_CONSTRAINT.
2002-11-21 09:35:51 +00:00
Jim Meyering
3aed4c5505 Merge argmatch cleanups from Bison. Assume C89.
Include config.h here, not in argmatch.h.
Include stdlib.h, for EXIT_FAILURE.
Always include <string.h>, since we assume C89.
(EXIT_FAILURE): Remove pre-C89 bug workaround.
2002-11-21 09:24:43 +00:00
Jim Meyering
501358c106 *** empty log message *** 2002-11-21 08:48:08 +00:00
Jim Meyering
449872c53a (quotearg_buffer_restyled): If mbrtowc returns
`(size_t) -1' (at which point it would also set errno to EILSEQ),
then restore errno to its previous value.
Reported by Phillip Jones via Tim Waugh as
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=76334.
2002-11-21 08:47:44 +00:00
Jim Meyering
9e96a0b09c sort 2002-11-21 08:46:39 +00:00
Jim Meyering
c411cd6b01 *** empty log message *** 2002-11-21 08:45:10 +00:00
Jim Meyering
57263e2a95 Update from gnulib. 2002-11-21 08:45:05 +00:00
Jim Meyering
46d38d7c12 *** empty log message *** 2002-11-21 08:35:24 +00:00
Jim Meyering
6bc244f431 *** empty log message *** 2002-11-21 08:32:28 +00:00
Jim Meyering
cf9a5e9196 *** empty log message *** 2002-11-19 14:08:50 +00:00
Jim Meyering
39926c6c6e Export LC_ALL=C, to avoid failure when run in a UTF locale.
Report and suggested fix by Bruno Haible.
2002-11-19 14:08:45 +00:00
Jim Meyering
32872d2edf *** empty log message *** 2002-11-19 14:08:20 +00:00
Jim Meyering
d38c17cdbc Export LC_ALL=C, to avoid failure when run in a UTF locale.
Report and suggested fix by Bruno Haible.
2002-11-19 14:07:20 +00:00
Jim Meyering
6ba0925f2d *** empty log message *** 2002-11-19 10:15:25 +00:00
Jim Meyering
cbb48b90dd *** empty log message *** 2002-11-19 09:14:24 +00:00
Jim Meyering
6de64db890 Require Autoconf-2.56. 2002-11-19 09:14:18 +00:00
Jim Meyering
abd9a99711 *** empty log message *** 2002-11-19 08:05:34 +00:00
Jim Meyering
66943316b4 Avoid a link-time failure on some Linux systems.
(STATIC): Define to be empty (_LIBC) or `static' (otherwise).
(__mon_yday): Declare with the STATIC attribute.
(__mktime_internal): Likewise.
Based on a report from Greg Schafer.
2002-11-19 08:05:29 +00:00
Jim Meyering
7808c81c06 *** empty log message *** 2002-11-19 07:50:44 +00:00
Jim Meyering
8954b35cf0 . 2002-11-17 10:14:40 +00:00
Jim Meyering
2f2b29bf9a *** empty log message *** 2002-11-17 10:11:40 +00:00
Jim Meyering
ab79e3ad72 Update via autoupdate.
Add `AM_GNU_GETTEXT_VERSION(0.11.5)'.
2002-11-17 10:10:26 +00:00
Jim Meyering
0a5f591c89 *** empty log message *** 2002-11-17 09:59:34 +00:00
Jim Meyering
47161ee7d5 (movefile): Don't remove trailing slashes from SOURCE. 2002-11-17 09:41:34 +00:00
Jim Meyering
f5c148c983 *** empty log message *** 2002-11-17 09:36:43 +00:00
Jim Meyering
fda6e5a9a8 *** empty log message *** 2002-11-16 16:45:36 +00:00
Jim Meyering
428a02b86a Use AC_REQUIRE everywhere it is possible.
(jm_PREREQ_CANON_HOST): Remove duplicates.
2002-11-16 16:45:30 +00:00
Jim Meyering
f85ea30f21 *** empty log message *** 2002-11-15 21:02:16 +00:00
Jim Meyering
2aee9e8a9b (gnu_rel_host): Define.
(url_dir_list): Choose from (alpha|ftp).gnu.org depending
on whether $(VERSION) looks like a major release number.
2002-11-15 21:02:04 +00:00
Jim Meyering
c07eca7caa (mail_gpg_sign_cookie): Backslash-escape `#'.
(release): Rename from `alpha'.
(alpha): Depend on release.
2002-11-15 20:59:56 +00:00
Jim Meyering
086c161966 *** empty log message *** 2002-11-15 10:19:09 +00:00
Jim Meyering
4716e59ab4 (signatures): Define with ?=, so it's easy to override. 2002-11-15 10:19:02 +00:00
Jim Meyering
d421906870 . 2002-11-15 08:36:57 +00:00
Jim Meyering
fc152acf79 . 2002-11-15 08:19:10 +00:00
Jim Meyering
fcb6c411f0 *** empty log message *** 2002-11-14 14:38:23 +00:00
Jim Meyering
f9362b8897 Don't include libintl.h, and don't define `_' -- they're not used. 2002-11-14 14:38:03 +00:00
Jim Meyering
e946e96a84 update from master sources 2002-11-14 14:26:05 +00:00
Jim Meyering
c908728ac8 Remove lib/long-options.c and lib/same.c.
Although each defines `_', neither actually used it.
2002-11-14 12:46:17 +00:00
Jim Meyering
1f0ec2c2ad *** empty log message *** 2002-11-14 12:37:49 +00:00
Jim Meyering
d9b899db94 Duh. change use, too. 2002-11-14 12:37:27 +00:00
Jim Meyering
01606b7988 (mail_gpg_sign_cookie): Rename to use _'s, not -'s. 2002-11-14 12:32:57 +00:00
Jim Meyering
be7e030ca9 *** empty log message *** 2002-11-14 12:20:09 +00:00
Jim Meyering
500f37f119 (mail-gpg-sign-cookie): Make optional.
(announcement): Use the new variable.
2002-11-14 12:20:01 +00:00
Jim Meyering
8bbe97528d *** empty log message *** 2002-11-14 12:09:42 +00:00
Jim Meyering
f6af345922 Sync with Bison, i.e.:
(po-check): Scan .l and .y files instead of the
.c and the .h files that they generate.  This fixes the bug
reported by Tim Van Holder in:
<http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
Look for N_ as well as for _.  Try to avoid matching #define for
N_ and _.
From Paul Eggert.
2002-11-14 12:09:16 +00:00
Jim Meyering
c3d9348a86 *** empty log message *** 2002-11-13 09:50:22 +00:00
Jim Meyering
23b4046380 (Examples of expr): Remove bogus `^'s. 2002-11-13 09:50:16 +00:00
Jim Meyering
e08ebb3e61 *** empty log message *** 2002-11-13 09:49:41 +00:00
Jim Meyering
8bd460c1b7 *** empty log message *** 2002-11-12 08:31:16 +00:00
Jim Meyering
3048fb4d0f (HAVE_SYMLINKS): Remove unnecessary macro definition.
Replace sole use with equivalent `#ifdef S_ISLNK'.
Inconsistency reported by Dmitry V. Levin.
2002-11-12 08:31:05 +00:00
Jim Meyering
1cd5cc1b70 *** empty log message *** 2002-11-11 13:39:02 +00:00
Jim Meyering
e8f4c08e14 Ensure that `ls -dF --color symlink-to-dir' works properly. 2002-11-11 13:38:48 +00:00
Jim Meyering
f29777ab29 *** empty log message *** 2002-11-11 09:15:35 +00:00
Jim Meyering
f1bfccb00b *** empty log message *** 2002-11-11 09:15:08 +00:00
Jim Meyering
092a0520eb *** empty log message *** 2002-11-11 09:10:39 +00:00
Jim Meyering
864e2eb4e2 *** empty log message *** 2002-11-10 23:25:13 +00:00
Jim Meyering
f2308f74e8 (usage): Transform --help output via s/ - / /,
so that help2man produces properly formatted man pages.
2002-11-10 23:24:52 +00:00
Jim Meyering
9bec2462e8 *** empty log message *** 2002-11-10 20:15:59 +00:00
Jim Meyering
f549fc269c (sighandler): Handle SIGTSTP specially.
Based on suggestions from Solar Designer and Dmitry V. Levin.
Add comments.
2002-11-10 20:15:54 +00:00
Jim Meyering
7acacbf29a *** empty log message *** 2002-11-10 14:34:29 +00:00
Jim Meyering
8056e2607f (cvs_files): Define. From autoconf.
(local_updates): Likewise.
2002-11-10 14:34:23 +00:00
Jim Meyering
f740d054ae *** empty log message *** 2002-11-10 13:33:04 +00:00
Jim Meyering
99ad3e326a . 2002-11-10 11:12:13 +00:00
Jim Meyering
ecf915a6a4 *** empty log message *** 2002-11-10 11:11:39 +00:00
Jim Meyering
bb38561062 (restore_default_color_handler, sigtstp_handler): Remove functions.
(sighandler): New function, based on the one in sort.c.
(main): Use sigaction, if possible; otherwise signal.
Handle these signals:
SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM, SIGTSTP.
Don't register our handler if the signal is already being ignored.
2002-11-10 11:11:34 +00:00
Jim Meyering
20282f4992 (main): Also declare `i' to be unsigned, not int. 2002-11-10 10:23:41 +00:00
Jim Meyering
8988c3acb3 *** empty log message *** 2002-11-10 09:56:28 +00:00
Jim Meyering
a040c8e428 (sighandler): Use raise, rather than kill+getpid.
(main): Declare `nsigs' to be unsigned, not int.
2002-11-10 09:56:19 +00:00
Jim Meyering
faf852d2dd (interrupt_handler): Use raise, rather than kill+getpid. 2002-11-10 09:54:37 +00:00
Jim Meyering
2ebcd575a0 (interrupt_handler): Use raise, rather than kill+getpid. 2002-11-10 09:53:57 +00:00
Jim Meyering
34ed452d0a Use a return stmt. This isn't Perl. 2002-11-10 09:51:37 +00:00
Jim Meyering
a0a7aef8bd Duh. add missing semicolon
Include unistd.h.
2002-11-10 09:50:59 +00:00
Jim Meyering
f63f39031e *** empty log message *** 2002-11-10 09:46:14 +00:00
Jim Meyering
f84d927787 (jm_MACROS): Add AC_REPLACE_FUNCS(raise). 2002-11-10 09:46:10 +00:00
Jim Meyering
bd03362ebb *** empty log message *** 2002-11-10 09:44:05 +00:00
Jim Meyering
b52870d14f correct indentation 2002-11-09 22:36:58 +00:00
Jim Meyering
85490682b7 ls --color: restore terminal state (color) upon signal.
Include "full-write.h" and <signal.h>.
(restore_default_color, restore_default_color_handler): New functions.
(sigtstp_handler, put_indicator_direct): New functions.
(main) [print_with_color]: Register signal handlers.
Patch mostly by Solar Designer and Stanislav Ievlev.
2002-11-09 22:27:27 +00:00
Jim Meyering
cd0013e0ea *** empty log message *** 2002-11-09 22:21:31 +00:00
Jim Meyering
bb1c17a762 . 2002-11-09 22:01:56 +00:00
Jim Meyering
f559a4c800 (human_readable): Revamp to avoid warning about unused
variable 'amt'.  Unfortunately this means using some gotos.
2002-11-09 21:46:45 +00:00
Jim Meyering
2f1a2669e5 *** empty log message *** 2002-11-09 19:53:46 +00:00
Jim Meyering
440b2cb3f3 (What information is listed): Correct parts of --dired description.
Include a lot more description, with examples.
2002-11-09 19:53:25 +00:00
Jim Meyering
dfd742c6e1 *** empty log message *** 2002-11-09 16:40:00 +00:00
Jim Meyering
2ea36bfc5c (EXTRA_LOCALE_CATEGORIES): Add LC_TIME.
Patch by Tim Waugh for Red Hat bug #73669.
2002-11-09 16:39:53 +00:00
Jim Meyering
143ae88b8f *** empty log message *** 2002-11-09 12:39:42 +00:00
Jim Meyering
2a75a0092f Make it work even when names contain spaces or shell metachars.
Write diagnostics to stderr, not stdout.
Normalize spacing in diagnostics: use one space (not two, and not a TAB)
after the leading `install:'.
Add double quotes around `$src' here: $doit $instcmd "$src" "$dsttmp"
2002-11-09 12:39:34 +00:00
Jim Meyering
8ce53c2d14 Merge in some changes from the version in automake.
Remove unnecessary quotes around `case' argument.
Use `[ cond1 ] || [ cond2 ]' rather than `[ cond1 -o cond2 ]'.
Use `:' rather than `true'.
2002-11-09 12:34:27 +00:00
Jim Meyering
82bd49565b . 2002-11-09 11:36:51 +00:00
Jim Meyering
fd57b979a9 *** empty log message *** 2002-11-09 11:34:57 +00:00
Jim Meyering
aa43311efb Update from autoconf.
(AMTAR): Remove definition.
(update, cvs-update, po-update, do-po-update): New rules.
(wget-update): Update (thus renaming to cvs-update).
(automake_repo): Use anoncvs@sources.redhat.com.
2002-11-09 11:34:42 +00:00
Jim Meyering
371a455589 . 2002-11-09 00:34:25 +00:00
Jim Meyering
868a8152e3 *** empty log message *** 2002-11-09 00:30:37 +00:00
Jim Meyering
52b5ba1af5 (jm_FUNC_GETGROUPS):
Fix typo: cv_func_getgroups_works -> ac_cv_func_getgroups_works.
2002-11-09 00:30:33 +00:00
Jim Meyering
d84c4c3354 *** empty log message *** 2002-11-08 23:20:38 +00:00
Jim Meyering
e3d3dee1b6 *** empty log message *** 2002-11-08 22:59:57 +00:00
Jim Meyering
83a7b1049d (jm_PREREQ_HUMAN): Check for locale.h, localeconv,
AC_HEADER_STDBOOL.  No need to check for limits.h since it's in
freestanding C89.  No need to check for stdlib.h or string.h since
autoconf does this now.
2002-11-08 22:59:53 +00:00
Jim Meyering
5dd24d18e2 use only my permanent address 2002-11-08 17:13:51 +00:00
Jim Meyering
24ba72493d use only my permanent address 2002-11-08 17:12:51 +00:00
Jim Meyering
7695925177 Use only my permanent address. 2002-11-08 17:12:27 +00:00
Jim Meyering
7676cbc5ce *** empty log message *** 2002-11-08 15:33:58 +00:00
Jim Meyering
554ecec785 (human_readable): Avoid warnings from gcc -Wshadow. 2002-11-08 15:33:30 +00:00
Jim Meyering
2c3bb203cd (human_output_opts): New var.
(output_block_size): Now uintmax_t, not int, to handle larger
block sizes.  All uses changed.
2002-11-08 09:41:37 +00:00
Jim Meyering
95b50fa1ac (print_header): Use primitives from inttostr.h, not
human.h, to print large numbers simply.

(human_output_opts): New var.
(output_block_size): Now uintmax_t, not int, to handle larger
block sizes.  All uses changed.

(print_header): In the header line, prefer SI to human
representation if it's shorter; if neither is shorter, try to
intuit what the user would prefer.
2002-11-08 09:39:36 +00:00
Jim Meyering
98f748e64c update from master 2002-11-07 00:29:24 +00:00
Jim Meyering
bd89283b97 update from master 2002-11-07 00:28:52 +00:00
Jim Meyering
8fd93e0867 *** empty log message *** 2002-11-06 16:27:45 +00:00
Jim Meyering
fad42afa02 (automake_repo): Use anoncvs@subversions.gnu.org. 2002-11-06 16:27:39 +00:00
Jim Meyering
def6c2371e . 2002-11-06 11:37:47 +00:00
Jim Meyering
2fbdabd4b1 *** empty log message *** 2002-11-06 11:37:15 +00:00
Jim Meyering
a6bc63bae0 (EXTRA_DIST): Add inttostr.h. 2002-11-06 11:37:11 +00:00
Jim Meyering
106c3bf364 (print_long_format, print_file_name_and_frills):
Use primitives from inttostr.h, not
human.h, to print large numbers simply.

(human_output_opts): New var.
(output_block_size): Now uintmax_t, not int, to handle larger
block sizes.  All uses changed.

(file_output_block_size): New var, to distinguish
file sizes from other sizes.
(decode_switches): Set it.
2002-11-06 11:02:56 +00:00
Jim Meyering
1fc57fa80c *** empty log message *** 2002-11-06 10:37:29 +00:00
Jim Meyering
d2d118e8d7 (printf invocation): Fix typo in index: change \0x prefix to \x.
Change \xhhh to \xhh.
2002-11-06 10:37:24 +00:00
Jim Meyering
2017db1bbd *** empty log message *** 2002-11-06 10:32:46 +00:00
Jim Meyering
c6f5b4e383 Add support for locale-specific size indications (e.g.,
thousands-separators) and for explicit size suffixes on output.

(Block size): Say that:
This affects display format as well as block size.
Fractional block counts are rounded up.
ls file size blocksize defaults to 1.
A block size spec preceded by ' generates thousands separators.
A suffix without a preceding integer generates suffixes.
(tail invocation): 32k -> 32 KiB.
(What information is listed): ls -h is now equivalent to
ls --block-size=human, and ls -H is now equivalent to
ls --block-size=si.  Displayed file size is now always affected by
--block-size.
2002-11-06 10:32:41 +00:00
Jim Meyering
5ce09d1ac7 *** empty log message *** 2002-11-06 10:28:11 +00:00
Jim Meyering
59507dd554 (usage): Update description. 2002-11-06 10:28:02 +00:00
Jim Meyering
9c2be29be5 *** empty log message *** 2002-11-06 09:23:55 +00:00
Jim Meyering
76e1efd955 (TESTS): Add printf-hex. 2002-11-06 09:23:50 +00:00
Jim Meyering
2929e95fb7 *** empty log message *** 2002-11-06 09:23:33 +00:00
Jim Meyering
eff5b46e0c Be careful to test the code in this package, not the shell built-in function. 2002-11-06 09:23:23 +00:00
Jim Meyering
fc34d6284c *** empty log message *** 2002-11-06 09:21:59 +00:00
Jim Meyering
b68401890d Make sure that only two of the `H's in \xHHH are consumed
as part of the \x escape sequence.
2002-11-06 09:19:50 +00:00
Jim Meyering
0a5d4112ba (print_esc): Hexadecimal \xhh escapes may have
at most two hex. digits, not three.
2002-11-06 09:04:50 +00:00
Jim Meyering
1f5b482124 (inttostr): Remove; use new imaxtostr library function instead. 2002-11-05 20:37:20 +00:00
Jim Meyering
c7a6c9af8b (checkfp): Use primitives from inttostr.h, not human.h,
to print large numbers simply.
2002-11-05 20:34:00 +00:00
Jim Meyering
49cfd5a52c (bsd_sum_file, sysv_sym_file):
Use primitives from inttostr.h, not human.h, to print large numbers simply.
2002-11-05 20:33:35 +00:00
Jim Meyering
371e50492e (xlseek):
Use primitives from inttostr.h, not human.h, to print large numbers simply.
2002-11-05 20:32:55 +00:00
Jim Meyering
4c16b8d35a (write_counts, wc):
Use primitives from inttostr.h, not human.h, to print large numbers simply.
2002-11-05 20:30:43 +00:00
Jim Meyering
f3fc3d4726 (dopass):
Use primitives from inttostr.h, not human.h, to print large numbers simply.

(OUTPUT_BLOCK_SIZE): remove.
(dopass): When printing progress, use floor for what has been done
so far (since we should be conservative there), and ceiling for
what needs to be done (since that's what other programs use).
2002-11-05 20:28:36 +00:00
Jim Meyering
3f2cc46da4 (print_factors):
Use primitives from inttostr.h, not human.h, to print large numbers simply.
2002-11-05 20:17:28 +00:00
Jim Meyering
5526f4f208 (print_stats, main):
Use primitives from inttostr.h, not human.h, to print large numbers simply.
2002-11-05 20:16:31 +00:00
Jim Meyering
1e583af98a (handle_line_error, parse_patterns):
Use primitives from inttostr.h, not human.h, to print large numbers simply.
2002-11-05 20:14:41 +00:00
Jim Meyering
a591db7465 (cksum): Use primitives from inttostr.h, not
human.h, to print large numbers simply.
2002-11-05 17:22:55 +00:00
Jim Meyering
adaa25e292 *** empty log message *** 2002-10-19 16:34:37 +00:00
Jim Meyering
917181c1a9 (cwrite): Change type of `bytes' parameter to size_t
Remove now-useless cast.
(stdread): Remove function.
(bytes_split): Use size_t instead of int.
Use safe_read, not stdread.
(lines_split): Likewise.
Use memchr rather than a `while' loop.
(line_bytes_split): Use size_t instead of int.
Use safe_read, not stdread.
(main): Add some FIXME comments to remind me to remove casts.
2002-10-19 16:34:25 +00:00
Jim Meyering
d3f010cb21 *** empty log message *** 2002-10-19 13:49:38 +00:00
Jim Meyering
dce67bd261 Rewrite to support locale-specific
notations like thousands separators.
Specify what includer of include.h must include beforehand.
(human_group_digits, human_suppress_point_zero, human_autoscale,
human_base_1024, human_SI, human_B): New enum values.
(human_readable): Rename from human_readable_inexact; put the
options before the sizes.  All uses changed.  The old human_readable
function has been removed; use inttostr.h instead.
(human_options): Renamed from human_block_size, with new signature
that allows block sizes up to UINTMAX_MAX.  All callers changed.
2002-10-19 13:48:04 +00:00
Jim Meyering
4774c63a5e *** empty log message *** 2002-10-19 12:55:11 +00:00
Jim Meyering
f02ba67bbb *** empty log message *** 2002-10-19 12:54:29 +00:00
Jim Meyering
a967adb215 (libfetish_a_SOURCES): Add imaxtostr.c, offtostr.c, umaxtostr.c.
(EXTRA_DIST): Add inttostr.c.
2002-10-19 12:54:23 +00:00
Jim Meyering
927bbc5cc3 New files. From GNU tar. 2002-10-19 12:34:03 +00:00
Jim Meyering
8d30090e2e *** empty log message *** 2002-10-19 07:58:09 +00:00
Jim Meyering
aeaaa9fda5 *** empty log message *** 2002-10-19 07:57:08 +00:00
Jim Meyering
2e0798f483 (print_heading): Align TTY and Name headings. 2002-10-19 07:55:15 +00:00
Jim Meyering
82d3409e3d *** empty log message *** 2002-10-18 06:49:24 +00:00
Jim Meyering
76cc19f679 (ST_BLKSIZE): Correct comment describing how to
reproduce HPUX-11 cat failure.
2002-10-18 06:49:15 +00:00
Jim Meyering
9bcacfa997 *** empty log message *** 2002-10-17 15:08:19 +00:00
Jim Meyering
73d9218bf6 *** empty log message *** 2002-10-17 15:07:47 +00:00
Jim Meyering
f72568f82c Fix a problem that could make cat misbehave on systems which
give invalid (unreasonably large) values for stat.st_blksize.
(ST_BLKSIZE): Ensure that the result is in [1..4MB].
2002-10-17 15:06:36 +00:00
Jim Meyering
8c7071d857 bump to 4.5.4 2002-10-15 14:24:48 +00:00
Jim Meyering
3540f1880d *** empty log message *** 2002-10-14 08:30:56 +00:00
Jim Meyering
254fcd14bf . 2002-10-14 08:30:22 +00:00
Jim Meyering
07c1a593ca *** empty log message *** 2002-10-14 08:29:50 +00:00
Jim Meyering
bad450db5d Specifying a printf conversion specifer as nl's separator string
could cause nl to segfault.

(build_print_fmt): Don't include separator string
in the printf format; it might contain `%'.
Use a better bound on the length of the print_fmt buffer.
(print_lineno): Print the separator here instead.
2002-10-14 08:29:41 +00:00
Jim Meyering
8c11ff93d8 *** empty log message *** 2002-10-14 08:29:22 +00:00
Jim Meyering
3634113f29 *** empty log message *** 2002-10-14 08:29:17 +00:00
Jim Meyering
79adfda48d (TESTS): Add nl. 2002-10-14 08:19:31 +00:00
Jim Meyering
7535f31db9 *** empty log message *** 2002-10-14 08:19:13 +00:00
Jim Meyering
6f44f9b2b5 *** empty log message *** 2002-10-13 22:11:44 +00:00
Jim Meyering
614bd059e8 New test, to make sure `split --lines=N' works. 2002-10-13 22:11:13 +00:00
Jim Meyering
ee801b3ccc *** empty log message *** 2002-10-13 22:10:58 +00:00
Jim Meyering
38e6669301 (TESTS): Add split-l. 2002-10-13 22:10:20 +00:00
Jim Meyering
ca0f646758 *** empty log message *** 2002-10-13 20:01:59 +00:00
Jim Meyering
3907226aa1 . 2002-10-13 18:30:13 +00:00
Jim Meyering
5ed1f9d1b1 . 2002-10-13 17:38:42 +00:00
Jim Meyering
f92f1a29c0 *** empty log message *** 2002-10-13 14:02:50 +00:00
Jim Meyering
5955869435 (usage): Tweak description of --dereference-args/-D. 2002-10-13 14:02:42 +00:00
Jim Meyering
c9c00c8bec *** empty log message *** 2002-10-13 14:01:59 +00:00
Jim Meyering
e408ac408c (count_entry): Also save cwd when dereferencing (via --dereference-args, -D)
a command-line argument.
Reported by Michal Svec.  Based on a patch by Andreas Schwab.
2002-10-13 13:59:25 +00:00
Jim Meyering
6dafd5b2fc whoops 2002-10-13 13:33:05 +00:00
Jim Meyering
25797575f8 *** empty log message *** 2002-10-13 12:23:29 +00:00
Jim Meyering
ff4e2725a7 (initialized): Remove declaration now that it's unused. 2002-10-13 12:23:25 +00:00
Jim Meyering
bd9e754992 There's no need to futz with the rounding mode,
since the code should work properly even in the default rounding mode.
(<fenv.h>): Do not include.
(#pragma STDC FENV_ACCESS ON): Remove.
(xnanosleep): Don't futz with rounding state.
2002-10-13 12:22:26 +00:00
Jim Meyering
5b87a60663 *** empty log message *** 2002-10-13 12:20:44 +00:00
Jim Meyering
29a1a5e5d4 (jm_CHECK_ALL_HEADERS): Remove fenv.h. 2002-10-13 12:20:35 +00:00
Jim Meyering
475f183eab update comment 2002-10-13 06:50:11 +00:00
Jim Meyering
797d72c3cc (../AUTHORS): Make it read-only. 2002-10-13 06:48:42 +00:00
Jim Meyering
331dd19c54 . 2002-10-13 06:47:23 +00:00
Jim Meyering
2f4402aa58 *** empty log message *** 2002-10-13 06:47:13 +00:00
Jim Meyering
380f554a46 (../AUTHORS): New target/rule. 2002-10-13 06:47:07 +00:00
Jim Meyering
c19c8b5952 . 2002-10-13 06:04:38 +00:00
Jim Meyering
1b9984330e *** empty log message *** 2002-10-13 06:04:27 +00:00
Jim Meyering
f175e3efc2 (paste_parallel): Declare local var, `delims_saved', to be
of type size_t, since that's the way it's used and avoids a warning.
2002-10-12 10:19:17 +00:00
Jim Meyering
b7fbfec375 (struct cstring) [len]: Declare to be unsigned int,
since that's how it's always used and avoids a new warning from gcc.
(read_input): Adapt to new safe_read ABI.
2002-10-12 09:44:06 +00:00
Jim Meyering
0b7a5a2391 (cut_fields): Add a temporary size_t variable, n_bytes, to avoid warnings. 2002-10-12 09:40:02 +00:00
Jim Meyering
707f8bfa62 (print_long_entry): fread returns size_t.
Declare local `bytes' accordingly, to avoid warning.
2002-10-12 09:33:34 +00:00
Jim Meyering
81817a30ea *** empty log message *** 2002-10-12 08:42:38 +00:00
Jim Meyering
38a8810cd3 *** empty log message *** 2002-10-12 08:39:34 +00:00
Jim Meyering
0ddadb6245 tail -c +N would perform an extra read after encountering EOF
[this change is analogous (bytes vs. lines) to the one of 2002-01-27]

(start_bytes): Detect EOF, inform caller.
(tail_bytes): Upon EOF in start_bytes, return immediately.
(file_lines): Reorganize to use memrchr rather than an explicit loop.
Adapt to new safe_read ABI.
2002-10-12 08:39:12 +00:00
Jim Meyering
fb8af4b59f *** empty log message *** 2002-10-11 20:03:44 +00:00
Jim Meyering
818addef64 *** empty log message *** 2002-10-11 20:02:21 +00:00
Jim Meyering
08886ecd26 (TESTS): Add deref. 2002-10-11 19:59:31 +00:00
Jim Meyering
480a562b21 *** empty log message *** 2002-10-11 19:58:32 +00:00
Jim Meyering
5a56be1388 *** empty log message *** 2002-10-11 19:56:56 +00:00
Jim Meyering
2ad8545649 *** empty log message *** 2002-10-10 15:48:53 +00:00
Jim Meyering
91762c16a0 *** empty log message *** 2002-10-10 08:32:43 +00:00
Jim Meyering
6fb9a86b51 *** empty log message *** 2002-10-10 08:32:14 +00:00
Jim Meyering
b468370388 New file/test, for the fix on 2002-10-08. 2002-10-10 08:31:29 +00:00
Jim Meyering
042b41c2b9 (TESTS): Add target-1. 2002-10-10 08:31:02 +00:00
Jim Meyering
64044efd7c *** empty log message *** 2002-10-10 07:57:35 +00:00
Jim Meyering
617c5a571a . 2002-10-10 07:27:18 +00:00
Jim Meyering
e995dcb2d5 (wc): Adapt to new safe_read ABI. 2002-10-09 15:07:52 +00:00
Jim Meyering
7db0a34488 *** empty log message *** 2002-10-09 13:28:55 +00:00
Jim Meyering
97cd9f1149 *** empty log message *** 2002-10-09 08:10:03 +00:00
Jim Meyering
d57998f128 Ensure that certain environment variables
are not set (e.g., SIMPLA_BACKUP_SUFFIX).
2002-10-09 08:09:57 +00:00
Jim Meyering
ad9f3ac0a9 *** empty log message *** 2002-10-09 08:09:35 +00:00
Jim Meyering
932a05f006 *** empty log message *** 2002-10-09 07:28:19 +00:00
Jim Meyering
70869c09b8 Mark this as an expensive test; it would
consume 4GB of disk space on systems without support for sparse files.
Fix a logic error that'd make it `cat err' even though dd didn't fail.
2002-10-09 07:28:11 +00:00
Jim Meyering
9a7b64e701 *** empty log message *** 2002-10-09 07:16:17 +00:00
Jim Meyering
c9f88f349a (.jar): Fix typo: s/01;3/01;31/. 2002-10-09 07:11:44 +00:00
Jim Meyering
2cef2b3122 *** empty log message *** 2002-10-09 07:00:27 +00:00
Jim Meyering
3a4fbcd12b Ensure that ls produces English messages. 2002-10-09 07:00:14 +00:00
Jim Meyering
d928b833e3 *** empty log message *** 2002-10-09 06:59:54 +00:00
Jim Meyering
a83991f50b *** empty log message *** 2002-10-08 14:26:19 +00:00
Jim Meyering
1d2876761d (main): Fix target_directory parsing when n_files == 1.
Patch by Dmitry V. Levin.
2002-10-08 14:25:49 +00:00
Jim Meyering
a890541a5d Fix syntax in test: use =, not ==. 2002-10-08 09:25:34 +00:00
Jim Meyering
718b928df1 *** empty log message *** 2002-10-08 09:22:25 +00:00
Jim Meyering
fb763e4f7a Use double quotes around diagnostic. 2002-10-08 09:21:08 +00:00
Jim Meyering
f3584c5e62 Use double quotes around diagnostic. 2002-10-08 09:18:12 +00:00
Jim Meyering
b3a42e44e9 (save_stdin, tac_stdin_to_mem): Adapt to new safe_read ABI. 2002-10-08 07:20:28 +00:00
Jim Meyering
ffd20427d8 Rename local variable: chars_read -> bytes_read 2002-10-08 07:14:48 +00:00
Jim Meyering
c52b7838fa (squeeze_filter, read_and_delete, read_and_xlate): Adapt to new safe_read ABI. 2002-10-08 07:13:56 +00:00
Jim Meyering
b82563de58 (sysv_sum_file): Adapt to new safe_read ABI. 2002-10-08 07:11:03 +00:00
Jim Meyering
f99306fcd5 *** empty log message *** 2002-10-08 06:21:55 +00:00
Jim Meyering
5f4fb36645 (cat): Don't advance the write pointer past the end of the write buffer. 2002-10-08 06:21:31 +00:00
Jim Meyering
7a58f340c1 (begfield, limfield): Don't advance the write pointer past the
end of the write buffer.
2002-10-08 06:19:00 +00:00
Jim Meyering
ea544336d7 (head_bytes, head_lines): Adapt to new safe_read ABI. 2002-10-07 05:13:59 +00:00
Jim Meyering
a05880e42b *** empty log message *** 2002-10-07 05:13:34 +00:00
Jim Meyering
647b737648 (scanargs): Ensure that specified block sizes (specified
via ibs=N, obs=N, and bs=N) are no larger than SSIZE_MAX.
(skip, dd_copy): Adapt to new safe_read ABI.
2002-10-06 16:17:56 +00:00
Jim Meyering
00ebca59b7 (simple_cat, cat): Adapt to new safe_read ABI. 2002-10-06 15:48:49 +00:00
Jim Meyering
f99d9f8109 *** empty log message *** 2002-10-06 14:55:17 +00:00
Jim Meyering
926546dcac Update prototype.
(SAFE_READ_ERROR): Define.
2002-10-06 14:55:12 +00:00
Jim Meyering
e70e42fa66 (safe_read): Change type of function from ssize_t to size_t. 2002-10-06 14:55:01 +00:00
Jim Meyering
4ee1570593 *** empty log message *** 2002-10-06 06:44:50 +00:00
Jim Meyering
cd6593abaf (signatures): Define.
(%.sig): New rule.
(announcement): Depend on $(signatures).
2002-10-06 06:44:43 +00:00
Jim Meyering
7ec9bab074 *** empty log message *** 2002-10-06 06:34:55 +00:00
Jim Meyering
17c175eb48 bump to 4.5.3 2002-10-06 06:34:45 +00:00
Jim Meyering
76e102fa20 *** empty log message *** 2002-10-06 06:12:27 +00:00
Jim Meyering
667c11d2dc (announcement): Output all URLs for detached
signatures, not just the last one from the previous loop.
2002-10-06 06:12:12 +00:00
Jim Meyering
cf00c95789 . 2002-10-05 20:12:57 +00:00
Jim Meyering
a5761a4adb . 2002-10-05 19:57:30 +00:00
Jim Meyering
017c2208e2 . 2002-10-05 19:56:44 +00:00
Jim Meyering
fb918bedbf (TESTS): Add i-no-r. 2002-10-05 19:56:34 +00:00
Jim Meyering
702a18d659 *** empty log message *** 2002-10-05 19:56:00 +00:00
Jim Meyering
0bd10f3b8b *** empty log message *** 2002-10-05 19:55:19 +00:00
Jim Meyering
d0d7266488 (remove_entry) [ROOT_CAN_UNLINK_DIRS]: With `rm -i DIR',
don't recurse into directory, DIR.
2002-10-05 19:54:25 +00:00
Jim Meyering
1f4be66913 *** empty log message *** 2002-10-05 19:21:33 +00:00
Jim Meyering
931e5aef07 *** empty log message *** 2002-10-05 19:17:57 +00:00
Jim Meyering
7a45935962 *** empty log message *** 2002-10-05 19:17:05 +00:00
Jim Meyering
c1a20dc27b *** empty log message *** 2002-10-05 19:16:00 +00:00
Jim Meyering
55c73b9516 . 2002-10-05 17:02:43 +00:00
Jim Meyering
f540cf3789 *** empty log message *** 2002-10-05 08:30:07 +00:00
Jim Meyering
e3d5348851 save dd's stderr, and output it if dd fails 2002-10-05 08:29:21 +00:00
Jim Meyering
ae48cdae26 redirect dd's stderr 2002-10-05 08:27:45 +00:00
Jim Meyering
6a9dc978f9 (TESTS): Add big-4gb. 2002-10-05 08:26:42 +00:00
Jim Meyering
c5549236da *** empty log message *** 2002-10-05 08:26:35 +00:00
Jim Meyering
215f635780 add a comment 2002-10-04 11:25:09 +00:00
Jim Meyering
314c0eaa97 Undo last change.
Instead, run du only on the symlinks that were successfully created.
2002-10-04 11:24:12 +00:00
Jim Meyering
4adcccbf48 Redirect errors (e.g. missing file) to /dev/null. 2002-10-04 11:19:22 +00:00
Jim Meyering
c19dbea39c *** empty log message *** 2002-10-03 09:32:14 +00:00
Jim Meyering
4a6814ada7 Mark translatable string with `N_ (...)'. 2002-10-03 09:31:12 +00:00
Jim Meyering
f91c0597b1 (AUTHORS): Mark translatable string with `N_ (...)'. 2002-10-03 09:28:02 +00:00
Jim Meyering
8ddf1353cc *** empty log message *** 2002-10-02 06:51:13 +00:00
Jim Meyering
b382c38eb1 (AC_CONFIG_FILES): Remove old/* names. 2002-10-02 06:50:57 +00:00
Jim Meyering
42a19757ae update from master 2002-10-02 06:50:19 +00:00
Jim Meyering
0c0586bb2e *** empty log message *** 2002-10-02 06:41:07 +00:00
Jim Meyering
dd356beb0a (SUBDIRS): Remove `old'.
(EXTRA_DIST): List the files in old/.
2002-10-02 06:40:46 +00:00
Jim Meyering
ba13d22e09 *** empty log message *** 2002-10-01 11:43:19 +00:00
Jim Meyering
1512315121 *** empty log message *** 2002-10-01 07:58:20 +00:00
Jim Meyering
ce221c2708 *** empty log message *** 2002-10-01 07:58:16 +00:00
Jim Meyering
6ee4cfca07 (SSIZE_MAX): Define. 2002-10-01 07:58:03 +00:00
Jim Meyering
c42deaae1a . 2002-09-30 22:03:45 +00:00
Jim Meyering
cc9e07b32f . 2002-09-30 22:02:48 +00:00
Jim Meyering
1ea1325068 Don't include stdlib.h here. It's already included via system.h. 2002-09-30 21:20:08 +00:00
Jim Meyering
43231af577 *** empty log message *** 2002-09-30 16:14:02 +00:00
Jim Meyering
be9d4e80a0 *** empty log message *** 2002-09-30 08:01:02 +00:00
Jim Meyering
98abcaa372 update from master 2002-09-30 06:35:44 +00:00
Jim Meyering
8adddf55c0 (find_bracketed_repeat): Rearrange pointer/integer
expression to avoid warning from gcc.
2002-09-29 21:31:29 +00:00
Jim Meyering
9df8af3675 *** empty log message *** 2002-09-29 21:25:11 +00:00
Jim Meyering
7e1ff0b4f8 (simple_cat): Use a temporary to avoid bogus warnings.
(cat): Declare insize and outsize to be of type size_t, not int.
Rearrange pointer/integer expressions to avoid bogus warnings.
(main): Declare insize and outsize to be of type size_t, not int.
2002-09-29 21:25:03 +00:00
Jim Meyering
ca9b1df44b *** empty log message *** 2002-09-29 18:06:06 +00:00
Jim Meyering
c791a382f8 (parse_options): Give a sensible diagnostic for
an invalid byte or line count.  Reported by Mikko Tuumanen.
2002-09-29 18:06:02 +00:00
Jim Meyering
d27ac3d82a *** empty log message *** 2002-09-29 18:05:40 +00:00
Jim Meyering
9d9dbdb922 *** empty log message *** 2002-09-29 18:01:37 +00:00
Jim Meyering
0863bbf447 (main): Split a long line. 2002-09-29 18:00:28 +00:00
Jim Meyering
e16b6e395b update from master 2002-09-29 17:26:38 +00:00
Jim Meyering
c1d185f01c . 2002-09-29 17:26:18 +00:00
Jim Meyering
d51cd50606 (TESTS): Add slink. 2002-09-29 17:26:09 +00:00
Jim Meyering
559a6d0f80 *** empty log message *** 2002-09-29 17:26:00 +00:00
Jim Meyering
dcb8cc65fa *** empty log message *** 2002-09-29 17:25:43 +00:00
Jim Meyering
92a2cc65cb *** empty log message *** 2002-09-29 17:23:03 +00:00
Jim Meyering
b7412e8bc0 *** empty log message *** 2002-09-29 17:17:28 +00:00
Jim Meyering
9e3fc21d11 . 2002-09-29 17:12:36 +00:00
Jim Meyering
a3b479c91f . 2002-09-29 08:44:36 +00:00
Jim Meyering
b928574bf6 *** empty log message *** 2002-09-29 08:43:24 +00:00
Jim Meyering
6daabb7578 In move mode, always first try to rename. Before, upon failure to
rename a directory, this code would never attempt to rename any
other file in that directory, but would thenceforth always copy.
On some systems (NetApp version ??), renaming a directory may fail
with EXDEV, yet renaming files within that directory to a newly-
created destination directory succeeds.

(copy_internal): Remove local, move_mode;
use x->move_mode instead.  Based on a patch from Tom Haynes.
2002-09-29 08:43:19 +00:00
Jim Meyering
d7e2b7fa84 *** empty log message *** 2002-09-29 08:35:05 +00:00
Jim Meyering
9265193dd2 *** empty log message *** 2002-09-29 08:33:41 +00:00
Jim Meyering
a20222cd22 . 2002-09-28 22:03:55 +00:00
Jim Meyering
d7098ccf98 *** empty log message *** 2002-09-28 22:03:31 +00:00
Jim Meyering
e5a2ac0f88 (AM_INTL_SUBDIR): Don't require gt_HEADER_INTTYPES_H.
It's not necessary with autoconf-2.54.
2002-09-28 22:03:26 +00:00
Jim Meyering
885b7147cc (jm_FUNC_GETGROUPS): Rewrite to use AC_FUNC_GETGROUPS
and (if needed) to call AC_LIBOBJ and to set GETGROUPS_LIB.
2002-09-28 21:40:45 +00:00
Jim Meyering
9d78678c22 (jm_MACROS): Don't set GETGROUPS_LIB here; now it's
done via getgroups.m4's wrapper function.
2002-09-28 21:39:28 +00:00
Jim Meyering
30978dfadf update from master 2002-09-28 17:02:56 +00:00
Jim Meyering
d83e894316 *** empty log message *** 2002-09-28 16:53:57 +00:00
Jim Meyering
ccd5e413fb Remove file -- now it's part of autoconf-2.54 2002-09-28 16:53:25 +00:00
Jim Meyering
500ad9b9b1 *** empty log message *** 2002-09-28 16:50:43 +00:00
Jim Meyering
fd5bc32835 (FAIL_ONLY_ONE_WAY): New macro. Factor out some duplication.
(main): Use it.
[case 'a']: Use strtoul rather than strtol to avoid compiler warnings.
2002-09-28 16:50:34 +00:00
Jim Meyering
6fee4452d3 *** empty log message *** 2002-09-28 16:32:31 +00:00
Jim Meyering
16b4b4f861 (begfield, limfield): Rearrange comparisons to avoid compiler warnings.
(fillbuf, keycompare): Cast literal `-1' to size_t in comparisons,
to avoid compiler warnings.
2002-09-28 16:32:23 +00:00
Jim Meyering
1060257446 (dopass): Use a uintmax_t temporary to avoid bogus compiler warnings. 2002-09-28 16:29:25 +00:00
Jim Meyering
475574011d (tail_bytes): Change type of bytes_remaining to off_t
to avoid overflow.  Reported by Hans Lermen.
2002-09-28 09:21:17 +00:00
Jim Meyering
876ff10b0c *** empty log message *** 2002-09-28 07:55:25 +00:00
Jim Meyering
cd6ee8563b *** empty log message *** 2002-09-28 07:55:16 +00:00
Jim Meyering
ddb038c033 (make_path): Restore umask *before* creating the final component. 2002-09-28 07:55:08 +00:00
Jim Meyering
8c10d25fd0 Fix things so `mkdir -p' can create very deep directories, e.g.,
mkdir -p $(perl -e 'print "a/" x 40000') now works.

(main): For --parents (-p), call make_path with the
entire directory name, so we don't ever require that file operations
like stat or chmod be performed on the entire command line argument.
2002-09-28 07:51:17 +00:00
Jim Meyering
7c8156ca73 *** empty log message *** 2002-09-26 08:40:44 +00:00
Jim Meyering
0327689de0 (get_ids): Use strtoul, not strtol. Remove some casts. 2002-09-26 08:39:20 +00:00
Jim Meyering
d50e1a86b7 add a FIXME comment 2002-09-26 08:25:44 +00:00
Jim Meyering
2c6d700418 *** empty log message *** 2002-09-26 08:20:32 +00:00
Jim Meyering
4b0eb25d6d [! HAVE_INTTYPES_H && HAVE_STDINT_H] Include <stdint.h>.
(UINTMAX_MAX) [!defined UINTMAX_MAX]: New macro.
(PROPAGATE_ALL_ONES): Work even if X is unsigned and narrower than
int.  Work more efficiently if X is the same width as uintmax_t.
Do not compare X to -1, to avoid bogus compiler warning.
(get_fs_usage): (uintmax_t) -1 -> UINTMAX_MAX to avoid a cast.
Don't assume that f_frsize and f_bsize are the same type.
2002-09-26 08:18:33 +00:00
Jim Meyering
9cc87603b9 Upgrade to gettext-0.11.5. 2002-09-25 14:34:59 +00:00
Jim Meyering
d4add26938 Add be (Belarusian). 2002-09-25 14:23:49 +00:00
Jim Meyering
4fcf036cb3 . 2002-09-25 14:23:02 +00:00
Jim Meyering
ca2302ece5 . 2002-09-25 14:19:03 +00:00
Jim Meyering
59e6528c22 . 2002-09-25 12:52:56 +00:00
Jim Meyering
b79c9e46a9 (jm_MACROS): Require gt_INTTYPES_PRI. 2002-09-25 12:52:45 +00:00
Jim Meyering
0b797ed056 (gt_INTTYPES_PRI): New file, mostly from gettext. 2002-09-25 12:52:24 +00:00
Jim Meyering
619a52f976 *** empty log message *** 2002-09-25 11:45:42 +00:00
Jim Meyering
b5a4f7671a Remove unneeded parentheses around operands of `defined'. 2002-09-25 11:45:37 +00:00
Jim Meyering
d711a9e3be *** empty log message *** 2002-09-25 08:29:57 +00:00
Jim Meyering
029b8ea75d (safe_read): Make comment more precise: upon error, it returns -1. 2002-09-25 08:29:53 +00:00
Jim Meyering
34ba862f93 (eaccess): Change type of local `euid' from int to uid_t
and add a cast, to avoid a warning about `signed and unsigned type in
conditional expression'.
2002-09-25 08:23:54 +00:00
Jim Meyering
6b7e8621e2 *** empty log message *** 2002-09-24 08:50:24 +00:00
Jim Meyering
cc0a6e14fc fmt's -s, -t, -c options didn't work properly for long lines.
Since get_line may end up calling put_paragraph (for long lines),
be sure to set global, `other_indent', before it is used there.

(set_other_indent): New function, factored out of...
(get_paragraph): ... here.  Call it.
(get_line): Call set_other_indent before calling flush_paragraph,
which calls fmt_paragraph, which in turn calls put_paragraph,
which uses other_indent.
2002-09-24 08:50:20 +00:00
Jim Meyering
8683024a34 (make_path): Minor reformatting. 2002-09-22 07:40:28 +00:00
Jim Meyering
d8e1894335 *** empty log message *** 2002-09-22 06:59:21 +00:00
Jim Meyering
68527271a5 Include "dirname.h", for declaration of strip_trailing_slashes. 2002-09-22 06:59:13 +00:00
Jim Meyering
0f88878c11 *** empty log message *** 2002-09-22 06:48:35 +00:00
Jim Meyering
fab46cb466 (PRIdMAX, PRIuMAX): Remove definitions.
Now they're defined through system.h.
2002-09-22 06:48:28 +00:00
Jim Meyering
003ab9a58d Remove all inclusions of inttypes.h,
since it's already included from sys2.h via system.h.
2002-09-22 06:41:02 +00:00
Jim Meyering
709d79631a Remove all inclusions of inttypes.h,
since it's already included from sys2.h via system.h.
2002-09-22 06:40:14 +00:00
Jim Meyering
7b355ee476 upgrade to automake-1.6f 2002-09-22 06:34:18 +00:00
Jim Meyering
3be0542f6d *** empty log message *** 2002-09-22 06:33:27 +00:00
Jim Meyering
17e6ca3e89 *** empty log message *** 2002-09-21 22:40:45 +00:00
Jim Meyering
575cb67bb2 (PERL): Remove duplicate definition. 2002-09-21 22:40:35 +00:00
Jim Meyering
457ae040b7 *** empty log message *** 2002-09-21 22:34:30 +00:00
Jim Meyering
ddc4c1a8a9 (TESTS): Add long-line. 2002-09-21 22:12:40 +00:00
Jim Meyering
ef2c79217f *** empty log message *** 2002-09-21 14:24:28 +00:00
Jim Meyering
c5c97ee23a No longer include values.h.
It was required solely for now-removed reference to BITSPERBYTE.
2002-09-21 14:24:18 +00:00
Jim Meyering
ae1f13cd3c *** empty log message *** 2002-09-21 14:22:34 +00:00
Jim Meyering
d5d3e4a862 *** empty log message *** 2002-09-21 14:22:14 +00:00
Jim Meyering
7080cab46c No longer include values.h.
It was required solely for now-removed reference to BITSPERBYTE.
2002-09-21 14:21:53 +00:00
Jim Meyering
036ab5abda (UTILS_HOST_OS): Add a case for freebsd*-gnu*. 2002-09-20 09:04:43 +00:00
Jim Meyering
17170ddcb3 (TESTS): Add t-slash. 2002-09-20 08:59:17 +00:00
Jim Meyering
9fd07809b6 *** empty log message *** 2002-09-20 08:59:07 +00:00
Jim Meyering
350063fa65 add comment 2002-09-20 08:48:21 +00:00
Jim Meyering
9a8d898e60 *** empty log message *** 2002-09-20 08:46:48 +00:00
Jim Meyering
f0693e040c (remove_parents): Strip trailing slashes. 2002-09-20 08:41:02 +00:00
Jim Meyering
899a855343 Add need-ngettext to AM_GNU_GETTEXT invocation. 2002-09-20 08:18:39 +00:00
Jim Meyering
f026fc4b46 *** empty log message *** 2002-09-20 06:44:37 +00:00
Jim Meyering
eaa5777cc5 (announcement): Arrange to gpg-sign the message.
Add a URL for each detached signature file.
2002-09-20 06:44:31 +00:00
Jim Meyering
80b4ef8025 *** empty log message *** 2002-09-19 06:21:11 +00:00
Jim Meyering
f02d6eea14 *** empty log message *** 2002-09-18 08:31:16 +00:00
Jim Meyering
62718bc18d *** empty log message *** 2002-09-18 08:30:57 +00:00
Jim Meyering
0e71fdcb84 *** empty log message *** 2002-09-18 08:30:29 +00:00
Jim Meyering
78dfee94cb *** empty log message *** 2002-09-17 22:06:28 +00:00
Jim Meyering
b8da58cdac od -t x8' used the wrong (l'-prefixed) printf format.
Likewise for the o8 and u8 formats.

(ISPEC_TO_FORMAT): Define macro.
(decode_one_format): Use PRIdMAX, PRIoMAX, etc. for LONG_LONG.
Reported by Arun Sharma.
2002-09-17 22:06:21 +00:00
Jim Meyering
8837ed851e *** empty log message *** 2002-09-17 14:43:34 +00:00
Jim Meyering
32af38ad7f (PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX): Define if necessary.
From gettext's intl/loadmsgcat.c.
2002-09-17 14:41:43 +00:00
Jim Meyering
eb025632fc sort/check like this:
(export LC_COLLATE=fr_FR; sed -n '/^$/,$p' THANKS|sort -c -f -t' ' -k1,1 -k2,2)
2002-09-17 08:10:50 +00:00
Jim Meyering
96a4006030 sort 2002-09-17 08:07:07 +00:00
Jim Meyering
498e1e4f34 sort 2002-09-17 07:56:51 +00:00
Jim Meyering
0ba46f3211 *** empty log message *** 2002-09-17 07:50:32 +00:00
Jim Meyering
1c6add23a8 (TESTS): Add x8. 2002-09-17 07:34:04 +00:00
Jim Meyering
83ce802e59 test for bug fixed in coreutils-4.5.2 2002-09-17 07:33:54 +00:00
Jim Meyering
2e828f4304 *** empty log message *** 2002-09-16 10:27:05 +00:00
Jim Meyering
fd275f739b Forbid symbols matching ^jm_[A-Z].
(jm_PREREQ_QUOTEARG): Add jm_FUNC_MEMCMP.
2002-09-16 10:26:59 +00:00
Jim Meyering
29cf63f13e *** empty log message *** 2002-09-16 10:21:06 +00:00
Jim Meyering
bed74c5f2c (jm_PREREQ_ERROR): Check for libintl.h. 2002-09-16 10:20:54 +00:00
Jim Meyering
9679e3f156 *** empty log message *** 2002-09-16 05:51:14 +00:00
Jim Meyering
786254cbd5 version: 4.5.1 2002-09-16 05:49:58 +00:00
Jim Meyering
3888eed848 *** empty log message *** 2002-09-15 20:24:19 +00:00
Jim Meyering
68754e2a35 *** empty log message *** 2002-09-15 07:23:14 +00:00
Jim Meyering
f4c8df3d37 (get_format_width): Add cast to avoid
warning about `signed and unsigned type in conditional expression'.
2002-09-15 07:23:08 +00:00
Jim Meyering
165e561cf5 (generate_all_output): Likewise. 2002-09-15 07:12:05 +00:00
Jim Meyering
643087c9eb *** empty log message *** 2002-09-15 07:11:59 +00:00
Jim Meyering
e13f998e3d *** empty log message *** 2002-09-15 06:52:35 +00:00
Jim Meyering
ec317bd993 (xnanosleep): Return -1 on failure, not 1, for consistency with nanosleep.
Check errno after nanosleep returns -1.
2002-09-15 06:52:29 +00:00
Jim Meyering
466902bf34 *** empty log message *** 2002-09-14 09:12:20 +00:00
Jim Meyering
3935842cb3 (main, skip): Add casts to avoid warnings about
`comparison between signed and unsigned'.
2002-09-14 09:12:13 +00:00
Jim Meyering
12b5bb320c (print_user): Change type of local to size_t
to avoid warnings about `comparison between signed and unsigned'.
2002-09-14 07:47:38 +00:00
Jim Meyering
95631bcc4d *** empty log message *** 2002-09-14 07:45:59 +00:00
Jim Meyering
c81581d5c3 (print_full_info, print_group_list): Add casts to avoid
warnings about `signed and unsigned type in conditional expression'.
2002-09-14 07:45:53 +00:00
Jim Meyering
5ca2fe79d9 Change type of global, digest_hex_bytes, to size_t
to avoid warnings about `comparison between signed and unsigned'.
(split_3): Change parameter names to be readable and add comment.
Clean up the test for whether a line may be ignored.
2002-09-14 07:40:04 +00:00
Jim Meyering
fd73068711 *** empty log message *** 2002-09-13 21:17:26 +00:00
Jim Meyering
cea6b0e19a (jm_MACROS): Require autoconf-2.54. 2002-09-13 21:17:19 +00:00
Jim Meyering
6dfd1fe44a . 2002-09-13 14:23:26 +00:00
Jim Meyering
17b4cf8818 *** empty log message *** 2002-09-13 12:18:39 +00:00
Jim Meyering
5bd4fe2400 (main): Handle leading command line argument of `--'. 2002-09-13 09:50:23 +00:00
Jim Meyering
b4994d29a1 . 2002-09-13 09:49:55 +00:00
Jim Meyering
ef7c6ac69f *** empty log message *** 2002-09-13 09:49:26 +00:00
Jim Meyering
b9485873b6 Make sure printf handles a leading -- properly. 2002-09-13 09:49:19 +00:00
Jim Meyering
6b11de0aad (TESTS): Add printf. 2002-09-13 09:48:04 +00:00
Jim Meyering
41de1d5546 *** empty log message *** 2002-09-13 09:35:22 +00:00
Jim Meyering
0264deb7f0 *** empty log message *** 2002-09-13 09:31:32 +00:00
Jim Meyering
adaffb391b (Time directives) [%S]: Explain why the range is [0..60]. 2002-09-13 09:31:26 +00:00
Jim Meyering
dbe1e3529a (stat invocation): Remove references to now-removed %S and %C. 2002-09-13 09:19:20 +00:00
Jim Meyering
a59ff019de (usage): Explain that %S's range of [0..60] is required --
rather than 0..59 -- to accommodate the occasional positive leap second.
2002-09-13 09:18:18 +00:00
Jim Meyering
4de67de0af *** empty log message *** 2002-09-13 09:14:46 +00:00
Jim Meyering
510b33a541 *** empty log message *** 2002-09-13 08:51:27 +00:00
Jim Meyering
626d26baaa (tail invocation): In --sleep-interval=NUMBER,
NUMBER may now be a floating point number.
2002-09-13 08:51:15 +00:00
Jim Meyering
96a4360079 update from master 2002-09-13 07:46:30 +00:00
Jim Meyering
5ecd38d97e . 2002-09-12 13:16:43 +00:00
Jim Meyering
313f44f036 *** empty log message *** 2002-09-12 13:16:28 +00:00
Jim Meyering
3087631793 (nanosec_libs): Define.
(sleep_LDADD, tail_LDADD): Use it here.
2002-09-12 13:16:20 +00:00
Jim Meyering
96bd9415dc . 2002-09-12 13:15:07 +00:00
Jim Meyering
a4d28ef145 . 2002-09-12 12:14:58 +00:00
Jim Meyering
3a9de00dc7 *** empty log message *** 2002-09-12 12:12:31 +00:00
Jim Meyering
a6386ad90d *** empty log message *** 2002-09-12 12:11:59 +00:00
Jim Meyering
3bbdcee8c3 *** empty log message *** 2002-09-12 12:02:56 +00:00
Jim Meyering
1e8f677ed4 Factor nanosleep-related code into ../lib/xnanosleep.c.
Include xnanosleep.h.
Factor out fenv.h-related code.
(timespec_subtract): Remove function.
(main): Remove code that deals with computing start and stop times
as well as the loop around nanosleep.  Now that's in xnanosleep.c.
2002-09-12 12:01:02 +00:00
Jim Meyering
3a49e627de *** empty log message *** 2002-09-12 11:38:59 +00:00
Jim Meyering
7a79266014 Include xnanosleep.h and xstrtod.h.
Move declaration of global variable, sleep_interval, to ...
(main): ...here.
(usage): Update description of --sleep-interval option.
(tail_forever): New parameter, sleep_interval.  Update caller.
Use xnanosleep, rather than sleep.
(parse_options): New parameter, sleep_interval.  Update caller.
Use xstrtod, now that we accept floating point values.
2002-09-12 11:38:47 +00:00
Jim Meyering
d7a4a48c83 *** empty log message *** 2002-09-11 11:35:18 +00:00
Jim Meyering
aa6f330821 (libfetish_a_SOURCES): Add xnanosleep.c and xnanosleep.h. 2002-09-11 11:35:12 +00:00
Jim Meyering
079eb6b3d1 New files, factored out of sleep.c. 2002-09-11 11:34:20 +00:00
Jim Meyering
ae3d0303a0 . 2002-09-10 13:10:16 +00:00
Jim Meyering
867d0d0403 Remove file -- now it's part of autoconf-2.53c. 2002-09-10 13:10:02 +00:00
Jim Meyering
5d5cef3277 . 2002-09-10 13:09:17 +00:00
Jim Meyering
99583c1cae Use AC_CONFIG_LIBOBJ_DIR(lib) to tell the new
AC_FUNC_GETLOADAVG where to find getloadavg.c.
2002-09-10 13:09:01 +00:00
Jim Meyering
3fb3949208 *** empty log message *** 2002-09-10 13:08:43 +00:00
Jim Meyering
0b49457e24 . 2002-09-10 13:08:00 +00:00
Jim Meyering
9e35801348 Add lg (Luganda). 2002-09-10 13:06:27 +00:00
Jim Meyering
afef4e7e86 . 2002-09-06 20:58:23 +00:00
Jim Meyering
0e1e6b5e56 *** empty log message *** 2002-09-06 08:00:43 +00:00
Jim Meyering
8706a066cf *** empty log message *** 2002-09-06 08:00:36 +00:00
Jim Meyering
37f7bae4f0 (prompt): Change comment to give a better note to translators. 2002-09-06 08:00:30 +00:00
Jim Meyering
fceb8c6f6d . 2002-09-05 11:38:21 +00:00
Jim Meyering
1a71d84326 *** empty log message *** 2002-09-04 07:53:56 +00:00
Jim Meyering
de68469582 (addext): Add a cast to avoid gcc's warning about
`comparison between signed and unsigned'.
2002-09-04 07:53:42 +00:00
Jim Meyering
8b4aebd031 *** empty log message *** 2002-09-04 07:41:34 +00:00
Jim Meyering
6c0a2cd041 (str2signum, sig2str): Declare loop index variables to be
of type size_t so that they match type of upper bound, thus avoiding
warning about `comparison between signed and unsigned'.
2002-09-04 07:41:11 +00:00
Jim Meyering
2eb1ba5109 *** empty log message *** 2002-09-03 14:10:17 +00:00
Jim Meyering
d3f25cc8bf . 2002-09-03 14:07:36 +00:00
Jim Meyering
a9e5e84ed7 *** empty log message *** 2002-09-02 09:07:13 +00:00
Jim Meyering
585d13437c A good problem report/patch includes diffs against
the most recent test release.
2002-09-02 07:53:13 +00:00
Jim Meyering
496f29fa8c (NEED_PATHCONF_WRAPPER): Define.
(pathconf_wrapper): Define only if NEED_PATHCONF_WRAPPER is set.
2002-09-02 07:43:38 +00:00
Jim Meyering
0ea01d21a3 (skip): Add casts to avoid warning about comparison
between signed and unsigned. Also rearrange range-checking
comparisons to make them more readable.
2002-09-02 07:38:53 +00:00
Jim Meyering
2ebfe2fc9c (print_table_row): Use an unsigned type for widths
to avoid warning about comparison between signed and unsigned.
(list_signals): Likewise.
2002-09-02 07:31:24 +00:00
Jim Meyering
680cd976cc (skip): Add a cast to avoid warning about comparison
between signed and unsigned.
2002-09-02 07:23:09 +00:00
Jim Meyering
c6fcfa23be *** empty log message *** 2002-09-02 06:36:12 +00:00
Jim Meyering
636b6d76f3 *** empty log message *** 2002-09-02 06:34:55 +00:00
Jim Meyering
951b87ccd5 Bump version to 4.5.2. 2002-09-02 06:30:16 +00:00
Jim Meyering
e6c8577825 . 2002-09-01 09:58:07 +00:00
Jim Meyering
55b9df1653 *** empty log message *** 2002-09-01 09:42:31 +00:00
Jim Meyering
b2523f82c5 . 2002-09-01 08:56:59 +00:00
Jim Meyering
f7e3d9b0f2 *** empty log message *** 2002-08-31 16:59:23 +00:00
Jim Meyering
b0231a2f03 Update from GNU libc. 2002-08-31 16:59:12 +00:00
Jim Meyering
a5f8422570 Update from GNU libc. 2002-08-31 16:54:45 +00:00
Jim Meyering
5bdb1226eb Update from GNU libc. 2002-08-31 16:52:18 +00:00
Jim Meyering
eb540d8e9b *** empty log message *** 2002-08-31 16:46:43 +00:00
Jim Meyering
174a1f057c Update from GNU libc. 2002-08-31 16:46:40 +00:00
Jim Meyering
6dcc1a7fc3 *** empty log message *** 2002-08-31 16:25:42 +00:00
Jim Meyering
08264fc838 *** empty log message *** 2002-08-31 16:23:08 +00:00
Jim Meyering
24272cc948 . 2002-08-31 16:11:27 +00:00
Jim Meyering
62808a7fb5 Symlinks were always reported as using 0 blocks.
(ST_NBLOCKS): Don't depend on file type.
This reverts the change of 2000-01-30.
Based on a report and patch from Neil Brown via Michael Stone.
2002-08-31 16:04:57 +00:00
Jim Meyering
03b25d2e46 *** empty log message *** 2002-08-31 16:04:09 +00:00
Jim Meyering
570446de4a *** empty log message *** 2002-08-31 16:02:41 +00:00
Jim Meyering
970a18999d *** empty log message *** 2002-08-31 09:03:39 +00:00
Jim Meyering
61fe93b0c0 *** empty log message *** 2002-08-31 09:02:31 +00:00
Jim Meyering
41766f78de *** empty log message *** 2002-08-31 09:02:09 +00:00
Jim Meyering
45615cb41f *** empty log message *** 2002-08-31 08:52:15 +00:00
Jim Meyering
4006f4e672 Change exit (0)' to exit (EXIT_SUCCESS)',
`exit (1)' to `exit (EXIT_FAILURE)', and
`usage (1)' to `usage (EXIT_FAILURE)'.
2002-08-31 08:52:10 +00:00
Jim Meyering
7488703199 Change error (1, ...' to error (EXIT_FAILURE, ...'. 2002-08-30 23:04:53 +00:00
Jim Meyering
6c80ecd8d5 *** empty log message *** 2002-08-30 06:59:44 +00:00
Jim Meyering
4bffc55254 [START-INFO-DIR-ENTRY]: Don't use sc{} on LHS.
Fix typo: s/permission/permissions/.  From Michail Litvak.
2002-08-30 06:59:39 +00:00
Jim Meyering
96a48abf78 *** empty log message *** 2002-08-30 06:58:41 +00:00
Jim Meyering
e5ccb59f97 *** empty log message *** 2002-08-29 10:46:04 +00:00
Jim Meyering
649a00e9b8 (is_empty_dir): Detect and diagnose readdir failures.
Always close directory handle.
2002-08-29 10:42:12 +00:00
Jim Meyering
515f184462 (print_dir): Detect and diagnose readdir failures.
On some systems (at least EMC Celerra and Solaris5.8),
this appears to be necessary.
(print_dir): Rename local variable: reading -> dirp.
2002-08-29 10:16:00 +00:00
Jim Meyering
609231e3fa *** empty log message *** 2002-08-29 10:15:20 +00:00
Jim Meyering
1f8ece552f (remove_cwd_entries): Use closedir (not CLOSEDIR) when ignoring any return value. 2002-08-29 10:13:57 +00:00
Jim Meyering
82c0b315bc (print_dir): Rename local variable: reading -> dirp. 2002-08-29 09:44:23 +00:00
Jim Meyering
9a9e0503a2 (remove_cwd_entries): Detect and diagnose readdir
failures.  On some systems (at least EMC Celerra and Solaris5.8),
this appears to be necessary.
2002-08-29 09:42:43 +00:00
Jim Meyering
cd79080f4a (remove_cwd_entries): Use CLOSEDIR, not closedir.
Give a diagnostic and fail if closedir fails.
2002-08-28 06:52:07 +00:00
Jim Meyering
3ee8ba25ba *** empty log message *** 2002-08-26 13:10:10 +00:00
Jim Meyering
c725204141 *** empty log message *** 2002-08-26 13:04:49 +00:00
Jim Meyering
4ab5b1b246 (THANKS-to-translators): New rule.
(EXTRA_DIST): Add both THANKS-to-translators and THANKStt.in.
2002-08-26 12:58:30 +00:00
Jim Meyering
b10e1c1a4a *** empty log message *** 2002-08-26 12:49:14 +00:00
Jim Meyering
69a590a469 *** empty log message *** 2002-08-26 10:05:07 +00:00
Jim Meyering
e5f8396b09 *** empty log message *** 2002-08-26 10:04:51 +00:00
Jim Meyering
efaf3a08de *** empty log message *** 2002-08-26 10:04:05 +00:00
Jim Meyering
6f6a8f0361 . 2002-08-26 10:01:57 +00:00
Jim Meyering
7dd8275506 . 2002-08-26 07:26:34 +00:00
Jim Meyering
234cd4e3fe (close_stdout_wrapper): New, kludgey, function and file-scoped global.
(main): Register it with atexit.
Close STDOUT_FILENO, to avoid a problem when writing to
/dev/audio on at least Solaris 2.7 and 2.8 systems.
2002-08-26 07:23:37 +00:00
Jim Meyering
6d1c743816 *** empty log message *** 2002-08-26 07:23:18 +00:00
Jim Meyering
5dff34cd8d *** empty log message *** 2002-08-26 07:22:09 +00:00
Jim Meyering
83f07a2ae3 *** empty log message *** 2002-08-25 14:32:21 +00:00
Jim Meyering
c7bfa321f9 *** empty log message *** 2002-08-25 14:32:10 +00:00
Jim Meyering
3124a4e393 (main): Close STDIN_FILENO rather than a literal `0'. 2002-08-25 14:32:02 +00:00
Jim Meyering
f7f7207a69 latest 2002-08-25 07:35:00 +00:00
Jim Meyering
dd11d9349e *** empty log message *** 2002-08-20 16:53:43 +00:00
Jim Meyering
17077cbcbf Rewrite not to use `: ${VAR=not_set}' paradigm. 2002-08-20 16:53:33 +00:00
Jim Meyering
9db4370c1a *** empty log message *** 2002-08-20 10:19:18 +00:00
Jim Meyering
91d008f619 . 2002-08-20 10:18:19 +00:00
Jim Meyering
ac9b8804eb . 2002-08-14 13:44:19 +00:00
Jim Meyering
78088e3400 *** empty log message *** 2002-08-10 09:58:02 +00:00
Jim Meyering
01ac2fda31 Don't use "exec --"; it's not portable and shouldn't be needed. 2002-08-10 09:57:57 +00:00
Jim Meyering
f12b040a86 . 2002-08-09 22:13:49 +00:00
Jim Meyering
b2ad2ca795 [col-last]: New test for the above. 2002-08-09 22:13:37 +00:00
Jim Meyering
13f19a6185 *** empty log message *** 2002-08-09 10:04:19 +00:00
Jim Meyering
b1113d0168 (main): Don't ignore -COLUMN if it's the last option.
(usage): Clarify help text for the -COLUMN option.
2002-08-09 10:03:58 +00:00
Jim Meyering
82e2664b87 Start with version 4.5.1, chosen so that it's larger than
the latest version numbers of the component packages.
2002-08-09 10:00:25 +00:00
Jim Meyering
6eb3ba11fb (check-x-vs-1): Set and export PATH so we use programs in ../src. 2002-08-09 06:12:29 +00:00
Jim Meyering
a4726a4c8d *** empty log message *** 2002-08-09 06:12:18 +00:00
Jim Meyering
11eaed5c9c . 2002-08-08 17:05:13 +00:00
Jim Meyering
fc0e70fe74 *** empty log message *** 2002-08-08 16:38:29 +00:00
Jim Meyering
596072d020 *** empty log message *** 2002-08-08 16:37:27 +00:00
Jim Meyering
23fd377567 *** empty log message *** 2002-08-08 16:36:52 +00:00
Jim Meyering
4cb69e11ad Guard inclusion of <langinfo.h> with
`#if HAVE_LANGINFO_CODESET', not `#if HAVE_LANGINFO_H'.
2002-08-08 16:36:33 +00:00
Jim Meyering
99ec0b1a38 *** empty log message *** 2002-08-08 09:08:09 +00:00
Jim Meyering
f900759505 *** empty log message *** 2002-08-08 09:07:45 +00:00
Jim Meyering
c762eef14f *** empty log message *** 2002-08-08 09:02:10 +00:00
Jim Meyering
8cfd57e318 *** empty log message *** 2002-08-07 22:04:42 +00:00
Jim Meyering
0a6e22bb95 (main): Adjust to posixtime signature change.
Remove unnecessary initialization.
Use localtime, not posixtm, to warn about obsolete "touch".
2002-08-07 22:04:37 +00:00
Jim Meyering
1f6174e466 (main): Adjust to posixtime signature change. 2002-08-07 22:04:01 +00:00
Jim Meyering
8f5baf053e *** empty log message *** 2002-08-07 22:03:24 +00:00
Jim Meyering
ea1d6448fb (posixtime): Return bool instead of time_t, so
that we can return (time_t) -1 successfully.
2002-08-07 22:02:52 +00:00
Jim Meyering
c66dd95e8e Fix some minor time-related bugs with POSIX time arguments.
Some valid time stamps were being rejected (notably -1, and
time stamps before 1900 on 64-bit hosts).  And some invalid
time stamps were being accepted, e.g. September 31.

* lib/posixtm.h (posixtime): Return bool instead of time_t, so
that we can return (time_t) -1 successfully.
* lib/posixtm.c: Likewise.
[HAVE_STDBOOL_H]: Include <stdbool.h>.
(bool, false, true) [!HAVE_STDBOOL_H]: New type.
(t): Remove static var.
(year, posix_time_parse): Now takes struct tm * arg to modify, instead
of static var.  All uses changed.
(year): Do not reject years before 1900; they can occur with
64-bit time_t.
(posix_time_parse): Do not check for out-of-range components;
that is now the caller's responsibility, since our checks were
only approximations.
(posixtime): Use mktime to check for out-of-range components,
since it knows them exactly.
If mktime returns (time_t) -1, check whether an error actually occurred
by invoking localtime on -1.
(main) [TEST_POSIXTIME]: Check for input data errors, and report
posixtime failures better.
Improve the test data (in comments only).
2002-08-07 22:02:23 +00:00
Jim Meyering
bdccb7c890 Change $am_cv_sys_posix_termios to $ac_cv_sys_posix_termios.
From Andreas Schwab.
2002-08-05 12:21:42 +00:00
Jim Meyering
643bb0f883 *** empty log message *** 2002-08-05 12:20:55 +00:00
Jim Meyering
5c1e3600c9 *** empty log message *** 2002-08-05 12:20:42 +00:00
Jim Meyering
ea64b210f7 *** empty log message *** 2002-08-05 11:51:50 +00:00
Jim Meyering
67b3ee9676 Also change use of $am_cv_sys_posix_termios
to $ac_cv_sys_posix_termios.  Reported by Andreas Schwab.
2002-08-05 11:51:42 +00:00
Jim Meyering
46f67717fb . 2002-08-05 10:53:37 +00:00
Jim Meyering
4597dbd2a7 *** empty log message *** 2002-08-05 10:11:54 +00:00
Jim Meyering
78c7cfea3f (TESTS): Add nice and pathchk1. 2002-08-05 08:28:29 +00:00
Jim Meyering
4ab4543c2d . 2002-08-05 08:27:56 +00:00
Jim Meyering
c6827392b2 *** empty log message *** 2002-08-04 13:48:07 +00:00
Jim Meyering
28618d4dda . 2002-08-04 13:47:09 +00:00
Jim Meyering
27076dfd18 *** empty log message *** 2002-08-04 13:46:33 +00:00
Jim Meyering
04e21e6e53 . 2002-08-04 13:46:16 +00:00
Jim Meyering
92b12e12af *** empty log message *** 2002-08-04 13:41:29 +00:00
Jim Meyering
62ddac9d22 . 2002-08-04 13:40:26 +00:00
Jim Meyering
a3e653fea2 *** empty log message *** 2002-08-04 13:36:39 +00:00
Jim Meyering
54160b0b94 . 2002-08-04 11:04:56 +00:00
Jim Meyering
f09c1b54cf *** empty log message *** 2002-08-04 11:04:38 +00:00
Jim Meyering
0e727f4c59 *** empty log message *** 2002-08-04 11:03:20 +00:00
Jim Meyering
ca845879a4 (check-README): New target/rule.
(check): Depend on it.
2002-08-04 11:03:08 +00:00
Jim Meyering
9c24b11207 *** empty log message *** 2002-08-04 11:02:44 +00:00
Jim Meyering
c1f4d04c0f (AC_CONFIG_FILES): Add old/Makefile and old/*/Makefile. 2002-08-04 11:02:26 +00:00
Jim Meyering
2220d47e56 . 2002-08-04 11:01:30 +00:00
Jim Meyering
dbb5342c42 *** empty log message *** 2002-08-04 09:38:47 +00:00
Jim Meyering
b0c47ec127 *** empty log message *** 2002-08-04 06:15:41 +00:00
Jim Meyering
667d18259c *** empty log message *** 2002-08-03 17:42:53 +00:00
Jim Meyering
12107c3302 (SUBDIRS): Add old. 2002-08-03 16:49:20 +00:00
Jim Meyering
cd93525ee8 . 2002-08-03 16:48:17 +00:00
Jim Meyering
1c421df83b . 2002-08-03 16:47:21 +00:00
Jim Meyering
245b16635b *** empty log message *** 2002-08-03 16:44:43 +00:00
Jim Meyering
cefeb81dd5 (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Set to false. 2002-08-03 16:44:33 +00:00
Jim Meyering
87ef26a750 *** empty log message *** 2002-08-03 14:57:15 +00:00
Jim Meyering
ccd890dc9f *** empty log message *** 2002-08-03 14:55:25 +00:00
Jim Meyering
9193e7e10a *** empty log message *** 2002-08-03 14:55:21 +00:00
Jim Meyering
9159586138 Require AC_SYS_POSIX_TERMIOS, not AM_SYS_POSIX_TERMIOS. 2002-08-03 14:54:21 +00:00
Jim Meyering
515fe7d138 *** empty log message *** 2002-08-03 14:01:20 +00:00
Jim Meyering
1a15d841b8 *** empty log message *** 2002-08-02 14:49:52 +00:00
Jim Meyering
be39dde5b1 uniq now obeys LC_COLLATE. 2002-08-02 14:49:29 +00:00
Jim Meyering
f74c790e4d *** empty log message *** 2002-08-02 14:42:45 +00:00
Jim Meyering
545c2323d4 Include hard-locale.h, xmemcoll.h.
(hard_LC_COLLATE): New var.
(different): Args are now char *, not const char *.
Use xmemcoll instead of memcmp to compare lines, so that
LC_COLLATE has effect.  However, use memcmp if it is an
easy locale.
(check_file): Do not include newline in comparison, so that
xmemcoll has a byte to stomp on temporarily.
(main): Set hard_LC_COLLATE.
2002-08-02 14:42:37 +00:00
Jim Meyering
69a27f2c3d *** empty log message *** 2002-08-01 21:37:04 +00:00
Jim Meyering
9a7a47422e *** empty log message *** 2002-08-01 09:19:30 +00:00
Jim Meyering
d2b62daff5 (run_shell): Exit with status 126 or 127 when execvp or
execv fails, for consistency with POSIX commands like env and nice.
2002-08-01 09:19:24 +00:00
Jim Meyering
a6005c2ba4 (main): Exit with status 126 or 127 when execvp or
execv fails, for consistency with POSIX commands like env and nice.
2002-08-01 08:50:19 +00:00
Jim Meyering
2a41097fd7 Change behavior to conform to POSIX 1003.1-2001:
- Do not adjust scheduling priority.
  - Redirects stderr to stdout, if stderr is not a terminal.
  - Exit status is now 126 if command was found but not invoked,
    127 if nohup failed or if command was not found.
  Fix bug: command was run if nohup.out wasn't writeable.
2002-08-01 08:47:33 +00:00
Jim Meyering
901688234a *** empty log message *** 2002-08-01 08:32:00 +00:00
Jim Meyering
8f065fba94 *** empty log message *** 2002-08-01 07:02:51 +00:00
Jim Meyering
12046ce90b (jm_PREREQ_TEMPNAME): lib/tempname.c may use uintmax_t,
so require require jm_AC_TYPE_UINTMAX_T.  Patch by Joe Orton.
2002-08-01 07:02:47 +00:00
Jim Meyering
cac2b2c8eb nohup changes 2002-07-29 12:19:12 +00:00
Jim Meyering
2394313610 *** empty log message *** 2002-07-29 12:18:35 +00:00
Jim Meyering
a022cf6329 Change behavior to conform to POSIX 1003.1-2001:
- Do not adjust scheduling priority.
- Redirects stderr to stdout, if stderr is not a terminal.
- Exit status is now 126 if command was found but not invoked,
  127 if nohup failed or if command was not found.
2002-07-29 12:17:42 +00:00
Jim Meyering
ac8cf8db56 . 2002-07-29 11:05:52 +00:00
Jim Meyering
2b1fd19a04 . 2002-07-29 11:04:59 +00:00
Jim Meyering
206dd4a985 require automake-1.6b 2002-07-29 10:57:12 +00:00
Jim Meyering
ef2c17c290 . 2002-07-29 10:55:22 +00:00
Jim Meyering
72c145938f . 2002-07-29 10:54:44 +00:00
Jim Meyering
0b903c36ca . 2002-07-29 10:37:33 +00:00
Jim Meyering
bc9509e015 *** empty log message *** 2002-07-29 10:35:22 +00:00
Jim Meyering
9d8a92eeb8 *** empty log message *** 2002-07-29 10:35:17 +00:00
Jim Meyering
95a4eb7b02 (SUBDIRS): Remove djgpp, for now. 2002-07-29 10:35:11 +00:00
Jim Meyering
c010271591 . 2002-07-29 10:34:32 +00:00
Jim Meyering
c017df37f1 Supply exit arg for both invocations of exit. 2002-07-29 09:54:40 +00:00
Jim Meyering
49f015c36b *** empty log message *** 2002-07-29 08:40:50 +00:00
Jim Meyering
c8729cad98 Adjust command examples in comments to use POSIX 1003.1-2001 option syntax.
From Paul Eggert.
2002-07-29 08:40:10 +00:00
Jim Meyering
14714daf41 *** empty log message *** 2002-07-28 21:48:41 +00:00
Jim Meyering
03089e39cb . 2002-07-28 21:45:04 +00:00
Jim Meyering
ff7b7797bb *** empty log message *** 2002-07-28 20:11:43 +00:00
Jim Meyering
e3d2d82194 *** empty log message *** 2002-07-28 20:10:56 +00:00
Jim Meyering
cafa875ac4 *** empty log message *** 2002-07-28 20:10:28 +00:00
Jim Meyering
aab1a6520d *** empty log message *** 2002-07-28 13:19:38 +00:00
Jim Meyering
3eb3c770fd Don't require jm_FUNC_READDIR. 2002-07-28 13:19:35 +00:00
Jim Meyering
af8dd6d427 (jm_FUNC_READDIR): Remove file/macro. No longer needed. 2002-07-28 13:15:48 +00:00
Jim Meyering
e1b511adc6 . 2002-07-27 21:39:33 +00:00
Jim Meyering
ad0b9f7dde *** empty log message *** 2002-07-27 21:39:16 +00:00
Jim Meyering
37a7d1433c (jm_PREREQ_READUTMP): Don't check just
`struct utmpx.ut_exit' and `struct utmp.ut_exit'.  Instead, check
all combinations of utmp/utmpx and ut_termination/e_termination
and ut_exit/e_exit.
2002-07-27 21:39:00 +00:00
Jim Meyering
598ed91d62 If we have both utmpx.h and utmp.h, and there exists
the utmp.ut_exit member, but not the utmpx.ut_exit member, then
undefine HAVE_UTMPX_H.  For AIX 4.3.3.  Doing all this in cpp is
a big kludge; someday we'll put the brains in an autoconf macro.
(UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Define.
2002-07-27 21:35:39 +00:00
Jim Meyering
86af2dfa29 (UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Remove definitions.
Now they're defined in readutmp.h.
(print_deadprocs): Remove obsolete FIXME comment.
2002-07-27 21:31:50 +00:00
Jim Meyering
ee16ef9929 *** empty log message *** 2002-07-27 08:45:53 +00:00
Jim Meyering
62c03f8fac Port to POSIX 1003.1-2001 "nice", which
requires the option "-n 5" rather than "-5".  This matters
with GNU "nice" if the user has set the _POSIX2_VERSION
environment variable.
2002-07-27 08:45:49 +00:00
Jim Meyering
5e8cbfdf8e *** empty log message *** 2002-07-27 07:08:03 +00:00
Jim Meyering
1d423f93c8 *** empty log message *** 2002-07-27 07:01:42 +00:00
Jim Meyering
aa2fb76aa1 *** empty log message *** 2002-07-27 07:01:03 +00:00
Jim Meyering
8c01127f70 *** empty log message *** 2002-07-26 07:38:41 +00:00
Jim Meyering
e4d4cea119 Don't include malloc.h -- it was unnecessary. 2002-07-26 07:38:35 +00:00
Jim Meyering
723e226532 update from master 2002-07-25 07:11:29 +00:00
Jim Meyering
2b4dff2063 *** empty log message *** 2002-07-24 08:33:27 +00:00
Jim Meyering
d1f42de115 (Time directives): Document %P, %R, %e, %F, %g, %G, and %V 2002-07-24 08:33:21 +00:00
Jim Meyering
ce7a9483a9 . 2002-07-24 08:27:35 +00:00
Jim Meyering
be7f1936bd undo last change 2002-07-24 08:24:12 +00:00
Jim Meyering
43343c2793 *** empty log message *** 2002-07-23 19:42:32 +00:00
Jim Meyering
68aff85110 *** empty log message *** 2002-07-23 19:42:04 +00:00
Jim Meyering
9bbd5af6e8 . 2002-07-23 08:16:11 +00:00
Jim Meyering
34598a09f5 *** empty log message *** 2002-07-23 08:14:34 +00:00
Jim Meyering
c6bb7f43ff (AC_C_BACKSLASH_A): Remove file, now that autoconf 2002-07-23 08:13:46 +00:00
Jim Meyering
2497b8e42f *** empty log message *** 2002-07-22 19:58:34 +00:00
Jim Meyering
8c55f0fbfa (Formatting the file names): Document
that -N/--literal are equivalent to --quoting-style=literal.
Reported by Oskar Liljeblad as Debian bug#103612.
2002-07-22 19:58:29 +00:00
Jim Meyering
a6d4483234 *** empty log message *** 2002-07-22 15:39:23 +00:00
Jim Meyering
33106990a6 (usage): The short form of --dereference is now -L, not -l. 2002-07-22 15:39:12 +00:00
Jim Meyering
63fb8bd5b6 *** empty log message *** 2002-07-22 12:24:48 +00:00
Jim Meyering
2bd28f0200 Add new option, --presume-input-tty, for testing only.
Not documented.
2002-07-22 12:24:41 +00:00
Jim Meyering
48a269db9c Add a test for this:
When not interactive, don't prompt for a symlink.
2002-07-22 12:22:59 +00:00
Jim Meyering
07fdea3ed9 . 2002-07-22 08:26:07 +00:00
Jim Meyering
14947f5b6c *** empty log message *** 2002-07-22 08:25:13 +00:00
Jim Meyering
786b4298a5 *** empty log message *** 2002-07-22 08:16:57 +00:00
Jim Meyering
a0ba130aea *** empty log message *** 2002-07-22 08:16:46 +00:00
Jim Meyering
ae1331b60a Handle the case in which rm produces no output. 2002-07-22 08:16:38 +00:00
Jim Meyering
2f17be04e3 This test might remove a file owned by the person running `make check'.
Hoist definition of $target_file, and use
that (not $f) in test for owner/dir/symlink.  Patch by Michael Stone.
2002-07-22 08:12:27 +00:00
Jim Meyering
db6dff2e6e rm would prompt for non-dangling symlinks
(prompt): When not interactive, don't prompt for a symlink.
2002-07-22 06:59:26 +00:00
Jim Meyering
fc1b595b19 *** empty log message *** 2002-07-22 06:55:17 +00:00
Jim Meyering
c206bac583 Fix typo in last change: add missing $ 2002-07-20 21:08:26 +00:00
Jim Meyering
64f41399ff *** empty log message *** 2002-07-20 20:06:49 +00:00
Jim Meyering
bcfbac9349 (copy_internal): Use file_name_lookup, not getdport.
Patch by Alfred M. Szmidt.
2002-07-20 20:06:41 +00:00
Jim Meyering
32ea988e8b *** empty log message *** 2002-07-20 15:48:25 +00:00
Jim Meyering
ad7b8c7978 . 2002-07-20 15:39:18 +00:00
Jim Meyering
b24b689963 . 2002-07-20 15:29:25 +00:00
Jim Meyering
334294f09d (main): Add an explicit `exit (EXIT_SUCCESS);'
for --version, rather than falling through.
2002-07-20 15:18:37 +00:00
Jim Meyering
3f6c422f1a (false.c): Convert only the final EXIT_SUCCESS
into EXIT_FAILURE.  Otherwise, false --help and false --version
would fail.
2002-07-20 15:18:20 +00:00
Jim Meyering
ad7e872471 *** empty log message *** 2002-07-20 14:24:34 +00:00
Jim Meyering
a82d360478 (news-r1, news-r2): Define. Better regexp.
(announcement): Use them here.  Also makes the line length < 80.
2002-07-20 14:24:29 +00:00
Jim Meyering
bfe17c403d *** empty log message *** 2002-07-20 14:12:31 +00:00
Jim Meyering
d234d4b968 *** empty log message *** 2002-07-20 14:10:21 +00:00
Jim Meyering
edc5d1e500 . 2002-07-20 14:06:47 +00:00
Jim Meyering
ce62cf1bd3 *** empty log message *** 2002-07-20 14:06:33 +00:00
Jim Meyering
eb7996a1df New file. From gettex-0.11.3. 2002-07-20 14:06:23 +00:00
Jim Meyering
4d84eaa764 do not use tail -1; use tail -n 1 instead 2002-07-20 11:17:27 +00:00
Jim Meyering
a5c943a9b4 . 2002-07-20 11:16:45 +00:00
Jim Meyering
6249feeba8 *** empty log message *** 2002-07-20 08:32:46 +00:00
Jim Meyering
74222f7619 *** empty log message *** 2002-07-20 08:28:24 +00:00
Jim Meyering
18d123ec85 *** empty log message *** 2002-07-20 08:24:31 +00:00
Jim Meyering
2b6249f98c . 2002-07-20 07:12:58 +00:00
Jim Meyering
6884ff795d . 2002-07-20 07:12:29 +00:00
Jim Meyering
e54c429349 *** empty log message *** 2002-07-20 07:12:13 +00:00
Jim Meyering
559555c77c Require autoconf-2.53b.
Use new macros AC_FUNC_MALLOC and AC_FUNC_REALLOC,
in place of jm_-prefixed ones.
2002-07-20 07:12:09 +00:00
Jim Meyering
b76525f29d Remove file, now that autoconf provides this macro. 2002-07-20 07:11:05 +00:00
Jim Meyering
a848d8b02b Adjust to work with new autoconf macros, AC_FUNC_MALLOC
and AC_FUNC_REALLOC: test #ifndef HAVE_MALLOC/HAVE_REALLOC.
2002-07-20 07:07:48 +00:00
Jim Meyering
6f382f7324 . 2002-07-20 06:52:12 +00:00
Jim Meyering
5e9dbfad55 Upgrade to gettext-0.11.3. 2002-07-20 06:41:26 +00:00
Jim Meyering
940ec37b9d *** empty log message *** 2002-07-20 06:38:38 +00:00
Jim Meyering
fd72bdc343 Upgrade to gettext-0.11.3. 2002-07-20 06:38:33 +00:00
Jim Meyering
5a75d400d9 Upgrade to gettext-0.11.3. 2002-07-20 06:37:36 +00:00
Jim Meyering
03229a474f Upgrade to gettext-0.11.3. 2002-07-20 06:36:49 +00:00
Jim Meyering
5b8a7240b0 Upgrade to gettext-0.11.3. 2002-07-20 06:35:12 +00:00
Jim Meyering
7e168001e9 Upgrade to gettext-0.11.3. 2002-07-20 06:34:16 +00:00
Jim Meyering
ca66dd1648 . 2002-07-20 06:31:28 +00:00
Jim Meyering
2200bd0564 Upgrade to gettext-0.11.3. 2002-07-20 06:31:12 +00:00
Jim Meyering
9befab3af8 fix typo in comment 2002-07-20 06:22:02 +00:00
Jim Meyering
39d971818e skip directories, too.
Otherwise, we'd have to account for the additional `directory ' part
of a diagnostic like this:

fail-eperm: unexpected dignostic from `rm -f /tmp/.pcmcia';
  got      rm: cannot remove directory `/tmp/.pcmcia': Is a directory
  expected rm: cannot remove `/tmp/.pcmcia': ...
2002-07-20 05:36:59 +00:00
Jim Meyering
e724268ea5 quotemeta 2002-07-19 22:01:43 +00:00
Jim Meyering
748de084cc *** empty log message *** 2002-07-19 21:36:56 +00:00
Jim Meyering
7ca9560caf Add .wav. 2002-07-19 21:36:46 +00:00
Jim Meyering
6c38ff8431 *** empty log message *** 2002-07-19 21:35:56 +00:00
Jim Meyering
b6389794e2 Don't expect `ARGV_0=$0 exec ...' to work.
It doesn't work with /bin/sh of Solaris5.6.
Use an explicit `export ARGV_0' instead.
[comparing actual and expected output]: Don't match the entire line,
but rather just the `rm: cannot remove `$dir/$f':' part.
2002-07-19 21:35:48 +00:00
Jim Meyering
29c8739e95 Use input-tty rather than testing for /dev/stdin. 2002-07-19 21:12:23 +00:00
Jim Meyering
767a8b968e *** empty log message *** 2002-07-19 20:26:28 +00:00
Jim Meyering
5db1ff6873 *** empty log message *** 2002-07-19 20:25:46 +00:00
Jim Meyering
164e61fbb9 tweak for better exit 2002-07-19 20:22:59 +00:00
Jim Meyering
4a8560e2a0 . 2002-07-19 19:42:31 +00:00
Jim Meyering
d4439bcbf4 update from master 2002-07-18 20:44:25 +00:00
Jim Meyering
af37865370 *** empty log message *** 2002-07-18 18:38:28 +00:00
Jim Meyering
3c26c805a7 *** empty log message *** 2002-07-18 18:35:47 +00:00
Jim Meyering
a19f9253c4 (main): Test sysctl(...) >= 0, not == 0, since
on NetBSD the return value may well be positive.
Use one-line aggregate initializations.
Use tightly scoped static buffers to avoid warnings about
unused variables on some systems.
2002-07-18 18:35:42 +00:00
Jim Meyering
510f7bfe87 (UNAME_HARDWARE_PLATFORM, UNAME_PROCESSOR): New macros.
(main): Use them, along with sysctl, to support uname -i and uname -p
on BSD hosts.
2002-07-18 18:28:53 +00:00
Jim Meyering
283c81ccdd . 2002-07-18 15:29:53 +00:00
Jim Meyering
80206d9811 (Makefile): Also depend on LINGUAS. 2002-07-18 09:46:38 +00:00
Jim Meyering
c696260961 *** empty log message *** 2002-07-18 09:34:52 +00:00
Jim Meyering
dadffbebca *** empty log message *** 2002-07-18 09:33:48 +00:00
Jim Meyering
2ea4083a64 *** empty log message *** 2002-07-18 09:28:45 +00:00
Jim Meyering
a536063677 Add the following to the list of colorizable
TERM names: dtterm xterm-color Eterm.
New archive suffix: .jar
New image suffixes: .jpeg .pbm .pgm .tiff .mpeg .xcf .xwd
Audio suffixes: .ogg .mp3
2002-07-18 09:28:41 +00:00
Jim Meyering
570e8c45fe *** empty log message *** 2002-07-17 15:35:22 +00:00
Jim Meyering
37bbc4c47f (print_uptime): Restore use of (equivalent, but
more readable) `>=' from Bruno's patch.
2002-07-17 10:59:54 +00:00
Jim Meyering
5486771381 . 2002-07-17 10:50:19 +00:00
Jim Meyering
9ee956a2f7 Use GNULIB_BOOT_TIME. 2002-07-17 10:49:46 +00:00
Jim Meyering
15b923a271 New file. Extracted from sh-utils' configure.ac
and extended to work also with *BSD systems.
2002-07-17 10:47:46 +00:00
Jim Meyering
6080be6701 *** empty log message *** 2002-07-16 09:49:43 +00:00
Jim Meyering
3474b1e642 *** empty log message *** 2002-07-16 09:42:43 +00:00
Jim Meyering
a96affa5e1 use $(PERL), not @PERL@ 2002-07-16 09:37:41 +00:00
Jim Meyering
d85c0c81fa *** empty log message *** 2002-07-16 09:29:56 +00:00
Jim Meyering
6978ba6736 (print_it): Use memcpy and a little pointer arithmetic, rather than stpncpy. 2002-07-16 09:29:52 +00:00
Jim Meyering
753bb04a60 . 2002-07-16 06:53:00 +00:00
Jim Meyering
99bf17613b *** empty log message *** 2002-07-16 06:51:20 +00:00
Jim Meyering
c7a1d7f58f help font-lock-mode 2002-07-16 06:49:50 +00:00
Jim Meyering
b23214fca0 *** empty log message *** 2002-07-16 06:46:19 +00:00
Jim Meyering
ce0f0e7e12 *** empty log message *** 2002-07-15 21:08:48 +00:00
Jim Meyering
52b40984a2 Include sys/sysctl.h.
(print_uptime): Add support for determining the boot time on FreeBSD.
2002-07-15 21:08:21 +00:00
Jim Meyering
eba70ec3a5 *** empty log message *** 2002-07-15 21:07:30 +00:00
Jim Meyering
9d348b20ef (jm_MACROS): Check for the sysctl function.
(jm_CHECK_ALL_HEADERS): Check for sys/sysctl.h.
2002-07-15 21:06:21 +00:00
Jim Meyering
34e8e6db03 *** empty log message *** 2002-07-15 20:43:48 +00:00
Jim Meyering
b918fce9a6 (print_uptime): Use STREQ in place of !strcmp. 2002-07-15 20:42:43 +00:00
Jim Meyering
02bdcf7646 Remove unnecessary uses of `defined' when
operating on `HAVE_...' symbols.  Remove unnecessary parentheses.
2002-07-15 13:15:07 +00:00
Jim Meyering
cdcc745b6b *** empty log message *** 2002-07-15 13:00:46 +00:00
Jim Meyering
33b79abe90 #undef MNT_IGNORE before defining it, to avoid warning on FreeBSD. 2002-07-15 13:00:40 +00:00
Jim Meyering
bac77ea3d9 Include <string.h>. 2002-07-15 12:59:47 +00:00
Jim Meyering
b65a2d1877 *** empty log message *** 2002-07-14 12:39:24 +00:00
Jim Meyering
6e5c26da04 *** empty log message *** 2002-07-14 11:46:50 +00:00
Jim Meyering
ab4c1d5532 Under some circumstances, rm would fail due to a lack of
permissions, but give a misleading diagnostic like this:
rm: cannot chdir from `.' to `foo': Not a directory

(remove_dir): Detect the case in which unlinking a
non-directory fails with EPERM, and give an appropriate diagnostic.
2002-07-14 11:46:41 +00:00
Jim Meyering
7678915a9e (TESTS): Add fail-eperm. 2002-07-13 09:24:13 +00:00
Jim Meyering
e5ee2e3aee (print_it): Use xstrdup, not strdup.
Use strspn to avoid an explicit loop.
Use fputc rather than printf "\n".

Include quote.h.
(print_stat): Use xreadlink, rather than using readlink directly.
Use the quote function rather than hard-coded double quotes.
Use error, not perror.
2002-07-13 08:05:04 +00:00
Jim Meyering
902453fc35 *** empty log message *** 2002-07-10 10:25:31 +00:00
Jim Meyering
545b6d7541 (show_dev): Make the `Use%' column align with
its heading, even when -P is used with -h or -H.
2002-07-10 10:22:10 +00:00
Jim Meyering
0fe8dc3290 update copyright 2002-07-10 10:09:10 +00:00
Jim Meyering
44ce3e4b3c *** empty log message *** 2002-07-10 10:08:33 +00:00
Jim Meyering
2aeeb5466e (du invocation): s/PAT/PATTERN/. 2002-07-10 10:08:22 +00:00
Jim Meyering
eb8c474088 Add a brief description of --exclude. 2002-07-10 10:06:39 +00:00
Jim Meyering
290867cc4a (usage) [--exclude]: Use PATTERN rather than PAT. 2002-07-10 10:05:32 +00:00
Jim Meyering
4e2a62ff5e *** empty log message *** 2002-07-10 10:05:13 +00:00
Jim Meyering
a1e22df67a update from master 2002-07-09 15:41:05 +00:00
Jim Meyering
703f6c0969 *** empty log message *** 2002-07-09 08:40:23 +00:00
Jim Meyering
00489c764a (ME_DUMMY): Don't count entries of type `auto' as dummy ones.
At least on GNU/Linux systems, `auto' means something else.
From Michael Stone.
2002-07-09 08:40:15 +00:00
Jim Meyering
6b33fa2fc6 (check-x-vs-1): cd to srcdir before running the ls.
Otherwise, it'd fail in the non-srcdir case.
2002-07-09 07:48:30 +00:00
Jim Meyering
01fb2d0ba8 . 2002-07-09 07:31:29 +00:00
Jim Meyering
d072c179a7 alphabetize the lists of programs 2002-07-09 07:30:44 +00:00
Jim Meyering
c77361418f add cat.1, once again 2002-07-09 07:27:27 +00:00
Jim Meyering
ca407c08fa *** empty log message *** 2002-07-09 07:26:49 +00:00
Jim Meyering
ffffb388a0 *** empty log message *** 2002-07-09 07:26:38 +00:00
Jim Meyering
744750ded3 (check-x-vs-1): New target.
(check-local): Depend on check-x-vs-1.
2002-07-09 07:25:40 +00:00
Jim Meyering
a879a0925f (dist_man_MANS): Add stat.
(stat.1): Add dependency.
2002-07-09 06:55:05 +00:00
Jim Meyering
56a4c59e60 (euidaccess): Remove declaration. It was unused. From Michael Stone.
(yesno): Remove declaration.  It too was unused.
2002-07-09 06:38:19 +00:00
Jim Meyering
a1d54b2837 *** empty log message *** 2002-07-08 17:15:28 +00:00
Jim Meyering
1882eec679 df now rounds all quantities up, as per POSIX.
This fixes a bug where df would report Size < Used.
2002-07-08 17:15:19 +00:00
Jim Meyering
67bf6815c4 df now rounds all quantities up, as per POSIX.
This fixes a bug where df would report Size < Used.

(df_readable): Omit last arg; we always round up now.
All callers changed.
2002-07-08 17:03:36 +00:00
Jim Meyering
dc0221e601 s/sh-utils/this package/ 2002-07-08 12:29:34 +00:00
Jim Meyering
ffceff850d (uninstall-local): Search for @GNU_PACKAGE@,
rather than the hard-coded `sh-utils'.
2002-07-08 12:26:59 +00:00
Jim Meyering
af75d641d4 *** empty log message *** 2002-07-08 09:13:33 +00:00
Jim Meyering
647eaf53a8 New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
Any time style can be preceded by "posix-".
The default time style is now posix-long-iso instead of posix-iso.
2002-07-08 09:13:12 +00:00
Jim Meyering
01eacf71cb (enum time_style): Remove posix_iso_time_style.
Add long_iso_time_style.
(time_style_args, time_style_types, decode_switches): Likewise.
(decode_switches): If a time style is prefixed by "posix-", ignore
it if in the POSIX locale.  Default style is now posix-long-iso.
(usage): Explain the above.
2002-07-08 09:12:48 +00:00
Jim Meyering
cebf7f7371 check only for $@" 2002-07-08 08:04:08 +00:00
Jim Meyering
a18abe21f7 *** empty log message *** 2002-07-08 08:01:23 +00:00
Jim Meyering
ce7f59f2ff *** empty log message *** 2002-07-08 07:09:21 +00:00
Jim Meyering
e289e5c881 (check-texinfo): Check for the above. 2002-07-08 07:08:59 +00:00
Jim Meyering
a72662ed6b (cp invocation): Remove unnecessary "$@" in example;
Texinfo would render the @" as an umlaut over the following character.
From Paul Eggert.
2002-07-08 07:07:52 +00:00
Jim Meyering
89eb405076 . 2002-07-06 15:37:12 +00:00
Jim Meyering
a6b74b8947 *** empty log message *** 2002-07-06 15:36:23 +00:00
Jim Meyering
5a6436bf38 *** empty log message *** 2002-07-06 15:35:29 +00:00
Jim Meyering
593a07614a (stat invocation): Remove description of --secure. 2002-07-06 15:35:24 +00:00
Jim Meyering
d815f6dbb7 Remove everything associated with --secure option. 2002-07-06 15:34:32 +00:00
Jim Meyering
512de3938e comments 2002-07-06 09:53:57 +00:00
Jim Meyering
66f8c36584 improve the test 2002-07-06 09:53:14 +00:00
Jim Meyering
49d3f4be1a *** empty log message *** 2002-07-06 09:16:56 +00:00
Jim Meyering
0dc6b951d8 *** empty log message *** 2002-07-04 12:07:29 +00:00
Jim Meyering
665089a167 *** empty log message *** 2002-07-04 12:07:23 +00:00
Jim Meyering
2afe4a1677 (prompt): Fix test for write-protectedness to also
check errno == EACCES.  Otherwise, `rm dangling-symlink' would
mistakenly prompt.
2002-07-04 12:06:49 +00:00
Jim Meyering
b645ebf086 *** empty log message *** 2002-07-04 12:06:18 +00:00
Jim Meyering
99c8e3f461 (TESTS): Add dangling-symlink. 2002-07-04 12:06:08 +00:00
Jim Meyering
81cae5ce24 *** empty log message *** 2002-07-04 12:05:00 +00:00
Jim Meyering
dd2496d71e *** empty log message *** 2002-07-04 12:04:37 +00:00
Jim Meyering
8a7ec6fa52 *** empty log message *** 2002-07-03 08:45:18 +00:00
Jim Meyering
973f88bd7d *** empty log message *** 2002-07-03 08:44:59 +00:00
Jim Meyering
27195acdb6 (usage): Rename --link/-l to --dereference/-L.
Describe --secure.
Describe --format.
(main): Support -L.  Deprecate -l.
2002-07-03 08:44:55 +00:00
Jim Meyering
421c142235 *** empty log message *** 2002-07-03 08:44:34 +00:00
Jim Meyering
8d7c1bb101 (stat invocation): Rename --link/-l to --dereference/-L.
Rewrite description of --dereference.
2002-07-03 08:44:27 +00:00
Jim Meyering
4afd8a87cd *** empty log message *** 2002-07-03 08:41:56 +00:00
Jim Meyering
41fe641773 add link and unlink 2002-07-02 16:20:54 +00:00
Jim Meyering
33c2d4da98 . 2002-07-02 16:20:10 +00:00
Jim Meyering
40d884ef95 *** empty log message *** 2002-07-02 16:19:46 +00:00
Jim Meyering
99e738219b *** empty log message *** 2002-07-02 14:56:32 +00:00
Jim Meyering
51e63eddf4 remove djgpp 2002-07-02 14:06:37 +00:00
Jim Meyering
3f1725cd4a . 2002-07-02 14:05:35 +00:00
Jim Meyering
bde17523a9 *** empty log message *** 2002-07-02 09:15:50 +00:00
Jim Meyering
fa6c1e3f51 . 2002-07-02 09:13:10 +00:00
Jim Meyering
b5e07cb9e8 *** empty log message *** 2002-07-02 09:12:42 +00:00
Jim Meyering
2ee11887cd (usage): Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it. 2002-07-02 09:09:10 +00:00
Jim Meyering
6d0fe4dba5 *** empty log message *** 2002-07-02 09:08:30 +00:00
Jim Meyering
5a731510b2 (usage): Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it. 2002-07-02 09:06:33 +00:00
Jim Meyering
d23970e52e (usage): Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it. 2002-07-02 09:05:33 +00:00
Jim Meyering
4c7e003c1b . 2002-07-02 09:02:16 +00:00
Jim Meyering
4262ada1bd . 2002-07-02 09:01:53 +00:00
Jim Meyering
f4bb64378d (EXTRA_DIST): Merge. 2002-07-02 08:59:21 +00:00
Jim Meyering
d3ddaf1b29 *** empty log message *** 2002-07-02 08:47:01 +00:00
Jim Meyering
16cec7b66e (.sh): Also substitute @PACKAGE_BUGREPORT@. 2002-07-02 08:46:46 +00:00
Jim Meyering
9d6d0e452b (usage_help): Use @PACKAGE_BUGREPORT@, rather than hard-coding a
deprecated address.
2002-07-02 08:45:10 +00:00
Jim Meyering
c16552eee5 (usage): Use @PACKAGE_BUGREPORT@, rather than hard-coding a deprecated address. 2002-07-02 08:44:52 +00:00
Jim Meyering
e2003dea4b (usage): Mention that the expansions of %p and %P are
empty in many locales.  From matthew arnison.
2002-07-02 05:20:52 +00:00
Jim Meyering
7f412c940d merged 2002-07-01 21:26:55 +00:00
Jim Meyering
4b42154477 s/any/some/ 2002-07-01 21:15:13 +00:00
Jim Meyering
dc58af4acf remove redundant (exit $fail) 2002-07-01 19:15:49 +00:00
Jim Meyering
58c37faa5c Handle yet another different diagnostic. 2002-07-01 14:36:57 +00:00
Jim Meyering
bec7e2c432 *** empty log message *** 2002-07-01 14:23:28 +00:00
Jim Meyering
214d3ee739 Include sys/time.h.
From Volker Borchert.
2002-07-01 14:19:20 +00:00
Jim Meyering
a7d1d17be0 update to use prologue from sample-test 2002-07-01 09:41:20 +00:00
Jim Meyering
7039e40db2 whoops. 2002-07-01 09:25:02 +00:00
Jim Meyering
c69f2e06ce merge 2002-07-01 09:24:34 +00:00
Jim Meyering
48ed048feb *** empty log message *** 2002-07-01 09:09:06 +00:00
Jim Meyering
abb32bb0ae Merge the three files from fileutils, textutils, and sh-utils. 2002-07-01 08:13:49 +00:00
Jim Meyering
5ad73398f4 Merge the three files from fileutils, textutils, and sh-utils. 2002-07-01 08:08:43 +00:00
Jim Meyering
e6b4ef7f1d *** empty log message *** 2002-06-29 13:08:16 +00:00
Jim Meyering
a9a425d557 (print_statfs): Use `fputc ('*', stdout)'
instead of the combination of strcat and printf.
(print_statfs) [!FLASK_LINUX]: Print `*' for %S and %C, rather than `S' and `C'.
(print_stat) [!FLASK_LINUX]: Likewise.
2002-06-29 13:08:08 +00:00
Jim Meyering
83df3a8165 *** empty log message *** 2002-06-29 11:50:48 +00:00
Jim Meyering
9eea5b03dd (AD_mark_current_as_unremovable): Replace dead code with an assertion. 2002-06-29 11:50:38 +00:00
Jim Meyering
b31006ba99 *** empty log message *** 2002-06-26 07:38:23 +00:00
Jim Meyering
de19a1af57 (Putting the tools together): Don't mention egrep,
since it's not part of POSIX 1003.1-2001.
2002-06-26 07:38:18 +00:00
Jim Meyering
3ba3282be5 *** empty log message *** 2002-06-26 06:18:04 +00:00
Jim Meyering
0d051ba221 (WIDE_CHAR_SUPPORT): New macro. Use it uniformly instead of
(defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H).
It also uses HAVE_BTOWC, to fix a porting bug on Solaris 2.5.1
reported by Vin Shelton.
2002-06-26 06:17:35 +00:00
Jim Meyering
8020e5b1e3 *** empty log message *** 2002-06-26 06:16:13 +00:00
Jim Meyering
074e29a651 (_AC_LIBOBJ_FNMATCH): Check for btowc. 2002-06-26 06:16:05 +00:00
476 changed files with 342125 additions and 9325 deletions

6
.cvsignore Normal file
View File

@@ -0,0 +1,6 @@
Makefile
config.h
config.log
config.status
stamp-h1
autom4te.cache

1
.prev-version Normal file
View File

@@ -0,0 +1 @@
4.5.4

346
ABOUT-NLS
View File

@@ -171,190 +171,232 @@ Available Packages
==================
Languages are not equally supported in all packages. The following
matrix shows the current state of internationalization, as of January
matrix shows the current state of internationalization, as of August
2002. The matrix shows, in regard of each package, for which languages
PO files have been submitted to translation coordination, with a
translation percentage of at least 50%.
Ready PO files bg ca cs da de el en eo es et fi fr
+-------------------------------------+
a2ps | [] [] [] [] |
bash | [] [] [] [] |
bfd | [] [] |
binutils | [] [] |
bison | [] [] [] |
clisp | [] [] [] [] |
cpio | [] [] [] [] |
diffutils | [] [] [] [] [] [] |
enscript | [] [] |
error | [] [] |
fetchmail | () [] [] [] () |
fileutils | [] [] [] [] [] |
findutils | [] [] [] [] [] |
flex | [] [] [] |
gas | [] |
gawk | [] [] |
gcal | [] [] |
gcc | [] [] |
gettext | [] [] [] [] [] |
gnupg | [] [] [] [] [] [] |
gprof | [] [] |
grep | [] [] [] [] [] [] |
hello | [] [] [] [] [] [] [] [] |
id-utils | [] [] [] |
indent | [] [] [] [] |
jpilot | () [] [] [] |
jwhois | [] [] |
kbd | [] |
ld | [] [] |
libc | [] [] [] [] [] [] [] |
lilypond | [] [] |
lynx | [] [] [] [] |
m4 | [] [] [] [] [] |
make | [] [] [] [] |
mysecretdiary | [] [] |
nano | [] () [] [] [] [] |
nano_1_0 | [] () [] [] [] [] |
opcodes | [] [] [] |
parted | [] [] [] [] |
ptx | [] [] [] [] [] |
python | |
recode | [] [] [] [] [] [] |
sed | [] [] [] [] [] [] [] [] |
sh-utils | [] [] [] [] [] [] [] [] |
sharutils | [] [] [] [] [] [] |
sketch | () [] () |
soundtracker | [] [] [] |
sp | |
tar | [] [] [] [] [] [] |
texinfo | [] [] [] [] [] |
textutils | [] [] [] [] |
util-linux | [] [] [] [] |
wdiff | [] [] [] [] [] |
wget | [] [] [] [] [] [] [] [] |
+-------------------------------------+
bg ca cs da de el en eo es et fi fr
0 8 12 31 36 9 1 9 37 15 1 49
Ready PO files be bg ca cs da de el en eo es et fi fr
+----------------------------------------+
a2ps | [] [] [] [] |
ap-utils | |
bash | [] [] [] [] |
bfd | [] [] |
binutils | [] [] |
bison | [] [] [] [] |
clisp | |
clisp | [] [] [] [] |
clisplow | |
cpio | [] [] [] [] |
darkstat | () |
diffutils | [] [] [] [] [] [] |
enscript | [] [] |
error | [] [] [] |
fetchmail | [] () [] [] [] () |
fileutils | [] [] [] [] [] |
findutils | [] [] [] [] [] [] |
flex | [] [] [] [] [] |
gas | [] [] |
gawk | [] [] [] |
gcal | [] [] |
gcc | [] [] |
gettext | [] [] [] [] [] |
gnupg | [] [] [] [] [] [] [] |
gprof | [] [] |
gpsdrive | () () () () () |
grep | [] [] [] [] [] [] [] [] |
gretl | [] |
gthumb | () () () |
hello | [] [] [] [] [] [] [] [] [] |
id-utils | [] [] [] |
indent | [] [] [] [] [] |
jpilot | () [] [] [] |
jwhois | [] [] |
kbd | [] [] [] |
ld | [] [] |
libc | [] [] [] [] [] [] [] [] |
libiconv | [] [] [] [] |
lifelines | () () |
lilypond | [] [] |
lingoteach | [] [] |
lingoteach_lessons| () () |
lynx | [] [] [] [] [] |
m4 | [] [] [] [] [] |
make | [] [] [] [] |
man-db | [] () () [] () () |
mysecretdiary | [] [] [] |
nano | [] () [] [] [] [] |
nano_1_0 | [] () [] [] [] [] |
opcodes | [] [] [] |
parted | [] [] [] [] [] |
ptx | [] [] [] [] [] [] [] |
python | |
recode | [] [] [] [] [] [] |
sed | [] [] [] [] [] [] [] [] [] [] |
sh-utils | [] [] [] [] |
sharutils | [] [] [] [] [] [] [] |
sketch | () [] () |
soundtracker | [] [] [] |
sp | [] |
tar | [] [] [] [] [] [] |
texinfo | [] [] [] [] [] |
textutils | [] [] [] [] [] |
util-linux | [] [] [] [] [] [] |
vorbis-tools | [] |
wastesedge | |
wdiff | [] [] [] [] [] [] |
wget | [] [] [] [] [] [] [] [] [] [] |
+----------------------------------------+
be bg ca cs da de el en eo es et fi fr
0 2 19 10 30 44 9 1 12 44 17 6 53
gl he hr hu id it ja ko lv nb nl nn
+-------------------------------------+
a2ps | () () [] |
bash | |
ap-utils | |
bash | [] |
bfd | [] |
binutils | [] |
bison | [] |
bison | [] [] [] [] |
clisp | |
clisp | [] |
cpio | [] [] [] |
diffutils | [] [] |
enscript | [] |
clisplow | |
cpio | [] [] [] [] |
darkstat | |
diffutils | [] [] [] [] [] |
enscript | [] [] |
error | [] |
fetchmail | |
fileutils | [] [] |
findutils | [] [] [] [] [] [] |
fetchmail | [] |
fileutils | [] [] [] |
findutils | [] [] [] [] [] [] [] [] |
flex | [] |
gas | |
gawk | [] |
gcal | |
gcc | [] |
gettext | [] |
gnupg | [] [] [] |
gprof | |
grep | [] [] |
hello | [] [] [] [] [] [] [] [] [] |
id-utils | [] |
indent | [] [] [] |
gettext | [] [] |
gnupg | [] [] [] [] |
gprof | [] |
gpsdrive | [] () () |
grep | [] [] [] [] [] [] [] |
gretl | |
gthumb | () () |
hello | [] [] [] [] [] [] [] [] [] [] [] [] |
id-utils | [] [] |
indent | [] [] [] [] |
jpilot | () () |
jwhois | |
jwhois | [] [] |
kbd | |
ld | |
libc | [] [] [] [] |
lilypond | [] [] |
lynx | [] [] |
libiconv | [] [] [] |
lifelines | |
lilypond | [] |
lingoteach | [] |
lingoteach_lessons| |
lynx | [] [] [] [] |
m4 | [] [] [] [] |
make | [] [] [] [] |
mysecretdiary | |
nano | [] [] [] () () [] |
nano_1_0 | [] [] [] () () [] |
opcodes | |
make | [] [] [] [] [] [] |
man-db | () () |
mysecretdiary | [] |
nano | [] [] [] [] |
nano_1_0 | [] [] [] [] [] |
opcodes | [] [] |
parted | [] [] [] |
ptx | [] [] [] [] |
ptx | [] [] [] [] [] |
python | |
recode | [] [] [] |
sed | [] [] [] [] [] [] [] |
sh-utils | [] [] [] [] [] |
sed | [] [] [] [] [] [] [] [] |
sh-utils | [] [] [] |
sharutils | [] [] [] |
sketch | () |
soundtracker | [] |
soundtracker | [] [] |
sp | |
tar | [] [] [] |
tar | [] [] [] [] [] [] |
texinfo | [] [] [] |
textutils | [] [] |
textutils | [] [] [] [] |
util-linux | () [] |
wdiff | |
wget | [] [] [] [] [] |
vorbis-tools | [] |
wastesedge | |
wdiff | [] [] [] |
wget | [] [] [] [] [] [] |
+-------------------------------------+
gl he hr hu id it ja ko lv nb nl nn
20 6 1 3 6 11 22 9 1 6 17 4
23 9 12 19 16 13 26 9 1 7 19 3
no pl pt pt_BR ru sk sl sv tr uk zh
+-------------------------------------+
a2ps | () () () [] [] [] () | 8
bash | | 4
bfd | [] [] | 5
binutils | [] | 4
bison | [] [] [] | 7
clisp | | 5
cpio | [] [] [] [] | 11
diffutils | [] [] [] | 11
enscript | [] [] [] | 6
error | [] [] | 5
fetchmail | () () | 3
fileutils | [] [] [] [] | 11
findutils | [] [] [] [] [] [] | 17
flex | [] [] | 6
gas | [] | 2
gawk | [] [] | 5
gcal | [] | 3
gcc | [] | 4
gettext | [] [] [] [] | 10
gnupg | [] [] [] | 12
gprof | [] [] | 4
grep | [] [] [] [] [] | 13
hello | [] [] [] [] [] [] [] | 24
id-utils | [] [] | 6
indent | [] [] [] [] | 11
jpilot | () () | 3
jwhois | () () | 2
kbd | [] [] | 3
ld | [] [] | 4
libc | [] [] [] [] [] [] | 17
lilypond | [] | 5
lynx | [] [] [] | 9
m4 | [] [] [] | 12
make | [] [] [] [] | 12
mysecretdiary | [] | 3
nano | () [] [] [] | 12
nano_1_0 | () [] [] [] | 12
opcodes | [] [] | 5
parted | [] [] [] | 10
ptx | [] [] [] [] [] [] | 15
python | | 0
recode | [] [] [] [] | 13
sed | [] [] [] [] [] [] | 21
sh-utils | [] [] [] [] [] [] [] [] [] | 22
sharutils | [] [] | 11
sketch | () | 1
soundtracker | | 4
sp | | 0
tar | [] [] [] [] [] [] [] | 16
texinfo | [] [] | 10
textutils | [] [] | 8
util-linux | [] [] [] | 8
wdiff | [] [] [] [] | 9
wget | [] [] [] [] [] [] | 19
+-------------------------------------+
35 teams no pl pt pt_BR ru sk sl sv tr uk zh
54 domains 5 12 2 11 25 10 11 39 29 4 1 463
no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
+----------------------------------------------+
a2ps | () () () [] [] [] [] [] | 10
ap-utils | () | 0
bash | [] | 6
bfd | [] [] | 5
binutils | [] [] | 5
bison | [] [] [] [] | 12
clisp | | 0
clisp | | 5
clisplow | | 0
cpio | [] [] [] [] | 12
darkstat | [] [] () () | 2
diffutils | [] [] [] [] [] [] | 17
enscript | [] [] [] [] | 8
error | [] [] [] | 7
fetchmail | () () [] | 6
fileutils | [] [] [] [] [] [] | 14
findutils | [] [] [] [] [] [] [] | 21
flex | [] [] [] | 9
gas | [] | 3
gawk | [] [] | 6
gcal | [] [] | 4
gcc | [] | 4
gettext | [] [] [] [] [] [] | 13
gnupg | [] [] [] | 14
gprof | [] [] | 5
gpsdrive | [] [] | 3
grep | [] [] [] [] [] | 20
gretl | | 1
gthumb | () () [] | 1
hello | [] [] [] [] [] [] [] | 28
id-utils | [] [] [] [] | 9
indent | [] [] [] [] [] | 14
jpilot | () () [] [] | 5
jwhois | [] () () [] [] | 7
kbd | [] [] | 5
ld | [] [] | 4
libc | [] [] [] [] [] [] | 18
libiconv | [] [] [] [] [] | 12
lifelines | [] | 1
lilypond | [] | 4
lingoteach | [] [] | 5
lingoteach_lessons| () | 0
lynx | [] [] [] [] | 13
m4 | [] [] [] [] | 13
make | [] [] [] [] [] | 15
man-db | | 3
mysecretdiary | [] [] [] | 7
nano | [] [] [] [] | 13
nano_1_0 | [] [] [] [] | 14
opcodes | [] [] [] | 8
parted | [] [] [] [] | 12
ptx | [] [] [] [] [] [] [] | 19
python | | 0
recode | [] [] [] [] [] [] | 15
sed | [] [] [] [] [] [] | 24
sh-utils | [] [] | 9
sharutils | [] [] [] [] | 14
sketch | [] () [] | 4
soundtracker | [] | 6
sp | | 1
tar | [] [] [] [] [] [] [] | 19
texinfo | [] [] | 10
textutils | [] [] [] [] [] | 14
util-linux | [] [] [] | 10
vorbis-tools | [] | 3
wastesedge | | 0
wdiff | [] [] [] [] [] | 14
wget | [] [] [] [] [] [] [] [] | 24
+----------------------------------------------+
37 teams no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
68 domains 4 15 2 28 28 12 10 49 43 4 1 9 609
Some counters in the preceding matrix are higher than the number of
visible blocks let us expect. This is because a few extra PO files are
@@ -367,7 +409,7 @@ distributed as such by its maintainer. There might be an observable
lag between the mere existence a PO file and its wide availability in a
distribution.
If January 2002 seems to be old, you may fetch a more recent copy of
If August 2002 seems to be old, you may fetch a more recent copy of
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
matrix with full percentage details can be found at
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.

86
AUTHORS Normal file
View File

@@ -0,0 +1,86 @@
Here are the names of the programs in this package,
each followed by the name(s) of its author(s).
basename: FIXME unknown
cat: Torbjorn Granlund and Richard M. Stallman
chgrp: David MacKenzie
chmod: David MacKenzie
chown: David MacKenzie
chroot: Roland McGrath
cksum: Q. Frank Xia
comm: Richard Stallman and David MacKenzie
cp: Torbjorn Granlund, David MacKenzie, and Jim Meyering
csplit: Stuart Kemp and David MacKenzie
cut: David Ihnat, David MacKenzie, and Jim Meyering
date: David MacKenzie
dd: Paul Rubin, David MacKenzie, and Stuart Kemp
df: Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert
dircolors: H. Peter Anvin
dirname: David MacKenzie and Jim Meyering
du: Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert
echo: FIXME unknown
env: Richard Mlynarik and David MacKenzie
expand: David MacKenzie
expr: Mike Parker
factor: Paul Rubin
false: no one
fmt: Ross Paterson
fold: David MacKenzie
head: David MacKenzie
hostid: Jim Meyering
hostname: Jim Meyering
id: Arnold Robbins and David MacKenzie
install: David MacKenzie
join: Mike Haertel
kill: Paul Eggert
link: Michael Stone
ln: Mike Parker and David MacKenzie
logname: FIXME: unknown
ls: Richard Stallman and David MacKenzie
md5sum: Ulrich Drepper and Scott Miller
mkdir: David MacKenzie
mkfifo: David MacKenzie
mknod: David MacKenzie
mv: Mike Parker, David MacKenzie, and Jim Meyering
nice: David MacKenzie
nl: Scott Bartram and David MacKenzie
od: Jim Meyering
paste: David M. Ihnat and David MacKenzie
pathchk: David MacKenzie and Jim Meyering
pinky: Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi
pr: Pete TerMaat and Roland Huebner
printenv: David MacKenzie and Richard Mlynarik
printf: David MacKenzie
ptx: François Pinard
pwd: Jim Meyering
rm: Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering
rmdir: David MacKenzie
seq: Ulrich Drepper
shred: Colin Plumb
sleep: Jim Meyering and Paul Eggert
sort: Mike Haertel and Paul Eggert
split: Torbjorn Granlund and Richard M. Stallman
stat: Michael Meskes
stty: David MacKenzie
su: David MacKenzie
sum: Kayvan Aghaiepour and David MacKenzie
sync: Jim Meyering
tac: Jay Lepreau and David MacKenzie
tail: Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering
tee: Mike Parker, Richard M. Stallman, and David MacKenzie
test: FIXME: ksb and mjb
touch: Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith
tr: Jim Meyering
true: no one
tsort: Mark Kettenis
tty: David MacKenzie
uname: David MacKenzie
unexpand: David MacKenzie
uniq: Richard Stallman and David MacKenzie
unlink: Michael Stone
uptime: Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi
users: Joseph Arceneaux and David MacKenzie
wc: Paul Rubin and David MacKenzie
who: Joseph Arceneaux, David MacKenzie, and Michael Stone
whoami: Richard Mlynarik
yes: David MacKenzie

1292
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -14,6 +14,9 @@ have-Makefile := $(shell test -f Makefile && echo yes)
# give them a diagnostic.
ifeq ($(have-Makefile),yes)
# Make tar archive easier to reproduce.
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
include Makefile
include $(srcdir)/Makefile.cfg
include $(srcdir)/Makefile.maint

48
Makefile.am Normal file
View File

@@ -0,0 +1,48 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
SUBDIRS = lib src doc man m4 po tests
EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
.kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
announce-gen \
old/fileutils/ChangeLog \
old/fileutils/ChangeLog-1997 \
old/sh-utils/ChangeLog \
old/sh-utils/ChangeLog.0 \
old/textutils/ChangeLog \
old/fileutils/NEWS \
old/sh-utils/NEWS \
old/textutils/NEWS
install-root:
cd src && $(MAKE) $@
ACLOCAL_AMFLAGS = -I m4
# Some tests always need root privileges, others need them only sometimes.
check-root:
cd tests && $(MAKE) $@
distcheck-hook:
$(MAKE) my-distcheck
# Just prior to distribution, ...
# transform the automake-generated rule that runs `rm -f rm'.
# On some systems, that command would fail with a diagnostic like
# `rm: cannot unlink `rm': Text file busy' when `.' appears so early
# in the shell's search path that running `rm' would run the `rm'
# executable in the current directory.
# Similarly, adjust the clean-binPROGRAMS rule.
rm_subst = \
s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
.kludge-stamp: $(srcdir)/src/Makefile.in
perl -pi -e '$(rm_subst)' $(srcdir)/src/Makefile.in
touch $@
THANKS-to-translators: po/LINGUAS THANKStt.in
( \
cat $(srcdir)/THANKStt.in; \
for lang in `cat po/LINGUAS`; do \
echo http://www.iro.umontreal.ca/contrib/po/HTML/team-$$lang.html; \
done; \
) > $@-tmp && mv $@-tmp $@

View File

@@ -1,39 +1,29 @@
# -*- makefile -*-
## Customize Makefile.maint.
# If the version number matches /^\d+.\d+.\d$/ or /[a-z]$/, use alpha.gnu.org.
# Otherwise, use ftp.gnu.org.
gnu_rel_host := \
$(shell perl -e \
'print "$(VERSION)" =~ /^(\d\.\d\.\d|.*[a-z])$$/ ? "alpha" : "ftp"')
url_dir_list = \
ftp://alpha.gnu.org/gnu/fetish \
ftp://$(gnu_rel_host).gnu.org/gnu/coreutils \
http://fetish.sf.net \
# Files that `make wget-update' should update.
# Files to update automatically.
wget_files = \
$(srcdir)/config/config.guess \
$(srcdir)/config/config.sub \
$(srcdir)/config/texinfo.tex
cvs_files = \
$(srcdir)/config/elisp-comp \
$(srcdir)/config/mdate-sh \
$(srcdir)/config/missing \
$(srcdir)/config/install-sh \
$(srcdir)/config/mkinstalldirs
# $(srcdir)/src/ansi2knr.c
###############################################
# FIXME: CAUTION this list is a duplicate of one in lib/Makefile.am.
io_functions = \
clearerr feof ferror fflush fgets fputc fputs \
fread fwrite getc getchar putc putchar
unlocked_io_functions = $(patsubst %,%_unlocked,$(io_functions))
comma_separated = $(shell echo $(unlocked_io_functions)|tr -s ' ' ,)
# This temp file may not be e.g., $@t, since that may be in a read-only
# directory. Instead, use a file in the current directory.
t_io = $(notdir $@)t
# This rule requires GNU make.
$(srcdir)/m4/jm-glibc-io.m4: $(srcdir)/m4/jm-glibc-io.m4n Makefile.cfg
echo dnl This file is automatically generated from $(notdir $<). \
> $(t_io)
echo >> $(t_io)
sed \
-e 's/@space_separated@/$(unlocked_io_functions)/g' \
-e 's/@comma_separated@/$(comma_separated)/g' \
$< >> $(t_io)
mv $(t_io) $@
local_updates = wget-update cvs-update

607
Makefile.in Normal file
View File

@@ -0,0 +1,607 @@
# Makefile.in generated by automake 1.7.2 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_triplet = @host@
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DF_PROG = @DF_PROG@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FESETROUND_LIBM = @FESETROUND_LIBM@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GLIBC21 = @GLIBC21@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
HELP2MAN = @HELP2MAN@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
KMEM_GROUP = @KMEM_GROUP@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
LIB_CRYPT = @LIB_CRYPT@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MSGMERGE = @MSGMERGE@
NEED_SETGID = @NEED_SETGID@
OBJEXT = @OBJEXT@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
POSUB = @POSUB@
POW_LIB = @POW_LIB@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SQRT_LIBM = @SQRT_LIBM@
STRIP = @STRIP@
U = @U@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__quote = @am__quote@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
SUBDIRS = lib src doc man m4 po tests
EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
.kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
announce-gen \
old/fileutils/ChangeLog \
old/fileutils/ChangeLog-1997 \
old/sh-utils/ChangeLog \
old/sh-utils/ChangeLog.0 \
old/textutils/ChangeLog \
old/fileutils/NEWS \
old/sh-utils/NEWS \
old/textutils/NEWS
ACLOCAL_AMFLAGS = -I m4
# Just prior to distribution, ...
# transform the automake-generated rule that runs `rm -f rm'.
# On some systems, that command would fail with a diagnostic like
# `rm: cannot unlink `rm': Text file busy' when `.' appears so early
# in the shell's search path that running `rm' would run the `rm'
# executable in the current directory.
# Similarly, adjust the clean-binPROGRAMS rule.
rm_subst = \
s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
DIST_SOURCES =
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
ps-recursive install-info-recursive uninstall-info-recursive \
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive
DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
Makefile.am Makefile.in NEWS THANKS TODO aclocal.m4 config.hin \
config/ChangeLog config/config.guess config/config.rpath \
config/config.sub config/depcomp config/install-sh \
config/mdate-sh config/missing config/mkinstalldirs \
config/texinfo.tex configure configure.ac
DIST_SUBDIRS = $(SUBDIRS)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnits Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): configure.ac m4/acl.m4 m4/afs.m4 m4/assert.m4 m4/bison.m4 m4/boottime.m4 m4/c-stack.m4 m4/canonicalize.m4 m4/check-decl.m4 m4/chown.m4 m4/codeset.m4 m4/d-ino.m4 m4/d-type.m4 m4/dirfd.m4 m4/dos.m4 m4/error.m4 m4/fpending.m4 m4/fstypename.m4 m4/fsusage.m4 m4/ftruncate.m4 m4/ftw.m4 m4/getcwd.m4 m4/getgroups.m4 m4/getline.m4 m4/gettext.m4 m4/gettimeofday.m4 m4/glibc.m4 m4/glibc21.m4 m4/group-member.m4 m4/host-os.m4 m4/iconv.m4 m4/intdiv0.m4 m4/inttypes-pri.m4 m4/inttypes.m4 m4/isc-posix.m4 m4/jm-glibc-io.m4 m4/jm-macros.m4 m4/jm-mktime.m4 m4/jm-winsz1.m4 m4/jm-winsz2.m4 m4/lchown.m4 m4/lcmessage.m4 m4/lib-check.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/link-follow.m4 m4/longlong.m4 m4/ls-mntd-fs.m4 m4/lstat.m4 m4/mbrtowc.m4 m4/mbswidth.m4 m4/memcmp.m4 m4/mkdir-slash.m4 m4/mkstemp.m4 m4/nanosleep.m4 m4/onceonly.m4 m4/open-max.m4 m4/perl.m4 m4/prereq.m4 m4/progtest.m4 m4/putenv.m4 m4/regex.m4 m4/rename.m4 m4/rmdir-errno.m4 m4/search-libs.m4 m4/st_dm_mode.m4 m4/st_mtim.m4 m4/stat.m4 m4/stdbool.m4 m4/strftime.m4 m4/timespec.m4 m4/unlink-busy.m4 m4/uptime.m4 m4/utimbuf.m4 m4/utime.m4 m4/utimes.m4 m4/xstrtoimax.m4 m4/xstrtoumax.m4
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.hin: $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOHEADER)
touch $(srcdir)/config.hin
distclean-hdr:
-rm -f config.h stamp-h1
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ETAGS = etags
ETAGSFLAGS =
CTAGS = ctags
CTAGSFLAGS =
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .
distdir = $(PACKAGE)-$(VERSION)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
distdir: $(DISTFILES)
@case `sed 15q $(srcdir)/NEWS` in \
*"$(VERSION)"*) : ;; \
*) \
echo "NEWS not updated; not releasing" 1>&2; \
exit 1;; \
esac
$(am__remove_distdir)
mkdir $(distdir)
$(mkinstalldirs) $(distdir)/config $(distdir)/old/fileutils $(distdir)/old/sh-utils $(distdir)/old/textutils $(distdir)/po
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" \
distdir=../$(distdir)/$$subdir \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist dist-all: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
$(am__remove_distdir)
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
&& cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
&& rm -f $(distdir).tar.gz \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@echo "$(distdir).tar.gz is ready for distribution" | \
sed 'h;s/./=/g;p;x;p;x'
distuninstallcheck:
cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
dvi: dvi-recursive
dvi-am:
info: info-recursive
info-am:
install-data-am:
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf autom4te.cache
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
clean-generic clean-recursive ctags ctags-recursive dist \
dist-all dist-bzip2 dist-gzip distcheck distclean \
distclean-generic distclean-hdr distclean-recursive \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am dvi-recursive info info-am info-recursive install \
install-am install-data install-data-am install-data-recursive \
install-exec install-exec-am install-exec-recursive \
install-info install-info-am install-info-recursive install-man \
install-recursive install-strip installcheck installcheck-am \
installdirs installdirs-am installdirs-recursive \
maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
ps-recursive tags tags-recursive uninstall uninstall-am \
uninstall-info-am uninstall-info-recursive uninstall-recursive
install-root:
cd src && $(MAKE) $@
# Some tests always need root privileges, others need them only sometimes.
check-root:
cd tests && $(MAKE) $@
distcheck-hook:
$(MAKE) my-distcheck
.kludge-stamp: $(srcdir)/src/Makefile.in
perl -pi -e '$(rm_subst)' $(srcdir)/src/Makefile.in
touch $@
THANKS-to-translators: po/LINGUAS THANKStt.in
( \
cat $(srcdir)/THANKStt.in; \
for lang in `cat po/LINGUAS`; do \
echo http://www.iro.umontreal.ca/contrib/po/HTML/team-$$lang.html; \
done; \
) > $@-tmp && mv $@-tmp $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -2,7 +2,7 @@
# This Makefile fragment is shared between fileutils, sh-utils, textutils,
# CPPI, Bison, and Autoconf.
## Copyright (C) 2001-2002 Free Software Foundation, Inc.
## Copyright (C) 2001-2003 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 @@
# Do not save the original name or timestamp in the .tar.gz file.
GZIP_ENV = '--no-name --best'
# Automake 1.4 does not define AMTAR.
AMTAR ?= $(TAR)
CVS = cvs
prev_version_file ?= .prev-version
@@ -55,7 +52,7 @@ release_archive_dir ?= ../release
# new ChangeLog entries.
local-check = \
po-check copyright-check writable-files m4-check author_mark_check \
changelog-check strftime-check header-check
changelog-check strftime-check header-check makefile_path_separator_check
.PHONY: $(local-check)
# Make sure C source files in src/ don't include xalloc.h directly,
@@ -100,7 +97,16 @@ m4-check:
po-check:
if test -f po/POTFILES.in; then \
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
grep -E -l '\b_\(' lib/*.[ch] src/*.[ch] | sort > $@-2; \
files=; \
for file in lib/*.[chly] src/*.[chly]; do \
case $$file in \
*.[ch]) \
base=`expr " $$file" : ' \(.*\)\..'`; \
{ test -f $$base.l || test -f $$base.y; } && continue;; \
esac; \
files="$$files $$file"; \
done; \
grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort > $@-2; \
diff -u $@-1 $@-2 || exit 1; \
rm -f $@-1 $@-2; \
fi
@@ -113,7 +119,17 @@ author_mark_check:
{ echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
exit 1; } || :
# Check that `make alpha' will not fail at the end of the process.
# Sometimes it is useful to change the PATH environment variable
# in Makefiles. When doing so, it's better not to use the Unix-centric
# path separator of `:', but rather the automake-provided `@PATH_SEPARATOR@'.
# It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
# and there probably aren't many projects with so many Makefile.am files
# that we'd have to worry about limits on command line length.
msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
makefile_path_separator_check:
@grep 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
&& { echo $(msg) 1>&2; exit 1; } || :
writable-files:
if test -d $(release_archive_dir); then :; else \
mkdir $(release_archive_dir); \
@@ -225,51 +241,80 @@ rel-check:
prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
news-r1 = /^[^ ].*$(THIS_VERSION_REGEXP)[]:]/
news-r2 = /^[^ ].*$(PREV_VERSION_REGEXP)[]:]/
signatures ?= $(distdir).tar.bz2.sig $(distdir).tar.gz.sig
%.sig: %
gpg --detach-sign $<
rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz
announcement: NEWS ChangeLog $(rel-files)
@( \
echo Subject: $(my_distdir) released; \
echo; \
echo FIXME: put comments here; \
echo; \
for url in $(url_dir_list); do \
echo " $$url/$(my_distdir).tar.gz ($(tgz-size))"; \
echo " $$url/$(my_distdir).tar.bz2 ($(bz2-size))"; \
done; \
echo; \
echo And here are xdelta-style diffs; \
echo; \
for url in $(url_dir_list); do \
echo " $$url/$(xd-delta) ($(xd-size))"; \
done; \
echo; \
echo "Here are the MD5 and SHA1 signatures:"; \
echo; \
echo "$(tgz-md5) $(my_distdir).tar.gz"; \
echo "$(bz2-md5) $(my_distdir).tar.bz2"; \
echo "$(xdelta-md5) $(xd-delta)"; \
echo "$(tgz-sha1) $(my_distdir).tar.gz"; \
echo "$(bz2-sha1) $(my_distdir).tar.bz2"; \
echo "$(xdelta-sha1) $(xd-delta)"; \
echo; \
echo NEWS:; \
sed -n "/$(THIS_VERSION_REGEXP)[]:]/,/$(PREV_VERSION_REGEXP)[]:]/p" NEWS \
| grep -v '^\['; \
echo; \
echo ChangeLog entries:; \
find . -name ChangeLog -maxdepth 2 \
| xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD \
| sed -n 's/^+//p' \
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
announcement: NEWS ChangeLog $(rel-files) $(signatures)
@( \
./announce-gen \
--package=$(PACKAGE) \
--prev=$(PREV_VERSION) \
--curr=$(VERSION) \
--rel=$(release_archive_dir) \
$(addprefix --url-dir=, $(url_dir_list)); \
echo; \
echo NEWS:; \
sed -n "$(news-r1),$(news-r2)p" NEWS \
| grep -v '^\['; \
echo; \
echo ChangeLog entries:; \
find . -name ChangeLog -maxdepth 2 \
| xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD \
| sed -n 's/^+//p' \
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
)
## ---------------- ##
## Updating files. ##
## ---------------- ##
WGET = wget
ftp-gnu = ftp://ftp.gnu.org/gnu
# Use mv, if you don't have/want move-if-change.
move_if_change ?= move-if-change
# --------------------- #
# Updating everything. #
# --------------------- #
.PHONY: update
local_updates ?= wget-update cvs-update po-update
update: $(local_updates)
# ------------------- #
# Updating PO files. #
# ------------------- #
po_repo = http://www.iro.umontreal.ca/contrib/po/maint/$(PACKAGE)
.PHONY: do-po-update po-update
do-po-update:
tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\
rm -rf $$tmppo && \
mkdir $$tmppo && \
(cd $$tmppo && $(WGET) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\
cp $$tmppo/*.po po
cd po && $(MAKE) update-po
$(MAKE) po-check
po-update:
if test -d "po"; then \
$(MAKE) do-po-update; \
fi
# -------------------------- #
# Updating GNU build tools. #
# -------------------------- #
# The following pseudo table associates a local directory and a URL
# with each of the files that belongs to some other package and is
# regularly updated from the specified URL.
@@ -297,16 +342,27 @@ $(get-targets):
$(WGET) $(url) -O $(target).t \
&& $(move_if_change) $(target).t $(target)
automake_repo=:pserver:anoncvs@anoncvs.cygnus.com:/cvs/automake
cvs_files ?= $(srcdir)/config/depcomp $(srcdir)/config/missing \
$(srcdir)/config/mkinstalldirs \
$(srcdir)/config/install-sh $(srcdir)/src/ansi2knr.c
automake_repo=:pserver:anoncvs:anoncvs@sources.redhat.com:/cvs/automake
.PHONY: wget-update
wget-update: $(get-targets)
cd config && \
for f in depcomp missing mkinstalldirs; do \
.PHONY: cvs-update
cvs-update:
fail=; \
for f in $(cvs_files); do \
test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \
echo checking out $$f...; \
$(CVS) -d $(automake_repo) co -p automake/lib/$$f > $$f.t \
cvs diff $$f > /dev/null \
|| { echo "*** $$f is locally modified; skipping it" 1>&2; \
fail=yes; continue; }; \
file=$$(basename $$f); \
echo checking out $$file...; \
$(CVS) -d $(automake_repo) co -p automake/lib/$$file> $$f.t \
&& $(move_if_change) $$f.t $$f; \
done
done; \
test "$$fail" && exit 1
define emit-upload-commands
echo =====================================
@@ -320,7 +376,9 @@ endef
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
xdelta delta -9 $^ $@ || :
alpha: $(local-check)
.PHONY: alpha release
alpha: release
release: $(local-check)
$(MAKE) cvs-dist
$(MAKE) $(xd-delta)
$(MAKE) -s announcement > /tmp/announce-$(my_distdir)

76
NEWS Normal file
View File

@@ -0,0 +1,76 @@
[4.5.5]
* ls --dired produces correct byte offset for file names containing
nonprintable characters in a multibyte locale
* du has been rewritten to use a variant of GNU libc's ftw.c
* du now counts the space associated with a directory's directory entry,
even if it cannot list or chdir into that subdirectory.
* du -S now includes the st_size of each entry corresponding to a subdirectory
* rm on FreeBSD can once again remove directories from NFS-mounted file systems
* ls has a new option --dereference-command-line-symlink-to-dir, which
corresponds to the new default behavior when none of -d, -l -F, -H, -L
has been specified.
* ls dangling-symlink now prints `dangling-symlink'.
Before, it would fail with `no such file or directory'.
* ls -s symlink-to-non-dir and ls -i symlink-to-non-dir now print
attributes of `symlink', rather than attributes of their referents.
* Fix a bug introduced in 4.5.4 that made it so that ls --color would no
longer highlight the names of files with the execute bit set when not
specified on the command line.
* shred's --zero (-z) option no longer gobbles up any following argument.
Before, `shred --zero file' would produce `shred: missing file argument',
and worse, `shred --zero f1 f2 ...' would appear to work, but would leave
the first file untouched.
* readlink: new program
* cut: new feature: when used to select ranges of byte offsets (as opposed
to ranges of fields) and when --output-delimiter=STRING is specified,
output STRING between ranges of selected bytes.
* rm -r can no longer be tricked into mistakenly reporting a cycle.
* when rm detects a directory cycle, it no longer aborts the entire command,
but rather merely stops processing the affected command line argument.
[4.5.4]
* cp no longer fails to parse options like this: --preserve=mode,ownership
* `ls --color -F symlink-to-dir' works properly
* ls is much more efficient on directories with valid dirent.d_type.
* stty supports all baud rates defined in linux-2.4.19.
* `du symlink-to-dir/' would improperly remove the trailing slash
* `du ""' would evoke a bounds violation.
* In the unlikely event that running `du /' resulted in `stat ("/", ...)'
failing, du would give a diagnostic about `' (empty string) rather than `/'.
* printf: a hexadecimal escape sequence has at most two hex. digits, not three.
* The following features have been added to the --block-size option
and similar environment variables of df, du, and ls.
- A leading "'" generates numbers with thousands separators.
For example:
$ ls -l --block-size="'1" file
-rw-rw-r-- 1 eggert src 47,483,707 Sep 24 23:40 file
- A size suffix without a leading integer generates a suffix in the output.
For example:
$ ls -l --block-size="K"
-rw-rw-r-- 1 eggert src 46371K Sep 24 23:40 file
* ls's --block-size option now affects file sizes in all cases, not
just for --block-size=human-readable and --block-size=si. Fractional
sizes are now always rounded up, for consistency with df and du.
* df now displays the block size using powers of 1000 if the requested
block size seems to be a multiple of a power of 1000.
* nl no longer gets a segfault when run like this `yes|nl -s%n'
[4.5.3]
* du --dereference-args (-D) no longer fails in certain cases
* `ln --target-dir=DIR' no longer fails when given a single argument
[4.5.2]
* `rm -i dir' (without --recursive (-r)) no longer recurses into dir
* `tail -c N FILE' now works with files of size >= 4GB
* `mkdir -p' can now create very deep (e.g. 40,000-component) directories
* rmdir -p dir-with-trailing-slash/ no longer fails
* printf now honors the `--' command line delimiter
* od's 8-byte formats x8, o8, and u8 now work
* tail now accepts fractional seconds for its --sleep-interval=S (-s) option
[4.5.1]
* du and ls now report sizes of symbolic links (before they'd always report 0)
* uniq now obeys the LC_COLLATE locale, as per POSIX 1003.1-2001 TC1.
This package began as the union of the following:
textutils-2.1, fileutils-4.1.11, sh-utils-2.0.15.

96
README Normal file
View File

@@ -0,0 +1,96 @@
These are the GNU core utilities. This package is the union of
the GNU fileutils, sh-utils, and textutils packages.
Most of these programs have significant advantages over their Unix
counterparts, such as greater speed, additional options, and fewer
arbitrary limits.
The programs that can be built with this package are:
basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd
df dir dircolors dirname du echo env expand expr factor false fmt fold
ginstall groups head hostid hostname id join kill link ln logname ls
md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
split stat stty su sum sync tac tail tee test touch tr true tsort tty
uname unexpand uniq unlink uptime users vdir wc who whoami yes
See the file NEWS for a list of major changes in the current release.
See the file INSTALL for compilation and installation instructions.
These programs are intended to be POSIX.2 compliant (with BSD and other
extensions), like the rest of the GNU system.
The ls, dir, and vdir commands are all separate executables instead of
one program that checks argv[0] because people often rename these
programs to things like gls, gnuls, l, etc. Renaming a program
file shouldn't affect how it operates, so that people can get the
behavior they want with whatever name they want.
Special thanks to Paul Eggert, Brian Matthews, Bruce Evans, Karl Berry,
Kaveh Ghazi, and François Pinard for help with debugging and porting
these programs. Many thanks to all of the people who have taken the
time to submit problem reports and fixes. All contributed changes are
attributed in the ChangeLog file.
And thanks to the following people who have provided accounts for
portability testing on many different types of systems: Bob Proulx,
Christian Robert, François Pinard, Greg McGary, Harlan Stenn,
Joel N. Weber, Mark D. Roth, Matt Schalit, Nelson H. F. Beebe,
Réjean Payette, Sam Tardieu.
Thanks to Michael Stone for inflicting test releases of the fileutils
on Debian's unstable distribution, and to all the kind folks who used
that distribution and found and reported bugs.
Note that each man page is now automatically generated from a template
and from the corresponding --help usage message. Patches to the template
files (man/*.x) are welcome. However, the authoritative documentation
is in texinfo form in the doc directory.
If you run the tests on a SunOS4.1.4 system, expect the ctime-part of
the ls `time-1' test to fail. I believe that is due to a bug in the
way Sun implemented link(2) and chmod(2).
There are pretty many tests, but nowhere near as many as we need.
Additions and corrections are very welcome.
If you see a problem that you've already reported, feel free to re-report
it -- it won't bother me to get a reminder. Besides, the more messages I
get regarding a particular problem the sooner it'll be fixed -- usually.
If you sent a complete patch and, after a couple weeks you haven't
received any acknowledgement please ping us. A complete patch includes
a well-written ChangeLog entry, unified (diff -u format) diffs relative
to the most recent test release, an explanation for why the patch is
necessary or useful, and if at all possible, enough information to
reproduce whatever problem prompted it.
If your patch adds a new feature, please try to get some sort of consensus
that it is a worthwhile change. One way to do that is to send mail to
bug-gnu-utils@gnu.org (aka the gnu.utils.bug news group) including as
much description and justification as you can. Based on the feedback
that generates, you may be able to convince us that it's worth adding.
WARNING: If you modify files like configure.in, m4/*.m4, aclocal.m4,
or any Makefile.am, then don't be surprised if what gets regenerated no
longer works. To make things work, you'll have to be using appropriate
versions of automake and autoconf. As for what versions are `appropriate',
use the versions of
* autoconf specified via AC_PREREQ in m4/jm-macros.m4
* automake specified via AM_INIT_AUTOMAKE in configure.ac
Usually it's fine to use versions that are newer than those specified.
These programs all recognize the `--version' option. When reporting
bugs, please include in the subject line both the package name/version
and the name of the program for which you found a problem.
For general documentation on the coding and usage standards
this distribution follows, see the GNU Coding Standards,
http://www.gnu.org/prep/standards_toc.html.
Mail suggestions and bug reports for these programs to
the address on the last line of --help output.

View File

@@ -0,0 +1,13 @@
As of 2002-09-01, the GNU fileutils, textutils, and sh-utils
packages have been merged into one, called the GNU coreutils.
See http://www.gnu.org/software/coreutils/ for a description.
For information on the mailing lists associated with the
coreutils package, see these:
http://mail.gnu.org/mailman/listinfo/coreutils-announce
http://mail.gnu.org/mailman/listinfo/bug-coreutils
mailing list archives are here:
http://mail.gnu.org/pipermail/bug-coreutils/

27
README-valgrind Normal file
View File

@@ -0,0 +1,27 @@
#! /bin/bash
# Fix valgrind script to exec "$@", not some var.
# Fix valgrind sources to know about syscall 252, for exit_group
# Convert Makefile.am files:
# find tests -name Makefile.am \
# | xargs grep -wl PATH|xargs perl -pi -e 's,src:\$\$PATH,src/vg:\$\$PATH,'
# Create src/vg:
coreutils=$(echo 'spy:;@echo $(all_programs)' | (cd src; make -f Makefile -f - spy | tr -s '\n ' ' '))
mkdir src/vg
pwd=`pwd`
up=`dirname $pwd`
path='export PATH='$up':${PATH#*:}'
pre='#!/bin/sh\n'"$path"'\n'
n=9
vg='exec /p/bin/valgrind --quiet --num-callers='$n
cat <<EOF > src/vg/gen
for i in $coreutils; do
printf "$pre$vg \$i"' "\$@"\n' > \$i
chmod a+x \$i
done
EOF
cd src/vg
. ./gen

69
THANKS
View File

@@ -1,11 +1,11 @@
These people have contributed to the GNU fileutils, textutils,
and/or sh-utils packages. Some have reported problems, others have
contributed improvements to the documentation, actual code, and even
These people have contributed to the GNU coreutils (formerly, the fileutils,
textutils, and/or sh-utils packages). Some have reported problems, others
have contributed improvements to the documentation, actual code, and even
complete programs. Those contributions are described in the ChangeLog
files. If your name has been left out, if you'd rather not be listed,
or if you'd prefer a different address be used, please let me know.
Some old names and addresses are still in the ChangeLog.
??? kytek@cybercomm.net
Achim Blumensath blume@corona.oche.de
Adam Klein aklein@debian.org
Akim Demaille demaille@inf.enst.fr
@@ -18,6 +18,7 @@ aldomel aldomel@ix.netcom.com
Alen Muzinic zveki@fly.cc.fer.hr
Alexandre Duret-Lutz duret_g@epita.fr
Alexey Solovyov alekso@math.uu.se
Alexey Vyskubov alexey@pippuri.mawhrin.net
Alfred M. Szmidt ams@kemisten.nu
Andi Kleen freitag@alancoxonachip.com
Andre Novaes Cunha Andre.Cunha@br.global-one.net
@@ -38,6 +39,8 @@ Ariel Faigon ariel@cthulhu.engr.sgi.com
Arne H. Juul arnej@solan.unit.no
Arne Henrik Juul arnej@imf.unit.no
Arthur Pool pool@commerce.uq.edu.au
Arun Sharma arun.sharma@intel.com
Augey Mikus mikus@dqc.org
Austin Donnelly Austin.Donnelly@cl.cam.ac.uk
Axel Kittenberger Anshil@gmx.net
Bauke Jan Douma bjdouma@xs4all.nl
@@ -76,23 +79,28 @@ Colin Watson cjw44@riva.ucam.org
Collin Rogowski collin@rogowski.de
Dale Scheetz dwarf@polaris.net
Dan Hagerty hag@gnu.ai.it.edu
Dan Jacobson http://www.geocities.com/jidani
Dan Pascu dan@services.iiruc.ro
Daniel Bergstrom noa@melody.se
Darren Salt ds@youmustbejoking.demon.co.uk
Dave Beckett dajobe@dajobe.org
David Dyck dcd@tc.fluke.COM
David Godfrey dave@delta.demon.co.uk
David Luyer david_luyer@pacific.net.au
Deepak Goel deego@gnufans.org
Dennis Henriksen opus@flamingo.osrl.dk
Derek Clegg dclegg@next.com
Dick Streefland dick_streefland@tasking.com
Dirk Lattermann dlatt@t-online.de
Dirk-Jan Faber djfaber@snow.nl
Dan Jacobson http://www.geocities.com/jidani
Dmitry V. Levin ldv@altlinux.org
Don Parsons dparsons@synapse.kent.edu
Donni Erpel donald@appc11.gsi.de
Doug Coleman coleman@iarc1.ece.utexas.edu
Doug McLaren dougmc@comco.com
Dragos Harabor dharabor@us.oracle.com
Ed Avis epa98@doc.ic.ac.uk
Duncan Roe duncanr@optimation.com.au
Ed Avis ed@membled.com
Edzer Pebesma Edzer.Pebesma@rivm.nl
Eirik Fuller eirik@hackrat.com
Eivind eivindt@multinet.no
@@ -105,32 +113,36 @@ Eric S. Raymond esr@snark.thyrsus.com
Erik Bennett bennett@cvo.oneworld.com
Erik Corry erik@kroete2.freinet.de
Felix Lee flee@teleport.com
Ferdinand fw@scenic.mine.nu
Fletcher Mattox fletcher@cs.utexas.edu
Florin Iucha fiucha@hsys.mic.ro
François Pinard pinard@iro.umontreal.ca
Frank Adler fadler@allesklar.de
Frank T Lofaro ftlofaro@snooks.Egr.UNLV.EDU
François Pinard pinard@iro.umontreal.ca
Fred Fish fnf@ninemoons.com
Frederik Eaton frederik@caltech.edu
Frédéric L. W. Meunier 0@pervalidus.net
Frederik Eaton frederik@caltech.edu
Gabor Z. Papp gzp@gzp.org.hu
Gaël Quéri gqueri@mail.dotcom.fr
Galen Hazelwood galenh@micron.net
Gary Anderson ganderson@clark.net
Gaute Hvoslef Kvalnes gaute@verdsveven.com
Gaël Quéri gqueri@mail.dotcom.fr
Geoff Kuenning geoff@cs.hmc.edu
Geoff Odhner geoff@franklin.com
Geoff Whale geoffw@cse.unsw.EDU.AU
Gerhard Poul gpoul@gnu.org
Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
Göran Uddeborg goeran@uddeborg.pp.se
GOTO Masanori gotom@debian.or.jp
Greg Louis glouis@dynamicro.on.ca
Greg McGary gkm@gnu.org
Greg Schafer gschafer@zip.com.au
Greg Troxel gdt@bbn.com
Greg Wooledge gawooledge@sherwin.com
Gregory Leblanc gleblanc@cu-portland.edu
Göran Uddeborg goeran@uddeborg.pp.se
H. J. Lu hjl@valinux.com
Hans Ginzel hans@matfyz.cz
Hans Lermen lermen@fgan.de
Hans Verkuil hans@wyst.hobby.nl
Harry Liu rliu@lek.ugcs.caltech.edu
Herbert Xu herbert@gondor.apana.org.au
@@ -153,7 +165,7 @@ Jan Nieuwenhuizen janneke@gnu.org
Janos Farkas chexum@shadow.banki.hu
Jarkko Hietaniemi jhi@epsilon.hut.fi
Jeff Moore jbm@mordor.com
Jeff Sheinberg jeffsh@erols.com
Jeff Sheinberg jeffsh@localnet.com
Jens Schmidt jms@jsds.hamburg.com
Jerome Abela abela@hsc.fr
Jesse Thilo jgt2@eecs.lehigh.edu
@@ -162,7 +174,7 @@ Jim Blandy jimb@cyclic.com
Jim Dennis jimd@starshine.org
Joakim Rosqvist dvljrt@cs.umu.se
Jochen Hein jochen@jochen.org
Joe Orton joe@orton.demon.co.uk
Joe Orton joe@manyfish.co.uk
Johan Danielsson joda@pdc.kth.se
John Bley jbb6@acpub.duke.edu
John David Anglin dave.anglin@nrc.ca
@@ -181,8 +193,8 @@ Juan F. Codagnone juam@arnet.com.ar
Jungshik Shin jshin@pantheon.yale.edu
Jürgen Fluk louis@dachau.marco.de
jvogel jvogel@linkny.com
Kai-Uwe Rommel rommel@informatik.tu-muenchen.de
Kai Henningsen kai@debian.org
Kai-Uwe Rommel rommel@informatik.tu-muenchen.de
Kalle Olavi Niemitalo tosi@stekt.oulu.fi
Kamal Paul Nigam Kamal_Paul_Nigam@gs35.sp.cs.cmu.edu
Karl Eichwalder keichwa@gmx.net
@@ -193,13 +205,14 @@ Kaveh R. Ghazi ghazi@caip.rutgers.edu
Keith Owens kaos@audio.apana.org.au
Keith Thompson kst@sdsc.edu
Ken Pizzini kenp@halcyon.com
Kristin E Thomas kristint@us.ibm.com
Kjetil Torgrim Homme kjetilho@ifi.uio.no
Kristoffer Rose kris@diku.dk
??? kytek@cybercomm.net
Larry McVoy lm@sgi.com
Lars Hecking lhecking@nmrc.ucc.ie
Lehti Rami rammer@cs.tut.fi
Leonard N. Zubkoff lnz@dandelion.com
Leonardo Milano lmilano@udel.edu
Lorne Baker lbaker@nitro.avint.net
M. P. Suzuki mpsuzuki@hiroshima-u.ac.jp
Maciej Kwapulinski pikpok@univ.gda.pl
@@ -220,8 +233,10 @@ Mark Nudelman marknu@flash.net
Mark W. Eichin eichin@cygnus.com
Markus Demleitner msdemlei@auriga.ari.uni-heidelberg.de
Martin martin@dresden.nacamar.de
Martin Buck martin.buck@ascom.ch
Martin Gallant martyg@goodbit.net
Martin Hippe martin.hippe@schlund.de
Martin Michlmayr tbm@cyrius.com
Martin Mitchell martin@debian.org
Martin P.J. Zinser zinser@decus.de
Marty Leisner leisner@sdsp.mc.xerox.com
@@ -230,13 +245,14 @@ Mate Wierdl mw@moni.msci.memphis.edu
Matej Vela mvela@public.srce.hr
Matt Perry matt@primefactor.com
Matt Schalit mschalit@pacbell.net
Matthew Arnison maffew@cat.org.au
Matthew Braun matthew@ans.net
Matthew Clarke Matthew_Clarke@mindlink.bc.ca
Matthew S. Levine mslevine@theory.lcs.mit.edu
Matthew Smith matts@bluesguitar.org
Matthew Swift swift@alum.mit.edu
Mattias Wadenstein maswan@acc.umu.se
Matthias Urlichs smurf@noris.de
Mattias Wadenstein maswan@acc.umu.se
Meelis Roos mroos@tartu.cyber.ee
Michael ??? michael@roka.net
Michael Deutschmann michael@talamasca.ocis.net
@@ -248,13 +264,20 @@ Michael Piefel piefel@informatik.hu-berlin.de
Michael Steffens michael.steffens@s.netic.de
Michael Stone mstone@debian.org
Michael Stutz stutz@dsl.org
Michael van Elst mlelstv@dev.de.cw.net
Michael Veksler mveksler@techunix.technion.ac.il
Michail Litvak mci@owl.openwall.com
Michal Svec msvec@suse.cz
Michel Robitaille robitail@IRO.UMontreal.CA
Michiel Bacchiani bacchian@raven.bu.edu
Mike Castle dalgoda@ix.netcom.com
Mike Coleman mkc@mathdogs.com
Mikko Tuumanen m@sorvankyla.yok.utu.fi
Miles Bader miles@gnu.ai.mit.edu
Minh Tran-Le tranle@intellicorp.com
Morten Welinder terra@diku.dk
Neal H Walfield neal@cs.uml.edu
Neil Brown neilb@cse.unsw.edu.au
Nelson H. F. Beebe beebe@math.utah.edu
Nick Lawes nlawes@silverplatter.com
Niklas Edmundsson nikke@acc.umu.se
@@ -262,8 +285,8 @@ Noah Friedman friedman@splode.com
Noel Cragg noel@red-bean.com
Olav Morkrid olav@funcom.com
Ole Laursen olau@hardworking.dk
Oskar Liljeblad osk@hem.passagen.se
Ørn E. Hansen oehansen@daimi.aau.dk
Oskar Liljeblad osk@hem.passagen.se
Paul Eggert eggert@twinsun.com
Paul Nevai nevai@ops.mps.ohio-state.edu
Paul Sauer paul@alexa.com
@@ -280,6 +303,7 @@ Phelippe Neveu pneveu@pcigeomatics.com
Phil Richards phil.richards@vf.vodafone.co.uk
Philippe De Muyter phdm@macqel.be
Philippe Schnoebelen Philippe.Schnoebelen@imag.fr
Phillip Jones mouse@datastacks.com
Piergiorgio Sartor sartor@sony.de
Piotr Kwapulinski kwap@univ.gda.pl
Prashant TR tr@eth.net
@@ -287,9 +311,11 @@ Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Ralf W. Stephan stephan@tmt.de
Ralph Loader loader@maths.ox.ac.uk
Raul Miller moth@magenta.com
Raúl Núñez de Arenas Coronado raul@pleyades.net
Richard Braakman dark@xs4all.nl
Richard Dawe richdawe@bigfoot.com
Richard J. Rauenzahn rrauenza@hairball.cup.hp.com
Richard Neill rn214@hermes.cam.ac.uk
Richard Sharman rsharman@magmacom.com
Rick Sladkey jrs@world.std.com
Rik Faith faith@cs.unc.edu
@@ -297,6 +323,7 @@ Risto Kankkunen kankkune@lingsoft.fi
Robert H. de Vries robert@and.nl
Rogier Wolff R.E.Wolff@BitWizard.nl
Roland Huebner ro-huebner@gmx.de
Roland Turner raz@raz.cx
Ronald F. Guilmette rfg@netcom.com
Ross Alexander r.alexander@auckland.ac.nz
Ross Paterson rap@doc.ic.ac.uk
@@ -307,22 +334,29 @@ Sander van Malssen svm@kozmix.ow.nl
Santiago Vila Doncel sanvila@unex.es
Savochkin Andrey Vladimirovich saw@msu.ru
Scott Lurndal slurn@griffin.engr.sgi.com
Shing-Shong Shei shei@cs.indiana.edu
Soeren Sonnenburg sonnenburg@informatik.hu-berlin.de
Solar Designer solar@owl.openwall.com
Stanislav Ievlev inger@altlinux.ru
Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
Stephen Depooter sbdep@myrealbox.com
Stephen Eglen eglen@pcg.wustl.edu
Stephen Gildea gildea@stop.mail-abuse.org
Stephen Smoogen ??????????
Stephen Smoogen smooge@mindspring.com
Steve McConnel steve@acadcomp.sil.org
Steven P Watson steven@magelico.net
Stuart Kemp skemp@peter.bmc.com
Tadayoshi Funaba tadf@kt.rim.or.jp
TAKAI Kousuke takai@vlsi.kuee.kyoto-u.ac.jp
Theodore Ts'o tytso@rsts-11.mit.edu
Thomas Bushnell thomas@gnu.ai.mit.edu
Thomas Goerlich thomas@schnappmatik.de
Thomas Quinot thomas@Cuivre.FR.EU.ORG
Tim J. Robbins tjr@FreeBSD.org
Tim Smithers mouse@dmouse.com.au
Tim Waugh twaugh@redhat
Todd A. Jacobs tjacobs@codegnome.org
Tom Haynes thomas@netapp.com
Tom Quinn trq@dionysos.thphys.ox.ac.uk
Ton Hospel thospel@mail.dma.be
Tony Kocurko akocurko@mun.ca
@@ -345,6 +379,7 @@ Will Edgington wedgingt@acm.org
William Bader william@nscs.fast.net
William Dowling will@franklin.com
William Lewis wiml@omnigroup.com
wiregauze wiregauze@yahoo.com
Wojciech Purczynski cliph@isec.pl
Wolfram Kleff kleff@cs.uni-bonn.de
Won-kyu Park wkpark@chem.skku.ac.kr

4
THANKStt.in Normal file
View File

@@ -0,0 +1,4 @@
The following teams have translated the many diagnostics of this
package into many different languages. Thank you!
---

17
TODO Normal file
View File

@@ -0,0 +1,17 @@
restore djgpp, eventually
merge TODO lists
add unit tests for lib/*.c
rewrite du.c not to use explicit recursion
strip: add an option to specify the program used to strip binaries.
suggestion from Karl Berry
Makefile.maint: extract announcement-generation into a perl script
doc/coreutils.texi:
Address this comment: FIXME: mv's behavior in this case is system-dependent
Better still: fix the code so it's *not* system-dependent.
implement --target-directory=DIR for install (per texinfo documentation)
du: make it so du is not stack-limited by depth of hierarchy

32
TODO-private Normal file
View File

@@ -0,0 +1,32 @@
Move things so there are no symlinks from repository to
any directory other than common
******************
LINGUAS:
sort -u ../[fst]u/po/LINGUAS > po/LINGUAS
go cu
cd po
for i in f s t; do
echo $i:
xu=${i}u
for j in $(cat ../../$xu/po/LINGUAS); do
echo " $j"
msgmerge -o k ../../$xu/po/$j.po $j.po && mv k $j.po
done
done
go cu; cd po; export xu=tu j=zh_TW
go cu; cd po; export xu=su j=ru
go cu; cd po; export xu=fu j=zh_TW
go cu; cd po; export xu=tu j=fr
go cu; cd po; export xu=su j=tr
go cu; cd po; export xu=fu j=ca
go cu; cd po; export xu=su j=sl
go cu; cd po; export xu=tu j=el
go cu; cd po; export xu=su j=da
go cu; cd po; export xu=fu j=lg
k=$xu-$j
msgmerge -o $k ../../$xu/po/$j.po $j.po && mv $k $j.po
cvs ci -m 'merge from fileutils-4.1.11' $j.po

6268
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

201
announce-gen Executable file
View File

@@ -0,0 +1,201 @@
#!/usr/bin/perl -w
# Generate an announcement message.
use strict;
use Getopt::Long;
use Digest::MD5;
use Digest::SHA1;
(my $VERSION = '$Revision: 1.4 $ ') =~ tr/[0-9].//cd;
(my $ME = $0) =~ s|.*/||;
END
{
# Nobody ever checks the status of print()s. That's okay, because
# if any do fail, we're guaranteed to get an indicator when we close()
# the filehandle.
#
# Close stdout now, and if there were no errors, return happy status.
# If stdout has already been closed by the script, though, do nothing.
defined fileno STDOUT
or return;
close STDOUT
and return;
# Errors closing stdout. Indicate that, and hope stderr is OK.
warn "$ME: closing standard output: $!\n";
# Don't be so arrogant as to assume that we're the first END handler
# defined, and thus the last one invoked. There may be others yet
# to come. $? will be passed on to them, and to the final _exit().
#
# If it isn't already an error, make it one (and if it _is_ an error,
# preserve the value: it might be important).
$? ||= 1;
}
sub usage ($)
{
my ($exit_code) = @_;
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
if ($exit_code != 0)
{
print $STREAM "Try `$ME --help' for more information.\n";
}
else
{
print $STREAM <<EOF;
Usage: $ME [OPTIONS]
OPTIONS:
Generate an announcement message.
FIXME: describe the following
--package-name=PACKAGE_NAME
--previous-version=VER
--current-version=VER
--release-archive-directory=DIR
--url-directory=URL_DIR
--help display this help and exit
--version output version information and exit
EOF
}
exit $exit_code;
}
{
my $package_name;
my $prev_version;
my $curr_version;
my $release_archive_dir;
my @url_dir_list;
GetOptions
(
'package-name=s' => \$package_name,
'previous-version=s' => \$prev_version,
'current-version=s' => \$curr_version,
'release-archive-directory=s' => \$release_archive_dir,
'url-directory=s@' => \@url_dir_list,
help => sub { usage 0 },
version => sub { print "$ME version $VERSION\n"; exit },
) or usage 1;
my $fail = 0;
# Ensure that sure each required option is specified.
$package_name
or (warn "$ME: missing package name\n"), $fail = 1;
$prev_version
or (warn "$ME: missing previous version string\n"), $fail = 1;
$curr_version
or (warn "$ME: missing current version string\n"), $fail = 1;
$release_archive_dir
or (warn "$ME: missing release directory name\n"), $fail = 1;
@url_dir_list
or (warn "$ME: missing URL directory name(s)\n"), $fail = 1;
@ARGV
and (warn "$ME: too many arguments\n"), $fail = 1;
$fail
and usage 1;
my $my_distdir = "$package_name-$curr_version";
my $tgz = "$my_distdir.tar.gz";
my $tbz = "$my_distdir.tar.bz2";
my $xd = "$package_name-$prev_version-$curr_version.xdelta";
my %size;
foreach my $f (($tgz, $tbz, $xd))
{
my $cmd = "du --human $f";
my $t = `$cmd`;
# FIXME-someday: give a better diagnostic, a la $PROCESS_STATUS
$@
and (warn "$ME: command failed: `$cmd'\n"), $fail = 1;
chomp $t;
$t =~ s/^([\d.]+[MkK]).*/${1}B/;
$size{$f} = $t;
}
$fail
and exit 1;
print <<EOF;
Subject: $my_distdir released
<#secure method=pgpmime mode=sign>
FIXME: put comments here
EOF
foreach my $url (@url_dir_list)
{
print " $url/$tgz ($size{$tgz})\n";
print " $url/$tbz ($size{$tbz})\n";
}
print "\nAnd here are xdelta-style diffs:\n";
foreach my $url (@url_dir_list)
{
print " $url/$xd ($size{$xd})\n";
}
print "\nHere are GPG detached signatures:\n";
foreach my $url (@url_dir_list)
{
print " $url/$tgz.sig\n";
print " $url/$tbz.sig\n";
}
# FIXME: clean up upon interrupt or die
my $tmpdir = $ENV{TMPDIR} || '/tmp';
my $tmp = "$tmpdir/$ME-$$";
unlink $tmp; # ignore failure
print "\nHere are the MD5 and SHA1 signatures:\n";
print "\n";
print "<#part type=text/plain filename=\"$tmp\" disposition=inline>\n"
. "<#/part>\n";
open OUT, '>', $tmp
or die "$ME: $tmp: cannot open for writing: $!\n";
foreach my $meth (qw (md5 sha1))
{
foreach my $f (($tgz, $tbz, $xd))
{
open IN, '<', $f
or die "$ME: $f: cannot open for reading: $!\n";
binmode IN;
my $dig =
($meth eq 'md5'
? Digest::MD5->new->addfile(*IN)->hexdigest
: Digest::SHA1->new->addfile(*IN)->hexdigest);
close IN;
print OUT "$dig $f\n";
}
}
close OUT
or die "$ME: $tmp: while writing: $!\n";
chmod 0400, $tmp; # ignore failure
# FIXME: depend on whether it's a test release
# sed -n "$news-r1),$news-r2)p" NEWS
# | grep -v '^\[';
# echo;
# echo ChangeLog entries:;
# find . -name ChangeLog -maxdepth 2
# | xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD
# | sed -n 's/^+//p'
# | perl -ne 'm!^\+\+ (\./)?! or print,next;'
# -e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"';
}

1408
config.hin Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,38 @@
2002-02-17 Jim Meyering <meyering@lucent.com>
2003-01-12 Jim Meyering <jim@meyering.net>
Lots of syntactic clean-up, mostly from Karl Berry.
* install-sh: Use consistent indentation, two spaces per level.
(scriptversion): New variable.
Change initializations like `variable=""' to `variable='.
(usage): New variable.
Use `test', not `['.
Use `test -z "$var"', not `[ x"$var" = x ]'.
Use `test -n "$var"', not `[ x"$var" != x ]'.
Alphabetize case entries.
Accept --help and --version options.
Remove unnecessary `else :' clauses.
Add a `Local variables' eval block to help emacs users update
the time-stamp variable added above.
2002-12-20 Jim Meyering <jim@meyering.net>
* install-sh: Set the execute bit on this file.
Reported by Vin Shelton.
2002-11-09 Jim Meyering <jim@meyering.net>
Make it work even when names contain spaces or shell metachars.
* install-sh: Write diagnostics to stderr, not stdout.
Normalize spacing in diagnostics: use one space (not two, and not a TAB)
after the leading `install:'.
Add double quotes around `$src' here: $doit $instcmd "$src" "$dsttmp"
Merge in some changes from the version in automake.
* install-sh: Remove unnecessary quotes around `case' argument.
Use `[ cond1 ] || [ cond2 ]' rather than `[ cond1 -o cond2 ]'.
Use `:' rather than `true'.
2002-02-17 Jim Meyering <jim@meyering.net>
* config.guess (main): Don't use `head -1'; it's no longer portable.
Use `sed 1q' instead.

284
config/config.guess vendored
View File

@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002 Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
timestamp='2002-05-29'
timestamp='2003-01-30'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -88,30 +88,41 @@ if test $# != 0; then
exit 1
fi
trap 'exit 1' 1 2 15
dummy=dummy-$$
trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
# CC_FOR_BUILD -- compiler used by this script.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int dummy(){}" > $dummy.c ;
# Portable tmp directory creation inspired by the Autoconf team.
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int x;" > $dummy.c ;
for c in cc gcc c89 c99 ; do
($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
if test $? = 0 ; then
if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
rm -f $dummy.c $dummy.o $dummy.rel ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
esac'
esac ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -168,7 +179,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# The OS release
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
case "${UNAME_VERSION}" in
Debian*)
release='-gnu'
;;
*)
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
@@ -213,67 +235,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
*:MicroBSD:*:*)
echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE}
exit 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
fi
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
UNAME_MACHINE="alpha" ;;
"EV4.5 (21064)")
UNAME_MACHINE="alpha" ;;
"LCA4 (21066/21068)")
UNAME_MACHINE="alpha" ;;
"EV5 (21164)")
UNAME_MACHINE="alphaev5" ;;
"EV5.6 (21164A)")
UNAME_MACHINE="alphaev56" ;;
"EV5.6 (21164PC)")
UNAME_MACHINE="alphapca56" ;;
"EV5.7 (21164PC)")
UNAME_MACHINE="alphapca57" ;;
"EV6 (21264)")
UNAME_MACHINE="alphaev6" ;;
"EV6.7 (21264A)")
UNAME_MACHINE="alphaev67" ;;
"EV6.8CB (21264C)")
UNAME_MACHINE="alphaev68" ;;
"EV6.8AL (21264B)")
UNAME_MACHINE="alphaev68" ;;
"EV6.8CX (21264D)")
UNAME_MACHINE="alphaev68" ;;
"EV6.9A (21264/EV69A)")
UNAME_MACHINE="alphaev69" ;;
"EV7 (21364)")
UNAME_MACHINE="alphaev7" ;;
"EV7.9 (21364A)")
UNAME_MACHINE="alphaev79" ;;
esac
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
cat <<EOF >$dummy.s
.data
\$Lformat:
.byte 37,100,45,37,120,10,0 # "%d-%x\n"
.text
.globl main
.align 4
.ent main
main:
.frame \$30,16,\$26,0
ldgp \$29,0(\$27)
.prologue 1
.long 0x47e03d80 # implver \$0
lda \$2,-1
.long 0x47e20c21 # amask \$2,\$1
lda \$16,\$Lformat
mov \$0,\$17
not \$1,\$18
jsr \$26,printf
ldgp \$29,0(\$26)
mov 0,\$16
jsr \$26,exit
.end main
EOF
eval $set_cc_for_build
$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
case `./$dummy` in
0-0)
UNAME_MACHINE="alpha"
;;
1-0)
UNAME_MACHINE="alphaev5"
;;
1-1)
UNAME_MACHINE="alphaev56"
;;
1-101)
UNAME_MACHINE="alphapca56"
;;
2-303)
UNAME_MACHINE="alphaev6"
;;
2-307)
UNAME_MACHINE="alphaev67"
;;
2-1307)
UNAME_MACHINE="alphaev68"
;;
esac
fi
rm -f $dummy.s $dummy
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit 0 ;;
Alpha\ *:Windows_NT*:*)
@@ -314,6 +323,10 @@ EOF
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
DRS?6000:UNIX_SV:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7 && exit 0 ;;
esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
@@ -420,16 +433,18 @@ EOF
exit (-1);
}
EOF
$CC_FOR_BUILD $dummy.c -o $dummy \
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
$CC_FOR_BUILD -o $dummy $dummy.c \
&& $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& exit 0
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
exit 0 ;;
Night_Hawk:*:*:PowerMAX_OS)
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
exit 0 ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
@@ -504,8 +519,7 @@ EOF
exit(0);
}
EOF
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
@@ -603,11 +617,21 @@ EOF
exit (0);
}
EOF
(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
rm -f $dummy.c $dummy
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
then
# avoid double evaluation of $set_cc_for_build
test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
then
HP_ARCH="hppa2.0w"
else
HP_ARCH="hppa64"
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
ia64:HP-UX:*:*)
@@ -641,8 +665,7 @@ EOF
exit (0);
}
EOF
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -700,15 +723,15 @@ EOF
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY*T3D:*:*:*)
echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
*:UNICOS/mp:*:*)
echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
@@ -725,7 +748,18 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
# Determine whether the default compiler uses glibc.
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#include <features.h>
#if __GLIBC__ >= 2
LIBC=gnu
#else
LIBC=
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
exit 0 ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
@@ -737,13 +771,16 @@ EOF
echo ${UNAME_MACHINE}-pc-pw32
exit 0 ;;
x86:Interix*:3*)
echo i386-pc-interix3
echo i586-pc-interix3
exit 0 ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit 0 ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
echo i386-pc-interix
echo i586-pc-interix
exit 0 ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
@@ -786,8 +823,26 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
rm -f $dummy.c
test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
#undef mips64
#undef mips64el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=mips64el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=mips64
#else
CPU=
#endif
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
@@ -849,7 +904,7 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
exit 0 ;;
exit 0 ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit 0 ;;
@@ -882,7 +937,6 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
rm -f $dummy.c
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;;
@@ -900,6 +954,23 @@ EOF
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
echo ${UNAME_MACHINE}-pc-os2-emx
exit 0 ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
exit 0 ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit 0 ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
exit 0 ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -934,9 +1005,6 @@ EOF
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
exit 0 ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -960,9 +1028,15 @@ EOF
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
exit 0 ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -979,9 +1053,6 @@ EOF
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
@@ -1053,6 +1124,9 @@ EOF
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
exit 0 ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit 0 ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
@@ -1060,7 +1134,11 @@ EOF
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Darwin:*:*)
echo `uname -p`-apple-darwin${UNAME_RELEASE}
case `uname -p` in
*86) UNAME_PROCESSOR=i686 ;;
powerpc) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit 0 ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
@@ -1073,7 +1151,7 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
*:NonStop-UX:*:*)
@@ -1096,11 +1174,6 @@ EOF
fi
echo ${UNAME_MACHINE}-unknown-plan9
exit 0 ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
echo ${UNAME_MACHINE}-pc-os2-emx
exit 0 ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
exit 0 ;;
@@ -1119,12 +1192,6 @@ EOF
*:ITS:*:*)
echo pdp10-unknown-its
exit 0 ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
exit 0 ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1245,8 +1312,7 @@ main ()
}
EOF
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
# Apollos put the system type in the environment.

View File

@@ -50,9 +50,7 @@ if test "$GCC" = yes; then
else
case "$host_os" in
aix3* | aix4* | aix5*)
if test "$host_cpu" = ia64; then
wl='-Wl,'
fi
wl='-Wl,'
;;
hpux9* | hpux10* | hpux11*)
wl='-Wl,'
@@ -95,7 +93,7 @@ hardcode_direct=no
hardcode_minus_L=no
case "$host_os" in
cygwin* | mingw* | pw32* )
cygwin* | mingw* | pw32*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
@@ -103,6 +101,9 @@ case "$host_os" in
with_gnu_ld=no
fi
;;
openbsd*)
with_gnu_ld=no
;;
esac
ld_shlibs=yes
@@ -171,38 +172,42 @@ else
fi
;;
aix4* | aix5*)
hardcode_libdir_separator=':'
if test "$GCC" = yes; then
collect2name=`${CC} -print-prog-name=collect2`
if test -f "$collect2name" && \
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
hardcode_direct=yes
else
# We have old collect2
hardcode_direct=unsupported
hardcode_minus_L=yes
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
else
hardcode_direct=yes
fi
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
else
# Test if we are trying to use run time linking, or normal AIX style linking.
# If -brtl is somewhere in LDFLAGS, we need to do run time linking.
aix_use_runtimelinking=no
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
aix_use_runtimelinking=yes
break
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
break
fi
done
esac
fi
hardcode_direct=yes
hardcode_libdir_separator=':'
if test "$GCC" = yes; then
case $host_os in aix4.[012]|aix4.[012].*)
collect2name=`${CC} -print-prog-name=collect2`
if test -f "$collect2name" && \
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
hardcode_direct=yes
else
# We have old collect2
hardcode_direct=unsupported
hardcode_minus_L=yes
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
done
esac
fi
if test "$aix_use_runtimelinking" = yes; then
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
@@ -267,8 +272,19 @@ else
hardcode_libdir_separator=:
;;
openbsd*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
else
case "$host_os" in
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
hardcode_libdir_flag_spec='-R$libdir'
;;
*)
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
esac
fi
;;
os2*)
hardcode_libdir_flag_spec='-L$libdir'

112
config/config.sub vendored
View File

@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002 Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
timestamp='2002-06-20'
timestamp='2003-01-28'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -118,7 +118,7 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -229,9 +229,9 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| c4x | clipper \
| clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k \
@@ -239,21 +239,26 @@ case $basic_machine in
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
| mips64vr | mips64vrel \
| mips64orion | mips64orionel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| msp430 \
| ns16k | ns32k \
| openrisc | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
| sh | sh[34] | sh[34]eb | shbe | shle | sh64 | sh64le \
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
| strongarm \
| tahoe | thumb | tic80 | tron \
@@ -291,11 +296,11 @@ case $basic_machine in
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
| bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c54x-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
| clipper-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | fx80-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
@@ -306,24 +311,29 @@ case $basic_machine in
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| mips64vr-* | mips64vrel-* \
| mips64orion-* | mips64orionel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipstx39 | mipstx39el \
| none-* | np1-* | ns16k-* | ns32k-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
| msp430-* \
| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* | sh64le-* \
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
@@ -710,6 +720,10 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
nv1)
basic_machine=nv1-cray
os=-unicosmp
;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -743,13 +757,13 @@ case $basic_machine in
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
pentiumpro | p6 | 6x86 | athlon)
pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
pentiumii | pentium2)
@@ -770,22 +784,22 @@ case $basic_machine in
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
;;
;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
;;
;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
@@ -816,6 +830,12 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
sb1)
basic_machine=mipsisa64sb1-unknown
;;
sb1el)
basic_machine=mipsisa64sb1el-unknown
;;
sequent)
basic_machine=i386-sequent
;;
@@ -881,7 +901,7 @@ case $basic_machine in
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
sv1)
sv1)
basic_machine=sv1-cray
os=-unicos
;;
@@ -889,10 +909,6 @@ case $basic_machine in
basic_machine=i386-sequent
os=-dynix
;;
t3d)
basic_machine=alpha-cray
os=-unicos
;;
t3e)
basic_machine=alphaev5-cray
os=-unicos
@@ -901,6 +917,10 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
tic4x | c4x*)
basic_machine=tic4x-unknown
os=-coff
;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
@@ -939,8 +959,8 @@ case $basic_machine in
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
@@ -961,11 +981,7 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
windows32)
basic_machine=i386-pc
os=-windows32-msvcrt
;;
xps | xps100)
xps | xps100)
basic_machine=xps100-honeywell
;;
ymp)
@@ -1011,7 +1027,7 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
sh3 | sh4 | sh3eb | sh4eb)
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
sh64)
@@ -1020,7 +1036,7 @@ case $basic_machine in
sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
cydra)
cydra)
basic_machine=cydra-cydrome
;;
orion)
@@ -1035,10 +1051,6 @@ case $basic_machine in
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
c4x*)
basic_machine=c4x-none
os=-coff
;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
@@ -1101,11 +1113,12 @@ case $os in
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -microbsd*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1117,8 +1130,10 @@ case $os in
;;
esac
;;
-nto-qnx*)
;;
-nto*)
os=-nto-qnx
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
@@ -1170,7 +1185,7 @@ case $os in
os=-rtmk-nova
;;
-ns2 )
os=-nextstep2
os=-nextstep2
;;
-nsk*)
os=-nsk
@@ -1209,8 +1224,11 @@ case $os in
-xenix)
os=-xenix
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
-aros*)
os=-aros
;;
-none)
;;
@@ -1247,7 +1265,7 @@ case $basic_machine in
pdp10-*)
os=-tops20
;;
pdp11-*)
pdp11-*)
os=-none
;;
*-dec | vax-*)
@@ -1340,19 +1358,19 @@ case $basic_machine in
*-next)
os=-nextstep3
;;
*-gould)
*-gould)
os=-sysv
;;
*-highlevel)
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
*-sgi)
os=-irix
;;
*-siemens)
*-siemens)
os=-sysv4
;;
*-masscomp)

View File

@@ -1,9 +1,11 @@
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# This originally came from X11R5 (mit/util/scripts/install.sh).
scriptversion=2003-01-17.15
# Copyright 1991 by the Massachusetts Institute of Technology
# (FSF changes in the public domain.)
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
@@ -23,13 +25,11 @@
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
@@ -41,236 +41,229 @@ stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=""
transform_arg=""
transformbasename=
transform_arg=
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=""
chgrpcmd=""
stripcmd=""
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
dir_arg=""
src=
dst=
dir_arg=
while [ x"$1" != x ]; do
case "$1" in
-c) instcmd=$cpprog
shift
continue;;
usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
or: $0 -d DIR1 DIR2...
-d) dir_arg=true
shift
continue;;
In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
In the second, create the directory path DIR.
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
Options:
-b=TRANSFORMBASENAME
-c copy source (using $cpprog) instead of moving (using $mvprog).
-d create directories instead of installing files.
-g GROUP $chgrp installed files to GROUP.
-m MODE $chmod installed files to MODE.
-o USER $chown installed files to USER.
-s strip installed files (using $stripprog).
-t=TRANSFORM
--help display this help and exit.
--version display version info and exit.
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
while test -n "$1"; do
case $1 in
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-c) instcmd=$cpprog
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
-d) dir_arg=true
shift
continue;;
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
*) if [ x"$src" = x ]
then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
--help) echo "$usage"; exit 0;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
--version) echo "$0 $scriptversion"; exit 0;;
*) if test -z "$src"; then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if [ x"$src" = x ]
then
echo "install: no input file specified" >&2
exit 1
else
true
if test -z "$src"; then
echo "$0: no input file specified." >&2
exit 1
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
if test -n "$dir_arg"; then
dst=$src
src=
if [ -d "$dst" ]; then
instcmd=:
chmodcmd=""
else
instcmd=$mkdirprog
fi
if test -d "$dst"; then
instcmd=:
chmodcmd=
else
instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test -z "$dst"; then
echo "$0: no destination specified." >&2
exit 1
fi
if [ -f "$src" -o -d "$src" ]
then
true
else
echo "install: $src does not exist" >&2
exit 1
fi
if [ x"$dst" = x ]
then
echo "install: no destination specified" >&2
exit 1
else
true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d "$dst" ]
then
dst=$dst/`basename "$src"`
else
true
fi
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
dst=$dst/`basename "$src"`
fi
fi
## this sed command emulates the dirname command
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# (this part is taken from Noah Friedman's mkinstalldirs script.)
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
defaultIFS='
if test ! -d "$dstdir"; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
pathcomp=''
pathcomp=
while [ $# -ne 0 ] ; do
pathcomp=$pathcomp$1
shift
if [ ! -d "$pathcomp" ] ;
then
$mkdirprog "$pathcomp"
else
true
fi
pathcomp=$pathcomp/
done
while test $# -ne 0 ; do
pathcomp=$pathcomp$1
shift
test -d "$pathcomp" || $mkdirprog "$pathcomp"
pathcomp=$pathcomp/
done
fi
if [ x"$dir_arg" != x ]
then
$doit $instcmd "$dst" &&
if test -n "$dir_arg"; then
$doit $instcmd "$dst" \
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else true ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else true ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else true ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else true ; fi
else
# If we're going to rename the final executable, determine the name now.
if test -z "$transformarg"; then
dstfile=`basename "$dst"`
else
dstfile=`basename "$dst" $transformbasename \
| sed $transformarg`$transformbasename
fi
# If we're going to rename the final executable, determine the name now.
# don't allow the sed command to completely eliminate the filename.
test -z "$dstfile" && dstfile=`basename "$dst"`
if [ x"$transformarg" = x ]
then
dstfile=`basename "$dst"`
else
dstfile=`basename "$dst" $transformbasename |
sed $transformarg`$transformbasename
fi
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/#inst.$$#
rmtmp=$dstdir/#rm.$$#
# don't allow the sed command to completely eliminate the filename
# Trap to clean up those temp files at exit.
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
if [ x"$dstfile" = x ]
then
dstfile=`basename "$dst"`
else
true
fi
# Move or copy the file name to the temp name
$doit $instcmd "$src" "$dsttmp" &&
# Make a couple of temp file names in the proper directory.
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
dsttmp=$dstdir/#inst.$$#
rmtmp=$dstdir/#rm.$$#
# Trap to clean up temp files at exit.
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
# Move or copy the file name to the temp name
$doit $instcmd $src "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp";else true;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp";else true;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp";else true;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp";else true;fi &&
# Now remove or move any old file at destination location. We try this
# two ways since rm can't unlink itself on some systems and the destination
# file might be busy for other reasons. In this case, the final cleanup
# might fail but the new file should still install successfully.
{
if [ -f "$dstdir/$dstfile" ]
then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
{
echo "install: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
true
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
# Now remove or move aside any old file at destination location. We
# try this two ways since rm can't unlink itself on some systems and
# the destination file might be busy for other reasons. In this case,
# the final cleanup might fail but the new file should still install
# successfully.
{
if test -f "$dstdir/$dstfile"; then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit
(exit 0); exit
}
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@@ -1,6 +1,6 @@
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.
# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
# Copyright 1995, 1996, 1997 Free Software Foundation, Inc.
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
#
# This program is free software; you can redistribute it and/or modify
@@ -17,6 +17,11 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Prevent date giving response in another language.
LANG=C
export LANG

View File

@@ -4,8 +4,6 @@
# Created: 1993-05-16
# Public domain
# $Id: mkinstalldirs,v 1.2 2002/06/13 09:30:02 meyering Exp $
errstatus=0
dirmode=""
@@ -14,18 +12,29 @@ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
# process command line arguments
while test $# -gt 0 ; do
case "${1}" in
-h | --help | --h* ) # -h for help
echo "${usage}" 1>&2; exit 0 ;;
-m ) # -m PERM arg
shift
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
dirmode="${1}"
shift ;;
-- ) shift; break ;; # stop option processing
-* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
* ) break ;; # first non-opt arg
esac
case $1 in
-h | --help | --h*) # -h for help
echo "$usage" 1>&2
exit 0
;;
-m) # -m PERM arg
shift
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
dirmode=$1
shift
;;
--) # stop option processing
shift
break
;;
-*) # unknown option
echo "$usage" 1>&2
exit 1
;;
*) # first non-opt arg
break
;;
esac
done
for file
@@ -38,64 +47,65 @@ do
done
case $# in
0) exit 0 ;;
0) exit 0 ;;
esac
case $dirmode in
'')
if mkdir -p -- . 2>/dev/null; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
fi ;;
*)
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
fi ;;
'')
if mkdir -p -- . 2>/dev/null; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
fi
;;
*)
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
fi
;;
esac
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
if test ! -d "$pathcomp"; then
errstatus=$lasterr
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=""
chmod "$dirmode" "$pathcomp" || lasterr=$?
lasterr=""
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi
fi
fi
fi
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi
fi
fi
fi
pathcomp="$pathcomp/"
done
pathcomp="$pathcomp/"
done
done
exit $errstatus
# Local Variables:
# mode: shell-script
# sh-indentation: 3
# sh-indentation: 2
# End:
# mkinstalldirs ends here

File diff suppressed because it is too large Load Diff

42430
configure vendored Executable file

File diff suppressed because it is too large Load Diff

306
configure.ac Normal file
View File

@@ -0,0 +1,306 @@
dnl Process this file with autoconf to produce a configure script. -*-m4-*-
AC_INIT([GNU coreutils],[4.5.5],[bug-coreutils@gnu.org])
AC_CONFIG_SRCDIR(src/ls.c)
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_HEADERS([config.h:config.hin])
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([1.6b gnits dist-bzip2])
AC_GNU_SOURCE
jm_PERL
AC_PROG_CC
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
AC_PROG_RANLIB
AC_AIX
AC_MINIX
AC_CHECK_FUNCS(uname,
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uname" MAN="$MAN uname.1")
AC_CHECK_FUNCS(chroot,
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS chroot" MAN="$MAN chroot.1")
AC_CHECK_FUNCS(gethostid,
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS hostid" MAN="$MAN hostid.1")
jm_MACROS
AC_HEADER_TIOCGWINSZ()
jm_WINSIZE_IN_PTEM
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
# enable the work-around code in fsusage.c.
AC_MSG_CHECKING([for statfs that truncates block counts])
AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#if !defined(sun) && !defined(__sun)
choke -- this is a workaround for a Sun-specific problem
#endif
#include <sys/types.h>
#include <sys/vfs.h>]],
[[struct statfs t; long c = *(t.f_spare);]])],
[fu_cv_sys_truncating_statfs=yes],
[fu_cv_sys_truncating_statfs=no])])
if test $fu_cv_sys_truncating_statfs = yes; then
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
[ Define if the block counts reported by statfs may be truncated to 2GB
and the correct values may be stored in the f_spare array.
(SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
SunOS 4.1.1 seems not to be affected.)])
fi
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
AC_MSG_CHECKING(whether localtime caches TZ)
AC_CACHE_VAL(utils_cv_localtime_cache,
[if test x$ac_cv_func_tzset = xyes; then
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
#if STDC_HEADERS
# include <stdlib.h>
#endif
extern char **environ;
unset_TZ ()
{
char **from, **to;
for (to = from = environ; (*to = *from); from++)
if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
to++;
}
main()
{
time_t now = time ((time_t *) 0);
int hour_GMT0, hour_unset;
if (putenv ("TZ=GMT0") != 0)
exit (1);
hour_GMT0 = localtime (&now)->tm_hour;
unset_TZ ();
hour_unset = localtime (&now)->tm_hour;
if (putenv ("TZ=PST8") != 0)
exit (1);
if (localtime (&now)->tm_hour == hour_GMT0)
exit (1);
unset_TZ ();
if (localtime (&now)->tm_hour != hour_unset)
exit (1);
exit (0);
}]])],
[utils_cv_localtime_cache=no],
[utils_cv_localtime_cache=yes],
[# If we have tzset, assume the worst when cross-compiling.
utils_cv_localtime_cache=yes])
else
# If we lack tzset, report that localtime does not cache TZ,
# since we can't invalidate the cache if we don't have tzset.
utils_cv_localtime_cache=no
fi])dnl
AC_MSG_RESULT($utils_cv_localtime_cache)
if test $utils_cv_localtime_cache = yes; then
AC_DEFINE(LOCALTIME_CACHE, 1, [FIXME])
fi
# SCO-ODT-3.0 is reported to need -los to link programs using initgroups
AC_CHECK_FUNCS(initgroups)
if test $ac_cv_func_initgroups = no; then
AC_CHECK_LIB(os, initgroups)
fi
AC_CHECK_FUNCS(syslog)
if test $ac_cv_func_syslog = no; then
# syslog is not in the default libraries. See if it's in some other.
for lib in bsd socket inet; do
AC_CHECK_LIB($lib, syslog, [AC_DEFINE(HAVE_SYSLOG, 1, [FIXME])
LIBS="$LIBS -l$lib"; break])
done
fi
AC_MSG_CHECKING(for 3-argument setpriority function)
AC_CACHE_VAL(utils_cv_func_setpriority,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>
#include <sys/resource.h>]], [[setpriority(0, 0, 0);]])],
[utils_cv_func_setpriority=yes],
[utils_cv_func_setpriority=no])])
AC_MSG_RESULT($utils_cv_func_setpriority)
if test $utils_cv_func_setpriority = yes; then
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice"
OPTIONAL_BIN_ZCRIPTS="$OPTIONAL_BIN_ZCRIPTS nohup"
MAN="$MAN nice.1 nohup.1"
else
AC_MSG_CHECKING(for nice function)
AC_CACHE_VAL(utils_cv_func_nice,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[nice();]])],
[utils_cv_func_nice=yes],
[utils_cv_func_nice=no])])
AC_MSG_RESULT($utils_cv_func_nice)
if test $utils_cv_func_nice = yes; then
AC_DEFINE(NICE_PRIORITY, 1, [FIXME])
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice"
OPTIONAL_BIN_ZCRIPTS="$OPTIONAL_BIN_ZCRIPTS nohup"
MAN="$MAN nice.1 nohup.1"
fi
fi
AC_DEFUN(jm_DUMMY_1,
[
AC_REQUIRE([jm_PREREQ_READUTMP])
if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS pinky users who"
MAN="$MAN pinky.1 users.1 who.1"
fi
])
jm_DUMMY_1
AC_MSG_CHECKING(ut_host in struct utmp)
AC_CACHE_VAL(su_cv_func_ut_host_in_utmp,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
#include <utmp.h>]], [[struct utmp ut; ut.ut_host;]])],
[su_cv_func_ut_host_in_utmp=yes],
[su_cv_func_ut_host_in_utmp=no])])
AC_MSG_RESULT($su_cv_func_ut_host_in_utmp)
if test $su_cv_func_ut_host_in_utmp = yes; then
have_ut_host=1
AC_DEFINE(HAVE_UT_HOST, 1, [FIXME])
fi
if test -z "$have_ut_host"; then
AC_MSG_CHECKING(ut_host in struct utmpx)
AC_CACHE_VAL(su_cv_func_ut_host_in_utmpx,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
#include <utmpx.h>]], [[struct utmpx ut; ut.ut_host;]])],
[su_cv_func_ut_host_in_utmpx=yes],
[su_cv_func_ut_host_in_utmpx=no])])
AC_MSG_RESULT($su_cv_func_ut_host_in_utmpx)
if test $su_cv_func_ut_host_in_utmpx = yes; then
AC_DEFINE(HAVE_UTMPX_H, 1, [FIXME])
AC_DEFINE(HAVE_UT_HOST, 1, [FIXME])
fi
fi
GNULIB_BOOT_TIME(
[OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime" MAN="$MAN uptime.1"])
AC_SYS_POSIX_TERMIOS()
jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
if test $ac_cv_sys_posix_termios = yes; then
OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS stty" MAN="$MAN stty.1"
AC_MSG_CHECKING(whether termios.h needs _XOPEN_SOURCE)
AC_CACHE_VAL(su_cv_sys_termios_needs_xopen_source,
[AC_EGREP_CPP(yes, [#include <termios.h>
#ifdef IUCLC
yes
#endif], su_cv_sys_termios_needs_xopen_source=no,
AC_EGREP_CPP(yes, [#define _XOPEN_SOURCE
#include <termios.h>
#ifdef IUCLC
yes
#endif], su_cv_sys_termios_needs_xopen_source=yes,
su_cv_sys_termios_needs_xopen_source=no))])
AC_MSG_RESULT($su_cv_sys_termios_needs_xopen_source)
test $su_cv_sys_termios_needs_xopen_source = yes &&
AC_DEFINE(TERMIOS_NEEDS_XOPEN_SOURCE, 1, [FIXME])
AC_MSG_CHECKING(c_line in struct termios)
AC_CACHE_VAL(su_cv_sys_c_line_in_termios,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if TERMIOS_NEEDS_XOPEN_SOURCE
#define _XOPEN_SOURCE
#endif
#include <sys/types.h>
#include <termios.h>]], [[struct termios t; t.c_line;]])],
[su_cv_sys_c_line_in_termios=yes],
[su_cv_sys_c_line_in_termios=no])])
AC_MSG_RESULT($su_cv_sys_c_line_in_termios)
test $su_cv_sys_c_line_in_termios = yes \
&& AC_DEFINE(HAVE_C_LINE, 1, [FIXME])
fi
# FIXME: note that this macro appears above, too.
# I'm leaving it here for now. This whole thing needs to be modernized...
jm_WINSIZE_IN_PTEM
jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H
if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no && \
test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = no; then
AC_MSG_CHECKING(TIOCGWINSZ in sys/pty.h)
AC_CACHE_VAL(su_cv_sys_tiocgwinsz_in_sys_pty_h,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
#ifdef WINSIZE_IN_PTEM
# include <sys/stream.h>
# include <sys/ptem.h>
#endif
#include <sys/ioctl.h>
#include <sys/tty.h>
#include <sys/pty.h>]], [[int x = TIOCGWINSZ;]])],
[su_cv_sys_tiocgwinsz_in_sys_pty_h=yes],
[su_cv_sys_tiocgwinsz_in_sys_pty_h=no])])
AC_MSG_RESULT($su_cv_sys_tiocgwinsz_in_sys_pty_h)
test $su_cv_sys_tiocgwinsz_in_sys_pty_h = yes \
&& AC_DEFINE(GWINSZ_IN_SYS_PTY, 1,
[Define if your system defines TIOCGWINSZ in sys/pty.h.])
fi
# For src/kill.c.
AC_CHECK_DECLS([strsignal, strtoimax, sys_siglist, _sys_siglist])
jm_LIB_CHECK
AM_GNU_GETTEXT([external], [need-ngettext])
AM_GNU_GETTEXT_VERSION(0.11.5)
AC_CONFIG_FILES(
Makefile
doc/Makefile
lib/Makefile
man/Makefile
m4/Makefile
po/Makefile.in
src/Makefile
tests/Makefile
tests/basename/Makefile
tests/chgrp/Makefile
tests/chmod/Makefile
tests/chown/Makefile
tests/cp/Makefile
tests/cut/Makefile
tests/date/Makefile
tests/dd/Makefile
tests/dircolors/Makefile
tests/du/Makefile
tests/expr/Makefile
tests/factor/Makefile
tests/fmt/Makefile
tests/head/Makefile
tests/install/Makefile
tests/join/Makefile
tests/ln/Makefile
tests/ls-2/Makefile
tests/ls/Makefile
tests/md5sum/Makefile
tests/misc/Makefile
tests/mkdir/Makefile
tests/mv/Makefile
tests/od/Makefile
tests/pr/Makefile
tests/rm/Makefile
tests/rmdir/Makefile
tests/seq/Makefile
tests/sha1sum/Makefile
tests/shred/Makefile
tests/sort/Makefile
tests/stty/Makefile
tests/sum/Makefile
tests/tac/Makefile
tests/tail-2/Makefile
tests/tail/Makefile
tests/test/Makefile
tests/touch/Makefile
tests/tr/Makefile
tests/tsort/Makefile
tests/unexpand/Makefile
tests/uniq/Makefile
tests/wc/Makefile
)
AC_OUTPUT

View File

@@ -1,4 +1,146 @@
2002-06-21 Jim Meyering <meyering@lucent.com>
2003-01-25 Jim Meyering <jim@meyering.net>
* coreutils.texi (cut invocation): Describe new functionality of
--output-delimiter=STR.
2003-01-24 Jim Meyering <jim@meyering.net>
* coreutils.texi (The cut command): Give an example of using cut -c
with an output delimiter. From Jan Nieuwenhuizen.
* coreutils.texi (The cut command): Extend the new example a little.
(Formatting file timestamps): Fix typo: s/%M:S/%M:%S/.
* coreutils.texi: Change each use of `Core-utils' to `Coreutils'.
From Karl Berry.
2003-01-19 Jim Meyering <jim@meyering.net>
* coreutils.texi (Which files are listed): Document new option:
--dereference-command-line-symlink-to-dir.
2003-01-15 Paul Eggert <eggert@twinsun.com>
Change ls -H back to the way it was yesterday, since this is
compatible with FreeBSD and the POSIX spec is confusing
and somewhat contradictory.
* doc/coreutils.texi (Which files are listed, General output
formatting): Undo last change.
2003-01-15 Jim Meyering <jim@meyering.net>
* coreutils.texi (General output formatting): Reflect option name change:
s/--dereference-command-line/--dereference-command-line-symlink-to-dir/.
Say that this option changes how ls treats only symlinks to directories
specified on the command line.
2002-08-27 Dmitry V. Levin <ldv@altlinux.org>
* coreutils.texi: Document readlink.
2002-12-14 Jim Meyering <jim@meyering.net>
* coreutils.texi (mknod invocation): Specify how major and minor mode
numbers are interpreted. Report forwarded by Kristin E Thomas.
2002-11-13 Jim Meyering <jim@meyering.net>
* coreutils.texi (Examples of expr): Remove bogus `^'s.
Reported by Thomas Goerlich.
2002-11-09 Jim Meyering <jim@meyering.net>
* coreutils.texi (What information is listed) [--dired]:
Correct parts of --dired description. Reported by Andre Spiegel.
Include a lot more description, with examples.
2002-11-06 Jim Meyering <jim@meyering.net>
* coreutils.texi (printf invocation): Fix typo in index:
change \0x prefix to \x.
Change \xhhh to \xhh.
2002-10-07 Paul Eggert <eggert@twinsun.com>
Add support for locale-specific size indications (e.g.,
thousands-separators) and for explicit size suffixes on output.
* coreutils.texi (Block size): Say that:
This affects display format as well as block size.
Fractional block counts are rounded up.
ls file size blocksize defaults to 1.
A block size spec preceded by ' generates thousands separators.
A suffix without a preceding integer generates suffixes.
(tail invocation): 32k -> 32 KiB.
(What information is listed): ls -h is now equivalent to
ls --block-size=human, and ls -H is now equivalent to
ls --block-size=si. Displayed file size is now always affected by
--block-size.
2002-09-13 Jim Meyering <jim@meyering.net>
* coreutils.texi (tail invocation): In --sleep-interval=NUMBER,
NUMBER may now be a floating point number.
(stat invocation): Remove references to now-removed %S and %C.
(Time directives) [%S]: Explain why the range is [0..60].
2002-08-30 Jim Meyering <jim@meyering.net>
* coreutils.texi [START-INFO-DIR-ENTRY]: Don't use sc{} on LHS.
Fix typo: s/permission/permissions/. From Michail Litvak.
2002-08-02 Paul Eggert <eggert@twinsun.com>
* coreutils.texi (uniq invocation): uniq now obeys LC_COLLATE.
2002-07-29 Paul Eggert <eggert@twinsun.com>
* coreutils.texi (nohup invocation): Change behavior to conform to
POSIX 1003.1-2001:
- Do not adjust scheduling priority.
- Redirects stderr to stdout, if stderr is not a terminal.
- Exit status is now 126 if command was found but not invoked,
127 if nohup failed or if command was not found.
2002-07-24 Jim Meyering <jim@meyering.net>
* coreutils.texi (Time directives): Document %P, %R, %e, %F,
%g, %G, and %V
2002-07-22 Martin Michlmayr <tbm@cyrius.com>
* coreutils.texi (Formatting the file names): Document
that -N/--literal are equivalent to --quoting-style=literal.
Reported by Oskar Liljeblad as Debian bug#103612.
2002-07-10 Jim Meyering <jim@meyering.net>
* coreutils.texi (du invocation): s/PAT/PATTERN/.
From Martin Michlmayr.
2002-07-08 Jim Meyering <jim@meyering.net>
* coreutils.texi (cp invocation): Remove unnecessary "$@" in example;
Texinfo would render the @" as an umlaut over the following character.
From Paul Eggert.
* Makefile.am (check-texinfo): Check for the above.
2002-07-06 Jim Meyering <jim@meyering.net>
* coreutils.texi (stat invocation): Remove description of --secure.
2002-07-03 Jim Meyering <jim@meyering.net>
* coreutils.texi (stat invocation): Rename --link/-l
to --dereference/-L. Rewrite description of --dereference.
2002-06-26 Paul Eggert <eggert@twinsun.com>
* coreutils.texi (Putting the tools together): Don't mention egrep,
since it's not part of POSIX 1003.1-2001.
2002-06-21 Jim Meyering <jim@meyering.net>
* coreutils.texi (stat invocation): New section. From Michael Meskes.
@@ -6,22 +148,22 @@
* coreutils.texi (ls invocation): Document new option: --author.
2002-06-03 Jim Meyering <meyering@lucent.com>
2002-06-03 Jim Meyering <jim@meyering.net>
* coreutils.texi (rm invocation): Add the warning (also in the --help
output) that the contents of a removed file are often recoverable.
2002-05-27 Jim Meyering <meyering@lucent.com>
2002-05-27 Jim Meyering <jim@meyering.net>
* Makefile.am (check-texinfo): Adapt to reflect that now we use
@acronym{POSIX}.
2002-05-26 Jim Meyering <meyering@lucent.com>
2002-05-26 Jim Meyering <jim@meyering.net>
* coreutils.texi: Use @acronym in place of most uses of @sc.
* getdate.texi (Date input formats): Likewise.
2002-04-28 Jim Meyering <meyering@lucent.com>
2002-04-28 Jim Meyering <jim@meyering.net>
* coreutils.texi: Change `@code{PROG}' to `@command{PROG}'.
@@ -30,16 +172,16 @@
* coreutils.texi (kill invocation): Document the above.
Document POSIX signals better.
2002-04-15 Jim Meyering <meyering@lucent.com>
2002-04-15 Jim Meyering <jim@meyering.net>
* coreutils.texi: Document kill.
Written by Marcus Brinkmann.
2002-04-13 Jim Meyering <meyering@lucent.com>
2002-04-13 Jim Meyering <jim@meyering.net>
* coreutils.texi: Document link and unlink.
2002-04-08 Jim Meyering <meyering@lucent.com>
2002-04-08 Jim Meyering <jim@meyering.net>
* coreutils.texi: Use new directives, @copying and @insertcopying,
thus now requiring texinfo-4.2 to create the .info file.
@@ -68,7 +210,7 @@
symlink options. Warn that cp -R is not portable on symbolic
links unless you also specify -P.
2002-03-02 Jim Meyering <meyering@lucent.com>
2002-03-02 Jim Meyering <jim@meyering.net>
* coreutils.texi (cp invocation): Document that cp -r
preserves symlinks. Emphasize non-portability of cp -r.
@@ -78,7 +220,7 @@
* coreutils.texi (Time directives): Add %N for nanoseconds.
This documents the recent change to 'ls'.
2002-02-28 Jim Meyering <meyering@lucent.com>
2002-02-28 Jim Meyering <jim@meyering.net>
* coreutils.texi (pr invocation): Reword to avoid using `:'
in an @opindex entry -- info doesn't permit it.
@@ -93,7 +235,7 @@
* coreutils.texi (seq invocation): In the example, use "tail
-n 3", not "tail -3", to conform to POSIX 1003.1-2001.
2002-02-17 Jim Meyering <meyering@lucent.com>
2002-02-17 Jim Meyering <jim@meyering.net>
* coreutils.texi (tsort background): New section.
From Ian Lance Taylor.
@@ -104,7 +246,7 @@
* coreutils.texi: Document _POSIX2_VERSION.
(Standards Conformance): New section.
2002-01-24 Jim Meyering <meyering@lucent.com>
2002-01-24 Jim Meyering <jim@meyering.net>
* coreutils.texi (START-INFO-DIR-ENTRY): Remove a few entries
and clean up a few others based on suggestions from Bob Proulx.
@@ -116,11 +258,11 @@
* coreutils.texi: Document this. (Also, document a similar
change to "touch", for fileutils).
2002-01-12 Jim Meyering <meyering@lucent.com>
2002-01-12 Jim Meyering <jim@meyering.net>
* coreutils.texi (shred invocation): List some journaled filesystems.
2001-11-10 Jim Meyering <meyering@lucent.com>
2001-11-10 Jim Meyering <jim@meyering.net>
* coreutils.texi (Date directives): Document %u.
@@ -129,18 +271,18 @@
* coreutils.texi (paste invocation): Give examples.
Thanks to Dan Jacobson for suggesting the examples.
2001-11-05 Jim Meyering <meyering@lucent.com>
2001-11-05 Jim Meyering <jim@meyering.net>
* coreutils.texi (sort invocation): Recommend setting LC_ALL=C,
not LC_COLLATE=C. Explain how the latter can cause problems.
Based on a message from Paul Eggert.
(ls invocation): Recommend setting LC_ALL=C, not LC_COLLATE=C.
2001-10-21 Jim Meyering <meyering@lucent.com>
2001-10-21 Jim Meyering <jim@meyering.net>
* coreutils.texi (cp invocation): Describe --reply=...
2001-10-17 Jim Meyering <meyering@lucent.com>
2001-10-17 Jim Meyering <jim@meyering.net>
* coreutils.texi (cp invocation): `cp --no-dereference' is
no longer equivalent to `cp -d'.
@@ -149,12 +291,12 @@
Describe new optional argument to --preserve.
Describe new option: --no-preserve=ATTRIBUTE_LIST.
2001-09-23 Jim Meyering <meyering@lucent.com>
2001-09-23 Jim Meyering <jim@meyering.net>
* Makefile.am (check-texinfo): Redirect stderr of `grep -w' to
/dev/null, so people with old versions of grep don't see the failure.
2001-09-16 Jim Meyering <meyering@lucent.com>
2001-09-16 Jim Meyering <jim@meyering.net>
* coreutils.texi (mv invocation): Describe new option:
--reply={yes,no,query}. Fix a few typos.
@@ -164,7 +306,7 @@
* coreutils.texi (uniq invocation): The input need not
be sorted. Try to clarify -d versus -D versus -u.
2001-09-12 Jim Meyering <meyering@lucent.com>
2001-09-12 Jim Meyering <jim@meyering.net>
* coreutils.texi (tail invocation): Document new option: -F.
From Herbert Xu.
@@ -196,7 +338,7 @@
* coreutils.texi: expr now uses LC_COLLATE for string comparison,
as per POSIX.
2001-08-25 Jim Meyering <meyering@lucent.com>
2001-08-25 Jim Meyering <jim@meyering.net>
* coreutils.texi: Use @option, rather than @samp everywhere.
@@ -205,12 +347,12 @@
* coreutils.texi: 'expr' now requires '+' rather than 'quote'
to quote tokens.
2001-07-14 Jim Meyering <meyering@lucent.com>
2001-07-14 Jim Meyering <jim@meyering.net>
* coreutils.texi (cp invocation): Reflect 2001-07-08 change to
cp (via copy.c).
2001-06-16 Jim Meyering <meyering@lucent.com>
2001-06-16 Jim Meyering <jim@meyering.net>
* Makefile.am (info_TEXINFOS): Reflect renaming: s/omni-/core/.
* coreutils.texi: Likewise.
@@ -221,14 +363,14 @@
* omni-utils.texi (ls invocation): Mention the effect of locale.
Reported by Keith Thompson.
2001-05-24 Jim Meyering <meyering@lucent.com>
2001-05-24 Jim Meyering <jim@meyering.net>
* texinfo.tex: Update from master source.
* omni-utils.texi (ls invocation): Document more clearly what ls
does when given no arguments.
2001-05-21 Jim Meyering <meyering@lucent.com>
2001-05-21 Jim Meyering <jim@meyering.net>
* textutils.texi: Remove file.

View File

@@ -31,7 +31,8 @@ $(INFO_DEPS): $(EXTRA_DIST)
# List words/regexps here that should not appear in the texinfo documentation.
check-texinfo:
grep timezone $(srcdir)/*.texi && exit 1 || :
@PERL@ -ne \
grep '\$$@"' $(srcdir)/*.texi && exit 1 || :
$(PERL) -ne \
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ || /{posix}/ and print,exit 1' \
$(srcdir)/*.texi 2> /dev/null && : || exit 1

View File

@@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.6.2 from Makefile.am.
# Makefile.in generated by automake 1.7.2 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
@@ -13,114 +13,75 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
EXEEXT = @EXEEXT@
OBJEXT = @OBJEXT@
PATH_SEPARATOR = @PATH_SEPARATOR@
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DF_PROG = @DF_PROG@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FESETROUND_LIBM = @FESETROUND_LIBM@
GENCAT = @GENCAT@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GLIBC21 = @GLIBC21@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
HAVE_LIB = @HAVE_LIB@
HELP2MAN = @HELP2MAN@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
KMEM_GROUP = @KMEM_GROUP@
LIB = @LIB@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
LIB_CRYPT = @LIB_CRYPT@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
LTLIB = @LTLIB@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
NEED_SETGID = @NEED_SETGID@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
POSUB = @POSUB@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SQRT_LIBM = @SQRT_LIBM@
STRIP = @STRIP@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
YACC = @YACC@
am__include = @am__include@
am__quote = @am__quote@
install_sh = @install_sh@
info_TEXINFOS = coreutils.texi
EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
LTLIBOBJS = @LTLIBOBJS@
# The following is necessary if the package name is 8 characters or longer.
# If the info documentation would be split into 10 or more separate files,
@@ -131,93 +92,163 @@ EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
# and those names all map to one 14-byte name (<package>.info-) on some crufty
# old systems.
MAKEINFO = makeinfo --no-split
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MSGMERGE = @MSGMERGE@
NEED_SETGID = @NEED_SETGID@
OBJEXT = @OBJEXT@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
POSUB = @POSUB@
POW_LIB = @POW_LIB@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SQRT_LIBM = @SQRT_LIBM@
STRIP = @STRIP@
U = @U@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
YACC = @YACC@
ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__quote = @am__quote@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
info_TEXINFOS = coreutils.texi
EXTRA_DIST = perm.texi getdate.texi constants.texi doclicense.texi
subdir = doc
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
DIST_SOURCES =
TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
am__TEXINFO_TEX_DIR = $(top_srcdir)/config
INFO_DEPS = coreutils.info
DVIS = coreutils.dvi
PDFS = coreutils.pdf
PSS = coreutils.ps
TEXINFOS = coreutils.texi
DIST_COMMON = ChangeLog Makefile.am Makefile.in stamp-vti version.texi
all: all-am
.SUFFIXES:
.SUFFIXES: .dvi .info .ps .texi
.SUFFIXES: .dvi .info .pdf .ps .texi
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnits doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
$(srcdir)/version.texi: $(srcdir)/stamp-vti
@:
$(srcdir)/stamp-vti: coreutils.texi $(top_srcdir)/configure.ac
@(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/coreutils.texi`; \
.texi.info:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-o $@ `test -f '$<' || echo '$(srcdir)/'`$<
.texi.dvi:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$<
.texi.pdf:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$<
coreutils.info: coreutils.texi version.texi
coreutils.dvi: coreutils.texi version.texi
coreutils.pdf: coreutils.texi version.texi
version.texi: stamp-vti
stamp-vti: coreutils.texi $(top_srcdir)/configure
@(dir=.; test -f ./coreutils.texi || dir=$(srcdir); \
set `$(SHELL) $(top_srcdir)/config/mdate-sh $$dir/coreutils.texi`; \
echo "@set UPDATED $$1 $$2 $$3"; \
echo "@set UPDATED-MONTH $$2 $$3"; \
echo "@set EDITION $(VERSION)"; \
echo "@set VERSION $(VERSION)") > vti.tmp
@cmp -s vti.tmp $(srcdir)/version.texi \
|| (echo "Updating $(srcdir)/version.texi"; \
cp vti.tmp $(srcdir)/version.texi)
@cmp -s vti.tmp version.texi \
|| (echo "Updating version.texi"; \
cp vti.tmp version.texi)
-@rm -f vti.tmp
@cp $(srcdir)/version.texi $@
@cp version.texi $@
mostlyclean-vti:
-rm -f vti.tmp
maintainer-clean-vti:
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
coreutils.info: coreutils.texi $(srcdir)/version.texi
coreutils.dvi: coreutils.texi $(srcdir)/version.texi
.texi.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
`echo $< | sed 's,.*/,,'`
.texi.dvi:
TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2DVI) $<
.texi:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
`echo $< | sed 's,.*/,,'`
-rm -f stamp-vti version.texi
TEXI2DVI = texi2dvi
TEXI2PDF = $(TEXI2DVI) --pdf --batch
DVIPS = dvips
.dvi.ps:
$(DVIPS) $< -o $@
$(DVIPS) -o $@ $<
uninstall-info-am:
$(PRE_UNINSTALL)
@if (install-info --version && \
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
install-info --version | grep -i -v debian) >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile"; \
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile; \
done; \
else :; fi
@$(NORMAL_UNINSTALL)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
relfile=`echo "$$file" | sed 's|^.*/||'`; \
(if cd $(DESTDIR)$(infodir); then \
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9])"; \
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9]; \
else :; fi); \
done
dist-info: $(INFO_DEPS)
list='$(INFO_DEPS)'; \
for base in $$list; do \
d=$(srcdir); \
if test -f $$base; then d=.; else d=$(srcdir); fi; \
for file in $$d/$$base*; do \
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
test -f $(distdir)/$$relfile || \
@@ -226,13 +257,12 @@ dist-info: $(INFO_DEPS)
done
mostlyclean-aminfo:
-rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.dvi coreutils.fl \
coreutils.fn coreutils.ky coreutils.log coreutils.op \
coreutils.pg coreutils.ps coreutils.toc coreutils.tp \
coreutils.vr
-rm -f coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \
coreutils.ky coreutils.log coreutils.op coreutils.pg \
coreutils.tmp coreutils.toc coreutils.tp coreutils.tps \
coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps
maintainer-clean-aminfo:
cd $(srcdir) && \
list='$(INFO_DEPS)'; for i in $$list; do \
rm -f $$i; \
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
@@ -242,13 +272,22 @@ maintainer-clean-aminfo:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = ..
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@list='$(DISTFILES)'; for file in $$list; do \
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
@@ -269,7 +308,7 @@ distdir: $(DISTFILES)
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="${top_distdir}" distdir="$(distdir)" \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-info
check-am: all-am
check: check-am
@@ -329,10 +368,10 @@ install-info-am: $(INFO_DEPS)
$(mkinstalldirs) $(DESTDIR)$(infodir)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
d=$(srcdir); \
for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
if test -f $$ifile; then \
relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \
$(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \
else : ; fi; \
@@ -340,11 +379,12 @@ install-info-am: $(INFO_DEPS)
done
@$(POST_INSTALL)
@if (install-info --version && \
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
install-info --version | grep -i -v debian) >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
relfile=`echo "$$file" | sed 's|^.*/||'`; \
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile";\
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile || :;\
done; \
else : ; fi
install-man:
@@ -360,6 +400,14 @@ mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
pdf: pdf-am
pdf-am: $(PDFS)
ps: ps-am
ps-am: $(PSS)
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic dist-info \
@@ -369,8 +417,8 @@ uninstall-am: uninstall-info-am
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-aminfo \
maintainer-clean-generic maintainer-clean-vti mostlyclean \
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \
uninstall uninstall-am uninstall-info-am
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
pdf-am ps ps-am uninstall uninstall-am uninstall-info-am
# Remove `DISABLED_' when fileutils, textutils, and sh-utils have
@@ -391,7 +439,8 @@ $(INFO_DEPS): $(EXTRA_DIST)
# List words/regexps here that should not appear in the texinfo documentation.
check-texinfo:
grep timezone $(srcdir)/*.texi && exit 1 || :
@PERL@ -ne \
grep '\$$@"' $(srcdir)/*.texi && exit 1 || :
$(PERL) -ne \
'/\bPOSIX\b/ && !/\@acronym{POSIX}/ || /{posix}/ and print,exit 1' \
$(srcdir)/*.texi 2> /dev/null && : || exit 1

View File

@@ -1,7 +1,7 @@
\input texinfo
@c %**start of header
@setfilename coreutils.info
@settitle @sc{gnu} Core-utils
@settitle @sc{gnu} Coreutils
@c %**end of header
@@ -23,9 +23,9 @@
@ifinfo
@format
START-INFO-DIR-ENTRY
* @sc{gnu} Utilities: (coreutils). @sc{gnu} Utilities.
* GNU Utilities: (coreutils). @sc{gnu} Utilities.
* Common options: (coreutils)Common options. Common options.
* File permissions: (coreutils)File permission. Access modes.
* File permissions: (coreutils)File permissions. Access modes.
* Date input formats: (coreutils)Date input formats.
* basename: (coreutils)basename invocation. Strip directory and suffix.
@@ -82,6 +82,7 @@ START-INFO-DIR-ENTRY
* printf: (coreutils)printf invocation. Format and print data.
* ptx: (coreutils)ptx invocation. Produce permuted indexes.
* pwd: (coreutils)pwd invocation. Print working directory.
* readlink: (coreutils)readlink invocation. Display value of a symbolic link.
* rm: (coreutils)rm invocation. Remove files.
* rmdir: (coreutils)rmdir invocation. Remove empty directories.
* seq: (coreutils)seq invocation. Print numeric sequences
@@ -118,8 +119,8 @@ END-INFO-DIR-ENTRY
@end ifinfo
@copying
This manual documents version @value{VERSION} of the @sc{gnu} command
line utilities.
This manual documents version @value{VERSION} of the @sc{gnu} core
utilities, including the standard programs for text and file manipulation.
Copyright @copyright{} 1994, 1995, 1996, 2000, 2001, 2002
Free Software Foundation, Inc.
@@ -135,7 +136,7 @@ Free Documentation License''.
@end copying
@titlepage
@title @sc{gnu} @code{Core-utils}
@title @sc{gnu} @code{Coreutils}
@subtitle A set of command line utilities
@subtitle for version @value{VERSION}, @value{UPDATED}
@author David MacKenzie et al.
@@ -151,7 +152,7 @@ Free Documentation License''.
@c the matching @end directive below.
@ifnottex
@node Top
@top GNU Core-utils
@top GNU Coreutils
@insertcopying
@end ifnottex
@@ -297,6 +298,7 @@ Special file types
* mkdir invocation:: Make directories
* mkfifo invocation:: Make FIFOs (named pipes)
* mknod invocation:: Make block or character special files
* readlink invocation:: Display value of a symbolic link
* rmdir invocation:: Remove empty directories
* unlink invocation:: Remove files via unlink syscall
@@ -635,14 +637,11 @@ It has been replaced with @w{@kbd{--backup}}.
@cindex block size
Some @sc{gnu} programs (at least @command{df}, @code{du}, and @code{ls}) display
file sizes in ``blocks''. You can adjust the block size to make file
sizes easier to read. The block size used for display is independent of
any filesystem block size.
Normally, disk usage sizes are rounded up, disk free space sizes are
rounded down, and other sizes are rounded to the nearest value with ties
rounding to an even value.
Some @sc{gnu} programs (at least @command{df}, @code{du}, and
@code{ls}) display sizes in ``blocks''. You can adjust the block size
and method of display to make sizes easier to read. The block size
used for display is independent of any filesystem block size.
Fractional block counts are rounded up to the nearest integer.
@opindex --block-size=@var{size}
@vindex BLOCK_SIZE
@@ -672,8 +671,9 @@ variables are set, but this variable is set, the block size defaults to 512.
@end table
If none of the above environment variables are set, the block size
currently defaults to 1024 bytes, but this number may change in the
future.
currently defaults to 1024 bytes in most contexts, but this number may
change in the future. For @command{ls} file sizes, the block size
defaults to 1 byte.
@cindex human-readable output
@cindex SI output
@@ -693,14 +693,28 @@ powers of 1024; @samp{M} stands for 1,048,576 bytes.
@code{BLOCK_SIZE=si} is similar, but uses powers of 1000 and appends
@samp{B}; @samp{MB} stands for 1,000,000 bytes.
@vindex LC_NUMERIC
A block size specification preceded by @samp{'} causes output sizes to
be displayed with thousands separators. The @env{LC_NUMERIC} locale
specifies the thousands separator and grouping. For example, in an
American English locale, @samp{--block-size="'1kB"} would cause a size
of 1234000 bytes to be displayed as @samp{1,234}. In the default C
locale, there is no thousands separator so a leading @samp{'} has no
effect.
An integer block size can be followed by a suffix to specify a
multiple of that size; in this case an omitted integer is understood
to be 1. A bare size letter, or one followed by @samp{iB}, specifies
multiple of that size. A bare size letter,
or one followed by @samp{iB}, specifies
a multiple using powers of 1024. A size letter followed by @samp{B}
specifies powers of 1000 instead. For example, @samp{M} and
@samp{MiB} are equivalent to @samp{1048576}, whereas @samp{MB} is
specifies powers of 1000 instead. For example, @samp{1M} and
@samp{1MiB} are equivalent to @samp{1048576}, whereas @samp{1MB} is
equivalent to @samp{1000000}.
A plain suffix without a preceding integer acts as if @samp{1} were
prepended, except that it causes a size indication to be appended to
the output. For example, @samp{--block-size="kB"} displays 3000 as
@samp{3kB}.
The following suffixes are defined. Large sizes like @code{1Y}
may be rejected by your computer due to limitations of its arithmetic.
@@ -852,6 +866,7 @@ operating on it. The @w{@kbd{--strip-trailing-slashes}} option enables
this behavior.
This is useful when a @var{source} argument may have a trailing slash and
@c FIXME: mv's behavior in this case is system-dependent
specify a symbolic link to a directory. This scenario is in fact rather
common because some shells can automatically append a trailing slash when
performing file name completion on such symbolic links. Without this
@@ -1720,8 +1735,8 @@ Double space the output.
@cindex time formats
@cindex formatting times
Format header dates using @var{format}, using the same conventions as
for the the command @samp{date +@var{format}}; @xref{date invocation, ,
,sh-utils,GNU shell utilities}. Except for directives, which start with
for the the command @samp{date +@var{format}}; @xref{date invocation}.
Except for directives, which start with
@samp{%}, characters in @var{format} are printed unchanged. You can use
this option to specify an arbitrary string in place of the header date,
e.g., @option{--date-format="Monday morning"}.
@@ -2112,7 +2127,7 @@ before the output for each @var{file}.
reverse), since reversing a file is really a different job from printing
the end of a file; BSD @command{tail} (which is the one with @code{-r}) can
only reverse files that are at most as large as its buffer, which is
typically 32k. A more reliable and versatile way to reverse files is
typically 32 KiB. A more reliable and versatile way to reverse files is
the @sc{gnu} @command{tac} command.
If any option-argument is a number @var{n} starting with a @samp{+},
@@ -2185,11 +2200,13 @@ Without this option, when tail encounters a file that doesn't
exist or is otherwise inaccessible, it reports that fact and
never checks it again.
@itemx --sleep-interval=@var{n}
@itemx --sleep-interval=@var{number}
@opindex --sleep-interval
Change the number of seconds to wait between iterations (the default is 1).
Change the number of seconds to wait between iterations (the default is 1.0).
During one iteration, every specified file is checked to see if it has
changed size.
Historical implementations of @command{tail} have required that
@var{number} be an integer. However, GNU @command{tail} accepts
an arbitrary floating point number.
@itemx --pid=@var{pid}
@opindex --pid
@@ -2933,7 +2950,7 @@ An initial string, consisting of any amount of whitespace, followed
by a month name abbreviation, is folded to UPPER case and
compared in the order @samp{JAN} < @samp{FEB} < @dots{} < @samp{DEC}.
Invalid names compare low to valid names. The @env{LC_TIME} locale
determines the month spellings.
category determines the month spellings.
@item -n
@itemx --numeric-sort
@@ -3228,6 +3245,10 @@ The input need not be sorted, but duplicate input lines are detected
only if they are adjacent. If you want to discard non-adjacent
duplicate lines, perhaps you want to use @code{sort -u}.
@vindex LC_COLLATE
Comparisons use the character collating sequence specified by the
@env{LC_COLLATE} locale category.
If no @var{output} file is specified, @command{uniq} writes to standard
output.
@@ -4030,6 +4051,9 @@ options}.
@opindex --bytes
Print only the bytes in positions listed in @var{byte-list}. Tabs and
backspaces are treated like any other character; they take up 1 byte.
If an output delimiter is specified, (see the description of
@option{--output-delimiter}), then output that string between
ranges of selected bytes.
@item -c @var{character-list}
@itemx --characters=@var{character-list}
@@ -4039,6 +4063,9 @@ Print only characters in positions listed in @var{character-list}.
The same as @option{-b} for now, but internationalization will change
that. Tabs and backspaces are treated like any other character; they
take up 1 character.
If an output delimiter is specified, (see the description of
@option{--output-delimiter}), then output that string between
ranges of selected bytes.
@item -f @var{field-list}
@itemx --fields=@var{field-list}
@@ -4069,8 +4096,11 @@ character. Normally, any line without a field separator is printed verbatim.
@itemx --output-delimiter=@var{output_delim_string}
@opindex --output-delimiter
For @option{-f}, output fields are separated by @var{output_delim_string}.
The default is to use the input delimiter.
With @option{-f}, output fields are separated by @var{output_delim_string}.
The default with @option{-f} is to use the input delimiter.
When using @option{-b} or @option{-c} to select ranges of byte or
character offsets (as opposed to ranges of fields),
output @var{output_delim_string} between ranges of selected bytes.
@end table
@@ -4868,6 +4898,11 @@ command line.
@opindex --directory
List just the names of directories, as with other types of files, rather
than listing their contents.
@c The following sentence is the same as the one for -F.
Do not follow symbolic links listed on the
command line unless the @option{--dereference-command-line} (@option{-H}),
@option{--dereference} (@option{-L}), or
@option{--dereference-command-line-symlink-to-dir} options are specified.
@item -H
@itemx --dereference-command-line
@@ -4877,6 +4912,20 @@ than listing their contents.
If a command line argument specifies a symbolic link, show information
for the file the link references rather than for the link itself.
@itemx --dereference-command-line-symlink-to-dir
@opindex --dereference-command-line-symlink-to-dir
@cindex symbolic links, dereferencing
Do not dereference symbolic links, with one exception:
if a command line argument specifies a symbolic link that refers to
a directory, show information for that directory rather than for the
link itself.
This is the default behavior when no other dereferencing-related
option has been specified (@option{--classify} (@option{-F}),
@option{--directory} (@option{-d}),
(@option{-l}),
@option{--dereference} (@option{-L}), or
@option{--dereference-command-line} (@option{-H})).
@item -I PATTERN
@itemx --ignore=PATTERN
@opindex -I
@@ -4938,7 +4987,7 @@ With the long listing (@option{-l}) format, print an additional line after
the main output:
@example
//DIRED// @var{beg1 end1 beg2 end2 @dots{}}
//DIRED// @var{beg1} @var{end1} @var{beg2} @var{end2} @dots{}
@end example
@noindent
@@ -4948,9 +4997,9 @@ This makes it easy for Emacs to find the names, even when they contain
unusual characters such as space or newline, without fancy searching.
If directories are being listed recursively (@code{-R}), output a similar
line after each subdirectory:
line with offsets for each subdirectory name:
@example
//SUBDIRED// @var{format} @var{beg1 end1 @dots{}}
//SUBDIRED// @var{beg1} @var{end1} @dots{}
@end example
Finally, output a line of the form:
@@ -4959,6 +5008,73 @@ Finally, output a line of the form:
@end example
where @var{word} is the quoting style (@pxref{Formatting the file names}).
Here is an actual example:
@example
$ mkdir -p a/sub/deeper a/sub2
$ touch a/f1 a/f2
$ touch a/sub/deeper/file
$ ls -gloRF --dired a
a:
total 8
-rw-r--r-- 1 0 Nov 9 18:30 f1
-rw-r--r-- 1 0 Nov 9 18:30 f2
drwxr-xr-x 3 4096 Nov 9 18:30 sub/
drwxr-xr-x 2 4096 Nov 9 18:30 sub2/
a/sub:
total 4
drwxr-xr-x 2 4096 Nov 9 18:30 deeper/
a/sub/deeper:
total 0
-rw-r--r-- 1 0 Nov 9 18:30 file
a/sub2:
total 0
//DIRED// 55 57 98 100 141 144 186 190 252 258 327 331
//SUBDIRED// 2 3 195 200 263 275 335 341
//DIRED-OPTIONS// --quoting-style=literal
@end example
Note that the pairs of offsets on the @samp{//DIRED//} line above delimit
these names: @file{f1}, @file{f2}, @file{sub}, @file{sub2}, @file{deeper},
@file{file}.
The offsets on the @samp{//SUBDIRED//} line delimit the following
directory names: @file{a}, @file{a/sub}, @file{a/sub/deeper}, @file{a/sub2}.
Here is an example of how to extract the fifth entry name, @samp{deeper},
corresponding to the pair of offsets, 252 and 258:
@example
$ ls -gloRF --dired a > out
$ dd bs=1 skip=252 count=6 < out 2>/dev/null; echo
deeper
@end example
Note that although the listing above includes a trailing slash
for the @samp{deeper} entry, the offsets select the name without
the trailing slash. However, if you invoke @command{ls} with @option{--dired}
along with an option like @option{--escape} (aka @option{-b}) and operate
on a file whose name contains special characters, notice that the backslash
@emph{is} included:
@example
$ touch 'a b'
$ ls -blog --dired 'a b'
-rw-r--r-- 1 0 Nov 9 18:41 a\ b
//DIRED// 40 44
//DIRED-OPTIONS// --quoting-style=escape
@end example
If you use a quoting style that adds quote marks
(e.g., @option{--quoting-style=c}), then the offsets include the quote marks.
So beware that the user may select the quoting style via the environment
variable @env{QUOTING_STYLE}. Hence, applications using @option{--dired}
should either specify an explicit @option{--quoting-style=literal} option
(aka @option{-N} or @option{--literal}) on the command line, or else be
prepared to parse the escaped names.
@item --full-time
@opindex --full-time
Produce long format directory listings, and list times in full. It is
@@ -4984,6 +5100,7 @@ provide this option for compatibility.)
@cindex human-readable output
Append a size letter to each size, such as @samp{M} for mebibytes.
Powers of 1024 are used, not 1000; @samp{M} stands for 1,048,576 bytes.
This option is equivalent to @option{--block-size=human} (@pxref{Block size}).
Use the @option{--si} option if you prefer powers of 1000.
@item -i
@@ -5003,10 +5120,16 @@ uniquely identifies each file within a particular filesystem.)
@opindex long ls @r{format}
@opindex verbose ls @r{format}
In addition to the name of each file, print the file type, permissions,
number of hard links, owner name, group name, size in bytes, and
number of hard links, owner name, group name, size, and
timestamp (@pxref{Formatting file timestamps}), normally
the modification time.
Normally the size is printed as a byte count without punctuation, but
this can be overridden (@pxref{Block size}). For example, @option{-h}
prints an abbreviated, human-readable count, and
@samp{--block-size="'1"} prints a byte count with the thousands
separator of the current locale.
For each directory that is listed, preface the files with a line
@samp{total @var{blocks}}, where @var{blocks} is the total disk allocation
for all files in that directory. The block size currently defaults to 1024
@@ -5083,7 +5206,9 @@ it also affects the HP-UX @command{ls} program.
@cindex SI output
Append an SI-style abbreviation to each size, such as @samp{MB} for
megabytes. Powers of 1000 are used, not 1024; @samp{MB} stands for
1,000,000 bytes. Use the @option{-h} or @option{--human-readable} option if
1,000,000 bytes. This option is equivalent to
@option{--block-size=si}. Use the @option{-h} or
@option{--human-readable} option if
you prefer powers of 1024.
@end table
@@ -5282,6 +5407,11 @@ Append a character to each file name indicating the file type. Also,
for regular files that are executable, append @samp{*}. The file type
indicators are @samp{/} for directories, @samp{@@} for symbolic links,
@samp{|} for FIFOs, @samp{=} for sockets, and nothing for regular files.
@c The following sentence is the same as the one for -d.
Do not follow symbolic links listed on the
command line unless the @option{--dereference-command-line} (@option{-H}),
@option{--dereference} (@option{-L}), or
@option{--dereference-command-line-symlink-to-dir} options are specified.
@item --indicator-style=@var{word}
@opindex --indicator-style
@@ -5356,76 +5486,116 @@ is 80.
@node Formatting file timestamps
@subsection Formatting file timestamps
By default, file timestamps are output in abbreviated form. For files
with a time more than six months old or in the future, the timestamp
contains the year instead of the time of day. If the timestamp contains
today's date with the year rather than a time of day, the file's time is
in the future, which means you probably have clock skew problems which
may break programs like @command{make} that rely on file times.
By default, file timestamps are listed in abbreviated form. Most
locales use a timestamp like @samp{2002-03-30 23:45}. However, the
default @acronym{POSIX} locale uses a date like @samp{Mar 30@ @ 2002}
for non-recent timestamps, and a date-without-year and time like
@samp{Mar 30 23:45} for recent timestamps.
A timestamp is considered to be @dfn{recent} if it is less than six
months old, and is not dated in the future. If a timestamp dated
today is not listed in recent form, the timestamp is in the future,
which means you probably have clock skew problems which may break
programs like @command{make} that rely on file timestamps.
The following option changes how file timestamps are printed.
@table @samp
@item --time-style=@var{word}
@item --time-style=@var{style}
@opindex --time-style
@cindex time style
Use style @var{word} to output file timestamps. The @var{word} should
List timestamps in style @var{style}. The @var{style} should
be one of the following:
@table @samp
@item +@var{format}
@vindex LC_TIME
List timestamps using @var{format}, where @var{format} is interpreted
like the format argument of @command{date} (@pxref{date invocation}).
For example, @option{--time-style="+%Y-%m-%d %H:%M:%S"} causes
@command{ls} to list timestamps like @samp{2002-03-30 23:45:56}. As
with @command{date}, @var{format}'s interpretation is affected by the
@env{LC_TIME} locale category.
If @var{format} contains two format strings separated by a newline,
the former is used for non-recent files and the latter for recent
files; if you want output columns to line up, you may need to insert
spaces in one of the two formats.
@item full-iso
List timestamps in full, rather than using the standard abbreviation
heuristics. The format is @acronym{ISO} 8601 date, time, and time zone
format with nanosecond precision, e.g., @samp{2001-05-14
23:45:56.477817180 -0700}. It's not possible to change the format, but
you can extract out the date string with @command{cut} and then pass the
result to @code{date -d}. @xref{date invocation, @command{date}
invocation, , sh-utils, Shell utilities}.
List timestamps in full using @acronym{ISO} 8601 date, time, and time zone
format with nanosecond precision, e.g., @samp{2002-03-30
23:45:56.477817180 -0700}. This style is equivalent to
@samp{+%Y-%m-%d %H:%M:%S.%N %z}.
This is useful because the time output includes all the information that
is available from the operating system. For example, this can help
when you have a Makefile that is not regenerating files properly.
explain @command{make}'s behavior, since @acronym{GNU} @command{make}
uses the full timestamp to determine whether a file is out of date.
@item long-iso
List @acronym{ISO} 8601 date and time in minutes, e.g.,
@samp{2002-03-30 23:45}. These timestamps are shorter than
@samp{full-iso} timestamps, and are usually good enough for everyday
work. This style is equivalent to @samp{%Y-%m-%d %H:%M}.
@item iso
Use @acronym{ISO}-style time stamps like @samp{2001-05-14@ } and @samp{05-14
23:45}.
List @acronym{ISO} 8601 dates for non-recent timestamps (e.g.,
@samp{2002-03-30@ }), and @acronym{ISO} 8601 month, day, hour, and
minute for recent timestamps (e.g., @samp{03-30 23:45}). These
timestamps are uglier than @samp{long-iso} timestamps, but they carry
nearly the same information in a smaller space and their brevity helps
@command{ls} output fit within traditional 80-column output lines.
The following two @command{ls} invocations are equivalent:
@example
newline='
'
ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
ls -l --time-style="iso"
@end example
@item locale
@vindex LC_ALL
@vindex LC_TIME
@vindex LANG
Use locale-dependent dates like @samp{touko@ @ 14 2001} and @samp{touko@
@ 14 23:45}, time stamps that might occur in a Finnish locale. The
locale for formatting timestamps is specified by the first of three
environment variables @env{LC_ALL}, @env{LC_TIME}, @env{LANG} that is
set.
List timestamps in a locale-dependent form. For example, a Finnish
locale might list non-recent timestamps like @samp{maalis 30@ @ 2002}
and recent timestamps like @samp{maalis 30 23:45}. Locale-dependent
timestamps typically consume more space than @samp{iso} timestamps and
are harder for programs to parse because locale conventions vary so
widely, but they are easier for many people to read.
@item posix-iso
Use traditional @acronym{POSIX}-locale dates like @samp{May 14@ @ 2001} and
@samp{May 14 23:45} unless the user specifies a non-@acronym{POSIX} locale,
in which case use @acronym{ISO}-style dates. This is the default.
@item +@var{format}
Use @var{format} for dates, where @var{format} is interpreted like the
format argument of @command{date} (@pxref{date invocation}). If
@var{format} contains two format strings separated by a newline, the
former is used for non-recent files and the latter for recent files;
if you want the columns to line up, you may need to append trailing
spaces to one of the two formats. For example, the following two
The @env{LC_TIME} locale category specifies the timestamp format. The
default @acronym{POSIX} locale uses timestamps like @samp{Mar 30@
@ 2002} and @samp{Mar 30 23:45}; in this locale, the following two
@command{ls} invocations are equivalent:
@example
newline='
'
ls -l --time-style=iso
ls -l --time-style=+"%Y-%m-%d $@{newline@}%m-%d %H:%M"
ls -l --time-style="+%b %e %Y$newline%b %e %H:%M"
ls -l --time-style="locale"
@end example
Other locales behave differently. For example, in a German locale,
@option{--time-style="locale"} might be equivalent to
@option{--time-style="+%e. %b %Y $newline%e. %b %H:%M"}
and might generate timestamps like @samp{30. M@"ar 2002@ } and
@samp{30. M@"ar 23:45}.
@item posix-@var{style}
@vindex LC_TIME
List @acronym{POSIX}-locale timestamps if the @env{LC_TIME} locale
category is @acronym{POSIX}, @var{style} timestamps otherwise. For
example, the default style, which is @samp{posix-long-iso}, lists
timestamps like @samp{Mar 30@ @ 2002} and @samp{Mar 30 23:45} when in
the @acronym{POSIX} locale, and like @samp{2002-03-30 23:45} otherwise.
@end table
@end table
@vindex TIME_STYLE
You can specify the default value of the @option{--time-style} option
with the environment variable @env{TIME_STYLE}. @sc{gnu} Emacs 21 and
with the environment variable @env{TIME_STYLE}; if @env{TIME_STYLE} is not set
the default style is @samp{posix-long-iso}. @acronym{GNU} Emacs 21 and
later can parse @acronym{ISO} dates, but older Emacs versions do not, so if
you are using an older version of Emacs and specify a non-@acronym{POSIX}
locale, you may need to set @samp{TIME_STYLE="locale"}.
@@ -5450,8 +5620,10 @@ backslash sequences like those used in C.
@item -N
@itemx --literal
@itemx --quoting-style=literal
@opindex -N
@opindex --literal
@opindex --quoting-style
Do not quote file names.
@item -q
@@ -5478,7 +5650,8 @@ Use style @var{word} to quote output names. The @var{word} should
be one of the following:
@table @samp
@item literal
Output names as-is.
Output names as-is; this is the same as the @option{-N} or
@option{--literal} option.
@item shell
Quote names for the shell if they contain shell metacharacters or would
cause ambiguous output.
@@ -5703,7 +5876,7 @@ combination of options is this tiny Bourne shell script:
#!/bin/sh
# Usage: backup FILE...
# Create a @sc{gnu}-style backup of each listed FILE.
for i in "$@"; do
for i; do
cp --backup --force "$i" "$i"
done
@end example
@@ -6717,6 +6890,7 @@ Besides directories, other special file types include named pipes
* mkdir invocation:: Make directories.
* mkfifo invocation:: Make FIFOs (named pipes).
* mknod invocation:: Make block or character special files.
* readlink invocation:: Display value of a symbolic link.
* rmdir invocation:: Remove empty directories.
* unlink invocation:: Remove files via the unlink syscall
@end menu
@@ -7046,6 +7220,9 @@ for a character special file
When making a block or character special file, the major and minor
device numbers must be given after the file type.
If a major or minor device number begins with @samp{0x} or @samp{0X},
it is interpreted as hexadecimal; otherwise, if it begins with @samp{0},
as octal; otherwise, as decimal.
The program accepts the following option. Also see @ref{Common options}.
@@ -7062,6 +7239,74 @@ of departure. @xref{File permissions}.
@end table
@node readlink invocation
@section @command{readlink}: Display value of a symbolic link
@pindex readlink
@cindex displaying value of a symbolic link
@command{readlink} may work in one of two supported modes:
@table @samp
@item Readlink mode
@command{readlink} outputs the value of the given symbolic link.
If @command{readlink} is invoked with an argument other than the pathname
of a symbolic link, it exits with a non-zero exit code.
@item Canonicalize mode
@command{readlink} outputs the absolute name of the given file which contains
no `.', `..' components nor any repeated path separators (`/') or symlinks.
In any of the path components is missing or unavailable,
it exits with a non-zero exit code.
@end table
@example
readlink [@var{option}] @var{file}
@end example
By default, @command{readlink} operates in readlink mode.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item -f
@itemx --canonicalize
@opindex -f
@opindex --canonicalize
Activate canonicalize mode.
@item -n
@itemx --no-newline
@opindex -n
@opindex --no-newline
Do not output the trailing newline.
@item -s
@itemx -q
@itemx --silent
@itemx --quiet
@opindex -s
@opindex -q
@opindex --silent
@opindex --quiet
Suppress most error messages.
@item -v
@itemx --verbose
@opindex -v
@opindex --verbose
Report error messages.
@end table
The @command{readlink} utility first appeared in OpenBSD 2.1.
@node rmdir invocation
@section @command{rmdir}: Remove empty directories
@@ -7620,6 +7865,7 @@ reports on the filesystem containing each argument @var{file}.
Normally the disk space is printed in units of
1024 bytes, but this can be overridden (@pxref{Block size}).
Non-integer quantities are rounded up to the next higher unit.
@cindex disk device file
@cindex device file, disk
@@ -7724,10 +7970,6 @@ one line; a mount device is never put on a line by itself. This means
that if the mount device name is more than 20 characters long (e.g., for
some network mounts), the columns are misaligned.
@item
Non-integer values are rounded up, instead of being rounded down or
rounded to the nearest integer.
@item
The labels in the header output line are changed to conform to @acronym{POSIX}.
@end enumerate
@@ -7825,6 +8067,7 @@ du [@var{option}]@dots{} [@var{file}]@dots{}
With no arguments, @command{du} reports the disk space for the current
directory. Normally the disk space is printed in units of
1024 bytes, but this can be overridden (@pxref{Block size}).
Non-integer quantities are rounded up to the next higher unit.
The program accepts the following options. Also see @ref{Common options}.
@@ -7939,10 +8182,10 @@ of subdirectories.
Skip directories that are on different filesystems from the one that
the argument being processed is on.
@item --exclude=@var{PAT}
@opindex --exclude=@var{PAT}
@item --exclude=@var{PATTERN}
@opindex --exclude=@var{PATTERN}
@cindex excluding files from @command{du}
When recursing, skip subdirectories or files matching @var{PAT}.
When recursing, skip subdirectories or files matching @var{PATTERN}.
For example, @code{du --exclude='*.o'} excludes files whose names
end in @samp{.o}.
@@ -7994,28 +8237,22 @@ also give information about the files the links point to.
Report information about the filesystems where the given files are located
instead of information about the files themselves.
@item -l
@itemx --link
@opindex -l
@opindex --link
@cindex link
With this option, @command{stat} works normally for all type of files except for
symbolic links. For symbolic links information about the files that are
obtained by tracing the links is displayed.
@item -L
@itemx --dereference
@opindex -L
@opindex --dereference
@cindex symbolic links, dereferencing in @command{stat}
Change how @command{stat} treats symbolic links.
With this option, @command{stat} acts on the file referenced
by each symbolic link argument.
Without it, @command{stat} acts on any symbolic link argument directly.
@item -t
@itemx --terse
@opindex -t
@opindex --terse
@cindex terse output
Prints the information in terse form, suitable for parsing by other programs
@item -s
@itemx --secure
@opindex -s
@opindex --secure
@cindex security output
Displays security context on SE Linux.
Print the information in terse form, suitable for parsing by other programs.
@item -c
@itemx --format
@@ -8051,8 +8288,6 @@ Interpreted sequences for file stat are:
@item %Y - Time of last modification as seconds since Epoch
@item %z - Time of last change
@item %Z - Time of last change as seconds since Epoch
@item %S - Security ID in SE-Linux
@item %C - Security context in SE-Linux
@end itemize
Interpreted sequences for filesystem stat are:
@@ -8067,8 +8302,6 @@ Interpreted sequences for filesystem stat are:
@item %a - Free blocks available to non-superuser
@item %s - Optimal transfer block size
@item %c - Total file nodes in file system
@item %S - Security ID in SE-Linux
@item %C - Security context in SE-Linux
@end itemize
@end table
@@ -8187,10 +8420,10 @@ argument string with @samp{\} escapes interpreted in the same way as in
the @var{format} string.
@kindex \0ooo
@kindex \0xhhh
@kindex \xhh
@command{printf} interprets @samp{\0ooo} in @var{format} as an octal number
(if @var{ooo} is 0 to 3 octal digits) specifying a character to print,
and @samp{\xhhh} as a hexadecimal number (if @var{hhh} is 1 to 3 hex
and @samp{\xhh} as a hexadecimal number (if @var{hh} is 1 to 2 hex
digits) specifying a character to print.
@kindex \uhhhh
@@ -8205,7 +8438,7 @@ on the values of the environment variables @code{LC_ALL}, @code{LC_CTYPE},
The processing of @samp{\u} and @samp{\U} requires a full-featured
@code{iconv} facility. It is activated on systems with glibc 2.2 (or newer),
or when @code{libiconv} is installed prior to the sh-utils. Otherwise the
or when @code{libiconv} is installed prior to this package. Otherwise the
use of @samp{\u} and @samp{\U} will give an error message.
@kindex \c
@@ -8837,7 +9070,7 @@ foo=`expr $foo + 1`
To print the non-directory part of the file name stored in
@code{$fname}, which need not contain a @code{/}.
@example
expr $fname : '.*/\(^.*\)' '^|' $fname
expr $fname : '.*/\(.*\)' '|' $fname
@end example
An example showing that @code{\+} is an operator:
@@ -10129,9 +10362,13 @@ minute (00@dots{}59)
@item %N
nanoseconds (000000000@dots{}999999999)
@item %p
locale's AM or PM
locale's upper case @samp{AM} or @samp{PM} (blank in many locales)
@item %P
locale's lower case @samp{am} or @samp{pm} (blank in many locales)
@item %r
time, 12-hour (hh:mm:ss [AP]M)
@item %R
time, 24-hour (hh:mm). Same as @code{%H:%M}.
@item %s
@cindex epoch, seconds since
@cindex seconds since the epoch
@@ -10142,7 +10379,8 @@ Note that this value is the number of seconds between the epoch
and the current date as defined by the localtime system call.
It isn't changed by the @option{--date} option.
@item %S
second (00@dots{}60)
second (00@dots{}60). The range is [00@dots{}60], and not [00@dots{}59],
in order to accommodate the occasional positive leap second.
@item %T
time, 24-hour (hh:mm:ss)
@item %X
@@ -10184,6 +10422,21 @@ century (year divided by 100 and truncated to an integer) (00@dots{}99)
day of month (01@dots{}31)
@item %D
date (mm/dd/yy)
@item %e
blank-padded day of month (1@dots{}31)
@item %F
the @w{ISO 8601} standard date format: @code{%Y-%m-%d}.
This is the preferred form for all uses.
@item %g
The year corresponding to the ISO week number, but without the century
(range @code{00} through @code{99}). This has the same format and value
as @code{%y}, except that if the ISO week number (see @code{%V}) belongs
to the previous or next year, that year is used instead.
@item %G
The year corresponding to the ISO week number. This has the same format
and value as @code{%Y}, except that if the ISO week number (see
@code{%V}) belongs to the previous or next year, that year is used
instead.
@item %h
same as %b
@item %j
@@ -10199,7 +10452,7 @@ Days in a new year preceding the first Sunday are in week zero.
week number of year with Monday as first day of the week as a decimal
(01@dots{}53). If the week containing January 1 has four or more days in
the new year, then it is considered week 1; otherwise, it is week 53 of
the previous year, and the next week is week 1. (See the ISO 8601: 1988
the previous year, and the next week is week 1. (See the @acronym{ISO} 8601
standard.)
@item %w
day of week (0@dots{}6) with 0 corresponding to Sunday
@@ -10348,7 +10601,7 @@ be considerable.
@itemx --iso-8601[=@var{timespec}]
@opindex -I @var{timespec}
@opindex --iso-8601[=@var{timespec}]
Display the date using the ISO 8601 format, @samp{%Y-%m-%d}.
Display the date using the @acronym{ISO} 8601 format, @samp{%Y-%m-%d}.
The argument @var{timespec} specifies the number of additional
terms of the time to include. It can be one of the following:
@@ -10881,10 +11134,8 @@ nohup @var{command} [@var{arg}]@dots{}
@end example
@flindex nohup.out
@command{nohup} increases the scheduling priority of @var{command} by 5, so
it has a slightly smaller chance to run. If standard output is a terminal,
it and standard error are redirected so that they are appended to the
file @file{nohup.out}; if that cannot be written to, they are appended
If standard output is a terminal, it is redirected so that it is appended
to the file @file{nohup.out}; if that cannot be written to, it is appended
to the file @file{$HOME/nohup.out}. If that cannot be written to, the
command is not run.
@@ -10893,13 +11144,27 @@ If @command{nohup} creates either @file{nohup.out} or
access permissions. It does not change the permissions if the output
file already existed.
If standard error is a terminal, it is redirected to the same file
descriptor as the standard output.
@command{nohup} does not automatically put the command it runs in the
background; you must do that explicitly, by ending the command line
with an @samp{&}.
with an @samp{&}. Also, @command{nohup} does not change the
scheduling priority of @var{command}; use @command{nice} for that,
e.g., @samp{nohup nice @var{command}}.
The only options are @option{--help} and @option{--version}. @xref{Common
options}.
@cindex exit status of @command{nohup}
Exit status:
@display
126 if @var{command} was found but could not be invoked
127 if @command{nohup} itself failed or if @var{command} could not be found
the exit status of @var{command} otherwise
@end display
@node su invocation
@section @command{su}: Run a command with substitute user and group id
@@ -11624,9 +11889,65 @@ $ cut -d: -f1,5 /etc/passwd
@end example
With the @option{-c} option, @command{cut} will cut out specific characters
(i.e., columns) in the input lines. This command looks like it might be
useful for data filtering.
(i.e., columns) in the input lines. This is useful for input data
that has fixed width fields, and does not have a field separator. For
example, list the Monday dates for the current month:
@c Is using cal ok? Looked at gcal, but I don't like it.
@example
$ cal | cut -c 3-5
@print{}Mo
@print{}
@print{} 6
@print{} 13
@print{} 20
@print{} 27
@end example
Cut can also add field separators to fixed width data, using the
@option{--output-delimiter} option. This can be very useful to fill a
database:
@c [Why] can't that silly total line for directories be switched off?
@example
$ ls -ld ~/* | cut --output-delimiter=, -c1,2-4,5-7,8-10,57- | tee home.cs
@print{} d,rwx,r-x,r-x,CVS
@print{} d,rwx,---,---,Mail
@print{} d,rwx,r-x,r-x,lilypond
@print{} d,rwx,r-x,r-x,savannah
$ mysql -e 'create table home \
(d char(1),u char(3), g char (3), o char (3), name text)' test
$ mysqlimport --fields-terminated-by=, test home.cs
@print{} test.home: Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
$ mysql -e 'select * from home' test
@print{} +------+------+------+------+----------+
@print{} | d | u | g | o | name |
@print{} +------+------+------+------+----------+
@print{} | d | rwx | r-x | r-x | CVS |
@print{} | d | rwx | --- | --- | Mail |
@print{} | d | rwx | r-x | r-x | lilypond |
@print{} | d | rwx | r-x | r-x | savannah |
@print{} +------+------+------+------+----------+
@end example
But beware of assumptions.
The above invocation of @command{ls} assumes that the owner
and group names are no longer than eight bytes each,
and that no file has size larger than 99999999 bytes.
Otherwise, the byte offset of @samp{57} would need to be larger.
To avoid such problems, suppress output of the owner and group
names with the @option{-g} and @option{-G} options respectively,
and add the @option{-h} option to ensure that the representation
of the size of the file does not exceed the allotted space.
Finally, note that the width of even the date/time field may change,
depending on the current locale. To avoid that, use an option
like @option{--time-style='+%Y-%m-%d %H:%M:%S'}.
And there's still another problem: if a file has more
than 999 hard links to it, then that will change the alignment.
The morale is that it is hard to use fixed byte offsets into
a line of @command{ls} output. Use a different tool, like
find, but with @option{-printf} and carefully chosen format strings.
@node The sort command
@unnumberedsec The @command{sort} Command
@@ -11926,9 +12247,6 @@ There are some other tools that deserve brief mention.
@item grep
search files for text that matches a regular expression
@item egrep
like @command{grep}, but with more powerful regular expressions
@item wc
count lines, words, characters

View File

@@ -1,10 +1,10 @@
error.h
fnmatch.h
getopt.h
getopt.c
getopt.h
getopt1.c
getpagesize.h
md5.h
obstack.h
regex.h
regex.c
getpagesize.h
regex.h

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,22 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
## Makefile for gnulib/lib -*-Makefile-*-
# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 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.
AUTOMAKE_OPTIONS = ../src/ansi2knr
@@ -17,7 +35,7 @@ libfetish_a_SOURCES = \
getdate.h getdate.y \
posixtm.c posixtm.h \
posixver.c posixver.h \
strftime.c \
strftime.c strftime.h \
getopt.c getopt.h getopt1.c \
hash.c hash.h \
hash-pjw.c hash-pjw.h \
@@ -29,7 +47,10 @@ libfetish_a_SOURCES = \
bumpalloc.h \
canon-host.c \
c-stack.c c-stack.h \
canonicalize.h \
closeout.c closeout.h \
cycle-check.c cycle-check.h \
dev-ino.h \
diacrit.c diacrit.h \
dirname.c dirname.h \
dirfd.h \
@@ -41,6 +62,8 @@ libfetish_a_SOURCES = \
fnmatch_.h \
fopen-safer.c \
fsusage.h \
ftw_.h \
full-read.c full-read.h \
full-write.c full-write.h \
getline.h \
getpagesize.h \
@@ -53,6 +76,7 @@ libfetish_a_SOURCES = \
human.c human.h \
idcache.c \
isdir.c \
imaxtostr.c \
lchown.h \
linebuffer.c linebuffer.h \
localcharset.c \
@@ -64,6 +88,7 @@ libfetish_a_SOURCES = \
memcoll.c memcoll.h \
modechange.c modechange.h \
mountlist.h \
offtostr.c \
path-concat.c path-concat.h \
pathmax.h \
physmem.c physmem.h \
@@ -73,9 +98,11 @@ libfetish_a_SOURCES = \
readutmp.h \
regex.h \
safe-read.c safe-read.h \
safe-write.c safe-write.h \
same.c same.h \
save-cwd.c save-cwd.h \
savedir.c savedir.h \
search_.h \
settime.c \
sha.c sha.h \
sig2str.h \
@@ -83,15 +110,18 @@ libfetish_a_SOURCES = \
stripslash.c \
strverscmp.h \
timespec.h \
umaxtostr.c \
unicodeio.c unicodeio.h \
unistd-safer.h \
unlocked-io.h \
userspec.c \
version-etc.c version-etc.h \
xalloc.h \
xgetcwd.c \
xgetcwd.c xgetcwd.h \
xgethostname.c \
xmalloc.c \
xmemcoll.c xmemcoll.h \
xnanosleep.c xnanosleep.h \
xreadlink.c xreadlink.h \
xstrdup.c \
xstrtod.c xstrtod.h \
@@ -105,30 +135,11 @@ libfetish_a_LIBADD = @LIBOBJS@ @ALLOCA@
libfetish_a_DEPENDENCIES = $(libfetish_a_LIBADD)
BUILT_SOURCES = getdate.c lstat.c stat.c unlocked-io.h
BUILT_SOURCES = getdate.c
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
DISTCLEANFILES = lstat.c stat.c unlocked-io.h
EXTRA_DIST = xstat.in config.charset ref-add.sin ref-del.sin gen-uio \
fnmatch_loop.c
lstat.c: xstat.in
sed \
-e '/@IGNORE@/d' \
-e 's/@xstat@/lstat/g' \
-e '/_LSTAT_ONLY@/d' \
-e '/@BEGIN_STAT_ONLY@/,/@END_STAT_ONLY@/d' \
$(srcdir)/xstat.in > t-$@
mv t-$@ $@
stat.c: xstat.in
sed \
-e '/@IGNORE@/d' \
-e 's/@xstat@/stat/g' \
-e '/_STAT_ONLY@/d' \
-e '/@BEGIN_LSTAT_ONLY@/,/@END_LSTAT_ONLY@/d' \
$(srcdir)/xstat.in > t-$@
mv t-$@ $@
EXTRA_DIST = config.charset ref-add.sin ref-del.sin \
fnmatch_loop.c inttostr.c inttostr.h
# The following is needed in order to install a simple file in $(libdir)
# which is shared with other installed packages. We use a list of referencing
@@ -137,7 +148,7 @@ stat.c: xstat.in
# On systems with glibc-2.1 or newer, the file is redundant, therefore we
# avoid installing it.
all-local: charset.alias ref-add.sed ref-del.sed lstat.c stat.c unlocked-io.h
all-local: charset.alias ref-add.sed ref-del.sed
charset_alias = $(DESTDIR)$(libdir)/charset.alias
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
@@ -176,22 +187,4 @@ SUFFIXES = .sed .sin
sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
mv t-$@ $@
CLEANFILES = charset.alias ref-add.sed ref-del.sed
###############################################
# FIXME: remove this dependency once automake handles it.
# As of cvs automake of about 2002-01-13,
# this dependency is necessary to avoid a build failure
# when running `make check' before running `make all'.
# Otherwise, unlocked-io.h is not built before it's needed.
getdate$U.o: unlocked-io.h
# FIXME: CAUTION this list is a duplicate of one in ../Makefile.cfg.
io_functions = \
clearerr feof ferror fflush fgets fputc fputs \
fread fwrite getc getchar putc putchar
unlocked-io.h: $(srcdir)/gen-uio Makefile.am
srcdir=$(srcdir) $(SHELL) $(srcdir)/gen-uio $(io_functions) > $@t
mv $@t $@
CLEANFILES = charset.alias ref-add.sed ref-del.sed ftw.h search.h

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,3 @@
The files in this directory are shared between the fileutils, sh-utils,
and textutils packages. Not all files are used by each package.
The files in this directory are used in many GNU packages,
including diffutils, fileutils, sh-utils, tar, and textutils.
The autoconf tests required for these files are in ../m4.
The library name, fetish, is a permutation of the first two
letters of each of the package names: FIleutils, TExtutils, SH-utils.

View File

@@ -1,5 +1,5 @@
/* addext.c -- add an extension to a file name
Copyright 1990, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
Copyright 1990, 1997, 1998, 1999, 2001, 2002 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
@@ -83,7 +83,7 @@ addext (char *filename, char const *ext, int e)
*s = c;
}
if (0 <= name_max || errno == 0)
slen_max = name_max == (size_t) name_max ? name_max : -1;
slen_max = name_max == (long) (size_t) name_max ? name_max : -1;
}
#endif

View File

@@ -33,7 +33,15 @@
#endif
#ifdef emacs
# include "lisp.h"
# include "blockinput.h"
# define xalloc_die() memory_full ()
# ifdef EMACS_FREE
# undef free
# define free EMACS_FREE
# endif
#else
# include <xalloc.h>
#endif
/* If compiling with GCC 2, this file's not needed. */
@@ -53,6 +61,8 @@
you
lose
-- must know STACK_DIRECTION at compile-time
/* Using #error here is not wise since this file should work for
old and obscure compilers. */
# endif /* STACK_DIRECTION undefined */
# endif /* static */
# endif /* emacs */
@@ -67,32 +77,19 @@ long i00afunc ();
# define ADDRESS_FUNCTION(arg) &(arg)
# endif
# if __STDC__
typedef void *pointer;
# else
typedef char *pointer;
# ifndef POINTER_TYPE
# ifdef __STDC__
# define POINTER_TYPE void
# else
# define POINTER_TYPE char
# endif
# endif
typedef POINTER_TYPE *pointer;
# ifndef NULL
# define NULL 0
# endif
/* Different portions of Emacs need to call different versions of
malloc. The Emacs executable needs alloca to call xmalloc, because
ordinary malloc isn't protected from input signals. On the other
hand, the utilities in lib-src need alloca to call malloc; some of
them are very simple, and don't have an xmalloc routine.
Non-Emacs programs expect this to call xmalloc.
Callers below should use malloc. */
# ifndef emacs
# undef malloc
# define malloc xmalloc
# endif
extern pointer malloc ();
/* Define STACK_DIRECTION if you know the direction of stack
growth for your system; otherwise it will be automatically
deduced at run-time.
@@ -169,7 +166,8 @@ static header *last_alloca_header = NULL; /* -> last alloca header. */
implementations of C, for example under Gould's UTX/32. */
pointer
alloca (size_t size)
alloca (size)
size_t size;
{
auto char probe; /* Probes stack depth: */
register char *depth = ADDRESS_FUNCTION (probe);
@@ -215,8 +213,14 @@ alloca (size_t size)
/* Allocate combined header + user data storage. */
{
register pointer new = malloc (sizeof (header) + size);
/* Address of header. */
register pointer new;
size_t combined_size = sizeof (header) + size;
if (combined_size < sizeof (header))
xalloc_die ();
new = xmalloc (combined_size);
if (new == 0)
abort();

View File

@@ -1,5 +1,5 @@
/* argmatch.c -- find a match for a string in an array
Copyright (C) 1990, 1998, 1999, 2001 Free Software Foundation, Inc.
Copyright (C) 1990, 1998, 1999, 2001, 2002 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
@@ -18,23 +18,19 @@
/* Written by David MacKenzie <djm@ai.mit.edu>
Modified by Akim Demaille <demaille@inf.enst.fr> */
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Specification. */
#include "argmatch.h"
#include <stdio.h>
#ifdef STDC_HEADERS
# include <string.h>
#endif
#include <stdlib.h>
#include <string.h>
#if HAVE_LOCALE_H
# include <locale.h>
#endif
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "error.h"
#include "quotearg.h"
@@ -48,14 +44,6 @@
# define ARGMATCH_QUOTING_STYLE locale_quoting_style
#endif
/* The following test is to work around the gross typo in
systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE
is defined to 0, not 1. */
#if !EXIT_FAILURE
# undef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
/* Non failing version of argmatch call this function after failing. */
#ifndef ARGMATCH_DIE
# define ARGMATCH_DIE exit (EXIT_FAILURE)
@@ -80,7 +68,6 @@ argmatch_exit_fn argmatch_die = __argmatch_die;
null-terminated array ARGLIST, return the index in ARGLIST
of the matched element, else -1 if it does not match any element
or -2 if it is ambiguous (is a prefix of more than one element).
If SENSITIVE, comparison is case sensitive.
If VALLIST is none null, use it to resolve ambiguities limited to
synonyms, i.e., for
@@ -88,10 +75,9 @@ argmatch_exit_fn argmatch_die = __argmatch_die;
"no", "nope" -> 1
"y" is a valid argument, for `0', and "n" for `1'. */
static int
__argmatch_internal (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize,
int case_sensitive)
int
argmatch (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize)
{
int i; /* Temporary index in ARGLIST. */
size_t arglen; /* Length of ARG. */
@@ -103,9 +89,7 @@ __argmatch_internal (const char *arg, const char *const *arglist,
/* Test all elements for either exact match or abbreviated matches. */
for (i = 0; arglist[i]; i++)
{
if (case_sensitive
? !strncmp (arglist[i], arg, arglen)
: !strncasecmp (arglist[i], arg, arglen))
if (!strncmp (arglist[i], arg, arglen))
{
if (strlen (arglist[i]) == arglen)
/* Exact match found. */
@@ -133,22 +117,6 @@ __argmatch_internal (const char *arg, const char *const *arglist,
return matchind;
}
/* argmatch - case sensitive version */
int
argmatch (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize)
{
return __argmatch_internal (arg, arglist, vallist, valsize, 1);
}
/* argcasematch - case insensitive version */
int
argcasematch (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize)
{
return __argmatch_internal (arg, arglist, vallist, valsize, 0);
}
/* Error reporting for argmatch.
CONTEXT is a description of the type of entity that was being matched.
VALUE is the invalid value that was given.
@@ -203,12 +171,9 @@ int
__xargmatch_internal (const char *context,
const char *arg, const char *const *arglist,
const char *vallist, size_t valsize,
int case_sensitive,
argmatch_exit_fn exit_fn)
{
int res = __argmatch_internal (arg, arglist,
vallist, valsize,
case_sensitive);
int res = argmatch (arg, arglist, vallist, valsize);
if (res >= 0)
/* Success. */
return res;
@@ -294,12 +259,12 @@ main (int argc, const char *const *argv)
}
if ((cp = getenv ("VERSION_CONTROL")))
backup_type = XARGCASEMATCH ("$VERSION_CONTROL", cp,
backup_args, backup_vals);
backup_type = XARGMATCH ("$VERSION_CONTROL", cp,
backup_args, backup_vals);
if (argc == 2)
backup_type = XARGCASEMATCH (program_name, argv[1],
backup_args, backup_vals);
backup_type = XARGMATCH (program_name, argv[1],
backup_args, backup_vals);
printf ("The version control is `%s'\n",
ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals));

View File

@@ -1,5 +1,5 @@
/* argmatch.h -- definitions and prototypes for argmatch.c
Copyright (C) 1990, 1998, 1999, 2001 Free Software Foundation, Inc.
Copyright (C) 1990, 1998, 1999, 2001, 2002 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,109 +21,89 @@
#ifndef ARGMATCH_H_
# define ARGMATCH_H_ 1
# if HAVE_CONFIG_H
# include <config.h>
# endif
# include <stddef.h>
# include <sys/types.h>
# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
# ifndef PARAMS
# if PROTOTYPES || (defined (__STDC__) && __STDC__)
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif /* GCC. */
# endif /* Not PARAMS. */
# define ARGMATCH_CONSTRAINT(Arglist, Vallist) \
(ARRAY_CARDINALITY (Arglist) == ARRAY_CARDINALITY (Vallist) + 1)
/* Assert there are as many real arguments as there are values
(argument list ends with a NULL guard). There is no execution
cost, since it will be statically evalauted to `assert (0)' or
`assert (1)'. Unfortunately there is no -Wassert-0. */
(argument list ends with a NULL guard). ARGMATCH_VERIFY is
preferred, since it is guaranteed to be checked at compile-time.
ARGMATCH_ASSERT is for backward compatibility only. */
# undef ARRAY_CARDINALITY
# define ARRAY_CARDINALITY(Array) (sizeof ((Array)) / sizeof (*(Array)))
# define ARGMATCH_VERIFY(Arglist, Vallist) \
struct argmatch_verify \
{ \
char argmatch_verify[ARGMATCH_CONSTRAINT(Arglist, Vallist) ? 1 : -1]; \
}
# define ARGMATCH_ASSERT(Arglist, Vallist) \
assert (ARRAY_CARDINALITY ((Arglist)) == ARRAY_CARDINALITY ((Vallist)) + 1)
# define ARGMATCH_ASSERT(Arglist, Vallist) \
assert (ARGMATCH_CONSTRAINT (Arglist, Vallist))
/* Return the index of the element of ARGLIST (NULL terminated) that
matches with ARG. If VALLIST is not NULL, then use it to resolve
false ambiguities (i.e., different matches of ARG but corresponding
to the same values in VALLIST). */
int argmatch
PARAMS ((const char *arg, const char *const *arglist,
const char *vallist, size_t valsize));
int argcasematch
PARAMS ((const char *arg, const char *const *arglist,
const char *vallist, size_t valsize));
int argmatch (char const *arg, char const *const *arglist,
char const *vallist, size_t valsize);
# define ARGMATCH(Arg, Arglist, Vallist) \
argmatch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist)))
# define ARGCASEMATCH(Arg, Arglist, Vallist) \
argcasematch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist)))
argmatch (Arg, Arglist, (char const *) (Vallist), sizeof *(Vallist))
/* xargmatch calls this function when it fails. This function should not
return. By default, this is a function that calls ARGMATCH_DIE which
in turn defaults to `exit (EXIT_FAILURE)'. */
typedef void (*argmatch_exit_fn) PARAMS ((void));
typedef void (*argmatch_exit_fn) (void);
extern argmatch_exit_fn argmatch_die;
/* Report on stderr why argmatch failed. Report correct values. */
void argmatch_invalid
PARAMS ((const char *context, const char *value, int problem));
void argmatch_invalid (char const *context, char const *value, int problem);
/* Left for compatibility with the old name invalid_arg */
# define invalid_arg(Context, Value, Problem) \
argmatch_invalid ((Context), (Value), (Problem))
argmatch_invalid (Context, Value, Problem)
/* Report on stderr the list of possible arguments. */
void argmatch_valid
PARAMS ((const char *const *arglist,
const char *vallist, size_t valsize));
void argmatch_valid (char const *const *arglist,
char const *vallist, size_t valsize);
# define ARGMATCH_VALID(Arglist, Vallist) \
argmatch_valid (Arglist, (const char *) Vallist, sizeof (*(Vallist)))
argmatch_valid (Arglist, (char const *) (Vallist), sizeof *(Vallist))
/* Same as argmatch, but upon failure, reports a explanation on the
failure, and exits using the function EXIT_FN. */
int __xargmatch_internal
PARAMS ((const char *context,
const char *arg, const char *const *arglist,
const char *vallist, size_t valsize,
int case_sensitive, argmatch_exit_fn exit_fn));
int __xargmatch_internal (char const *context,
char const *arg, char const *const *arglist,
char const *vallist, size_t valsize,
argmatch_exit_fn exit_fn);
/* Programmer friendly interface to __xargmatch_internal. */
# define XARGMATCH(Context, Arg, Arglist, Vallist) \
(Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \
(const char *) (Vallist), \
sizeof (*(Vallist)), \
1, argmatch_die)])
# define XARGCASEMATCH(Context, Arg, Arglist, Vallist) \
(Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \
(const char *) (Vallist), \
sizeof (*(Vallist)), \
0, argmatch_die)])
# define XARGMATCH(Context, Arg, Arglist, Vallist) \
((Vallist) [__xargmatch_internal (Context, Arg, Arglist, \
(char const *) (Vallist), \
sizeof *(Vallist), \
argmatch_die)])
/* Convert a value into a corresponding argument. */
const char *argmatch_to_argument
PARAMS ((char const *value, const char *const *arglist,
const char *vallist, size_t valsize));
char const *argmatch_to_argument (char const *value,
char const *const *arglist,
char const *vallist, size_t valsize);
# define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \
argmatch_to_argument ((Value), (Arglist), \
(const char *) (Vallist), sizeof (*(Vallist)))
argmatch_to_argument (Value, Arglist, \
(char const *) (Vallist), sizeof *(Vallist))
#endif /* ARGMATCH_H_ */

View File

@@ -68,6 +68,12 @@ typedef struct sigaltstack stack_t;
#include <string.h>
#if HAVE_SYS_RESOURCE_H
/* Include sys/time.h here, because...
SunOS-4.1.x <sys/resource.h> fails to include <sys/time.h>.
This gives "incomplete type" errors for ru_utime and tu_stime. */
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# endif
# include <sys/resource.h>
#endif

View File

@@ -46,10 +46,6 @@
# include <arpa/inet.h>
#endif
#ifndef strdup
char *strdup ();
#endif
/* Returns the canonical hostname associated with HOST (allocated in a static
buffer), or 0 if it can't be determined. */
char *

300
lib/canonicalize.c Normal file
View File

@@ -0,0 +1,300 @@
/* Return the canonical absolute name of a given file.
Copyright (C) 1996-2001, 2002, 2003 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; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef STDC_HEADERS
# include <stdlib.h>
#else
void free ();
#endif
#if defined STDC_HEADERS || defined HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#if HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#include <sys/stat.h>
#include <errno.h>
#include "path-concat.h"
#include "xalloc.h"
#include "xgetcwd.h"
#ifndef errno
extern int errno;
#endif
#ifndef __set_errno
# define __set_errno(Val) errno = (Val)
#endif
#if !HAVE_RESOLVEPATH
/* If __PTRDIFF_TYPE__ is
defined, as with GNU C, use that; that way we don't pollute the
namespace with <stddef.h>'s symbols. Otherwise, if <stddef.h> is
available, include it and use ptrdiff_t. In traditional C, long is
the best that we can do. */
# ifdef __PTRDIFF_TYPE__
# define PTR_INT_TYPE __PTRDIFF_TYPE__
# else
# ifdef HAVE_STDDEF_H
# include <stddef.h>
# define PTR_INT_TYPE ptrdiff_t
# else
# define PTR_INT_TYPE long
# endif
# endif
# include "pathmax.h"
# include "xreadlink.h"
# ifdef STAT_MACROS_BROKEN
# undef S_ISLNK
# endif
# ifndef S_ISLNK
# ifdef S_IFLNK
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
# endif
# endif
#endif /* !HAVE_RESOLVEPATH */
/* Return the canonical absolute name of file NAME. A canonical name
does not contain any `.', `..' components nor any repeated path
separators ('/') or symlinks. All path components must exist.
The result is malloc'd. */
char *
canonicalize_file_name (const char *name)
{
#if HAVE_RESOLVEPATH
char *resolved, *extra_buf = NULL;
size_t resolved_size;
ssize_t resolved_len;
#else /* !HAVE_RESOLVEPATH */
char *rpath, *dest, *extra_buf = NULL;
const char *start, *end, *rpath_limit;
size_t extra_len = 0;
int num_links = 0;
#endif /* !HAVE_RESOLVEPATH */
if (name == NULL)
{
__set_errno (EINVAL);
return NULL;
}
if (name[0] == '\0')
{
__set_errno (ENOENT);
return NULL;
}
#if HAVE_RESOLVEPATH
/* All known hosts with resolvepath (e.g. Solaris 7) don't turn
relative names into absolute ones, so prepend the working
directory if the path is not absolute. */
if (name[0] != '/')
{
char *wd;
if (!(wd = xgetcwd ()));
return NULL;
extra_buf = path_concat (wd, name, NULL);
if (!extra_buf)
xalloc_die ();
name = extra_buf;
free (wd);
}
resolved_size = strlen (name);
while (1)
{
resolved_size = 2 * resolved_size + 1;
resolved = xmalloc (resolved_size);
resolved_len = resolvepath (name, resolved, resolved_size);
if (resolved_len < resolved_size)
break;
free (resolved);
}
if (resolved_len < 0)
{
free (resolved);
resolved = NULL;
}
free (extra_buf);
return resolved;
#else /* !HAVE_RESOLVEPATH */
if (name[0] != '/')
{
rpath = xgetcwd ();
if (!rpath)
return NULL;
dest = strchr (rpath, '\0');
if (dest < rpath + PATH_MAX)
{
rpath = xrealloc (rpath, PATH_MAX);
rpath_limit = rpath + PATH_MAX;
}
else
{
rpath_limit = dest;
}
}
else
{
rpath = xmalloc (PATH_MAX);
rpath_limit = rpath + PATH_MAX;
rpath[0] = '/';
dest = rpath + 1;
}
for (start = end = name; *start; start = end)
{
/* Skip sequence of multiple path-separators. */
while (*start == '/')
++start;
/* Find end of path component. */
for (end = start; *end && *end != '/'; ++end)
/* Nothing. */;
if (end - start == 0)
break;
else if (end - start == 1 && start[0] == '.')
/* nothing */;
else if (end - start == 2 && start[0] == '.' && start[1] == '.')
{
/* Back up to previous component, ignore if at root already. */
if (dest > rpath + 1)
while ((--dest)[-1] != '/');
}
else
{
struct stat st;
if (dest[-1] != '/')
*dest++ = '/';
if (dest + (end - start) >= rpath_limit)
{
PTR_INT_TYPE dest_offset = dest - rpath;
size_t new_size = rpath_limit - rpath;
if (end - start + 1 > PATH_MAX)
new_size += end - start + 1;
else
new_size += PATH_MAX;
rpath = (char *) xrealloc (rpath, new_size);
rpath_limit = rpath + new_size;
dest = rpath + dest_offset;
}
dest = memcpy (dest, start, end - start);
dest += end - start;
*dest = '\0';
if (lstat (rpath, &st) < 0)
goto error;
# ifdef S_ISLNK
if (S_ISLNK (st.st_mode))
{
char *buf;
size_t n, len;
# ifdef MAXSYMLINKS
if (++num_links > MAXSYMLINKS)
{
__set_errno (ELOOP);
goto error;
}
# endif /* MAXSYMLINKS */
buf = xreadlink (rpath);
if (!buf)
goto error;
n = strlen (buf);
len = strlen (end);
if (!extra_len)
{
extra_len =
((n + len + 1) > PATH_MAX) ? (n + len + 1) : PATH_MAX;
extra_buf = xmalloc (extra_len);
}
else if ((n + len + 1) > extra_len)
{
extra_len = n + len + 1;
extra_buf = xrealloc (extra_buf, extra_len);
}
/* Careful here, end may be a pointer into extra_buf... */
memmove (&extra_buf[n], end, len + 1);
name = end = memcpy (extra_buf, buf, n);
if (buf[0] == '/')
dest = rpath + 1; /* It's an absolute symlink */
else
/* Back up to previous component, ignore if at root already: */
if (dest > rpath + 1)
while ((--dest)[-1] != '/');
free (buf);
}
# endif /* S_ISLNK */
}
}
if (dest > rpath + 1 && dest[-1] == '/')
--dest;
*dest = '\0';
free (extra_buf);
return rpath;
error:
free (extra_buf);
free (rpath);
return NULL;
#endif /* !HAVE_RESOLVEPATH */
}

3
lib/canonicalize.h Normal file
View File

@@ -0,0 +1,3 @@
#if !HAVE_CANONICALIZE_FILE_NAME
char *canonicalize_file_name (const char *);
#endif

View File

@@ -1,5 +1,5 @@
/* closeout.c - close standard output
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000, 2001, 2002 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,13 +19,6 @@
# include <config.h>
#endif
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
@@ -40,6 +33,9 @@
extern int errno;
#endif
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "closeout.h"
#include "error.h"
#include "quotearg.h"

View File

@@ -34,7 +34,7 @@
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd
# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes
# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes
# ISO-8859-3 glibc yes
# ISO-8859-3 glibc solaris yes
# ISO-8859-4 osf solaris freebsd yes
# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes
# ISO-8859-6 glibc aix hpux solaris yes
@@ -42,9 +42,11 @@
# ISO-8859-8 glibc aix hpux osf solaris yes
# ISO-8859-9 glibc aix hpux irix osf solaris yes
# ISO-8859-13 glibc
# ISO-8859-14 glibc
# ISO-8859-15 glibc aix osf solaris freebsd
# KOI8-R glibc solaris freebsd yes
# KOI8-U glibc freebsd yes
# KOI8-T glibc
# CP437 dos
# CP775 dos
# CP850 aix osf dos
@@ -58,35 +60,38 @@
# CP865 dos
# CP866 freebsd dos
# CP869 dos
# CP874 win32 dos
# CP874 woe32 dos
# CP922 aix
# CP932 aix win32 dos
# CP932 aix woe32 dos
# CP943 aix
# CP949 osf win32 dos
# CP950 win32 dos
# CP949 osf woe32 dos
# CP950 woe32 dos
# CP1046 aix
# CP1124 aix
# CP1125 dos
# CP1129 aix
# CP1250 win32
# CP1251 glibc win32
# CP1252 aix win32
# CP1253 win32
# CP1254 win32
# CP1255 win32
# CP1256 win32
# CP1257 win32
# CP1250 woe32
# CP1251 glibc woe32
# CP1252 aix woe32
# CP1253 woe32
# CP1254 woe32
# CP1255 glibc woe32
# CP1256 woe32
# CP1257 woe32
# GB2312 glibc aix hpux irix solaris freebsd yes
# EUC-JP glibc aix hpux irix osf solaris freebsd yes
# EUC-KR glibc aix hpux irix osf solaris freebsd yes
# EUC-TW glibc aix hpux irix osf solaris
# BIG5 glibc aix hpux osf solaris freebsd yes
# BIG5-HKSCS glibc
# GBK aix osf win32 dos
# GB18030 glibc
# BIG5-HKSCS glibc solaris
# GBK glibc aix osf solaris woe32 dos
# GB18030 glibc solaris
# SHIFT_JIS hpux osf solaris freebsd yes
# JOHAB glibc win32
# JOHAB glibc solaris woe32
# TIS-620 glibc aix hpux osf solaris
# VISCII glibc yes
# TCVN5712-1 glibc
# GEORGIAN-PS glibc
# HP-ROMAN8 hpux
# HP-ARABIC8 hpux
# HP-GREEK8 hpux
@@ -217,6 +222,7 @@ case "$os" in
echo "646 ASCII"
echo "ISO8859-1 ISO-8859-1"
echo "ISO8859-2 ISO-8859-2"
echo "ISO8859-3 ISO-8859-3"
echo "ISO8859-4 ISO-8859-4"
echo "ISO8859-5 ISO-8859-5"
echo "ISO8859-6 ISO-8859-6"
@@ -226,9 +232,13 @@ case "$os" in
echo "ISO8859-15 ISO-8859-15"
echo "koi8-r KOI8-R"
echo "BIG5 BIG5"
echo "Big5-HKSCS BIG5-HKSCS"
echo "gb2312 GB2312"
echo "GBK GBK"
echo "GB18030 GB18030"
echo "cns11643 EUC-TW"
echo "5601 EUC-KR"
echo "ko_KR.johap92 JOHAB"
echo "eucJP EUC-JP"
echo "PCK SHIFT_JIS"
echo "TIS620.2533 TIS-620"
@@ -272,6 +282,20 @@ case "$os" in
echo "ja_JP.Shift_JIS SHIFT_JIS"
echo "ko_KR.EUC EUC-KR"
;;
netbsd*)
echo "646 ASCII"
echo "ISO8859-1 ISO-8859-1"
echo "ISO8859-2 ISO-8859-2"
echo "ISO8859-4 ISO-8859-4"
echo "ISO8859-5 ISO-8859-5"
echo "ISO8859-15 ISO-8859-15"
echo "eucCN GB2312"
echo "eucJP EUC-JP"
echo "eucKR EUC-KR"
echo "eucTW EUC-TW"
echo "BIG5 BIG5"
echo "SJIS SHIFT_JIS"
;;
beos*)
# BeOS has a single locale, and it has UTF-8 encoding.
echo "* UTF-8"
@@ -286,7 +310,7 @@ case "$os" in
echo "# country is not the one your DOS machine actually uses, just"
echo "# correct it in this file, and send a mail to"
echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>"
echo "# and Bruno Haible <haible@clisp.cons.org>."
echo "# and Bruno Haible <bruno@clisp.org>."
echo "#"
echo "C ASCII"
# ISO-8859-1 languages
@@ -396,8 +420,10 @@ case "$os" in
echo "bg_BG CP866" # not CP855 ??
echo "mk CP866" # not CP855 ??
echo "mk_MK CP866" # not CP855 ??
echo "ru KOI8-R" # not CP866 ??
echo "ru_RU KOI8-R" # not CP866 ??
echo "ru CP866"
echo "ru_RU CP866"
echo "uk CP1125"
echo "uk_UA CP1125"
# ISO-8859-6 languages
echo "ar CP864"
echo "ar_AE CP864"

87
lib/cycle-check.c Normal file
View File

@@ -0,0 +1,87 @@
/* help detect directory cycles efficiently
Copyright 2003 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; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Jim Meyering */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
typedef enum {false = 0, true = 1} bool;
#endif
#include "cycle-check.h"
#include "xalloc.h"
#define SAME_INODE(Stat_buf_1, Stat_buf_2) \
((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
&& (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
#define CC_MAGIC 9827862
static inline bool
is_power_of_two (unsigned int i)
{
return (i & (i - 1)) == 0;
}
void
cycle_check_init (struct cycle_check_state *state)
{
state->chdir_counter = 0;
state->magic = CC_MAGIC;
}
/* In traversing a directory hierarchy, call this function once for each
descending chdir call, with SB corresponding to the chdir operand.
If SB corresponds to a directory that has already been seen,
return true to indicate that there is a directory cycle.
Note that this is done `lazily', which means that some of
the directories in the cycle may be processed twice before
the cycle is detected. */
bool
cycle_check (struct cycle_check_state *state, struct stat const *sb)
{
assert (state->magic == CC_MAGIC);
/* If the current directory ever happens to be the same
as the one we last recorded for the cycle detection,
then it's obviously part of a cycle. */
if (state->chdir_counter && SAME_INODE (*sb, state->dev_ino))
return true;
/* If the number of `descending' chdir calls is a power of two,
record the dev/ino of the current directory. */
if (is_power_of_two (++(state->chdir_counter)))
{
state->dev_ino.st_dev = sb->st_dev;
state->dev_ino.st_ino = sb->st_ino;
}
return false;
}

33
lib/cycle-check.h Normal file
View File

@@ -0,0 +1,33 @@
#ifndef CYCLE_CHECK_H
# define CYCLE_CHECK_H 1
/* Before including this file, you need something like the following:
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
typedef enum {false = 0, true = 1} bool;
#endif
so that the proper identifiers are all declared. */
# include "dev-ino.h"
struct cycle_check_state
{
struct dev_ino dev_ino;
size_t chdir_counter;
long unsigned int magic;
};
void cycle_check_init (struct cycle_check_state *state);
bool cycle_check (struct cycle_check_state *state, struct stat const *sb);
#endif

10
lib/dev-ino.h Normal file
View File

@@ -0,0 +1,10 @@
#ifndef DEV_INO_H
# define DEV_INO_H 1
struct dev_ino
{
ino_t st_ino;
dev_t st_dev;
};
#endif

View File

@@ -1,22 +1,18 @@
/* Error handler for noninteractive utilities
Copyright (C) 1990-1998, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
Copyright (C) 1990-1998, 2000, 2001, 2002, 2003 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.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
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
Lesser General Public License for more details.
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 Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
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 David MacKenzie <djm@gnu.ai.mit.edu>. */
@@ -25,9 +21,13 @@
#endif
#include <stdio.h>
#if HAVE_LIBINTL_H
#ifdef _LIBC
# include <libintl.h>
#else
# include "gettext.h"
#endif
#ifdef _LIBC
# include <wchar.h>
# define mbsrtowcs __mbsrtowcs
@@ -54,7 +54,10 @@ void exit ();
#endif
#include "error.h"
#include "unlocked-io.h"
#if !_LIBC
# include "unlocked-io.h"
#endif
#ifndef _
# define _(String) String
@@ -77,6 +80,7 @@ unsigned int error_message_count;
# define program_name program_invocation_name
# include <errno.h>
# include <libio/libioP.h>
/* In GNU libc we want do not want to use the common name `error' directly.
Instead make it a weak alias. */
@@ -89,10 +93,10 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
# define error __error
# define error_at_line __error_at_line
# ifdef USE_IN_LIBIO
# include <libio/iolibio.h>
# define fflush(s) _IO_fflush (s)
# endif
# include <libio/iolibio.h>
# define fflush(s) INTUSE(_IO_fflush) (s)
# undef putc
# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
#else /* not _LIBC */
@@ -157,7 +161,7 @@ print_errno_message (int errnum)
s = _("Unknown system error");
#endif
#if _LIBC && USE_IN_LIBIO
#if _LIBC
if (_IO_fwide (stderr, 0) > 0)
{
__fwprintf (stderr, L": %s", s);
@@ -173,7 +177,7 @@ static void
error_tail (int status, int errnum, const char *message, va_list args)
{
# if HAVE_VPRINTF || _LIBC
# if _LIBC && USE_IN_LIBIO
# if _LIBC
if (_IO_fwide (stderr, 0) > 0)
{
# define ALLOCA_LIMIT 2000
@@ -224,7 +228,7 @@ error_tail (int status, int errnum, const char *message, va_list args)
++error_message_count;
if (errnum)
print_errno_message (errnum);
# if _LIBC && USE_IN_LIBIO
# if _LIBC
if (_IO_fwide (stderr, 0) > 0)
putwc (L'\n', stderr);
else
@@ -259,17 +263,13 @@ error (status, errnum, message, va_alist)
fflush (stdout);
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_flockfile (stderr);
# else
__flockfile (stderr);
# endif
#endif
if (error_print_progname)
(*error_print_progname) ();
else
{
#if _LIBC && USE_IN_LIBIO
#if _LIBC
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s: ", program_name);
else
@@ -293,11 +293,7 @@ error (status, errnum, message, va_alist)
#endif
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_funlockfile (stderr);
# else
__funlockfile (stderr);
# endif
#endif
}
@@ -340,17 +336,13 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
fflush (stdout);
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_flockfile (stderr);
# else
__flockfile (stderr);
# endif
#endif
if (error_print_progname)
(*error_print_progname) ();
else
{
#if _LIBC && USE_IN_LIBIO
#if _LIBC
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s: ", program_name);
else
@@ -360,7 +352,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
if (file_name != NULL)
{
#if _LIBC && USE_IN_LIBIO
#if _LIBC
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s:%d: ", file_name, line_number);
else
@@ -384,11 +376,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
#endif
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_funlockfile (stderr);
# else
__funlockfile (stderr);
# endif
#endif
}

View File

@@ -1,7 +1,7 @@
/* exclude.c -- exclude file names
Copyright 1992, 1993, 1994, 1997, 1999, 2000, 2001 Free Software
Foundation, Inc.
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002 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
@@ -67,9 +67,17 @@ extern int errno;
/* Verify a requirement at compile-time (unlike assert, which is runtime). */
#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
/* Non-GNU systems lack these options, so we don't need to check them. */
#ifndef FNM_CASEFOLD
# define FNM_CASEFOLD 0
#endif
#ifndef FNM_LEADING_DIR
# define FNM_LEADING_DIR 0
#endif
verify (EXCLUDE_macros_do_not_collide_with_FNM_macros,
(((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
& (FNM_FILE_NAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
& (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
| FNM_CASEFOLD))
== 0));

View File

@@ -1,5 +1,7 @@
/* exclude.h -- declarations for excluding file names
Copyright 1992, 1993, 1994, 1997, 1999, 2001 Free Software Foundation, Inc.
Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002 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
@@ -30,14 +32,14 @@
/* Patterns must match the start of file names, instead of matching
anywhere after a '/'. */
#define EXCLUDE_ANCHORED (1 << 5)
#define EXCLUDE_ANCHORED (1 << 30)
/* Include instead of exclude. */
#define EXCLUDE_INCLUDE (1 << 6)
#define EXCLUDE_INCLUDE (1 << 29)
/* '?', '*', '[', and '\\' are special in patterns. Without this
option, these characters are ordinary and fnmatch is not used. */
#define EXCLUDE_WILDCARDS (1 << 7)
#define EXCLUDE_WILDCARDS (1 << 28)
struct exclude;

View File

@@ -63,9 +63,11 @@ char *alloca ();
# include <stdlib.h>
#endif
#define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC)
/* For platform which support the ISO C amendement 1 functionality we
support user defined character classes. */
#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
#if defined _LIBC || WIDE_CHAR_SUPPORT
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
# include <wchar.h>
# include <wctype.h>
@@ -103,7 +105,6 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU
# undef ISASCII /* defined in Solaris5.6's /usr/include/sys/euc.h */
# if defined STDC_HEADERS || !defined isascii
# define ISASCII(c) 1
# else
@@ -121,7 +122,6 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c))
# endif
# undef ISPRINT /* defined in Solaris5.6's /usr/include/sys/euc.h */
# define ISPRINT(c) (ISASCII (c) && isprint (c))
# define ISDIGIT(c) (ISASCII (c) && isdigit (c))
# define ISALNUM(c) (ISASCII (c) && isalnum (c))
@@ -135,7 +135,7 @@ extern int fnmatch (const char *pattern, const char *string, int flags);
# define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
# if defined _LIBC || WIDE_CHAR_SUPPORT
/* The GNU C library provides support for user-defined character classes
and the functions from ISO C amendement 1. */
# ifdef CHARCLASS_NAME_MAX

View File

@@ -248,7 +248,7 @@ FCT (pattern, string, string_end, no_leading_period, flags)
/* Leave room for the null. */
CHAR str[CHAR_CLASS_MAX_LENGTH + 1];
size_t c1 = 0;
#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
#if defined _LIBC || WIDE_CHAR_SUPPORT
wctype_t wt;
#endif
const CHAR *startp = p;
@@ -278,7 +278,7 @@ FCT (pattern, string, string_end, no_leading_period, flags)
}
str[c1] = L('\0');
#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
#if defined _LIBC || WIDE_CHAR_SUPPORT
wt = IS_CHAR_CLASS (str);
if (wt == 0)
/* Invalid character class name. */

View File

@@ -1,5 +1,6 @@
/* fsusage.c -- return space usage of mounted filesystems
Copyright (C) 1991, 1992, 1996, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002 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 +22,15 @@
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
# include <stdint.h>
# endif
#endif
#ifndef UINTMAX_MAX
# define UINTMAX_MAX ((uintmax_t) -1)
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include "fsusage.h"
@@ -51,7 +60,7 @@ int statfs ();
# include <sys/fs/s5param.h>
#endif
#if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
#if defined HAVE_SYS_FILSYS_H && !defined _CRAY
# include <sys/filsys.h> /* SVR2 */
#endif
@@ -72,11 +81,18 @@ int statfs ();
int statvfs ();
#endif
#include "full-read.h"
/* Many space usage primitives use all 1 bits to denote a value that is
not applicable or unknown. Propagate this information by returning
a uintmax_t value that is all 1 bits if the argument is all 1 bits,
even if the argument is unsigned and smaller than uintmax_t. */
#define PROPAGATE_ALL_ONES(x) ((x) == -1 ? (uintmax_t) -1 : (uintmax_t) (x))
a uintmax_t value that is all 1 bits if X is all 1 bits, even if X
is unsigned and narrower than uintmax_t. */
#define PROPAGATE_ALL_ONES(x) \
((sizeof (x) < sizeof (uintmax_t) \
&& (~ (x) == (sizeof (x) < sizeof (int) \
? - (1 << (sizeof (x) * CHAR_BIT)) \
: 0))) \
? UINTMAX_MAX : (x))
/* Extract the top bit of X as an uintmax_t value. */
#define EXTRACT_TOP_BIT(x) ((x) \
@@ -91,8 +107,6 @@ int statvfs ();
otherwise, use PROPAGATE_ALL_ONES. */
#define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1))
int safe_read ();
/* Fill in the fields of FSP with information about space usage for
the filesystem on which PATH resides.
DISK is the device on which PATH is mounted, for space-getting
@@ -149,7 +163,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
if (fd < 0)
return -1;
lseek (fd, (off_t) SUPERBOFF, 0);
if (safe_read (fd, (char *) &fsd, sizeof fsd) != sizeof fsd)
if (full_read (fd, (char *) &fsd, sizeof fsd) != sizeof fsd)
{
close (fd);
return -1;
@@ -162,7 +176,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.s_tfree);
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.s_tfree) != 0;
fsp->fsu_files = (fsd.s_isize == -1
? (uintmax_t) -1
? UINTMAX_MAX
: (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1));
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.s_tinode);
@@ -219,7 +233,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
/* Empirically, the block counts on most SVR3 and SVR3-derived
systems seem to always be in terms of 512-byte blocks,
no matter what value f_bsize has. */
# if _AIX || defined(_CRAY)
# if _AIX || defined _CRAY
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize);
# else
fsp->fsu_blocksize = 512;
@@ -235,12 +249,13 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
return -1;
/* f_frsize isn't guaranteed to be supported. */
fsp->fsu_blocksize =
PROPAGATE_ALL_ONES (fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize);
fsp->fsu_blocksize = (fsd.f_frsize
? PROPAGATE_ALL_ONES (fsd.f_frsize)
: PROPAGATE_ALL_ONES (fsd.f_bsize));
#endif /* STAT_STATVFS */
#if !defined(STAT_STATFS2_FS_DATA) && !defined(STAT_READ_FILSYS)
#if !defined STAT_STATFS2_FS_DATA && !defined STAT_READ_FILSYS
/* !Ultrix && !SVR2 */
fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.f_blocks);
@@ -255,7 +270,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
return 0;
}
#if defined(_AIX) && defined(_I386)
#if defined _AIX && defined _I386
/* AIX PS/2 does not supply statfs. */
int

787
lib/ftw.c Normal file
View File

@@ -0,0 +1,787 @@
/* File tree walker functions.
Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#if __GNUC__
# define alloca __builtin_alloca
#else
# if HAVE_ALLOCA_H
# include <alloca.h>
# else
# ifdef _AIX
# pragma alloca
# else
char *alloca ();
# endif
# endif
#endif
#if defined _LIBC
# include <dirent.h>
# define NAMLEN(dirent) _D_EXACT_NAMLEN(dirent)
#else
# if HAVE_DIRENT_H || defined _LIBC
# include <dirent.h>
# define NAMLEN(dirent) strlen ((dirent)->d_name)
# else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif
# if HAVE_SYS_DIR_H
# include <sys/dir.h>
# endif
# if HAVE_NDIR_H
# include <ndir.h>
# endif
# endif
#endif
#include <errno.h>
#include <ftw.h>
#include <search.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#if HAVE_SYS_PARAM_H || defined _LIBC
# include <sys/param.h>
#endif
#ifdef _LIBC
# include <include/sys/stat.h>
#else
# include <sys/stat.h>
#endif
#if ! _LIBC && !HAVE_DECL_STPCPY && !defined stpcpy
char *stpcpy ();
#endif
#if ! _LIBC && ! defined HAVE_MEMPCPY && ! defined mempcpy
/* Be CAREFUL that there are no side effects in N. */
# define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
#endif
/* #define NDEBUG 1 */
#include <assert.h>
#ifndef _LIBC
# undef __chdir
# define __chdir chdir
# undef __closedir
# define __closedir closedir
# undef __fchdir
# define __fchdir fchdir
# undef __opendir
# define __opendir opendir
# undef __readdir64
# define __readdir64 readdir
# undef __tdestroy
# define __tdestroy tdestroy
# undef __tfind
# define __tfind tfind
# undef __tsearch
# define __tsearch tsearch
# undef __stpcpy
# define __stpcpy stpcpy
# undef __mempcpy
# define __mempcpy mempcpy
# undef internal_function
# define internal_function /* empty */
# undef dirent64
# define dirent64 dirent
# undef MAX
# define MAX(a, b) ((a) > (b) ? (a) : (b))
#endif
#ifndef _LIBC
# undef __getcwd
# define __getcwd(P, N) xgetcwd ()
extern char *xgetcwd (void);
#endif
/* Arrange to make lstat calls go through the wrapper function
on systems with an lstat function that does not dereference symlinks
that are specified with a trailing slash. */
#if ! _LIBC && ! LSTAT_FOLLOWS_SLASHED_SYMLINK
int rpl_lstat (const char *, struct stat *);
# undef lstat
# define lstat(Name, Stat_buf) rpl_lstat(Name, Stat_buf)
#endif
#ifndef __set_errno
# define __set_errno(Val) errno = (Val)
#endif
/* Support for the LFS API version. */
#ifndef FTW_NAME
# define FTW_NAME ftw
# define NFTW_NAME nftw
# define INO_T ino_t
# define STAT stat
# ifdef _LIBC
# define LXSTAT __lxstat
# define XSTAT __xstat
# else
# define LXSTAT(V,f,sb) lstat (f,sb)
# define XSTAT(V,f,sb) stat (f,sb)
# endif
# define FTW_FUNC_T __ftw_func_t
# define NFTW_FUNC_T __nftw_func_t
#endif
struct dir_data
{
DIR *stream;
char *content;
};
struct known_object
{
dev_t dev;
INO_T ino;
};
struct ftw_data
{
/* Array with pointers to open directory streams. */
struct dir_data **dirstreams;
size_t actdir;
size_t maxdir;
/* Buffer containing name of currently processed object. */
char *dirbuf;
size_t dirbufsize;
/* Passed as fourth argument to `nftw' callback. The `base' member
tracks the content of the `dirbuf'. */
struct FTW ftw;
/* Flags passed to `nftw' function. 0 for `ftw'. */
int flags;
/* Conversion array for flag values. It is the identity mapping for
`nftw' calls, otherwise it maps the values to those known by
`ftw'. */
const int *cvt_arr;
/* Callback function. We always use the `nftw' form. */
NFTW_FUNC_T func;
/* Device of starting point. Needed for FTW_MOUNT. */
dev_t dev;
/* Data structure for keeping fingerprints of already processed
object. This is needed when not using FTW_PHYS. */
void *known_objects;
};
/* Internally we use the FTW_* constants used for `nftw'. When invoked
as `ftw', map each flag to the subset of values used by `ftw'. */
static const int nftw_arr[] =
{
FTW_F, FTW_D, FTW_DNR, FTW_NS, FTW_SL, FTW_DP, FTW_SLN
};
static const int ftw_arr[] =
{
FTW_F, FTW_D, FTW_DNR, FTW_NS, FTW_F, FTW_D, FTW_NS
};
/* Forward declarations of local functions. */
static int ftw_dir (struct ftw_data *data, struct STAT *st) internal_function;
static int
object_compare (const void *p1, const void *p2)
{
/* We don't need a sophisticated and useful comparison. We are only
interested in equality. However, we must be careful not to
accidentally compare `holes' in the structure. */
const struct known_object *kp1 = p1, *kp2 = p2;
int cmp1;
cmp1 = (kp1->ino > kp2->ino) - (kp1->ino < kp2->ino);
if (cmp1 != 0)
return cmp1;
return (kp1->dev > kp2->dev) - (kp1->dev < kp2->dev);
}
static inline int
add_object (struct ftw_data *data, struct STAT *st)
{
struct known_object *newp = malloc (sizeof (struct known_object));
if (newp == NULL)
return -1;
newp->dev = st->st_dev;
newp->ino = st->st_ino;
return __tsearch (newp, &data->known_objects, object_compare) ? 0 : -1;
}
static inline int
find_object (struct ftw_data *data, struct STAT *st)
{
struct known_object obj;
obj.dev = st->st_dev;
obj.ino = st->st_ino;
return __tfind (&obj, &data->known_objects, object_compare) != NULL;
}
static inline int
open_dir_stream (struct ftw_data *data, struct dir_data *dirp)
{
int result = 0;
if (data->dirstreams[data->actdir] != NULL)
{
/* Oh, oh. We must close this stream. Get all remaining
entries and store them as a list in the `content' member of
the `struct dir_data' variable. */
size_t bufsize = 1024;
char *buf = malloc (bufsize);
if (buf == NULL)
result = -1;
else
{
DIR *st = data->dirstreams[data->actdir]->stream;
struct dirent64 *d;
size_t actsize = 0;
while ((d = __readdir64 (st)) != NULL)
{
size_t this_len = NAMLEN (d);
if (actsize + this_len + 2 >= bufsize)
{
char *newp;
bufsize += MAX (1024, 2 * this_len);
newp = (char *) realloc (buf, bufsize);
if (newp == NULL)
{
/* No more memory. */
int save_err = errno;
free (buf);
__set_errno (save_err);
result = -1;
break;
}
buf = newp;
}
*((char *) __mempcpy (buf + actsize, d->d_name, this_len))
= '\0';
actsize += this_len + 1;
}
/* Terminate the list with an additional NUL byte. */
buf[actsize++] = '\0';
/* Shrink the buffer to what we actually need. */
data->dirstreams[data->actdir]->content = realloc (buf, actsize);
if (data->dirstreams[data->actdir]->content == NULL)
{
int save_err = errno;
free (buf);
__set_errno (save_err);
result = -1;
}
else
{
__closedir (st);
data->dirstreams[data->actdir]->stream = NULL;
data->dirstreams[data->actdir] = NULL;
}
}
}
/* Open the new stream. */
if (result == 0)
{
const char *name = ((data->flags & FTW_CHDIR)
? data->dirbuf + data->ftw.base: data->dirbuf);
assert (data->dirstreams[data->actdir] == NULL);
dirp->stream = __opendir (name);
if (dirp->stream == NULL)
result = -1;
else
{
dirp->content = NULL;
data->dirstreams[data->actdir] = dirp;
if (++data->actdir == data->maxdir)
data->actdir = 0;
}
}
return result;
}
static inline int
process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
size_t namlen)
{
struct STAT st;
int result = 0;
int flag = 0;
if (name[0] == '.' && (name[1] == '\0'
|| (name[1] == '.' && name[2] == '\0')))
/* Don't process the "." and ".." entries. */
return 0;
if (data->dirbufsize < data->ftw.base + namlen + 2)
{
/* Enlarge the buffer. */
char *newp;
data->dirbufsize *= 2;
newp = (char *) realloc (data->dirbuf, data->dirbufsize);
if (newp == NULL)
return -1;
data->dirbuf = newp;
}
*((char *) __mempcpy (data->dirbuf + data->ftw.base, name, namlen)) = '\0';
if ((data->flags & FTW_CHDIR) == 0)
name = data->dirbuf;
if (((data->flags & FTW_PHYS)
? LXSTAT (_STAT_VER, name, &st)
: XSTAT (_STAT_VER, name, &st)) < 0)
{
if (errno != EACCES && errno != ENOENT)
result = -1;
else if (!(data->flags & FTW_PHYS)
&& LXSTAT (_STAT_VER, name, &st) == 0
&& S_ISLNK (st.st_mode))
flag = FTW_SLN;
else
flag = FTW_NS;
}
else
{
if (S_ISDIR (st.st_mode))
flag = FTW_D;
else if (S_ISLNK (st.st_mode))
flag = FTW_SL;
else
flag = FTW_F;
}
if (result == 0
&& (flag == FTW_NS
|| !(data->flags & FTW_MOUNT) || st.st_dev == data->dev))
{
if (flag == FTW_D)
{
if ((data->flags & FTW_PHYS)
|| (!find_object (data, &st)
/* Remember the object. */
&& (result = add_object (data, &st)) == 0))
{
result = ftw_dir (data, &st);
if (result == 0 && (data->flags & FTW_CHDIR))
{
/* Change back to current directory. */
int done = 0;
if (dir->stream != NULL)
if (__fchdir (dirfd (dir->stream)) == 0)
done = 1;
if (!done)
{
if (data->ftw.base == 1)
{
if (__chdir ("/") < 0)
result = -1;
}
else
if (__chdir ("..") < 0)
result = -1;
}
if (result < 0)
{
result = (*data->func) (data->dirbuf, NULL, FTW_DCHP,
&data->ftw);
}
}
}
}
else
result = (*data->func) (data->dirbuf, &st, data->cvt_arr[flag],
&data->ftw);
}
return result;
}
static int
internal_function
ftw_dir (struct ftw_data *data, struct STAT *st)
{
struct dir_data dir;
struct dirent64 *d;
int previous_base = data->ftw.base;
int result;
char *startp;
/* Open the stream for this directory. This might require that
another stream has to be closed. */
result = open_dir_stream (data, &dir);
if (result != 0)
{
if (errno == EACCES)
/* We cannot read the directory. Signal this with a special flag. */
result = (*data->func) (data->dirbuf, st, FTW_DNR, &data->ftw);
return result;
}
/* First, report the directory (if not depth-first). */
if (!(data->flags & FTW_DEPTH))
{
result = (*data->func) (data->dirbuf, st, FTW_D, &data->ftw);
if (result != 0)
return result;
}
/* If necessary, change to this directory. */
if (data->flags & FTW_CHDIR)
{
if (__fchdir (dirfd (dir.stream)) < 0)
{
if (errno == ENOSYS)
{
if (__chdir (data->dirbuf) < 0)
result = -1;
}
else
result = -1;
}
if (result != 0)
{
int save_err = errno;
__closedir (dir.stream);
__set_errno (save_err);
if (data->actdir-- == 0)
data->actdir = data->maxdir - 1;
data->dirstreams[data->actdir] = NULL;
/* We cannot change to the directory.
Signal this with a special flag. */
result = (*data->func) (data->dirbuf, st, FTW_DCH, &data->ftw);
return result;
}
}
/* Next, update the `struct FTW' information. */
++data->ftw.level;
startp = strchr (data->dirbuf, '\0');
/* There always must be a directory name. */
assert (startp != data->dirbuf);
if (startp[-1] != '/')
*startp++ = '/';
data->ftw.base = startp - data->dirbuf;
while (dir.stream != NULL && (d = __readdir64 (dir.stream)) != NULL)
{
result = process_entry (data, &dir, d->d_name, NAMLEN (d));
if (result != 0)
break;
}
if (dir.stream != NULL)
{
/* The stream is still open. I.e., we did not need more
descriptors. Simply close the stream now. */
int save_err = errno;
assert (dir.content == NULL);
__closedir (dir.stream);
__set_errno (save_err);
if (data->actdir-- == 0)
data->actdir = data->maxdir - 1;
data->dirstreams[data->actdir] = NULL;
}
else
{
int save_err;
char *runp = dir.content;
while (result == 0 && *runp != '\0')
{
char *endp = strchr (runp, '\0');
result = process_entry (data, &dir, runp, endp - runp);
runp = endp + 1;
}
save_err = errno;
free (dir.content);
__set_errno (save_err);
}
/* Prepare the return, revert the `struct FTW' information. */
data->dirbuf[data->ftw.base - 1] = '\0';
--data->ftw.level;
data->ftw.base = previous_base;
/* Finally, if we process depth-first report the directory. */
if (result == 0 && (data->flags & FTW_DEPTH))
result = (*data->func) (data->dirbuf, st, FTW_DP, &data->ftw);
return result;
}
#ifdef _LIBC
# define ISSLASH(C) ((C) == '/')
# define FILESYSTEM_PREFIX_LEN(Filename) 0
#endif
/* In general, we can't use the builtin `basename' function if available,
since it has different meanings in different environments.
In some environments the builtin `basename' modifies its argument.
Return the address of the last file name component of NAME. If
NAME has no file name components because it is all slashes, return
NAME if it is empty, the address of its last slash otherwise. */
static char *
base_name (char const *name)
{
char const *base = name + FILESYSTEM_PREFIX_LEN (name);
char const *p;
for (p = base; *p; p++)
{
if (ISSLASH (*p))
{
/* Treat multiple adjacent slashes like a single slash. */
do p++;
while (ISSLASH (*p));
/* If the file name ends in slash, use the trailing slash as
the basename if no non-slashes have been found. */
if (! *p)
{
if (ISSLASH (*base))
base = p - 1;
break;
}
/* *P is a non-slash preceded by a slash. */
base = p;
}
}
return (char *) base;
}
static int
internal_function
ftw_startup (const char *dir, int is_nftw, void *func, int descriptors,
int flags)
{
struct ftw_data data;
struct STAT st;
int result = 0;
int save_err;
char *cwd = NULL;
size_t dir_len;
/* First make sure the parameters are reasonable. */
if (dir[0] == '\0')
{
__set_errno (ENOENT);
return -1;
}
data.maxdir = descriptors < 1 ? 1 : descriptors;
data.actdir = 0;
data.dirstreams = (struct dir_data **) alloca (data.maxdir
* sizeof (struct dir_data *));
memset (data.dirstreams, '\0', data.maxdir * sizeof (struct dir_data *));
dir_len = strlen (dir);
#ifdef PATH_MAX
data.dirbufsize = MAX (2 * dir_len, PATH_MAX);
#else
data.dirbufsize = 2 * dir_len;
#endif
data.dirbuf = (char *) malloc (data.dirbufsize);
if (data.dirbuf == NULL)
return -1;
memcpy (data.dirbuf, dir, dir_len + 1);
data.ftw.level = 0;
/* Find offset of basename. */
data.ftw.base = base_name (data.dirbuf) - data.dirbuf;
data.flags = flags;
/* This assignment might seem to be strange but it is what we want.
The trick is that the first three arguments to the `ftw' and
`nftw' callback functions are equal. Therefore we can call in
every case the callback using the format of the `nftw' version
and get the correct result since the stack layout for a function
call in C allows this. */
data.func = (NFTW_FUNC_T) func;
/* Since we internally use the complete set of FTW_* values we need
to reduce the value range before calling a `ftw' callback. */
data.cvt_arr = is_nftw ? nftw_arr : ftw_arr;
/* No object known so far. */
data.known_objects = NULL;
/* Now go to the directory containing the initial file/directory. */
if ((flags & FTW_CHDIR) && data.ftw.base > 0)
{
/* GNU extension ahead. */
cwd = __getcwd (NULL, 0);
if (cwd == NULL)
result = -1;
else
{
/* Change to the directory the file is in. In data.dirbuf
we have a writable copy of the file name. Just NUL
terminate it for now and change the directory. */
if (data.ftw.base == 1)
/* I.e., the file is in the root directory. */
result = __chdir ("/");
else
{
char ch = data.dirbuf[data.ftw.base - 1];
data.dirbuf[data.ftw.base - 1] = '\0';
result = __chdir (data.dirbuf);
data.dirbuf[data.ftw.base - 1] = ch;
}
}
}
/* Get stat info for start directory. */
if (result == 0)
{
const char *name = ((data.flags & FTW_CHDIR)
? data.dirbuf + data.ftw.base
: data.dirbuf);
if (((flags & FTW_PHYS)
? LXSTAT (_STAT_VER, name, &st)
: XSTAT (_STAT_VER, name, &st)) < 0)
{
if (!(flags & FTW_PHYS)
&& errno == ENOENT
&& LXSTAT (_STAT_VER, name, &st) == 0
&& S_ISLNK (st.st_mode))
result = (*data.func) (data.dirbuf, &st, data.cvt_arr[FTW_SLN],
&data.ftw);
else
/* No need to call the callback since we cannot say anything
about the object. */
result = -1;
}
else
{
if (S_ISDIR (st.st_mode))
{
/* Remember the device of the initial directory in case
FTW_MOUNT is given. */
data.dev = st.st_dev;
/* We know this directory now. */
if (!(flags & FTW_PHYS))
result = add_object (&data, &st);
if (result == 0)
result = ftw_dir (&data, &st);
}
else
{
int flag = S_ISLNK (st.st_mode) ? FTW_SL : FTW_F;
result = (*data.func) (data.dirbuf, &st, data.cvt_arr[flag],
&data.ftw);
}
}
}
/* Return to the start directory (if necessary). */
if (cwd != NULL)
{
int saved_errno = errno;
__chdir (cwd);
free (cwd);
__set_errno (saved_errno);
}
/* Free all memory. */
save_err = errno;
__tdestroy (data.known_objects, free);
free (data.dirbuf);
__set_errno (save_err);
return result;
}
/* Entry points. */
int
FTW_NAME (path, func, descriptors)
const char *path;
FTW_FUNC_T func;
int descriptors;
{
return ftw_startup (path, 0, func, descriptors, 0);
}
int
NFTW_NAME (path, func, descriptors, flags)
const char *path;
NFTW_FUNC_T func;
int descriptors;
int flags;
{
return ftw_startup (path, 1, func, descriptors, flags);
}

179
lib/ftw_.h Normal file
View File

@@ -0,0 +1,179 @@
/* Copyright (C) 1992, 1996, 1997, 1998, 1999, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/*
* X/Open Portability Guide 4.2: ftw.h
*/
#ifndef _FTW_H
# define _FTW_H 1
# ifdef _LIBC
# include <features.h>
# else
# undef __THROW
# define __THROW
# undef __BEGIN_DECLS
# define __BEGIN_DECLS
# undef __END_DECLS
# define __END_DECLS
# endif
# include <sys/types.h>
# include <sys/stat.h>
/* When compiling stand-alone on a system that does not define
__USE_XOPEN_EXTENDED, define that symbol so that all the
required declarations appear. */
# if ! defined _LIBC && ! defined __USE_XOPEN_EXTENDED
# define FTW_H_STANDALONE 1
# define __USE_XOPEN_EXTENDED 1
# endif
__BEGIN_DECLS
/* Values for the FLAG argument to the user function passed to `ftw'
and 'nftw'. */
enum
{
FTW_F, /* Regular file. */
# define FTW_F FTW_F
FTW_D, /* Directory. */
# define FTW_D FTW_D
FTW_DNR, /* Unreadable directory. */
# define FTW_DNR FTW_DNR
FTW_NS, /* Unstatable file. */
# define FTW_NS FTW_NS
/* Can't chdir to named directory. This can happen only when using
FTW_CHDIR. Note that although we can't chdir into that directory,
we were able to stat it, so SB (2nd argument to callback) is valid. */
FTW_DCH,
# define FTW_DCH FTW_DCH
/* Can't chdir to parent of named directory. This can happen only when
using FTW_CHDIR. Unlike for FTW_DCH, in this case, SB is not valid.
In fact, it is NULL. */
FTW_DCHP,
# define FTW_DCHP FTW_DCHP
# if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
FTW_SL, /* Symbolic link. */
# define FTW_SL FTW_SL
# endif
# ifdef __USE_XOPEN_EXTENDED
/* These flags are only passed from the `nftw' function. */
FTW_DP, /* Directory, all subdirs have been visited. */
# define FTW_DP FTW_DP
FTW_SLN /* Symbolic link naming non-existing file. */
# define FTW_SLN FTW_SLN
# endif /* extended X/Open */
};
# ifdef __USE_XOPEN_EXTENDED
/* Flags for fourth argument of `nftw'. */
enum
{
FTW_PHYS = 1, /* Perform physical walk, ignore symlinks. */
# define FTW_PHYS FTW_PHYS
FTW_MOUNT = 2, /* Report only files on same file system as the
argument. */
# define FTW_MOUNT FTW_MOUNT
FTW_CHDIR = 4, /* Change to current directory while processing it. */
# define FTW_CHDIR FTW_CHDIR
FTW_DEPTH = 8 /* Report files in directory before directory itself.*/
# define FTW_DEPTH FTW_DEPTH
};
/* Structure used for fourth argument to callback function for `nftw'. */
struct FTW
{
int base;
int level;
};
# endif /* extended X/Open */
/* Convenient types for callback functions. */
typedef int (*__ftw_func_t) (const char *__filename,
const struct stat *__status, int __flag);
# ifdef __USE_LARGEFILE64
typedef int (*__ftw64_func_t) (const char *__filename,
const struct stat64 *__status, int __flag);
# endif
# ifdef __USE_XOPEN_EXTENDED
typedef int (*__nftw_func_t) (const char *__filename,
const struct stat *__status, int __flag,
struct FTW *__info);
# ifdef __USE_LARGEFILE64
typedef int (*__nftw64_func_t) (const char *__filename,
const struct stat64 *__status,
int __flag, struct FTW *__info);
# endif
# endif
/* Call a function on every element in a directory tree. */
# ifndef __USE_FILE_OFFSET64
extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
__THROW;
# else
# ifdef __REDIRECT
extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
int __descriptors) __THROW, ftw64);
# else
# define ftw ftw64
# endif
# endif
# ifdef __USE_LARGEFILE64
extern int ftw64 (const char *__dir, __ftw64_func_t __func,
int __descriptors) __THROW;
# endif
# ifdef __USE_XOPEN_EXTENDED
/* Call a function on every element in a directory tree. FLAG allows
to specify the behaviour more detailed. */
# ifndef __USE_FILE_OFFSET64
extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
int __flag) __THROW;
# else
# ifdef __REDIRECT
extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
int __descriptors, int __flag) __THROW, nftw64);
# else
# define nftw nftw64
# endif
# endif
# ifdef __USE_LARGEFILE64
extern int nftw64 (const char *__dir, __nftw64_func_t __func,
int __descriptors, int __flag) __THROW;
# endif
# endif
/* If we defined __USE_XOPEN_EXTENDED above, undefine it here. */
# ifdef FTW_H_STANDALONE
# undef __USE_XOPEN_EXTENDED
# endif
__END_DECLS
#endif /* ftw.h */

19
lib/full-read.c Normal file
View File

@@ -0,0 +1,19 @@
/* An interface to read that retries after partial reads and interrupts.
Copyright (C) 2002, 2003 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. */
#define FULL_READ
#include "full-write.c"

24
lib/full-read.h Normal file
View File

@@ -0,0 +1,24 @@
/* An interface to read() that reads all it is asked to read.
Copyright (C) 2002 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, read to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stddef.h>
/* Read COUNT bytes at BUF to descriptor FD, retrying if interrupted
or if partial reads occur. Return the number of bytes successfully
read, setting errno if that is less than COUNT. errno = 0 means EOF. */
extern size_t full_read (int fd, void *buf, size_t count);

View File

@@ -1,7 +1,6 @@
/* full-write.c -- an interface to write that retries after interrupts
/* An interface to read and write that retries (if necessary) until complete.
Copyright 1993, 1994, 1997, 1998, 1999, 2000, 2001 Free Software
Foundation, Inc.
Copyright (C) 1993, 1994, 1997-2003 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
@@ -15,53 +14,67 @@
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 Paul Eggert. */
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include "full-write.h"
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <errno.h>
#ifndef errno
extern int errno;
#endif
/* Write LEN bytes at PTR to descriptor DESC, retrying if interrupted
or if partial writes occur. Return the number of bytes successfully
written, setting errno if that is less than LEN. */
size_t
full_write (int desc, const char *ptr, size_t len)
{
size_t total_written = 0;
while (len > 0)
{
ssize_t written = write (desc, ptr, len);
if (written <= 0)
{
/* Some buggy drivers return 0 when you fall off a device's end. */
if (written == 0)
errno = ENOSPC;
#ifdef EINTR
if (errno == EINTR)
continue;
#ifdef FULL_READ
# include "full-read.h"
# include "safe-read.h"
# define safe_rw safe_read
# define full_rw full_read
# undef const
# define const /* empty */
#else
# include "full-write.h"
# include "safe-write.h"
# define safe_rw safe_write
# define full_rw full_write
#endif
#ifdef FULL_READ
/* Set errno to zero upon EOF. */
# define ZERO_BYTE_TRANSFER_ERRNO 0
#else
/* Some buggy drivers return 0 when one tries to write beyond
a device's end. (Example: Linux 1.2.13 on /dev/fd0.)
Set errno to ENOSPC so they get a sensible diagnostic. */
# define ZERO_BYTE_TRANSFER_ERRNO ENOSPC
#endif
/* Write(read) COUNT bytes at BUF to(from) descriptor FD, retrying if
interrupted or if a partial write(read) occurs. Return the number
of bytes transferred.
When writing, set errno if fewer than COUNT bytes are written.
When reading, if fewer than COUNT bytes are read, you must examine
errno to distinguish failure from EOF (errno == 0). */
size_t
full_rw (int fd, const void *buf, size_t count)
{
size_t total = 0;
const char *ptr = buf;
while (count > 0)
{
size_t n_rw = safe_rw (fd, ptr, count);
if (n_rw == (size_t) -1)
break;
if (n_rw == 0)
{
errno = ZERO_BYTE_TRANSFER_ERRNO;
break;
}
total_written += written;
ptr += written;
len -= written;
total += n_rw;
ptr += n_rw;
count -= n_rw;
}
return total_written;
return total;
}

View File

@@ -1,9 +1,24 @@
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
/* An interface to write() that writes all it is asked to write.
size_t full_write PARAMS ((int, const char *, size_t));
Copyright (C) 2002 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. */
#include <stddef.h>
/* Write COUNT bytes at BUF to descriptor FD, retrying if interrupted
or if partial writes occur. Return the number of bytes successfully
written, setting errno if that is less than COUNT. */
extern size_t full_write (int fd, const void *buf, size_t count);

View File

@@ -1,53 +0,0 @@
#!/bin/sh
fail=0
cat <<\EOF || fail=1
#ifndef UNLOCKED_IO_H
# define UNLOCKED_IO_H 1
# ifndef USE_UNLOCKED_IO
# define USE_UNLOCKED_IO 1
# endif
# if USE_UNLOCKED_IO
/* These are wrappers for functions/macros from GNU libc.
The standard I/O functions are thread-safe. These *_unlocked ones are
more efficient but not thread-safe. That they're not thread-safe is
fine since all of the applications in this package are single threaded. */
EOF
for f in $@; do
u=`echo $f|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
cat <<EOF || fail=1
# if HAVE_${u}_UNLOCKED
# undef $f
EOF
case $f in
getchar)
params=;;
putchar | clearerr | feof | ferror | fflush | getc )
params=x;;
putc | fputc | fputs )
params=x,y;;
fgets )
params=x,y,z;;
fread | fwrite )
params=w,x,y,z;;
*)
echo $0: missing case for $f 2>&1; fail=1;;
esac
cat <<EOF || fail=1
# define $f($params) ${f}_unlocked ($params)
# endif
EOF
done
cat <<\EOF || fail=1
# endif /* USE_UNLOCKED_IO */
#endif /* UNLOCKED_IO_H */
EOF
(exit $fail); exit

View File

@@ -908,7 +908,7 @@ get_date (const char *p, const time_t *now)
pc.local_zones_seen = 0;
pc.zones_seen = 0;
#if HAVE_TM_ZONE
#if HAVE_STRUCT_TM_TM_ZONE
pc.local_time_zone_table[0].name = tmp->tm_zone;
pc.local_time_zone_table[0].type = tLOCAL_ZONE;
pc.local_time_zone_table[0].value = tmp->tm_isdst;

View File

@@ -21,7 +21,7 @@
#include <stdio.h>
#include <sys/types.h>
char *xmalloc ();
#include "xalloc.h"
/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, 0) always fails.
On other systems, it returns the number of supplemental groups for the

View File

@@ -2,24 +2,23 @@
NOTE: getopt is now part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001
Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
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.
The GNU C Library is distributed in the hope that it will be useful,
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
Lesser General Public License for more details.
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 Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
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. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
@@ -76,16 +75,20 @@
# endif
#endif
#ifndef _
#ifdef _LIBC
# include <libintl.h>
#else
/* This is for other GNU distributions with internationalized messages. */
# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
# include <libintl.h>
# ifndef _
# define _(msgid) gettext (msgid)
# endif
# else
# define _(msgid) (msgid)
# endif
# include "gettext.h"
#endif
#define _(msgid) gettext (msgid)
#if defined _LIBC && defined USE_IN_LIBIO
# include <wchar.h>
#endif
#ifndef attribute_hidden
# define attribute_hidden
#endif
/* This version of `getopt' appears to the caller like standard Unix `getopt'
@@ -131,7 +134,7 @@ int optind = 1;
causes problems with re-calling getopt as programs generally don't
know that. */
int __getopt_initialized;
int __getopt_initialized attribute_hidden;
/* The next char to be scanned in the option-element
in which the last option character we returned was found.
@@ -250,35 +253,22 @@ static int first_nonopt;
static int last_nonopt;
#ifdef _LIBC
/* Stored original parameters.
XXX This is no good solution. We should rather copy the args so
that we can compare them later. But we must not use malloc(3). */
extern int __libc_argc;
extern char **__libc_argv;
/* Bash 2.0 gives us an environment variable containing flags
indicating ARGV elements that should not be considered arguments. */
#ifdef USE_NONOPTION_FLAGS
# ifdef USE_NONOPTION_FLAGS
/* Defined in getopt_init.c */
extern char *__getopt_nonoption_flags;
static int nonoption_flags_max_len;
static int nonoption_flags_len;
#endif
static int original_argc;
static char *const *original_argv;
/* Make sure the environment variable bash 2.0 puts in the environment
is valid for the getopt call we must make sure that the ARGV passed
to getopt is that one passed to the process. */
static void
__attribute__ ((unused))
store_args_and_env (int argc, char *const *argv)
{
/* XXX This is no good solution. We should rather copy the args so
that we can compare them later. But we must not use malloc(3). */
original_argc = argc;
original_argv = argv;
}
# ifdef text_set_element
text_set_element (__libc_subinit, store_args_and_env);
# endif /* text_set_element */
# endif
# ifdef USE_NONOPTION_FLAGS
# define SWAP_FLAGS(ch1, ch2) \
@@ -428,7 +418,7 @@ _getopt_initialize (argc, argv, optstring)
#if defined _LIBC && defined USE_NONOPTION_FLAGS
if (posixly_correct == NULL
&& argc == original_argc && argv == original_argv)
&& argc == __libc_argc && argv == __libc_argv)
{
if (nonoption_flags_max_len == 0)
{
@@ -691,8 +681,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (ambig && !exact)
{
if (print_errors)
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
argv[0], argv[optind]);
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
argv[0], argv[optind]) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
argv[0], argv[optind]);
#endif
}
nextchar += strlen (nextchar);
optind++;
optopt = 0;
@@ -713,16 +721,50 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
if (print_errors)
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
int n;
#endif
if (argv[optind - 1][1] == '-')
/* --option */
fprintf (stderr,
_("%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
{
/* --option */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("\
%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
#else
fprintf (stderr, _("\
%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
#endif
}
else
/* +option or -option */
fprintf (stderr,
_("%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0], pfound->name);
{
/* +option or -option */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("\
%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0],
pfound->name);
#else
fprintf (stderr, _("\
%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0], pfound->name);
#endif
}
#if defined _LIBC && defined USE_IN_LIBIO
if (n >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#endif
}
nextchar += strlen (nextchar);
@@ -738,9 +780,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else
{
if (print_errors)
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf, _("\
%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
#endif
}
nextchar += strlen (nextchar);
optopt = pfound->val;
return optstring[0] == ':' ? ':' : '?';
@@ -766,14 +826,45 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
if (print_errors)
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
int n;
#endif
if (argv[optind][1] == '-')
/* --option */
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
argv[0], nextchar);
{
/* --option */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
argv[0], nextchar);
#else
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
argv[0], nextchar);
#endif
}
else
/* +option or -option */
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
argv[0], argv[optind][0], nextchar);
{
/* +option or -option */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
argv[0], argv[optind][0], nextchar);
#else
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
argv[0], argv[optind][0], nextchar);
#endif
}
#if defined _LIBC && defined USE_IN_LIBIO
if (n >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#endif
}
nextchar = (char *) "";
optind++;
@@ -796,13 +887,42 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
if (print_errors)
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
int n;
#endif
if (posixly_correct)
/* 1003.2 specifies the format of this message. */
fprintf (stderr, _("%s: illegal option -- %c\n"),
argv[0], c);
{
/* 1003.2 specifies the format of this message. */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
argv[0], c);
#else
fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
#endif
}
else
fprintf (stderr, _("%s: invalid option -- %c\n"),
argv[0], c);
{
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
argv[0], c);
#else
fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
#endif
}
#if defined _LIBC && defined USE_IN_LIBIO
if (n >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#endif
}
optopt = c;
return '?';
@@ -831,8 +951,24 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (print_errors)
{
/* 1003.2 specifies the format of this message. */
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf,
_("%s: option requires an argument -- %c\n"),
argv[0], c) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr, _("%s: option requires an argument -- %c\n"),
argv[0], c);
#endif
}
optopt = c;
if (optstring[0] == ':')
@@ -878,8 +1014,25 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (ambig && !exact)
{
if (print_errors)
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
argv[0], argv[optind]);
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
argv[0], argv[optind]) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
argv[0], argv[optind]);
#endif
}
nextchar += strlen (nextchar);
optind++;
return '?';
@@ -896,9 +1049,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else
{
if (print_errors)
fprintf (stderr, _("\
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf, _("\
%s: option `-W %s' doesn't allow an argument\n"),
argv[0], pfound->name);
argv[0], pfound->name) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr, _("\
%s: option `-W %s' doesn't allow an argument\n"),
argv[0], pfound->name);
#endif
}
nextchar += strlen (nextchar);
return '?';
@@ -911,9 +1082,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else
{
if (print_errors)
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
{
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf, _("\
%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
#endif
}
nextchar += strlen (nextchar);
return optstring[0] == ':' ? ':' : '?';
}
@@ -960,9 +1149,25 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (print_errors)
{
/* 1003.2 specifies the format of this message. */
#if defined _LIBC && defined USE_IN_LIBIO
char *buf;
if (__asprintf (&buf, _("\
%s: option requires an argument -- %c\n"),
argv[0], c) >= 0)
{
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s", buf);
else
fputs (buf, stderr);
free (buf);
}
#else
fprintf (stderr,
_("%s: option requires an argument -- %c\n"),
argv[0], c);
#endif
}
optopt = c;
if (optstring[0] == ':')

View File

@@ -2,20 +2,19 @@
Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
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.
The GNU C Library is distributed in the hope that it will be useful,
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
Lesser General Public License for more details.
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 Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
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. */
#ifndef _GETOPT_H
@@ -142,20 +141,21 @@ struct option
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
# else /* not __GNU_LIBRARY__ */
extern int getopt ();
# endif /* __GNU_LIBRARY__ */
# ifndef __need_getopt
extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
extern int getopt_long (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind);
extern int getopt_long_only (int __argc, char *const *__argv,
extern int getopt_long_only (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind);
/* Internal only. Users should not call this directly. */
extern int _getopt_internal (int __argc, char *const *__argv,
extern int _getopt_internal (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind,
int __long_only);

View File

@@ -3,26 +3,29 @@
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
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.
The GNU C Library is distributed in the hope that it will be useful,
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
Lesser General Public License for more details.
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 Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
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. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "getopt.h"
#ifdef _LIBC
# include <getopt.h>
#else
# include "getopt.h"
#endif
#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems
@@ -90,6 +93,10 @@ getopt_long_only (argc, argv, options, long_options, opt_index)
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
}
# ifdef _LIBC
libc_hidden_def (getopt_long)
libc_hidden_def (getopt_long_only)
# endif
#endif /* Not ELIDE_CODE. */

View File

@@ -27,6 +27,16 @@
# else
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
chokes if dcgettext is defined as a macro. So include it now, to make
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
as well because people using "gettext.h" will not include <libintl.h>,
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
is OK. */
# if defined(__sun)
# include <locale.h>
# endif
/* Disabled NLS.
The casts to 'const char *' serve the purpose of producing warnings
for invalid uses of the value returned from these functions.

View File

@@ -31,9 +31,7 @@
#endif
#include "group-member.h"
char *xmalloc ();
char *xrealloc ();
#include "xalloc.h"
struct group_info
{

View File

@@ -1,7 +1,7 @@
/* human.c -- print human readable file size
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software
Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 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
@@ -18,33 +18,42 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Originally contributed by lm@sgi.com;
--si, output block size selection, and large file support
added by eggert@twinsun.com. */
--si, output block size selection, large file support,
and grouping added by eggert@twinsun.com. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <stdio.h>
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#if HAVE_STRING_H
# include <string.h>
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
# include <strings.h>
typedef enum {false = 0, true = 1} bool;
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
# include <stdint.h>
# endif
#endif
#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif
#ifndef UINTMAX_MAX
# define UINTMAX_MAX ((uintmax_t) -1)
#endif
#include <limits.h>
#if HAVE_LOCALE_H && HAVE_LOCALECONV
# include <locale.h>
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#ifndef HAVE_DECL_GETENV
"this configure-time declaration test was not run"
#endif
@@ -52,20 +61,30 @@
char *getenv ();
#endif
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#if HAVE_STRING_H
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#include <stdio.h>
#include <sys/types.h>
#include <gettext.h>
#define _(text) gettext (text)
#include <argmatch.h>
#include <error.h>
#include <xstrtol.h>
#include "human.h"
static const char suffixes[] =
/* The maximum length of a suffix like "KiB". */
#define HUMAN_READABLE_SUFFIX_LENGTH_MAX 3
static const char power_letter[] =
{
0, /* not used */
'K', /* kibi ('k' for kilo is a special case) */
@@ -78,33 +97,18 @@ static const char suffixes[] =
'Y' /* yotta or 2**80 */
};
/* Generate into P[-1] (and possibly P[-2]) the proper suffix for
POWER and BASE. Return the address of the generated suffix. */
static char *
generate_suffix_backwards (char *p, int power, int base)
{
char letter = suffixes[power];
if (base == 1000)
{
*--p = 'B';
if (power == 1)
letter = 'k';
}
*--p = letter;
return p;
}
/* If INEXACT_STYLE is not human_round_to_even, and if easily
/* If INEXACT_STYLE is not human_round_to_nearest, and if easily
possible, adjust VALUE according to the style. */
static double
adjust_value (enum human_inexact_style inexact_style, double value)
static long double
adjust_value (int inexact_style, long double value)
{
/* Do not use the floor or ceil functions, as that would mean
linking with the standard math library, which is a porting pain.
So leave the value alone if it is too large to easily round. */
if (inexact_style != human_round_to_even && value < (uintmax_t) -1)
/* Do not use the floorl or ceill functions, as that would mean
checking for their presence and possibly linking with the
standard math library, which is a porting pain. So leave the
value alone if it is too large to easily round. */
if (inexact_style != human_round_to_nearest && value < UINTMAX_MAX)
{
uintmax_t u = value;
value = u + (inexact_style == human_ceiling && u != value);
@@ -113,199 +117,323 @@ adjust_value (enum human_inexact_style inexact_style, double value)
return value;
}
/* Like human_readable_inexact, except always round to even. */
char *
human_readable (uintmax_t n, char *buf,
int from_block_size, int output_block_size)
/* Group the digits of NUMBER according to the grouping rules of the
current locale. NUMBER contains NUMBERLEN digits. Modify the
bytes pointed to by NUMBER in place, subtracting 1 from NUMBER for
each byte inserted. Return the starting address of the modified
number.
To group the digits, use GROUPING and THOUSANDS_SEP as in `struct
lconv' from <locale.h>. */
static char *
group_number (char *number, size_t numberlen,
char const *grouping, char const *thousands_sep)
{
return human_readable_inexact (n, buf, from_block_size, output_block_size,
human_round_to_even);
register char *d;
size_t grouplen = SIZE_MAX;
size_t thousands_seplen = strlen (thousands_sep);
size_t i = numberlen;
/* The maximum possible value for NUMBERLEN is the number of digits
in the square of the largest uintmax_t, so double the size of
uintmax_t before converting to a bound. 302 / 1000 is ceil
(log10 (2.0)). Add 1 for integer division truncation. */
char buf[2 * sizeof (uintmax_t) * CHAR_BIT * 302 / 1000 + 1];
memcpy (buf, number, numberlen);
d = number + numberlen;
for (;;)
{
unsigned char g = *grouping;
if (g)
{
grouplen = g < CHAR_MAX ? g : i;
grouping++;
}
if (i < grouplen)
grouplen = i;
d -= grouplen;
i -= grouplen;
memcpy (d, buf + i, grouplen);
if (i == 0)
return d;
d -= thousands_seplen;
memcpy (d, thousands_sep, thousands_seplen);
}
}
/* Convert N to a human readable format in BUF.
/* Convert N to a human readable format in BUF, using the options OPTS.
N is expressed in units of FROM_BLOCK_SIZE. FROM_BLOCK_SIZE must
be nonnegative.
OUTPUT_BLOCK_SIZE must be nonzero. If it is positive, use units of
OUTPUT_BLOCK_SIZE in the output number.
Use units of TO_BLOCK_SIZE in the output number. TO_BLOCK_SIZE
must be positive.
Use INEXACT_STYLE to determine whether to take the ceiling or floor
of any result that cannot be expressed exactly.
Use (OPTS & (human_round_to_nearest | human_floor | human_ceiling))
to determine whether to take the ceiling or floor of any result
that cannot be expressed exactly.
If OUTPUT_BLOCK_SIZE is negative, use a format like "127K" if
possible, using powers of -OUTPUT_BLOCK_SIZE; otherwise, use
ordinary decimal format. Normally -OUTPUT_BLOCK_SIZE is either
1000 or 1024; it must be at least 2. Most people visually process
strings of 3-4 digits effectively, but longer strings of digits are
more prone to misinterpretation. Hence, converting to an
abbreviated form usually improves readability. Use a suffix
indicating which power is being used. For example, assuming
-OUTPUT_BLOCK_SIZE is 1024, 8500 would be converted to 8.3K,
133456345 to 127M, 56990456345 to 53G, and so on. Numbers smaller
than -OUTPUT_BLOCK_SIZE aren't modified. If -OUTPUT_BLOCK_SIZE is
1024, append a "B" after any size letter. */
If (OPTS & human_group_digits), group the thousands digits
according to the locale, e.g., `1,000,000' in an American English
locale.
If (OPTS & human_autoscale), deduce the output block size
automatically; TO_BLOCK_SIZE must be 1 but it has no effect on the
output. Use powers of 1024 if (OPTS & human_base_1024), and powers
of 1000 otherwise. For example, assuming powers of 1024, 8500
would be converted to 8.3, 133456345 to 127, 56990456345 to 53, and
so on. Numbers smaller than the power aren't modified.
human_autoscale is normally used together with human_SI.
If (OPTS & human_SI), append an SI prefix indicating which power is
being used. If in addition (OPTS & human_B), append "B" (if base
1000) or "iB" (if base 1024) to the SI prefix. When ((OPTS &
human_SI) && ! (OPTS & human_autoscale)), TO_BLOCK_SIZE must be a
power of 1024 or of 1000, depending on (OPTS &
human_base_1024). */
char *
human_readable_inexact (uintmax_t n, char *buf,
int from_block_size, int output_block_size,
enum human_inexact_style inexact_style)
human_readable (uintmax_t n, char *buf, int opts,
uintmax_t from_block_size, uintmax_t to_block_size)
{
int inexact_style =
opts & (human_round_to_nearest | human_floor | human_ceiling);
unsigned int base = opts & human_base_1024 ? 1024 : 1000;
uintmax_t amt;
int base;
int to_block_size;
int tenths = 0;
int power;
int tenths;
int exponent = -1;
int exponent_max = sizeof power_letter - 1;
char *p;
char *psuffix;
char const *integerlim;
/* 0 means adjusted N == AMT.TENTHS;
1 means AMT.TENTHS < adjusted N < AMT.TENTHS + 0.05;
2 means adjusted N == AMT.TENTHS + 0.05;
3 means AMT.TENTHS + 0.05 < adjusted N < AMT.TENTHS + 0.1. */
int rounding = 0;
int rounding;
if (output_block_size < 0)
char const *decimal_point = ".";
size_t decimal_pointlen = 1;
char const *grouping = "";
char const *thousands_sep = "";
#if HAVE_LOCALE_H && HAVE_LOCALECONV
struct lconv const *l = localeconv ();
size_t pointlen = strlen (l->decimal_point);
if (0 < pointlen && pointlen <= MB_LEN_MAX)
{
base = -output_block_size;
to_block_size = 1;
decimal_point = l->decimal_point;
decimal_pointlen = pointlen;
}
else
{
base = 0;
to_block_size = output_block_size;
}
p = buf + LONGEST_HUMAN_READABLE;
*p = '\0';
#ifdef lint
/* Suppress `used before initialized' warning. */
power = 0;
grouping = l->grouping;
if (strlen (l->thousands_sep) <= MB_LEN_MAX)
thousands_sep = l->thousands_sep;
#endif
/* Adjust AMT out of FROM_BLOCK_SIZE units and into TO_BLOCK_SIZE units. */
psuffix = buf + LONGEST_HUMAN_READABLE - HUMAN_READABLE_SUFFIX_LENGTH_MAX;
p = psuffix;
/* Adjust AMT out of FROM_BLOCK_SIZE units and into TO_BLOCK_SIZE
units. If this can be done exactly with integer arithmetic, do
not use floating point operations. */
if (to_block_size <= from_block_size)
{
if (from_block_size % to_block_size == 0)
{
uintmax_t multiplier = from_block_size / to_block_size;
amt = n * multiplier;
if (amt / multiplier == n)
{
tenths = 0;
rounding = 0;
goto use_integer_arithmetic;
}
}
}
else if (from_block_size != 0 && to_block_size % from_block_size == 0)
{
uintmax_t divisor = to_block_size / from_block_size;
uintmax_t r10 = (n % divisor) * 10;
uintmax_t r2 = (r10 % divisor) * 2;
amt = n / divisor;
tenths = r10 / divisor;
rounding = r2 < divisor ? 0 < r2 : 2 + (divisor < r2);
goto use_integer_arithmetic;
}
{
int multiplier;
int divisor;
int r2;
int r10;
if (to_block_size <= from_block_size
? (from_block_size % to_block_size != 0
|| (multiplier = from_block_size / to_block_size,
(amt = n * multiplier) / multiplier != n))
: (from_block_size == 0
|| to_block_size % from_block_size != 0
|| (divisor = to_block_size / from_block_size,
r10 = (n % divisor) * 10,
r2 = (r10 % divisor) * 2,
amt = n / divisor,
tenths = r10 / divisor,
rounding = r2 < divisor ? 0 < r2 : 2 + (divisor < r2),
0)))
/* Either the result cannot be computed easily using uintmax_t,
or from_block_size is zero. Fall back on floating point.
FIXME: This can yield answers that are slightly off. */
long double dto_block_size = to_block_size;
long double damt = n * (from_block_size / dto_block_size);
size_t buflen;
size_t nonintegerlen;
if (! (opts & human_autoscale))
{
/* Either the result cannot be computed easily using uintmax_t,
or from_block_size is zero. Fall back on floating point.
FIXME: This can yield answers that are slightly off. */
sprintf (buf, "%.0Lf", adjust_value (inexact_style, damt));
buflen = strlen (buf);
nonintegerlen = 0;
}
else
{
long double e = 1;
exponent = 0;
double damt = n * (from_block_size / (double) to_block_size);
if (! base)
sprintf (buf, "%.0f", adjust_value (inexact_style, damt));
else
do
{
char suffix[3];
char const *psuffix;
double e = 1;
power = 0;
e *= base;
exponent++;
}
while (e * base <= damt && exponent < exponent_max);
damt /= e;
sprintf (buf, "%.1Lf", adjust_value (inexact_style, damt));
buflen = strlen (buf);
nonintegerlen = decimal_pointlen + 1;
if (1 + nonintegerlen + ! (opts & human_base_1024) < buflen
|| ((opts & human_suppress_point_zero)
&& buf[buflen - 1] == '0'))
{
sprintf (buf, "%.0Lf",
adjust_value (inexact_style, damt * 10) / 10);
buflen = strlen (buf);
nonintegerlen = 0;
}
}
p = psuffix - buflen;
memmove (p, buf, buflen);
integerlim = p + buflen - nonintegerlen;
}
goto do_grouping;
use_integer_arithmetic:
{
/* The computation can be done exactly, with integer arithmetic.
Use power of BASE notation if requested and if adjusted AMT is
large enough. */
if (opts & human_autoscale)
{
exponent = 0;
if (base <= amt)
{
do
{
e *= base;
power++;
unsigned r10 = (amt % base) * 10 + tenths;
unsigned r2 = (r10 % base) * 2 + (rounding >> 1);
amt /= base;
tenths = r10 / base;
rounding = (r2 < base
? (r2 + rounding) != 0
: 2 + (base < r2 + rounding));
exponent++;
}
while (e * base <= damt && power < sizeof suffixes - 1);
while (base <= amt && exponent < exponent_max);
damt /= e;
if (amt < 10)
{
if (inexact_style == human_round_to_nearest
? 2 < rounding + (tenths & 1)
: inexact_style == human_ceiling && 0 < rounding)
{
tenths++;
rounding = 0;
suffix[2] = '\0';
psuffix = generate_suffix_backwards (suffix + 2, power, base);
sprintf (buf, "%.1f%s",
adjust_value (inexact_style, damt), psuffix);
if (4 + (base == 1000) < strlen (buf))
sprintf (buf, "%.0f%s",
adjust_value (inexact_style, damt * 10) / 10, psuffix);
if (tenths == 10)
{
amt++;
tenths = 0;
}
}
if (amt < 10
&& (tenths || ! (opts & human_suppress_point_zero)))
{
*--p = '0' + tenths;
p -= decimal_pointlen;
memcpy (p, decimal_point, decimal_pointlen);
tenths = rounding = 0;
}
}
}
return buf;
}
if (inexact_style == human_ceiling
? 0 < tenths + rounding
: inexact_style == human_round_to_nearest
? 5 < tenths + (2 < rounding + (amt & 1))
: /* inexact_style == human_floor */ 0)
{
amt++;
if ((opts & human_autoscale)
&& amt == base && exponent < exponent_max)
{
exponent++;
if (! (opts & human_suppress_point_zero))
{
*--p = '0';
p -= decimal_pointlen;
memcpy (p, decimal_point, decimal_pointlen);
}
amt = 1;
}
}
integerlim = p;
do
{
int digit = amt % 10;
*--p = digit + '0';
}
while ((amt /= 10) != 0);
}
/* Use power of BASE notation if adjusted AMT is large enough. */
do_grouping:
if (opts & human_group_digits)
p = group_number (p, integerlim - p, grouping, thousands_sep);
if (base && base <= amt)
if (opts & human_SI)
{
power = 0;
do
if (exponent < 0)
{
int r10 = (amt % base) * 10 + tenths;
int r2 = (r10 % base) * 2 + (rounding >> 1);
amt /= base;
tenths = r10 / base;
rounding = (r2 < base
? 0 < r2 + rounding
: 2 + (base < r2 + rounding));
power++;
uintmax_t power;
exponent = 0;
for (power = 1; power < to_block_size; power *= base)
if (++exponent == exponent_max)
break;
}
while (base <= amt && power < sizeof suffixes - 1);
p = generate_suffix_backwards (p, power, base);
if (exponent)
*psuffix++ = (! (opts & human_base_1024) && exponent == 1
? 'k'
: power_letter[exponent]);
if (amt < 10)
if (opts & human_B)
{
if (2 * (1 - (int) inexact_style)
< rounding + (tenths & (inexact_style == human_round_to_even)))
{
tenths++;
rounding = 0;
if (tenths == 10)
{
amt++;
tenths = 0;
}
}
if (amt < 10)
{
*--p = '0' + tenths;
*--p = '.';
tenths = rounding = 0;
}
if ((opts & human_base_1024) && exponent)
*psuffix++ = 'i';
*psuffix++ = 'B';
}
}
if (inexact_style == human_ceiling
? 0 < tenths + rounding
: inexact_style == human_round_to_even
? 5 < tenths + (2 < rounding + (amt & 1))
: /* inexact_style == human_floor */ 0)
{
amt++;
if (amt == base && power < sizeof suffixes - 1)
{
*p = suffixes[power + 1];
*--p = '0';
*--p = '.';
amt = 1;
}
}
do
*--p = '0' + (int) (amt % 10);
while ((amt /= 10) != 0);
*psuffix = '\0';
return p;
}
@@ -318,44 +446,70 @@ human_readable_inexact (uintmax_t n, char *buf,
#endif
static char const *const block_size_args[] = { "human-readable", "si", 0 };
static int const block_size_types[] = { -1024, -1000 };
static int const block_size_opts[] =
{
human_autoscale + human_SI + human_base_1024,
human_autoscale + human_SI
};
static int
static uintmax_t
default_block_size (void)
{
return getenv ("POSIXLY_CORRECT") ? 512 : DEFAULT_BLOCK_SIZE;
}
static strtol_error
humblock (char const *spec, int *block_size)
humblock (char const *spec, uintmax_t *block_size, int *options)
{
int i;
int opts = 0;
if (! spec && ! (spec = getenv ("BLOCK_SIZE")))
*block_size = default_block_size ();
else if (0 <= (i = ARGMATCH (spec, block_size_args, block_size_types)))
*block_size = block_size_types[i];
else
{
char *ptr;
unsigned long val;
strtol_error e = xstrtoul (spec, &ptr, 0, &val, "eEgGkKmMpPtTyYzZ0");
if (e != LONGINT_OK)
return e;
if (*ptr)
return LONGINT_INVALID_SUFFIX_CHAR;
if ((int) val < 0 || val != (int) val)
return LONGINT_OVERFLOW;
*block_size = (int) val;
if (*spec == '\'')
{
opts |= human_group_digits;
spec++;
}
if (0 <= (i = ARGMATCH (spec, block_size_args, block_size_opts)))
{
opts |= block_size_opts[i];
*block_size = 1;
}
else
{
char *ptr;
strtol_error e = xstrtoumax (spec, &ptr, 0, block_size,
"eEgGkKmMpPtTyYzZ0");
if (e != LONGINT_OK)
return e;
if (*ptr)
return LONGINT_INVALID_SUFFIX_CHAR;
for (; ! ('0' <= *spec && *spec <= '9'); spec++)
if (spec == ptr)
{
opts |= human_SI;
if (ptr[-1] == 'B')
opts |= human_B;
if (ptr[-1] != 'B' || ptr[-2] == 'i')
opts |= human_base_1024;
break;
}
}
}
*options = opts;
return LONGINT_OK;
}
void
human_block_size (char const *spec, int report_errors, int *block_size)
int
human_options (char const *spec, bool report_errors, uintmax_t *block_size)
{
strtol_error e = humblock (spec, block_size);
int opts;
strtol_error e = humblock (spec, block_size, &opts);
if (*block_size == 0)
{
*block_size = default_block_size ();
@@ -363,4 +517,5 @@ human_block_size (char const *spec, int report_errors, int *block_size)
}
if (e != LONGINT_OK && report_errors)
STRTOL_FATAL_ERROR (spec, _("block size"), e);
return opts;
}

View File

@@ -1,39 +1,77 @@
#ifndef HUMAN_H_
# define HUMAN_H_ 1
# if HAVE_CONFIG_H
# include <config.h>
# endif
/* Before including this file, you need something like the following:
# if HAVE_INTTYPES_H
# include <inttypes.h>
# endif
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
typedef enum {false = 0, true = 1} bool;
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
# include <stdint.h>
# endif
#endif
#include <limits.h>
so that the proper identifiers are all declared. */
/* A conservative bound on the maximum length of a human-readable string.
The output can be the product of the largest uintmax_t and the largest int,
so add their sizes before converting to a bound on digits. */
# define LONGEST_HUMAN_READABLE ((sizeof (uintmax_t) + sizeof (int)) \
* CHAR_BIT / 3)
The output can be the square of the largest uintmax_t, so double
its size before converting to a bound.
302 / 1000 is ceil (log10 (2.0)). Add 1 for integer division truncation.
Also, the output can have a thousands separator between every digit,
so multiply by MB_LEN_MAX + 1 and then subtract MB_LEN_MAX.
Finally, append 3, the maximum length of a suffix. */
# define LONGEST_HUMAN_READABLE \
((2 * sizeof (uintmax_t) * CHAR_BIT * 302 / 1000 + 1) * (MB_LEN_MAX + 1) \
- MB_LEN_MAX + 3)
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
enum human_inexact_style
/* Options for human_readable. */
enum
{
human_floor = -1,
human_round_to_even = 0,
human_ceiling = 1
/* Unless otherwise specified these options may be ORed together. */
/* The following three options are mutually exclusive. */
/* Round to plus infinity (default). */
human_ceiling = 0,
/* Round to nearest, ties to even. */
human_round_to_nearest = 1,
/* Round to minus infinity. */
human_floor = 2,
/* Group digits together, e.g. `1,000,000'. This uses the
locale-defined grouping; the traditional C locale does not group,
so this has effect only if some other locale is in use. */
human_group_digits = 4,
/* When autoscaling, suppress ".0" at end. */
human_suppress_point_zero = 8,
/* Scale output and use SI-style units, ignoring the output block size. */
human_autoscale = 16,
/* Prefer base 1024 to base 1000. */
human_base_1024 = 32,
/* Append SI prefix, e.g. "k" or "M". */
human_SI = 64,
/* Append "B" (if base 1000) or "iB" (if base 1024) to SI prefix. */
human_B = 128
};
char *human_readable PARAMS ((uintmax_t, char *, int, int));
char *human_readable_inexact PARAMS ((uintmax_t, char *, int, int,
enum human_inexact_style));
char *human_readable (uintmax_t, char *, int, uintmax_t, uintmax_t);
void human_block_size PARAMS ((char const *, int, int *));
int human_options (char const *, bool, uintmax_t *);
#endif /* HUMAN_H_ */

View File

@@ -1,5 +1,5 @@
/* idcache.c -- map user and group IDs, cached for speed
Copyright (C) 1985, 1988, 1989, 1990, 1997, 1998 Free Software
Copyright (C) 1985, 1988, 1989, 1990, 1997, 1998, 2003 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -35,6 +35,8 @@
# include <unistd.h>
#endif
#include "xalloc.h"
#ifndef _POSIX_VERSION
struct passwd *getpwuid ();
struct passwd *getpwnam ();
@@ -42,9 +44,6 @@ struct group *getgrgid ();
struct group *getgrnam ();
#endif
char *xmalloc ();
char *xstrdup ();
#ifdef __DJGPP__
static char digits[] = "0123456789";
#endif

3
lib/imaxtostr.c Normal file
View File

@@ -0,0 +1,3 @@
#define inttostr imaxtostr
#define inttype intmax_t
#include "inttostr.c"

49
lib/inttostr.c Normal file
View File

@@ -0,0 +1,49 @@
/* inttostr.c -- convert integers to printable strings
Copyright (C) 2001 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 Paul Eggert */
#include "inttostr.h"
/* Convert I to a printable string in BUF, which must be at least
INT_BUFSIZE_BOUND (INTTYPE) bytes long. Return the address of the
printable string, which need not start at BUF. */
char *
inttostr (inttype i, char *buf)
{
char *p = buf + INT_STRLEN_BOUND (inttype);
*p = 0;
if (i < 0)
{
do
*--p = '0' - i % 10;
while ((i /= 10) != 0);
*--p = '-';
}
else
{
do
*--p = '0' + i % 10;
while ((i /= 10) != 0);
}
return p;
}

57
lib/inttostr.h Normal file
View File

@@ -0,0 +1,57 @@
/* inttostr.h -- convert integers to printable strings
Copyright (C) 2001, 2002 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 Paul Eggert */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
/* 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)
#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
#ifndef PARAMS
# if defined PROTOTYPES || defined __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
char *offtostr PARAMS ((off_t, char *));
char *imaxtostr PARAMS ((intmax_t, char *));
char *umaxtostr PARAMS ((uintmax_t, char *));

View File

@@ -17,7 +17,7 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
/* Written by Bruno Haible <haible@clisp.cons.org>. */
/* Written by Bruno Haible <bruno@clisp.org>. */
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -82,6 +82,11 @@
# define getc getc_unlocked
#endif
#ifdef __cplusplus
/* When compiling with "gcc -x c++", produce a function with C linkage. */
extern "C" const char * locale_charset (void);
#endif
/* The following static variable is declared 'volatile' to avoid a
possible multithread problem in the function get_charset_aliases. If we
are running in a threaded environment, and if two threads initialize
@@ -201,7 +206,20 @@ get_charset_aliases ()
# if defined WIN32
cp = "CP936" "\0" "GBK" "\0"
"CP1361" "\0" "JOHAB" "\0";
"CP1361" "\0" "JOHAB" "\0"
"CP20127" "\0" "ASCII" "\0"
"CP20866" "\0" "KOI8-R" "\0"
"CP21866" "\0" "KOI8-RU" "\0"
"CP28591" "\0" "ISO-8859-1" "\0"
"CP28592" "\0" "ISO-8859-2" "\0"
"CP28593" "\0" "ISO-8859-3" "\0"
"CP28594" "\0" "ISO-8859-4" "\0"
"CP28595" "\0" "ISO-8859-5" "\0"
"CP28596" "\0" "ISO-8859-6" "\0"
"CP28597" "\0" "ISO-8859-7" "\0"
"CP28598" "\0" "ISO-8859-8" "\0"
"CP28599" "\0" "ISO-8859-9" "\0"
"CP28605" "\0" "ISO-8859-15" "\0";
# endif
#endif
@@ -267,7 +285,7 @@ locale_charset ()
static char buf[2 + 10 + 1];
/* Win32 has a function returning the locale's codepage as a number. */
/* Woe32 has a function returning the locale's codepage as a number. */
sprintf (buf, "CP%u", GetACP ());
codeset = buf;
@@ -341,5 +359,11 @@ locale_charset ()
break;
}
/* Don't return an empty string. GNU libc and GNU libiconv interpret
the empty string as denoting "the locale's character encoding",
thus GNU libiconv would call this function a second time. */
if (codeset[0] == '\0')
codeset = "ASCII";
return codeset;
}

View File

@@ -1,5 +1,5 @@
/* Utility to accept --help and --version options as unobtrusively as possible.
Copyright (C) 1993, 1994, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1993-1994, 1998-1999, 2000, 2002 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
@@ -30,13 +30,6 @@
#include "long-options.h"
#include "version-etc.h"
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
static struct option const long_options[] =
{
{"help", no_argument, 0, 'h'},

21
lib/lstat.c Normal file
View File

@@ -0,0 +1,21 @@
/* Work around the bug in some systems whereby lstat succeeds when
given the zero-length file name argument. The lstat from SunOS4.1.4
has this bug.
Copyright (C) 1997-2002 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. */
#define LSTAT
#include "stat.c"

View File

@@ -1,5 +1,6 @@
/* makepath.c -- Ensure that a directory path exists.
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003 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
@@ -46,7 +47,7 @@ char *alloca ();
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#if !defined S_ISDIR && defined S_IFDIR
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
@@ -58,9 +59,7 @@ char *alloca ();
# include <stdlib.h>
#endif
#if HAVE_ERRNO_H
# include <errno.h>
#endif
#include <errno.h>
#ifndef errno
extern int errno;
@@ -103,16 +102,8 @@ extern int errno;
/* Include this before libintl.h so we get our definition of PARAMS. */
#include "makepath.h"
#if HAVE_LOCALE_H
# include <locale.h>
#endif
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "save-cwd.h"
#include "dirname.h"
@@ -311,7 +302,7 @@ make_path (const char *argpath,
if ((owner != (uid_t) -1 || group != (gid_t) -1)
&& chown (basename_dir, owner, group)
#if defined(AFS) && defined (EPERM)
#if defined AFS && defined EPERM
&& errno != EPERM
#endif
)
@@ -355,6 +346,9 @@ make_path (const char *argpath,
if (!do_chdir)
basename_dir = dirpath;
/* Done creating leading directories. Restore original umask. */
umask (oldmask);
/* We're done making leading directories.
Create the final component of the path. */
@@ -364,9 +358,6 @@ make_path (const char *argpath,
return 1;
}
/* Done creating directories. Restore original umask. */
umask (oldmask);
if (verbose_fmt_string != NULL)
error (0, 0, verbose_fmt_string, quote (dirpath));
@@ -392,7 +383,8 @@ make_path (const char *argpath,
if ((mode & ~S_IRWXUGO)
&& chmod (basename_dir, mode))
{
error (0, errno, _("cannot change permissions of %s"), quote (dirpath));
error (0, errno, _("cannot change permissions of %s"),
quote (dirpath));
retval = 1;
}

View File

@@ -1,5 +1,5 @@
/* Determine the number of screen columns needed for a string.
Copyright (C) 2000-2001 Free Software Foundation, Inc.
Copyright (C) 2000-2002 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,6 +21,9 @@
# include <config.h>
#endif
/* Specification. */
#include "mbswidth.h"
/* Get MB_CUR_MAX. */
#include <stdlib.h>
@@ -78,17 +81,13 @@ int wcwidth ();
#undef ISCNTRL
#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (c))
#include "mbswidth.h"
/* Returns the number of columns needed to represent the multibyte
character string pointed to by STRING. If a non-printable character
occurs, and MBSW_REJECT_UNPRINTABLE is specified, -1 is returned.
With flags = MBSW_REJECT_INVALID | MBSW_REJECT_UNPRINTABLE, this is
the multibyte analogon of the wcswidth function. */
int
mbswidth (string, flags)
const char *string;
int flags;
mbswidth (const char *string, int flags)
{
return mbsnwidth (string, strlen (string), flags);
}
@@ -98,10 +97,7 @@ mbswidth (string, flags)
non-printable character occurs, and MBSW_REJECT_UNPRINTABLE is
specified, -1 is returned. */
int
mbsnwidth (string, nbytes, flags)
const char *string;
size_t nbytes;
int flags;
mbsnwidth (const char *string, size_t nbytes, int flags)
{
const char *p = string;
const char *plimit = p + nbytes;

View File

@@ -1,5 +1,5 @@
/* Determine the number of screen columns needed for a string.
Copyright (C) 2000-2001 Free Software Foundation, Inc.
Copyright (C) 2000-2002 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
@@ -15,13 +15,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef PARAMS
# if defined (__GNUC__) || __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
#include <stddef.h>
/* Optional flags to influence mbswidth/mbsnwidth behavior. */
@@ -36,8 +30,8 @@
/* Returns the number of screen columns needed for STRING. */
#define mbswidth gnu_mbswidth /* avoid clash with UnixWare 7.1.1 function */
extern int mbswidth PARAMS ((const char *string, int flags));
extern int mbswidth (const char *string, int flags);
/* Returns the number of screen columns needed for the NBYTES bytes
starting at BUF. */
extern int mbsnwidth PARAMS ((const char *buf, size_t nbytes, int flags));
extern int mbsnwidth (const char *buf, size_t nbytes, int flags);

View File

@@ -1,22 +1,22 @@
/* Convert a `struct tm' to a time_t value.
Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
Copyright (C) 1993-1999, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Eggert (eggert@twinsun.com).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library 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
Library General Public License for more details.
Lesser General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/* Define this to have a standalone program to test this implementation of
mktime. */
@@ -49,6 +49,7 @@
# include <stdio.h>
# if STDC_HEADERS
# include <stdlib.h>
# include <string.h>
# endif
/* Make it work even if the system's libc has its own mktime routine. */
# define mktime my_mktime
@@ -99,6 +100,9 @@
#endif
/* How many days come before each month (0-12). */
#ifndef _LIBC
static
#endif
const unsigned short int __mon_yday[2][13] =
{
/* Normal years. */
@@ -212,6 +216,9 @@ ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
Use *OFFSET to keep track of a guess at the offset of the result,
compared to what the result would be for UTC without leap seconds.
If *OFFSET's guess is correct, only one CONVERT call is needed. */
#ifndef _LIBC
static
#endif
time_t
__mktime_internal (struct tm *tp,
struct tm *(*convert) (const time_t *, struct tm *),
@@ -236,6 +243,9 @@ __mktime_internal (struct tm *tp,
int year_requested = tp->tm_year;
int isdst = tp->tm_isdst;
/* 1 if the previous probe was DST. */
int dst2;
/* Ensure that mon is in range, and set year accordingly. */
int mon_remainder = mon % 12;
int negative_mon_remainder = mon_remainder < 0;
@@ -254,6 +264,13 @@ __mktime_internal (struct tm *tp,
+ mday - 1);
int sec_requested = sec;
/* Only years after 1970 are defined.
If year is 69, it might still be representable due to
timezone differences. */
if (year < 69)
return -1;
#if LEAP_SECONDS_POSSIBLE
/* Handle out-of-range seconds specially,
since ydhms_tm_diff assumes every minute has 60 seconds. */
@@ -270,20 +287,24 @@ __mktime_internal (struct tm *tp,
tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm);
for (t = t1 = t2 = t0 + *offset;
for (t = t1 = t2 = t0 + *offset, dst2 = 0;
(dt = ydhms_tm_diff (year, yday, hour, min, sec,
ranged_convert (convert, &t, &tm)));
t1 = t2, t2 = t, t += dt)
t1 = t2, t2 = t, t += dt, dst2 = tm.tm_isdst != 0)
if (t == t1 && t != t2
&& (isdst < 0 || tm.tm_isdst < 0
|| (isdst != 0) != (tm.tm_isdst != 0)))
&& (tm.tm_isdst < 0
|| (isdst < 0
? dst2 <= (tm.tm_isdst != 0)
: (isdst != 0) != (tm.tm_isdst != 0))))
/* We can't possibly find a match, as we are oscillating
between two values. The requested time probably falls
within a spring-forward gap of size DT. Follow the common
practice in this case, which is to return a time that is DT
away from the requested time, preferring a time whose
tm_isdst differs from the requested value. In practice,
this is more useful than returning -1. */
tm_isdst differs from the requested value. (If no tm_isdst
was requested and only one of the two values has a nonzero
tm_isdst, prefer that value.) In practice, this is more
useful than returning -1. */
break;
else if (--remaining_probes == 0)
return -1;
@@ -357,6 +378,14 @@ __mktime_internal (struct tm *tp,
return -1;
}
if (year == 69)
{
/* If year was 69, need to check whether the time was representable
or not. */
if (t < 0 || t > 2 * 24 * 60 * 60)
return -1;
}
*tp = tm;
return t;
}
@@ -382,6 +411,11 @@ mktime (tp)
#ifdef weak_alias
weak_alias (mktime, timelocal)
#endif
#ifdef _LIBC
libc_hidden_def (mktime)
libc_hidden_weak (timelocal)
#endif
#if DEBUG

View File

@@ -1,5 +1,5 @@
/* mountlist.c -- return a list of mounted filesystems
Copyright (C) 1991, 1992, 1997-2001 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1997-2002 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
@@ -136,6 +136,7 @@ extern int errno;
# include <sys/mntent.h>
#endif
#undef MNT_IGNORE
#if defined MNTOPT_IGNORE && defined HAVE_HASMNTOPT
# define MNT_IGNORE(M) hasmntopt ((M), MNTOPT_IGNORE)
#else

View File

@@ -1,5 +1,5 @@
/* mountlist.h -- declarations for list of mounted filesystems
Copyright (C) 1991, 1992, 1998, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1998, 2000-2002 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
@@ -39,8 +39,7 @@ struct mount_entry *read_filesystem_list PARAMS ((int need_fs_type));
#ifndef ME_DUMMY
# define ME_DUMMY(Fs_name, Fs_type) \
(!strcmp (Fs_type, "auto") \
|| !strcmp (Fs_type, "autofs") \
(!strcmp (Fs_type, "autofs") \
/* for Irix 6.5 */ \
|| !strcmp (Fs_type, "ignore"))
#endif

View File

@@ -1,22 +1,18 @@
/* obstack.c - subroutines used implicitly by object stack macros
Copyright (C) 1988-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
Copyright (C) 1988-1994, 1996-1999, 2000-2002 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.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
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
Lesser General Public License for more details.
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 Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
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. */
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -458,16 +454,13 @@ _obstack_memory_used (h)
}
/* Define the error handler. */
# ifndef _
# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
# include <libintl.h>
# ifndef _
# define _(Str) gettext (Str)
# endif
# else
# define _(Str) (Str)
# endif
# ifdef _LIBC
# include <libintl.h>
# else
# include "gettext.h"
# endif
# define _(msgid) gettext (msgid)
# if defined _LIBC && defined USE_IN_LIBIO
# include <libio/iolibio.h>
# define fputs(s, f) _IO_fputs (s, f)

View File

@@ -368,12 +368,12 @@ extern int obstack_exit_failure;
# define obstack_object_size(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
({ struct obstack const *__o = (OBSTACK); \
(unsigned) (__o->next_free - __o->object_base); })
# define obstack_room(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
({ struct obstack const *__o = (OBSTACK); \
(unsigned) (__o->chunk_limit - __o->next_free); })
# define obstack_make_room(OBSTACK,length) \
@@ -386,7 +386,7 @@ __extension__ \
# define obstack_empty_p(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
({ struct obstack const *__o = (OBSTACK); \
(__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
# define obstack_grow(OBSTACK,where,length) \

3
lib/offtostr.c Normal file
View File

@@ -0,0 +1,3 @@
#define inttostr offtostr
#define inttype off_t
#include "inttostr.c"

View File

@@ -22,6 +22,12 @@
# include <config.h>
#endif
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
typedef enum {false = 0, true = 1} bool;
#endif
#include <stdio.h>
#if HAVE_STDLIB_H
# include <stdlib.h>
@@ -51,9 +57,6 @@
of `digit' even when the host does not conform to POSIX. */
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
/* The return value. */
static struct tm t;
time_t mktime ();
/*
@@ -74,26 +77,23 @@ time_t mktime ();
*/
static int
year (const int *digit_pair, size_t n, int allow_century)
year (struct tm *tm, const int *digit_pair, size_t n, int allow_century)
{
switch (n)
{
case 1:
t.tm_year = *digit_pair;
tm->tm_year = *digit_pair;
/* Deduce the century based on the year.
POSIX requires that 00-68 be interpreted as 2000-2068,
and that 69-99 be interpreted as 1969-1999. */
if (digit_pair[0] <= 68)
t.tm_year += 100;
tm->tm_year += 100;
break;
case 2:
if (!allow_century)
return 1;
t.tm_year = digit_pair[0] * 100 + digit_pair[1];
if (t.tm_year < 1900)
return 1;
t.tm_year -= 1900;
tm->tm_year = digit_pair[0] * 100 + digit_pair[1] - 1900;
break;
case 0:
@@ -104,7 +104,9 @@ year (const int *digit_pair, size_t n, int allow_century)
/* Use current year. */
time (&now);
tmp = localtime (&now);
t.tm_year = tmp->tm_year;
if (! tmp)
return 1;
tm->tm_year = tmp->tm_year;
}
break;
@@ -116,7 +118,7 @@ year (const int *digit_pair, size_t n, int allow_century)
}
static int
posix_time_parse (const char *s, unsigned int syntax_bits)
posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits)
{
const char *dot = NULL;
int pair[6];
@@ -151,44 +153,30 @@ posix_time_parse (const char *s, unsigned int syntax_bits)
p = pair;
if (syntax_bits & PDS_LEADING_YEAR)
{
if (year (p, len - 4, syntax_bits & PDS_CENTURY))
if (year (tm, p, len - 4, syntax_bits & PDS_CENTURY))
return 1;
p += len - 4;
len = 4;
}
/* Handle 8 digits worth of `MMDDhhmm'. */
if (*p < 1 || *p > 12)
return 1;
t.tm_mon = *p - 1;
++p; --len;
if (*p < 1 || *p > 31)
return 1;
t.tm_mday = *p;
++p; --len;
if (*p < 0 || *p > 23)
return 1;
t.tm_hour = *p;
++p; --len;
if (*p < 0 || *p > 59)
return 1;
t.tm_min = *p;
++p; --len;
tm->tm_mon = *p++ - 1;
tm->tm_mday = *p++;
tm->tm_hour = *p++;
tm->tm_min = *p++;
len -= 4;
/* Handle any trailing year. */
if (syntax_bits & PDS_TRAILING_YEAR)
{
if (year (p, len, syntax_bits & PDS_CENTURY))
if (year (tm, p, len, syntax_bits & PDS_CENTURY))
return 1;
}
/* Handle seconds. */
if (!dot)
{
t.tm_sec = 0;
tm->tm_sec = 0;
}
else
{
@@ -199,34 +187,51 @@ posix_time_parse (const char *s, unsigned int syntax_bits)
return 1;
seconds = 10 * (dot[0] - '0') + dot[1] - '0';
if (seconds < 0 || seconds > 61)
return 1;
t.tm_sec = seconds;
tm->tm_sec = seconds;
}
return 0;
}
/* Parse a POSIX-style date and return it, or (time_t)-1 for an error. */
/* Parse a POSIX-style date, returning true if successful. */
time_t
posixtime (const char *s, unsigned int syntax_bits)
bool
posixtime (time_t *p, const char *s, unsigned int syntax_bits)
{
t.tm_isdst = -1;
if (posix_time_parse (s, syntax_bits))
return (time_t)-1;
struct tm tm0;
struct tm tm1;
struct tm const *tm;
time_t t;
if (posix_time_parse (&tm0, s, syntax_bits))
return false;
tm1 = tm0;
tm1.tm_isdst = -1;
t = mktime (&tm1);
if (t != (time_t) -1)
tm = &tm1;
else
return mktime (&t);
}
{
/* mktime returns -1 for errors, but -1 is also a valid time_t
value. Check whether an error really occurred. */
tm = localtime (&t);
if (! tm)
return false;
}
/* Parse a POSIX-style date and return it, or NULL for an error. */
/* Reject dates like "September 31" and times like "25:61". */
if ((tm0.tm_year ^ tm->tm_year)
| (tm0.tm_mon ^ tm->tm_mon)
| (tm0.tm_mday ^ tm->tm_mday)
| (tm0.tm_hour ^ tm->tm_hour)
| (tm0.tm_min ^ tm->tm_min)
| (tm0.tm_sec ^ tm->tm_sec))
return false;
struct tm *
posixtm (const char *s, unsigned int syntax_bits)
{
if (posixtime (s, syntax_bits) == -1)
return NULL;
return &t;
*p = t;
return true;
}
#ifdef TEST_POSIXTIME
@@ -234,20 +239,58 @@ posixtm (const char *s, unsigned int syntax_bits)
Test mainly with syntax_bits == 13
(aka: (PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS))
BEGIN-DATA
1112131415 13 1323807300 Tue Dec 13 14:15:00 2011
1112131415.16 13 1323807316 Tue Dec 13 14:15:16 2011
201112131415.16 13 1323807316 Tue Dec 13 14:15:16 2011
191112131415.16 13 -1 ***
203712131415.16 13 2144348116 Sun Dec 13 14:15:16 2037
3712131415.16 13 2144348116 Sun Dec 13 14:15:16 2037
6812131415.16 13 -1 ***
6912131415.16 13 -1 ***
7012131415.16 13 29967316 Sun Dec 13 14:15:16 1970
12131415.16 13 913580116 Sun Dec 13 14:15:16 1998
This test data assumes Universal Time, e.g., TZ="UTC0".
1213141599 2 945116100 Mon Dec 13 14:15:00 1999
1213141500 2 976738500 Wed Dec 13 14:15:00 2000
This test data also assumes that time_t is signed and is at least
39 bits wide, so that it can represent all years from 0000 through
9999. A host with 32-bit signed time_t can represent only time
stamps in the range 1901-12-13 20:45:52 through 2038-01-18
03:14:07 UTC, assuming POSIX time_t with no leap seconds, so test
cases outside this range will not work on such a host.
Also, the first two lines of test data assume that the current
year is 2002.
BEGIN-DATA
12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002
12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002
000001010000.00 13 -62167132800 Sun Jan 1 00:00:00 0000
190112132045.52 13 -2147483648 Fri Dec 13 20:45:52 1901
190112132045.53 13 -2147483647 Fri Dec 13 20:45:53 1901
190112132046.52 13 -2147483588 Fri Dec 13 20:46:52 1901
190112132145.52 13 -2147480048 Fri Dec 13 21:45:52 1901
190112142045.52 13 -2147397248 Sat Dec 14 20:45:52 1901
190201132045.52 13 -2144805248 Mon Jan 13 20:45:52 1902
196912312359.59 13 -1 Wed Dec 31 23:59:59 1969
197001010000.00 13 0 Thu Jan 1 00:00:00 1970
197001010000.01 13 1 Thu Jan 1 00:00:01 1970
197001010001.00 13 60 Thu Jan 1 00:01:00 1970
197001010100.00 13 3600 Thu Jan 1 01:00:00 1970
197001020000.00 13 86400 Fri Jan 2 00:00:00 1970
197002010000.00 13 2678400 Sun Feb 1 00:00:00 1970
197101010000.00 13 31536000 Fri Jan 1 00:00:00 1971
197001000000.00 13 * *
197000010000.00 13 * *
197001010000.60 13 * *
197001010060.00 13 * *
197001012400.00 13 * *
197001320000.00 13 * *
197013010000.00 13 * *
203801190314.06 13 2147483646 Tue Jan 19 03:14:06 2038
203801190314.07 13 2147483647 Tue Jan 19 03:14:07 2038
203801190314.08 13 2147483648 Tue Jan 19 03:14:08 2038
999912312359.59 13 253402300799 Fri Dec 31 23:59:59 9999
1112131415 13 1323785700 Tue Dec 13 14:15:00 2011
1112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011
201112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011
191112131415.16 13 -1831974284 Wed Dec 13 14:15:16 1911
203712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037
3712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037
6812131415.16 13 3122633716 Thu Dec 13 14:15:16 2068
6912131415.16 13 -1590284 Sat Dec 13 14:15:16 1969
7012131415.16 13 29945716 Sun Dec 13 14:15:16 1970
1213141599 2 945094500 Mon Dec 13 14:15:00 1999
1213141500 2 976716900 Wed Dec 13 14:15:00 2000
END-DATA
*/
@@ -265,13 +308,24 @@ main ()
char time_str[MAX_BUFF_LEN];
unsigned int syntax_bits;
time_t t;
char *result;
sscanf (buff, "%s %u", time_str, &syntax_bits);
t = posixtime (time_str, syntax_bits);
result = (t == (time_t) -1 ? "***" : ctime (&t));
printf ("%d %s\n", (int) t, result);
if (sscanf (buff, "%s %u", time_str, &syntax_bits) != 2)
printf ("*\n");
else
{
printf ("%-15s %2u ", time_str, syntax_bits);
if (posixtime (&t, time_str, syntax_bits))
printf ("%12ld %s", (long) t, ctime (&t));
else
printf ("%12s %s", "*", "*\n");
}
}
exit (0);
}
#endif
/*
Local Variables:
compile-command: "gcc -DTEST_POSIXTIME -DHAVE_CONFIG_H -I.. -g -O -Wall -W posixtm.c"
End:
*/

View File

@@ -15,10 +15,7 @@
# endif
# endif
time_t
posixtime PARAMS ((const char *s, unsigned int syntax_bits));
struct tm *
posixtm PARAMS ((const char *s, unsigned int syntax_bits));
bool
posixtime PARAMS ((time_t *p, const char *s, unsigned int syntax_bits));
#endif

View File

@@ -1,3 +1,20 @@
/* quote.c - quote arguments for output
Copyright (C) 1998, 1999, 2000, 2001 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 Paul Eggert <eggert@twinsun.com> */
#if HAVE_CONFIG_H
@@ -8,8 +25,8 @@
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
#endif
#include <sys/types.h>
#include <quotearg.h>
#include <quote.h>
#include "quotearg.h"
#include "quote.h"
/* Return an unambiguous printable representated, allocated in slot N,
for NAME, suitable for diagnostics. */

View File

@@ -1,4 +1,20 @@
/* prototypes for quote.c */
/* quote.h - prototypes for quote.c
Copyright (C) 1998, 1999, 2000, 2001 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. */
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)

View File

@@ -21,52 +21,19 @@
# include <config.h>
#endif
#if HAVE_STDDEF_H
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
#endif
#include <sys/types.h>
#include <quotearg.h>
#include <xalloc.h>
#include "quotearg.h"
#include "xalloc.h"
#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#if ENABLE_NLS
# include <libintl.h>
# define _(text) gettext (text)
#else
# define _(text) text
#endif
#define N_(text) text
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif
#ifndef UCHAR_MAX
# define UCHAR_MAX ((unsigned char) -1)
#endif
#ifndef UINT_MAX
# define UINT_MAX ((unsigned int) -1)
#endif
#if HAVE_C_BACKSLASH_A
# define ALERT_CHAR '\a'
#else
# define ALERT_CHAR '\7'
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#if HAVE_STRING_H
# include <string.h>
#endif
#include "gettext.h"
#define _(msgid) gettext (msgid)
#define N_(msgid) msgid
#if HAVE_WCHAR_H
@@ -84,8 +51,12 @@
# undef MB_CUR_MAX
# define MB_CUR_MAX 1
# define mbrtowc(pwc, s, n, ps) ((*(pwc) = *(s)) != 0)
# define iswprint(wc) isprint ((unsigned char) (wc))
# undef HAVE_MBSINIT
#endif
#if !defined mbsinit && !HAVE_MBSINIT
# define mbsinit(ps) 1
# define iswprint(wc) ISPRINT ((unsigned char) (wc))
#endif
#ifndef iswprint
@@ -97,17 +68,11 @@
# endif
#endif
#define INT_BITS (sizeof (int) * CHAR_BIT)
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
#else
# define IN_CTYPE_DOMAIN(c) isascii(c)
#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif
/* Undefine to protect against the definition in wctype.h of solaris2.6. */
#undef ISPRINT
#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c))
#define INT_BITS (sizeof (int) * CHAR_BIT)
struct quoting_options
{
@@ -153,9 +118,10 @@ static struct quoting_options default_quoting_options;
struct quoting_options *
clone_quoting_options (struct quoting_options *o)
{
struct quoting_options *p
= (struct quoting_options *) xmalloc (sizeof (struct quoting_options));
int e = errno;
struct quoting_options *p = xmalloc (sizeof *p);
*p = *(o ? o : &default_quoting_options);
errno = e;
return p;
}
@@ -287,7 +253,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
break;
}
for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++)
for (i = 0; ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize); i++)
{
unsigned char c;
unsigned char esc;
@@ -326,8 +292,8 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
case '<': case '=': case '>':
/* Escape the second '?' in what would otherwise be
a trigraph. */
i += 2;
c = arg[i + 2];
i += 2;
STORE ('?');
STORE ('\\');
STORE ('?');
@@ -340,7 +306,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
}
break;
case ALERT_CHAR: esc = 'a'; goto c_escape;
case '\a': esc = 'a'; goto c_escape;
case '\b': esc = 'b'; goto c_escape;
case '\f': esc = 'f'; goto c_escape;
case '\n': esc = 'n'; goto c_and_shell_escape;
@@ -428,7 +394,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
if (unibyte_locale)
{
m = 1;
printable = ISPRINT (c);
printable = isprint (c);
}
else
{
@@ -437,7 +403,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
m = 0;
printable = 1;
if (argsize == (size_t) -1)
if (argsize == SIZE_MAX)
argsize = strlen (arg);
do
@@ -533,8 +499,11 @@ quotearg_buffer (char *buffer, size_t buffersize,
struct quoting_options const *o)
{
struct quoting_options const *p = o ? o : &default_quoting_options;
return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
p->style, p);
int e = errno;
size_t r = quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
p->style, p);
errno = e;
return r;
}
/* Use storage slot N to return a quoted version of argument ARG.
@@ -548,6 +517,8 @@ static char *
quotearg_n_options (int n, char const *arg, size_t argsize,
struct quoting_options const *options)
{
int e = errno;
/* Preallocate a slot 0 buffer, so that the caller can always quote
one small component of a "memory exhausted" message in slot 0. */
static char slot0[256];
@@ -575,10 +546,10 @@ quotearg_n_options (int n, char const *arg, size_t argsize,
if (slotvec == &slotvec0)
{
slotvec = (struct slotvec *) xmalloc (sizeof *slotvec);
slotvec = xmalloc (sizeof *slotvec);
*slotvec = slotvec0;
}
slotvec = (struct slotvec *) xrealloc (slotvec, s);
slotvec = xrealloc (slotvec, s);
memset (slotvec + nslots, 0, (n1 - nslots) * sizeof *slotvec);
nslots = n1;
}
@@ -595,6 +566,7 @@ quotearg_n_options (int n, char const *arg, size_t argsize,
quotearg_buffer (val, size, arg, argsize, options);
}
errno = e;
return val;
}
}
@@ -602,7 +574,7 @@ quotearg_n_options (int n, char const *arg, size_t argsize,
char *
quotearg_n (int n, char const *arg)
{
return quotearg_n_options (n, arg, (size_t) -1, &default_quoting_options);
return quotearg_n_options (n, arg, SIZE_MAX, &default_quoting_options);
}
char *
@@ -625,7 +597,7 @@ char *
quotearg_n_style (int n, enum quoting_style s, char const *arg)
{
struct quoting_options const o = quoting_options_from_style (s);
return quotearg_n_options (n, arg, (size_t) -1, &o);
return quotearg_n_options (n, arg, SIZE_MAX, &o);
}
char *
@@ -648,7 +620,7 @@ quotearg_char (char const *arg, char ch)
struct quoting_options options;
options = default_quoting_options;
set_char_quoting (&options, ch, 1);
return quotearg_n_options (0, arg, (size_t) -1, &options);
return quotearg_n_options (0, arg, SIZE_MAX, &options);
}
char *

View File

@@ -1,5 +1,7 @@
/* quotearg.h - quote arguments for output
Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000, 2001, 2002 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
@@ -17,6 +19,11 @@
/* Written by Paul Eggert <eggert@twinsun.com> */
#ifndef QUOTEARG_H_
# define QUOTEARG_H_ 1
# include <stddef.h>
/* Basic quoting styles. */
enum quoting_style
{
@@ -30,9 +37,9 @@ enum quoting_style
};
/* For now, --quoting-style=literal is the default, but this may change. */
#ifndef DEFAULT_QUOTING_STYLE
# define DEFAULT_QUOTING_STYLE literal_quoting_style
#endif
# ifndef DEFAULT_QUOTING_STYLE
# define DEFAULT_QUOTING_STYLE literal_quoting_style
# endif
/* Names of quoting styles and their corresponding values. */
extern char const *const quoting_style_args[];
@@ -40,37 +47,27 @@ extern enum quoting_style const quoting_style_vals[];
struct quoting_options;
#ifndef PARAMS
# if defined PROTOTYPES || defined __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
/* The functions listed below set and use a hidden variable
that contains the default quoting style options. */
/* Allocate a new set of quoting options, with contents initially identical
to O if O is not null, or to the default if O is null.
It is the caller's responsibility to free the result. */
struct quoting_options *clone_quoting_options
PARAMS ((struct quoting_options *o));
struct quoting_options *clone_quoting_options (struct quoting_options *o);
/* Get the value of O's quoting style. If O is null, use the default. */
enum quoting_style get_quoting_style PARAMS ((struct quoting_options *o));
enum quoting_style get_quoting_style (struct quoting_options *o);
/* In O (or in the default if O is null),
set the value of the quoting style to S. */
void set_quoting_style PARAMS ((struct quoting_options *o,
enum quoting_style s));
void set_quoting_style (struct quoting_options *o, enum quoting_style s);
/* In O (or in the default if O is null),
set the value of the quoting options for character C to I.
Return the old value. Currently, the only values defined for I are
0 (the default) and 1 (which means to quote the character even if
it would not otherwise be quoted). */
int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i));
int set_char_quoting (struct quoting_options *o, char c, int i);
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
argument ARG (of size ARGSIZE), using O to control quoting.
@@ -80,35 +77,38 @@ int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i));
If BUFFERSIZE is too small to store the output string, return the
value that would have been returned had BUFFERSIZE been large enough.
If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */
size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize,
char const *arg, size_t argsize,
struct quoting_options const *o));
size_t quotearg_buffer (char *buffer, size_t buffersize,
char const *arg, size_t argsize,
struct quoting_options const *o);
/* Use storage slot N to return a quoted version of the string ARG.
Use the default quoting options.
The returned value points to static storage that can be
reused by the next call to this function with the same value of N.
N must be nonnegative. */
char *quotearg_n PARAMS ((int n, char const *arg));
char *quotearg_n (int n, char const *arg);
/* Equivalent to quotearg_n (0, ARG). */
char *quotearg PARAMS ((char const *arg));
char *quotearg (char const *arg);
/* Use style S and storage slot N to return a quoted version of the string ARG.
This is like quotearg_n (N, ARG), except that it uses S with no other
options to specify the quoting method. */
char *quotearg_n_style PARAMS ((int n, enum quoting_style s, char const *arg));
char *quotearg_n_style (int n, enum quoting_style s, char const *arg);
/* Use style S and storage slot N to return a quoted version of the
argument ARG of size ARGSIZE. This is like quotearg_n_style
(N, S, ARG), except it can quote null bytes. */
char *quotearg_n_style_mem PARAMS ((int n, enum quoting_style s,
char const *arg, size_t argsize));
char *quotearg_n_style_mem (int n, enum quoting_style s,
char const *arg, size_t argsize);
/* Equivalent to quotearg_n_style (0, S, ARG). */
char *quotearg_style PARAMS ((enum quoting_style s, char const *arg));
char *quotearg_style (enum quoting_style s, char const *arg);
/* Like quotearg (ARG), except also quote any instances of CH. */
char *quotearg_char PARAMS ((char const *arg, char ch));
char *quotearg_char (char const *arg, char ch);
/* Equivalent to quotearg_char (ARG, ':'). */
char *quotearg_colon PARAMS ((char const *arg));
char *quotearg_colon (char const *arg);
#endif /* !QUOTEARG_H_ */

View File

@@ -1,5 +1,5 @@
/* stime -- set the system clock
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
/* Provide a non-threads replacement for the POSIX raise function.
Copyright (C) 2002 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
@@ -15,24 +15,22 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* David MacKenzie <djm@ai.mit.edu> */
/* written by Jim Meyering */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <config.h>
/* Undefine raise here so any system prototype is not redefined
to be a prototype for rpl_raise. */
#undef raise
#include <sys/types.h>
#include <sys/time.h>
/* Set the system time to *WHEN seconds past the start of 1970 GMT. */
#include <signal.h>
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
int
stime (when)
time_t *when;
rpl_raise (int sig)
{
struct timeval tv;
tv.tv_sec = *when;
tv.tv_usec = 0;
return settimeofday (&tv, (struct timezone *) 0);
return kill (getpid (), sig);
}

View File

@@ -1,5 +1,5 @@
/* readtokens.c -- Functions for reading tokens from an input stream.
Copyright (C) 1990-1991, 1999, 2001 Jim Meyering.
Copyright (C) 1990-1991, 1999, 2001, 2003 Jim Meyering.
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
@@ -113,7 +113,7 @@ readtoken (FILE *stream,
for (j = 0; j < sizeof (isdelim); j++)
isdelim[j] = 0;
for (t = delim; *t; t++)
isdelim[(unsigned int) *t] = 1;
isdelim[(unsigned char) *t] = 1;
}
p = tokenbuffer->buffer;

View File

@@ -1,5 +1,5 @@
/* GNU's read utmp module.
Copyright (C) 1992-2001 Free Software Foundation, Inc.
Copyright (C) 1992-2001, 2003 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,11 +29,15 @@
# include <strings.h>
#endif /* STDC_HEADERS || HAVE_STRING_H */
#if STDC_HEADERS
# include <stdlib.h>
#else
void *realloc ();
#endif
#include "readutmp.h"
#include "unlocked-io.h"
char *xmalloc ();
char *realloc ();
#include "xalloc.h"
/* Copy UT->ut_name into storage obtained from malloc. Then remove any
trailing spaces from the copy, NUL terminate it, and return the copy. */

Some files were not shown because too many files have changed in this diff Show More