Compare commits

...

1349 Commits

Author SHA1 Message Date
Jim Meyering
50326157d9 remove const attribute for PARENTS 2000-11-01 17:53:35 +00:00
Jim Meyering
9e9f0846f8 Fix bad typo! free the string, PARENTS, not the function, dir_name. 2000-11-01 17:52:43 +00:00
Jim Meyering
09917b2b9a *** empty log message *** 2000-11-01 17:33:19 +00:00
Jim Meyering
02080dd37e (main): Better diagnostics. 2000-11-01 17:33:09 +00:00
Jim Meyering
039653dde5 *** empty log message *** 2000-10-31 22:03:47 +00:00
Jim Meyering
144bbe26ac Clean up indentation and punctuation.
Fix a couple typos.  From Brian Youmans.
2000-10-31 22:03:42 +00:00
Jim Meyering
933e0997e2 Add all the internationalization-related
variable names autoconf uses.  Set and export them in a loop.
2000-10-31 19:33:30 +00:00
Jim Meyering
8f90ed0f42 *** empty log message *** 2000-10-31 19:29:22 +00:00
Jim Meyering
96380f703c *** empty log message *** 2000-10-31 19:29:05 +00:00
Jim Meyering
40709c446a *** empty log message *** 2000-10-31 19:26:32 +00:00
Jim Meyering
c8da0cbba6 `mkdir -p' would create parent directories with permissions
that did not account for the umask. [introduced with the
2000-09-30 change that became part of fileutils-4.0.28]

Include dirname.h.
Compute the parent directory `mode' unconditionally, effectively
as `$(umask -S),u+wx'.
Use make_path to create only the parent directories, thus using
the same code, both with and without -p, to create the final
component in each file name.  Reported by Bob Proulx.
2000-10-31 19:25:50 +00:00
Jim Meyering
575f5c2f24 *** empty log message *** 2000-10-31 10:46:30 +00:00
Jim Meyering
662a4f705c Much improved.
Run each test also with mkdir's `-p' option and check permissions
on the parent directories.
2000-10-31 10:46:24 +00:00
Jim Meyering
ae53a3e4da use backticks and sed instead of set and shift 2000-10-31 08:31:30 +00:00
Jim Meyering
a5385f0a5f *** empty log message *** 2000-10-31 08:12:38 +00:00
Jim Meyering
b8e83dda2b Add some permission tests. 2000-10-31 08:12:28 +00:00
Jim Meyering
577627b257 Fix the test so it actually does something.
Run each test also with mkdir's `-p' option.
2000-10-31 07:57:29 +00:00
Jim Meyering
7e7943c979 *** empty log message *** 2000-10-31 07:15:54 +00:00
Jim Meyering
1734d51c53 Use @sc where appropriate. Document the
ranges of supported times more precisely.  Correct menu
spacing.  Document old Latin 12m/12pm tradition.  Remove list
of alphabetic time zone names, as it wasn't correct and people
shouldn't be relying on it anyway.  Relative items also
account for non-DST adjustments.  Fix some misspellings.
2000-10-31 07:15:42 +00:00
Jim Meyering
8686e2bf77 *** empty log message *** 2000-10-31 07:10:03 +00:00
Jim Meyering
5a6effff70 Add "2000" to Copyright line, as this file was changed this year. 2000-10-31 07:09:56 +00:00
Jim Meyering
a5810cd3de Remove "2000" from Copyright line, as the file hasn't been
changed this year other than in the copyright notice.
2000-10-31 07:09:40 +00:00
Jim Meyering
3a1f0aa8d5 Remove "2000" from Copyright line, as the file hasn't been
changed this year other than in the copyright notice.
2000-10-31 07:09:02 +00:00
Jim Meyering
462d532cd5 *** empty log message *** 2000-10-31 07:07:26 +00:00
Jim Meyering
3adf8ab9c6 (FOLD): Do not assume that characters are unsigned.
(fnmatch): Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
2000-10-31 07:07:05 +00:00
Jim Meyering
16b7a20d01 . 2000-10-30 17:52:42 +00:00
Jim Meyering
f32a1186bc . 2000-10-30 17:51:06 +00:00
Jim Meyering
2689e0a07c *** empty log message *** 2000-10-30 17:50:29 +00:00
Jim Meyering
9d7b428daa *** empty log message *** 2000-10-30 17:50:03 +00:00
Jim Meyering
f177ed1332 *** empty log message *** 2000-10-30 15:59:20 +00:00
Jim Meyering
ad3a1fbb82 Include "system.h" after wctype.h (not before) to avoid
a compilation error on Solaris 5.5.1 systems.
2000-10-30 15:58:59 +00:00
Jim Meyering
82cd6af9bc *** empty log message *** 2000-10-29 22:43:51 +00:00
Jim Meyering
971d190dc4 s/AC_SHELL_IFELSE/AS_IFELSE/ to match autoconf renaming. 2000-10-29 22:43:08 +00:00
Jim Meyering
05fc0219ad fix typo: s/fseek0/fseeko/ 2000-10-29 17:19:51 +00:00
Jim Meyering
aeb6f5e5f3 *** empty log message *** 2000-10-29 15:37:00 +00:00
Jim Meyering
f055dbe669 *** empty log message *** 2000-10-29 13:50:25 +00:00
Jim Meyering
55408e0307 (__restrict_arr): Move definition out of #ifndef block.
Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but
doesn't define __restrict_arr.
2000-10-29 13:49:56 +00:00
Jim Meyering
0dd327c851 . 2000-10-29 12:36:19 +00:00
Jim Meyering
1f60246c8b *** empty log message *** 2000-10-29 12:34:43 +00:00
Jim Meyering
76be42eef0 *** empty log message *** 2000-10-29 12:34:19 +00:00
Jim Meyering
018d1056e0 *** empty log message *** 2000-10-29 12:33:53 +00:00
Jim Meyering
17b6fd61c3 *** empty log message *** 2000-10-29 12:25:21 +00:00
Jim Meyering
03e6d30ae7 *** empty log message *** 2000-10-29 12:25:07 +00:00
Jim Meyering
78abfe5da3 (do_copy): When constructing dst_path for use with the
--parents option, first remove any trailing slashes from the command
line argument.  Otherwise, tests/cp/cp-parent would fail on NetBSD.
2000-10-29 12:25:03 +00:00
Jim Meyering
ffb5b5a2ad *** empty log message *** 2000-10-29 11:03:18 +00:00
Jim Meyering
12eea70d7d Fix grammar in comment. 2000-10-29 11:03:01 +00:00
Jim Meyering
9ffd4ae3df *** empty log message *** 2000-10-29 08:05:00 +00:00
Jim Meyering
c487c2b929 *** empty log message *** 2000-10-29 08:04:22 +00:00
Jim Meyering
fe62a85366 Add a test. 2000-10-29 08:04:17 +00:00
Jim Meyering
4b4c8534e6 *** empty log message *** 2000-10-29 07:55:27 +00:00
Jim Meyering
e716f459a5 *** empty log message *** 2000-10-29 07:50:07 +00:00
Jim Meyering
013d63bb67 (DT_INIT): Define.
[enum filetype]: Remove the #ifdef, and use DT_INIT on the
initializers instead.
2000-10-29 07:49:35 +00:00
Jim Meyering
f604c52243 (LC_COLLATE): Set it to the empty string and
export it.  Otherwise, tests/cp/cp-mv-backup would fail e.g., when
LC_COLLATE was set to en.  Reported by Vin Shelton.
2000-10-29 07:38:13 +00:00
Jim Meyering
e321b0bd06 [enum filetype] (arg_directory): Rather than `100', use
a number that should never conflict with another DT_* value.
From Ulrich Drepper.
2000-10-28 18:00:57 +00:00
Jim Meyering
007b5b4ba8 (main): In call to gobble_file with "."', use directory'
as the type, not `unknown'.  From Ulrich Drepper.
2000-10-28 17:58:25 +00:00
Jim Meyering
c58f8e0f80 *** empty log message *** 2000-10-28 13:50:23 +00:00
Jim Meyering
328bfd1fb7 Disable this test by default; it's expensive.
Mark this as an expensive test.
2000-10-28 13:50:14 +00:00
Jim Meyering
a3f0f65334 *this* is not an expensive test 2000-10-28 13:49:43 +00:00
Jim Meyering
0a2ef3619c *** empty log message *** 2000-10-28 13:39:20 +00:00
Jim Meyering
5854bc4e0c *** empty log message *** 2000-10-28 13:38:52 +00:00
Jim Meyering
429ea1bad3 *** empty log message *** 2000-10-28 13:12:02 +00:00
Jim Meyering
efde89cc27 *** empty log message *** 2000-10-28 13:11:43 +00:00
Jim Meyering
d4d8f86b15 *** empty log message *** 2000-10-28 12:53:50 +00:00
Jim Meyering
69254ed7d2 Factor out the expensive-test-checking code, ... 2000-10-28 12:53:27 +00:00
Jim Meyering
7b86692737 Mark this as an expensive test. 2000-10-28 12:51:40 +00:00
Jim Meyering
c82dbabbea *** empty log message *** 2000-10-28 12:50:13 +00:00
Jim Meyering
3bd2a88618 source lang-default before the first `cd' 2000-10-28 12:46:59 +00:00
Jim Meyering
4c5cf8b144 source lang-default before the first `cd' 2000-10-28 12:36:37 +00:00
Jim Meyering
d1033dc2b9 source lang-default before the first `cd' 2000-10-28 12:36:17 +00:00
Jim Meyering
a36e91c826 source lang-default before changing directory 2000-10-28 12:33:26 +00:00
Jim Meyering
e9bcabbf05 *** empty log message *** 2000-10-28 12:29:54 +00:00
Jim Meyering
20d893e3e2 (jm_PREREQ): Add jm_PREREQ_MEMCHR.
(jm_PREREQ_MEMCHR): New function.
2000-10-28 12:29:45 +00:00
Jim Meyering
3610481c97 *** empty log message *** 2000-10-28 12:19:05 +00:00
Jim Meyering
b4c60a84e1 *** empty log message *** 2000-10-28 12:18:31 +00:00
Jim Meyering
a67cbceb5a Make `ls' a lot more efficient on systems (e.g., linux-2.4.*)
that save file type information in directory entries.

[enum filetype] (unknown):
Add members (as yet unused):
(HAVE_STRUCT_DIRENT_D_TYPE): Define.
(format_needs_type): New global.
(main): Set it.
(print_dir): Set `type' from directory entry, if possible.
(gobble_file): Add a parameter, TYPE.
Stat the file only if its type is unknown and we need the type.
Patch from Ulrich Drepper.
2000-10-28 12:18:21 +00:00
Jim Meyering
71a47cd7bb *** empty log message *** 2000-10-28 12:00:14 +00:00
Jim Meyering
8f945ecf3a *** empty log message *** 2000-10-28 11:59:34 +00:00
Jim Meyering
d7bb6bd985 *** empty log message *** 2000-10-28 11:50:00 +00:00
Jim Meyering
37c05b6267 Include assert.h.
(fillrand): Add a parameter, size_max.
Add an assertion.
Adjust caller.
(dopass): Break out of the `for (;;)' loop if size < offset.
That can happen now that dopass is called with SIZE == -1.
(do_wipefd): Accept a length of zero only for a regular file.
If lseek fails or returns 0 for a non-regular file, let dopass
determine the length.
Inspired by a patch from Alan Iwi.
2000-10-28 11:49:52 +00:00
Jim Meyering
37bcdce62a . 2000-10-28 08:25:21 +00:00
Jim Meyering
52a97ad805 Update from libc. 2000-10-28 08:24:44 +00:00
Jim Meyering
cc785dc620 *** empty log message *** 2000-10-28 08:22:17 +00:00
Jim Meyering
0f44320b83 Update from libc.
Adjust for portability:
[HAVE_STDLIB_H]: Include stdlib.h.
[HAVE_BP_SYM_H || _LIBC]: Guard inclusion of bp-sym.h.
Undef __memchr, too.
[!weak_alias]: Define __memchr to memchr.
2000-10-28 08:22:11 +00:00
Jim Meyering
3032dfa4ef *** empty log message *** 2000-10-28 07:56:40 +00:00
Jim Meyering
f199ae5181 Update from libc. 2000-10-28 07:56:12 +00:00
Jim Meyering
c2c9db2056 *** empty log message *** 2000-10-28 07:47:07 +00:00
Jim Meyering
13a9a251d8 (setusershell) [HAVE_FSEEKO]: Use fseek0.
Patch by Ulrich Drepper.
2000-10-28 07:47:04 +00:00
Jim Meyering
f0da6c980d Update from libc. 2000-10-28 07:15:32 +00:00
Jim Meyering
6673e992d4 *** empty log message *** 2000-10-26 22:36:58 +00:00
Jim Meyering
141a1086a2 (usage): Mention the time zone, UTC, and write the date
in ISO format in the description of %s.  Suggestion from Karl Berry.
2000-10-26 22:36:39 +00:00
Jim Meyering
f74e9bb483 (Authors of getdate): Add Paul Eggert. 2000-10-26 14:18:24 +00:00
Jim Meyering
a2bbbeb38f *** empty log message *** 2000-10-26 14:18:06 +00:00
Jim Meyering
f3e058b838 typo 2000-10-26 14:16:24 +00:00
Jim Meyering
9ed4fe029a . 2000-10-26 09:39:08 +00:00
Jim Meyering
49ac3c60d0 Update from libc. 2000-10-26 08:08:06 +00:00
Jim Meyering
d9ef180ae5 *** empty log message *** 2000-10-25 08:39:48 +00:00
Jim Meyering
9d29159931 Include dirname.h.
(main): Use dir_name_r rather than open-coding it.
2000-10-25 08:39:29 +00:00
Jim Meyering
342d5997cc *** empty log message *** 2000-10-25 08:36:13 +00:00
Jim Meyering
e63e45a195 (dir_name_r): Declare it. 2000-10-25 08:36:08 +00:00
Jim Meyering
6b4ccb9ba3 *** empty log message *** 2000-10-25 08:34:36 +00:00
Jim Meyering
22e86fcb3c *** empty log message *** 2000-10-25 06:01:31 +00:00
Jim Meyering
faf5915f7d cppi, on one line 2000-10-25 06:01:24 +00:00
Jim Meyering
d538aba94d Update from libc. 2000-10-25 06:00:26 +00:00
Jim Meyering
26f187aa36 *** empty log message *** 2000-10-24 08:20:17 +00:00
Jim Meyering
7e87cd0d6e (hard_locale): Revert last change -- it was simply
wrong.  That set_locale call must not have any side effects.
From Paul Eggert.
2000-10-24 08:20:13 +00:00
Jim Meyering
a20eb902b8 *** empty log message *** 2000-10-23 06:38:10 +00:00
Jim Meyering
da66e2e769 *** empty log message *** 2000-10-23 06:31:28 +00:00
Jim Meyering
963388111d *** empty log message *** 2000-10-23 06:29:30 +00:00
Jim Meyering
7499ea8154 *** empty log message *** 2000-10-23 06:28:01 +00:00
Jim Meyering
79f359ff8a Clean up version-related variables. 2000-10-23 06:27:50 +00:00
Jim Meyering
6a19cbc61b *** empty log message *** 2000-10-22 22:40:13 +00:00
Jim Meyering
9e546891f1 remove remnants of lang-default change 2000-10-22 21:24:40 +00:00
Jim Meyering
171aba014f source lang-default *before* the `cd' 2000-10-22 21:23:18 +00:00
Jim Meyering
ed3d57b572 *** empty log message *** 2000-10-22 21:13:53 +00:00
Jim Meyering
81e231a46d . 2000-10-22 21:12:59 +00:00
Jim Meyering
0622127ac6 include stdio.h 2000-10-22 21:11:53 +00:00
Jim Meyering
a76f632427 *** empty log message *** 2000-10-22 21:09:53 +00:00
Jim Meyering
bf660d1331 (md5_process_block) [OP]: Use `rol', not CYCLIC.
[CYCLIC]: Remove now-unused definition.
2000-10-22 21:09:43 +00:00
Jim Meyering
7bb9c7382f s/shasum/sha1sum/ 2000-10-22 14:40:44 +00:00
Jim Meyering
6e955cb84a *** empty log message *** 2000-10-22 14:25:12 +00:00
Jim Meyering
f08ced6c34 *** empty log message *** 2000-10-22 14:21:47 +00:00
Jim Meyering
c66278dffc renamed from shasum.c 2000-10-22 14:19:52 +00:00
Jim Meyering
ed2d4df754 renamed from shasum.x 2000-10-22 14:18:02 +00:00
Jim Meyering
1bc1a37f86 fix typo 2000-10-22 14:03:33 +00:00
Jim Meyering
674233fb72 *** empty log message *** 2000-10-22 13:17:10 +00:00
Jim Meyering
1f2219cabf (print_long_format): Wrap date format strings in _(...)
so they may be internationalized.  Suggestion from Christian Rose.
2000-10-22 13:15:22 +00:00
Jim Meyering
f0d9306c78 (make_path_private): Add a FIXME comment. 2000-10-22 13:10:20 +00:00
Jim Meyering
28c6609c86 Source lang-default rather than open-coding
the setting/exporting of LANG, LC_ALL, and LANGUAGE.
2000-10-22 13:09:28 +00:00
Jim Meyering
43c38af6a1 *** empty log message *** 2000-10-22 13:08:50 +00:00
Jim Meyering
7cbb85937a Source lang-default rather than open-coding
the setting/exporting of LANG, LC_ALL, and LANGUAGE.
2000-10-22 13:08:43 +00:00
Jim Meyering
8c61ed9ff1 . 2000-10-22 13:03:06 +00:00
Jim Meyering
6ba06cf611 *** empty log message *** 2000-10-22 13:02:40 +00:00
Jim Meyering
957f363d1d *** empty log message *** 2000-10-22 13:02:00 +00:00
Jim Meyering
38856139ea *** empty log message *** 2000-10-22 12:57:48 +00:00
Jim Meyering
206ffe5898 *** empty log message *** 2000-10-22 12:51:38 +00:00
Jim Meyering
34b462a936 . 2000-10-22 12:00:22 +00:00
Jim Meyering
82495b5d26 . 2000-10-22 11:56:18 +00:00
Jim Meyering
cf806f5d2d . 2000-10-22 11:51:50 +00:00
Jim Meyering
148e5d1b4d Factor out the differences between MD5 and SHA1,
and parameterize so this code may be used by both md5sum and the new
program, shasum.  Loosely based on a patch from Scott Miller.
2000-10-22 11:50:16 +00:00
Jim Meyering
8a149d2242 Support 8-byte integers, assuming they're printable with e.g., %lld.
Add support for printing data as unsigned
long long integers.
2000-10-22 07:33:21 +00:00
Jim Meyering
b84871a279 add missing backslash 2000-10-22 07:20:24 +00:00
Jim Meyering
807e464dec *** empty log message *** 2000-10-22 06:57:54 +00:00
Jim Meyering
1f3a6e1eb8 (O_DIRECTORY): Define, if needed.
(save_cwd) [HAVE_FCHDIR]: Use O_DIRECTORY when opening ".".
Suggestion from Ulrich Drepper.
2000-10-22 06:57:42 +00:00
Jim Meyering
a48426382d *** empty log message *** 2000-10-22 06:50:02 +00:00
Jim Meyering
77ad7205cb *** empty log message *** 2000-10-22 06:43:52 +00:00
Jim Meyering
c599760ff1 2000-10-21 20:07:49 +00:00
Jim Meyering
e563a1a5b5 . 2000-10-21 20:07:03 +00:00
Jim Meyering
4e329a1473 *** empty log message *** 2000-10-21 20:01:28 +00:00
Jim Meyering
fd717e8d45 *** empty log message *** 2000-10-21 20:00:37 +00:00
Jim Meyering
13e80acf07 The command, `yes ''|./cat -n' would stop printing after INT_MAX lines.
(cat): Never let `newlines' exceed 3.
2000-10-21 19:57:41 +00:00
Jim Meyering
51e2ffc524 Prevent a counter buffer overrun when numbering lines and when
processing 100 billion lines (or more) of input.

(LINE_COUNTER_BUF_LEN): Define to allow numbering as
many as 10^18 - 1 lines (the old limit was 10^11 - 1, and could
be exceeded without too much trouble).	Use this symbol rather
than hard-coding the constant everywhere.  Rather than overruning
for input with more lines, mark the line number by putting a
`>' in the leftmost slot.
(next_line_num): Fixed (now academic) possible line buffer overrun.
Patch by Jan Nieuwenhuizen.
2000-10-21 19:16:37 +00:00
Jim Meyering
379688e35d *** empty log message *** 2000-10-21 13:22:39 +00:00
Jim Meyering
4d2231d02c *** empty log message *** 2000-10-21 13:09:31 +00:00
Jim Meyering
c344de8d9b *** empty log message *** 2000-10-21 13:05:55 +00:00
Jim Meyering
fb5e934c73 (SORT_OUT_OF_ORDER): Define.
(main): Use it instead of hard-coding the `1'.
2000-10-21 13:05:40 +00:00
Jim Meyering
09ad98374b (main): Use EXIT_SUCCESS rather than 0.
Fail when checking (-c) with more than one file argument,
rather than simply ignoring the extra arguments.
2000-10-21 13:03:40 +00:00
Jim Meyering
6864ceca11 tweak comment 2000-10-21 12:46:58 +00:00
Jim Meyering
ef43db1c4b (dir_name_r): New function, factored out of dir_name.
(dir_name): Use dir_name_r.
2000-10-21 11:44:43 +00:00
Jim Meyering
b9dbd94712 *** empty log message *** 2000-10-21 11:29:01 +00:00
Jim Meyering
9ff69c8035 (memrchr): Declare if necessary.
(dir_name): Remove the restriction that there be no
trailing slashes.  Now, this code skips past them, effectively
ignoring them.
[TEST_DIRNAME] (main): New unit tests.
2000-10-21 11:28:42 +00:00
Jim Meyering
c03498f2e7 *** empty log message *** 2000-10-21 10:37:14 +00:00
Jim Meyering
e45c3dba07 (jm_PREREQ_DIRNAME): New macro. 2000-10-21 10:37:10 +00:00
Jim Meyering
bc6477ff72 (AC_REPLACE_FUNCS): Add memrchr. 2000-10-21 10:36:49 +00:00
Jim Meyering
e46f105350 (jm_CHECK_DECLS): Also check for memrchr. 2000-10-21 10:36:32 +00:00
Jim Meyering
6ab7032952 *** empty log message *** 2000-10-21 10:33:25 +00:00
Jim Meyering
a5301cb3e2 New file, derived from the one in GNU libc. 2000-10-21 10:27:59 +00:00
Jim Meyering
9bab244d20 . 2000-10-19 11:43:34 +00:00
Jim Meyering
3b5b337246 Update from master repository. 2000-10-19 11:43:28 +00:00
Jim Meyering
3b60294bd9 *** empty log message *** 2000-10-18 20:48:04 +00:00
Jim Meyering
7243403b27 (universal_time): Remove; it's just a temptation to do the wrong thing.
(main): The -u option now just sets TZ; it doesn't do anything else.
(show_date): Do not do anything special if -u is set.
This affects the behavior of the -I and -R options.
2000-10-18 20:47:25 +00:00
Jim Meyering
d478d6efec * src/date.c (universal_time): Remove; it's just a temptation to
do the wrong thing.
(main): The -u option now just sets TZ; it doesn't do anything else.
(show_date): Do not do anything special if -u is set.
This affects the behavior of the -I and -R options.

* doc/sh-utils.texi: Document the above.
2000-10-18 20:45:20 +00:00
Jim Meyering
dbfbb93424 Undo the effect of the 1997-07-12 change to date.c; it
broke "date -u MMDDhhmm" and it wasn't documented.
This reverts to the behavior of the 1996-01-03 patch.

(utc-0, utc-1, relative-2): Adjust to above change.
2000-10-18 19:03:30 +00:00
Jim Meyering
29a4bf90d3 Undo the effect of the 1997-07-12 change to date.c; it
broke "date -u MMDDhhmm" and it wasn't documented.
This reverts to the behavior of the 1996-01-03 patch.

(TZ_UTC0, MAYBE_SET_TZ_UTC0, set_tz): Remove.
(batch_convert): Don't futz with TZ.
(main): -u now parses all dates as UTC, not just some.
2000-10-18 19:02:56 +00:00
Jim Meyering
fe5cad6b29 space to tab 2000-10-18 19:02:34 +00:00
Jim Meyering
39520407ef *** empty log message *** 2000-10-18 09:51:00 +00:00
Jim Meyering
2e4b629e21 (Examples of date): Fix a typo. 2000-10-18 09:50:56 +00:00
Jim Meyering
eaca68c289 *** empty log message *** 2000-10-18 07:42:08 +00:00
Jim Meyering
7e02b6c989 Make sure the programs use C-locale formats
and translations.  Bruno Haible reported that this test would fail
when using other locales, because ls printed a translation of `total'.
2000-10-18 07:41:59 +00:00
Jim Meyering
32dfed954f *** empty log message *** 2000-10-17 08:45:42 +00:00
Jim Meyering
55f43f7915 *** empty log message *** 2000-10-17 08:45:32 +00:00
Jim Meyering
6cca23cec4 *** empty log message *** 2000-10-17 08:45:11 +00:00
Jim Meyering
0be2660d96 [PARAMS]: Define and use. 2000-10-17 08:45:07 +00:00
Jim Meyering
a8bf544803 *** empty log message *** 2000-10-17 06:45:57 +00:00
Jim Meyering
c841079462 Update from libc. 2000-10-17 06:45:49 +00:00
Jim Meyering
ad06715030 *** empty log message *** 2000-10-16 22:05:20 +00:00
Jim Meyering
66a4baa8a6 *** empty log message *** 2000-10-16 22:01:11 +00:00
Jim Meyering
ae2b7961cf *** empty log message *** 2000-10-16 14:31:38 +00:00
Jim Meyering
6f84766d19 *** empty log message *** 2000-10-16 14:30:39 +00:00
Jim Meyering
fd00df9c4d fix spell-o in comment 2000-10-16 08:10:58 +00:00
Jim Meyering
d15557db96 (rm_option_init): Remove FIXME-maybe comment. 2000-10-16 08:09:57 +00:00
Jim Meyering
b31c11e46b . 2000-10-16 08:09:42 +00:00
Jim Meyering
bdb5516fdd *** empty log message *** 2000-10-16 06:25:55 +00:00
Jim Meyering
c8c93cfefa *** empty log message *** 2000-10-16 06:25:29 +00:00
Jim Meyering
640221896f (hard_locale): Use "", not 0 as 2nd arg to setlocale.
From Jan Fedak.
2000-10-16 06:24:33 +00:00
Jim Meyering
d73ea5f65a . 2000-10-15 11:53:35 +00:00
Jim Meyering
d72623052b . 2000-10-12 02:36:18 +00:00
Jim Meyering
a5b38192d0 (Time directives) [%S]: Range is 0..60, not 0..61. 2000-10-12 02:28:27 +00:00
Jim Meyering
5681a0705f *** empty log message *** 2000-09-30 11:58:17 +00:00
Jim Meyering
04f6bb2648 *** empty log message *** 2000-09-30 09:50:23 +00:00
Jim Meyering
ad09410b04 (main): Rename local symbolic_mode' to specified_mode'. 2000-09-30 09:40:56 +00:00
Jim Meyering
cc4722e802 *** empty log message *** 2000-09-30 09:39:52 +00:00
Jim Meyering
f8e66794d9 (change_file_mode): Perform the chmod even if the
file mode permission bits are the same as those that should be set.
Omitting the chmod call would be alright with minimal 1003.1e DS17
ACLs, but eventually there will be other permissions in addition to
rwx.  E.g., add and delete for directories, and something analogous
to NT's take ownership permission.
2000-09-30 09:39:41 +00:00
Jim Meyering
e2b45cb9fe (main): Don't set the umask to 0 and hand-apply
the previously-set umask unconditionally.  Do that only when a
MODE has been specified.  Otherwise, call mkfifo with the full
creation mask (0777 or 0666) and let the kernel apply the umask.
The difference shows up only on file systems with ACL support
when the containing directory has a default ACL.
Patch by Andreas Gruenbacher.
(main): Rename local `symbolic_mode' to `specified_mode'.
Also, when MODE is specified, call chmod to ensure that the
permission bits are set as specified even when the containing
directory has a default ACL.
2000-09-30 08:56:06 +00:00
Jim Meyering
2170a48956 (main): Rename local symbolic_mode' to specified_mode'. 2000-09-30 08:53:27 +00:00
Jim Meyering
beebc69168 (main): Don't set the umask to 0 and hand-apply
the previously-set umask unconditionally.  Do that only when a
MODE has been specified.  Otherwise, call mknod with the full
creation mask (0777 or 0666) and let the kernel apply the umask.
The difference shows up only on file systems with ACL support
when the containing directory has a default ACL.
Patch by Andreas Gruenbacher.
(main): Rename local `symbolic_mode' to `specified_mode'.
Also, when MODE is specified, call chmod to ensure that the
permission bits are set as specified even when the containing
directory has a default ACL.
2000-09-30 08:53:10 +00:00
Jim Meyering
daf9d41918 (main): Rename local symbolic_mode' to specified_mode'. 2000-09-30 08:49:51 +00:00
Jim Meyering
105cbe3ea3 (main): Don't set the umask to 0 and hand-apply
the previously-set umask unconditionally.  Do that only when a
MODE has been specified.  Otherwise, call mkdir with the full
creation mask (0777 or 0666) and let the kernel apply the umask.
The difference shows up only on file systems with ACL support
when the containing directory has a default ACL.
Patch by Andreas Gruenbacher.
2000-09-30 08:49:17 +00:00
Jim Meyering
f14dbb1710 *** empty log message *** 2000-09-30 08:42:11 +00:00
Jim Meyering
ec8df1d330 *** empty log message *** 2000-09-30 08:35:05 +00:00
Jim Meyering
d7232f8ca7 Update to use newer template. 2000-09-30 08:32:55 +00:00
Jim Meyering
c217428f39 (main): Rename local symbolic_mode' to specified_mode'. 2000-09-30 08:20:23 +00:00
Jim Meyering
41939d7bfe Remove option-describing comment block. 2000-09-30 08:19:34 +00:00
Jim Meyering
e7f9f83fa1 *** empty log message *** 2000-09-30 08:10:36 +00:00
Jim Meyering
77eb8604f1 (TESTS): Add perm. 2000-09-30 08:10:31 +00:00
Jim Meyering
f8d8ad4e94 *** empty log message *** 2000-09-30 08:09:14 +00:00
Jim Meyering
52e7fcc46c *** empty log message *** 2000-09-30 08:08:21 +00:00
Jim Meyering
96cde75480 *** empty log message *** 2000-09-30 08:05:32 +00:00
Jim Meyering
55b181511c (usage): Add a separate usage line, just for `OPTION'. 2000-09-29 21:40:38 +00:00
Jim Meyering
6ce74d5d36 *** empty log message *** 2000-09-29 21:40:33 +00:00
Jim Meyering
588d70c624 *** empty log message *** 2000-09-29 21:39:51 +00:00
Jim Meyering
6a8e993550 Run `diff -c' only if cmp finds a difference.
Clean up.
2000-09-29 10:17:51 +00:00
Jim Meyering
087520e781 . 2000-09-25 22:38:16 +00:00
Jim Meyering
8879e63dee (long_opts): --exact doesn't take an argument. 2000-09-25 22:37:54 +00:00
Jim Meyering
1a37445686 *** empty log message *** 2000-09-25 22:37:17 +00:00
Jim Meyering
d6ce71fb68 *** empty log message *** 2000-09-25 22:36:45 +00:00
Jim Meyering
65e65dbf30 *** empty log message *** 2000-09-25 20:25:04 +00:00
Jim Meyering
ec00767a8e Don't use `diff -u'. It's not portable.
Run `diff -c' only if cmp finds a difference.
2000-09-25 20:23:43 +00:00
Jim Meyering
f443264116 *** empty log message *** 2000-09-25 20:23:11 +00:00
Jim Meyering
6292a2bb96 *** empty log message *** 2000-09-25 19:43:57 +00:00
Jim Meyering
2371d8faaf Use `(exit 1); exit' paradigm also for framework_failure. 2000-09-25 19:41:56 +00:00
Jim Meyering
2dc45ff0c8 *** empty log message *** 2000-09-25 10:52:09 +00:00
Jim Meyering
d2a170a785 (prev_version_file): Define and use. 2000-09-25 10:51:53 +00:00
Jim Meyering
2da0b15537 (PREV_VERSION): Get the value from a file, rather
than trying to derive it from the current version number.
This is much more robust.
(alpha): Record just-released version number in `.version',
and commit (post-tag).
2000-09-25 10:49:35 +00:00
Jim Meyering
9191f089b9 *** empty log message *** 2000-09-25 07:41:45 +00:00
Jim Meyering
5f201a38b6 *** empty log message *** 2000-09-25 07:33:07 +00:00
Jim Meyering
53feb25dd7 *** empty log message *** 2000-09-25 07:17:29 +00:00
Jim Meyering
9726d96742 *** empty log message *** 2000-09-25 00:23:17 +00:00
Jim Meyering
3283bb8b93 (usage): Match revised documentation better. 2000-09-25 00:09:10 +00:00
Jim Meyering
2b9d8efc91 *** empty log message *** 2000-09-25 00:01:22 +00:00
Jim Meyering
c3da9e25ed (rol): Define (from GnuPG). 2000-09-25 00:00:58 +00:00
Jim Meyering
ab367e6b13 Give credit (GnuPG) where due.
(M): Use rol rather than open-coding it.
Add a FIXME comment.
2000-09-24 23:59:39 +00:00
Jim Meyering
8d0687974f *** empty log message *** 2000-09-24 23:05:57 +00:00
Jim Meyering
230bf31c87 . 2000-09-24 18:42:23 +00:00
Jim Meyering
5f7aed5f78 *** empty log message *** 2000-09-24 11:57:41 +00:00
Jim Meyering
65b0c96d46 (main): Tweak a relatively new diagnostic. 2000-09-24 11:57:36 +00:00
Jim Meyering
cb05584160 *** empty log message *** 2000-09-23 19:27:41 +00:00
Jim Meyering
79043436ce Output more information when a test fails. 2000-09-23 19:27:33 +00:00
Jim Meyering
3584f04f59 adjust for change in behavior 2000-09-23 19:24:12 +00:00
Jim Meyering
1f5e4907c2 . 2000-09-23 09:29:54 +00:00
Jim Meyering
a04e5b9dbc (main): When used with --force, each of the --link and
--symbolic-link options now implies --remove-destination.
2000-09-22 20:41:40 +00:00
Jim Meyering
ce8d840e83 *** empty log message *** 2000-09-22 19:30:36 +00:00
Jim Meyering
39da0cbc3b (cp_option_init): Once again make it so install always
unlinks an existing destination before trying to open it for writing.
Otherwise, installing onto a running shared library would make the
running program malfunction.
2000-09-22 19:30:29 +00:00
Jim Meyering
dffa52e11a *** empty log message *** 2000-09-22 19:28:24 +00:00
Jim Meyering
60c672e7ec (TESTS): Add dir-rm-dest. 2000-09-22 19:27:31 +00:00
Jim Meyering
ace3c90796 *** empty log message *** 2000-09-22 18:31:02 +00:00
Jim Meyering
c2c680ad95 (do_move): Moving a directory specified with a trailing
slash from one partition to another, and giving it a different
name at the destination would cause mv to get a failed assertion.
Reported by Michael Stone.
(strip_trailing_slashes_2): Move function definition to precede new first use.
2000-09-22 15:40:43 +00:00
Jim Meyering
e34407ac09 *** empty log message *** 2000-09-22 15:39:03 +00:00
Jim Meyering
bca49a8c12 (TESTS): Add part-rename. 2000-09-22 15:38:37 +00:00
Jim Meyering
483f907eb8 (copy_internal): Don't try to unlink directories when
using --remove-dest with -R.
2000-09-22 14:14:55 +00:00
Jim Meyering
f680954f1f *** empty log message *** 2000-09-22 13:31:14 +00:00
Jim Meyering
e7a17082b4 *** empty log message *** 2000-09-21 14:40:09 +00:00
Jim Meyering
33675b72ce *** empty log message *** 2000-09-21 05:40:34 +00:00
Jim Meyering
7708d86636 (parse_user_spec): Remove debugging printf I'd added.
Argh!
2000-09-21 05:40:28 +00:00
Jim Meyering
ff8d7f3d98 *** empty log message *** 2000-09-20 09:43:37 +00:00
Jim Meyering
39e3db9605 *** empty log message *** 2000-09-20 09:43:07 +00:00
Jim Meyering
8619939503 *** empty log message *** 2000-09-20 08:06:06 +00:00
Jim Meyering
aba49610d9 *** empty log message *** 2000-09-20 08:05:39 +00:00
Jim Meyering
4b5edfea53 (libfetish_a_SOURCES): Add sha.c.
(noinst_HEADERS): Add sha.h.
Based on code from Scott G. Miller and from GnuPG.
2000-09-20 08:05:24 +00:00
Jim Meyering
98daab19b9 . 2000-09-20 07:38:56 +00:00
Jim Meyering
6924fde974 *** empty log message *** 2000-09-18 06:37:15 +00:00
Jim Meyering
cf19019bf9 (AC_FUNC_GETLOADAVG): Restore the initial value of LIBS.
Otherwise, everyone ends up linking with -lelf for some configurations.
Reported by Mike Stone.
2000-09-18 06:37:01 +00:00
Jim Meyering
eccfa6b591 shrink tmp array length from 80 to 16. 2000-09-17 13:02:43 +00:00
Jim Meyering
1778e41773 use gnupg R/M macros 2000-09-17 13:01:02 +00:00
Jim Meyering
2d3aded1bb checkpoint 2000-09-17 12:54:25 +00:00
Jim Meyering
9d524deb2b *** empty log message *** 2000-09-17 11:12:31 +00:00
Jim Meyering
12079963ab remove debug junk 2000-09-17 11:11:26 +00:00
Jim Meyering
30ee9b3006 moving to gnupg's version of sha1.c 2000-09-17 11:11:01 +00:00
Jim Meyering
e87dcda480 snapshot of massaged original 2000-09-17 11:08:06 +00:00
Jim Meyering
3d929fbda2 . 2000-09-16 16:49:23 +00:00
Jim Meyering
c0e5ce613e *** empty log message *** 2000-09-16 16:47:06 +00:00
Jim Meyering
59a8abac57 Update from libc. 2000-09-16 16:46:50 +00:00
Jim Meyering
89aa821b03 *** empty log message *** 2000-09-16 16:26:09 +00:00
Jim Meyering
eaa53735c2 (Changing Special Permissions): Remove this statement:
`a' in the USERS part of a symbolic mode does not cause the special
permissions to be affected...  It doesn't reflect what the code does
and isn't required by POSIX.  Reported by aldomel@ix.netcom.com via
Mike Stone.
2000-09-16 16:26:02 +00:00
Jim Meyering
2dfa2338b8 *** empty log message *** 2000-09-15 06:33:32 +00:00
Jim Meyering
a7f53c72b3 *** empty log message *** 2000-09-12 14:04:20 +00:00
Jim Meyering
f6234990b2 *** empty log message *** 2000-09-10 19:48:05 +00:00
Jim Meyering
9eb2ccc113 (LC_ALL): Set to `C' and export to ensure
that `ls' sorts the same way for everyone.  Reported by Vin Shelton.
2000-09-10 19:47:56 +00:00
Jim Meyering
92ae1c7d2a *** empty log message *** 2000-09-10 19:04:14 +00:00
Jim Meyering
31d9a98e82 (b_host): Use freefriends.org, not tug.org. 2000-09-10 19:04:09 +00:00
Jim Meyering
4df3e0f3b9 *** empty log message *** 2000-09-10 07:31:54 +00:00
Jim Meyering
834c4dbfe1 (_getopt_internal): Update from glibc. 2000-09-10 07:31:44 +00:00
Jim Meyering
3d7a795592 *** empty log message *** 2000-09-09 16:34:17 +00:00
Jim Meyering
1352d5e6ce (usage): Make second `Usage' line more precise
(also making it match the texinfo documentation).
2000-09-09 16:33:59 +00:00
Jim Meyering
327b8f63c0 *** empty log message *** 2000-09-09 16:02:37 +00:00
Jim Meyering
af49390ea7 Rename ISASCII to IN_CTYPE_DOMAIN. 2000-09-09 15:58:57 +00:00
Jim Meyering
ac42c1a725 Rename ISASCII to IN_CTYPE_DOMAIN. 2000-09-09 15:58:03 +00:00
Jim Meyering
5f9e998bca Rename ISASCII to IN_CTYPE_DOMAIN. 2000-09-09 15:56:26 +00:00
Jim Meyering
16bcaae35b (Setting the time): Correct the capitalization of
`HHMM' in the info-rendering of the texinfo documentation.
2000-09-09 14:35:39 +00:00
Jim Meyering
315d948fe2 *** empty log message *** 2000-09-09 14:35:18 +00:00
Jim Meyering
3016c52459 *** empty log message *** 2000-09-09 12:12:28 +00:00
Jim Meyering
a6e3bc0ace (announcement): Use a stricter regexp for the previous version. 2000-09-09 12:12:16 +00:00
Jim Meyering
940dc652a5 *** empty log message *** 2000-09-09 09:58:16 +00:00
Jim Meyering
c0d85f7e45 . 2000-09-09 08:58:58 +00:00
Jim Meyering
fdd7f15c6e *** empty log message *** 2000-09-09 08:58:42 +00:00
Jim Meyering
88fec8763a . 2000-09-09 08:56:38 +00:00
Jim Meyering
80fe6fbd20 *** empty log message *** 2000-09-09 08:55:48 +00:00
Jim Meyering
ca10098c93 *** empty log message *** 2000-09-09 08:53:37 +00:00
Jim Meyering
e336878a5b *** empty log message *** 2000-09-09 08:42:34 +00:00
Jim Meyering
6f98f91fad *** empty log message *** 2000-09-09 08:27:52 +00:00
Jim Meyering
a2e3399aa2 *** empty log message *** 2000-09-09 08:25:33 +00:00
Jim Meyering
f3643f7edd (TESTS_ENVIRONMENT): Propagate $MAKE into environment, for special-bits. 2000-09-09 08:24:41 +00:00
Jim Meyering
108783401d *** empty log message *** 2000-09-09 08:22:54 +00:00
Jim Meyering
88cd90df1e *** empty log message *** 2000-09-09 08:22:19 +00:00
Jim Meyering
f6c0c0ee16 *** empty log message *** 2000-09-09 08:18:10 +00:00
Jim Meyering
bb4904c751 (TESTS): Add special-bits. 2000-09-09 08:17:33 +00:00
Jim Meyering
6fdcba1097 *** empty log message *** 2000-09-09 07:32:43 +00:00
Jim Meyering
7ce4ee180b (copy_internal): Call chmod also if we've made the
preceding chown call and we're supposed to preserve some special
permission bit(s) that would have been reset by chown.
Reported by Greg Louis.
2000-09-09 07:32:36 +00:00
Jim Meyering
84d9e6f35b (SAME_OWNER, SAME_GROUP, SAME_OWNER_AND_GROUP): Define.
(copy_internal): Avoid calling chown if we know it's not necessary.
2000-09-09 07:29:38 +00:00
Jim Meyering
5e333bb8b8 *** empty log message *** 2000-09-09 07:20:54 +00:00
Jim Meyering
7d5c9847aa Don't use atoi.
Include sys/param.h and limits.h.
Include xstrtol.h.
(CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
(UID_T_MAX, GID_T_MAX, MAXUID, MAXGID): Define.
(parse_user_spec): Use xstrtoul, not atoi when converting numeric
UID, GID.  Check range.
2000-09-09 07:20:46 +00:00
Jim Meyering
116698bb24 *** empty log message *** 2000-09-08 09:03:05 +00:00
Jim Meyering
93fe4a3b72 (S_IRWXUGO): Define here, instead. 2000-09-08 09:01:32 +00:00
Jim Meyering
3a66ad8dcd (S_IRWXUGO): Remove definition. 2000-09-08 09:01:02 +00:00
Jim Meyering
b12b63eced *** empty log message *** 2000-09-07 13:23:52 +00:00
Jim Meyering
5f44c5626b . 2000-09-07 13:22:26 +00:00
Jim Meyering
829258e77c Update from master repository. 2000-09-07 13:22:14 +00:00
Jim Meyering
d9a1527093 *** empty log message *** 2000-09-07 07:08:50 +00:00
Jim Meyering
bd5a2dc9e1 (cut invocation): Note that when using -f, lines with no delimiters are
also printed.
2000-09-07 07:08:39 +00:00
Jim Meyering
95ed06eb09 (usage): Note that when using -f, lines with no delimiters are also printed. 2000-09-07 07:08:17 +00:00
Jim Meyering
19ee58e090 Remove obsolete comment block. 2000-09-07 07:01:11 +00:00
Jim Meyering
b61f6618aa *** empty log message *** 2000-09-06 20:04:17 +00:00
Jim Meyering
7ed190837a (_getopt_internal): Update from glibc. 2000-09-06 20:04:06 +00:00
Jim Meyering
812dc8da17 *** empty log message *** 2000-09-05 12:15:38 +00:00
Jim Meyering
b150de0a99 Redirect stdout to stderr before trying to
remove the temp directory.  Otherwise, the `rm -rf' would get an
error because the output file wouldn't be closed and the directory
wouldn't be `empty'.
2000-09-05 12:15:30 +00:00
Jim Meyering
2757680bbf . 2000-09-05 12:04:29 +00:00
Jim Meyering
9fecbb3105 Remove the `cp -bdl symlink foo' case.
since it's no longer portable (hard link to a symlink).
2000-09-05 12:02:40 +00:00
Jim Meyering
b0126126d2 Remove the `cp -dl sl1 sl2' case,
since it's no longer portable (hard link to a symlink).
2000-09-05 11:53:03 +00:00
Jim Meyering
3260d507f5 *** empty log message *** 2000-09-05 10:41:18 +00:00
Jim Meyering
537879ee7d . 2000-09-05 10:22:35 +00:00
Jim Meyering
0c483136cf . 2000-09-04 20:51:43 +00:00
Jim Meyering
106eedf2a8 Remove declaration of lstat, now that it's in copy.h. 2000-09-04 20:51:29 +00:00
Jim Meyering
cec4418796 Move declaractions of lstat, stat, and rpl_lstat
as well as the definition of lstat from cp.c to this file.
2000-09-04 20:51:12 +00:00
Jim Meyering
25e0824d28 Move declaractions of lstat, stat, and rpl_lstat
as well as the definition of lstat from here to copy.h.
2000-09-04 20:50:45 +00:00
Jim Meyering
739a268735 *** empty log message *** 2000-09-04 17:01:23 +00:00
Jim Meyering
7c5d2581a0 . 2000-09-04 16:58:38 +00:00
Jim Meyering
9f99fca934 mv's --force (-f) option is no longer needed for
this test, now that all it does is cancel --interactive (-i).
2000-09-04 16:58:25 +00:00
Jim Meyering
d7dfef329f *** empty log message *** 2000-09-04 16:56:17 +00:00
Jim Meyering
daaa56f985 Add new tests using cp's --rem option.
Reflect the fact that cp's -f option no longer causes cp to remove the
destination file before trying to open it.
Reflect the fact that `cp -bdl' now makes a backup when copying a
symlink onto the file it points to (FIXME: look into this, and why
cp -bl does *not* do so).
2000-09-04 16:56:09 +00:00
Jim Meyering
143be7ea2d *** empty log message *** 2000-09-04 15:22:08 +00:00
Jim Meyering
4cb0cadf96 (do_link): Tweak diagnostics. 2000-09-04 15:22:00 +00:00
Jim Meyering
b5545e03db (same_file_ok): Hoist a test. 2000-09-04 14:49:30 +00:00
Jim Meyering
4dfe280c99 *** empty log message *** 2000-09-04 14:46:18 +00:00
Jim Meyering
616d9920c0 factor out backup/same test, put it after if-else. 2000-09-04 14:45:42 +00:00
Jim Meyering
65a185d754 (same_file_ok): factor some more. improve -- now passes all tests.
checkpoint
2000-09-04 14:42:32 +00:00
Jim Meyering
5dcb9b11aa *** empty log message *** 2000-09-04 08:16:16 +00:00
Jim Meyering
fbc1b0b06f *** empty log message *** 2000-09-04 08:03:56 +00:00
Jim Meyering
1f64389cd5 *** empty log message *** 2000-09-04 07:27:49 +00:00
Jim Meyering
e2017655a1 *** empty log message *** 2000-09-04 07:25:10 +00:00
Jim Meyering
09af7ed5f7 *** empty log message *** 2000-09-04 07:09:08 +00:00
Jim Meyering
2c663e070c *** empty log message *** 2000-09-03 18:50:55 +00:00
Jim Meyering
799114aa8c (cp_option_init): Initialize new members. 2000-09-03 18:50:49 +00:00
Jim Meyering
8ed20d830e . 2000-09-03 18:50:14 +00:00
Jim Meyering
a513c6c10e . 2000-09-03 18:49:37 +00:00
Jim Meyering
35640da77d tweak comment 2000-09-03 15:25:11 +00:00
Jim Meyering
b8fbc41536 Remove obsolete comment block.
(cp_option_init): Initialize new members.
(usage): Reflect the fact that --force (-f) relates only to whether
mv prompts.
(main): Remove uses of old `force' option member.
2000-09-03 14:36:50 +00:00
Jim Meyering
475fb2e732 (enum): Add UNLINK_DEST_BEFORE_OPENING.
[long_options]: Add an entry for --remove-destination.
(usage): Describe --remove-destination.
(do_copy): Use unlink_dest_after_failed_open member, not `force.'
(cp_option_init): Initialize new members.
(main): Handle UNLINK_DEST_BEFORE_OPENING (aka --remove-destination).
2000-09-03 14:09:23 +00:00
Jim Meyering
b1bf91b67d correct description of unlink_dest_after_failed_open 2000-09-03 13:56:15 +00:00
Jim Meyering
e2a422b8ef comment 2000-09-03 13:18:22 +00:00
Jim Meyering
81ab1beb52 Use strcoll (not strcmp) when comparing file names. 2000-09-03 13:06:41 +00:00
Jim Meyering
c199939348 (struct cp_options) [force]: Remove member.
[unlink_dest_before_opening]: Add member.
[unlink_dest_after_failed_open]: Add member.
2000-09-03 13:04:44 +00:00
Jim Meyering
76685fb1e9 (same_file_ok): New function, extracted from copy_internal,
and partially rewritten.
(copy_internal): Unlink destination file when unlink_dest_before_opening
option is set, and when the source is neither a regular file nor a directory.
2000-09-03 13:01:49 +00:00
Jim Meyering
3e8dff57b2 *** empty log message *** 2000-09-02 09:44:47 +00:00
Jim Meyering
1207fe6788 *** empty log message *** 2000-09-02 09:32:01 +00:00
Jim Meyering
24946d8604 *** empty log message *** 2000-09-02 09:30:03 +00:00
Jim Meyering
aa8f9f7e67 *** empty log message *** 2000-09-02 09:28:31 +00:00
Jim Meyering
9136c97143 *** empty log message *** 2000-09-02 09:08:31 +00:00
Jim Meyering
976d5c8a3f add basic test 2000-09-02 07:55:32 +00:00
Jim Meyering
3b023926b1 *** empty log message *** 2000-08-30 07:58:05 +00:00
Jim Meyering
048aa98ba8 Merge in changes from GNU libc. 2000-08-30 07:58:01 +00:00
Jim Meyering
3c5e612fce declare __fpending only if necessary 2000-08-28 14:55:18 +00:00
Jim Meyering
92452ed0a0 check for __fpending declaration 2000-08-28 14:53:10 +00:00
Jim Meyering
edc1ebe9e7 include stdio_ext.h 2000-08-28 14:50:37 +00:00
Jim Meyering
96719d7999 *** empty log message *** 2000-08-27 09:50:08 +00:00
Jim Meyering
739185ba74 . 2000-08-27 09:30:11 +00:00
Jim Meyering
6bf3479c9f (copy_reg): New parameters: X and NEW_DST.
Remove the SPARSE_MODE parameter.  Update caller.
Perform POSIX-mandated (for cp) open-with-O_WRONLY|O_TRUNC when
the regular destination file exists;  upon failure, unlink
that existing file, then open again, but with O_WRONLY|O_CREAT.
(copy_internal): `force' in not related to interactive; remove
the conjunct.
Remove the entire `else if (x->force)' block;  justifying
removal of the non-directory part is easy:  POSIX requires we try
to open an existing regular file, so we can't unlink it beforehand.
The part that changes the mode on a directory to allow overwriting
isn't necessary.
2000-08-27 09:30:00 +00:00
Jim Meyering
2c8881fa4e (copy_internal): Set `new_dst' when the move_mode rename fails,
since we then unlink the destination file.
2000-08-27 08:46:21 +00:00
Jim Meyering
a246888987 (copy_reg): Rename two goto labels. 2000-08-27 08:33:35 +00:00
Jim Meyering
5f4e35a42a . 2000-08-26 22:24:50 +00:00
Jim Meyering
004fa32b78 (usage): --force is independent of --interactive. 2000-08-26 22:24:31 +00:00
Jim Meyering
b679f078af . 2000-08-26 15:40:01 +00:00
Jim Meyering
64c38128cb . 2000-08-26 15:39:39 +00:00
Jim Meyering
47ffae51d2 *** empty log message *** 2000-08-26 12:05:55 +00:00
Jim Meyering
dc93e67305 Include "__fpending.h".
(close_stdout_status): Return right away if there's nothing to flush.
2000-08-26 12:05:50 +00:00
Jim Meyering
04b3f8c73f *** empty log message *** 2000-08-26 12:04:46 +00:00
Jim Meyering
15da58e940 *** empty log message *** 2000-08-26 12:04:13 +00:00
Jim Meyering
2c45ec8870 (noinst_HEADERS): Add __fpending.h. 2000-08-26 12:04:01 +00:00
Jim Meyering
b0a76138e8 *** empty log message *** 2000-08-26 11:59:55 +00:00
Jim Meyering
f48d309e1f *** empty log message *** 2000-08-26 11:58:08 +00:00
Jim Meyering
9f29c127ad Use jm_FUNC_FPENDING. 2000-08-26 11:56:54 +00:00
Jim Meyering
4edc4fdd20 *** empty log message *** 2000-08-26 11:56:20 +00:00
Jim Meyering
bf25ff5686 *** empty log message *** 2000-08-26 11:55:12 +00:00
Jim Meyering
5dee541de5 *** empty log message *** 2000-08-26 11:46:21 +00:00
Jim Meyering
9ca4b0ce4c *** empty log message *** 2000-08-26 11:44:00 +00:00
Jim Meyering
86d77d28f6 *** empty log message *** 2000-08-26 11:26:11 +00:00
Jim Meyering
5fec9dcd63 *** empty log message *** 2000-08-26 11:25:48 +00:00
Jim Meyering
5cd332146d *** empty log message *** 2000-08-25 07:43:45 +00:00
Jim Meyering
f35a629b10 *** empty log message *** 2000-08-25 07:39:22 +00:00
Jim Meyering
2115d8b251 *** empty log message *** 2000-08-24 11:39:14 +00:00
Jim Meyering
44256afd61 Put back the kluge. It's necessary after all.
(buggy_lseek_support): New function.
(skip): Use it.
Frank Adler reported that although _llseek returns 0, lseek
erroneously returns an offset suggesting the operation succeeded
even though it fails.
2000-08-24 11:39:08 +00:00
Jim Meyering
078fb9958e *** empty log message *** 2000-08-24 11:36:28 +00:00
Jim Meyering
10d2bd9fe1 . 2000-08-24 08:40:47 +00:00
Jim Meyering
d5f68c636f . 2000-08-24 08:40:08 +00:00
Jim Meyering
fc5b8b497f *** empty log message *** 2000-08-24 08:37:06 +00:00
Jim Meyering
399ca3007b *** empty log message *** 2000-08-24 08:36:47 +00:00
Jim Meyering
69450c7b8e (skip): Assume lseek failed if it returned zero, since a zero return is
impossible and some buggy drivers return zero.

Use SEEK_CUR rather than SEEK_SET; this fixes a bug when the
file descriptor is not currently rewound.
2000-08-24 08:34:33 +00:00
Jim Meyering
2abb1fd55d *** empty log message *** 2000-08-23 16:26:55 +00:00
Jim Meyering
5679351226 Include <config.h> unconditionally, to be consistent
with all the other programs in this directory.
2000-08-23 16:26:39 +00:00
Jim Meyering
52d06428c4 *** empty log message *** 2000-08-23 07:54:41 +00:00
Jim Meyering
9fa18193a8 *** empty log message *** 2000-08-23 07:54:23 +00:00
Jim Meyering
c5a36496a9 longer input 2000-08-23 07:54:06 +00:00
Jim Meyering
89f0eb153f redir dd's stderr 2000-08-23 07:49:05 +00:00
Jim Meyering
0816398823 change PROG from ls to dd 2000-08-23 07:48:11 +00:00
Jim Meyering
2ca0198ba4 (TESTS): Add not-rewound. 2000-08-23 07:47:52 +00:00
Jim Meyering
441d42d262 *** empty log message *** 2000-08-23 07:45:59 +00:00
Jim Meyering
47635579b0 use better trap 2000-08-23 07:38:21 +00:00
Jim Meyering
ed034dc2fb *** empty log message *** 2000-08-23 07:35:22 +00:00
Jim Meyering
d704481d1f back out last change 2000-08-23 07:33:28 +00:00
Jim Meyering
9445f3be05 *** empty log message *** 2000-08-22 11:12:06 +00:00
Jim Meyering
ba9af72e94 Don't even try to use lseek on character devices.
(buggy_lseek_support): New function.
(skip): Use it.
Reported by Martin Gallant via Michael Stone.
2000-08-22 11:12:01 +00:00
Jim Meyering
f2f8c736c9 *** empty log message *** 2000-08-22 11:05:47 +00:00
Jim Meyering
3ee1d2075c Clean up traps. Create files in a subdir. 2000-08-21 09:45:52 +00:00
Jim Meyering
4ff47b028e remove `dir' in trap, too 2000-08-21 09:41:56 +00:00
Jim Meyering
6d622fcb6b use better trap 2000-08-21 09:39:59 +00:00
Jim Meyering
dfdd08e943 *** empty log message *** 2000-08-21 05:29:32 +00:00
Jim Meyering
bcb31e6df5 *** empty log message *** 2000-08-21 05:15:55 +00:00
Jim Meyering
e37426d44c *** empty log message *** 2000-08-20 22:48:42 +00:00
Jim Meyering
5344a40bc2 remove blank line 2000-08-20 22:46:16 +00:00
Jim Meyering
f79086fbd3 *** empty log message *** 2000-08-20 22:46:05 +00:00
Jim Meyering
3944f9acc9 *** empty log message *** 2000-08-20 22:35:52 +00:00
Jim Meyering
5f69a51188 . 2000-08-20 21:16:36 +00:00
Jim Meyering
fc27421c82 New file. From J. David Anglin. 2000-08-20 21:12:36 +00:00
Jim Meyering
3581b3cf77 *** empty log message *** 2000-08-20 21:04:38 +00:00
Jim Meyering
9f425a515b *** empty log message *** 2000-08-20 21:04:26 +00:00
Jim Meyering
b4721f8c6e (TESTS): Add cp-HL. 2000-08-20 21:04:20 +00:00
Jim Meyering
59bf576f46 *** empty log message *** 2000-08-20 21:03:48 +00:00
Jim Meyering
1d0ba16702 *** empty log message *** 2000-08-20 21:03:03 +00:00
Jim Meyering
c4c4106e8b *** empty log message *** 2000-08-20 20:50:26 +00:00
Jim Meyering
d7af479281 *** empty log message *** 2000-08-20 20:49:58 +00:00
Jim Meyering
5b55669c7a (cp_option_init): Initialize to DEREF_ALWAYS, not `1'. 2000-08-20 20:49:44 +00:00
Jim Meyering
94d34806bd (cp_option_init): Initialize to DEREF_NEVER, not `0'. 2000-08-20 20:49:34 +00:00
Jim Meyering
c93a607f05 (long_opts): Add --dereference, -L.
(usage): Describe -L and -H.
(cp_option_init): Initialize to DEREF_UNDEFINED, not `1'.
(main): Add `H' and `-L' to getopt spec string.
[case 'a']: Initialize `dereference' to DEREF_NEVER, not 0.
[case 'd']: Likewise.
[case 'H']: New case.
[case 'L']: New case.
[case 'R']: Don't set dereference to `0' here.
If it's not yet defined, set x.dereference to DEREF_NEVER
if -R was specified, else set it to DEREF_ALWAYS.
Set x.xstat accordingly for -H.
2000-08-20 20:48:57 +00:00
Jim Meyering
7b1d35af90 Declare lstat.
(copy_dir): Set `xstat' member to lstat so that with `-H' we don't
follow symlinks found via recursive traversal.
Update uses of `dereference' to compare against new enum member names.
2000-08-20 20:48:45 +00:00
Jim Meyering
33db1748a0 (enum Dereference_symlink): Define.
(struct cp_options) [dereference]: Change type to Dereference_symlink.
2000-08-20 20:35:25 +00:00
Jim Meyering
9c55b67dd4 . 2000-08-20 16:48:02 +00:00
Jim Meyering
74a00a63a0 . 2000-08-20 15:56:43 +00:00
Jim Meyering
f801837d6c . 2000-08-20 15:56:11 +00:00
Jim Meyering
55692e275e *** empty log message *** 2000-08-20 12:45:35 +00:00
Jim Meyering
5bf6f179da Include utmp.h `#if HAVE_UTMP_H', rather than
`#if !HAVE_UTMPX_H'.  The latter would lose on systems with neither
utmp.h nor utmpx.h.  Reported by Eli Zaretskii.
2000-08-20 12:45:31 +00:00
Jim Meyering
f9850882f1 (print_totals): Rename global from opt_combined_arguments. 2000-08-20 09:55:23 +00:00
Jim Meyering
5d0d80fc27 fix my grammar error in last change 2000-08-19 11:09:03 +00:00
Jim Meyering
c055d35869 *** empty log message *** 2000-08-19 11:07:46 +00:00
Jim Meyering
61a8f5b321 *** empty log message *** 2000-08-19 11:07:37 +00:00
Jim Meyering
0dd04df27f (writeline): Correct comments.
From Bruno Haible.
2000-08-19 11:07:32 +00:00
Jim Meyering
dde8f61f1c *** empty log message *** 2000-08-18 07:08:34 +00:00
Jim Meyering
1696188993 (DO_CHOWN): Do not make a special case for non-root.
POSIX.2 requires that cp -p and mv attempt to set the uid of the
destination file, even if you're not root.  This affects behavior
only on hosts that let you give files away via chmod.
2000-08-18 07:08:04 +00:00
Jim Meyering
3804c0288a *** empty log message *** 2000-08-15 13:12:57 +00:00
Jim Meyering
70b951593e Add tests for just-fixed bug. 2000-08-15 13:12:48 +00:00
Jim Meyering
614723b9c1 *** empty log message *** 2000-08-15 13:08:31 +00:00
Jim Meyering
849d512ee9 *** empty log message *** 2000-08-15 13:08:06 +00:00
Jim Meyering
c4e4ba9607 *** empty log message *** 2000-08-15 13:07:40 +00:00
Jim Meyering
5f52473b9c *** empty log message *** 2000-08-15 13:05:21 +00:00
Jim Meyering
f0a4b95c58 (count_entry): Remember the current directory also for `.'
and `..'.  Reported by Stephen Smoogen, based on a patch from H.J. Lu.
2000-08-15 13:05:03 +00:00
Jim Meyering
d5d043c57a *** empty log message *** 2000-08-14 21:42:45 +00:00
Jim Meyering
5f14914c49 remove incorrect FIXME comment. 2000-08-14 21:40:30 +00:00
Jim Meyering
8c446739e7 *** empty log message *** 2000-08-14 09:58:58 +00:00
Jim Meyering
0f8dd3a954 (copy_reg): Move declaration of local, `n_read', into
the scope where it's used.
(copy_internal): In calling copy_reg, pass not the raw `src_mode',
but the possibly-umask-relative mode, `get_dest_mode (x, src_mode)'.
2000-08-14 09:58:25 +00:00
Jim Meyering
d927d60b36 (copy_reg): Add comment. 2000-08-13 13:13:25 +00:00
Jim Meyering
bed2ded78f *** empty log message *** 2000-08-13 13:05:16 +00:00
Jim Meyering
406f1dcb0f *** empty log message *** 2000-08-13 13:04:52 +00:00
Jim Meyering
fc0b4f7672 *** empty log message *** 2000-08-13 13:04:27 +00:00
Jim Meyering
262dbfe2f6 *** empty log message *** 2000-08-13 13:03:41 +00:00
Jim Meyering
27289e8b53 *** empty log message *** 2000-08-13 13:03:13 +00:00
Jim Meyering
8656b00f6d (get_dest_mode): Rename from new_nondir_mode.
Honor the umask for `cp', but not for `mv' or `cp -p'.
(copy_reg): New 4th parameter, dst_mode.  Pass it as 3rd arg. to open.
(copy_internal): Change type of locals `src_mode' and `src_type' from
int to mode_t.
Remove unnecessary local `fix_mode'.
Combine two if-stmts into one.
Pass `src_mode' as 4th arg to copy_reg.
If we've just created a new regular file, return early, skipping the
chmod step.  copy_reg now sets permissions of such files upon creation.
Use get_dest_mode, so there's just one chmod call here.
2000-08-13 13:03:07 +00:00
Jim Meyering
ce9d58029c Use jm_FUNC_UNLINK_BUSY_TEXT. 2000-08-12 13:27:29 +00:00
Jim Meyering
c187c5884b *** empty log message *** 2000-08-12 13:25:33 +00:00
Jim Meyering
ae8efa7087 . 2000-08-12 13:24:44 +00:00
Jim Meyering
13a7e4caf8 (TESTS): Add perm. 2000-08-12 13:24:31 +00:00
Jim Meyering
00874a5dad *** empty log message *** 2000-08-12 13:23:18 +00:00
Jim Meyering
52f1830329 Remove test for the VERSION_CONTROL and/or
SIMPLE_BACKUP_SUFFIX envvars.  Source ../envvar-check instead.
2000-08-12 13:22:59 +00:00
Jim Meyering
af77319c56 Remove test for the VERSION_CONTROL and/or
SIMPLE_BACKUP_SUFFIX envvars.  Source ../envvar-check instead.
2000-08-12 13:22:19 +00:00
Jim Meyering
60d7a8e772 Remove test for the VERSION_CONTROL and/or
SIMPLE_BACKUP_SUFFIX envvars.  Source ../envvar-check instead.
2000-08-12 13:21:47 +00:00
Jim Meyering
e37768067a Remove test for the VERSION_CONTROL and/or
SIMPLE_BACKUP_SUFFIX envvars.  Source ../envvar-check instead.
2000-08-12 13:21:13 +00:00
Jim Meyering
47e19fb368 *** empty log message *** 2000-08-12 13:19:27 +00:00
Jim Meyering
f2893678eb *** empty log message *** 2000-08-12 07:24:27 +00:00
Jim Meyering
1a27d41352 . 2000-08-12 06:17:33 +00:00
Jim Meyering
9099ba78e2 *** empty log message *** 2000-08-12 05:50:21 +00:00
Jim Meyering
017ee79337 *** empty log message *** 2000-08-12 05:16:40 +00:00
Jim Meyering
44d3e01da9 tweak the `whether...' message 2000-08-12 04:59:31 +00:00
Jim Meyering
52d20e4420 (jm_FUNC_UNLINK_BUSY_TEXT): New file/macro.
From J. David Anglin.
2000-08-12 04:57:18 +00:00
Jim Meyering
04d18f430c *** empty log message *** 2000-08-11 20:59:57 +00:00
Jim Meyering
c2177b12b3 Portable shell scripts should specify global options before key fields.
Move global LC_CTYPE remark to each sort option that depends on LC_CTYPE.

sort -g depends on LC_NUMERIC.

Add @vindex where it's missing.

"radix character" -> "decimal-point character", to match Standard C
terminology, which is easier for most people to follow.

"comm" does not consider trailing newlines to be significant.
2000-08-11 20:59:49 +00:00
Jim Meyering
7c032c04b9 *** empty log message *** 2000-08-11 09:20:36 +00:00
Jim Meyering
19d6aed760 Add support for multi-byte locales.
(iswprint, mbrtowc, wcwidth): Provide default definitions.
(total_bytes): New variable.
(print_bytes): New variable.
(longopts): Change abbreviation for --chars from 'c' to 'm'.
(usage): Update.
(write_counts): Add `bytes' argument.
(wc): New variables `bytes', `count_bytes', `count_chars',
`count_complicated'. The old code determines `bytes', not `chars'.
New case for MB_CUR_MAX > 1. A non-printable non-space character does
not increment the line position or start a word. Update `total_bytes'.
(main): Initialize `print_bytes' and `total_bytes' to 0. Accept 'm'
option. Pass `total_bytes' to write_counts.
2000-08-11 09:20:31 +00:00
Jim Meyering
c14f06f708 *** empty log message *** 2000-08-11 09:13:00 +00:00
Jim Meyering
5018ccfb7e (usage): Describe -d and -i in a locale-independent way. 2000-08-11 09:12:47 +00:00
Jim Meyering
d0c8664700 (usage): Don't describe System V syntax, as it doesn't always work. 2000-08-11 09:12:05 +00:00
Jim Meyering
2ed0078725 Recommend against the System V syntax
for tr ranges, and don't use it in examples.  Use POSIX
classes rather than ranges, for portability.
2000-08-11 09:11:20 +00:00
Jim Meyering
f64320db7b (wc invocation): Update accordingly. 2000-08-11 09:10:22 +00:00
Jim Meyering
f253241fa6 *** empty log message *** 2000-08-08 10:53:28 +00:00
Jim Meyering
129ede91ad (movefile): Invoke xalloc_die instead of printing our own message. 2000-08-08 10:53:23 +00:00
Jim Meyering
c5e73d1f4a *** empty log message *** 2000-08-08 07:16:45 +00:00
Jim Meyering
543cd52e60 *** empty log message *** 2000-08-08 07:13:46 +00:00
Jim Meyering
a9a5efd77b (remove_cwd_entries, rm): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:13:36 +00:00
Jim Meyering
b99ee65d9f (main): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:12:24 +00:00
Jim Meyering
b2557211cb (do_link): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:11:46 +00:00
Jim Meyering
6fa66b8414 (main): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:11:30 +00:00
Jim Meyering
13587cf0ec (xstrndup): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:11:12 +00:00
Jim Meyering
deffd164df *** empty log message *** 2000-08-08 07:10:22 +00:00
Jim Meyering
8b6882e5e9 (cut_fields): Invoke xalloc_die instead of printing our own message.
(cut_fields): Check for I/O error as well as end-of-file.
2000-08-08 07:09:31 +00:00
Jim Meyering
1899efe4f6 (copy_dir, copy_internal): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:08:17 +00:00
Jim Meyering
8180fd9209 (main): Invoke xalloc_die instead of printing our own message. 2000-08-08 07:07:55 +00:00
Jim Meyering
d681dd7524 (quotearg_colon, xmalloc): "virtual memory exhausted" -> "memory exhausted" 2000-08-08 07:03:41 +00:00
Jim Meyering
c64d3aaf18 (usage, main): For cp -P messages, mention the new behavior as well as the old. 2000-08-08 06:55:47 +00:00
Jim Meyering
b6bacc5dcf Invoke xalloc_die instead of printing our own message. 2000-08-08 06:53:14 +00:00
Jim Meyering
3424a30611 *** empty log message *** 2000-08-07 17:07:19 +00:00
Jim Meyering
045b33aaef (xalloc_msg_memory_exhausted): Now char const[],
not char *const and pointing to a constant array.
(xrealloc): Comment fix.
2000-08-07 17:06:38 +00:00
Jim Meyering
1fdeee96e2 (print_and_abort): Use "memory exhausted", not "virtual memory exhausted". 2000-08-07 17:05:37 +00:00
Jim Meyering
8d381987d0 comment fix 2000-08-07 17:03:20 +00:00
Jim Meyering
1def0627b7 (xalloc_msg_memory_exhausted): Now char const[],
not char *const and pointing to a constant array.
2000-08-07 17:02:15 +00:00
Jim Meyering
cab29a570d (same_name): Invoke xalloc_die instead of printing our own message.
(parse_user_spec):
Don't translate a message until just before returning,
to avoid unnecessary translation.
2000-08-07 16:56:29 +00:00
Jim Meyering
02edb50e8f (same_name): Invoke xalloc_die instead of printing our own message. 2000-08-07 16:55:57 +00:00
Jim Meyering
3190f18d1c *** empty log message *** 2000-08-07 16:50:27 +00:00
Jim Meyering
d8f02c5c3a (xputenv): Invoke xalloc_die instead of printing our own message. 2000-08-07 16:50:11 +00:00
Jim Meyering
8f8f0254b2 *** empty log message *** 2000-08-07 15:51:08 +00:00
Jim Meyering
51b6b653a2 back out Copyright date changes for files with no changes year 2000-08-07 15:48:18 +00:00
Jim Meyering
90fb34362a *** empty log message *** 2000-08-07 13:27:40 +00:00
Jim Meyering
7299626404 *** empty log message *** 2000-08-07 13:27:33 +00:00
Jim Meyering
0ae67ef6a8 (head): Call write_header here.
(head_file): ... not here.
2000-08-07 13:27:24 +00:00
Jim Meyering
fd5da15041 (closeout_func): Remove variable.
(close_stdout_wrapper): Remove unused function.
(main): Remove assignment to closeout_func.
2000-08-07 13:23:44 +00:00
Jim Meyering
0981ef97c0 (fold_file): Remove ferror(stdout) check, already done in close_stdout. 2000-08-07 13:19:52 +00:00
Jim Meyering
eb6e8b63c6 *** empty log message *** 2000-08-07 08:57:11 +00:00
Jim Meyering
0ef1ebe00e (enum) [PARENTS_OPTION]: New member.
(long_opts): Update "parents" and deprecated "path" entries to use
`PARENTS_OPTION', not `P'.
(usage): Update --help output.
(main): Warn that the meaning of `-P' will soon change.
2000-08-07 08:55:50 +00:00
Jim Meyering
56752ea034 *** empty log message *** 2000-08-07 08:18:32 +00:00
Jim Meyering
568f9e0516 *** empty log message *** 2000-08-07 07:15:31 +00:00
Jim Meyering
497785afe5 (AC_MBSTATE_T): Define mbstate_t to be int,
not char, for compatibility with glibc 2.1.3 strftime.c.
2000-08-07 07:15:25 +00:00
Jim Meyering
43fde4395a (usage): Warn more succintly about the effects of
the locale on sort order.
2000-08-07 07:07:00 +00:00
Jim Meyering
aee6ce52e0 *** empty log message *** 2000-08-06 19:54:55 +00:00
Jim Meyering
a64e651230 . 2000-08-06 19:09:08 +00:00
Jim Meyering
4951b1a4b0 *** empty log message *** 2000-08-06 16:12:42 +00:00
Jim Meyering
3110281aad We know nbytes is 0, so remove it from bail-out test. 2000-08-06 15:08:29 +00:00
Jim Meyering
0d9ee9b50c *** empty log message *** 2000-08-06 09:06:22 +00:00
Jim Meyering
496964cdc3 *** empty log message *** 2000-08-06 09:06:00 +00:00
Jim Meyering
9048856887 *** empty log message *** 2000-08-06 09:03:33 +00:00
Jim Meyering
61b0870c41 (pipe_lines): Declare local `cp' to be const. 2000-08-06 09:03:29 +00:00
Jim Meyering
ae9ce08522 *** empty log message *** 2000-08-06 08:45:47 +00:00
Jim Meyering
95b686e751 (pipe_lines): Add variable `nbytes' so we can free
`tmp' immediately after read loop.  Don't process an empty file.
This fixes a buffer-underrun error -- also thanks to bounded pointers.
2000-08-06 08:44:11 +00:00
Jim Meyering
773a575cd5 (main): Rename local t' to tmp_dir' to avoid shadowing
a previous local by that name.
(usage): Warn that GNU sort is now locale-aware, and suggest
people put LC_ALL=POSIX in their environment.
2000-08-05 20:27:49 +00:00
Jim Meyering
8db7ef9e42 *** empty log message *** 2000-08-05 19:36:37 +00:00
Jim Meyering
6b95201b8d . 2000-08-05 19:36:20 +00:00
Jim Meyering
a8fd3f260a . 2000-08-05 19:35:59 +00:00
Jim Meyering
8b39b39763 *** empty log message *** 2000-08-05 19:31:58 +00:00
Jim Meyering
76211dbaeb . 2000-08-05 11:51:10 +00:00
Jim Meyering
1b57516fe2 *** empty log message *** 2000-08-05 11:50:43 +00:00
Jim Meyering
b3197453ad (init_header): Fix buffer-overrun error.
Allocated buffer was sometimes too small.
Reported by Greg McGary (who found this bug using his
bounded-pointers-enabled gcc).
(init_header): Move declarations of several variables into the
inner scope where they are used.
2000-08-05 10:56:12 +00:00
Jim Meyering
f79bc88685 . 2000-08-05 10:51:58 +00:00
Jim Meyering
81b2c3735e (narrow-1): New test, for the above. 2000-08-05 10:51:39 +00:00
Jim Meyering
e69797a267 *** empty log message *** 2000-08-05 08:34:36 +00:00
Jim Meyering
77a40f148f (MAX): Remove definition (It's in sys2.h). 2000-08-05 08:34:25 +00:00
Jim Meyering
26a7265907 *** empty log message *** 2000-08-04 10:18:09 +00:00
Jim Meyering
4e39b59aba *** empty log message *** 2000-08-04 10:13:36 +00:00
Jim Meyering
90d90ce434 (store_columns): Remove conjunct that would dereference
an out-of-bounds pointer.  Reported by Greg McGary (who found this
bug using his bounded-pointers-enabled gcc).
2000-08-04 10:13:30 +00:00
Jim Meyering
a5b5eb21f9 *** empty log message *** 2000-08-03 23:10:28 +00:00
Jim Meyering
641dabb657 (SET_HIGH_BOUND, MOVE_BUFFER_POINTER,
ELSE_EXTEND_BUFFER_HIGH_BOUND): New macros.
(EXTEND_BUFFER): Use them.
2000-08-03 23:10:05 +00:00
Jim Meyering
0037a01cf8 . 2000-08-03 08:00:40 +00:00
Jim Meyering
c60c4a9fdc . 2000-08-03 08:00:00 +00:00
Jim Meyering
1d80882fc0 *** empty log message *** 2000-08-03 07:57:51 +00:00
Jim Meyering
f3e288c470 ($(srcdir)/$x-tests): Use -I$(srcdir), not `-I.'.
(Makefile.am): Likewise.  Reported by Greg McGary.
2000-08-03 07:57:46 +00:00
Jim Meyering
ac4300150a . 2000-08-01 07:52:37 +00:00
Jim Meyering
051a7c856a *** empty log message *** 2000-08-01 07:52:26 +00:00
Jim Meyering
449a130ddb ranges vs ebcdic 2000-08-01 07:39:56 +00:00
Jim Meyering
10798a81c4 *** empty log message *** 2000-08-01 07:11:04 +00:00
Jim Meyering
cf04cc6ec2 (tee): Use SET_BINARY and SET_BINARY2.
From Prashant TR.
2000-08-01 07:10:57 +00:00
Jim Meyering
fe15457dcd *** empty log message *** 2000-08-01 07:10:10 +00:00
Jim Meyering
a55a40b616 (ISSLASH): Define.
(BACKSLASH_IS_PATH_SEPARATOR): Define.
(dir_name) [BACKSLASH_IS_PATH_SEPARATOR]: Handle the case in which
both `\' and `/' may be use as path separators.
Based on a patch from Prashant TR.
2000-08-01 07:10:05 +00:00
Jim Meyering
d203fb94d2 *** empty log message *** 2000-07-31 18:30:27 +00:00
Jim Meyering
8baafe1f08 (quotearg_n_options): Don't make the initial
slot vector a constant, since it might get modified.
2000-07-31 18:30:21 +00:00
Jim Meyering
07e0171826 Tweak comments, per Bruno's comments. 2000-07-31 12:31:44 +00:00
Jim Meyering
d034a083ab Tweak comments, per Bruno's comments. 2000-07-31 12:30:24 +00:00
Jim Meyering
cbed17e88a *** empty log message *** 2000-07-31 07:48:05 +00:00
Jim Meyering
ef49ee4777 (quotearg_n_options): Preallocate a slot 0
buffer, so that the caller can always quote one small
component of a "memory exhausted" message in slot 0.
From a suggestion by Jim Meyering.
2000-07-31 07:23:01 +00:00
Jim Meyering
a2e30297d1 *** empty log message *** 2000-07-31 06:50:26 +00:00
Jim Meyering
56d6e5a38a (cut_fields): Use virtual memory exhausted', not Memory exhausted'. 2000-07-31 06:48:43 +00:00
Jim Meyering
4e02f20bd3 Use virtual memory exhausted', not Memory exhausted'. 2000-07-31 06:47:33 +00:00
Jim Meyering
216cc77784 *** empty log message *** 2000-07-31 06:46:33 +00:00
Jim Meyering
6fb996fcc5 [!HAVE_CONFIG_H]: Use virtual memory exhausted', not Memory exhausted'. 2000-07-31 06:46:21 +00:00
Jim Meyering
5a95ad0a73 Use virtual memory exhausted', not Memory exhausted'. 2000-07-31 06:44:51 +00:00
Jim Meyering
5dcaccf5be *** empty log message *** 2000-07-30 20:25:31 +00:00
Jim Meyering
beb983dd07 *** empty log message *** 2000-07-30 19:51:03 +00:00
Jim Meyering
e0be88dd59 (ISPRINT): Undef before defining to avoid warning. 2000-07-30 19:50:58 +00:00
Jim Meyering
456a1ea3ea *** empty log message *** 2000-07-30 18:44:58 +00:00
Jim Meyering
c8a15b9edb Add quote marks to match new behavior. 2000-07-30 18:44:43 +00:00
Jim Meyering
0e1dfa9b8b (remove_file): Quote the file names that are displayed with --verbose. 2000-07-30 18:42:07 +00:00
Jim Meyering
7b79dfe695 (copy_internal): Quote the file names that are displayed
with --verbose and --backup.
2000-07-30 18:41:55 +00:00
Jim Meyering
a53a181821 *** empty log message *** 2000-07-30 17:08:10 +00:00
Jim Meyering
614cf2b06b Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 17:08:05 +00:00
Jim Meyering
a73455fc19 *** empty log message *** 2000-07-30 17:06:49 +00:00
Jim Meyering
87ad4e1dbb . 2000-07-30 16:51:16 +00:00
Jim Meyering
56836dca33 . 2000-07-30 16:50:16 +00:00
Jim Meyering
3048ed8790 . 2000-07-30 16:49:47 +00:00
Jim Meyering
a0947ac542 *** empty log message *** 2000-07-30 16:45:35 +00:00
Jim Meyering
a313a8b995 *** empty log message *** 2000-07-30 16:34:56 +00:00
Jim Meyering
c2c1f42b0b Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:34:48 +00:00
Jim Meyering
381ba4a26a Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:33:08 +00:00
Jim Meyering
8330089910 *** empty log message *** 2000-07-30 16:30:59 +00:00
Jim Meyering
ff6161442d Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:30:43 +00:00
Jim Meyering
7373e3149d Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:29:15 +00:00
Jim Meyering
608cabf1d4 *** empty log message *** 2000-07-30 16:28:30 +00:00
Jim Meyering
76bc5dc396 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:28:25 +00:00
Jim Meyering
fb61cfca00 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:26:43 +00:00
Jim Meyering
1f9d1ea959 *** empty log message *** 2000-07-30 16:25:01 +00:00
Jim Meyering
eb128f8a49 (make_path): Quote the other instance, too. 2000-07-30 16:24:51 +00:00
Jim Meyering
395e6c592a include quote.h. 2000-07-30 16:21:57 +00:00
Jim Meyering
4d617153d5 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:21:39 +00:00
Jim Meyering
222f736378 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-30 16:19:33 +00:00
Jim Meyering
b53d6da640 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add more precise diagnostics.
2000-07-30 16:16:16 +00:00
Jim Meyering
d4365673c5 (remove_cwd_entries): Quote one more file name. 2000-07-30 16:03:37 +00:00
Jim Meyering
493d6182eb tweak diagnostic 2000-07-30 16:01:48 +00:00
Jim Meyering
6986c2b9ad *** empty log message *** 2000-07-30 15:32:15 +00:00
Jim Meyering
e15422c3d3 *** empty log message *** 2000-07-30 15:31:20 +00:00
Jim Meyering
ec739a978b *** empty log message *** 2000-07-30 15:29:27 +00:00
Jim Meyering
b9e891771e *** empty log message *** 2000-07-30 15:28:36 +00:00
Jim Meyering
3b18fcfb6a *** empty log message *** 2000-07-30 15:24:27 +00:00
Jim Meyering
ae3ec5f069 *** empty log message *** 2000-07-30 15:23:55 +00:00
Jim Meyering
02b4fede5b moved from ../src 2000-07-30 15:17:34 +00:00
Jim Meyering
74fe479350 (do_move): Fix typo. 2000-07-30 15:01:11 +00:00
Jim Meyering
048017b39c (dir_name): Use __MSDOS__ in favor of MSDOS. 2000-07-29 17:11:33 +00:00
Jim Meyering
734d411884 *** empty log message *** 2000-07-29 17:06:53 +00:00
Jim Meyering
4524bbcaf8 (diacrit_diac): Use __MSDOS__ in favor of MSDOS. 2000-07-29 17:06:00 +00:00
Jim Meyering
70c58e8192 (base_name): Use ISSLASH rather than comparing against `/'. 2000-07-29 16:45:30 +00:00
Jim Meyering
ce49687fac fix spelling error in comment: s/squirelled/squirreled/. 2000-07-29 14:55:51 +00:00
Jim Meyering
7ddc6c5927 *** empty log message *** 2000-07-29 08:15:37 +00:00
Jim Meyering
043c4958de remove prematurely-added ISSLASH definition 2000-07-29 08:15:01 +00:00
Jim Meyering
3819c2d7cb (dir_name): Assert that there are no trailing slashes. 2000-07-29 08:10:46 +00:00
Jim Meyering
ba8620bf01 *** empty log message *** 2000-07-29 08:00:17 +00:00
Jim Meyering
e32586114e (dir_name) [MSDOS]: Declare `lim' to be const. 2000-07-29 08:00:11 +00:00
Jim Meyering
7102df4dd3 *** empty log message *** 2000-07-29 06:17:27 +00:00
Jim Meyering
586254e713 Include <limits.h>, <stdlib.h>, <wchar.h>, <wctype.h>.
(quote_name): Use mbrtowc to step through the filename string while
replacing nonprintables with question marks. Return the screen width,
not the strlen length. Do no output if the out stream is NULL.
(length_of_file_name_and_frills): Use the quote_name return value.
2000-07-29 06:17:02 +00:00
Jim Meyering
cbcd5929c1 *** empty log message *** 2000-07-29 06:09:43 +00:00
Jim Meyering
e6db9876a0 tweak comments 2000-07-29 06:09:22 +00:00
Jim Meyering
f247c7bd44 (mbswidth): Add a flags argument.
(mbswidth): New declaration.
(MBSW_ACCEPT_INVALID, MBSW_ACCEPT_UNPRINTABLE): New macros.
2000-07-29 06:02:28 +00:00
Jim Meyering
e7a7601ef4 . 2000-07-29 05:47:42 +00:00
Jim Meyering
3330c7dab7 *** empty log message *** 2000-07-29 05:42:14 +00:00
Jim Meyering
d0f57e1004 (temp_dir): Remove.
(temp_dirs, temp_dir_count, temp_dir_alloc): New vars.
(process_id): New var.
(usage): Describe new use of -T.
(add_temp_dir): New function.
(tempname): Use new temp_dirs array.
Do not discard information from the process-id or sequence
number, unless we have short file names.
(sighandle): Use process_id instead of getpid.
(main): Initialize process_id.
Add support for the new use of -T.
2000-07-29 05:41:55 +00:00
Jim Meyering
9b14de28be sort's -T option can now appear multiple times. 2000-07-29 05:31:44 +00:00
Jim Meyering
9133ae8f15 *** empty log message *** 2000-07-29 05:25:34 +00:00
Jim Meyering
d86f9d40a5 (change_file_owner): Save errno from a possibly failed chown,
and use that later.  Otherwise, errno itself could be clobbered before used.
2000-07-25 22:23:05 +00:00
Jim Meyering
ebd74667bc (change_file_mode): Save errno from a possibly failed chown,
and use that later.  Otherwise, errno itself could be clobbered before used.
2000-07-25 22:22:52 +00:00
Jim Meyering
d3938d3118 (change_file_group): Save errno from a possibly failed chown,
and use that later.  Otherwise, errno itself could be clobbered before used.
2000-07-25 22:22:29 +00:00
Jim Meyering
c0186d3cbb Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add more precise diagnostics.
2000-07-25 13:06:31 +00:00
Jim Meyering
289dacfa49 tweak diagnostic 2000-07-25 12:28:33 +00:00
Jim Meyering
1bfc7036c0 *** empty log message *** 2000-07-25 12:27:01 +00:00
Jim Meyering
cb1df652a7 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add more precise diagnostics.
2000-07-25 12:26:52 +00:00
Jim Meyering
135a310ca1 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
2000-07-25 12:18:06 +00:00
Jim Meyering
01bd168259 (main): Remove unnecessary "%s" argument. 2000-07-25 12:16:16 +00:00
Jim Meyering
50631d7b81 *** empty log message *** 2000-07-24 16:30:03 +00:00
Jim Meyering
18051fbbb3 (mbswidth): Add a flags argument.
(mbsnwidth): New function.
2000-07-24 16:29:57 +00:00
Jim Meyering
ddc825a0f0 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add more precise diagnostics.
2000-07-24 09:32:07 +00:00
Jim Meyering
2071a4054e *** empty log message *** 2000-07-24 06:42:26 +00:00
Jim Meyering
80dbd557de (jm_PREREQ_MBSWIDTH): Check for wcwidth declaration. 2000-07-24 06:42:17 +00:00
Jim Meyering
b083f93482 *** empty log message *** 2000-07-24 06:42:04 +00:00
Jim Meyering
66a0218c1a (_XOPEN_SOURCE): Don't define; this causes problems on Solaris 7.
(wcwidth) [!HAVE_DECL_WCWIDTH]: Declare.
2000-07-24 06:41:58 +00:00
Jim Meyering
50c130325e *** empty log message *** 2000-07-24 06:14:32 +00:00
Jim Meyering
1978f56515 Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
so that mbstate_t is always defined.

Do not inspect MB_LEN_MAX, since it's incorrectly defined to
be 1 in at least one GCC installation, and this configuration
error is likely to be common.  Ignoring MB_LEN_MAX hurts
performance on hosts that have mbrtowc but have only unibyte
locales, but I assume these hosts are rare.
2000-07-24 06:14:19 +00:00
Jim Meyering
d53f7b9a5d *** empty log message *** 2000-07-23 21:48:28 +00:00
Jim Meyering
d565aeb336 Streamline by invoking multibyte code only if needed.
<wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX.
(MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX).
(quotearg_buffer_restyled): If a unibyte locale, don't bother to
invoke multibyte primitives.
2000-07-23 21:48:17 +00:00
Jim Meyering
5294c10e84 *** empty log message *** 2000-07-23 21:06:22 +00:00
Jim Meyering
64eece7c53 fix typos (missing commas) 2000-07-23 18:44:35 +00:00
Jim Meyering
894d51af47 *** empty log message *** 2000-07-23 18:29:44 +00:00
Jim Meyering
6407eda7df *** empty log message *** 2000-07-23 16:27:38 +00:00
Jim Meyering
e67940b416 Include <sys/param.h> if HAVE_SYS_PARAM_H is defined,
rather than if _POSIX_VERSION is defined.  Remove declarations of
getpwuid, getgrgid, and getuid, now that they're in sys2.h.
2000-07-23 16:27:13 +00:00
Jim Meyering
57a16fe8c1 . 2000-07-23 15:36:43 +00:00
Jim Meyering
62ab4baa06 (main): Give a better diagnostic for e.g.,
`dd if=/dev/fd0 seek=100000000000'.
Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add many, more precise diagnostics.
2000-07-23 15:36:34 +00:00
Jim Meyering
00652253f7 *** empty log message *** 2000-07-23 15:28:29 +00:00
Jim Meyering
6a3f36dacb [!HAVE_DECL_GETPWUID]: Declare getpwuid.
[!HAVE_DECL_GETGRGID]: Declare getgrgid.
[!HAVE_DECL_GETUID]: Declare getuid.
2000-07-23 15:28:24 +00:00
Jim Meyering
dafbd8d26d *** empty log message *** 2000-07-23 15:27:19 +00:00
Jim Meyering
0c96a22ac7 (jm_CHECK_DECLS): Check for declarations of these, too:
getgrgid, getpwuid, getuid.
2000-07-23 15:27:11 +00:00
Jim Meyering
3091cce80a *** empty log message *** 2000-07-23 13:58:48 +00:00
Jim Meyering
a83726fb4e *** empty log message *** 2000-07-23 11:07:09 +00:00
Jim Meyering
2bfbe02e2f Rename tests (and hence files) to have a short
enough prefix so that they're not truncated on 8+3 file systems.
Reported by Eli Zaretskii.
2000-07-23 11:07:05 +00:00
Jim Meyering
92d2c54ae9 *** empty log message *** 2000-07-23 11:01:19 +00:00
Jim Meyering
ff8e66a907 . 2000-07-23 10:59:53 +00:00
Jim Meyering
ecf44d1a0e *** empty log message *** 2000-07-23 10:58:52 +00:00
Jim Meyering
9993d4141c Fix cp so that `cp -r DIR1/ DIR2' works once again.
(ASSIGN_BASENAME_STRDUPA): New macro.
(do_copy): Use it here (so we always strip trailing slashes before
calling base_name).
2000-07-23 10:54:01 +00:00
Jim Meyering
e66e1f94bb (ASSIGN_STRDUPA): Remove macro definition. 2000-07-23 10:52:05 +00:00
Jim Meyering
418ae892b1 (ASSIGN_STRDUPA): New macro (moved here from remove.c). 2000-07-23 10:49:59 +00:00
Jim Meyering
2eb0dc10c3 *** empty log message *** 2000-07-23 09:25:19 +00:00
Jim Meyering
2546495dab (base_name): Add an assertion. 2000-07-23 09:25:14 +00:00
Jim Meyering
dbca6b183b *** empty log message *** 2000-07-23 09:02:29 +00:00
Jim Meyering
6d26d7c908 *** empty log message *** 2000-07-23 09:00:22 +00:00
Jim Meyering
8038df09a5 (TESTS): Add dir-slash. 2000-07-23 09:00:17 +00:00
Jim Meyering
b03e65037c *** empty log message *** 2000-07-23 08:38:30 +00:00
Jim Meyering
e62f7a5962 When the system forces us to redefine mbstate_t, shadow its mbsinit function. 2000-07-23 08:38:25 +00:00
Jim Meyering
a121532512 *** empty log message *** 2000-07-19 21:01:16 +00:00
Jim Meyering
fde07e7f99 (batch_convert): Free `initial_TZ' only if it was set. 2000-07-19 21:00:20 +00:00
Jim Meyering
6fcabe7b2b *** empty log message *** 2000-07-19 21:00:03 +00:00
Jim Meyering
271249026d . 2000-07-17 20:48:36 +00:00
Jim Meyering
24d24529f4 *** empty log message *** 2000-07-17 20:48:00 +00:00
Jim Meyering
c950ce2982 (WGET): Define.
(ftp-gnu): Define.
(wget-update): New rule, based on the one in autoconf.
2000-07-17 20:47:53 +00:00
Jim Meyering
fd2d83d617 . 2000-07-17 20:46:35 +00:00
Jim Meyering
46fb83f548 *** empty log message *** 2000-07-17 20:45:03 +00:00
Jim Meyering
a9027c8afd (libfetish_a_SOURCES): Add mbswidth.c.
(noinst_HEADERS): Add mbswidth.h.
2000-07-17 20:45:00 +00:00
Jim Meyering
d1316a4669 *** empty log message *** 2000-07-17 20:43:18 +00:00
Jim Meyering
c00612504b from Bruno Haible. 2000-07-17 20:42:46 +00:00
Jim Meyering
d0192db8ac from Bruno Haible. 2000-07-17 20:42:12 +00:00
Jim Meyering
365bcc959c *** empty log message *** 2000-07-17 20:41:10 +00:00
Jim Meyering
8ec106f6b1 (jm_PREREQ): Call jm_PREREQ_MBSWIDTH. 2000-07-17 20:40:39 +00:00
Jim Meyering
ef93322b25 *** empty log message *** 2000-07-17 20:40:18 +00:00
Jim Meyering
27e5b4d0c3 *** empty log message *** 2000-07-17 20:07:49 +00:00
Jim Meyering
5c05881f32 (visible): Don't mark `<undef>' for translation.
The standard requires that exact string.
2000-07-17 20:07:33 +00:00
Jim Meyering
5829e323e8 *** empty log message *** 2000-07-17 20:05:40 +00:00
Jim Meyering
0a3e5544ba Add support for FreeBSD. Improve support for HP-UX and IRIX 6. 2000-07-17 20:05:30 +00:00
Jim Meyering
9ef04e4fa6 . 2000-07-17 19:43:38 +00:00
Jim Meyering
e26b531e3b *** empty log message *** 2000-07-17 19:43:14 +00:00
Jim Meyering
6859252584 (usage): Give a little more info.
Remove FIXME comment.
2000-07-17 19:43:05 +00:00
Jim Meyering
870d8663fb Avoid warnings.
(struct bin_str): Declare `string' member to be `const'.
(put_indicator): Declare local `p' to be `const'.
2000-07-17 08:17:12 +00:00
Jim Meyering
f4758f2165 *** empty log message *** 2000-07-15 13:32:16 +00:00
Jim Meyering
b905d7f0b5 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Improve a couple diagnostics.
2000-07-15 13:32:02 +00:00
Jim Meyering
015bcbb713 . 2000-07-15 13:29:01 +00:00
Jim Meyering
a23c477555 *** empty log message *** 2000-07-15 13:27:37 +00:00
Jim Meyering
da8dd781de Include quote.h.
(make_path): Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Give better diagnostics.
2000-07-15 13:27:30 +00:00
Jim Meyering
f6cb183112 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call -- if there's only one.
If there are more than one, then use `quote_n (0, ...),
quote_n (1, ...), ...'.
2000-07-15 10:35:27 +00:00
Jim Meyering
f78d8fcd66 Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call -- if there's only one.
If there are more than one, then use `quote_n (0, ...),
quote_n (1, ...), ...'.
2000-07-15 10:11:47 +00:00
Jim Meyering
7f8c02a4fb Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call -- if there's only one.
If there are more than one, then use `quote_n (0, ...),
quote_n (1, ...), ...'.
2000-07-15 10:11:18 +00:00
Jim Meyering
2b4d177553 *** empty log message *** 2000-07-15 09:58:14 +00:00
Jim Meyering
3e41cabaf2 (libfetish_a_SOURCES): Add quote.c.
(noinst_HEADERS): Add quote.h.
2000-07-15 09:58:10 +00:00
Jim Meyering
48c6c83ef6 *** empty log message *** 2000-07-15 09:57:38 +00:00
Jim Meyering
4ee7d58704 (quote, quote_n): New file. Two functions taken verbatim
from tar's src/misc.c.
2000-07-15 09:57:19 +00:00
Jim Meyering
a956a46792 *** empty log message *** 2000-07-14 21:18:00 +00:00
Jim Meyering
eb25458cd8 (jm_AC_PREREQ_XSTRTOUMAX): Require jm_AC_TYPE_UINTMAX_T. 2000-07-14 21:17:51 +00:00
Jim Meyering
b9e495aafb . 2000-07-14 19:35:13 +00:00
Jim Meyering
84817c5f8c *** empty log message *** 2000-07-14 15:58:39 +00:00
Jim Meyering
1d97735304 (jm_PREREQ_QUOTEARG): s/AC_MBSTATE_T_OBJECT/AC_MBSTATE_T/. 2000-07-14 15:58:34 +00:00
Jim Meyering
a8d048fb4d *** empty log message *** 2000-07-14 15:57:09 +00:00
Jim Meyering
f53d3a9d28 (AC_MBSTATE_T): Renamed from AC_MBSTATE_T_OBJECT. All uses changed.
Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT
and mbstate_t, to a single-part test that simply defines mbstate_t.
2000-07-14 15:56:42 +00:00
Jim Meyering
269ecb09d9 *** empty log message *** 2000-07-14 15:55:13 +00:00
Jim Meyering
e4dac83b0d (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
to decide whether to define the BeOS workaround macro;
this adjusts to the change to AC_MBSTATE_T.
2000-07-14 13:56:07 +00:00
Jim Meyering
288db81c18 *** empty log message *** 2000-07-14 11:32:47 +00:00
Jim Meyering
19920cfb66 *** empty log message *** 2000-07-14 11:27:06 +00:00
Jim Meyering
5ba7e086e5 (enum quoting style): New enum clocale_quoting_style. 2000-07-14 11:27:00 +00:00
Jim Meyering
83fdbce6a7 (quoting_style_args, quoting_style_vals,
quotearg_buffer_restyled): Add support for
clocale_quoting_style.  Undo previous change to
locale_quoting_style behavior, and undo the "{LEFT QUOTATION MARK}"
and "{RIGHT QUOTATION MARK}" msgids.
2000-07-14 11:26:28 +00:00
Jim Meyering
109fa3946b *** empty log message *** 2000-07-14 11:23:29 +00:00
Jim Meyering
bfc1dacca8 import 1.022 2000-07-11 22:44:26 +00:00
Jim Meyering
b64a0a7a90 from FSF 2000-07-10 14:54:02 +00:00
Jim Meyering
9d9677bd51 Tweak a comment to make it less negative about BeOS.
From Bruno Haible.
2000-07-10 11:41:50 +00:00
Jim Meyering
144d72edd4 *** empty log message *** 2000-07-10 11:30:54 +00:00
Jim Meyering
3bcb0b1bc2 Mirror the correction made in autoconf. 2000-07-10 11:30:50 +00:00
Jim Meyering
0f061bcb2d *** empty log message *** 2000-07-10 08:26:51 +00:00
Jim Meyering
bbb585d782 Output to confdefs.h directly. 2000-07-10 08:26:36 +00:00
Jim Meyering
a3f96e6b80 *** empty log message *** 2000-07-09 20:14:33 +00:00
Jim Meyering
2bf26f848f . 2000-07-09 17:53:14 +00:00
Jim Meyering
173953c503 *** empty log message *** 2000-07-09 17:49:50 +00:00
Jim Meyering
0efaa6792a *** empty log message *** 2000-07-09 17:46:16 +00:00
Jim Meyering
d2269d5c1b (jm_MACROS): Add a test to see if -lm is required
to link seq.  If so, set SEQ_LIBM to -lm.  From Bruno Haible.
2000-07-09 17:46:11 +00:00
Jim Meyering
0fe0294290 . 2000-07-09 17:25:35 +00:00
Jim Meyering
13b24a32fa *** empty log message *** 2000-07-09 17:25:03 +00:00
Jim Meyering
a27a4be2d0 (AC__GNU_SOURCE): New file/macro. 2000-07-09 17:24:41 +00:00
Jim Meyering
07cdecb35d (jm_CHECK_ALL_TYPES): Require it. 2000-07-09 17:24:27 +00:00
Jim Meyering
a6ecdec89c *** empty log message *** 2000-07-09 15:48:11 +00:00
Jim Meyering
96b16428cc The old behavior of quoting `like this' doesn't look good with
newer, ISO-style fonts.  See:
http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

Instead, quote "like this" by default.  Let the translator
tailor the locale-specific quoting behavior by providing
translations for {LEFT QUOTATION MARK} and {RIGHT QUOTATION MARK}.

(N_): New macro.
(gettext_default): New function.
(quotearg_buffer_restyled): Use
gettext_default ("{LEFT QUOTATION MARK}", "\"") for left quote, and
gettext_default ("{RIGHT QUOTATION MARK}", "\"") for right quote.
2000-07-09 15:46:46 +00:00
Jim Meyering
f5211a209e . 2000-07-09 15:32:47 +00:00
Jim Meyering
17afffee22 *** empty log message *** 2000-07-09 07:26:44 +00:00
Jim Meyering
50751a7eff (ENAMETOOLONG): Define to an unlikely value if not defined.
(xgethostname): Remove now-unnecessary #ifdef.
Move declaration of `err' into loop where it's used.
2000-07-09 07:26:34 +00:00
Jim Meyering
7a993dd16b update copyright date 2000-07-09 07:24:51 +00:00
Jim Meyering
42d1574ad8 *** empty log message *** 2000-07-09 07:23:19 +00:00
Jim Meyering
fde850f7ad update copyright date 2000-07-09 07:22:43 +00:00
Jim Meyering
23c792f18c update copyright date 2000-07-09 07:14:42 +00:00
Jim Meyering
6d16d92a02 update copyright date 2000-07-09 07:11:28 +00:00
Jim Meyering
3f94561e84 (xgethostname): Protect against the SunOS5.5 bug
by allocating a larger buffer. Test the gethostname return value for
being >= 0, not == 0, for BeOS.  Don't exhaust memory if gethostname
returns an error and ENAMETOOLONG isn't defined.
2000-07-08 21:48:07 +00:00
Jim Meyering
c85595bddf *** empty log message *** 2000-07-06 14:41:14 +00:00
Jim Meyering
d3afffe835 *** empty log message *** 2000-07-06 05:32:12 +00:00
Jim Meyering
8fd16e77e5 *** empty log message *** 2000-07-06 05:22:57 +00:00
Jim Meyering
2cab6f81a0 Include <ctype.h> for use of isalpha. 2000-07-06 05:22:55 +00:00
Jim Meyering
3a2ee9a318 *** empty log message *** 2000-07-06 05:20:18 +00:00
Jim Meyering
d148eef81d (AC_FUNC_STRERROR_R): Pass a reasonably large buffer to strerror_r. 2000-07-06 05:20:15 +00:00
Jim Meyering
082c0a9e23 . 2000-07-06 04:48:11 +00:00
Jim Meyering
24e6e33409 (mbrtowc): Declare returned type, since BeOS doesn't. 2000-07-06 04:47:28 +00:00
Jim Meyering
47566a14a9 *** empty log message *** 2000-07-06 04:46:57 +00:00
Jim Meyering
4f23c0f185 (AC_MBSTATE_T_OBJECT): Test for mbstate_t
only if the test for an object-type mbstate_t fails.  This
prevents us from mistakenly reporting that mbstate_t is a
system object type after we "#define mbstate_t int" to work
around its lack.
2000-07-06 04:46:48 +00:00
Jim Meyering
79ab392196 *** empty log message *** 2000-07-06 04:32:11 +00:00
Jim Meyering
98b348bce8 (struct quoting_options): Simplify quote_these_too dimension. 2000-07-06 04:31:59 +00:00
Jim Meyering
78c7d32c2e . 2000-07-04 20:32:51 +00:00
Jim Meyering
a8494c44a3 *** empty log message *** 2000-07-04 17:37:47 +00:00
Jim Meyering
1954ebfb93 [!HAVE_DECL_STRNLEN]: Declare strnlen. 2000-07-04 17:37:43 +00:00
Jim Meyering
1f05833062 . 2000-07-04 17:35:01 +00:00
Jim Meyering
60b5579ba9 *** empty log message *** 2000-07-04 17:32:00 +00:00
Jim Meyering
3b26158445 Make inclusion of <wchar.h> independent of whether
HAVE_MBRTOWC is set.  Required at least for irix-5.6, which lacks mbrtowc.
2000-07-04 17:31:56 +00:00
Jim Meyering
a9f8981529 *** empty log message *** 2000-07-04 17:19:27 +00:00
Jim Meyering
f03b81fd6f *** empty log message *** 2000-07-04 17:17:30 +00:00
Jim Meyering
02ac23c3e2 (jm_FILE_SYSTEM_USAGE): Use plain old `echo' instead of deprecated AC_CHECKING. 2000-07-04 17:15:45 +00:00
Jim Meyering
673a575a22 *** empty log message *** 2000-07-04 13:07:25 +00:00
Jim Meyering
4bdbf25dee (test_vector): Disable test #2 for all systems,
even though it fails only on SunOS4.
2000-07-04 13:07:21 +00:00
Jim Meyering
030c059d49 (AC_CHECK_DECLS): Add strnlen. 2000-07-04 09:03:26 +00:00
Jim Meyering
286c731efc *** empty log message *** 2000-07-04 09:03:09 +00:00
Jim Meyering
98a94bfb23 *** empty log message *** 2000-07-04 08:44:35 +00:00
Jim Meyering
1358f7c4a8 [HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
This is necessary to get a definition of e.g., UTMP_FILE on HP-UX 10.20.
From Bob Proulx.
2000-07-04 08:44:28 +00:00
Jim Meyering
93262c2f7f *** empty log message *** 2000-07-04 07:11:55 +00:00
Jim Meyering
5ba976c1b1 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13.
Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H.
2000-07-04 07:11:28 +00:00
Jim Meyering
266adb5302 *** empty log message *** 2000-07-04 07:03:26 +00:00
Jim Meyering
5a6fe4fd57 (mbrtowc): Assign to *pwc, and return 1 only if result is nonzero.
(iswprint): Use ISPRINT when substituting our own mbrtowc.
2000-07-04 07:03:16 +00:00
Jim Meyering
8d765a5946 . 2000-07-02 20:25:43 +00:00
Jim Meyering
b2a05e768c . 2000-07-02 20:21:44 +00:00
Jim Meyering
1eefb25591 Also define mbstate_t, if necessary. 2000-07-02 20:21:30 +00:00
Jim Meyering
b6ceaf9df1 (mbstate_t): Don't define here. 2000-07-02 18:32:05 +00:00
Jim Meyering
c6d5d9624c *** empty log message *** 2000-07-02 18:23:56 +00:00
Jim Meyering
e1919145a5 (SIGCONT): Define if not already defined. 2000-07-02 18:23:51 +00:00
Jim Meyering
591e461818 *** empty log message *** 2000-07-02 16:05:29 +00:00
Jim Meyering
f0b701359a *** empty log message *** 2000-07-02 15:43:22 +00:00
Jim Meyering
767804657c *** empty log message *** 2000-07-02 15:27:08 +00:00
Jim Meyering
f6b360c61f fix typo in last change 2000-07-02 15:14:04 +00:00
Jim Meyering
9cb651e6a5 *** empty log message *** 2000-07-02 12:59:32 +00:00
Jim Meyering
a8a5b983f1 Replace each use of AC_SUBST(LIBOBJS)/LIBOBJS=... with AC_LIBOBJ([function_name]). 2000-07-02 12:58:27 +00:00
Jim Meyering
5d6bc792ac *** empty log message *** 2000-07-02 11:58:18 +00:00
Jim Meyering
b08f9caae1 *** empty log message *** 2000-07-02 11:57:40 +00:00
Jim Meyering
c3259fabe2 *** empty log message *** 2000-07-02 11:49:20 +00:00
Jim Meyering
a3ff3953fc remove extra space 2000-07-01 16:45:31 +00:00
Jim Meyering
1fe03869c8 *** empty log message *** 2000-07-01 15:41:06 +00:00
Jim Meyering
1237bc6c72 Change type of global, field_1_bufsize, from int to size_t. 2000-07-01 15:41:01 +00:00
Jim Meyering
51155d32a3 *** empty log message *** 2000-07-01 15:36:44 +00:00
Jim Meyering
7dbb61f30e *** empty log message *** 2000-07-01 14:06:55 +00:00
Jim Meyering
73202c14e6 . 2000-07-01 14:03:02 +00:00
Jim Meyering
a784ac670f . 2000-07-01 13:58:19 +00:00
Jim Meyering
1002386cc5 *** empty log message *** 2000-07-01 13:43:51 +00:00
Jim Meyering
9657d66244 Remove a `FIXME' comment and fix the associated problem. 2000-07-01 13:43:46 +00:00
Jim Meyering
9a4135570b . 2000-07-01 13:35:52 +00:00
Jim Meyering
7d25895457 *** empty log message *** 2000-07-01 13:35:33 +00:00
Jim Meyering
1ce3f3cca5 Use MOUNTED_FS_STAT_DEV instead of MOUNTED_NEXT_DEV,
per change in ../m4/ls-mntd-fs.m4.
(read_filesystem_list): Ignore symbolic links.
2000-07-01 13:35:28 +00:00
Jim Meyering
879717eafa (jm_LIST_MOUNTED_FILESYSTEMS): Rename BeOS specific
macro from MOUNTED_NEXT_DEV to MOUNTED_FS_STAT_DEV.
2000-07-01 13:31:20 +00:00
Jim Meyering
f00cefa62b *** empty log message *** 2000-07-01 11:01:18 +00:00
Jim Meyering
13133639a4 (TESTS_ENVIRONMENT): Define host_triplet for use in the dangling-symlink test. 2000-07-01 11:01:14 +00:00
Jim Meyering
994724bf67 *** empty log message *** 2000-07-01 11:00:10 +00:00
Jim Meyering
95e3f911e2 Warn about the problem, rather
than failing on some very recent (at least 2.3.99) versions of
the Linux kernel.  Suggestion from Ulrich Drepper.
2000-07-01 10:59:56 +00:00
Jim Meyering
f59a68b49a *** empty log message *** 2000-07-01 09:09:37 +00:00
Jim Meyering
f6d2d9b74c *** empty log message *** 2000-07-01 09:05:13 +00:00
Jim Meyering
c52dea43b7 Put double quotes around use of $cross_compiling. 2000-07-01 09:04:56 +00:00
Jim Meyering
1e4dca2dd1 . 2000-07-01 07:13:53 +00:00
Jim Meyering
7a17620c53 *** empty log message *** 2000-06-30 13:25:12 +00:00
Jim Meyering
1ba4b1a996 *** empty log message *** 2000-06-30 13:25:04 +00:00
Jim Meyering
60cea0e8fe *** empty log message *** 2000-06-29 11:30:16 +00:00
Jim Meyering
d1e34222a8 Include <string.h> or <strings.h>, as appropriate, for declaration of strcmp. 2000-06-29 11:29:55 +00:00
Jim Meyering
13f4d23214 *** empty log message *** 2000-06-29 11:24:14 +00:00
Jim Meyering
2aab0b6a6c Include <stdlib.h>, for declaration of exit. 2000-06-29 11:24:09 +00:00
Jim Meyering
d0ffb1b198 *** empty log message *** 2000-06-29 11:16:29 +00:00
Jim Meyering
81d46d192a (find_bracketed_repeat): Add a cast to suppress a warning. 2000-06-29 11:15:52 +00:00
Jim Meyering
4c27ffdf05 *** empty log message *** 2000-06-29 10:39:57 +00:00
Jim Meyering
86956748b1 (enum): Remove comma from end of enumerator list.
From Gerhard Poul <gpoul@gnu.org
2000-06-29 10:39:41 +00:00
Jim Meyering
ded114511b *** empty log message *** 2000-06-29 10:39:00 +00:00
Jim Meyering
13225e0c76 *** empty log message *** 2000-06-29 08:37:00 +00:00
Jim Meyering
a1fd5e91ff (fsp_to_string) [HAVE_F_FSTYPENAME_IN_STATFS]:
Avoid warning by casting result to `char *' to remove `const'.
2000-06-29 08:30:03 +00:00
Jim Meyering
69b3d52b2a *** empty log message *** 2000-06-28 20:30:59 +00:00
Jim Meyering
27a839a3fa Use stdlib.h, not stdio.h. The latter is not included
by quotearg.c, for which we perform this test.  From Bruno Haible.
2000-06-28 20:29:27 +00:00
Jim Meyering
54b2c4933f *** empty log message *** 2000-06-28 14:06:34 +00:00
Jim Meyering
c93836544c Don't copy `out' into /tmp. 2000-06-28 14:06:30 +00:00
Jim Meyering
457fcbb2ca . 2000-06-27 13:23:13 +00:00
Jim Meyering
0865bd05b4 *** empty log message *** 2000-06-27 13:13:13 +00:00
Jim Meyering
b1b5fb67fc (count_entry): Don't set errno before
invoking savedir, and assume that errno is nonzero if savedir fails.
2000-06-27 13:12:12 +00:00
Jim Meyering
7e2d22e2a6 (copy_dir): Don't set errno before
invoking savedir, and assume that errno is nonzero if savedir fails.
2000-06-27 13:11:36 +00:00
Jim Meyering
e068bafb72 *** empty log message *** 2000-06-27 13:11:00 +00:00
Jim Meyering
53ec884edb (change_dir_mode): Don't set errno before
invoking savedir, and assume that errno is nonzero if savedir fails.
2000-06-27 13:10:50 +00:00
Jim Meyering
7aa50cfb3c (change_dir_owner): Don't set errno before
invoking savedir, and assume that errno is nonzero if savedir fails.
2000-06-27 13:10:24 +00:00
Jim Meyering
db0cd2f7e6 (change_dir_group): Don't set errno before
invoking savedir, and assume that errno is nonzero if savedir fails.
2000-06-27 13:09:57 +00:00
Jim Meyering
3dc875d9bd *** empty log message *** 2000-06-27 11:21:03 +00:00
Jim Meyering
f4e62844cb . 2000-06-27 10:10:13 +00:00
Jim Meyering
738611829c *** empty log message *** 2000-06-27 10:09:54 +00:00
Jim Meyering
4189da9d74 (libfetish_a_SOURCES): Remove readutmp.c. 2000-06-27 10:09:49 +00:00
Jim Meyering
26a158b619 *** empty log message *** 2000-06-27 10:08:15 +00:00
Jim Meyering
f8a79d9a8c (jm_PREREQ_READUTMP): Likewise. If either <utmp.h> or
<utmpx.h> exists, put readutmp.o into LIBOBJS.
2000-06-27 10:08:09 +00:00
Jim Meyering
ae641fdacf (_jm_DECL_HEADERS): Check for utmp.h as well. 2000-06-27 10:01:30 +00:00
Jim Meyering
0a43597bb8 *** empty log message *** 2000-06-27 07:08:52 +00:00
Jim Meyering
211b5731d7 savedir now sets errno on failure and invokes xmalloc to get memory.
Fix a couple of other minor bugs while we're at it.

(<unistd.h>): Do not include; there's no need.
(NAMLEN): Remove macro.
(malloc, realloc): Remove decls.
(stpcpy): Likewise.
("xalloc.h"): Include.
(NAME_SIZE_DEFAULT): New macro.
(savedir): Use xmalloc / xrealloc to allocate memory.
Use NAME_SIZE_DEFAULT if name_size is negative or overflows to zero.
Skip "" directory entries.
Use strlen to calculate directory entry length, since the old method
is rarely used these days and isn't worth supporting.
Don't use a pointer after freeing it.
Check for integer overflow when calculating allocation size.
Use memcpy to copy entries, instead of stpcpy.
Set errno properly when returning NULL.
Check for readdir error.
2000-06-27 07:08:48 +00:00
Jim Meyering
ae34e4466d *** empty log message *** 2000-06-27 06:33:35 +00:00
Jim Meyering
99c1d22a99 (show_dev): Round disk usage percentage up, not to nearest value.
Use integer arithmetic if it's easy.
Fix bug when converting twos-complement negative values to floating point.
2000-06-27 06:33:31 +00:00
Jim Meyering
b07eb28c60 *** empty log message *** 2000-06-26 13:48:40 +00:00
Jim Meyering
b4fd5c459e *** empty log message *** 2000-06-26 13:30:59 +00:00
Jim Meyering
dfaf03f037 *** empty log message *** 2000-06-26 10:55:57 +00:00
Jim Meyering
204a9ee115 [HAVE_STDLIB_H]: Include stdlib.h. 2000-06-26 10:55:18 +00:00
Jim Meyering
43c77218e4 *** empty log message *** 2000-06-26 06:33:22 +00:00
Jim Meyering
9abfcc500a `id -Gn' (invoked by groups) would fail without giving a diagnostic
on malconfigured systems.
(print_user): Give a diagnostic if number->name lookup fails.
(print_group): Likewise.
2000-06-26 06:32:58 +00:00
Jim Meyering
ac4e995ed3 *** empty log message *** 2000-06-25 21:19:41 +00:00
Jim Meyering
d705cb724b (xmalloc, xrealloc): Remove functions.
Include xalloc.h.
Don't include <stdlib.h>.  Don't declare malloc, realloc.
2000-06-25 21:17:32 +00:00
Jim Meyering
e195cd0425 *** empty log message *** 2000-06-25 21:03:05 +00:00
Jim Meyering
0adbb52608 *** empty log message *** 2000-06-25 20:20:28 +00:00
Jim Meyering
c72f18b2c3 (TESTS): Add fail-perm. 2000-06-25 20:20:23 +00:00
Jim Meyering
0a0e82382c *** empty log message *** 2000-06-25 20:19:52 +00:00
Jim Meyering
34591391d1 *** empty log message *** 2000-06-25 20:15:22 +00:00
Jim Meyering
ab50b6880f *** empty log message *** 2000-06-25 15:58:47 +00:00
Jim Meyering
92ead9886c (copy_internal): Don't return return immediately after a
failed copy_dir call -- otherwise, the failure to read a single file
in a source directory would cause the containing destination directory
not to have owner/perms set properly.  Reported by Piotr Kwapulinski.
2000-06-25 15:50:51 +00:00
Jim Meyering
8a900584f1 *** empty log message *** 2000-06-25 15:50:38 +00:00
Jim Meyering
18252dc7fc *** empty log message *** 2000-06-25 15:50:29 +00:00
Jim Meyering
046110aa3f *** empty log message *** 2000-06-25 15:49:21 +00:00
Jim Meyering
a7109e215e *** empty log message *** 2000-06-25 14:15:22 +00:00
Jim Meyering
125499c09f *** empty log message *** 2000-06-25 08:49:02 +00:00
Jim Meyering
ca8a119779 Include stdio.h before wchar.h to work around
Linux header bug when _XOPEN_SOURCE is defined to 500.
2000-06-25 08:48:58 +00:00
Jim Meyering
484752fa80 *** empty log message *** 2000-06-25 06:54:36 +00:00
Jim Meyering
a9fad38c18 (print_unicode_char): Work around ansi2knr deficiency. 2000-06-25 06:54:32 +00:00
Jim Meyering
0d67b070d4 *** empty log message *** 2000-06-24 21:05:11 +00:00
Jim Meyering
402a8fdd9b If the compile-test says
strerror_r doesn't work, then resort to a `run'-test that works on
BeOS and segfaults on DEC Unix.
2000-06-24 21:04:44 +00:00
Jim Meyering
d488baf54a check for decl unconditionally 2000-06-24 14:03:10 +00:00
Jim Meyering
806c3e7fb8 . 2000-06-24 12:25:39 +00:00
Jim Meyering
102a04f2aa . 2000-06-24 12:21:52 +00:00
Jim Meyering
c66b857850 *** empty log message *** 2000-06-24 12:05:18 +00:00
Jim Meyering
f89094c7de Revive this file -- to try out an experimental
version of AC_FUNC_STRERROR_R that may work even on BeOS, a system
for which strerror does return char*, but which lacks a conveniently
accessible declaration of the function.
2000-06-24 12:05:08 +00:00
Jim Meyering
790705a7c1 *** empty log message *** 2000-06-24 12:01:29 +00:00
Jim Meyering
5061035e88 [!HAVE_DECL_STRERROR_R]: Declare strerror_r. 2000-06-24 12:01:03 +00:00
Jim Meyering
a2d975a44d Lots of minor rewording and grammar correction.
From Brian Youmans.
2000-06-24 11:53:51 +00:00
Jim Meyering
4604a7892b *** empty log message *** 2000-06-24 11:52:38 +00:00
Jim Meyering
4434e513bc *** empty log message *** 2000-06-24 07:38:05 +00:00
Jim Meyering
39f35a55d3 tweak copyright 2000-06-24 07:37:55 +00:00
Jim Meyering
a6e6a1e05b (sysv_sum_file): Avoid overflowing 32-bit accumulator
on files larger than 256 MB.
2000-06-24 07:37:44 +00:00
Jim Meyering
1cc0f0d268 . 2000-06-24 07:36:54 +00:00
Jim Meyering
a674a3c010 *** empty log message *** 2000-06-24 07:36:14 +00:00
Jim Meyering
fad24ae80d *** empty log message *** 2000-06-24 07:18:29 +00:00
Jim Meyering
d7ad628832 *** empty log message *** 2000-06-24 07:13:07 +00:00
Jim Meyering
dc53d8e807 *** empty log message *** 2000-06-24 07:12:56 +00:00
Jim Meyering
fff7bfc374 . 2000-06-23 21:09:12 +00:00
Jim Meyering
957ec50ac0 *** empty log message *** 2000-06-23 21:06:45 +00:00
Jim Meyering
fef29da8fb Include <wctype.h> after <wchar.h>,
for Solaris 2.5.
(mbrtowc, mbstate_t): Define substitutes if
HAVE_MBRTOWC && HAVE_WCHAR_H && !HAVE_MBSTATE_T_OBJECT.
(iswprint): Define to 1 if !defined iswprint && !HAVE_ISWPRINT,
not if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
2000-06-23 21:05:50 +00:00
Jim Meyering
284905fbb9 *** empty log message *** 2000-06-23 21:03:06 +00:00
Jim Meyering
266d043345 *** empty log message *** 2000-06-23 21:02:23 +00:00
Jim Meyering
a78edc50b8 (jm_PREREQ_QUOTEARG): Use AC_MBSTATE_T_OBJECT. Add check for iswprint. 2000-06-23 21:02:15 +00:00
Jim Meyering
f2d46d3970 New file, defining AC_MBSTATE_T_OBJECT. 2000-06-23 21:00:53 +00:00
Jim Meyering
085cdb43ed *** empty log message *** 2000-06-23 14:03:02 +00:00
Jim Meyering
6273f25d7d *** empty log message *** 2000-06-23 13:50:42 +00:00
Jim Meyering
1a5bab10b7 Add missing AC_MSG_RESULT.
Reported by Bruno Haible.
2000-06-23 13:49:17 +00:00
Jim Meyering
4e56a001c6 s/AC_MSG_CHECKING/AC_CHECKING/.
Suggestion from Bruno Haible.
2000-06-23 13:43:41 +00:00
Jim Meyering
cd64b836fc *** empty log message *** 2000-06-22 17:10:56 +00:00
Jim Meyering
62e3f1f1ef (main): Correct a comment. 2000-06-22 17:10:51 +00:00
Jim Meyering
1407c2894a *** empty log message *** 2000-06-21 20:23:21 +00:00
Jim Meyering
5e3ab81b7a (AC_REPLACE_FUNCS): Add getpass. 2000-06-21 20:23:14 +00:00
Jim Meyering
c514878446 ansideclify 2000-06-21 20:21:03 +00:00
Jim Meyering
9f0aa11144 New file, from Bruno Haible. Required for BeOS. 2000-06-21 20:20:27 +00:00
Jim Meyering
50f86c9fe7 *** empty log message *** 2000-06-21 20:16:10 +00:00
Jim Meyering
978bf5f750 (xgetcwd): If the required pathname length is smaller
than 1024, return a memory chunk of least possible size, instead
of size PATH_MAX + 2. In the loop, increment the size proportionally.
Use free/xmalloc instead of xrealloc to avoid copying for very long paths.
2000-06-21 20:16:03 +00:00
Jim Meyering
0c3c6ef55e *** empty log message *** 2000-06-21 14:47:04 +00:00
Jim Meyering
0ce8428a9d *** empty log message *** 2000-06-21 13:00:54 +00:00
Jim Meyering
fc71e28b65 (canon_host): Use malloc and memcpy to copy an
address, not strdup.  Include <stdlib.h> and don't declare free().
2000-06-21 13:00:49 +00:00
Jim Meyering
d32395693a *** empty log message *** 2000-06-21 12:56:40 +00:00
Jim Meyering
bb6ebcc333 (path_concat): Don't access dir[-1] if dir is the empty string. 2000-06-21 12:56:33 +00:00
Jim Meyering
08cd18bc45 include getstr.h 2000-06-21 09:56:42 +00:00
Jim Meyering
c60941056f *** empty log message *** 2000-06-21 09:21:52 +00:00
Jim Meyering
ddcbe0decc (libfetish_a_SOURCES): Add getstr.c.
(noinst_HEADERS): Add getstr.h.
2000-06-21 09:21:22 +00:00
Jim Meyering
6b01706633 (getstr): Remove private (and out of date) version of this function.
(cut_fields): Adjust caller to use the just-extended one in ../lib.
2000-06-21 09:20:40 +00:00
Jim Meyering
791fddaac0 *** empty log message *** 2000-06-21 09:20:23 +00:00
Jim Meyering
468b38dfad *** empty log message *** 2000-06-21 09:16:21 +00:00
Jim Meyering
912179f001 (getstr): Move into a separate file. 2000-06-21 09:12:30 +00:00
Jim Meyering
b41ca587a1 copyright date 2000-06-21 09:10:32 +00:00
Jim Meyering
671fdfa887 *** empty log message *** 2000-06-21 09:09:57 +00:00
Jim Meyering
b865bd0619 New file, extracted from getline.c, with the following
changes: new parameter, delim2; both delim[12] parameters have type
`int', not `char'.  The latter would lose with 8-bit delimiters.
2000-06-21 09:09:22 +00:00
Jim Meyering
7b6e7a7341 *** empty log message *** 2000-06-21 09:02:48 +00:00
Jim Meyering
75d9e7ca5c New test for that. 2000-06-21 09:02:42 +00:00
Jim Meyering
e1e0683c82 (valid_options): Don't segfault on `stty erase -'. 2000-06-21 07:29:03 +00:00
Jim Meyering
4be8db746e *** empty log message *** 2000-06-21 07:28:13 +00:00
Jim Meyering
20deee54fc *** empty log message *** 2000-06-20 06:55:04 +00:00
Jim Meyering
2ed1f74efe *** empty log message *** 2000-06-20 06:46:41 +00:00
Jim Meyering
b1c4d0148a (main): Fix off-by-argc test, so +N-style options are recognized once again.
Reported by Geoff Keunning.
Fix typo in diagnostic: s/compare/skip/.
2000-06-20 06:46:28 +00:00
Jim Meyering
700b4bde5e *** empty log message *** 2000-06-20 06:44:21 +00:00
Jim Meyering
759740c7e2 *** empty log message *** 2000-06-19 09:50:25 +00:00
Jim Meyering
6574dd60d9 (AC_REPLACE_FUNCS): Remove mkdir. 2000-06-19 09:50:20 +00:00
Jim Meyering
f4bfd0cb38 . 2000-06-19 09:48:46 +00:00
Jim Meyering
243036c5fb [HAVE_NLIST_H] (NLIST_STRUCT): Define. 2000-06-19 07:25:01 +00:00
Jim Meyering
5debbcc139 revert last change 2000-06-19 07:19:41 +00:00
Jim Meyering
5b728e9bad *** empty log message *** 2000-06-19 06:55:11 +00:00
Jim Meyering
a49d66ffdf . 2000-06-19 06:51:58 +00:00
Jim Meyering
fa168b1e06 *** empty log message *** 2000-06-18 18:17:03 +00:00
Jim Meyering
570ad2486a Include memory.h, string.h, and/or strings.h as needed.
(this snippet comes from src/system.h).
2000-06-18 18:16:54 +00:00
Jim Meyering
1b63505cf9 *** empty log message *** 2000-06-18 18:08:15 +00:00
Jim Meyering
5a14292fa3 (jm_AC_FUNC_LINK_FOLLOWS_SYMLINK): Change the
`checking whether...' message to be consistent with that of the
lstat test.
2000-06-18 18:07:51 +00:00
Jim Meyering
47f6723289 . 2000-06-18 17:47:39 +00:00
Jim Meyering
890e86b6f9 s/NLIST_STRUCT/HAVE_NLIST_H/. Remove big
multi-platform `#ifndef NLIST_STRUCT' block.
2000-06-18 06:17:54 +00:00
Jim Meyering
24c39da8d3 *** empty log message *** 2000-06-17 19:24:59 +00:00
Jim Meyering
4d8f97fea7 Don't fail (just exit 77) if strip doesn't work.
Add canonical trap/mkdir/cd, plus exit portability cruft.
2000-06-17 19:24:39 +00:00
Jim Meyering
a6ef8dfbab . 2000-06-17 18:47:21 +00:00
Jim Meyering
cb06271257 . 2000-06-17 18:46:57 +00:00
Jim Meyering
bb03de1c1d . 2000-06-17 18:46:16 +00:00
Jim Meyering
005d0a41ea *** empty log message *** 2000-06-17 18:35:44 +00:00
Jim Meyering
b657cf747d s/AM_FUNC_GETLOADAVG/AC_FUNC_GETLOADAVG/ 2000-06-17 18:34:33 +00:00
Jim Meyering
89f447ce9f (AM_FUNC_GETLOADAVG): Replace with AC_FUNC_GETLOADAVG
from autoconf, and tweak the latter to accept an optional argument.
2000-06-17 18:33:50 +00:00
Jim Meyering
e6588db39b *** empty log message *** 2000-06-17 18:31:59 +00:00
Jim Meyering
ad0f6161db (jm_GLIBC21): Define GLIBC21 for Makefiles, not for C. 2000-06-17 18:31:51 +00:00
Jim Meyering
eea83d97cb *** empty log message *** 2000-06-16 12:51:33 +00:00
Jim Meyering
ff5aea354f (adjust_value): New function.
(human_readable_inexact): Apply rounding style even when
printing approximate values.
2000-06-16 12:51:28 +00:00
Jim Meyering
a6b9441450 (print_size): Round disk usage up. 2000-06-16 12:50:27 +00:00
Jim Meyering
78362b9aa4 (print_dir, gobble_file, print_long_format, print_file_name_and_frills):
Round disk usage up.
2000-06-16 12:49:52 +00:00
Jim Meyering
f570d032b4 (df_readable): New arg for rounding style.
Round negative numbers correctly.
(show_dev): Round disk usage up and disk free space down.
2000-06-16 12:49:20 +00:00
Jim Meyering
0e2ebc67e2 *** empty log message *** 2000-06-16 12:48:22 +00:00
Jim Meyering
2795faa36f (copy_reg): Give a slightly better diagnostic. 2000-06-16 12:47:36 +00:00
Jim Meyering
90d6a55246 *** empty log message *** 2000-06-15 19:46:54 +00:00
Jim Meyering
998ec04ca6 . 2000-06-15 13:21:12 +00:00
Jim Meyering
bbf6278831 *** empty log message *** 2000-06-15 12:50:53 +00:00
Jim Meyering
c659fb7125 *** empty log message *** 2000-06-15 12:47:46 +00:00
Jim Meyering
cbb9845165 *** empty log message *** 2000-06-15 12:43:28 +00:00
Jim Meyering
59845523f3 *** empty log message *** 2000-06-15 12:21:20 +00:00
Jim Meyering
fbc3c192c1 (human_readable_inexact): Allow an input block
size that is not a multiple of the output block size, and vice versa.
2000-06-15 12:21:10 +00:00
Jim Meyering
862fc25f11 *** empty log message *** 2000-06-15 12:11:18 +00:00
Jim Meyering
8591cce725 tweak comment 2000-06-15 12:11:14 +00:00
Jim Meyering
e18cb636a8 Add tests for getdate.y fix. 2000-06-15 12:10:15 +00:00
Jim Meyering
474a9f7a56 *** empty log message *** 2000-06-15 07:58:06 +00:00
Jim Meyering
b7aa5f3206 (get_date): Apply relative times after time zone indicator, not before. 2000-06-15 07:57:58 +00:00
Jim Meyering
c787140255 *** empty log message *** 2000-06-14 19:44:39 +00:00
Jim Meyering
94c7b9bcfc *** empty log message *** 2000-06-14 17:06:40 +00:00
Jim Meyering
b8264a299d (framework_failure): Initialize this instead of test_failure. 2000-06-14 16:53:36 +00:00
Jim Meyering
26ceb4bc22 *** empty log message *** 2000-06-14 07:43:46 +00:00
Jim Meyering
80530f9ebf . 2000-06-13 09:19:08 +00:00
Jim Meyering
ab6ddc13f2 (all-local): Depend on lstat.c and stat.c. 2000-06-13 09:18:30 +00:00
Jim Meyering
e784cd8520 *** empty log message *** 2000-06-13 09:08:50 +00:00
Jim Meyering
54e57758aa [!HAVE_DECL_FREE]: Declare free in lstat.c. 2000-06-13 09:08:47 +00:00
Jim Meyering
787e2d6289 *** empty log message *** 2000-06-13 09:06:10 +00:00
Jim Meyering
b198a20555 Include <stdlib.h> in lstat, to declare "free". 2000-06-13 09:05:16 +00:00
Jim Meyering
54ab4a172f *** empty log message *** 2000-06-12 08:42:18 +00:00
Jim Meyering
1af3ad04de Clean up.
Be careful to remove temp directory upon interrupt.
2000-06-12 08:42:08 +00:00
Jim Meyering
0eaacfd00a remove RM 2000-06-12 08:34:00 +00:00
Jim Meyering
5c063f91ff . 2000-06-12 08:20:46 +00:00
Jim Meyering
bf6f52d7f5 . 2000-06-12 08:19:36 +00:00
Jim Meyering
132f9c716e *** empty log message *** 2000-06-12 08:13:10 +00:00
Jim Meyering
b89b71f63e . 2000-06-12 07:42:01 +00:00
Jim Meyering
675538e965 *** empty log message *** 2000-06-12 06:59:30 +00:00
Jim Meyering
14e29d814e *** empty log message *** 2000-06-12 06:10:28 +00:00
Jim Meyering
5bdf244d0d (TESTS): Add diag. 2000-06-12 06:10:23 +00:00
Jim Meyering
3e9e02727b (main): Give the correct diagnostic when using the
--target-dir=DIR option, but no arguments.
Patch from Michael Stone.  Reported by herbert@gondor.apana.org.au.
2000-06-12 06:09:32 +00:00
Jim Meyering
9af1ed39b5 *** empty log message *** 2000-06-12 06:07:42 +00:00
Jim Meyering
32dd0d64b9 *** empty log message *** 2000-06-12 06:01:06 +00:00
Jim Meyering
66fcd6e2eb *** empty log message *** 2000-06-12 05:51:16 +00:00
Jim Meyering
d4f4a5c5f1 *** empty log message *** 2000-06-09 23:59:51 +00:00
Jim Meyering
9a684a5b1f *** empty log message *** 2000-06-09 23:28:57 +00:00
Jim Meyering
9fea42bfd6 . 2000-06-09 23:28:54 +00:00
Jim Meyering
e29c5e38f8 Typo-fixes and some clean-up from Brian Youmans. 2000-06-09 22:59:04 +00:00
Jim Meyering
3c1a0b9db7 tweak references after Brian's changes 2000-06-08 20:17:59 +00:00
Jim Meyering
14a2802aba A few typos and minor formatting fixes. 2000-06-08 17:01:51 +00:00
Jim Meyering
736995d606 (Multiple Changes): Fix typo. 2000-06-08 16:56:30 +00:00
Jim Meyering
5cce6821e1 *** empty log message *** 2000-06-06 21:42:04 +00:00
Jim Meyering
ced45c88d4 . 2000-06-06 21:40:56 +00:00
Jim Meyering
b810bd54a0 *** empty log message *** 2000-06-06 20:30:59 +00:00
Jim Meyering
179f99492b (AC_SYS_LARGEFILE_FLAGS,
AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
(AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
(AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY.
All uses changed.
Instead of inspecting the output of getconf, try to compile the
test program without and with the macro definition.
(AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check
for getconf.  Instead, check for the needed flags by compiling
test programs.
2000-06-06 20:30:34 +00:00
Jim Meyering
a605579011 (alpha_subdir): Factor out `gnu/fetish'. 2000-06-06 20:09:35 +00:00
Jim Meyering
0c0c2d5f40 *** empty log message *** 2000-06-04 21:58:42 +00:00
Jim Meyering
55babc7fe1 *** empty log message *** 2000-06-04 13:28:45 +00:00
Jim Meyering
1f07d34ed2 Include <config.h> if HAVE_CONFIG_H. 2000-06-04 13:20:20 +00:00
Jim Meyering
8e2e012dc9 . 2000-06-04 08:13:25 +00:00
Jim Meyering
3962d775bf Put kludge in if-then...fi block. 2000-06-04 07:30:07 +00:00
Jim Meyering
1faa6a399a *** empty log message *** 2000-06-04 06:53:32 +00:00
Jim Meyering
98a1d5e72a (show_point) [HAVE_REALPATH && !HAVE_RESOLVEPATH]:
Cast undeclared `realpath' to char* to avoid warning.
2000-06-04 06:51:46 +00:00
Jim Meyering
985cf06296 (getugroups): Cast -1 to gid_t, for systems like
SunOS4.1.4 for which gid_t is an unsigned type.
2000-06-04 06:47:31 +00:00
Jim Meyering
377d7cdb85 *** empty log message *** 2000-06-04 06:41:13 +00:00
Jim Meyering
86c8226819 move vmp decl back out to the scope where it belongs 2000-06-03 22:09:03 +00:00
Jim Meyering
e5f1a12c6b *** empty log message *** 2000-06-03 21:47:48 +00:00
Jim Meyering
c588f96c37 [!HAVE_DECL_MEMCHR]: Declare memchr. 2000-06-03 21:47:37 +00:00
Jim Meyering
51cee2cf8d *** empty log message *** 2000-06-03 12:41:19 +00:00
Jim Meyering
b0619089c9 (jm_PREREQ_HUMAN): Use []-quoted list in AC_CHECK_DECLS,
now that autoconf requires that.
2000-06-03 12:40:56 +00:00
Jim Meyering
e78fd6ee39 *** empty log message *** 2000-06-03 12:22:37 +00:00
Jim Meyering
2e8629e442 Add a kludge to make autoheader emit the required
#undefs.  E.g., #undef HAVE_DECL_FERROR_UNLOCKED.
Use []-quoted list in AC_CHECK_DECLS, now that autoconf requires that.
2000-06-03 12:22:33 +00:00
Jim Meyering
111cdb39c3 . 2000-06-03 08:34:45 +00:00
Jim Meyering
1b306b070e (install-exec-local): On systems with glibc-2.1 or
newer, don't install charset.alias.
2000-06-03 08:34:34 +00:00
Jim Meyering
70ac95bbb2 Change the Linux/glibc rules so they become empty on glibc-2.1 or newer. 2000-06-03 08:34:18 +00:00
Jim Meyering
43585ddb5e *** empty log message *** 2000-06-03 08:33:04 +00:00
Jim Meyering
410cb32814 Add comment to AC_DEFINE_UNQUOTED use. 2000-06-03 08:29:33 +00:00
Jim Meyering
ea146bfd07 . 2000-06-03 08:26:05 +00:00
Jim Meyering
534576fad0 Use jm_GLIBC21. 2000-06-03 08:25:33 +00:00
Jim Meyering
6f7ac74eb3 New file. From Bruno Haible. 2000-06-03 08:23:54 +00:00
Jim Meyering
f6639dbe36 *** empty log message *** 2000-06-03 08:19:42 +00:00
Jim Meyering
f29147b4a1 *** empty log message *** 2000-06-03 08:18:18 +00:00
Jim Meyering
757e85d993 *** empty log message *** 2000-06-03 08:15:24 +00:00
Jim Meyering
b662dfc657 Allow -v as synonym for --verbose, to be consistent with other fileutils. 2000-06-03 08:11:08 +00:00
Jim Meyering
8cb9b753c5 Allow -v as synonym for --verbose, to be consistent with other fileutils. 2000-06-03 08:10:37 +00:00
Jim Meyering
2d5e52c70d (usage): Document that -v is a synonym for --verbose. 2000-06-03 08:09:53 +00:00
Jim Meyering
4eb4f8c624 *** empty log message *** 2000-06-02 21:49:50 +00:00
Jim Meyering
59ee5c9f35 *** empty log message *** 2000-06-02 11:54:35 +00:00
Jim Meyering
209099c9d9 Back out last change. Instead, do this...
(read_filesystem_list) [MOUNTED_VMOUNT]: Set the me_dummy
member using the same `ignore'-testing code.
2000-06-02 11:20:47 +00:00
Jim Meyering
8f245c6f2c (ME_DUMMY): Add `autofs' to the list of ignored fs_type strings.
From Mark D. Roth.
2000-06-02 11:20:30 +00:00
Jim Meyering
8208033b86 *** empty log message *** 2000-05-29 21:06:20 +00:00
Jim Meyering
afa54698c9 Adapt to fit new semantics of `cp -d'. 2000-05-29 21:05:22 +00:00
Jim Meyering
a4791b30ea *** empty log message *** 2000-05-29 21:05:13 +00:00
Jim Meyering
f06a2374fd Allow `cp -d -u' to copy one symlink onto another that's identical.
(copy_internal): Change the || to ^ in the big sameness
test, so copying one symlink onto another, identical one doesn't fail here.
If the symlink call fails, don't report the failure if the destination
already exists and is a symlink pointing to the proper name.
2000-05-29 21:05:07 +00:00
Jim Meyering
ff9eb12809 . 2000-05-29 20:44:25 +00:00
Jim Meyering
472729831e (TESTS): Add slink-2-slink. 2000-05-29 20:44:03 +00:00
Jim Meyering
4fc0af40aa *** empty log message *** 2000-05-29 20:41:10 +00:00
Jim Meyering
11c6d21d52 (read_filesystem_list) [MOUNTED_VMOUNT]: Ignore mounts
with the `ignore' attribute.  Based on a patch from Mark D. Roth.
2000-05-29 16:23:45 +00:00
Jim Meyering
ab2c79328e *** empty log message *** 2000-05-29 16:23:04 +00:00
Jim Meyering
40acdda1b3 . 2000-05-29 16:22:03 +00:00
Jim Meyering
ad435461eb *** empty log message *** 2000-05-29 16:20:07 +00:00
Jim Meyering
8b59f3a9e5 *** empty log message *** 2000-05-29 15:43:12 +00:00
Jim Meyering
1a0017092d . 2000-05-28 21:29:14 +00:00
Jim Meyering
769aaffc24 bump serial number 2000-05-28 21:28:05 +00:00
Jim Meyering
2981d74992 (AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): Rename from
jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
2000-05-28 21:27:04 +00:00
Jim Meyering
5ccb8ddd83 *** empty log message *** 2000-05-28 21:24:54 +00:00
Jim Meyering
6aff8653fe (AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): Rename from
jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
2000-05-28 21:24:42 +00:00
Jim Meyering
42cfd00757 . 2000-05-28 21:21:42 +00:00
Jim Meyering
3cec0fda7b *** empty log message *** 2000-05-28 17:36:36 +00:00
Jim Meyering
4957557813 s/jm_FUNC_STRERROR_R/AC_FUNC_STRERROR_R/. 2000-05-28 16:49:22 +00:00
Jim Meyering
619bbd4ce6 . 2000-05-28 16:48:25 +00:00
Jim Meyering
15a9b83bdd . 2000-05-27 21:26:50 +00:00
Jim Meyering
d73513786d Arrange to call close_stdout upon exit.
Don't close stdout explicitly.
(usage): Add missing backslash at end of line.
(write_header): Remove now-unused COMMENT parameter.
Update all callers.
2000-05-27 21:17:39 +00:00
Jim Meyering
8ccf29f7fe Arrange to call close_stdout upon exit.
Don't close stdout explicitly.  Replace uses of global constant,
output_desc, with uses of STDOUT_FILENO.
2000-05-27 21:14:26 +00:00
Jim Meyering
c8afcbe2e7 *** empty log message *** 2000-05-26 21:39:19 +00:00
Jim Meyering
37cbfc8c6b Use $cross_compiling', not $ac_cv_prog_cc_cross'. 2000-05-26 21:39:16 +00:00
Jim Meyering
40b91250bc *** empty log message *** 2000-05-25 07:14:22 +00:00
Jim Meyering
87da84ba81 (close_stdout_wrapper): Don't dereference NULL pointer.
From Bob Proulx.
2000-05-25 07:14:13 +00:00
Jim Meyering
8b45419759 *** empty log message *** 2000-05-24 07:50:18 +00:00
Jim Meyering
9ca281e5b3 Use []-quoted list in AC_CHECK_MEMBERS, now that autoconf requires that. 2000-05-24 07:50:05 +00:00
Jim Meyering
d2586a214a Use []-quoted list in AC_CHECK_MEMBERS, now that autoconf requires that. 2000-05-24 07:49:38 +00:00
Jim Meyering
429093f9ad (jm_LIB_CHECK): Use []-quoted list in
AC_CHECK_MEMBERS, now that autoconf requires that.
2000-05-24 07:49:09 +00:00
Jim Meyering
35aaf0b09d (jm_PREREQ_READUTMP): Use []-quoted list in
AC_CHECK_MEMBERS, now that autoconf requires that.
2000-05-24 07:48:04 +00:00
Jim Meyering
3ed09573d7 (jm_CHECK_DECLS): Use []-quoted list in AC_CHECK_DECLS,
now that autoconf requires that.
2000-05-24 07:46:55 +00:00
Jim Meyering
449fa131d6 (head_file): Use STDIN_FILENO in place of `0'.
(main): Likewise.
2000-05-24 07:10:12 +00:00
Jim Meyering
0de83d1d81 *** empty log message *** 2000-05-23 21:14:40 +00:00
Jim Meyering
2aeb21d67a Add traps to clean up.
Correct broken running-as-root test.
2000-05-23 21:14:33 +00:00
Jim Meyering
dfdfbc22b3 Exit 77 when run as root. Reported by Andreas Schwab. 2000-05-23 21:13:28 +00:00
Jim Meyering
5f3b8f3038 . 2000-05-23 08:42:18 +00:00
Jim Meyering
f29de82520 . 2000-05-22 22:08:15 +00:00
Jim Meyering
1117d0586a *** empty log message *** 2000-05-22 22:07:29 +00:00
Jim Meyering
36595ef3f7 Require jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK. 2000-05-22 08:35:36 +00:00
Jim Meyering
b8c130d091 Remove old, now-unnecessary `#ifdef __MSDOS__' block. 2000-05-22 06:24:50 +00:00
Jim Meyering
b5431fdfdf *** empty log message *** 2000-05-21 07:14:41 +00:00
Jim Meyering
24f2bd8c9f Arrange to call close_stdout upon exit. Don't close stdout explicitly. 2000-05-20 22:06:38 +00:00
Jim Meyering
ac81803363 Arrange to call close_stdout upon exit. Don't close stdout explicitly. 2000-05-20 22:04:40 +00:00
Jim Meyering
b2c7c6055d Arrange to call close_stdout upon exit. Don't close stdout explicitly. 2000-05-20 22:04:16 +00:00
Jim Meyering
c75dc9689e Arrange to call close_stdout upon exit. Don't close stdout explicitly. 2000-05-20 22:03:55 +00:00
Jim Meyering
02f7878928 Arrange to call close_stdout upon exit. Don't close stdout explicitly.
(but set exit status and file name, too)
2000-05-20 22:03:12 +00:00
Jim Meyering
a311f0eac5 . 2000-05-20 21:48:55 +00:00
Jim Meyering
482aa7fc64 *** empty log message *** 2000-05-20 15:49:03 +00:00
Jim Meyering
8985201718 *** empty log message *** 2000-05-20 15:46:52 +00:00
Jim Meyering
7de6407b72 *** empty log message *** 2000-05-20 15:45:10 +00:00
Jim Meyering
579105347d *** empty log message *** 2000-05-20 15:43:44 +00:00
Jim Meyering
039c76fc63 *** empty log message *** 2000-05-20 15:39:13 +00:00
Jim Meyering
8f8938e366 add format args to match new %lu directives 2000-05-20 15:37:26 +00:00
Jim Meyering
15ecc0f435 tweak warning diagnostic 2000-05-20 12:41:13 +00:00
Jim Meyering
b34c9d22e4 *** empty log message *** 2000-05-20 09:46:19 +00:00
Jim Meyering
97b943feb3 (jm_PREREQ_HUMAN): New macro.
(jm_PREREQ): Use it.
2000-05-20 09:46:14 +00:00
Jim Meyering
836e28186c (TESTS): Add i-2. 2000-05-20 09:45:08 +00:00
Jim Meyering
91d525cd50 *** empty log message *** 2000-05-20 09:44:46 +00:00
Jim Meyering
586b7bf510 *** empty log message *** 2000-05-20 09:44:20 +00:00
Jim Meyering
d0cc040dd8 *** empty log message *** 2000-05-20 09:43:40 +00:00
Jim Meyering
358c9c706a *** empty log message *** 2000-05-20 09:35:13 +00:00
Jim Meyering
dd19256dcd . 2000-05-20 09:31:14 +00:00
Jim Meyering
8fad3eb9e0 . 2000-05-20 09:30:01 +00:00
Jim Meyering
1adc899668 . 2000-05-20 09:24:29 +00:00
Jim Meyering
de4a1fe053 *** empty log message *** 2000-05-20 09:23:48 +00:00
Jim Meyering
5c34a06b45 (struct File_spec) [have_device, st_dev]: New members 2000-05-20 09:23:41 +00:00
Jim Meyering
f5fb72e12c Save device number as well as inode number for each directory.
(struct active_dir_ent) [st_dev]: New member.
[st_ino]: Rename from `inum'.
(make_active_dir_ent) [device]: New parameter.
(hash_compare_active_dir_ents): Compare using SAME_INODE macro.
(fspec_init_common): New function, factored out.
(fspec_init_file): Initialize have_device member.
(fspec_get_full_mode): Remove parameter.  Update caller.
Set have_device and st_dev members.
2000-05-20 09:23:27 +00:00
Jim Meyering
8fd90d4b2b add RUN_EXPENSIVE_TESTS junk 2000-05-20 09:09:18 +00:00
Jim Meyering
d402b210ea don't use $test 2000-05-20 08:52:03 +00:00
Jim Meyering
619ffb2bff fail if final rm fails 2000-05-20 08:48:39 +00:00
Jim Meyering
abd2b295f2 Clean up. 2000-05-20 08:42:44 +00:00
Jim Meyering
396069fce5 reorder so as not to use `head -c N' 2000-05-20 08:11:51 +00:00
Jim Meyering
a5c0da5365 (LC_ALL): Set it unconditionally. 2000-05-19 22:37:45 +00:00
Jim Meyering
bc009f5b5f warn the user it will take a while 2000-05-19 07:12:09 +00:00
Jim Meyering
5c136d939e put hash at the end of the list 2000-05-19 07:10:09 +00:00
Jim Meyering
b55a5cc86c (rm): Combine adjacent fputc and fprintf. 2000-05-18 21:10:55 +00:00
Jim Meyering
4d453f5691 remove some parens from some cpp lines 2000-05-18 14:56:42 +00:00
Jim Meyering
9d67112156 (remove_dir): Detect (and fail upon) attempt to subvert a running `rm -r'.
Reported by Morten Welinder.
2000-05-18 14:49:34 +00:00
Jim Meyering
c880f6f9e0 . 2000-05-18 14:28:09 +00:00
Jim Meyering
8469888ca2 *** empty log message *** 2000-05-18 14:26:19 +00:00
Jim Meyering
83616b114e (TESTS): Add hash. 2000-05-18 14:26:00 +00:00
Jim Meyering
f01f28a92a *** empty log message *** 2000-05-18 14:24:58 +00:00
Jim Meyering
ba798c5998 *** empty log message *** 2000-05-18 11:12:39 +00:00
Jim Meyering
aa78add2de (hash_rehash): Fix a nasty bug: copy the free entry list
back, too, since it may have been modified by allocate_entry.
(hash_delete): Rewrite not to use both(!) the assignment operator
and the comma operator in an if-expression.
2000-05-18 11:06:39 +00:00
Jim Meyering
3cf14979b7 *** empty log message *** 2000-05-17 12:21:02 +00:00
Jim Meyering
1ca5f870b6 tweak comment 2000-05-17 12:19:39 +00:00
Jim Meyering
1cd58148cd *** empty log message *** 2000-05-16 14:42:22 +00:00
Jim Meyering
a4f0b7b42e <sys/stat.h>, <sys/types.h>, <unistd.h>, (STDOUT_FILENO):
Remove; no longer needed.
"quotearg.h": Add include.
(file_name): Do not bother to explicitly initialize to NULL; it's less
efficient on some hosts.
(close_stdout_status): Remove test as to whether stdout was already
closed; it breaks for the case "echo x | sort >&-".
Quote file name colons.
Do not assume that _("write error") lacks format strings.
2000-05-16 14:36:55 +00:00
Jim Meyering
71f60a998c *** empty log message *** 2000-05-15 20:42:08 +00:00
Jim Meyering
f13c5ee9ce (do_link): Use complete strings in diagnostics so they
are easier to translate.  Reported by Michel Robitaille.
(main): Drop support for the case in which S_ISLNK wasn't defined.
It was broken in any case.
2000-05-15 20:41:52 +00:00
Jim Meyering
6385fbd99a *** empty log message *** 2000-05-15 10:22:01 +00:00
Jim Meyering
73417841eb (close_stdout_set_file_name): Declare. 2000-05-15 10:21:56 +00:00
Jim Meyering
dba50eec49 (close_stdout_set_file_name): New function.
(close_stdout_status): Use new file-scoped global.
Return right away if fstat says the stdout file descriptor is invalid.
2000-05-15 10:21:25 +00:00
Jim Meyering
3400cc7f78 . 2000-05-15 08:00:19 +00:00
Jim Meyering
3c5405d298 *** empty log message *** 2000-05-15 07:18:44 +00:00
Jim Meyering
be72ac078c Set LC_ALL to `C' to avoid failure when the
current locale is not C (POSIX).  From Matthew Clarke.
2000-05-15 07:18:38 +00:00
Jim Meyering
6d38725e21 *** empty log message *** 2000-05-15 07:18:17 +00:00
Jim Meyering
4e5d2ac6d2 *** empty log message *** 2000-05-15 07:11:30 +00:00
Jim Meyering
cbd2839f1d (version_etc_copyright): Update the copyright string
that goes into all --version output.
2000-05-15 07:11:16 +00:00
Jim Meyering
a3ac01b48d (test_vector): Skip the %c test on SunOS4 systems.
Suggested by Paul Eggert.  Reported by Volker Borchert.
2000-05-15 07:08:38 +00:00
Jim Meyering
00df9725bb *** empty log message *** 2000-05-13 06:51:51 +00:00
Jim Meyering
81b16373ae Arrange to call close_stdout only upon exit. 2000-05-13 06:49:53 +00:00
Jim Meyering
47827e2ec2 Include closeout.h.
(usage): Don't call close_stdout here.
(close_stdout_wrapper): New, kludgey, function and file-scoped global.
(main): Register it with atexit.
2000-05-13 06:46:55 +00:00
Jim Meyering
68c6a5d828 *** empty log message *** 2000-05-12 22:39:10 +00:00
Jim Meyering
30c412049f Detect and report write failure of --help/--version. 2000-05-12 22:38:58 +00:00
Jim Meyering
f2d53500ae *** empty log message *** 2000-05-12 20:40:47 +00:00
Jim Meyering
fc64ba37d4 (copy_internal): Fix force and interactive tests. 2000-05-12 20:40:39 +00:00
Jim Meyering
a5c02a198b Unlike for mv, -i doesn't cancel the effect of -f
and -f doesn't cancel the effect of -i.
(main) ['f']: Don't reset `x.interactive'.
['i']: Don't reset `x.force'.
2000-05-12 20:39:34 +00:00
Jim Meyering
12bf65f915 Interpret as decimal, even if number starts with 0. 2000-05-12 20:31:39 +00:00
Jim Meyering
48ebc7d0b7 *** empty log message *** 2000-05-12 20:30:28 +00:00
Jim Meyering
b0fd0aa567 (string_to_integer): Restrict base to 10. 2000-05-12 20:30:22 +00:00
Jim Meyering
a1eab797d0 test new option 2000-05-12 08:56:03 +00:00
Jim Meyering
7f0b022e0d *** empty log message *** 2000-05-12 08:55:43 +00:00
Jim Meyering
1224b48d7f New option: --first-only
(anonymous enum) [CONVERT_FIRST_ONLY_OPTION]: Define.
(long_options): Add `first-only'.
(main): Handle new option.
2000-05-12 08:55:13 +00:00
Jim Meyering
3b8a52ccbe *** empty log message *** 2000-05-11 09:19:40 +00:00
Jim Meyering
605768d957 make the new tests a little smaller 2000-05-11 08:30:09 +00:00
Jim Meyering
45dcf53e6e New tests. 2000-05-11 08:28:51 +00:00
Jim Meyering
3f0c7988cf *** empty log message *** 2000-05-11 08:24:49 +00:00
Jim Meyering
51dbb91fdd *** empty log message *** 2000-05-11 07:24:35 +00:00
Jim Meyering
9590fbf43c (usage): Don't call close_stdout_status directly,
since that didn't cover --version output.
(main): Instead, call close_stdout_set_status and arrange to
call close_stdout via atexit.
2000-05-11 07:24:05 +00:00
Jim Meyering
5a3d9df9a1 (usage): Don't call close_stdout_status directly,
since that didn't cover --version output.
(main): Instead, call close_stdout_set_status and arrange to
call close_stdout via atexit.
2000-05-11 07:23:42 +00:00
Jim Meyering
70e5178bde (usage): Don't call close_stdout directly, since that
didn't cover --version output.
(main):  Arrange to call close_stdout via atexit, instead.
2000-05-11 07:21:33 +00:00
Jim Meyering
c693c5940b . 2000-05-11 07:17:36 +00:00
Jim Meyering
8c8e4286b5 append in subshell so we don't see this diagnostic:
./remove: t-shred.11626/file: Permission denied
2000-05-10 22:33:06 +00:00
Jim Meyering
ce8cf50e0a . 2000-05-10 16:40:30 +00:00
Jim Meyering
4071f9dcd5 (close_stdout_set_status): Declare. 2000-05-10 16:39:53 +00:00
Jim Meyering
ebd41d46d8 [default_exit_status]: New file-scoped variable.
(close_stdout_set_status): New function.
2000-05-10 16:39:35 +00:00
Jim Meyering
a210d7d35c Include sys/types.h in shred.c before including
sys/stat.h or system.h.  From John David Anglin.
2000-05-09 20:27:54 +00:00
Jim Meyering
b9c210715c back out last change -- the two should be separate 2000-05-09 20:27:11 +00:00
Jim Meyering
101160bdf9 *** empty log message *** 2000-05-09 20:26:04 +00:00
Jim Meyering
5c4406f731 Include sys/types.h in shred.c before including
sys/stat.h or system.h.  From John David Anglin.
2000-05-09 20:25:58 +00:00
Jim Meyering
721557bb21 *** empty log message *** 2000-05-09 12:37:47 +00:00
Jim Meyering
d7f56af947 *** empty log message *** 2000-05-09 11:00:13 +00:00
Jim Meyering
17bd8fb7fa *** empty log message *** 2000-05-09 06:32:31 +00:00
Jim Meyering
babf9bb7ac (case_GETOPT_VERSION_CHAR): Don't call close_stdout. 2000-05-09 06:32:24 +00:00
Jim Meyering
28ee33a9d8 *** empty log message *** 2000-05-09 05:50:09 +00:00
Jim Meyering
e90fed0bf7 renamed to libintl.m4 2000-05-09 05:44:51 +00:00
Jim Meyering
41a1348544 renamed from gettext.m4 2000-05-09 05:44:51 +00:00
Jim Meyering
2f925e9403 *** empty log message *** 2000-05-08 16:54:55 +00:00
Jim Meyering
1068a0005a Don't use touch in root test. Instead, append to
the test file, since now touch operates even on files which deny owner
write access.
2000-05-08 16:53:36 +00:00
Jim Meyering
cf197bb14a *** empty log message *** 2000-05-08 12:16:11 +00:00
Jim Meyering
34b63c88da *** empty log message *** 2000-05-08 12:01:46 +00:00
Jim Meyering
2fd73df635 . 2000-05-08 11:59:34 +00:00
Jim Meyering
31f5c39ace . 2000-05-08 10:10:26 +00:00
Jim Meyering
aa1ddd2e7d Don't include closeout.h.
(parse_long_options): Don't call close_stdout for --version.
2000-05-08 10:09:28 +00:00
Jim Meyering
fca7b20092 . 2000-05-07 21:11:59 +00:00
Jim Meyering
a90650cd3a *** empty log message *** 2000-05-07 21:03:19 +00:00
Jim Meyering
03faf39b22 Use UTC0, not just UTC, required for alphaev56-dec-osf4.0f. 2000-05-07 21:02:56 +00:00
Jim Meyering
acd3390874 *** empty log message *** 2000-05-07 15:02:30 +00:00
Jim Meyering
c263f45884 . 2000-05-07 15:00:48 +00:00
Jim Meyering
a41b145094 *** empty log message *** 2000-05-07 15:00:20 +00:00
Jim Meyering
661f74698e Include "closeout.h".
(usage): Call close_stdout just before exit.
2000-05-07 15:00:12 +00:00
Jim Meyering
c6b0fefde1 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:57:52 +00:00
Jim Meyering
2d4fd1ab6e Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:57:24 +00:00
Jim Meyering
c4d7de4d1c (usage): Call close_stdout_status. 2000-05-07 14:57:03 +00:00
Jim Meyering
7942b60d47 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:56:12 +00:00
Jim Meyering
c6bd79ad34 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:55:15 +00:00
Jim Meyering
52150ef51d Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:54:43 +00:00
Jim Meyering
071e5e3b25 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:53:15 +00:00
Jim Meyering
21f7f8fb60 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:52:54 +00:00
Jim Meyering
1a898f0449 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:52:16 +00:00
Jim Meyering
ab241ac3be Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:51:49 +00:00
Jim Meyering
d3683509b3 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:51:07 +00:00
Jim Meyering
ddb8aa8b9f (usage): Call close_stdout_status. 2000-05-07 14:50:39 +00:00
Jim Meyering
73ed5ed51e Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:49:06 +00:00
Jim Meyering
a3d40a9447 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:48:25 +00:00
Jim Meyering
309c1c3e47 Include "closeout.h".
(usage): Call close_stdout just before exit.
2000-05-07 14:47:44 +00:00
Jim Meyering
72bdac7271 Include "closeout.h".
(main): Call atexit with close_stdout.
2000-05-07 14:46:33 +00:00
Jim Meyering
f1013a1535 Include "closeout.h".
(main): Call atexit with close_stdout.
Remove explicit close_stdout.
2000-05-07 14:46:11 +00:00
Jim Meyering
e1133c7a28 Include "closeout.h".
(usage): Call close_stdout just before exit.
2000-05-07 14:41:19 +00:00
Jim Meyering
011b92f1c9 *** empty log message *** 2000-05-07 07:17:22 +00:00
Jim Meyering
5aa90a9946 ($Test::env{'rfc822-1'}): Add TZ=UTC. 2000-05-07 07:17:17 +00:00
Jim Meyering
c610f47650 . 2000-05-06 15:51:29 +00:00
Jim Meyering
d9e1e1dbd2 *** empty log message *** 2000-05-06 15:51:15 +00:00
Jim Meyering
b700e5cdfe *** empty log message *** 2000-05-06 15:45:33 +00:00
Jim Meyering
a83332dcd2 Undefine __strnlen and strnlen.
[!weak_alias]: Define __strnlen to strnlen.
2000-05-06 15:45:30 +00:00
Jim Meyering
20d55109b5 *** empty log message *** 2000-05-06 14:38:04 +00:00
Jim Meyering
95fad10ba3 (AC_REPLACE_FUNCS): Add strnlen. 2000-05-06 14:37:59 +00:00
Jim Meyering
e580f2a576 *** empty log message *** 2000-05-06 14:36:00 +00:00
Jim Meyering
0a63562cfa AC_REPLACE_FUNCS(atexit). 2000-05-06 14:35:16 +00:00
Jim Meyering
55b7281ec2 *** empty log message *** 2000-05-06 14:33:56 +00:00
Jim Meyering
b00705596d remove ifdef 2000-05-06 14:33:46 +00:00
Jim Meyering
6507fa63ce New file, from libiberty. 2000-05-06 14:33:22 +00:00
Jim Meyering
e074cde09b *** empty log message *** 2000-05-06 14:31:38 +00:00
Jim Meyering
9b6eb98d41 (EEXIST): Remove now-unused definition.
(ENOTEMPTY): Likewise.
(errno_rmdir_non_empty): Rewrite to use RMDIR_ERRNO_NOT_EMPTY,
which is determined by the autoconf test in m4/rmdir-errno.m4..
2000-05-06 14:31:32 +00:00
Jim Meyering
72efca1195 *** empty log message *** 2000-05-06 14:25:40 +00:00
Jim Meyering
884af44da8 (fetish_FUNC_RMDIR_NOTEMPTY): New macro and file. 2000-05-06 14:25:18 +00:00
Jim Meyering
c2a761780e Require fetish_FUNC_RMDIR_NOTEMPTY. 2000-05-06 14:25:07 +00:00
Jim Meyering
2c1ae1f436 . 2000-05-06 14:14:14 +00:00
Jim Meyering
ed0f130ea1 *** empty log message *** 2000-05-06 14:03:27 +00:00
Jim Meyering
a23b2bb948 (jm_FUNC_NANOSLEEP): Save and restore LIBS around
AC_SEARCH_LIBS call for nanosleep.
(LIB_NANOSLEEP): Set and AC_SUBST.
2000-05-06 14:03:19 +00:00
Jim Meyering
669034433d *** empty log message *** 2000-05-06 14:01:46 +00:00
Jim Meyering
97df7c4729 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to
be 500, instead of _GNU_SOURCE to be 1, to work around glibc
2.1.3 bug.  This avoids a clash when files like regex.c define
_GNU_SOURCE.
2000-05-06 14:01:39 +00:00
Jim Meyering
6206ee75ea *** empty log message *** 2000-05-06 13:47:44 +00:00
Jim Meyering
6b54234726 (get_charset_aliases): Use malloc, realloc and memcpy
instead of xmalloc, xrealloc, path_concat.
(locale_charset): Treat empty environment variables as absent.
(DIRECTORY_SEPARATOR, ISSLASH): New macros.
2000-05-06 13:47:38 +00:00
Jim Meyering
c141f3a34e (main): Warn about arguments, don't fail.
(usage): Call close_stdout_status from here as well as from main.
2000-05-06 13:18:00 +00:00
Jim Meyering
3140984fab Include "closeout.h".
(main): Call close_stdout.
2000-05-05 21:55:32 +00:00
Jim Meyering
19c397acdc Include "closeout.h".
(main): Call close_stdout.
2000-05-05 21:53:41 +00:00
Jim Meyering
80b5341cb8 Include "closeout.h".
(main): Call close_stdout.
2000-05-05 21:52:22 +00:00
Jim Meyering
f2fde491db Include "closeout.h".
(main): Call close_stdout.
2000-05-05 21:51:02 +00:00
Jim Meyering
e1c98ab3fb Include "closeout.h".
(main): Call close_stdout.
2000-05-05 21:49:44 +00:00
Jim Meyering
be9e62c6e0 *** empty log message *** 2000-05-05 21:42:20 +00:00
Jim Meyering
df9a764cbd *** empty log message *** 2000-05-05 21:41:53 +00:00
Jim Meyering
3684b16708 Exit nonzero upon write failure.
Include "closeout.h".
(main): Call close_stdout.
Reported by Ian Jackson via Michael Stone.
2000-05-05 21:41:29 +00:00
Jim Meyering
7dad7fd5c6 *** empty log message *** 2000-05-05 21:41:11 +00:00
Jim Meyering
856071f1da *** empty log message *** 2000-05-05 21:41:03 +00:00
Jim Meyering
ff1e216579 *** empty log message *** 2000-05-05 16:33:33 +00:00
Jim Meyering
554b19b9d1 (jm_MACROS): Save and restore LIBS around AC_SEARCH_LIBS call for clock_gettime.
(LIB_CLOCK_GETTIME): Set and AC_SUBST.
2000-05-05 16:33:26 +00:00
Jim Meyering
98e69d378e *** empty log message *** 2000-05-05 16:10:41 +00:00
Jim Meyering
00c483746f remove commented-out m4_default clause 2000-05-05 16:10:22 +00:00
Jim Meyering
7d4bd8f671 Update from autoconf. 2000-05-05 16:10:03 +00:00
Jim Meyering
46b48d2e0e *** empty log message *** 2000-05-05 15:05:09 +00:00
Jim Meyering
87a766e71a *** empty log message *** 2000-05-05 11:39:31 +00:00
Jim Meyering
5d65fd5e99 su doesn't work on Solaris2.6.
When checking for struct spwd.sp_pwdp, also include
<shadow.h>.  Reported by Dragos Harabor.
2000-05-05 11:39:25 +00:00
Jim Meyering
6a4a7cfe00 *** empty log message *** 2000-05-05 11:38:34 +00:00
Jim Meyering
2961a41dc3 (my-distcheck): Remove spurious blank line.
Remove $(DEPDIR) *after* making distclean, not before.
2000-05-04 09:33:34 +00:00
Jim Meyering
a0f78c6a82 *** empty log message *** 2000-05-04 07:19:34 +00:00
Jim Meyering
3e5e4aa3ac update from glibc -- solely white space changes 2000-05-04 07:19:24 +00:00
Jim Meyering
f4d3d21b14 *** empty log message *** 2000-05-04 07:13:40 +00:00
Jim Meyering
6a0899b4b6 filter through cppi 2000-05-04 07:12:59 +00:00
Jim Meyering
3d21ae4853 Update from glibc. 2000-05-04 07:12:43 +00:00
Jim Meyering
6405a85879 *** empty log message *** 2000-05-04 07:06:49 +00:00
Jim Meyering
91aee8ad4d Update from glibc. 2000-05-04 07:06:42 +00:00
Jim Meyering
3c13ac6c36 Update from glibc. 2000-05-04 06:41:26 +00:00
Jim Meyering
0605601f99 *** empty log message *** 2000-05-04 06:36:10 +00:00
Jim Meyering
c8fa96131e update from glibc 2000-05-04 06:35:49 +00:00
Jim Meyering
cea745beaa New file, from glibc. 2000-05-04 06:34:23 +00:00
Jim Meyering
647d5e6a70 *** empty log message *** 2000-05-04 05:35:04 +00:00
Jim Meyering
b53fe736bc Update from glibc. 2000-05-04 05:34:55 +00:00
Jim Meyering
f7fcc8c622 *** empty log message *** 2000-05-03 11:12:54 +00:00
Jim Meyering
be579a52e7 During ls, set LANGUAGE (for GNU gettext)
and LC_ALL (for systems which look at LC_MESSAGES).
2000-05-03 11:10:32 +00:00
Jim Meyering
c2262fcd90 use rm, not $RM 2000-05-03 11:09:07 +00:00
Jim Meyering
93e3e3a5a8 Define LC_ALL instead of LANG, in case the user has
LC_CTYPE or LC_ALL set. Define it and LANGUAGE before the first "sort" call.
2000-05-03 11:07:51 +00:00
Jim Meyering
92d235c21a Remove declaration of strndup. 2000-05-03 08:40:33 +00:00
Jim Meyering
900011c7de *** empty log message *** 2000-05-03 08:39:29 +00:00
Jim Meyering
0cb358268d *** empty log message *** 2000-05-03 08:37:57 +00:00
Jim Meyering
e6d69926e6 (!HAVE_DECL_STRNDUP): Declare strndup. 2000-05-03 08:37:40 +00:00
Jim Meyering
7e3bd1d897 *** empty log message *** 2000-05-03 08:37:11 +00:00
Jim Meyering
cd8042a77c (AC_CHECK_DECLS): Add strndup. 2000-05-03 08:37:03 +00:00
Jim Meyering
44bdb2f05a *** empty log message *** 2000-05-03 08:30:24 +00:00
Jim Meyering
38a059bf64 (AC_SYS_LARGEFILE): Define _GNU_SOURCE if
this is needed to make ftello visible (e.g. glibc 2.1.3).  Use
compile-time test, rather than inspecting host and OS, to
decide whether to define _LARGEFILE_SOURCE.
2000-05-03 08:30:18 +00:00
Jim Meyering
950eba9ba0 . 2000-05-02 14:07:39 +00:00
Jim Meyering
5fdc4f4666 *** empty log message *** 2000-05-02 06:57:00 +00:00
Jim Meyering
4c69db64f2 don't hard-code `rm' 2000-05-02 06:56:31 +00:00
Jim Meyering
acd9c429c0 (usage): Add the answer to `How do I remove a file named -f?' 2000-05-02 06:55:49 +00:00
Jim Meyering
e0263e15f1 *** empty log message *** 2000-05-01 14:59:21 +00:00
Jim Meyering
cb58624cef (full_write): Remove `FIXME' part of comment. 2000-05-01 14:40:08 +00:00
Jim Meyering
c488f85c66 *** empty log message *** 2000-05-01 14:15:17 +00:00
Jim Meyering
aa435d9982 *** empty log message *** 2000-05-01 14:10:38 +00:00
Jim Meyering
624dd54796 (change_attributes): Don't remove the destination file upon failure. 2000-05-01 14:09:19 +00:00
Jim Meyering
ef34c8704c [checked in with intention to back out...]
(change_attributes): Unlink the destination file
if either of the chown or the chmod calls fails.  Don't even attempt
the chmod if the chown fails.
Suggestion from Marc Olzheim.
2000-05-01 13:55:09 +00:00
Jim Meyering
b0d42f0a5c . 2000-05-01 11:40:52 +00:00
Jim Meyering
3491fe9797 *** empty log message *** 2000-05-01 08:36:29 +00:00
Jim Meyering
951abbe274 Use AC_MSG_CHECKING instead of obsolete AC_CHECKING. 2000-05-01 08:36:13 +00:00
Jim Meyering
392dd7af09 fix typos 2000-05-01 08:32:35 +00:00
Jim Meyering
9561e02b6a *** empty log message *** 2000-05-01 08:29:38 +00:00
Jim Meyering
e6bf5ecaf8 (jm_LIST_MOUNTED_FILESYSTEMS): Add BeOS support.
Based on a patch from Bruno Haible.
2000-05-01 08:29:28 +00:00
Jim Meyering
e511c84abe (read_filesystem_list): Add BeOS support. 2000-05-01 08:03:33 +00:00
Jim Meyering
cc5b8b2e79 (jm_LIST_MOUNTED_FILESYSTEMS): Add BeOS support. 2000-05-01 07:58:34 +00:00
Jim Meyering
56b16d84df *** empty log message *** 2000-04-30 21:48:27 +00:00
Jim Meyering
034fbbd8ac (O_NOCTTY): Define if not defined already.
(touch): Add O_NOCTTY to the flags passed to open.
2000-04-30 21:48:23 +00:00
Jim Meyering
a65db32955 . 2000-04-30 16:25:54 +00:00
Jim Meyering
72d2131b0e . 2000-04-30 16:25:30 +00:00
Jim Meyering
2edc7371bc *** empty log message *** 2000-04-30 16:25:24 +00:00
Jim Meyering
5e7a7d23f5 . 2000-04-30 16:24:00 +00:00
Jim Meyering
d0e30069c0 *** empty log message *** 2000-04-30 16:20:57 +00:00
Jim Meyering
9a7f0b1542 tweak comment 2000-04-30 16:19:57 +00:00
Jim Meyering
9a909400ba Detect and terminate upon write failure. 2000-04-30 16:19:06 +00:00
Jim Meyering
9e60f6cc06 alphabetize 2000-04-30 11:19:35 +00:00
341 changed files with 14043 additions and 5473 deletions

View File

@@ -11,10 +11,15 @@ maintainer-check:
$(MAKE) distcheck
$(MAKE) my-distcheck
prev-version := $(shell echo $(VERSION)|tr a-z Xa-y)
prev_version_file = .prev-version
THIS_VERSION_REGEXP = $(subst .,\.,$(VERSION))
PREV_VERSION := $(shell cat $(prev_version_file))
PREV_VERSION_REGEXP := $(shell echo $(PREV_VERSION)|sed 's/\./\\./g')
tag-package = $(shell echo "$(PACKAGE)" | tr a-z A-Z)
tag-this-version = $(subst .,_,$(VERSION))
tag-prev-version = $(subst .,_,$(prev-version))
tag-prev-version = $(subst .,_,$(PREV_VERSION))
this-cvs-tag = $(tag-package)-$(tag-this-version)
prev-cvs-tag = $(tag-package)-$(tag-prev-version)
@@ -49,7 +54,6 @@ null_AM_MAKEFLAGS = \
t=./=test
my-distcheck: writable-files po-check
-rm -rf $(t)
mkdir $(t)
GZIP=$(GZIP) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
@@ -61,8 +65,8 @@ my-distcheck: writable-files po-check
AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
&& $(MAKE) dvi \
&& $(MAKE) check \
&& rm -rf $(DEPDIR) \
&& $(MAKE) distclean
&& $(MAKE) distclean \
&& rm -rf $(DEPDIR)
cd $(t) && mv $(distdir) $(distdir).old \
&& $(AMTAR) -zxf ../$(distdir).tar.gz
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
@@ -71,20 +75,15 @@ my-distcheck: writable-files po-check
echo "$(distdir).tar.gz is ready for distribution"; \
echo "========================"
THIS_VERSION_REGEXP = $(subst .,\.,$(VERSION))
# FIXME: this works only for Gnits-style test releases.
PREV_VERSION := $(shell echo $(VERSION)|tr b-z a-y|sed 's/a$$//')
PREV_VERSION_REGEXP := $(shell echo $(PREV_VERSION)|sed 's/\./\\./g')
v = Version
a_host = alpha.gnu.org
b_host = freefriends.org
a_host=alpha.gnu.org
b_host=tug.org
alpha_subdir = gnu/fetish
a_url_dir = $(alpha_subdir)
b_url_dir = $(alpha_subdir)
a_url_dir=gnu/fetish
b_url_dir=gnu/fetish
a_real_dir=/fs/share/ftp/gnu/fetish
b_real_dir=/home/ftp/pub/gnu/fetish
a_real_dir = /fs/share/ftp/$(alpha_subdir)
b_real_dir = fetish-ftp
url_dir_list = $(foreach x,a b,ftp://$($(x)_host)/$($(x)_url_dir))
@@ -122,14 +121,14 @@ announcement: NEWS ChangeLog $(distdir).tar.gz
echo "$(md5) $(distdir).tar.gz"; \
echo; \
echo NEWS:; \
sed -n "/$(THIS_VERSION_REGEXP)/,/$(PREV_VERSION_REGEXP)/p" NEWS \
sed -n "/$(THIS_VERSION_REGEXP)/,/^\[$(PREV_VERSION_REGEXP)/p" NEWS \
| grep -v '^\['; \
echo; \
echo ChangeLog entries:; \
find . -name ChangeLog \
| xargs cvs diff -up -r$(prev-cvs-tag) -rHEAD \
| sed -n 's/^+//p' \
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
)
@@ -142,6 +141,17 @@ writable-files:
done; \
test "$$fail" && exit 1 || :
WGET = wget
ftp-gnu = ftp://ftp.gnu.org/gnu
automake_repo=:pserver:anoncvs@anoncvs.cygnus.com:/cvs/automake
.PHONY: wget-update
wget-update:
$(WGET) $(ftp-gnu)/texinfo/texinfo.tex -O $(srcdir)/doc/texinfo.tex
$(WGET) $(ftp-gnu)/config/config.guess -O $(srcdir)/config.guess
$(WGET) $(ftp-gnu)/config/config.sub -O $(srcdir)/config.sub
cvs -d $(automake_repo) co -p automake/depcomp > depcomp
alpha: writable-files po-check
$(MAKE) cvs-dist
$(MAKE) -s announcement > /tmp/announce-$(distdir)
@@ -151,6 +161,8 @@ alpha: writable-files po-check
&& xdelta delta -9 $(prev-tgz) $(distdir).tar.gz $(xd-delta) || :
ln $(release-archive-dir)/$(xd-delta) .
chmod a-w $(release-archive-dir)/$(xd-delta)
echo $(VERSION) > $(prev_version_file)
cvs ci -m. $(prev_version_file)
@echo =====================================
@echo =====================================
@echo 'scp $(xd-delta) $(distdir).tar.gz \'

50
THANKS
View File

@@ -1,20 +1,28 @@
This is just a start at listing e-mail addresses of contributors.
The rest of the addresses are still in the ChangeLog.
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
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.
Achim Blumensath blume@corona.oche.de
Adam Klein aklein@debian.org
Akim Demaille demaille@inf.enst.fr
Alain Magloire alain@qnx.com
Alan Iwi iwi@atm.ox.ac.uk
Alberto Accomazzi alberto@cfa0.harvard.edu
aldomel aldomel@ix.netcom.com
Alen Muzinic zveki@fly.cc.fer.hr
Alexey Solovyov alekso@math.uu.se
Andre Novaes Cunha Andre.Cunha@br.global-one.net
Andreas Gruenbacher ag@bestbits.at
Andreas Jaeger jaeger@gnu.org
Andreas Luik luik@isa.de
Andreas Schwab schwab@suse.de
Andreas Stolcke stolcke@ICSI.Berkeley.EDU
Andres Soolo andres@soolo.matti.ee
Andrew Burgess aab@cichlid.com
Andrew Dalke dalke@bioreason.com
Andrew Tridgell tridge@samba.org
Andries Brouwer Andries.Brouwer@cwi.nl
@@ -32,8 +40,10 @@ Bill Peters peters@gaffel.as.arizona.edu
Bjorn Helgaas helgaas@rsn.hp.com
Bob McCracken kerouac@ravenet.com
Bob Proulx rwp@fc.hp.com
Branden Robinson branden@necrotic.deadbeast.net
Brendan O'Dea bod@compusol.com.au
Brian Kimball bfk@footbag.org
Brian Youmans 3diff@gnu.org
Bruno Haible haible@clisp.cons.org
Carl Johnson carlj@cjlinux.home.org
Carl Lowenstein cdl@mpl.UCSD.EDU
@@ -43,13 +53,15 @@ Charles Randall crandall@matchlogic.com
Chip Salzenberg chip@valinux.com
Chris Yeo cyeo@biking.org
Christi Alice Scarborough christi@chiark.greenend.org.uk
Christian Krackowizer kra1@technodat.co.at
Christian Krackowizer ckrackowiz@std.schuler-ag.com
Christian Rose menthos@menthos.com
Christian von Roques roques@pond.sub.org
Chuck Hedrick hedrick@klinzhai.rutgers.edu
Clark Morgan cmorgan@aracnet.com
Colin Plumb colin@nyx.net
Collin Rogowski collin@rogowski.de
Dan Hagerty hag@gnu.ai.it.edu
Dan Pascu dan@services.iiruc.ro
Daniel Bergstrom noa@melody.se
David Dyck dcd@tc.fluke.COM
David Godfrey dave@delta.demon.co.uk
@@ -61,6 +73,7 @@ Dirk-Jan Faber djfaber@snow.nl
Don Parsons dparsons@synapse.kent.edu
Donni Erpel donald@appc11.gsi.de
Doug McLaren dougmc@comco.com
Dragos Harabor dharabor@us.oracle.com
Ed Avis epa98@doc.ic.ac.uk
Edzer Pebesma Edzer.Pebesma@rivm.nl
Eirik Fuller eirik@netcom.com
@@ -74,6 +87,7 @@ Erik Corry erik@kroete2.freinet.de
Felix Lee flee@teleport.com
Fletcher Mattox fletcher@cs.utexas.edu
Florin Iucha fiucha@hsys.mic.ro
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
@@ -81,18 +95,24 @@ Gabor Z. Papp gzp@gzp.org.hu
Galen Hazelwood galenh@micron.net
Gary Anderson ganderson@clark.net
Gaël Quéri gqueri@mail.dotcom.fr
Geoff Kuenning geoff@cs.hmc.edu
Geoff Odhner geoff@franklin.com
Gerhard Poul gpoul@gnu.org
Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
GOTO Masanori gotom@debian.or.jp
Greg Louis glouis@dynamicro.on.ca
Greg McGary gkm@gnu.org
Greg Troxel gdt@bbn.com
Greg Wooledge gawooledge@sherwin.com
Gregory Leblanc gleblanc@cu-portland.edu>
Gregory Leblanc gleblanc@cu-portland.edu
Göran Uddeborg goeran@uddeborg.pp.se
H. J. Lu hjl@valinux.com
Hans Verkuil hans@wyst.hobby.nl
Harry Liu rliu@lek.ugcs.caltech.edu
Herbert Xu herbert@gondor.apana.org.au
Holger Berger hberger@ess.nec.de
Hugh Daniel hugh@xanadu.com
Ian Jackson ijackson@chiark.greenend.org.uk
Ian Lance Taylor ian@cygnus.com
Ian Turner vectro@pipeline.com
James james@albion.glarp.com
@@ -101,12 +121,16 @@ James Sneeringer jvs@ocslink.com
James Tanis jtt@soscorp.com
James Youngman james+usenet@free-lunch.demon.co.uk
Jamie Lokier jamie@imbolc.ucc.ie
Jan Fedak J.Fedak@sh.cvut.cz
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
Jens Schmidt jms@jsds.hamburg.com
Jerome Abela abela@hsc.fr
Jesse Thilo jgt2@eecs.lehigh.edu
Jie Xu xuj@iag.net
Jim Blandy jimb@cyclic.com
Jim Dennis jimd@starshine.org
Joakim Rosqvist dvljrt@cs.umu.se
@@ -130,7 +154,9 @@ J
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
Karl Heuer kwzh@gnu.org
Karl-Michael Schneider schneide@phil.uni-passau.de
Karsten Thygesen karthy@kom.auc.dk
Kaveh R. Ghazi ghazi@caip.rutgers.edu
Keith Owens kaos@audio.apana.org.au
@@ -142,18 +168,23 @@ Lars Hecking lhecking@nmrc.ucc.ie
Lehti Rami rammer@cs.tut.fi
Leonard N. Zubkoff lnz@dandelion.com
Lorne Baker lbaker@nitro.avint.net
M. P. Suzuki mpsuzuki@hiroshima-u.ac.jp
Maciej Kwapulinski pikpok@univ.gda.pl
Manas Garg manas@cygsoft.com
Manfred Hollstein manfred@s-direktnet.de
Marc Boucher marc@mbsi.ca
Marc Olzheim marcolz@stack.nl
Marco Franzen Marco.Franzen@Thyron.com
Marcus Daniels marcus@ee.pdx.edu
Mark A. Thomas thommark@access.digex.net
Mark D. Roth roth@uiuc.edu
Mark Harris mark@monitor.designacc.com
Mark Hewitt mhewitt@armature.com
Mark Kettenis kettenis@phys.uva.nl
Mark W. Eichin eichin@cygnus.com
Markus Demleitner msdemlei@auriga.ari.uni-heidelberg.de
Martin martin@dresden.nacamar.de
Martin Gallant martyg@goodbit.net
Martin Hippe martin.hippe@schlund.de
Martin Mitchell martin@debian.org
Martin P.J. Zinser zinser@decus.de
@@ -162,6 +193,7 @@ Masami Takikawa takikawm@CS.ORST.EDU
Mate Wierdl mw@moni.msci.memphis.edu
Matej Vela mvela@public.srce.hr
Matthew Braun matthew@ans.net
Matthew Clarke Matthew_Clarke@mindlink.bc.ca
Matthew S. Levine mslevine@theory.lcs.mit.edu
Matthew Swift swift@alum.mit.edu
Matthias Urlichs smurf@noris.de
@@ -169,6 +201,7 @@ Meelis Roos mroos@tartu.cyber.ee
Michael ??? michael@roka.net
Michael Deutschmann michael@talamasca.ocis.net
Michael Hasselberg mikelh@zonta.ping.de
Michael Hohn hohn@math.utah.edu
Michael Stone mstone@debian.org
Michael Stutz stutz@dsl.org
Michael Veksler mveksler@techunix.technion.ac.il
@@ -176,13 +209,16 @@ Michel Robitaille robitail@IRO.UMontreal.CA
Michiel Bacchiani bacchian@raven.bu.edu
Miles Bader miles@gnu.ai.mit.edu
Minh Tran-Le tranle@intellicorp.com
Morten Welinder terra@diku.dk
Nelson H. F. Beebe beebe@math.utah.edu
Niklas Edmundsson nikke@acc.umu.se
Noah Friedman friedman@splode.com
Noel Cragg noel@red-bean.com
Olav Morkrid olav@funcom.com
Ørn E. Hansen oehansen@daimi.aau.dk
Paul Eggert eggert@twinsun.com
Paul Nevai nevai@ops.mps.ohio-state.edu
Paul Sauer paul@alexa.com
Paul Slootman paul@debian.org
Per Cederqvist ceder@lysator.liu.se
Per Kristian Hove perhov@math.ntnu.no
@@ -193,6 +229,9 @@ Peter Seebach seebs@taniemarie.solon.com
Phil Richards phil.richards@vf.vodafone.co.uk
Philippe De Muyter phdm@macqel.be
Philippe Schnoebelen Philippe.Schnoebelen@imag.fr
Piergiorgio Sartor sartor@sony.de
Piotr Kwapulinski kwap@univ.gda.pl
Prashant TR tr@eth.net
Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Ralf W. Stephan stephan@tmt.de
Ralph Loader loader@maths.ox.ac.uk
@@ -216,6 +255,7 @@ Santiago Vila Doncel sanvila@unex.es
Savochkin Andrey Vladimirovich saw@msu.ru
Scott Lurndal slurn@griffin.engr.sgi.com
Stephen Gildea gildea@x.org
Stephen Smoogen ??????????
Steve McConnel steve@acadcomp.sil.org
Stuart Kemp skemp@peter.bmc.com
Tadayoshi Funaba tadf@kt.rim.or.jp
@@ -224,6 +264,7 @@ Thomas Bushnell thomas@gnu.ai.mit.edu
Thomas Quinot thomas@Cuivre.FR.EU.ORG
Tim Smithers mouse@dmouse.com.au
Tim Waugh twaugh@redhat
Todd A. Jacobs tjacobs@codegnome.org
Tom Quinn trq@dionysos.thphys.ox.ac.uk
Ton Hospel thospel@mail.dma.be
Tony Leneis tony@plaza.ds.adp.com
@@ -243,4 +284,3 @@ William Dowling will@franklin.com
William Lewis wiml@omnigroup.com
Wolfram Kleff kleff@cs.uni-bonn.de
Zvi Har'El rl@math.technion.ac.il
Ørn E. Hansen oehansen@daimi.aau.dk

View File

@@ -1,6 +1,7 @@
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Copyright (C) 1994, 1995-9, 2000 Free Software Foundation, Inc.
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000
# 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.
@@ -31,8 +32,6 @@ mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -75,8 +74,8 @@ DEPDIR = @DEPDIR@
DF_PROG = @DF_PROG@
FESETROUND_LIBM = @FESETROUND_LIBM@
GENCAT = @GENCAT@
GETCONF = @GETCONF@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GLIBC21 = @GLIBC21@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
@@ -90,7 +89,9 @@ INTLOBJS = @INTLOBJS@
KMEM_GROUP = @KMEM_GROUP@
LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
LIB_CRYPT = @LIB_CRYPT@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
@@ -103,6 +104,7 @@ POFILES = @POFILES@
POSUB = @POSUB@
POW_LIBM = @POW_LIBM@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SQRT_LIBM = @SQRT_LIBM@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
@@ -157,9 +159,11 @@ $(srcdir)/version.texi: stamp-vti
@:
$(srcdir)/stamp-vti: fileutils.texi $(top_srcdir)/configure.in
@echo "@set UPDATED `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/fileutils.texi`" > vti.tmp
@echo "@set EDITION $(VERSION)" >> vti.tmp
@echo "@set VERSION $(VERSION)" >> vti.tmp
@(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/fileutils.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)

View File

@@ -30,25 +30,30 @@ or a week from Sunday, with feelings of helpless confusion. @dots{}
--- Robert Grudin, @cite{Time and the Art of Living}.
@end quotation
This section describes the textual date representations that GNU
This section describes the textual date representations that @sc{gnu}
programs accept. These are the strings you, as a user, can supply as
arguments to the various programs. The C interface (via the
@code{getdate} function) is not described here.
@cindex beginning of time, for Unix
@cindex epoch, for Unix
Although the date syntax here can represent any possible time since zero
A.D., computer integers are not big enough for such a (comparatively)
long time. The earliest date semantically allowed on Unix systems is
midnight, 1 January 1970 UCT.
@cindex beginning of time, for @sc{posix}
@cindex epoch, for @sc{posix}
Although the date syntax here can represent any possible time since the
year zero, computer integers often cannot represent such a wide range of
time. On @sc{posix} systems, the clock starts at 1970-01-01 00:00:00
@sc{utc}: @sc{posix} does not require support for times before the
@sc{posix} Epoch and times far in the future. Traditional Unix systems
have 32-bit signed @code{time_t} and can represent times from 1901-12-13
20:45:52 through 2038-01-19 03:14:07 @sc{utc}. Systems with 64-bit
signed @code{time_t} can represent all the times in the known
lifetime of the universe.
@menu
* General date syntax:: Common rules.
* Calendar date item:: 19 Dec 1994.
* Time of day item:: 9:20pm.
* Time zone item:: EST, DST, BST, UTC, ...
* Day of week item:: Monday and others.
* Relative item in date strings:: next tuesday, 2 years ago.
* Calendar date items:: 19 Dec 1994.
* Time of day items:: 9:20pm.
* Time zone items:: @sc{est}, @sc{pdt}, @sc{gmt}, ...
* Day of week items:: Monday and others.
* Relative items in date strings:: next tuesday, 2 years ago.
* Pure numbers in date strings:: 19931219, 1440.
* Authors of getdate:: Bellovin, Salz, Berets, et al.
@end menu
@@ -103,8 +108,8 @@ nested. Hyphens not followed by a digit are currently ignored. Leading
zeros on numbers are ignored.
@node Calendar date item
@section Calendar date item
@node Calendar date items
@section Calendar date items
@cindex calendar date item
@@ -113,13 +118,14 @@ specified differently, depending on whether the month is specified
numerically or literally. All these strings specify the same calendar date:
@example
1972-09-24 # ISO 8601.
72-9-24 # Assume 19xx for 69 through 99, 20xx for 00 through 68.
72-09-24 # Leading zeros are ignored.
9/24/72 # Common U.S. writing.
1972-09-24 # @sc{iso} 8601.
72-9-24 # Assume 19xx for 69 through 99,
# 20xx for 00 through 68.
72-09-24 # Leading zeros are ignored.
9/24/72 # Common U.S. writing.
24 September 1972
24 Sept 72 # September has a special abbreviation.
24 Sep 72 # Three-letter abbreviations always allowed.
24 Sept 72 # September has a special abbreviation.
24 Sep 72 # Three-letter abbreviations always allowed.
Sep 24, 1972
24-sep-72
24sep72
@@ -135,9 +141,9 @@ sep 24
Here are the rules.
@cindex ISO 8601 date format
@cindex date format, ISO 8601
For numeric months, the ISO 8601 format
@cindex @sc{iso} 8601 date format
@cindex date format, @sc{iso} 8601
For numeric months, the @sc{iso} 8601 format
@samp{@var{year}-@var{month}-@var{day}} is allowed, where @var{year} is
any positive number, @var{month} is a number between 01 and 12, and
@var{day} is a number between 01 and 31. A leading zero must be present
@@ -173,8 +179,8 @@ Or, omitting the year:
@end example
@node Time of day item
@section Time of day item
@node Time of day items
@section Time of day items
@cindex time of day item
@@ -185,7 +191,7 @@ day. Here are some examples, all of which represent the same time:
20:02:0
20:02
8:02pm
20:02-0500 # In EST (Eastern U.S. Standard Time).
20:02-0500 # In @sc{est} (U.S. Eastern Standard Time).
@end example
More generally, the time of the day may be given as
@@ -205,6 +211,9 @@ or @samp{p.m.}), @var{hour} is restricted to run from 1 to 12, and
indicates the first half of the day, @samp{pm} indicates the second
half of the day. In this notation, 12 is the predecessor of 1:
midnight is @samp{12am} while noon is @samp{12pm}.
(This is the zero-oriented interpretation of @samp{12am} and @samp{12pm},
as opposed to the old tradition derived from Latin
which uses @samp{12m} for noon and @samp{12pm} for midnight.)
@cindex time zone correction
@cindex minutes, time zone correction by
@@ -213,138 +222,37 @@ expressed as @samp{@var{s}@var{hh}@var{mm}}, where @var{s} is @samp{+}
or @samp{-}, @var{hh} is a number of zone hours and @var{mm} is a number
of zone minutes. When a time zone correction is given this way, it
forces interpretation of the time relative to
Coordinated Universal Time (UTC), overriding any previous
Coordinated Universal Time (@sc{utc}), overriding any previous
specification for the time zone or the local time zone. The @var{minute}
part of the time of the day may not be elided when a time zone correction
is used. This is the only way to specify a time zone correction by
is used. This is the best way to specify a time zone correction by
fractional parts of an hour.
Either @samp{am}/@samp{pm} or a time zone correction may be specified,
but not both.
@node Time zone item
@section Time zone item
@node Time zone items
@section Time zone items
@cindex time zone item
A @dfn{time zone item} specifies an international time zone, indicated by
a small set of letters. They are supported for backward compatibility reasons,
but they are not recommended because they are ambiguous in practice:
for example, the abbreviation @samp{EST} has different meanings in
Australia and the United States. Any included period is ignored. Military
time zone designations use a single letter. Currently, only integral
zone hours may be represented in a time zone item. See the previous
section for a finer control over the time zone correction.
A @dfn{time zone item} specifies an international time zone, indicated
by a small set of letters, e.g., @samp{UTC} for Coordinated Universal
Time. Any included periods are ignored. By following a
non-daylight-saving time zone by the string @samp{DST} in a separate
word (that is, separated by some white space), the corresponding
daylight saving time zone may be specified.
Here are many non-daylight-saving-time time zones, indexed by the zone
hour value.
@table @asis
@item -1200
@samp{Y} for militaries.
@item -1100
@samp{X} for militaries.
@item -1000
@samp{W} for militaries.
@item -0900
@samp{V} for militaries.
@item -0800
@samp{PST} for Pacific Standard, and
@samp{U} for militaries.
@item -0700
@samp{MST} for Mountain Standard, and
@samp{T} for militaries.
@item -0600
@samp{CST} for Central Standard, and
@samp{S} for militaries.
@item -0500
@samp{EST} for Eastern Standard, and
@samp{R} for militaries.
@item -0400
@samp{AST} for Atlantic Standard, and
@samp{Q} for militaries.
@item -0300
@samp{P} for militaries.
@item -0200
@samp{O} for militaries.
@item -0100
@samp{N} for militaries.
@item +0000
@cindex Greenwich Mean Time
@cindex Coordinated Universal Time
@cindex Universal Coordinated Time
@cindex Universal Time (Coordinated)
@samp{GMT} for Greenwich Mean,
@samp{UT} for Universal,
@samp{UTC} for Coordinated Universal,
@samp{WET} for Western European, and
@samp{Z} for ISO 8601 and militaries.
@item +0100
@samp{A} for militaries,
@samp{CET} for Central European,
@samp{MET} for Midden Europesche Tijd (Dutch), and
@samp{MEZ} for Mittel-Europ@"aische Zeit (German).
@item +0200
@samp{B} for militaries, and
@samp{EET} for Eastern European.
@item +0300
@samp{C} for militaries.
@item +0400
@samp{D} for militaries.
@item +0500
@samp{E} for militaries.
@item +0600
@samp{F} for militaries.
@item +0700
@samp{G} for militaries.
@item +0800
@samp{H} for militaries.
@item +0900
@samp{I} for militaries, and
@samp{JST} for Japan Standard.
@item +1000
@samp{GST} for Guam Standard, and
@samp{K} for militaries.
@item +1100
@samp{L} for militaries.
@item +1200
@samp{M} for militaries, and
@samp{NZST} for New Zealand Standard.
@end table
@cindex daylight-saving time
Here are many daylight-saving time (DST) time zones,
indexed by the zone hour value. Also, by
following a non-DST time zone by the string @samp{DST} in a separate word
(that is, separated by some whitespace), the corresponding DST time zone
may be specified.
@table @asis
@item -0700
@samp{PDT} for Pacific Daylight.
@item -0600
@samp{MDT} for Mountain Daylight.
@item -0500
@samp{CDT} for Central Daylight.
@item -0400
@samp{EDT} for Eastern Daylight.
@item -0300
@samp{ADT} for Atlantic Daylight.
@item +0100
@samp{BST} for British Summer, and
@samp{WEST} for Western European Summer.
@item +0200
@samp{CEST} for Central European Summer,
@samp{MEST} for Midden Europesche S. Tijd (Dutch), and
@samp{MESZ} for Mittel-Europ@"aische Sommerzeit (German).
@item +1300
@samp{NZDT} for New Zealand Daylight.
@end table
Time zone items are obsolescent and are not recommended, because they
are ambiguous; for example, @samp{EST} has a different meaning in
Australia than in the United States. Instead, it's better to use
unambiguous numeric time zone corrections like @samp{-0500}, as
described in the previous section.
@node Day of week item
@section Day of week item
@node Day of week items
@section Day of week items
@cindex day of week item
@@ -370,8 +278,8 @@ the day that @var{day} by itself would represent.
A comma following a day of the week item is ignored.
@node Relative item in date strings
@section Relative item in date strings
@node Relative items in date strings
@section Relative items in date strings
@cindex relative items in date strings
@cindex displacement of dates
@@ -408,7 +316,7 @@ The unit of time may be preceded by a multiplier, given as an optionally
signed number. Unsigned numbers are taken as positively signed. No
number at all implies 1 for a multiplier. Following a relative item by
the string @samp{ago} is equivalent to preceding the unit by a
multiplicator with value @math{-1}.
multiplier with value @math{-1}.
@findex day @r{in date strings}
@findex tomorrow @r{in date strings}
@@ -423,14 +331,14 @@ one day in the past (equivalent to @samp{day ago}).
The strings @samp{now} or @samp{today} are relative items corresponding
to zero-valued time displacement, these strings come from the fact
a zero-valued time displacement represents the current time when not
otherwise change by previous items. They may be used to stress other
otherwise changed by previous items. They may be used to stress other
items, like in @samp{12:00 today}. The string @samp{this} also has
the meaning of a zero-valued time displacement, but is preferred in
date strings like @samp{this thursday}.
When a relative item makes the resulting date to cross the boundary
between DST and non-DST (or vice-versa), the hour is adjusted according
to the local time.
When a relative item causes the resulting date to cross a boundary
where the clocks were adjusted, typically for daylight-saving time,
the resulting date and time are adjusted accordingly.
@node Pure numbers in date strings
@@ -438,11 +346,11 @@ to the local time.
@cindex pure numbers in date strings
The precise intepretation of a pure decimal number is dependent of
the context in the date string.
The precise interpretation of a pure decimal number depends
on the context in the date string.
If the decimal number is of the form @var{yyyy}@var{mm}@var{dd} and no
other calendar date item (@pxref{Calendar date item}) appears before it
other calendar date item (@pxref{Calendar date items}) appears before it
in the date string, then @var{yyyy} is read as the year, @var{mm} as the
month number and @var{dd} as the day of the month, for the specified
calendar date.
@@ -467,13 +375,14 @@ year.
@cindex Berets, Jim
@cindex MacKenzie, David
@cindex Meyering, Jim
@cindex Eggert, Paul
@code{getdate} was originally implemented by Steven M. Bellovin
(@email{smb@@research.att.com}) while at the University of North Carolina
at Chapel Hill. The code was later tweaked by a couple of people on
Usenet, then completely overhauled by Rich $alz (@email{rsalz@@bbn.com})
and Jim Berets (@email{jberets@@bbn.com}) in August, 1990. Various
revisions for the GNU system were made by David MacKenzie, Jim Meyering,
and others.
revisions for the @sc{gnu} system were made by David MacKenzie, Jim Meyering,
Paul Eggert and others.
@cindex Pinard, F.
@cindex Berry, K.

View File

@@ -276,18 +276,8 @@ o+t
Remember that the special permissions only affect files that are
executable, plus, on some systems, directories (on which they have
different meanings; @pxref{Mode Structure}). Using @samp{a}
in the @var{users} part of a symbolic mode does not cause the special
permissions to be affected; thus,
@example
a+s
@end example
@noindent
has @emph{no effect}. You must use @samp{u}, @samp{g}, and @samp{o}
explicitly to affect the special permissions. Also, the
combinations @samp{u+t}, @samp{g+t}, and @samp{o+s} have no effect.
different meanings; @pxref{Mode Structure}).
Also, the combinations @samp{u+t}, @samp{g+t}, and @samp{o+s} have no effect.
The @samp{=} operator is not very useful with special permissions; for
example, the mode:
@@ -342,7 +332,7 @@ og+rX-w
gives users other than the owner of the file read permission and, if
it is a directory or if someone already had execute permission
to it, gives them execute permission; and it also denies them write
permission to it file. It does not affect the permission that the
permission to the file. It does not affect the permission that the
owner of the file has for it. The above mode is equivalent to
the two modes:

View File

@@ -64,7 +64,7 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the GNU shell utilities.
Copyright (C) 1994, 95, 96 Free Software Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 2000 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -96,7 +96,7 @@ by the Foundation.
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1994, 95, 96 Free Software Foundation, Inc.
Copyright @copyright{} 1994, 1995, 1996, 2000 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -350,6 +350,7 @@ independent way. For example, a string containing the Euro currency symbol
$ /usr/local/bin/printf '\u20AC 14.95'
@end example
@noindent
will be output correctly in all locales supporting the Euro symbol
(ISO-8859-15, UTF-8, and others). Similarly, a Chinese string
@@ -357,17 +358,19 @@ will be output correctly in all locales supporting the Euro symbol
$ /usr/local/bin/printf '\u4e2d\u6587'
@end example
will be output correctly in all chinese locales (GB2312, BIG5, UTF-8, etc).
@noindent
will be output correctly in all Chinese locales (GB2312, BIG5, UTF-8, etc).
Note that in these examples, the full pathname of @code{printf} has been
given, to distinguish it from the GNU bash builtin function @code{printf}.
given, to distinguish it from the GNU @code{bash} builtin function
@code{printf}.
For larger strings, you don't need to look up the hexadecimal code values of
each character one by one. ASCII characters mixed with \u escape sequences
is also known as the JAVA source file encoding. You can use GNU recode 3.5c
(or newer) to convert strings to this encoding. Here is how to convert a
piece of text into a shell script which will output this text in a locale
independent way:
For larger strings, you don't need to look up the hexadecimal code
values of each character one by one. ASCII characters mixed with \u
escape sequences is also known as the JAVA source file encoding. You can
use GNU recode 3.5c (or newer) to convert strings to this encoding. Here
is how to convert a piece of text into a shell script which will output
this text in a locale-independent way:
@smallexample
$ LC_CTYPE=zh_CN.big5 /usr/local/bin/printf \
@@ -756,7 +759,7 @@ True if either @var{expr1} or @var{expr2} is true.
@code{expr} evaluates an expression and writes the result on standard
output. Each token of the expression must be a separate argument.
Operands are either numbers or strings. @code{expr} coerces
Operands are either numbers or strings. @code{expr} converts
anything appearing in an operand position to an integer or a string
depending on the operation being applied to it.
@@ -802,7 +805,7 @@ the next sections).
@cindex pattern matching
@cindex regular expression matching
@cindex matching patterns
Perform pattern matching. The arguments are coerced to strings and the
Perform pattern matching. The arguments are converted to strings and the
second is considered to be a (basic, a la GNU @code{grep}) regular
expression, with a @code{^} implicitly prepended. The first argument is
then matched against this regular expression.
@@ -883,7 +886,7 @@ the connectives (next section) have higher.
@kindex -
@cindex addition
@cindex subtraction
Addition and subtraction. Both arguments are coerced to numbers;
Addition and subtraction. Both arguments are converted to numbers;
an error occurs if this cannot be done.
@item * / %
@@ -893,7 +896,7 @@ an error occurs if this cannot be done.
@cindex multiplication
@cindex division
@cindex remainder
Multiplication, division, remainder. Both arguments are coerced to
Multiplication, division, remainder. Both arguments are converted to
numbers; an error occurs if this cannot be done.
@end table
@@ -935,9 +938,9 @@ Return its first argument if neither argument is null or 0, otherwise
@kindex >=
@cindex comparison operators
Compare the arguments and return 1 if the relation is true, 0 otherwise.
@code{==} is a synonym for @code{=}. @code{expr} first tries to coerce
@code{==} is a synonym for @code{=}. @code{expr} first tries to convert
both arguments to numbers and do a numeric comparison; if either
coercion fails, it does a lexicographic comparison.
conversion fails, it does a lexicographic comparison.
@end table
@@ -1619,10 +1622,11 @@ values.
Same as:
@c This is too long to write inline.
@example
cread -ignbrk brkint -inlcr -igncr icrnl -ixoff -iuclc -ixany
imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel
nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok
-echonl -noflsh -xcase -tostop -echoprt echoctl echoke
cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
-iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0 isig icanon iexten echo echoe echok -echonl
-noflsh -xcase -tostop -echoprt echoctl echoke
@end example
@noindent and also sets all special characters to their default values.
@@ -1637,9 +1641,9 @@ May be negated. If negated, same as @code{raw}.
@opindex raw
Same as:
@example
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
-icrnl -ixon -ixoff -iuclc -ixany -imaxbel -opost -isig
-icanon -xcase min 1 time 0
-ignbrk -brkint -ignpar -parmrk -inpck -istrip
-inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
-imaxbel -opost -isig -icanon -xcase min 1 time 0
@end example
@noindent May be negated. If negated, same as @code{cooked}.
@@ -1783,7 +1787,7 @@ the time value has expired, when @code{-icanon} is set.
@item time @var{n}
@opindex time
Set the number of tenths of a second before reads time out if the min
Set the number of tenths of a second before reads time out if the minimum
number of characters have not been read, when @code{-icanon} is set.
@item ispeed @var{n}
@@ -1809,7 +1813,7 @@ Tell the kernel that the terminal has @var{n} columns. Non-POSIX.
@vindex LINES
@vindex COLUMNS
Print the number of rows and columns that the kernel thinks the
terminal has. (Systems that don't support rows and cols in the kernel
terminal has. (Systems that don't support rows and columns in the kernel
typically use the environment variables @env{LINES} and @env{COLUMNS}
instead; however, GNU @code{stty} does not know anything about them.)
Non-POSIX.
@@ -1824,6 +1828,8 @@ Print the terminal speed.
@item @var{n}
@cindex baud rate, setting
@c FIXME: Is this still true that the baud rate can't be set
@c higher than 38400?
Set the input and output speeds to @var{n}. @var{n} can be one
of: 0 50 75 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600
19200 38400 @code{exta} @code{extb}. @code{exta} is the same as
@@ -2198,7 +2204,7 @@ format of the @samp{%c} directive (described below). Synopses:
@example
date [@var{option}]@dots{} [+@var{format}]
date [-u|--utc|--universal] @c this avoids a newline in the output
[ @var{MMDDhhmm}[[@var{CC}]@var{YY}][.@var{ss}] ]
[ MMDDhhmm[[CC]YY][.ss] ]
@end example
@findex strftime @r{and @code{date}}
@@ -2254,7 +2260,7 @@ 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 @samp{--date} option.
@item %S
second (00@dots{}61)
second (00@dots{}60)
@item %T
time, 24-hour (hh:mm:ss)
@item %X
@@ -2396,7 +2402,7 @@ zone.
The argument must consist entirely of digits, which have the following
meaning:
@table @var
@table @samp
@item MM
month
@item DD
@@ -2475,16 +2481,14 @@ Append the hours, minutes, and seconds.
@end table
If showing any time terms, then include the time zone using the format
@samp{%z}. If @samp{--utc} is also specified, use @samp{%Z} in place of
@samp{%z}.
@item -R
@itemx --rfc-822
@opindex -R
@opindex --rfc-822
Display the time and date using the RFC-822-specified
Display the time and date using the RFC-822-conforming
format, @samp{%a, %_d %b %Y %H:%M:%S %z}.
If @samp{--utc} is also specified, use @samp{GMT} in place of @samp{%z}.
@item -r @var{file}
@itemx --reference=@var{file}
@@ -2497,7 +2501,7 @@ time of @var{file}, instead of the current time and date.
@itemx --set=@var{datestr}
@opindex -s
@opindex --set
Set the time and date to @var{datestr}, See @samp{-d} above.
Set the time and date to @var{datestr}. See @samp{-d} above.
@item -u
@itemx --utc
@@ -2505,11 +2509,16 @@ Set the time and date to @var{datestr}, See @samp{-d} above.
@opindex -u
@opindex --utc
@opindex --universal
@cindex coordinated universal time
@cindex Coordinated Universal Time
@cindex UTC
@cindex Greenwich Mean Time
Print or set the time and date in Universal Coordinated Time instead of
in local (wall clock) time.
@cindex GMT
Use Coordinated Universal Time (@sc{utc}) by operating as if the
@env{TZ} environment variable was set to the string @samp{UTC0}.
Normally, @command{date} operates in the time zone indicated by
@env{TZ}, or the system default if @env{TZ} is not set. Coordinated
Universal Time is often called ``Greenwich Mean Time'' (@sc{gmt}) for
historical reasons.
@end table
@@ -2587,7 +2596,7 @@ To convert a date string to the number of seconds since the epoch
the @samp{%s} format. That can be useful in sorting and/or graphing
and/or comparing data by date. The following command outputs the
number of the seconds since the epoch for the time one second later
than the epoch, but in time zone five hours later (Cambridge, Massachusetts),
than the epoch, but in a time zone five hours later (Cambridge, Massachusetts),
thus a total of five hours and one second after the epoch:
@example
@@ -2596,7 +2605,7 @@ date --date='1970-01-01 00:00:01 UTC +5 hours' +%s
@end example
Suppose you had @emph{not} specified time zone information in the example above.
Then, date would have used your computer's idea of the time zone when
Then, @code{date} would have used your computer's idea of the time zone when
interpreting the string. Here's what you would get if you were in
Greenwich, England:
@@ -2952,7 +2961,7 @@ nohup @var{command} [@var{arg}]@dots{}
@flindex nohup.out
@code{nohup} increases the scheduling priority of @var{command} by 5, so
it has a slightly smaller change to run. If standard output is a terminal,
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
to the file @file{$HOME/nohup.out}. If that cannot be written to, the
@@ -3245,7 +3254,7 @@ The program accepts the following options. Also see @ref{Common options}.
@opindex --format=@var{format}
@cindex formatting of numbers in @code{seq}
Print all numbers using @var{format}; default @samp{%g}.
@var{format} must contain exactly one of the standarding floating point
@var{format} must contain exactly one of the floating point
output formats @samp{%e}, @samp{%f}, or @samp{%g}.
@item -s @var{string}
@@ -3331,11 +3340,11 @@ $ seq -s' ' 0 .1 .3
0 0.1 0.2
@end example
But doesn't happen on most systems because @code{seq} is implemented using
binary floating point arithmetic (via the C @code{double} type) -- which
means some decimal numbers like @code{.1} cannot be represented exactly.
That in turn means some nonintuitive conditions like @code{.1 * 3 > .3}
will end up being true.
But that doesn't happen on most systems because @code{seq} is
implemented using binary floating point arithmetic (via the C
@code{double} type) -- which means some decimal numbers like @code{.1}
cannot be represented exactly. That in turn means some nonintuitive
conditions like @code{.1 * 3 > .3} will end up being true.
To work around that in the above example, use a slightly larger number as
the @var{last} value:

View File

@@ -3,9 +3,9 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{1999-09-25.10}
\def\texinfoversion{2000-10-18.06}
%
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
% Free Software Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
@@ -214,6 +214,9 @@
\normalturnoffactive % \ in index entries must not stay \, e.g., if
% the page break happens to be in the middle of an example.
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
%
\ifcropmarks \vbox to \outervsize\bgroup
\hsize = \outerhsize
\vskip-\topandbottommargin
@@ -243,8 +246,6 @@
\unvbox\footlinebox
\fi
%
\ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
%
\ifcropmarks
\egroup % end of \vbox\bgroup
\hfil\egroup % end of (centering) \line\bgroup
@@ -687,16 +688,25 @@ where each line of input produces a line of output.}
\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
\leftline{\hskip\leftskip{\rm#1}}}}
% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
\def\inmargin#1{%
\strut\vadjust{\nobreak\kern-\strutdepth
\vtop to \strutdepth{\baselineskip\strutdepth\vss
\llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
% @inmargin{TEXT} puts TEXT in the left margin next to the current
% paragraph. For more general purposes, use the \margin insertion class.
%
\newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox}
%
\def\inmargin#1{\strut\vadjust{%
\nobreak
\kern-\strutdepth
\vtop to \strutdepth{%
\baselineskip=\strutdepth
\vss
% if you have multiple lines of stuff to put here, you'll need to
% make the vbox yourself of the appropriate size.
\llap{#1\hskip\inmarginspacing}%
\null
}%
}}
%\hbox{{\rm#1}}\hfil\break}}
% @include file insert text of that file as input.
% Allow normal characters that we make active in the argument (a file name).
@@ -891,7 +901,7 @@ where each line of input produces a line of output.}
\fi}
\def\pdfmkdest#1{\pdfdest name{#1@} xyz}
\def\pdfmkpgn#1{#1@}
\let\linkcolor = \Cyan
\let\linkcolor = \Blue % was Cyan, but that seems light?
\def\endlink{\Black\pdfendlink}
% Adding outlines to PDF; macros for calculating structure of outlines
% come from Petr Olsak
@@ -906,7 +916,8 @@ where each line of input produces a line of output.}
\closein 1
\indexnofonts
\def\tt{}
% thanh's hack / proper braces in bookmarks
\let\_ = \normalunderscore
% Thanh's hack / proper braces in bookmarks
\edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
%
@@ -1670,7 +1681,10 @@ where each line of input produces a line of output.}
}
% Subroutines used in generating headings
% Produces Day Month Year style of output.
% This produces Day Month Year style of output.
% Only define if not already defined, in case a txi-??.tex file has set
% up a different format (e.g., txi-cs.tex does this).
\ifx\today\undefined
\def\today{%
\number\day\space
\ifcase\month
@@ -1679,6 +1693,7 @@ where each line of input produces a line of output.}
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
\fi
\space\number\year}
\fi
% @settitle line... specifies the title of the document, for headings.
% It generates no output of its own.
@@ -3149,7 +3164,6 @@ width0pt\relax} \fi
%
% Double the \vsize as well. (We don't need a separate register here,
% since nobody clobbers \vsize.)
\advance\vsize by -\ht\partialpage
\vsize = 2\vsize
}
@@ -3163,6 +3177,7 @@ width0pt\relax} \fi
% previous page.
\dimen@ = \vsize
\divide\dimen@ by 2
\advance\dimen@ by -\ht\partialpage
%
% box0 will be the left-hand column, box2 the right.
\setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
@@ -3170,15 +3185,18 @@ width0pt\relax} \fi
\unvbox255
\penalty\outputpenalty
}
%
% Re-output the contents of the output page -- any previous material,
% followed by the two boxes we just split, in box0 and box2.
\def\pagesofar{%
% Re-output the contents of the output page -- any previous material,
% followed by the two boxes we just split, in box0 and box2.
\unvbox\partialpage
%
\hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize
\hbox to\pagewidth{\box0\hfil\box2}%
}
%
% All done with double columns.
\def\enddoublecolumns{%
\output = {%
% Split the last of the double-column material. Leave it on the
@@ -3203,8 +3221,9 @@ width0pt\relax} \fi
% \endgroup where \vsize got restored).
\pagegoal = \vsize
}
%
% Called at the end of the double column material.
\def\balancecolumns{%
% Called at the end of the double column material.
\setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
\dimen@ = \ht0
\advance\dimen@ by \topskip
@@ -4710,7 +4729,8 @@ width0pt\relax} \fi
\def\deftypeivarheader#1#2#3{%
\dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
\begingroup
\defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
\defname{\defheaderxcond#2\relax$$$#3}
{\putwordInstanceVariableof\ \code{#1}}%
\defvarargs{#3}%
\endgroup
}
@@ -5794,7 +5814,7 @@ should work if nowhere else does.}
% Use @afourwide to print on European A4 paper in wide format.
\def\afourwide{%
\afourpaper
\internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
\internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
%
\globaldefs = 0
}

View File

@@ -317,19 +317,19 @@ Equivalent to @samp{-vET}.
@opindex -B
@opindex --binary
@cindex binary and text I/O in cat
On MS-DOS and MS-Windows only, read and write the
files in binary mode. By default, @code{cat} on MS-DOS/MS-Windows uses
binary mode only when standard output is redirected to a file or a pipe;
this option overrides that. Binary file I/O is used so that the files
retain their format (Unix text as opposed to DOS text and binary),
because @code{cat} is frequently used as a file-copying program. Some
options (see below) cause @code{cat} read and write files in text mode
because then the original file contents aren't important (e.g., when
lines are numbered by @code{cat}, or when line endings should be
marked). This is so these options work as DOS/Windows users would
expect; for example, DOS-style text files have their lines end with
the CR-LF pair of characters which won't be processed as an empty line
by @samp{-b} unless the file is read in text mode.
On MS-DOS and MS-Windows only, read and write the files in binary mode.
By default, @code{cat} on MS-DOS/MS-Windows uses binary mode only when
standard output is redirected to a file or a pipe; this option overrides
that. Binary file I/O is used so that the files retain their format
(Unix text as opposed to DOS text and binary), because @code{cat} is
frequently used as a file-copying program. Some options (see below)
cause @code{cat} to read and write files in text mode because in those
cases the original file contents aren't important (e.g., when lines are
numbered by @code{cat}, or when line endings should be marked). This is
so these options work as DOS/Windows users would expect; for example,
DOS-style text files have their lines end with the CR-LF pair of
characters, which won't be processed as an empty line by @samp{-b} unless
the file is read in text mode.
@item -b
@itemx --number-nonblank
@@ -813,12 +813,12 @@ Output as hexadecimal shorts. Equivalent to @samp{-tx2}.
@item -C
@itemx --traditional
@opindex --traditional
Recognize the pre-POSIX non-option arguments that traditional @code{od}
Recognize the pre-@sc{posix} non-option arguments that traditional @code{od}
accepted. The following syntax:
@example
@smallexample
od --traditional [@var{file}] [[+]@var{offset}[.][b] [[+]@var{label}[.][b]]]
@end example
@end smallexample
@noindent
can be used to specify at most one file and optional arguments
@@ -983,24 +983,27 @@ is @samp{space}). For multicolumn output, lines will always be truncated to
column output no line truncation occurs by default. Use @samp{-W} option to
truncate lines in that case.
@c FIXME:??? Should this be something like "Starting with version 1.22i,..."
Including version 1.22i:
Some small @var{letter options} (@samp{-s}, @samp{-w}) has been redefined
with the object of a better @var{posix} compliance. The output of some
further cases has been adapted to other @var{unix}es. A violation of
downward compatibility has to be accepted.
@c FIXME: this whole section here sounds very awkward to me. I
@c made a few small changes, but really it all needs to be redone. - Brian
Some small @var{letter options} (@samp{-s}, @samp{-w}) have been redefined
with the object of a better @sc{posix} compliance. The output of some
further cases has been adapted to other Unix systems. These changes are
not compatible with earlier versions of the program.
Some @var{new capital letter} options (@samp{-J}, @samp{-S}, @samp{-W})
has been introduced to turn off unexpected interferences of small letter
have been introduced to turn off unexpected interferences of small letter
options. The @samp{-N} option and the second argument @var{last_page}
of @samp{+FIRST_PAGE} offer more flexibility. The detailed handling of
form feeds set in the input files requires @samp{-T} option.
form feeds set in the input files requires the @samp{-T} option.
Capital letter options dominate small letter ones.
Capital letter options override small letter ones.
Some of the option-arguments (compare @samp{-s}, @samp{-S}, @samp{-e},
@samp{-i}, @samp{-n}) cannot be specified as separate arguments from the
preceding option letter (already stated in the @var{posix} specification).
preceding option letter (already stated in the @sc{posix} specification).
The program accepts the following options. Also see @ref{Common options}.
@@ -1110,7 +1113,7 @@ Merge lines of full length. Used together with the column options
@samp{-W/-w} line truncation;
no column alignment used; may be used with @samp{-S[@var{string}]}.
@samp{-J} has been introduced (together with @samp{-W} and @samp{-S})
to disentangle the old (@var{posix} compliant) options @samp{-w} and
to disentangle the old (@sc{posix}-compliant) options @samp{-w} and
@samp{-s} along with the three column options.
@@ -1120,7 +1123,7 @@ to disentangle the old (@var{posix} compliant) options @samp{-w} and
@opindex --length
Set the page length to @var{page_length} (default 66) lines, including
the lines of the header [and the footer]. If @var{page_length} is less
than or equal 10 (and <= 3 with @samp{-F}), the header and footer are
than or equal to 10 (or <= 3 with @samp{-F}), the header and footer are
omitted, and all form feeds set in input files are eliminated, as if
the @samp{-T} option had been given.
@@ -1129,7 +1132,7 @@ the @samp{-T} option had been given.
@opindex -m
@opindex --merge
Merge and print all @var{file}s in parallel, one in each column. If a
line is too long to fit in a column, it is truncated, unless @samp{-J}
line is too long to fit in a column, it is truncated, unless the @samp{-J}
option is used. @samp{-S[@var{string}]} may be used. Empty pages in
some @var{file}s (form feeds set) produce empty columns, still marked
by @var{string}. The result is a continuous line numbering and column
@@ -1146,8 +1149,8 @@ Provide @var{digits} digit line numbering (default for @var{digits} is
5). With multicolumn output the number occupies the first @var{digits}
column positions of each text column or only each line of @samp{-m}
output. With single column output the number precedes each line just as
@samp{-m} does. Default counting of the line numbers starts with 1st
line of the input file (not the 1st line printed, compare the
@samp{-m} does. Default counting of the line numbers starts with the
first line of the input file (not the first line printed, compare the
@samp{--page} option and @samp{-N} option).
Optional argument @var{number-separator} is the character appended to
the line number to separate it from the text followed. The default
@@ -1155,8 +1158,8 @@ separator is the TAB character. In a strict sense a TAB is always
printed with single column output only. The @var{TAB}-width varies
with the @var{TAB}-position, e.g. with the left @var{margin} specified
by @samp{-o} option. With multicolumn output priority is given to
@samp{equal width of output columns} (a @var{posix} specification).
The @var{TAB}-width is fixed to the value of the 1st column and does
@samp{equal width of output columns} (a @sc{posix} specification).
The @var{TAB}-width is fixed to the value of the first column and does
not change with different values of left @var{margin}. That means a
fixed number of spaces is always printed in the place of the
@var{number-separator tab}. The tabification depends upon the output
@@ -1196,7 +1199,7 @@ is the TAB character without @samp{-w} and @samp{no character} with
@samp{-w}. Without @samp{-s} default separator @samp{space} is set.
@samp{-s[char]} turns off line truncation of all three column options
(@samp{-COLUMN}|@samp{-a -COLUMN}|@samp{-m}) except @samp{-w} is set.
That is a @var{posix} compliant formulation.
That is a @sc{posix}-compliant formulation.
@item -S[@var{string}]
@@ -1251,7 +1254,7 @@ output only (default for @var{page_width} is 72). @samp{-s[CHAR]} turns
off the default page width and any line truncation and column alignment.
Lines of full length are merged, regardless of the column options
set. No @var{page_width} setting is possible with single column output.
A @var{posix} compliant formulation.
A @sc{posix}-compliant formulation.
@item -W @var{page_width}
@itemx --page_width=@var{page_width}
@@ -1793,32 +1796,34 @@ contents of files.
@pindex wc
@cindex byte count
@cindex character count
@cindex word count
@cindex line count
@code{wc} counts the number of bytes, whitespace-separated words, and
newlines in each given @var{file}, or standard input if none are given
or for a @var{file} of @samp{-}. Synopsis:
@code{wc} counts the number of bytes, characters, whitespace-separated
words, and newlines in each given @var{file}, or standard input if none
are given or for a @var{file} of @samp{-}. Synopsis:
@example
wc [@var{option}]@dots{} [@var{file}]@dots{}
@end example
@cindex total counts
@vindex POSIXLY_CORRECT
@code{wc} prints one line of counts for each file, and if the file was
given as an argument, it prints the file name following the counts. If
more than one @var{file} is given, @code{wc} prints a final line
containing the cumulative counts, with the file name @file{total}. The
counts are printed in this order: newlines, words, bytes.
counts are printed in this order: newlines, words, characters, bytes.
By default, each count is output right-justified in a 7-byte field with
one space between fields so that the numbers and file names line up nicely
in columns. However, POSIX requires that there be exactly one space
separating columns. You can make @code{wc} use the POSIX-mandated
in columns. However, @sc{posix} requires that there be exactly one space
separating columns. You can make @code{wc} use the @sc{posix}-mandated
output format by setting the @env{POSIXLY_CORRECT} environment variable.
By default, @code{wc} prints all three counts. Options can specify
that only certain counts be printed. Options do not undo others
previously given, so
By default, @code{wc} prints three counts: the newline, words, byte counts.
Options can specify that only certain counts be printed. Options do not
undo others previously given, so
@example
wc --bytes --words
@@ -1837,12 +1842,16 @@ The program accepts the following options. Also see @ref{Common options}.
@item -c
@itemx --bytes
@itemx --chars
@opindex -c
@opindex --bytes
@opindex --chars
Print only the byte counts.
@item -m
@itemx --chars
@opindex -m
@opindex --chars
Print only the character counts.
@item -w
@itemx --words
@opindex -w
@@ -2134,42 +2143,49 @@ value as the directory for temporary files instead of @file{/tmp}. The
@samp{-T @var{tempdir}} option in turn overrides the environment
variable.
@vindex LC_CTYPE
The following options affect the ordering of output lines. They may be
specified globally or as part of a specific key field. If no key
fields are specified, global options apply to comparison of entire
lines; otherwise the global options are inherited by key fields that do
not specify any special options of their own. The @samp{-b}, @samp{-d},
@samp{-f} and @samp{-i} options classify characters according to
the @env{LC_CTYPE} locale.
not specify any special options of their own. In pre-@sc{posix}
versions of @command{sort}, global options affect only later key fields,
so portable shell scripts should specify global options first.
@table @samp
@item -b
@opindex -b
@cindex blanks, ignoring leading
@vindex LC_CTYPE
Ignore leading blanks when finding sort keys in each line.
The @env{LC_CTYPE} locale determines character types.
@item -d
@opindex -d
@cindex phone directory order
@cindex telephone directory order
@vindex LC_CTYPE
Sort in @dfn{phone directory} order: ignore all characters except
letters, digits and blanks when sorting.
The @env{LC_CTYPE} locale determines character types.
@item -f
@opindex -f
@cindex case folding
@vindex LC_CTYPE
Fold lowercase characters into the equivalent uppercase characters when
sorting so that, for example, @samp{b} and @samp{B} sort as equal.
The @env{LC_CTYPE} locale determines character types.
@item -g
@opindex -g
@cindex general numeric sort
@vindex LC_NUMERIC
Sort numerically, using the standard C function @code{strtod} to convert
a prefix of each line to a double-precision floating point number.
This allows floating point numbers to be specified in scientific notation,
like @code{1.0e-34} and @code{10e100}.
The @env{LC_NUMERIC} locale determines the decimal-point character.
Do not report overflow, underflow, or conversion errors.
Use the following collating sequence:
@@ -2193,7 +2209,9 @@ Use this option only if there is no alternative; it is much slower than
@item -i
@opindex -i
@cindex unprintable characters, ignoring
@vindex LC_CTYPE
Ignore unprintable characters.
The @env{LC_CTYPE} locale determines character types.
@item -M
@opindex -M
@@ -2212,13 +2230,13 @@ determines the month spellings.
Sort numerically: the number begins each line; specifically, it consists
of optional whitespace, an optional @samp{-} sign, and zero or more
digits possibly separated by thousands separators, optionally followed
by a radix character and zero or more digits. The @env{LC_NUMERIC}
locale specifies the radix character and thousands separator.
by a decimal-point character and zero or more digits. The @env{LC_NUMERIC}
locale specifies the decimal-point character and thousands separator.
@code{sort -n} uses what might be considered an unconventional method
to compare strings representing floating point numbers. Rather than
first converting each string to the C @code{double} type and then
comparing those values, sort aligns the radix characters in the two
comparing those values, sort aligns the decimal-point characters in the two
strings and compares the strings a character at a time. One benefit
of using this approach is its speed. In practice this is much more
efficient than performing the two corresponding string-to-double (or even
@@ -2261,6 +2279,17 @@ into fields @w{@samp{ foo}} and @w{@samp{ bar}}. The field separator is
not considered to be part of either the field preceding or the field
following.
@item -T @var{tempdir}
@opindex -T
@cindex temporary directory
@vindex TMPDIR
Use directory @var{tempdir} to store temporary files, overriding the
@env{TMPDIR} environment variable. If this option is given more than
once, temporary files are stored in all the directories given. If you
have a large sort or merge that is I/O-bound, you can often improve
performance by using this option to specify directories on different
disks and controllers.
@item -u
@opindex -u
@cindex uniquifying output
@@ -2388,13 +2417,13 @@ sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
@end example
@item
Generate a tags file in case insensitive sorted order.
Generate a tags file in case-insensitive sorted order.
@example
@smallexample
find src -type f -print0 | sort -t / -z -f | xargs -0 etags --append
@end example
@end smallexample
The use of @samp{-print0}, @samp{-z}, and @samp{-0} in this case mean
The use of @samp{-print0}, @samp{-z}, and @samp{-0} in this case means
that pathnames that contain Line Feed characters will not get broken up
by the sort operation.
@@ -2463,7 +2492,7 @@ The program accepts the following options. Also see @ref{Common options}.
@opindex --skip-fields
Skip @var{n} fields on each line before checking for uniqueness. Fields
are sequences of non-space non-tab characters that are separated from
each other by at least one spaces or tabs.
each other by at least one space or tab.
@item +@var{n}
@itemx -s @var{n}
@@ -2539,8 +2568,8 @@ comm [@var{option}]@dots{} @var{file1} @var{file2}
@vindex LC_COLLATE
Before @code{comm} can be used, the input files must be sorted using the
collating sequence specified by the @env{LC_COLLATE} locale, with
trailing newlines significant. If an input file ends in a non-newline
collating sequence specified by the @env{LC_COLLATE} locale.
If an input file ends in a non-newline
character, a newline is silently appended. The @code{sort} command with
no options always outputs a file that is suitable input to @code{comm}.
@@ -2630,35 +2659,35 @@ ptx -G [@var{option} @dots{}] [@var{input} [@var{output}]]
@end example
The @samp{-G} (or its equivalent: @samp{--traditional}) option disables
all GNU extensions and revert to traditional mode, thus introducing some
limitations, and changes several of the program's default option values.
all GNU extensions and reverts to traditional mode, thus introducing some
limitations and changing several of the program's default option values.
When @samp{-G} is not specified, GNU extensions are always enabled. GNU
extensions to @code{ptx} are documented wherever appropriate in this
document. For the full list, see @xref{Compatibility in ptx}.
Individual options are explained in incoming sections.
Individual options are explained in the following sections.
When GNU extensions are enabled, there may be zero, one or several
@var{file} after the options. If there is no @var{file}, the program
reads the standard input. If there is one or several @var{file}, they
@var{file}s after the options. If there is no @var{file}, the program
reads the standard input. If there is one or several @var{file}s, they
give the name of input files which are all read in turn, as if all the
input files were concatenated. However, there is a full contextual
break between each file and, when automatic referencing is requested,
file names and line numbers refer to individual text input files. In
all cases, the program produces the permuted index onto the standard
all cases, the program outputs the permuted index to the standard
output.
When GNU extensions are @emph{not} enabled, that is, when the program
operates in traditional mode, there may be zero, one or two parameters
besides the options. If there is no parameters, the program reads the
standard input and produces the permuted index onto the standard output.
besides the options. If there are no parameters, the program reads the
standard input and outputs the permuted index to the standard output.
If there is only one parameter, it names the text @var{input} to be read
instead of the standard input. If two parameters are given, they give
respectively the name of the @var{input} file to read and the name of
the @var{output} file to produce. @emph{Be very careful} to note that,
in this case, the contents of file given by the second parameter is
destroyed. This behaviour is dictated only by System V @code{ptx}
compatibility, because GNU Standards discourage output parameters not
destroyed. This behavior is dictated by System V @code{ptx}
compatibility; GNU Standards normally discourage output parameters not
introduced by an option.
Note that for @emph{any} file named as the value of an option or as an
@@ -2667,7 +2696,7 @@ standard input is assumed. However, it would not make sense to use this
convention more than once per program invocation.
@menu
* General options in ptx:: Options which affect general program behaviour.
* General options in ptx:: Options which affect general program behavior.
* Charset selection in ptx:: Underlying character set considerations.
* Input processing in ptx:: Input fields, contexts, and keyword selection.
* Output formatting in ptx:: Types of output format, and sizing the fields.
@@ -2682,20 +2711,20 @@ convention more than once per program invocation.
@item -C
@itemx --copyright
Prints a short note about the Copyright and copying conditions, then
Print a short note about the copyright and copying conditions, then
exit without further processing.
@item -G
@itemx --traditional
As already explained, this option disables all GNU extensions to
@code{ptx} and switch to traditional mode.
@code{ptx} and switches to traditional mode.
@item --help
Prints a short help on standard output, then exit without further
Print a short help on standard output, then exit without further
processing.
@item --version
Prints the program verison on standard output, then exit without further
Print the program version on standard output, then exit without further
processing.
@end table
@@ -2704,16 +2733,17 @@ processing.
@node Charset selection in ptx
@subsection Charset selection
As it is setup now, the program assumes that the input file is coded
@c FIXME: People don't necessarily know what an IBM-PC was these days.
As it is set up now, the program assumes that the input file is coded
using 8-bit ISO 8859-1 code, also known as Latin-1 character set,
@emph{unless} if it is compiled for MS-DOS, in which case it uses the
@emph{unless} it is compiled for MS-DOS, in which case it uses the
character set of the IBM-PC. (GNU @code{ptx} is not known to work on
smaller MS-DOS machines anymore.) Compared to 7-bit @sc{ascii}, the set of
characters which are letters is then different, this fact alters the
behaviour of regular expression matching. Thus, the default regular
expression for a keyword allows foreign or diacriticized letters.
Keyword sorting, however, is still crude; it obeys the underlying
character set ordering quite blindly.
smaller MS-DOS machines anymore.) Compared to 7-bit @sc{ascii}, the set
of characters which are letters is different; this alters the behavior
of regular expression matching. Thus, the default regular expression
for a keyword allows foreign or diacriticized letters. Keyword sorting,
however, is still crude; it obeys the underlying character set ordering
quite blindly.
@table @samp
@@ -2735,7 +2765,7 @@ Fold lower case letters to upper case for sorting.
This option provides an alternative (to @samp{-W}) method of describing
which characters make up words. It introduces the name of a
file which contains a list of characters which can@emph{not} be part of
one word, this file is called the @dfn{Break file}. Any character which
one word; this file is called the @dfn{Break file}. Any character which
is not part of the Break file is a word constituent. If both options
@samp{-b} and @samp{-W} are specified, then @samp{-W} has precedence and
@samp{-b} is ignored.
@@ -2764,21 +2794,21 @@ default Ignore file, specify @code{/dev/null} instead.
@itemx --only-file=@var{file}
The file associated with this option contains a list of words which will
be retained in concordance output, any word not mentioned in this file
be retained in concordance output; any word not mentioned in this file
is ignored. The file is called the @dfn{Only file}. The file contains
exactly one word in each line; the end of line separation of words is
not subject to the value of the @samp{-S} option.
There is no default for the Only file. In the case there are both an
Only file and an Ignore file, a word will be subject to be a keyword
only if it is given in the Only file and not given in the Ignore file.
Only file and an Ignore file, a word can be a keyword only if it is
given in the Only file and not given in the Ignore file.
@item -r
@itemx --references
On each input line, the leading sequence of non white characters will be
On each input line, the leading sequence of non-white space characters will be
taken to be a reference that has the purpose of identifying this input
line on the produced permuted index. For more information about reference
line in the resulting permuted index. For more information about reference
production, see @xref{Output formatting in ptx}.
Using this option changes the default value for option @samp{-S}.
@@ -2793,12 +2823,12 @@ excluded from the output contexts.
@itemx --sentence-regexp=@var{regexp}
This option selects which regular expression will describe the end of a
line or the end of a sentence. In fact, there is other distinction
between end of lines or end of sentences than the effect of this regular
expression, and input line boundaries have no special significance
outside this option. By default, when GNU extensions are enabled and if
@samp{-r} option is not used, end of sentences are used. In this
case, the precise @var{regex} is imported from GNU emacs:
line or the end of a sentence. In fact, this regular expression is not
the only distinction between end of lines or end of sentences, and input
line boundaries have no special significance outside this option. By
default, when GNU extensions are enabled and if @samp{-r} option is not
used, end of sentences are used. In this case, this @var{regex} is
imported from GNU Emacs:
@example
[.?!][]\"')@}]*\\($\\|\t\\| \\)[ \t\n]*
@@ -2829,8 +2859,8 @@ the head of the input line or sentence is used to fill the unused area
on the right of the output line.
As a matter of convenience to the user, many usual backslashed escape
sequences, as found in the C language, are recognized and converted to
the corresponding characters by @code{ptx} itself.
sequences from the C language are recognized and converted to the
corresponding characters by @code{ptx} itself.
@item -W @var{regexp}
@itemx --word-regexp=@var{regexp}
@@ -2841,9 +2871,9 @@ letters; the @var{regexp} used is @samp{\w+}. When GNU extensions are
disabled, a word is by default anything which ends with a space, a tab
or a newline; the @var{regexp} used is @samp{[^ \t\n]+}.
An empty @var{regexp} is equivalent to not using this option, letting the
default dive in. @xref{Regexps, , Syntax of Regular Expressions, emacs,
The GNU Emacs Manual}.
An empty @var{regexp} is equivalent to not using this option.
@xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
Manual}.
As a matter of convenience to the user, many usual backslashed escape
sequences, as found in the C language, are recognized and converted to
@@ -2855,13 +2885,13 @@ the corresponding characters by @code{ptx} itself.
@node Output formatting in ptx
@subsection Output formatting
Output format is mainly controlled by @samp{-O} and @samp{-T} options,
described in the table below. When neither @samp{-O} nor @samp{-T} is
selected, and if GNU extensions are enabled, the program choose an
output format suited for a dumb terminal. Each keyword occurrence is
Output format is mainly controlled by the @samp{-O} and @samp{-T} options
described in the table below. When neither @samp{-O} nor @samp{-T} are
selected, and if GNU extensions are enabled, the program chooses an
output format suitable for a dumb terminal. Each keyword occurrence is
output to the center of one line, surrounded by its left and right
contexts. Each field is properly justified, so the concordance output
could readily be observed. As a special feature, if automatic
can be readily observed. As a special feature, if automatic
references are selected by option @samp{-A} and are output before the
left context, that is, if option @samp{-R} is @emph{not} selected, then
a colon is added after the reference; this nicely interfaces with GNU
@@ -2879,8 +2909,8 @@ Output format is further controlled by the following options.
@item -g @var{number}
@itemx --gap-size=@var{number}
Select the size of the minimum white gap between the fields on the output
line.
Select the size of the minimum white space gap between the fields on the
output line.
@item -w @var{number}
@itemx --width=@var{number}
@@ -2890,7 +2920,7 @@ used, they are included or excluded from the output maximum width
depending on the value of option @samp{-R}. If this option is not
selected, that is, when references are output before the left context,
the output maximum width takes into account the maximum length of all
references. If this options is selected, that is, when references are
references. If this option is selected, that is, when references are
output after the right context, the output maximum width does not take
into account the space taken by references, nor the gap that precedes
them.
@@ -2930,12 +2960,12 @@ towards the beginning or the end of the current line, or current
sentence, as selected with option @samp{-S}. But there is a maximum
allowed output line width, changeable through option @samp{-w}, which is
further divided into space for various output fields. When a field has
to be truncated because cannot extend until the beginning or the end of
the current line to fit in the, then a truncation occurs. By default,
to be truncated because it cannot extend beyond the beginning or the end of
the current line to fit in, then a truncation occurs. By default,
the string used is a single slash, as in @samp{-F /}.
@var{string} may have more than one character, as in @samp{-F ...}.
Also, in the particular case @var{string} is empty (@samp{-F ""}),
Also, in the particular case when @var{string} is empty (@samp{-F ""}),
truncation flagging is disabled, and no truncation marks are appended in
this case.
@@ -2955,11 +2985,11 @@ generating output suitable for @code{nroff}, @code{troff} or @TeX{}.
Choose an output format suitable for @code{nroff} or @code{troff}
processing. Each output line will look like:
@example
@smallexample
.xx "@var{tail}" "@var{before}" "@var{keyword_and_after}" "@var{head}" "@var{ref}"
@end example
@end smallexample
so it will be possible to write an @samp{.xx} roff macro to take care of
so it will be possible to write a @samp{.xx} roff macro to take care of
the output typesetting. This is the default output format when GNU
extensions are disabled. Option @samp{-M} might be used to change
@samp{xx} to another macro name.
@@ -2975,9 +3005,9 @@ so it will be correctly processed by @code{nroff} or @code{troff}.
Choose an output format suitable for @TeX{} processing. Each output
line will look like:
@example
@smallexample
\xx @{@var{tail}@}@{@var{before}@}@{@var{keyword}@}@{@var{after}@}@{@var{head}@}@{@var{ref}@}
@end example
@end smallexample
@noindent
so it will be possible to write a @code{\xx} definition to take care of
@@ -3025,11 +3055,11 @@ or, if a second @var{file} parameter is given on the command, to that
Having output parameters not introduced by options is a quite dangerous
practice which GNU avoids as far as possible. So, for using @code{ptx}
portably between GNU and System V, you should pay attention to always
use it with a single input file, and always expect the result on
standard output. You might also want to automatically configure in a
@samp{-G} option to @code{ptx} calls in products using @code{ptx}, if
the configurator finds that the installed @code{ptx} accepts @samp{-G}.
portably between GNU and System V, you should always use it with a
single input file, and always expect the result on standard output. You
might also want to automatically configure in a @samp{-G} option to
@code{ptx} calls in products using @code{ptx}, if the configurator finds
that the installed @code{ptx} accepts @samp{-G}.
@item
The only options available in System V @code{ptx} are options @samp{-b},
@@ -3053,7 +3083,7 @@ line width computations.
All 256 characters, even @kbd{NUL}s, are always read and processed from
input file with no adverse effect, even if GNU extensions are disabled.
However, System V @code{ptx} does not accept 8-bit characters, a few
control characters are rejected, and the tilde @kbd{~} is condemned.
control characters are rejected, and the tilde @kbd{~} is also rejected.
@item
Input line length is only limited by available memory, even if GNU
@@ -3135,6 +3165,8 @@ take up 1 character.
@opindex --fields
Print only the fields listed in @var{field-list}. Fields are
separated by a TAB character by default.
Also print any line that contains no delimiter character, unless
the @samp{--only-delimited} (@samp{-s}) option is specified
@item -d @var{input_delim_byte}
@itemx --delimiter=@var{input_delim_byte}
@@ -3156,7 +3188,7 @@ character.
@itemx --output-delimiter=@var{output_delim_string}
@opindex --output-delimiter
For @samp{-f}, output fields are separated by @var{output_delim_string}
For @samp{-f}, output fields are separated by @var{output_delim_string}.
The default is to use the input delimiter.
@@ -3406,11 +3438,23 @@ A backslash.
The notation @samp{@var{m}-@var{n}} expands to all of the characters
from @var{m} through @var{n}, in ascending order. @var{m} should
collate before @var{n}; if it doesn't, an error results. As an example,
@samp{0-9} is the same as @samp{0123456789}. Although GNU @code{tr}
does not support the System V syntax that uses square brackets to
enclose ranges, translations specified in that format will still work as
long as the brackets in @var{string1} correspond to identical brackets
in @var{string2}.
@samp{0-9} is the same as @samp{0123456789}.
GNU @code{tr} does not support the System V syntax that uses square
brackets to enclose ranges. Translations specified in that format
sometimes work as expected, since the brackets are often transliterated
to themselves. However, they should be avoided because they sometimes
behave unexpectedly. For example, @samp{tr -d '[0-9]'} deletes brackets
as well as digits.
Many historically common and even accepted uses of ranges are not
portable. For example, on @sc{ebcdic} hosts using the @samp{A-Z}
range will not do what most would expect because @samp{A} through @samp{Z}
are not contiguous as they are in @sc{ascii}.
If you can rely on a @sc{posix} compliant version of @code{tr}, then
the best way to work around this is to use character classes (see below).
Otherwise, it is most portable (and most ugly) to enumerate the members
of the ranges.
@item Repeated characters
@cindex repeated characters
@@ -3519,6 +3563,9 @@ tr a-z A-Z
tr '[:lower:]' '[:upper:]'
@end example
@noindent
But note that using ranges like @code{a-z} above is not portable.
When @code{tr} is performing translation, @var{set1} and @var{set2}
typically have the same length. If @var{set1} is shorter than
@var{set2}, the extra characters at the end of @var{set2} are ignored.
@@ -3546,6 +3593,14 @@ because it converts only zero bytes (the first element in the
complement of @var{set1}), rather than all non-alphanumerics, to
newlines.
@noindent
By the way, the above idiom is not portable because it uses ranges.
Assuming a @sc{posix} compliant @code{tr}, here is a better way to write it:
@example
tr -cs '[:alnum:]' '[\n*]'
@end example
@node Squeezing
@subsection Squeezing repeats and deleting
@@ -3585,7 +3640,7 @@ non-alphanumeric characters to newlines, then squeezes each string
of repeated newlines into a single newline:
@example
tr -cs 'a-zA-Z0-9' '[\n*]'
tr -cs '[:alnum:]' '[\n*]'
@end example
@item
@@ -3871,9 +3926,9 @@ water pipeline.
With the Unix shell, it's very easy to set up data pipelines:
@example
@smallexample
program_to_create_data | filter1 | .... | filterN > final.pretty.data
@end example
@end smallexample
We start out by creating the raw data; each filter applies some successive
transformation to the data, until by the time it comes out of the pipeline,
@@ -4071,7 +4126,7 @@ characters. Normally it is used for things like mapping upper case to
lower case:
@example
$ echo ThIs ExAmPlE HaS MIXED case! | tr '[A-Z]' '[a-z]'
$ echo ThIs ExAmPlE HaS MIXED case! | tr '[:upper:]' '[:lower:]'
this example has mixed case!
@end example
@@ -4130,16 +4185,16 @@ The first step is to change the case of all the letters in our input file
to one case. ``The'' and ``the'' are the same word when doing counting.
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | ...
$ tr '[:upper:]' '[:lower:]' < whats.gnu | ...
@end example
The next step is to get rid of punctuation. Quoted words and unquoted words
should be treated identically; it's easiest to just get the punctuation out of
the way.
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | tr -cd '[A-Za-z0-9_ \012]' | ...
@end example
@smallexample
$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \012' | ...
@end smallexample
The second @code{tr} command operates on the complement of the listed
characters, which are all the letters, the digits, the underscore, and
@@ -4152,10 +4207,10 @@ The words only contain alphanumeric characters (and the underscore). The
next step is break the data apart so that we have one word per line. This
makes the counting operation much easier, as we will see shortly.
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | tr -cd '[A-Za-z0-9_ \012]' |
> tr -s '[ ]' '\012' | ...
@end example
@smallexample
$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \012' |
> tr -s ' ' '\012' | ...
@end smallexample
This command turns blanks into newlines. The @samp{-s} option squeezes
multiple newline characters in the output into just one. This helps us
@@ -4166,10 +4221,10 @@ typing in all of a command.)
We now have data consisting of one word per line, no punctuation, all one
case. We're ready to count each word:
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | tr -cd '[A-Za-z0-9_ \012]' |
> tr -s '[ ]' '\012' | sort | uniq -c | ...
@end example
@smallexample
$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \012' |
> tr -s ' ' '\012' | sort | uniq -c | ...
@end smallexample
At this point, the data might look something like this:
@@ -4198,16 +4253,16 @@ reverse the order of the sort
The final pipeline looks like this:
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | tr -cd '[A-Za-z0-9_ \012]' |
> tr -s '[ ]' '\012' | sort | uniq -c | sort -nr
@smallexample
$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \012' |
> tr -s ' ' '\012' | sort | uniq -c | sort -nr
156 the
60 a
58 to
51 of
51 and
...
@end example
@end smallexample
Whew! That's a lot to digest. Yet, the same principles apply. With six
commands, on two lines (really one long one split for convenience), we've
@@ -4225,19 +4280,19 @@ dictionary.
Now, how to compare our file with the dictionary? As before, we generate
a sorted list of words, one per line:
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | tr -cd '[A-Za-z0-9_ \012]' |
> tr -s '[ ]' '\012' | sort -u | ...
@end example
@smallexample
$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \012' |
> tr -s ' ' '\012' | sort -u | ...
@end smallexample
Now, all we need is a list of words that are @emph{not} in the
dictionary. Here is where the @code{comm} command comes in.
@example
$ tr '[A-Z]' '[a-z]' < whats.gnu | tr -cd '[A-Za-z0-9_ \012]' |
> tr -s '[ ]' '\012' | sort -u |
@smallexample
$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \012' |
> tr -s ' ' '\012' | sort -u |
> comm -23 - /usr/lib/ispell/ispell.words
@end example
@end smallexample
The @samp{-2} and @samp{-3} options eliminate lines that are only in the
dictionary (the second file), and lines that are in both files. Lines

View File

@@ -6,4 +6,5 @@ getopt1.c
md5.h
obstack.h
regex.h
regex.c
getpagesize.h

View File

@@ -195,3 +195,35 @@ p u
n
p u
n
r -r .aa > k
pwd
q
b main
r
b get_date
c
n
p tm
n
p tm
n
p pc
n
p tm
n
p tm
n
p delta
n
p Start
q
b dir_name
r
n
p slash
n
n
n
p slash
p slash - path + 1
q

View File

@@ -1,3 +1,671 @@
2000-10-30 Paul Eggert <eggert@twinsun.com>
* lib/error.h, lib/getline.h, lib/modechange.h:
Remove "2000" from Copyright line, as the file hasn't been
changed this year other than in the copyright notice.
* lib/xalloc.h: Add "2000" to Copyright line, as this file
was changed this year.
2000-10-30 Paul Eggert <eggert@twinsun.com>
* lib/fnmatch.c (FOLD): Do not assume that characters are unsigned.
(fnmatch): Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
2000-10-29 Greg Louis <glouis@dynamicro.on.ca>
* regex.h (__restrict_arr): Move definition out of #ifndef block.
Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but
doesn't define __restrict_arr.
2000-10-29 Jim Meyering <meyering@lucent.com>
* xstat.in: Fix grammar in comment.
2000-10-28 Jim Meyering <meyering@lucent.com>
* memchr.c: Update from libc.
Adjust for portability:
[HAVE_STDLIB_H]: Include stdlib.h.
[HAVE_BP_SYM_H || _LIBC]: Guard inclusion of bp-sym.h.
Undef __memchr, too.
[!weak_alias]: Define __memchr to memchr.
* regex.c: Update from libc.
* regex.h: Likewise.
* getopt1.c: Likewise.
* memcmp.c: Likewise.
* getusershell.c (setusershell) [HAVE_FSEEKO]: Use fseeko.
Patch by Ulrich Drepper.
2000-10-26 Jim Meyering <meyering@lucent.com>
* strftime.c: Update from libc.
2000-10-25 Jim Meyering <meyering@lucent.com>
* obstack.c: Update from libc.
2000-10-23 Jim Meyering <meyering@lucent.com>
* hard-locale.c (hard_locale): Revert last change -- it was simply
wrong. That set_locale call must not have any side effects.
From Paul Eggert.
2000-10-22 Jim Meyering <meyering@lucent.com>
* md5.c (md5_process_block) [OP]: Use `rol', not CYCLIC.
[CYCLIC]: Remove now-unused definition.
* save-cwd.c (O_DIRECTORY): Define, if needed.
(save_cwd) [HAVE_FCHDIR]: Use O_DIRECTORY when opening ".".
Suggestion from Ulrich Drepper.
2000-10-21 Jim Meyering <meyering@lucent.com>
* dirname.c (dir_name_r): New function, factored out of dir_name.
(dir_name): Use dir_name_r.
* dirname.h (dir_name_r): Declare it.
2000-10-21 Jim Meyering <meyering@lucent.com>
* dirname.c (memrchr): Declare if necessary.
(dir_name): Remove the restriction that there be no
trailing slashes. Now, this code skips past them, effectively
ignoring them.
[TEST_DIRNAME] (main): New unit tests.
* memrchr.c: New file from GNU libc.
Undef __memrchr, too.
[!weak_alias]: Define __memrchr to memrchr.
Guard weak_alias use with `#ifdef weak_alias'.
2000-10-17 Jim Meyering <meyering@lucent.com>
* quote.h (PARAMS): Define and use.
Reported by Akim Demaille.
* getopt.c: Update from libc.
2000-10-16 Jim Meyering <meyering@lucent.com>
* hard-locale.c (hard_locale): Use "", not 0 as 2nd arg to setlocale.
From Jan Fedak.
2000-09-25 Jim Meyering <meyering@lucent.com>
* md5.h (rol): Define (from GnuPG).
* sha.c: Give credit (GnuPG) where due.
(M): Use rol rather than open-coding it.
Add a FIXME comment.
2000-09-21 Jim Meyering <meyering@lucent.com>
* userspec.c (parse_user_spec): Remove debugging printf I'd added.
Reported by Michael Stone.
2000-09-20 Jim Meyering <meyering@lucent.com>
* Makefile.am (libfetish_a_SOURCES): Add sha.c.
(noinst_HEADERS): Add sha.h.
Based on code from Scott G. Miller and from GnuPG.
2000-09-15 Jim Meyering <meyering@lucent.com>
* regex.c: Update from libc.
2000-09-10 Jim Meyering <meyering@lucent.com>
* getopt.c (_getopt_internal): Update from glibc.
2000-09-09 Jim Meyering <meyering@lucent.com>
* quotearg.c: Rename ISASCII to IN_CTYPE_DOMAIN, so people don't
think it should be used as a general replacement for isascii.
* fnmatch.c: Likewise.
* mbswidth.c: Likewise
* regex.c: Likewise.
Don't use atoi.
* userspec.c: Include sys/param.h and limits.h.
Include xstrtol.h.
(CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
(UID_T_MAX, GID_T_MAX, MAXUID, MAXGID): Define.
(parse_user_spec): Use xstrtoul, not atoi when converting numeric
UID, GID. Check range.
2000-09-06 Jim Meyering <meyering@lucent.com>
* getopt.c (_getopt_internal): Update from glibc.
2000-08-30 Jim Meyering <meyering@lucent.com>
* strftime.c: Merge in changes from GNU libc.
2000-08-26 Jim Meyering <meyering@lucent.com>
* closeout.c: Include "__fpending.h".
(close_stdout_status): Return right away if there's nothing to flush.
* Makefile.am (noinst_HEADERS): Add __fpending.h.
* __fpending.c: New file.
* __fpending.h: New file.
2000-08-07 Paul Eggert <eggert@twinsun.com>
Standardize on "memory exhausted" instead of "Memory exhausted"
or "virtual memory exhausted".
* obstack.c (print_and_abort): Use "memory exhausted", not
"virtual memory exhausted".
* same.c (same_name): Invoke xalloc_die instead of printing
our own message.
* userspec.c (parse_user_spec): Likewise.
* bumpalloc.h: comment fix
* same.c, userspec.c: Include xalloc.h.
* xalloc.h (xalloc_msg_memory_exhausted): Now char const[],
not char *const and pointing to a constant array.
* xmalloc.c (xalloc_msg_memory_exhausted): Likewise.
(xrealloc): Comment fix.
* userspec.c (parse_user_spec):
Don't translate a message until just before returning,
to avoid unnecessary translation.
2000-08-07 Jim Meyering <meyering@lucent.com>
* addext.c, argmatch.c, argmatch.h, backupfile.h, bumpalloc.h,
chown.c, diacrit.h, dirname.h, dup2.c, exclude.h, fileblocks.c,
fnmatch.c, fnmatch.h, fsusage.c, fsusage.h, getdate.h,
getgroups.c, gethostname.c, getopt.h, group-member.c,
hard-locale.c, hash.h, isdir.c, lchown.c, linebuffer.c,
linebuffer.h, long-options.h, malloc.c, md5.c, md5.h, memchr.c,
memcmp.c, memcoll.c, memset.c, mktime.c, modechange.h, obstack.h,
pathmax.h, realloc.c, rmdir.c, safe-read.c, save-cwd.c, stime.c,
stpcpy.c, strcasecmp.c, strcspn.c, strdup.c, stripslash.c,
strstr.c, strtod.c, strtol.c, strtoul.c, strtoull.c, strtoumax.c,
utime.c, version-etc.h, xalloc.h, xstrdup.c, xstrtoumax.c,
yesno.c: Back out Copyright date changes for each file with no change
this year. This eases coordination with other programs using the same
source code modules. From Paul Eggert.
2000-08-03 Greg McGary <greg@mcgary.org>
* regex.c (SET_HIGH_BOUND, MOVE_BUFFER_POINTER,
ELSE_EXTEND_BUFFER_HIGH_BOUND): New macros.
(EXTEND_BUFFER): Use them.
2000-08-01 Jim Meyering <meyering@lucent.com>
* dirname.c (ISSLASH): Define.
(BACKSLASH_IS_PATH_SEPARATOR): Define.
(dir_name) [BACKSLASH_IS_PATH_SEPARATOR]: Handle the case in which
both `\' and `/' may be use as path separators.
Based on a patch from Prashant TR.
2000-07-31 Paul Eggert <eggert@twinsun.com>
* quotearg.c (quotearg_n_options): Don't make the initial
slot vector a constant, since it might get modified.
2000-07-31 Jim Meyering <meyering@lucent.com>
* xmalloc.c: Use `virtual memory exhausted', not `Memory exhausted'.
* obstack.c (print_and_abort): Likewise.
2000-07-30 Paul Eggert <eggert@twinsun.com>
* quotearg.c (quotearg_n_options): Preallocate a slot 0
buffer, so that the caller can always quote one small
component of a "memory exhausted" message in slot 0.
From a suggestion by Jim Meyering.
2000-07-30 Jim Meyering <meyering@lucent.com>
* makepath.c (make_path): Quote the other instance, too.
* quotearg.c (N_STATIC_SLOTVECS): Define.
(STATIC_BUF_SIZE): Define.
(quotearg_n_options): Use only statically allocated storage when
N < N_STATIC_SLOTVECS and the length of the quoted result is smaller
than STATIC_BUF_SIZE.
2000-07-29 Jim Meyering <meyering@lucent.com>
* diacrit.c (diacrit_diac): Use __MSDOS__ in favor of MSDOS.
* dirname.c (dir_name): Likewise.
* basename.c (base_name): Use ISSLASH rather than comparing against `/'.
* dirname.c (dir_name) [MSDOS]: Declare `lim' to be const.
(dir_name): Assert that there are no trailing slashes.
2000-07-18 Bruno Haible <haible@clisp.cons.org>
* mbswidth.h (mbswidth): Add a flags argument.
(mbswidth): New declaration.
(MBSW_ACCEPT_INVALID, MBSW_ACCEPT_UNPRINTABLE): New macros.
* mbswidth.c (mbswidth): Add a flags argument.
(mbsnwidth): New function.
2000-07-24 Jim Meyering <meyering@lucent.com>
* mbswidth.c: Remove useless #else. From Bruno Haible.
2000-07-23 Paul Eggert <eggert@twinsun.com>
* mbswidth.c (_XOPEN_SOURCE):
Don't define; this causes problems on Solaris 7.
(wcwidth) [!HAVE_DECL_WCWIDTH]: Declare.
2000-07-23 Paul Eggert <eggert@twinsun.com>
* quotearg.c:
Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
so that mbstate_t is always defined.
Do not inspect MB_LEN_MAX, since it's incorrectly defined to
be 1 in at least one GCC installation, and this configuration
error is likely to be common. Ignoring MB_LEN_MAX hurts
performance on hosts that have mbrtowc but have only unibyte
locales, but I assume these hosts are rare.
2000-07-23 Paul Eggert <eggert@twinsun.com>
* quotearg.c: Streamline by invoking multibyte code only if needed.
<wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX.
(MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX).
(quotearg_buffer_restyled): If a unibyte locale, don't bother to
invoke multibyte primitives.
2000-07-23 Jim Meyering <meyering@lucent.com>
* basename.c (base_name): Add an assertion.
2000-07-15 Bruno Haible <clisp.cons.org>
* quotearg.c: When the system forces us to redefine mbstate_t,
shadow its mbsinit function.
2000-07-16 Bruno Haible <haible@clisp.cons.org>
* mbswidth.h: New file.
* mbswidth.c: New file.
* Makefile.am (libfetish_a_SOURCES): Add mbswidth.c.
(noinst_HEADERS): Add mbswidth.h.
2000-07-17 Bruno Haible <haible@clisp.cons.org>
* config.charset: Add support for FreeBSD. Improve support for HP-UX
and IRIX 6.
2000-07-15 Jim Meyering <meyering@lucent.com>
* makepath.c: Include quote.h.
(make_path): Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Give better diagnostics.
* Makefile.am (libfetish_a_SOURCES): Add quote.c.
(noinst_HEADERS): Add quote.h.
* quote.c (quote, quote_n): New file. Two functions taken verbatim
from tar's src/misc.c.
* quote.h: New file. Prototypes for same.
2000-07-10 Paul Eggert <eggert@twinsun.com>
From a suggestion by Bruno Haible.
* quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
to decide whether to define the BeOS workaround macro;
this adjusts to the change to AC_MBSTATE_T.
2000-07-13 Paul Eggert <eggert@twinsun.com>
* quotearg.h (enum quoting style): New enum clocale_quoting_style.
* quotearg.c: (quoting_style_args, quoting_style_vals,
quotearg_buffer_restyled): Add support for
clocale_quoting_style. Undo previous change to
locale_quoting_style behavior, and undo the "{LEFT QUOTATION MARK}"
and "{RIGHT QUOTATION MARK}" msgids.
2000-07-05 Paul Eggert <eggert@twinsun.com>
The old behavior of quoting `like this' doesn't look good with
newer, ISO-style fonts. See:
http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
Instead, quote "like this" by default. Let the translator
tailor the locale-specific quoting behavior by providing
translations for {LEFT QUOTATION MARK} and {RIGHT QUOTATION MARK}.
* quotearg.c (N_): New macro.
(gettext_default): New function.
(quotearg_buffer_restyled): Use
gettext_default ("{LEFT QUOTATION MARK}", "\"") for left quote, and
gettext_default ("{RIGHT QUOTATION MARK}", "\"") for right quote.
2000-07-09 Jim Meyering <meyering@lucent.com>
* Most files: Update copyright dates to include 2000.
2000-07-08 Jim Meyering <meyering@lucent.com>
* xgethostname.c (ENAMETOOLONG): Define to an unlikely value
if not defined.
(xgethostname): Remove now-unnecessary #ifdef.
Move declaration of `err' into loop where it's used.
2000-07-05 Bruno Haible <haible@clisp.cons.org>
* xgethostname.c (xgethostname): Protect against the SunOS5.5 bug
by allocating a larger buffer. Test the gethostname return value for
being >= 0, not == 0, for BeOS. Don't exhaust memory if gethostname
returns an error and ENAMETOOLONG isn't defined.
2000-07-05 Paul Eggert <eggert@twinsun.com>
and Bruno Haible <haible@clisp.cons.org>
* quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't.
2000-07-05 Bruno Haible <haible@clisp.cons.org>
* quotearg.c (struct quoting_options): Simplify quote_these_too
dimension.
2000-07-03 Jim Meyering <meyering@lucent.com>
* strndup.c: [!HAVE_DECL_STRNLEN]: Declare strnlen.
Reported by Bruno Haible.
2000-07-04 Jim Meyering <meyering@lucent.com>
* quotearg.c: Make inclusion of <wchar.h> independent of whether
HAVE_MBRTOWC is set. Required at least for irix-5.6, which
lacks mbrtowc.
2000-07-03 Paul Eggert <eggert@twinsun.com>
and Bruno Haible <haible@clisp.cons.org>
* quotearg.c (mbrtowc):
Assign to *pwc, and return 1 only if result is nonzero.
(iswprint): Use ISPRINT when substituting our own mbrtowc.
2000-07-03 Jim Meyering <meyering@lucent.com>
* readutmp.h: [HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
This is necessary to get a definition of e.g., UTMP_FILE on HP-UX 10.20.
From Bob Proulx.
2000-07-02 Jim Meyering <meyering@lucent.com>
* quotearg.c (mbstate_t): Don't define here.
2000-07-02 Jim Meyering <meyering@lucent.com>
* nanosleep.c (SIGCONT): Define if not already defined.
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* mountlist.c: Use MOUNTED_FS_STAT_DEV instead of MOUNTED_NEXT_DEV,
per change in ../m4/ls-mntd-fs.m4.
(read_filesystem_list): Ignore symbolic links.
2000-06-29 Jim Meyering <meyering@lucent.com>
* same.c: Include <string.h> or <strings.h>, as appropriate,
for declaration of strcmp.
* long-options.c: Include <stdlib.h>, for declaration of exit.
* mountlist.c (fsp_to_string) [HAVE_F_FSTYPENAME_IN_STATFS]:
Avoid warning by casting result to `char *' to remove `const'.
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* Makefile.am (libfetish_a_SOURCES): Remove readutmp.c.
2000-06-26 Paul Eggert <eggert@twinsun.com>
savedir now sets errno on failure and invokes xmalloc to get memory.
Fix a couple of other minor bugs while we're at it.
* savedir.c (<unistd.h>): Do not include; there's no need.
(NAMLEN): Remove macro.
(malloc, realloc): Remove decls.
(stpcpy): Likewise.
("xalloc.h"): Include.
(NAME_SIZE_DEFAULT): New macro.
(savedir): Use xmalloc / xrealloc to allocate memory.
Use NAME_SIZE_DEFAULT if name_size is negative or overflows to zero.
Skip "" directory entries.
Use strlen to calculate directory entry length, since the old method
is rarely used these days and isn't worth supporting.
Don't use a pointer after freeing it.
Check for integer overflow when calculating allocation size.
Use memcpy to copy entries, instead of stpcpy.
Set errno properly when returning NULL.
Check for readdir error.
2000-06-26 Jim Meyering <meyering@lucent.com>
* posixtm.c [HAVE_STDLIB_H]: Include stdlib.h, for decl of abort.
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* getusershell.c (xmalloc, xrealloc): Remove functions.
Include xalloc.h.
Don't include <stdlib.h>. Don't declare malloc, realloc.
2000-06-23 Bruno Haible <haible@clisp.cons.org>
* unicodeio.c (print_unicode_char): Work around ansi2knr deficiency.
2000-06-24 Jim Meyering <meyering@lucent.com>
* error.c [!HAVE_DECL_STRERROR_R]: Declare strerror_r.
2000-06-21 Jim Meyering <meyering@lucent.com>
* getpass.c: New file, from Bruno Haible. Required for BeOS.
2000-06-19 Paul Eggert <eggert@twinsun.com>
* quotearg.c: Include <wctype.h> after <wchar.h>, for Solaris 2.5.
(mbrtowc, mbstate_t): Define substitutes if
HAVE_MBRTOWC && HAVE_WCHAR_H && !HAVE_MBSTATE_T_OBJECT.
(iswprint): Define to 1 if !defined iswprint && !HAVE_ISWPRINT,
not if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* xgetcwd.c (xgetcwd): If the required pathname length is smaller
than 1024, return a memory chunk of least possible size, instead
of size PATH_MAX + 2. In the loop, increment the size proportionally.
Use free/xmalloc instead of xrealloc to avoid copying for very long
paths.
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* canon-host.c (canon_host): Use malloc and memcpy to copy an
address, not strdup. Include <stdlib.h> and don't declare free().
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* path-concat.c (path_concat): Don't access dir[-1] if dir is
the empty string.
2000-06-21 Jim Meyering <meyering@lucent.com>
* Makefile.am (libfetish_a_SOURCES): Add getstr.c.
(noinst_HEADERS): Add getstr.h.
* getline.c (getstr): Move into a separate file.
* getstr.c (getstr): New file, extracted from getline.c, with
the following changes: new parameter, delim2; both delim[12]
parameters have type `int', not `char'. The latter would lose
with 8-bit delimiters.
* getstr.h: New file.
2000-06-19 Jim Meyering <meyering@lucent.com>
* getloadavg.c [HAVE_NLIST_H] (NLIST_STRUCT): Define.
2000-06-18 Jim Meyering <meyering@lucent.com>
* mkdir.c: Remove file, due mainly to copyright incompatibility.
Besides, these days every porting target provides a mkdir function.
* strnlen.c: Include memory.h, string.h, and/or strings.h as needed.
(this snippet comes from src/system.h).
2000-06-15 Paul Eggert <eggert@twinsun.com>
* human.c (adjust_value): New function.
(human_readable_inexact): Apply rounding style even when
printing approximate values.
2000-06-14 Paul Eggert <eggert@twinsun.com>
* human.c (human_readable_inexact): Allow an input block
size that is not a multiple of the output block size, and vice versa.
Reported by Piergiorgio Sartor.
2000-06-14 Paul Eggert <eggert@twinsun.com>
* getdate.y (get_date): Apply relative times after time
zone indicator, not before. Reported by Todd A. Jacobs.
2000-06-13 Jim Meyering <meyering@lucent.com>
* Makefile.am (all-local): Depend on lstat.c and stat.c.
* xstat.in [!HAVE_DECL_FREE]: Declare free in lstat.c.
2000-06-12 Paul Eggert <eggert@twinsun.com>
* xstat.in: Include <stdlib.h> in lstat, to declare "free".
2000-06-04 Paul Eggert <eggert@twinsun.com>
* strnlen.c: Include <config.h> if HAVE_CONFIG_H.
2000-06-04 Jim Meyering <meyering@lucent.com>
* getugroups.c (getugroups): Cast -1 to gid_t, for systems like
SunOS4.1.4 for which gid_t is an unsigned type.
2000-06-03 Jim Meyering <meyering@lucent.com>
* strnlen.c [!HAVE_DECL_MEMCHR]: Declare memchr.
2000-05-26 Bruno Haible <haible@clisp.cons.org>
* Makefile.am (install-exec-local): On systems with glibc-2.1 or
newer, don't install charset.alias.
* config.charset: Change the Linux/glibc rules so they become empty
on glibc-2.1 or newer.
2000-06-02 Jim Meyering <meyering@lucent.com>
* mountlist.c: Back out last change. Instead, do this...
* mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Set the me_dummy
member using the same `ignore'-testing code.
* mountlist.h (ME_DUMMY): Add `autofs' to the list of ignored
fs_type strings.
From Mark D. Roth.
2000-05-29 Jim Meyering <meyering@lucent.com>
* mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Ignore mounts
with the `ignore' attribute. Based on a patch from Mark D. Roth.
2000-05-22 Jim Meyering <meyering@lucent.com>
* makepath.c: Remove old, now-unnecessary `#ifdef __MSDOS__' block.
2000-05-18 Jim Meyering <meyering@lucent.com>
* hash.c (hash_rehash): Fix a nasty bug: copy the free entry list
back, too, since it may have been modified by allocate_entry.
(hash_delete): Rewrite to use neither the assignment operator
nor the comma operator in an if-expression.
2000-05-15 Paul Eggert <eggert@twinsun.com>
* closeout.c:
<sys/stat.h>, <sys/types.h>, <unistd.h>, (STDOUT_FILENO):
Remove; no longer needed.
"quotearg.h": Add include.
(file_name): Do not bother to explicitly initialize to NULL; it's less
efficient on some hosts.
(close_stdout_status): Remove test as to whether stdout was already
closed; it breaks for the case "echo x | sort >&-".
Quote file name colons.
Do not assume that _("write error") lacks format strings.
2000-05-15 Jim Meyering <meyering@lucent.com>
* version-etc.c (version_etc_copyright): Update the copyright string
used in all --version output.
2000-05-14 Jim Meyering <meyering@lucent.com>
* closeout.c (close_stdout_set_file_name): New function.
(close_stdout_status): Use new file-scoped global.
Return right away if fstat says the stdout file descriptor is invalid.
* closeout.h (close_stdout_set_file_name): Declare.
2000-05-10 Jim Meyering <meyering@lucent.com>
* closeout.c [default_exit_status]: New file-scoped variable.
(close_stdout_set_status): New function.
* closeout.h (close_stdout_set_status): Declare.
2000-05-08 Jim Meyering <meyering@lucent.com>
* long-options.c: Don't include closeout.h.
(parse_long_options): Don't call close_stdout for --version.
2000-05-06 Jim Meyering <meyering@lucent.com>
* strnlen.c: Undefine __strnlen and strnlen.
[!weak_alias]: Define __strnlen to strnlen.
* atexit.c: New file, from libiberty.
2000-05-06 Jim Meyering <meyering@lucent.com>
* closeout.c (close_stdout_status): Also check for errors on the
stderr stream.
2000-05-05 Bruno Haible <haible@clisp.cons.org>
* localcharset.c (get_charset_aliases): Use malloc, realloc and memcpy
instead of xmalloc, xrealloc, path_concat.
(locale_charset): Treat empty environment variables as absent.
(DIRECTORY_SEPARATOR, ISSLASH): New macros.
2000-05-04 Jim Meyering <meyering@lucent.com>
* getopt.c: Update from glibc.
* obstack.c: Likewise.
* obstack.h: Likewise.
* regex.c: Likewise. NB: K&R compiler support is dropped for this file
* regex.h: Likewise.
* strndup.c: Likewise.
* strnlen.c: New file, from glibc.
2000-05-01 Jim Meyering <meyering@lucent.com>
* full-write.c (full_write): Remove `FIXME' part of comment.
2000-04-29 Jim Meyering <meyering@lucent.com>
* path-concat.c: Declare strdup only if it's not defined.
@@ -117,7 +785,7 @@
2000-03-07 Paul Eggert <eggert@twinsun.com>
* lib/savedir.c (savedir): Work even if directory size is
* savedir.c (savedir): Work even if directory size is
negative; this can happen with some screwy NFS configurations.
2000-03-06 Jim Meyering <meyering@lucent.com>
@@ -170,7 +838,7 @@
2000-02-28 Paul Eggert <eggert@twinsun.com>
* lib/quotearg.c (ALERT_CHAR): New macro.
* quotearg.c (ALERT_CHAR): New macro.
(quotearg_buffer_restyled): Use it.
2000-02-27 Jim Meyering <meyering@lucent.com>
@@ -200,7 +868,7 @@
2000-02-18 Paul Eggert <eggert@twinsun.com>
* lib/getdate.y: Handle two-digit years with leading zeros correctly.
* getdate.y: Handle two-digit years with leading zeros correctly.
(textint): New typedef.
(parser_control): Member year changed from int to textint.
All uses changed.
@@ -222,7 +890,7 @@
2000-02-14 Paul Eggert <eggert@twinsun.com>
* lib/getpagesize.h (getpagesize): Port to VMS for Alpha;
* getpagesize.h (getpagesize): Port to VMS for Alpha;
adapted from changes to grep getpagesize.h by Martin P.J. Zinser.
2000-02-12 Jim Meyering <meyering@lucent.com>
@@ -310,7 +978,7 @@
2000-01-16 Paul Eggert <eggert@twinsun.com>
* lib/quotearg.c (quotearg_buffer_restyled): Do not quote
* quotearg.c (quotearg_buffer_restyled): Do not quote
alert, backslash, formfeed, and vertical tab unnecessarily in
shell quoting style.

View File

@@ -9,12 +9,13 @@ DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@
libfetish_a_SOURCES = \
getdate.y posixtm.c addext.c argmatch.c backupfile.c basename.c \
canon-host.c closeout.c dirname.c exclude.c filemode.c diacrit.c \
full-write.c getopt.c getopt1.c getugroups.c hard-locale.c hash.c \
canon-host.c closeout.c diacrit.c dirname.c exclude.c filemode.c \
full-write.c getopt.c getopt1.c getstr.c getugroups.c hard-locale.c hash.c \
human.c idcache.c isdir.c linebuffer.c localcharset.c long-options.c \
makepath.c md5.c memcasecmp.c memcoll.c modechange.c path-concat.c \
quotearg.c readtokens.c readutmp.c safe-read.c same.c save-cwd.c \
savedir.c stripslash.c unicodeio.c userspec.c version-etc.c xgetcwd.c \
makepath.c mbswidth.c md5.c memcasecmp.c memcoll.c modechange.c \
path-concat.c \
quote.c quotearg.c readtokens.c safe-read.c same.c save-cwd.c \
savedir.c sha.c stripslash.c unicodeio.c userspec.c version-etc.c xgetcwd.c \
xgethostname.c xmalloc.c xstrdup.c xstrtod.c xstrtol.c xstrtoul.c \
xstrtoumax.c yesno.c
@@ -23,12 +24,13 @@ libfetish_a_DEPENDENCIES = $(libfetish_a_LIBADD)
noinst_HEADERS = \
argmatch.h backupfile.h bumpalloc.h closeout.h diacrit.h dirname.h error.h \
exclude.h filemode.h fnmatch.h fsusage.h getdate.h getline.h getopt.h \
getpagesize.h group-member.h hard-locale.h hash.h human.h lchown.h \
linebuffer.h long-options.h md5.h memcasecmp.h memcoll.h \
makepath.h modechange.h mountlist.h nanosleep.h obstack.h \
path-concat.h pathmax.h posixtm.h quotearg.h readtokens.h \
readutmp.h regex.h safe-read.h same.h save-cwd.h savedir.h \
exclude.h filemode.h fnmatch.h __fpending.h fsusage.h \
getdate.h getline.h getopt.h \
getstr.h getpagesize.h group-member.h hard-locale.h hash.h human.h lchown.h \
linebuffer.h long-options.h mbswidth.h md5.h memcasecmp.h memcoll.h \
makepath.h mbswidth.h modechange.h mountlist.h nanosleep.h obstack.h \
path-concat.h pathmax.h posixtm.h quote.h quotearg.h readtokens.h \
readutmp.h regex.h safe-read.h same.h save-cwd.h savedir.h sha.h \
strverscmp.h unicodeio.h version-etc.h xalloc.h xstrtod.h xstrtol.h
BUILT_SOURCES = getdate.c lstat.c stat.c
@@ -59,19 +61,26 @@ stat.c: xstat.in
# which is shared with other installed packages. We use a list of referencing
# packages so that "make uninstall" will remove the file if and only if it
# is not used by another installed package.
# 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
all-local: charset.alias ref-add.sed ref-del.sed lstat.c stat.c
charset_alias = $(DESTDIR)$(libdir)/charset.alias
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
install-exec-local: all-local
$(mkinstalldirs) $(DESTDIR)$(libdir)
test -f $(charset_alias) \
&& orig=$(charset_alias) \
|| orig=charset.alias; \
sed -f ref-add.sed $$orig > $(charset_tmp)
$(INSTALL_DATA) $(charset_tmp) $(charset_alias)
rm -f $(charset_tmp)
if test -f $(charset_alias); then \
sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
$(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
rm -f $(charset_tmp) ; \
else \
if test @GLIBC21@ = no; then \
sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
$(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
rm -f $(charset_tmp) ; \
fi ; \
fi
uninstall-local: all-local
if test -f $(charset_alias); then \

View File

@@ -1,6 +1,7 @@
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Copyright (C) 1994, 1995-9, 2000 Free Software Foundation, Inc.
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000
# 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.
@@ -31,8 +32,6 @@ mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -75,8 +74,8 @@ DEPDIR = @DEPDIR@
DF_PROG = @DF_PROG@
FESETROUND_LIBM = @FESETROUND_LIBM@
GENCAT = @GENCAT@
GETCONF = @GETCONF@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GLIBC21 = @GLIBC21@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
@@ -90,7 +89,9 @@ INTLOBJS = @INTLOBJS@
KMEM_GROUP = @KMEM_GROUP@
LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
LIB_CRYPT = @LIB_CRYPT@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
MAKEINFO = @MAKEINFO@
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
@@ -104,6 +105,7 @@ POFILES = @POFILES@
POSUB = @POSUB@
POW_LIBM = @POW_LIBM@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SQRT_LIBM = @SQRT_LIBM@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
@@ -123,12 +125,13 @@ DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@
libfetish_a_SOURCES = \
getdate.y posixtm.c addext.c argmatch.c backupfile.c basename.c \
canon-host.c closeout.c dirname.c exclude.c filemode.c diacrit.c \
full-write.c getopt.c getopt1.c getugroups.c hard-locale.c hash.c \
canon-host.c closeout.c diacrit.c dirname.c exclude.c filemode.c \
full-write.c getopt.c getopt1.c getstr.c getugroups.c hard-locale.c hash.c \
human.c idcache.c isdir.c linebuffer.c localcharset.c long-options.c \
makepath.c md5.c memcasecmp.c memcoll.c modechange.c path-concat.c \
quotearg.c readtokens.c readutmp.c safe-read.c same.c save-cwd.c \
savedir.c stripslash.c unicodeio.c userspec.c version-etc.c xgetcwd.c \
makepath.c mbswidth.c md5.c memcasecmp.c memcoll.c modechange.c \
path-concat.c \
quote.c quotearg.c readtokens.c safe-read.c same.c save-cwd.c \
savedir.c sha.c stripslash.c unicodeio.c userspec.c version-etc.c xgetcwd.c \
xgethostname.c xmalloc.c xstrdup.c xstrtod.c xstrtol.c xstrtoul.c \
xstrtoumax.c yesno.c
@@ -138,12 +141,13 @@ libfetish_a_DEPENDENCIES = $(libfetish_a_LIBADD)
noinst_HEADERS = \
argmatch.h backupfile.h bumpalloc.h closeout.h diacrit.h dirname.h error.h \
exclude.h filemode.h fnmatch.h fsusage.h getdate.h getline.h getopt.h \
getpagesize.h group-member.h hard-locale.h hash.h human.h lchown.h \
linebuffer.h long-options.h md5.h memcasecmp.h memcoll.h \
makepath.h modechange.h mountlist.h nanosleep.h obstack.h \
path-concat.h pathmax.h posixtm.h quotearg.h readtokens.h \
readutmp.h regex.h safe-read.h same.h save-cwd.h savedir.h \
exclude.h filemode.h fnmatch.h __fpending.h fsusage.h \
getdate.h getline.h getopt.h \
getstr.h getpagesize.h group-member.h hard-locale.h hash.h human.h lchown.h \
linebuffer.h long-options.h mbswidth.h md5.h memcasecmp.h memcoll.h \
makepath.h mbswidth.h modechange.h mountlist.h nanosleep.h obstack.h \
path-concat.h pathmax.h posixtm.h quote.h quotearg.h readtokens.h \
readutmp.h regex.h safe-read.h same.h save-cwd.h savedir.h sha.h \
strverscmp.h unicodeio.h version-etc.h xalloc.h xstrtod.h xstrtol.h
@@ -172,15 +176,15 @@ ANSI2KNR = ../src/ansi2knr
libfetish_a_AR = $(AR) cru
am_libfetish_a_OBJECTS = getdate$U.o posixtm$U.o addext$U.o \
argmatch$U.o backupfile$U.o basename$U.o canon-host$U.o closeout$U.o \
dirname$U.o exclude$U.o filemode$U.o diacrit$U.o full-write$U.o \
getopt$U.o getopt1$U.o getugroups$U.o hard-locale$U.o hash$U.o \
human$U.o idcache$U.o isdir$U.o linebuffer$U.o localcharset$U.o \
long-options$U.o makepath$U.o md5$U.o memcasecmp$U.o memcoll$U.o \
modechange$U.o path-concat$U.o quotearg$U.o readtokens$U.o readutmp$U.o \
safe-read$U.o same$U.o save-cwd$U.o savedir$U.o stripslash$U.o \
unicodeio$U.o userspec$U.o version-etc$U.o xgetcwd$U.o xgethostname$U.o \
xmalloc$U.o xstrdup$U.o xstrtod$U.o xstrtol$U.o xstrtoul$U.o \
xstrtoumax$U.o yesno$U.o
diacrit$U.o dirname$U.o exclude$U.o filemode$U.o full-write$U.o \
getopt$U.o getopt1$U.o getstr$U.o getugroups$U.o hard-locale$U.o \
hash$U.o human$U.o idcache$U.o isdir$U.o linebuffer$U.o \
localcharset$U.o long-options$U.o makepath$U.o mbswidth$U.o md5$U.o \
memcasecmp$U.o memcoll$U.o modechange$U.o path-concat$U.o quote$U.o \
quotearg$U.o readtokens$U.o safe-read$U.o same$U.o save-cwd$U.o \
savedir$U.o sha$U.o stripslash$U.o unicodeio$U.o userspec$U.o \
version-etc$U.o xgetcwd$U.o xgethostname$U.o xmalloc$U.o xstrdup$U.o \
xstrtod$U.o xstrtol$U.o xstrtoul$U.o xstrtoumax$U.o yesno$U.o
libfetish_a_OBJECTS = $(am_libfetish_a_OBJECTS)
AR = ar
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -191,52 +195,55 @@ DIST_SOURCES = $(libfetish_a_SOURCES)
HEADERS = $(noinst_HEADERS)
depcomp = $(SHELL) $(top_srcdir)/depcomp
DEP_FILES = @AMDEP@ $(DEPDIR)/addext$U.Po $(DEPDIR)/alloca.Po \
$(DEPDIR)/argmatch$U.Po $(DEPDIR)/backupfile$U.Po \
$(DEPDIR)/basename$U.Po $(DEPDIR)/canon-host$U.Po $(DEPDIR)/chown.Po \
$(DEPDIR)/closeout$U.Po $(DEPDIR)/diacrit$U.Po $(DEPDIR)/dirname$U.Po \
$(DEPDIR)/dup2.Po $(DEPDIR)/error.Po $(DEPDIR)/euidaccess.Po \
$(DEPDIR)/exclude$U.Po $(DEPDIR)/fileblocks.Po $(DEPDIR)/filemode$U.Po \
$(DEPDIR)/fnmatch.Po $(DEPDIR)/fsusage.Po $(DEPDIR)/ftruncate.Po \
$(DEPDIR)/full-write$U.Po $(DEPDIR)/getdate$U.Po $(DEPDIR)/getgroups.Po \
$(DEPDIR)/gethostname.Po $(DEPDIR)/getline.Po $(DEPDIR)/getloadavg.Po \
$(DEPDIR)/getopt$U.Po $(DEPDIR)/getopt1$U.Po $(DEPDIR)/getugroups$U.Po \
$(DEPDIR)/getusershell.Po $(DEPDIR)/group-member.Po \
$(DEPDIR)/hard-locale$U.Po $(DEPDIR)/hash$U.Po $(DEPDIR)/human$U.Po \
$(DEPDIR)/idcache$U.Po $(DEPDIR)/isdir$U.Po $(DEPDIR)/lchown.Po \
$(DEPDIR)/linebuffer$U.Po $(DEPDIR)/localcharset$U.Po \
$(DEPDIR)/long-options$U.Po $(DEPDIR)/lstat.Po $(DEPDIR)/makepath$U.Po \
$(DEPDIR)/malloc.Po $(DEPDIR)/md5$U.Po $(DEPDIR)/memcasecmp$U.Po \
DEP_FILES = @AMDEP@ $(DEPDIR)/__fpending.Po $(DEPDIR)/addext$U.Po \
$(DEPDIR)/alloca.Po $(DEPDIR)/argmatch$U.Po $(DEPDIR)/atexit.Po \
$(DEPDIR)/backupfile$U.Po $(DEPDIR)/basename$U.Po \
$(DEPDIR)/canon-host$U.Po $(DEPDIR)/chown.Po $(DEPDIR)/closeout$U.Po \
$(DEPDIR)/diacrit$U.Po $(DEPDIR)/dirname$U.Po $(DEPDIR)/dup2.Po \
$(DEPDIR)/error.Po $(DEPDIR)/euidaccess.Po $(DEPDIR)/exclude$U.Po \
$(DEPDIR)/fileblocks.Po $(DEPDIR)/filemode$U.Po $(DEPDIR)/fnmatch.Po \
$(DEPDIR)/fsusage.Po $(DEPDIR)/ftruncate.Po $(DEPDIR)/full-write$U.Po \
$(DEPDIR)/getdate$U.Po $(DEPDIR)/getgroups.Po $(DEPDIR)/gethostname.Po \
$(DEPDIR)/getline.Po $(DEPDIR)/getloadavg.Po $(DEPDIR)/getopt$U.Po \
$(DEPDIR)/getopt1$U.Po $(DEPDIR)/getpass.Po $(DEPDIR)/getstr$U.Po \
$(DEPDIR)/getugroups$U.Po $(DEPDIR)/getusershell.Po \
$(DEPDIR)/group-member.Po $(DEPDIR)/hard-locale$U.Po \
$(DEPDIR)/hash$U.Po $(DEPDIR)/human$U.Po $(DEPDIR)/idcache$U.Po \
$(DEPDIR)/isdir$U.Po $(DEPDIR)/lchown.Po $(DEPDIR)/linebuffer$U.Po \
$(DEPDIR)/localcharset$U.Po $(DEPDIR)/long-options$U.Po \
$(DEPDIR)/lstat.Po $(DEPDIR)/makepath$U.Po $(DEPDIR)/malloc.Po \
$(DEPDIR)/mbswidth$U.Po $(DEPDIR)/md5$U.Po $(DEPDIR)/memcasecmp$U.Po \
$(DEPDIR)/memchr.Po $(DEPDIR)/memcmp.Po $(DEPDIR)/memcoll$U.Po \
$(DEPDIR)/memcpy.Po $(DEPDIR)/memmove.Po $(DEPDIR)/memset.Po \
$(DEPDIR)/mkdir.Po $(DEPDIR)/mktime.Po $(DEPDIR)/modechange$U.Po \
$(DEPDIR)/memcpy.Po $(DEPDIR)/memmove.Po $(DEPDIR)/memrchr.Po \
$(DEPDIR)/memset.Po $(DEPDIR)/mktime.Po $(DEPDIR)/modechange$U.Po \
$(DEPDIR)/mountlist.Po $(DEPDIR)/nanosleep.Po $(DEPDIR)/obstack.Po \
$(DEPDIR)/path-concat$U.Po $(DEPDIR)/posixtm$U.Po $(DEPDIR)/putenv.Po \
$(DEPDIR)/quotearg$U.Po $(DEPDIR)/readtokens$U.Po \
$(DEPDIR)/readutmp$U.Po $(DEPDIR)/realloc.Po $(DEPDIR)/regex.Po \
$(DEPDIR)/quote$U.Po $(DEPDIR)/quotearg$U.Po $(DEPDIR)/readtokens$U.Po \
$(DEPDIR)/readutmp.Po $(DEPDIR)/realloc.Po $(DEPDIR)/regex.Po \
$(DEPDIR)/rmdir.Po $(DEPDIR)/rpmatch.Po $(DEPDIR)/safe-read$U.Po \
$(DEPDIR)/same$U.Po $(DEPDIR)/save-cwd$U.Po $(DEPDIR)/savedir$U.Po \
$(DEPDIR)/stat.Po $(DEPDIR)/stime.Po $(DEPDIR)/stpcpy.Po \
$(DEPDIR)/strcasecmp.Po $(DEPDIR)/strcspn.Po $(DEPDIR)/strdup.Po \
$(DEPDIR)/strftime.Po $(DEPDIR)/stripslash$U.Po \
$(DEPDIR)/strncasecmp.Po $(DEPDIR)/strndup.Po $(DEPDIR)/strpbrk.Po \
$(DEPDIR)/strstr.Po $(DEPDIR)/strtod.Po $(DEPDIR)/strtol.Po \
$(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po $(DEPDIR)/strtoumax.Po \
$(DEPDIR)/strverscmp.Po $(DEPDIR)/unicodeio$U.Po \
$(DEPDIR)/sha$U.Po $(DEPDIR)/stat.Po $(DEPDIR)/stime.Po \
$(DEPDIR)/stpcpy.Po $(DEPDIR)/strcasecmp.Po $(DEPDIR)/strcspn.Po \
$(DEPDIR)/strdup.Po $(DEPDIR)/strftime.Po $(DEPDIR)/stripslash$U.Po \
$(DEPDIR)/strncasecmp.Po $(DEPDIR)/strndup.Po $(DEPDIR)/strnlen.Po \
$(DEPDIR)/strpbrk.Po $(DEPDIR)/strstr.Po $(DEPDIR)/strtod.Po \
$(DEPDIR)/strtol.Po $(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po \
$(DEPDIR)/strtoumax.Po $(DEPDIR)/strverscmp.Po $(DEPDIR)/unicodeio$U.Po \
$(DEPDIR)/userspec$U.Po $(DEPDIR)/utime.Po $(DEPDIR)/version-etc$U.Po \
$(DEPDIR)/xgetcwd$U.Po $(DEPDIR)/xgethostname$U.Po \
$(DEPDIR)/xmalloc$U.Po $(DEPDIR)/xstrdup$U.Po $(DEPDIR)/xstrtod$U.Po \
$(DEPDIR)/xstrtol$U.Po $(DEPDIR)/xstrtoul$U.Po \
$(DEPDIR)/xstrtoumax$U.Po $(DEPDIR)/yesno$U.Po
DIST_COMMON = README $(noinst_HEADERS) ChangeLog Makefile.am \
Makefile.in TODO alloca.c chown.c dup2.c error.c error.h euidaccess.c \
fileblocks.c fnmatch.c fsusage.c ftruncate.c getdate.c getgroups.c \
gethostname.c getline.c getloadavg.c getusershell.c group-member.c \
lchown.c malloc.c memchr.c memcmp.c memcpy.c memmove.c memset.c mkdir.c \
mktime.c mountlist.c nanosleep.c obstack.c obstack.h putenv.c realloc.c \
regex.c rmdir.c rpmatch.c stime.c stpcpy.c strcasecmp.c strcspn.c \
strdup.c strftime.c strncasecmp.c strndup.c strpbrk.c strstr.c strtod.c \
strtol.c strtoul.c strtoull.c strtoumax.c strverscmp.c utime.c
Makefile.in TODO __fpending.c alloca.c atexit.c chown.c dup2.c error.c \
error.h euidaccess.c fileblocks.c fnmatch.c fsusage.c ftruncate.c \
getdate.c getgroups.c gethostname.c getline.c getloadavg.c getpass.c \
getusershell.c group-member.c lchown.c malloc.c memchr.c memcmp.c \
memcpy.c memmove.c memrchr.c memset.c mktime.c mountlist.c nanosleep.c \
obstack.c obstack.h putenv.c readutmp.c realloc.c regex.c rmdir.c \
rpmatch.c stime.c stpcpy.c strcasecmp.c strcspn.c strdup.c strftime.c \
strncasecmp.c strndup.c strnlen.c strpbrk.c strstr.c strtod.c strtol.c \
strtoul.c strtoull.c strtoumax.c strverscmp.c utime.c
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -294,12 +301,16 @@ libfetish.a: $(libfetish_a_OBJECTS) $(libfetish_a_DEPENDENCIES)
-rm -f libfetish.a
$(libfetish_a_AR) libfetish.a $(libfetish_a_OBJECTS) $(libfetish_a_LIBADD)
$(RANLIB) libfetish.a
__fpending_.c: __fpending.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/__fpending.c; then echo $(srcdir)/__fpending.c; else echo __fpending.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > __fpending_.c
addext_.c: addext.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/addext.c; then echo $(srcdir)/addext.c; else echo addext.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > addext_.c
alloca_.c: alloca.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/alloca.c; then echo $(srcdir)/alloca.c; else echo alloca.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > alloca_.c
argmatch_.c: argmatch.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/argmatch.c; then echo $(srcdir)/argmatch.c; else echo argmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > argmatch_.c
atexit_.c: atexit.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/atexit.c; then echo $(srcdir)/atexit.c; else echo atexit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > atexit_.c
backupfile_.c: backupfile.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/backupfile.c; then echo $(srcdir)/backupfile.c; else echo backupfile.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > backupfile_.c
basename_.c: basename.c $(ANSI2KNR)
@@ -348,6 +359,10 @@ getopt_.c: getopt.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c
getopt1_.c: getopt1.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c
getpass_.c: getpass.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getpass.c; then echo $(srcdir)/getpass.c; else echo getpass.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getpass_.c
getstr_.c: getstr.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getstr.c; then echo $(srcdir)/getstr.c; else echo getstr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getstr_.c
getugroups_.c: getugroups.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getugroups.c; then echo $(srcdir)/getugroups.c; else echo getugroups.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getugroups_.c
getusershell_.c: getusershell.c $(ANSI2KNR)
@@ -378,6 +393,8 @@ makepath_.c: makepath.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/makepath.c; then echo $(srcdir)/makepath.c; else echo makepath.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > makepath_.c
malloc_.c: malloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/malloc.c; then echo $(srcdir)/malloc.c; else echo malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c
mbswidth_.c: mbswidth.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mbswidth.c; then echo $(srcdir)/mbswidth.c; else echo mbswidth.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mbswidth_.c
md5_.c: md5.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/md5.c; then echo $(srcdir)/md5.c; else echo md5.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > md5_.c
memcasecmp_.c: memcasecmp.c $(ANSI2KNR)
@@ -392,10 +409,10 @@ memcpy_.c: memcpy.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcpy.c; then echo $(srcdir)/memcpy.c; else echo memcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memcpy_.c
memmove_.c: memmove.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memmove.c; then echo $(srcdir)/memmove.c; else echo memmove.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memmove_.c
memrchr_.c: memrchr.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memrchr.c; then echo $(srcdir)/memrchr.c; else echo memrchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memrchr_.c
memset_.c: memset.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memset.c; then echo $(srcdir)/memset.c; else echo memset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memset_.c
mkdir_.c: mkdir.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mkdir.c; then echo $(srcdir)/mkdir.c; else echo mkdir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mkdir_.c
mktime_.c: mktime.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mktime.c; then echo $(srcdir)/mktime.c; else echo mktime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mktime_.c
modechange_.c: modechange.c $(ANSI2KNR)
@@ -412,6 +429,8 @@ posixtm_.c: posixtm.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/posixtm.c; then echo $(srcdir)/posixtm.c; else echo posixtm.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > posixtm_.c
putenv_.c: putenv.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/putenv.c; then echo $(srcdir)/putenv.c; else echo putenv.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > putenv_.c
quote_.c: quote.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quote.c; then echo $(srcdir)/quote.c; else echo quote.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quote_.c
quotearg_.c: quotearg.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c
readtokens_.c: readtokens.c $(ANSI2KNR)
@@ -434,6 +453,8 @@ save-cwd_.c: save-cwd.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/save-cwd.c; then echo $(srcdir)/save-cwd.c; else echo save-cwd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > save-cwd_.c
savedir_.c: savedir.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/savedir.c; then echo $(srcdir)/savedir.c; else echo savedir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > savedir_.c
sha_.c: sha.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/sha.c; then echo $(srcdir)/sha.c; else echo sha.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > sha_.c
stat_.c: stat.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stat.c; then echo $(srcdir)/stat.c; else echo stat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stat_.c
stime_.c: stime.c $(ANSI2KNR)
@@ -454,6 +475,8 @@ strncasecmp_.c: strncasecmp.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strncasecmp.c; then echo $(srcdir)/strncasecmp.c; else echo strncasecmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strncasecmp_.c
strndup_.c: strndup.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strndup.c; then echo $(srcdir)/strndup.c; else echo strndup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strndup_.c
strnlen_.c: strnlen.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strnlen.c; then echo $(srcdir)/strnlen.c; else echo strnlen.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strnlen_.c
strpbrk_.c: strpbrk.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strpbrk.c; then echo $(srcdir)/strpbrk.c; else echo strpbrk.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strpbrk_.c
strstr_.c: strstr.c $(ANSI2KNR)
@@ -496,25 +519,26 @@ xstrtoumax_.c: xstrtoumax.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtoumax.c; then echo $(srcdir)/xstrtoumax.c; else echo xstrtoumax.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrtoumax_.c
yesno_.c: yesno.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/yesno.c; then echo $(srcdir)/yesno.c; else echo yesno.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > yesno_.c
addext_.o alloca_.o argmatch_.o backupfile_.o basename_.o canon-host_.o \
chown_.o closeout_.o diacrit_.o dirname_.o dup2_.o error_.o \
euidaccess_.o exclude_.o fileblocks_.o filemode_.o fnmatch_.o \
fsusage_.o ftruncate_.o full-write_.o getdate_.o getgroups_.o \
gethostname_.o getline_.o getloadavg_.o getopt_.o getopt1_.o \
getugroups_.o getusershell_.o group-member_.o hard-locale_.o hash_.o \
human_.o idcache_.o isdir_.o lchown_.o linebuffer_.o localcharset_.o \
long-options_.o lstat_.o makepath_.o malloc_.o md5_.o memcasecmp_.o \
memchr_.o memcmp_.o memcoll_.o memcpy_.o memmove_.o memset_.o mkdir_.o \
__fpending_.o addext_.o alloca_.o argmatch_.o atexit_.o backupfile_.o \
basename_.o canon-host_.o chown_.o closeout_.o diacrit_.o dirname_.o \
dup2_.o error_.o euidaccess_.o exclude_.o fileblocks_.o filemode_.o \
fnmatch_.o fsusage_.o ftruncate_.o full-write_.o getdate_.o \
getgroups_.o gethostname_.o getline_.o getloadavg_.o getopt_.o \
getopt1_.o getpass_.o getstr_.o getugroups_.o getusershell_.o \
group-member_.o hard-locale_.o hash_.o human_.o idcache_.o isdir_.o \
lchown_.o linebuffer_.o localcharset_.o long-options_.o lstat_.o \
makepath_.o malloc_.o mbswidth_.o md5_.o memcasecmp_.o memchr_.o \
memcmp_.o memcoll_.o memcpy_.o memmove_.o memrchr_.o memset_.o \
mktime_.o modechange_.o mountlist_.o nanosleep_.o obstack_.o \
path-concat_.o posixtm_.o putenv_.o quotearg_.o readtokens_.o \
path-concat_.o posixtm_.o putenv_.o quote_.o quotearg_.o readtokens_.o \
readutmp_.o realloc_.o regex_.o rmdir_.o rpmatch_.o safe-read_.o \
same_.o save-cwd_.o savedir_.o stat_.o stime_.o stpcpy_.o strcasecmp_.o \
strcspn_.o strdup_.o strftime_.o stripslash_.o strncasecmp_.o \
strndup_.o strpbrk_.o strstr_.o strtod_.o strtol_.o strtoul_.o \
strtoull_.o strtoumax_.o strverscmp_.o unicodeio_.o userspec_.o \
utime_.o version-etc_.o xgetcwd_.o xgethostname_.o xmalloc_.o \
xstrdup_.o xstrtod_.o xstrtol_.o xstrtoul_.o xstrtoumax_.o yesno_.o : \
$(ANSI2KNR)
same_.o save-cwd_.o savedir_.o sha_.o stat_.o stime_.o stpcpy_.o \
strcasecmp_.o strcspn_.o strdup_.o strftime_.o stripslash_.o \
strncasecmp_.o strndup_.o strnlen_.o strpbrk_.o strstr_.o strtod_.o \
strtol_.o strtoul_.o strtoull_.o strtoumax_.o strverscmp_.o \
unicodeio_.o userspec_.o utime_.o version-etc_.o xgetcwd_.o \
xgethostname_.o xmalloc_.o xstrdup_.o xstrtod_.o xstrtol_.o xstrtoul_.o \
xstrtoumax_.o yesno_.o : $(ANSI2KNR)
.y.c:
$(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c
if test -f y.tab.h; then \
@@ -555,9 +579,11 @@ distclean-tags:
maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/__fpending.Po
@AMDEP@include $(DEPDIR)/addext$U.Po
@AMDEP@include $(DEPDIR)/alloca.Po
@AMDEP@include $(DEPDIR)/argmatch$U.Po
@AMDEP@include $(DEPDIR)/atexit.Po
@AMDEP@include $(DEPDIR)/backupfile$U.Po
@AMDEP@include $(DEPDIR)/basename$U.Po
@AMDEP@include $(DEPDIR)/canon-host$U.Po
@@ -582,6 +608,8 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/getloadavg.Po
@AMDEP@include $(DEPDIR)/getopt$U.Po
@AMDEP@include $(DEPDIR)/getopt1$U.Po
@AMDEP@include $(DEPDIR)/getpass.Po
@AMDEP@include $(DEPDIR)/getstr$U.Po
@AMDEP@include $(DEPDIR)/getugroups$U.Po
@AMDEP@include $(DEPDIR)/getusershell.Po
@AMDEP@include $(DEPDIR)/group-member.Po
@@ -597,6 +625,7 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/lstat.Po
@AMDEP@include $(DEPDIR)/makepath$U.Po
@AMDEP@include $(DEPDIR)/malloc.Po
@AMDEP@include $(DEPDIR)/mbswidth$U.Po
@AMDEP@include $(DEPDIR)/md5$U.Po
@AMDEP@include $(DEPDIR)/memcasecmp$U.Po
@AMDEP@include $(DEPDIR)/memchr.Po
@@ -604,8 +633,8 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/memcoll$U.Po
@AMDEP@include $(DEPDIR)/memcpy.Po
@AMDEP@include $(DEPDIR)/memmove.Po
@AMDEP@include $(DEPDIR)/memrchr.Po
@AMDEP@include $(DEPDIR)/memset.Po
@AMDEP@include $(DEPDIR)/mkdir.Po
@AMDEP@include $(DEPDIR)/mktime.Po
@AMDEP@include $(DEPDIR)/modechange$U.Po
@AMDEP@include $(DEPDIR)/mountlist.Po
@@ -614,9 +643,10 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/path-concat$U.Po
@AMDEP@include $(DEPDIR)/posixtm$U.Po
@AMDEP@include $(DEPDIR)/putenv.Po
@AMDEP@include $(DEPDIR)/quote$U.Po
@AMDEP@include $(DEPDIR)/quotearg$U.Po
@AMDEP@include $(DEPDIR)/readtokens$U.Po
@AMDEP@include $(DEPDIR)/readutmp$U.Po
@AMDEP@include $(DEPDIR)/readutmp.Po
@AMDEP@include $(DEPDIR)/realloc.Po
@AMDEP@include $(DEPDIR)/regex.Po
@AMDEP@include $(DEPDIR)/rmdir.Po
@@ -625,6 +655,7 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/same$U.Po
@AMDEP@include $(DEPDIR)/save-cwd$U.Po
@AMDEP@include $(DEPDIR)/savedir$U.Po
@AMDEP@include $(DEPDIR)/sha$U.Po
@AMDEP@include $(DEPDIR)/stat.Po
@AMDEP@include $(DEPDIR)/stime.Po
@AMDEP@include $(DEPDIR)/stpcpy.Po
@@ -635,6 +666,7 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/stripslash$U.Po
@AMDEP@include $(DEPDIR)/strncasecmp.Po
@AMDEP@include $(DEPDIR)/strndup.Po
@AMDEP@include $(DEPDIR)/strnlen.Po
@AMDEP@include $(DEPDIR)/strpbrk.Po
@AMDEP@include $(DEPDIR)/strstr.Po
@AMDEP@include $(DEPDIR)/strtod.Po
@@ -790,16 +822,23 @@ stat.c: xstat.in
# which is shared with other installed packages. We use a list of referencing
# packages so that "make uninstall" will remove the file if and only if it
# is not used by another installed package.
# 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
all-local: charset.alias ref-add.sed ref-del.sed lstat.c stat.c
install-exec-local: all-local
$(mkinstalldirs) $(DESTDIR)$(libdir)
test -f $(charset_alias) \
&& orig=$(charset_alias) \
|| orig=charset.alias; \
sed -f ref-add.sed $$orig > $(charset_tmp)
$(INSTALL_DATA) $(charset_tmp) $(charset_alias)
rm -f $(charset_tmp)
if test -f $(charset_alias); then \
sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
$(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
rm -f $(charset_tmp) ; \
else \
if test @GLIBC21@ = no; then \
sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
$(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
rm -f $(charset_tmp) ; \
fi ; \
fi
uninstall-local: all-local
if test -f $(charset_alias); then \

30
lib/__fpending.c Normal file
View File

@@ -0,0 +1,30 @@
/* __fpending.c -- return the number of pending output bytes on a stream
Copyright (C) 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Jim Meyering. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include "__fpending.h"
size_t
__fpending (FILE *fp)
{
return PENDING_OUTPUT_N_BYTES;
}

18
lib/__fpending.h Normal file
View File

@@ -0,0 +1,18 @@
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#if HAVE_STDIO_EXT_H
# include <stdio_ext.h>
#endif
#include <sys/types.h>
#ifndef HAVE_DECL___FPENDING
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL___FPENDING
size_t __fpending (FILE *);
#endif

14
lib/atexit.c Normal file
View File

@@ -0,0 +1,14 @@
/* Wrapper to implement ANSI C's atexit using SunOS's on_exit. */
/* This function is in the public domain. --Mike Stump. */
#include "config.h"
int
atexit(f)
void (*f)();
{
/* If the system doesn't provide a definition for atexit, use on_exit
if the system provides that. */
on_exit (f, 0);
return 0;
}

View File

@@ -1,5 +1,5 @@
/* basename.c -- return the last element in a path
Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1990, 1998, 1999, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,6 +19,8 @@
# include <config.h>
#endif
#include <assert.h>
#ifndef FILESYSTEM_PREFIX_LEN
# define FILESYSTEM_PREFIX_LEN(Filename) 0
#endif
@@ -61,5 +63,8 @@ base_name (char const *name)
if (*base == '\0' && ISSLASH (*name) && all_slashes)
--base;
/* Make sure the last byte is not a slash. */
assert (all_slashes || !ISSLASH (*(p - 1)));
return (char *) base;
}

View File

@@ -1,5 +1,5 @@
/* BUMP_ALLOC macro - increase table allocation by one element.
Copyright (C) 1990, 1991, 1993, 1998 Free Software Foundation, Inc.
Copyright (C) 1990, 1991, 1993, 1998, 2000 Free Software Foundation, Inc.
François Pinard <pinard@iro.umontreal.ca>, 1990.
This program is free software; you can redistribute it and/or modify
@@ -25,8 +25,8 @@
`-------------------------------------------------------------------------*/
/* Routines `xmalloc' and `xrealloc' are called to do the actual memory
management. This implies that the program will abort with an `Memory
exhausted!' error if any problem arise.
management. This implies that the program will abort with a "memory
exhausted" error if any problem arise.
To work correctly, at least EXPONENT and TYPE should always be the
same for all uses of this macro for any given TABLE. A secure way to

View File

@@ -26,6 +26,9 @@
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifdef HAVE_STDLIB_H
# include <stdlib.h>
#endif
#ifdef HAVE_STRING_H
# include <string.h>
#endif
@@ -46,7 +49,6 @@
#ifndef strdup
char *strdup ();
#endif
void free ();
/* Returns the canonical hostname associated with HOST (allocated in a static
buffer), or 0 if it can't be determined. */
@@ -80,11 +82,12 @@ canon_host (const char *host)
directly to gethostbyaddr because on some systems he->h_addr
is located in a static library buffer that is reused in the
gethostbyaddr call. Make a copy and use that instead. */
char *h_addr_copy = strdup (he->h_addr);
char *h_addr_copy = (char *) malloc (he->h_length);
if (h_addr_copy == NULL)
he = NULL;
else
{
memcpy (h_addr_copy, he->h_addr, he->h_length);
he = gethostbyaddr (h_addr_copy, he->h_length, he->h_addrtype);
free (h_addr_copy);
}

View File

@@ -1,5 +1,5 @@
/* closeout.c - close standard output
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -33,14 +33,37 @@
# define EXIT_FAILURE 1
#endif
#include <stdio.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#include <stdio.h>
#include "closeout.h"
#include "error.h"
#include "quotearg.h"
#include "__fpending.h"
static int default_exit_status = EXIT_FAILURE;
static const char *file_name;
/* Set the value to be used for the exit status when close_stdout is called.
This is useful when it is not convenient to call close_stdout_status,
e.g., when close_stdout is called via atexit. */
void
close_stdout_set_status (int status)
{
default_exit_status = status;
}
/* Set the file name to be reported in the event an error is detected
by close_stdout_status. */
void
close_stdout_set_file_name (const char *file)
{
file_name = file;
}
/* Close standard output, exiting with status STATUS on failure.
If a program writes *anything* to stdout, that program should `fflush'
@@ -64,18 +87,31 @@ extern int errno;
It's important to detect such failures and exit nonzero because many
tools (most notably `make' and other build-management systems) depend
on being able to detect failure in other tools via their exit status. */
void
close_stdout_status (int status)
{
if (ferror (stdout))
error (status, 0, _("write error"));
int e = ferror (stdout) ? 0 : -1;
if (__fpending (stdout) == 0)
return;
if (fclose (stdout) != 0)
error (status, errno, _("write error"));
e = errno;
if (0 <= e)
{
char const *write_error = _("write error");
if (file_name)
error (status, e, "%s: %s", quotearg_colon (file_name), write_error);
else
error (status, e, "%s", write_error);
}
}
/* Close standard output, exiting with status EXIT_FAILURE on failure. */
void
close_stdout (void)
{
close_stdout_status (EXIT_FAILURE);
close_stdout_status (default_exit_status);
}

View File

@@ -6,5 +6,7 @@
# endif
#endif
void close_stdout_set_status PARAMS ((int status));
void close_stdout_set_file_name PARAMS ((const char *file));
void close_stdout PARAMS ((void));
void close_stdout_status PARAMS ((int status));

View File

@@ -31,32 +31,34 @@
# The current list of GNU canonical charset names is as follows.
#
# name used by which systems a MIME name?
# ASCII glibc solaris
# ISO-8859-1 glibc aix hpux irix osf solaris yes
# ISO-8859-2 glibc aix hpux irix solaris yes
# 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 solaris freebsd yes
# ISO-8859-4 solaris yes
# ISO-8859-5 glibc aix hpux irix solaris yes
# ISO-8859-6 aix hpux solaris yes
# ISO-8859-6 glibc aix hpux solaris yes
# ISO-8859-7 glibc aix hpux irix osf solaris yes
# ISO-8859-8 glibc aix hpux solaris yes
# ISO-8859-9 glibc aix hpux irix osf solaris yes
# ISO-8859-13 glibc
# ISO-8859-15 aix solaris
# KOI8-R glibc solaris yes
# ISO-8859-15 aix solaris freebsd
# KOI8-R glibc solaris freebsd yes
# KOI8-U glibc yes
# CP850 aix osf
# CP856 aix
# CP866 freebsd
# CP922 aix
# CP932 aix
# CP943 aix
# CP1046 aix
# CP1124 aix
# CP1129 aix
# CP1251 glibc
# CP1252 aix
# EUC-CN aix hpux solaris
# EUC-JP aix hpux solaris yes
# EUC-KR aix hpux solaris yes
# EUC-TW aix hpux solaris
# EUC-CN aix hpux irix solaris
# EUC-JP aix hpux irix solaris yes
# EUC-KR aix hpux irix solaris yes
# EUC-TW aix hpux irix solaris
# BIG5 aix hpux solaris yes
# GBK aix
# SJIS hpux solaris
@@ -72,6 +74,9 @@
# Note: Names which are not marked as being a MIME name should not be used in
# Internet protocols for information interchange (mail, news, etc.).
#
# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
# must understand both names and treat them as equivalent.
#
# The first argument passed to this file is the canonical host specification,
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or
@@ -86,11 +91,12 @@ echo "# It was automatically generated from config.charset."
echo "# Packages using this file: "
case "$os" in
linux* | *-gnu*)
# With glibc we don't need any canonicalization, because glibc
# supports all GNU canonical names directly.
echo "ANSI_X3.4-1968 ASCII" # this is a nop
echo "ISO_646.IRV:1983 ASCII" # this is a nop
echo "BALTIC ISO-8859-13" # in glibc-2.2 or newer, this is a nop
# With glibc-2.1 or newer, we don't need any canonicalization,
# because glibc has iconv and both glibc and libiconv support all
# GNU canonical names directly. Therefore, the Makefile does not
# need to install the alias file at all.
# The following applies only to glibc-2.0.x and older libcs.
echo "ISO_646.IRV:1983 ASCII"
;;
aix*)
echo "ISO8859-1 ISO-8859-1"
@@ -128,6 +134,7 @@ case "$os" in
echo "iso88597 ISO-8859-7"
echo "iso88598 ISO-8859-8"
echo "iso88599 ISO-8859-9"
echo "iso885915 ISO-8859-15"
echo "roman8 HP-ROMAN8"
echo "arabic8 HP-ARABIC8"
echo "greek8 HP-GREEK8"
@@ -150,6 +157,10 @@ case "$os" in
echo "ISO8859-5 ISO-8859-5"
echo "ISO8859-7 ISO-8859-7"
echo "ISO8859-9 ISO-8859-9"
echo "eucCN EUC-CN"
echo "eucJP EUC-JP"
echo "eucKR EUC-KR"
echo "eucTW EUC-TW"
;;
osf*)
echo "ISO8859-1 ISO-8859-1"
@@ -179,4 +190,27 @@ case "$os" in
#echo "sun_eu_greek ?" # what is this?
echo "UTF-8 UTF-8"
;;
freebsd*)
# FreeBSD 3.3 doesn't have nl_langinfo(CODESET); therefore
# localcharset.c falls back to using the full locale name
# from the environment variables.
echo "C ASCII"
echo "US-ASCII ASCII"
for l in lt_LN; do
echo "$l.ASCII ASCII"
done
for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT lt_LN \
nl_BE nl_NL no_NO pt_PT sv_SE; do
echo "$l.ISO_8859-1 ISO-8859-1"
echo "$l.DIS_8859-15 ISO-8859-15"
done
for l in hr_HR hu_HU lt_LN pl_PL sl_SI; do
echo "$l.ISO_8859-2 ISO-8859-2"
done
for l in ru_RU ru_SU; do
echo "$l.KOI8-R KOI8-R"
echo "$l.CP866 CP866"
done
;;
esac

View File

@@ -1,5 +1,5 @@
/* Diacritics processing for a few character codes.
Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
Copyright (C) 1990, 1991, 1992, 1993, 2000 Free Software Foundation, Inc.
François Pinard <pinard@iro.umontreal.ca>, 1988.
All this file is a temporary hack, waiting for locales in GNU.
@@ -38,7 +38,7 @@ const char diacrit_base[256] =
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', 0, 0, 0, 0, 0,
#ifdef MSDOS
#ifdef __MSDOS__
'C', 'u', 'e', 'a', 'a', 'a', 'a', 'c',
'e', 'e', 'e', 'i', 'i', 'i', 'A', 'A',
@@ -57,7 +57,7 @@ const char diacrit_base[256] =
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
#else /* not MSDOS */
#else
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -76,7 +76,7 @@ const char diacrit_base[256] =
0, 'n', 'o', 'o', 'o', 'o', 'o', 0,
'o', 'u', 'u', 'u', 'u', 'y', 0, 'y',
#endif /* not MSDOS */
#endif
};
/*------------------------------------------------------------------------.
@@ -106,7 +106,7 @@ const char diacrit_diac[256] =
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 6, 0,
#ifdef MSDOS
#ifdef __MSDOS__
7, 5, 2, 4, 5, 3, 8, 7,
4, 5, 3, 5, 4, 3, 5, 8,
@@ -125,7 +125,7 @@ const char diacrit_diac[256] =
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
#else /* not MSDOS */
#else
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -144,5 +144,5 @@ const char diacrit_diac[256] =
0, 6, 3, 2, 4, 6, 5, 0,
9, 3, 2, 4, 5, 2, 0, 0,
#endif /* not MSDOS */
#endif
};

View File

@@ -13,4 +13,3 @@ extern const char diacrit_diac[]; /* diacritic code for each character */
/* Returns a diacritic code for CHAR. CHAR is known to be alphabetic. */
#define todiac(Char) (diacrit_diac[(unsigned char) (Char)])

View File

@@ -1,5 +1,5 @@
/* dirname.c -- return all but the last element in a path
Copyright (C) 1990, 1998 Free Software Foundation, Inc.
Copyright (C) 1990, 1998, 2000 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
@@ -32,22 +32,62 @@ char *malloc ();
# define strrchr rindex
# endif
#endif
#include <assert.h>
#ifndef HAVE_DECL_MEMRCHR
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_MEMRCHR
void *memrchr ();
#endif
#include "dirname.h"
/* Return the leading directories part of PATH,
allocated with malloc. If out of memory, return 0.
Assumes that trailing slashes have already been
removed. */
#ifndef ISSLASH
# define ISSLASH(C) ((C) == '/')
#endif
char *
dir_name (const char *path)
#define BACKSLASH_IS_PATH_SEPARATOR ISSLASH ('\\')
/* Return the length of `dirname (PATH)' and set *RESULT
to point to PATH or to `"."', as appropriate.
Works properly even if there are trailing slashes
(by effectively ignoring them). */
size_t
dir_name_r (const char *path, const char **result)
{
char *newpath;
char *slash;
int length; /* Length of result, not including NUL. */
slash = strrchr (path, '/');
if (BACKSLASH_IS_PATH_SEPARATOR)
{
char *b = strrchr (path, '\\');
if (b && slash < b)
slash = b;
}
/* If the last byte of PATH is a slash, decrement SLASH until it's
pointing at the leftmost in a sequence of trailing slashes. */
if (slash && slash[1] == 0)
{
while (path < slash && ISSLASH (slash[-1]))
{
--slash;
}
if (path < slash)
{
slash = memrchr (path, '/', slash - path);
if (BACKSLASH_IS_PATH_SEPARATOR)
{
char *b = memrchr (path, '\\', slash - path);
if (b && slash < b)
slash = b;
}
}
}
if (slash == 0)
{
/* File is in the current directory. */
@@ -57,24 +97,86 @@ dir_name (const char *path)
else
{
/* Remove any trailing slashes from the result. */
#ifdef MSDOS
char *lim = (path[0] >= 'A' && path[0] <= 'z' && path[1] == ':')
? path + 2 : path;
if (BACKSLASH_IS_PATH_SEPARATOR)
{
const char *lim = ((path[0] >= 'A' && path[0] <= 'z'
&& path[1] == ':')
? path + 2 : path);
/* If canonicalized "d:/path", leave alone the root case "d:/". */
while (slash > lim && *slash == '/')
--slash;
#else
while (slash > path && *slash == '/')
--slash;
#endif
/* If canonicalized "d:/path", leave alone the root case "d:/". */
while (slash > lim && ISSLASH (*slash))
--slash;
}
else
{
while (slash > path && ISSLASH (*slash))
--slash;
}
length = slash - path + 1;
}
newpath = (char *) malloc (length + 1);
*result = path;
return length;
}
/* Return the leading directories part of PATH,
allocated with malloc. If out of memory, return 0.
Works properly even if there are trailing slashes
(by effectively ignoring them). */
char *
dir_name (const char *path)
{
const char *result;
size_t length = dir_name_r (path, &result);
char *newpath = (char *) malloc (length + 1);
if (newpath == 0)
return 0;
strncpy (newpath, path, length);
strncpy (newpath, result, length);
newpath[length] = 0;
return newpath;
}
#ifdef TEST_DIRNAME
/*
Run the test like this (expect no output):
gcc -DHAVE_CONFIG_H -DTEST_DIRNAME -I.. -O -Wall memrchr.c dirname.c
sed -n '/^BEGIN-DATA$/,/^END-DATA$/p' dirname.c|grep -v DATA|./a.out
BEGIN-DATA
foo//// .
bar/foo//// bar
foo/ .
/ /
. .
a .
END-DATA
*/
# define MAX_BUFF_LEN 1024
# include <stdio.h>
# include <stdlib.h>
int
main ()
{
char buff[MAX_BUFF_LEN + 1];
buff[MAX_BUFF_LEN] = 0;
while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
{
char path[MAX_BUFF_LEN];
char expected_result[MAX_BUFF_LEN];
char *result;
sscanf (buff, "%s %s", path, expected_result);
result = dir_name (path);
if (strcmp (result, expected_result))
printf ("%s: got %s, expected %s\n", path, result, expected_result);
}
exit (0);
}
#endif

View File

@@ -28,4 +28,7 @@
char *
dir_name PARAMS ((const char *path));
size_t
dir_name_r PARAMS ((const char *path, const char **result));
#endif /* not DIRNAME_H_ */

View File

@@ -49,6 +49,13 @@ void exit ();
#include "error.h"
#ifndef HAVE_DECL_STRERROR_R
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRERROR_R
char *strerror_r ();
#endif
#ifndef _
# define _(String) String
#endif

70
lib/fatal.c Normal file
View File

@@ -0,0 +1,70 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
/* FIXME: define EXIT_FAILURE */
#include <stdio.h>
#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
# if __STDC__
# include <stdarg.h>
# define VA_START(args, lastarg) va_start(args, lastarg)
# else
# include <varargs.h>
# define VA_START(args, lastarg) va_start(args)
# endif
#else
# define va_alist a1, a2, a3, a4, a5, a6, a7, a8
# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
#endif
#if STDC_HEADERS || _LIBC
# include <stdlib.h>
# include <string.h>
#else
void exit ();
#endif
#ifdef _LIBC
# define program_name program_invocation_name
#else /* not _LIBC */
/* The calling program should define program_name and set it to the
name of the executing program. */
extern char *program_name;
#endif
#include "fatal.h"
/* Like error, but always exit with EXIT_FAILURE. */
void
#if defined VA_START && __STDC__
fatal (int errnum, const char *message, ...)
#else
fatal (errnum, message, va_alist)
int errnum;
char *message;
va_dcl
#endif
{
#ifdef VA_START
va_list args;
#endif
if (error_print_progname)
(*error_print_progname) ();
else
{
fflush (stdout);
fprintf (stderr, "%s: ", program_name);
}
#ifdef VA_START
VA_START (args, message);
error (EXIT_FAILURE, errnum, message, args);
va_end (args);
#else
error (EXIT_FAILURE, errnum, message, a1, a2, a3, a4, a5, a6, a7, a8);
#endif
}

68
lib/fatal.h Normal file
View File

@@ -0,0 +1,68 @@
#include "error.h"
/* FIXME: this is all from ansidecl. better to simply swipe
that file from egcs/include and include it from here. */
/* Using MACRO(x,y) in cpp #if conditionals does not work with some
older preprocessors. Thus we can't define something like this:
#define HAVE_GCC_VERSION(MAJOR, MINOR) \
(__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR)))
and then test "#if HAVE_GCC_VERSION(2,7)".
So instead we use the macro below and test it against specific values. */
/* This macro simplifies testing whether we are using gcc, and if it
is of a particular minimum version. (Both major & minor numbers are
significant.) This macro will evaluate to 0 if we are not using
gcc at all. */
#ifndef GCC_VERSION
# define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
#endif /* GCC_VERSION */
/* Define macros for some gcc attributes. This permits us to use the
macros freely, and know that they will come into play for the
version of gcc in which they are supported. */
#if (GCC_VERSION < 2007)
# define __attribute__(x)
#endif
/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
#ifndef ATTRIBUTE_MALLOC
# if (GCC_VERSION >= 2096)
# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
# else
# define ATTRIBUTE_MALLOC
# endif /* GNUC >= 2.96 */
#endif /* ATTRIBUTE_MALLOC */
/* Attributes on labels were valid as of gcc 2.93. */
#ifndef ATTRIBUTE_UNUSED_LABEL
# if (GCC_VERSION >= 2093)
# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
# else
# define ATTRIBUTE_UNUSED_LABEL
# endif /* GNUC >= 2.93 */
#endif /* ATTRIBUTE_UNUSED_LABEL */
#ifndef ATTRIBUTE_UNUSED
# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
#endif /* ATTRIBUTE_UNUSED */
#ifndef ATTRIBUTE_NORETURN
# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
#endif /* ATTRIBUTE_NORETURN */
#ifndef ATTRIBUTE_PRINTF
# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
# define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
# define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
# define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
# define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
#endif /* ATTRIBUTE_PRINTF */
extern void fatal (int errnum, const char *format, ...)
ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
/* Copyright 1991, 1992, 1993, 1996, 1997, 2000 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
@@ -40,12 +40,12 @@
# if defined STDC_HEADERS || !defined isascii
# define ISASCII(c) 1
# define IN_CTYPE_DOMAIN(c) 1
# else
# define ISASCII(c) isascii(c)
# define IN_CTYPE_DOMAIN(c) isascii(c)
# endif
# define ISUPPER(c) (ISASCII (c) && isupper (c))
# define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
# ifndef errno
@@ -61,7 +61,9 @@ fnmatch (const char *pattern, const char *string, int flags)
register char c;
/* Note that this evaluates C many times. */
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER ((unsigned char) (c)) \
? tolower ((unsigned char) (c)) \
: (c))
while ((c = *p++) != '\0')
{
@@ -99,13 +101,10 @@ fnmatch (const char *pattern, const char *string, int flags)
for (c = *p++; c == '?' || c == '*'; c = *p++)
{
if ((flags & FNM_FILE_NAME) && *n == '/')
/* A slash does not match a wildcard under FNM_FILE_NAME. */
return FNM_NOMATCH;
else if (c == '?')
if (c == '?')
{
/* A ? needs to match one character. */
if (*n == '\0')
if (*n == '\0' || (*n == '/' && (flags & FNM_FILE_NAME)))
/* There isn't another character; no match. */
return FNM_NOMATCH;
else
@@ -117,7 +116,13 @@ fnmatch (const char *pattern, const char *string, int flags)
}
if (c == '\0')
return 0;
{
if ((flags & (FNM_FILE_NAME | FNM_LEADING_DIR)) == FNM_FILE_NAME)
for (; *n != '\0'; n++)
if (*n == '/')
return FNM_NOMATCH;
return 0;
}
{
char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
@@ -126,6 +131,8 @@ fnmatch (const char *pattern, const char *string, int flags)
if ((c == '[' || FOLD (*n) == c1) &&
fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
return 0;
else if (*n == '/' && (flags & FNM_FILE_NAME))
break;
return FNM_NOMATCH;
}

View File

@@ -1,5 +1,5 @@
/* full-write.c -- an interface to write that retries after interrupts
Copyright (C) 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -45,10 +45,11 @@ full_write (int desc, const char *ptr, size_t len)
while (len > 0)
{
int written = write (desc, ptr, len);
/* FIXME: write on my slackware Linux 1.2.13 returns zero when
/* write on an old Slackware Linux 1.2.13 returns zero when
I try to write more data than there is room on a floppy disk.
This puts dd into an infinite loop. Reproduce with
dd if=/dev/zero of=/dev/fd0. */
dd if=/dev/zero of=/dev/fd0. If you have this problem,
consider upgrading to a newer kernel. */
if (written < 0)
{
#ifdef EINTR

View File

@@ -85,7 +85,7 @@
#define TM_YEAR_BASE 1900
#define HOUR(x) ((x) * 60)
/* An integer value, and the number of digits in its textual
representation. */
typedef struct
@@ -168,7 +168,7 @@ static int yylex ();
/* This grammar has 13 shift/reduce conflicts. */
%expect 13
%union
{
int intval;
@@ -987,9 +987,6 @@ get_date (const char *p, const time_t *now)
{
tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
}
tm.tm_hour += pc.rel_hour;
tm.tm_min += pc.rel_minutes;
tm.tm_sec += pc.rel_seconds;
/* Let mktime deduce tm_isdst if we have an absolute time stamp,
or if the relative time stamp mentions days, months, or years. */
@@ -1061,6 +1058,29 @@ get_date (const char *p, const time_t *now)
Start -= delta;
}
/* Add relative hours, minutes, and seconds. Ignore leap seconds;
i.e. "+ 10 minutes" means 600 seconds, even if one of them is a
leap second. Typically this is not what the user wants, but it's
too hard to do it the other way, because the time zone indicator
must be applied before relative times, and if mktime is applied
again the time zone will be lost. */
{
time_t t0 = Start;
long d1 = 60 * 60 * (long) pc.rel_hour;
time_t t1 = t0 + d1;
long d2 = 60 * (long) pc.rel_minutes;
time_t t2 = t1 + d2;
int d3 = pc.rel_seconds;
time_t t3 = t2 + d3;
if ((d1 / (60 * 60) ^ pc.rel_hour)
| (d2 / 60 ^ pc.rel_minutes)
| ((t0 + d1 < t0) ^ (d1 < 0))
| ((t1 + d2 < t1) ^ (d2 < 0))
| ((t2 + d3 < t2) ^ (d3 < 0)))
return -1;
Start = t3;
}
return Start;
}

View File

@@ -1,6 +1,6 @@
/* getline.c -- Replacement for GNU C library function getline
Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1993, 1996, 1997, 1998, 2000 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
@@ -39,105 +39,19 @@ getline (char **lineptr, size_t *n, FILE *stream)
return getdelim (lineptr, n, '\n', stream);
}
#else /* ! have getdelim */
# define NDEBUG
# include <assert.h>
# if STDC_HEADERS
# include <stdlib.h>
# else
char *malloc (), *realloc ();
# endif
/* Always add at least this many bytes when extending the buffer. */
# define MIN_CHUNK 64
/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR
+ OFFSET (and null-terminate it). *LINEPTR is a pointer returned from
malloc (or NULL), pointing to *N characters of space. It is realloc'd
as necessary. Return the number of characters read (not including the
null terminator), or -1 on error or EOF. */
int
getstr (char **lineptr, size_t *n, FILE *stream, char terminator, size_t offset)
{
int nchars_avail; /* Allocated but unused chars in *LINEPTR. */
char *read_pos; /* Where we're reading into *LINEPTR. */
int ret;
if (!lineptr || !n || !stream)
return -1;
if (!*lineptr)
{
*n = MIN_CHUNK;
*lineptr = malloc (*n);
if (!*lineptr)
return -1;
}
nchars_avail = *n - offset;
read_pos = *lineptr + offset;
for (;;)
{
register int c = getc (stream);
/* We always want at least one char left in the buffer, since we
always (unless we get an error while reading the first char)
NUL-terminate the line buffer. */
assert(*n - nchars_avail == read_pos - *lineptr);
if (nchars_avail < 2)
{
if (*n > MIN_CHUNK)
*n *= 2;
else
*n += MIN_CHUNK;
nchars_avail = *n + *lineptr - read_pos;
*lineptr = realloc (*lineptr, *n);
if (!*lineptr)
return -1;
read_pos = *n - nchars_avail + *lineptr;
assert(*n - nchars_avail == read_pos - *lineptr);
}
if (c == EOF || ferror (stream))
{
/* Return partial line, if any. */
if (read_pos == *lineptr)
return -1;
else
break;
}
*read_pos++ = c;
nchars_avail--;
if (c == terminator)
/* Return the line. */
break;
}
/* Done - NUL terminate and return the number of chars read. */
*read_pos = '\0';
ret = read_pos - (*lineptr + offset);
return ret;
}
# include "getstr.h"
int
getline (char **lineptr, size_t *n, FILE *stream)
{
return getstr (lineptr, n, stream, '\n', 0);
return getstr (lineptr, n, stream, '\n', 0, 0);
}
int
getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream)
{
return getstr (lineptr, n, stream, delimiter, 0);
return getstr (lineptr, n, stream, delimiter, 0, 0);
}
#endif

View File

@@ -308,6 +308,12 @@ extern int errno;
# define LDAV_CVT(n) (((double) (n)) / FSCALE)
# endif
# ifndef NLIST_STRUCT
# if HAVE_NLIST_H
# define NLIST_STRUCT
# endif
# endif
/* VAX C can't handle multi-line #ifs, or lines longer that 256 characters. */
# ifndef NLIST_STRUCT

View File

@@ -2,7 +2,7 @@
NOTE: The canonical source of this file is maintained with the GNU
C Library. Bugs can be reported to bug-glibc@gnu.org.
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
@@ -27,13 +27,13 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#else
# if !defined __STDC__ || !__STDC__
#endif
#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
# ifndef const
# define const
# endif
# ifndef const
# define const
# endif
#endif
@@ -75,11 +75,12 @@
#endif
#ifndef _
/* This is for other GNU distributions with internationalized messages.
When compiling libc, the _ macro is predefined. */
# ifdef HAVE_LIBINTL_H
/* This is for other GNU distributions with internationalized messages. */
# if defined HAVE_LIBINTL_H || defined _LIBC
# include <libintl.h>
# define _(msgid) gettext (msgid)
# ifndef _
# define _(msgid) gettext (msgid)
# endif
# else
# define _(msgid) (msgid)
# endif
@@ -515,6 +516,13 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int *longind;
int long_only;
{
int print_errors = opterr;
if (optstring[0] == ':')
print_errors = 0;
if (argc < 1)
return -1;
optarg = NULL;
if (optind == 0 || !__getopt_initialized)
@@ -664,14 +672,17 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
pfound = p;
indfound = option_index;
}
else
else if (long_only
|| pfound->has_arg != p->has_arg
|| pfound->flag != p->flag
|| pfound->val != p->val)
/* Second or later nonexact match found. */
ambig = 1;
}
if (ambig && !exact)
{
if (opterr)
if (print_errors)
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
argv[0], argv[optind]);
nextchar += strlen (nextchar);
@@ -692,7 +703,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = nameend + 1;
else
{
if (opterr)
if (print_errors)
{
if (argv[optind - 1][1] == '-')
/* --option */
@@ -718,7 +729,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = argv[optind++];
else
{
if (opterr)
if (print_errors)
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
@@ -745,7 +756,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (!long_only || argv[optind][1] == '-'
|| my_index (optstring, *nextchar) == NULL)
{
if (opterr)
if (print_errors)
{
if (argv[optind][1] == '-')
/* --option */
@@ -775,7 +786,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (temp == NULL || c == ':')
{
if (opterr)
if (print_errors)
{
if (posixly_correct)
/* 1003.2 specifies the format of this message. */
@@ -809,7 +820,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
else if (optind == argc)
{
if (opterr)
if (print_errors)
{
/* 1003.2 specifies the format of this message. */
fprintf (stderr, _("%s: option requires an argument -- %c\n"),
@@ -858,7 +869,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
if (ambig && !exact)
{
if (opterr)
if (print_errors)
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
argv[0], argv[optind]);
nextchar += strlen (nextchar);
@@ -876,7 +887,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = nameend + 1;
else
{
if (opterr)
if (print_errors)
fprintf (stderr, _("\
%s: option `-W %s' doesn't allow an argument\n"),
argv[0], pfound->name);
@@ -891,7 +902,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = argv[optind++];
else
{
if (opterr)
if (print_errors)
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
@@ -938,12 +949,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
else if (optind == argc)
{
if (opterr)
if (print_errors)
{
/* 1003.2 specifies the format of this message. */
fprintf (stderr,
_("%s: option requires an argument -- %c\n"),
argv[0], c);
_("%s: option requires an argument -- %c\n"),
argv[0], c);
}
optopt = c;
if (optstring[0] == ':')

View File

@@ -20,7 +20,10 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#else
#endif
#include "getopt.h"
#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
@@ -28,9 +31,6 @@
#define const
#endif
#endif
#endif
#include "getopt.h"
#include <stdio.h>

101
lib/getpass.c Normal file
View File

@@ -0,0 +1,101 @@
/* Copyright (C) 1992,93,94,95,96,97,98,99,2000 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 Library General Public License as
published by the Free Software Foundation; either version 2 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.
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. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include "getline.h"
/* It is desirable to use this bit on systems that have it.
The only bit of terminal state we want to twiddle is echoing, which is
done in software; there is no need to change the state of the terminal
hardware. */
#ifndef TCSASOFT
# define TCSASOFT 0
#endif
char *
getpass (const char *prompt)
{
FILE *in, *out;
struct termios s, t;
int tty_changed;
static char *buf;
static size_t bufsize;
ssize_t nread;
/* Try to write to and read from the terminal if we can.
If we can't open the terminal, use stderr and stdin. */
in = fopen ("/dev/tty", "w+");
if (in == NULL)
{
in = stdin;
out = stderr;
}
else
out = in;
/* Turn echoing off if it is on now. */
if (tcgetattr (fileno (in), &t) == 0)
{
/* Save the old one. */
s = t;
/* Tricky, tricky. */
t.c_lflag &= ~(ECHO|ISIG);
tty_changed = (tcsetattr (fileno (in), TCSAFLUSH|TCSASOFT, &t) == 0);
}
else
tty_changed = 0;
/* Write the prompt. */
fputs (prompt, out);
fflush (out);
/* Read the password. */
nread = getline (&buf, &bufsize, in);
if (buf != NULL)
{
if (nread < 0)
buf[0] = '\0';
else if (buf[nread - 1] == '\n')
{
/* Remove the newline. */
buf[nread - 1] = '\0';
if (tty_changed)
/* Write the newline that was not echoed. */
putc ('\n', out);
}
}
/* Restore the original setting. */
if (tty_changed)
(void) tcsetattr (fileno (in), TCSAFLUSH|TCSASOFT, &s);
if (in != stdin)
/* We opened the terminal; now close it. */
fclose (in);
return buf;
}

114
lib/getstr.c Normal file
View File

@@ -0,0 +1,114 @@
/* getstr.c -- core function for GNU C library getline replacement function
Copyright (C) 1993, 1996-2000 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 of the
License, 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 Jan Brittenson, bson@gnu.ai.mit.edu. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include <sys/types.h>
#include <assert.h>
#if STDC_HEADERS
# include <stdlib.h>
#else
char *malloc (), *realloc ();
#endif
/* Always add at least this many bytes when extending the buffer. */
#define MIN_CHUNK 64
/* Read up to (and including) a delimiter DELIM1 from STREAM into *LINEPTR
+ OFFSET (and NUL-terminate it). If DELIM2 is non-zero, then read up
and including the first occurrence of DELIM1 or DELIM2. *LINEPTR is
a pointer returned from malloc (or NULL), pointing to *N characters of
space. It is realloc'd as necessary. Return the number of characters
read (not including the NUL terminator), or -1 on error or EOF. */
int
getstr (char **lineptr, size_t *n, FILE *stream, int delim1, int delim2,
size_t offset)
{
int nchars_avail; /* Allocated but unused chars in *LINEPTR. */
char *read_pos; /* Where we're reading into *LINEPTR. */
int ret;
if (!lineptr || !n || !stream)
return -1;
if (!*lineptr)
{
*n = MIN_CHUNK;
*lineptr = malloc (*n);
if (!*lineptr)
return -1;
}
nchars_avail = *n - offset;
read_pos = *lineptr + offset;
for (;;)
{
register int c = getc (stream);
/* We always want at least one char left in the buffer, since we
always (unless we get an error while reading the first char)
NUL-terminate the line buffer. */
assert(*n - nchars_avail == read_pos - *lineptr);
if (nchars_avail < 2)
{
if (*n > MIN_CHUNK)
*n *= 2;
else
*n += MIN_CHUNK;
nchars_avail = *n + *lineptr - read_pos;
*lineptr = realloc (*lineptr, *n);
if (!*lineptr)
return -1;
read_pos = *n - nchars_avail + *lineptr;
assert(*n - nchars_avail == read_pos - *lineptr);
}
if (c == EOF || ferror (stream))
{
/* Return partial line, if any. */
if (read_pos == *lineptr)
return -1;
else
break;
}
*read_pos++ = c;
nchars_avail--;
if (c == delim1 || (delim2 && c == delim2))
/* Return the line. */
break;
}
/* Done - NUL terminate and return the number of chars read. */
*read_pos = '\0';
ret = read_pos - (*lineptr + offset);
return ret;
}

19
lib/getstr.h Normal file
View File

@@ -0,0 +1,19 @@
#ifndef GETSTR_H_
# define GETSTR_H_ 1
# include <stdio.h>
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
int
getstr PARAMS ((char **lineptr, size_t *n, FILE *stream,
int delim1, int delim2,
size_t offset));
#endif

View File

@@ -1,5 +1,5 @@
/* getugroups.c -- return a list of the groups a user is in
Copyright (C) 1990, 1991, 1998, 1999 Free Software Foundation.
Copyright (C) 1990, 1991, 1998, 1999, 2000 Free Software Foundation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -57,7 +57,7 @@ getugroups (int maxcount, GETGROUPS_T *grouplist, char *username, gid_t gid)
register char **cp;
register int count = 0;
if (gid != -1)
if (gid != (gid_t) -1)
{
if (maxcount != 0)
grouplist[count] = gid;

View File

@@ -1,5 +1,5 @@
/* getusershell.c -- Return names of valid user shells.
Copyright (C) 1991, 1997 Free Software Foundation, Inc.
Copyright (C) 1991, 1997, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <ctype.h>
#include "xalloc.h"
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
@@ -37,15 +38,6 @@
#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c))
#ifdef STDC_HEADERS
# include <stdlib.h>
#else
char *malloc ();
char *realloc ();
#endif
char *xstrdup ();
static int readname ();
/* List of shells to use if the shells file is missing. */
@@ -111,7 +103,13 @@ setusershell ()
if (shellstream == NULL)
shellstream = fopen (SHELLS_FILE, "r");
else
fseek (shellstream, 0L, 0);
{
#ifdef HAVE_FSEEKO
fseeko (shellstream, 0, 0);
#else
fseek (shellstream, 0L, 0);
#endif
}
}
/* Close the shells file. */
@@ -126,39 +124,6 @@ endusershell ()
}
}
/* Allocate N bytes of memory dynamically, with error checking. */
static char *
xmalloc (n)
unsigned n;
{
char *p;
p = malloc (n);
if (p == 0)
{
fprintf (stderr, "virtual memory exhausted\n");
exit (1);
}
return p;
}
/* Reallocate space P to size N, with error checking. */
static char *
xrealloc (p, n)
char *p;
unsigned n;
{
p = realloc (p, n);
if (p == 0)
{
fprintf (stderr, "virtual memory exhausted\n");
exit (1);
}
return p;
}
/* Read a line from STREAM, removing any newline at the end.
Place the result in *NAME, which is malloc'd
and/or realloc'd as necessary and can start out NULL,

View File

@@ -1,5 +1,5 @@
/* getversion.c -- select backup filename type
Copyright (C) 1990, 1998 Free Software Foundation, Inc.
Copyright (C) 1990, 1998, 2000 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

View File

@@ -723,7 +723,7 @@ hash_find_entry (Hash_table *table, const void *entry,
if (bucket->data == NULL)
return NULL;
/* Check if then entry is found as the bucket head. */
/* See if the entry is the first in the bucket. */
if ((*table->comparator) (entry, bucket->data))
{
void *data = bucket->data;
@@ -854,6 +854,7 @@ hash_rehash (Hash_table *table, unsigned candidate)
table->bucket_limit = new_table->bucket_limit;
table->n_buckets = new_table->n_buckets;
table->n_buckets_used = new_table->n_buckets_used;
table->free_entry_list = new_table->free_entry_list;
/* table->n_entries already holds its value. */
#if USE_OBSTACK
table->entry_stack = new_table->entry_stack;
@@ -943,7 +944,8 @@ hash_delete (Hash_table *table, const void *entry)
void *data;
struct hash_entry *bucket;
if (data = hash_find_entry (table, entry, &bucket, true), !data)
data = hash_find_entry (table, entry, &bucket, true);
if (!data)
return NULL;
table->n_entries--;

View File

@@ -76,6 +76,23 @@ static const char suffixes[] =
'Y' /* Yotta */
};
/* If INEXACT_STYLE is not human_round_to_even, and if easily
possible, adjust VALUE according to the style. */
static double
adjust_value (enum human_inexact_style inexact_style, 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)
{
uintmax_t u = value;
value = u + (inexact_style == human_ceiling && u != value);
}
return value;
}
/* Like human_readable_inexact, except always round to even. */
char *
human_readable (uintmax_t n, char *buf,
@@ -90,9 +107,8 @@ human_readable (uintmax_t n, char *buf,
N is expressed in units of FROM_BLOCK_SIZE. FROM_BLOCK_SIZE must
be nonnegative.
If OUTPUT_BLOCK_SIZE is positive, use units of OUTPUT_BLOCK_SIZE in
the output number. OUTPUT_BLOCK_SIZE must be a multiple of
FROM_BLOCK_SIZE or vice versa.
OUTPUT_BLOCK_SIZE must be nonzero. If it is positive, use units of
OUTPUT_BLOCK_SIZE in the output number.
Use INEXACT_STYLE to determine whether to take the ceiling or floor
of any result that cannot be expressed exactly.
@@ -148,57 +164,58 @@ human_readable_inexact (uintmax_t n, char *buf,
/* Adjust AMT out of FROM_BLOCK_SIZE units and into TO_BLOCK_SIZE units. */
if (to_block_size <= from_block_size)
{
int multiplier = from_block_size / to_block_size;
amt = n * multiplier;
{
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. */
if (amt / multiplier != n)
{
/* Overflow occurred during multiplication. We should use
multiple precision arithmetic here, but we'll be lazy and
resort to floating point. This can yield answers that
are slightly off. In practice it is quite rare to
overflow uintmax_t, so this is good enough for now. */
double damt = n * (from_block_size / (double) to_block_size);
double damt = n * (double) multiplier;
if (! base)
sprintf (buf, "%.0f", adjust_value (inexact_style, damt));
else
{
double e = 1;
power = 0;
if (! base)
sprintf (buf, "%.0f", damt);
else
{
double e = 1;
power = 0;
do
{
e *= base;
power++;
}
while (e * base <= damt && power < sizeof suffixes - 1);
do
{
e *= base;
power++;
}
while (e * base <= damt && power < sizeof suffixes - 1);
damt /= e;
damt /= e;
sprintf (buf, "%.1f%c", damt, suffixes[power]);
if (4 < strlen (buf))
sprintf (buf, "%.0f%c", damt, suffixes[power]);
}
return buf;
}
}
else if (from_block_size == 0)
amt = 0;
else
{
int divisor = to_block_size / from_block_size;
int r10 = (n % divisor) * 10;
int r2 = (r10 % divisor) * 2;
amt = n / divisor;
tenths = r10 / divisor;
rounding = r2 < divisor ? 0 < r2 : 2 + (divisor < r2);
}
sprintf (buf, "%.1f%c", adjust_value (inexact_style, damt),
suffixes[power]);
if (4 < strlen (buf))
sprintf (buf, "%.0f%c",
adjust_value (inexact_style, damt * 10) / 10,
suffixes[power]);
}
return buf;
}
}
/* Use power of BASE notation if adjusted AMT is large enough. */

View File

@@ -45,10 +45,13 @@
# endif
#endif
#include "path-concat.h"
#ifndef DIRECTORY_SEPARATOR
# define DIRECTORY_SEPARATOR '/'
#endif
char *xmalloc ();
char *xrealloc ();
#ifndef ISSLASH
# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
#endif
/* The following static variable is declared 'volatile' to avoid a
possible multithread problem in the function get_charset_aliases. If we
@@ -71,7 +74,24 @@ get_charset_aliases ()
if (cp == NULL)
{
FILE *fp;
char *file_name = path_concat (LIBDIR, "charset.alias", NULL);
const char *dir = LIBDIR;
const char *base = "charset.alias";
char *file_name;
/* Concatenate dir and base into freshly allocated file_name. */
{
size_t dir_len = strlen (dir);
size_t base_len = strlen (base);
int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
if (file_name != NULL)
{
memcpy (file_name, dir, dir_len);
if (add_slash)
file_name[dir_len] = DIRECTORY_SEPARATOR;
memcpy (file_name + dir_len + add_slash, base, base_len + 1);
}
}
if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
/* Out of memory or file not found, treat it as empty. */
@@ -111,12 +131,18 @@ get_charset_aliases ()
if (res_size == 0)
{
res_size = l1 + 1 + l2 + 1;
res_ptr = xmalloc (res_size + 1);
res_ptr = malloc (res_size + 1);
}
else
{
res_size += l1 + 1 + l2 + 1;
res_ptr = xrealloc (res_ptr, res_size + 1);
res_ptr = realloc (res_ptr, res_size + 1);
}
if (res_ptr == NULL)
{
/* Out of memory. */
res_size = 0;
break;
}
strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
strcpy (res_ptr + res_size - (l2 + 1), buf2);
@@ -167,13 +193,13 @@ locale_charset ()
# if HAVE_SETLOCALE
locale = setlocale (LC_CTYPE, NULL);
# endif
if (locale == NULL)
if (locale == NULL || locale[0] == '\0')
{
locale = getenv ("LC_ALL");
if (locale == NULL)
if (locale == NULL || locale[0] == '\0')
{
locale = getenv ("LC_CTYPE");
if (locale == NULL)
if (locale == NULL || locale[0] == '\0')
locale = getenv ("LANG");
}
}
@@ -185,7 +211,7 @@ locale_charset ()
#endif
if (codeset != NULL)
if (codeset != NULL && codeset[0] != '\0')
{
/* Resolve alias. */
for (aliases = get_charset_aliases ();

View File

@@ -1,5 +1,5 @@
/* Utility to accept --help and --version options as unobtrusively as possible.
Copyright (C) 1993, 1994, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 1998, 1999, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,7 +23,10 @@
#include <stdio.h>
#include <getopt.h>
#include "closeout.h"
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#include "long-options.h"
#include "version-etc.h"
@@ -71,8 +74,6 @@ parse_long_options (int argc,
case 'v':
version_etc (stdout, command_name, package, version, authors);
close_stdout (); /* FIXME: output failure exit status
should be settable via an arg. */
exit (0);
default:

View File

@@ -114,13 +114,9 @@ extern int errno;
# define _(Text) Text
#endif
#ifdef __MSDOS__
typedef int uid_t;
typedef int gid_t;
#endif
#include "save-cwd.h"
#include "error.h"
#include "quote.h"
void strip_trailing_slashes ();
@@ -178,12 +174,13 @@ make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
if (stat (dir, &stats))
{
error (0, saved_errno, _("cannot create directory `%s'"), dirpath);
error (0, saved_errno, _("cannot create directory %s"),
quote (dirpath));
fail = 1;
}
else if (!S_ISDIR (stats.st_mode))
{
error (0, 0, _("`%s' exists but is not a directory"), dirpath);
error (0, 0, _("%s exists but is not a directory"), quote (dirpath));
fail = 1;
}
else
@@ -312,7 +309,7 @@ make_path (const char *argpath,
if (newly_created_dir)
{
if (verbose_fmt_string)
error (0, 0, verbose_fmt_string, dirpath);
error (0, 0, verbose_fmt_string, quote (dirpath));
if ((owner != (uid_t) -1 || group != (gid_t) -1)
&& chown (basename_dir, owner, group)
@@ -321,7 +318,8 @@ make_path (const char *argpath,
#endif
)
{
error (0, errno, "%s", dirpath);
error (0, errno, _("cannot change owner and/or group of %s"),
quote (dirpath));
CLEANUP;
return 1;
}
@@ -342,7 +340,8 @@ make_path (const char *argpath,
stat and mkdir process O(n^2) file name components. */
if (do_chdir && chdir (basename_dir) < 0)
{
error (0, errno, _("cannot chdir to directory, %s"), dirpath);
error (0, errno, _("cannot chdir to directory, %s"),
quote (dirpath));
CLEANUP;
return 1;
}
@@ -371,7 +370,7 @@ make_path (const char *argpath,
umask (oldmask);
if (verbose_fmt_string != NULL)
error (0, 0, verbose_fmt_string, dirpath);
error (0, 0, verbose_fmt_string, quote (dirpath));
if (owner != (uid_t) -1 || group != (gid_t) -1)
{
@@ -381,7 +380,8 @@ make_path (const char *argpath,
#endif
)
{
error (0, errno, _("cannot chown %s"), dirpath);
error (0, errno, _("cannot change owner and/or group of %s"),
quote (dirpath));
retval = 1;
}
}
@@ -394,7 +394,7 @@ make_path (const char *argpath,
if ((mode & ~S_IRWXUGO)
&& chmod (basename_dir, mode))
{
error (0, errno, _("cannot chmod %s"), dirpath);
error (0, errno, _("cannot change permissions of %s"), quote (dirpath));
retval = 1;
}
@@ -408,7 +408,8 @@ make_path (const char *argpath,
*(p->dirname_end) = '\0';
if (chmod (dirpath, parent_mode))
{
error (0, errno, "%s", dirpath);
error (0, errno, "cannot change permissions of %s",
quote (dirpath));
retval = 1;
}
}
@@ -421,7 +422,7 @@ make_path (const char *argpath,
if (!S_ISDIR (stats.st_mode))
{
error (0, 0, _("`%s' exists but is not a directory"), dirpath);
error (0, 0, _("%s exists but is not a directory"), quote (dirpath));
return 1;
}
@@ -440,12 +441,14 @@ make_path (const char *argpath,
#endif
)
{
error (0, errno, "%s", dirpath);
error (0, errno, _("cannot change owner and/or group of %s"),
quote (dirpath));
retval = 1;
}
if (chmod (dirpath, mode))
{
error (0, errno, "%s", dirpath);
error (0, errno, _("cannot change permissions of %s"),
quote (dirpath));
retval = 1;
}
}

205
lib/mbswidth.c Normal file
View File

@@ -0,0 +1,205 @@
/* Determine the number of screen columns needed for a string.
Copyright (C) 2000 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 Bruno Haible <haible@clisp.cons.org>. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
/* Get MB_LEN_MAX. */
#if HAVE_LIMITS_H
# include <limits.h>
#endif
/* Get MB_CUR_MAX. */
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#if HAVE_STRING_H
# include <string.h>
#endif
/* Get isprint(). */
#include <ctype.h>
/* Get mbstate_t, mbrtowc(), mbsinit(), wcwidth(). */
#if HAVE_WCHAR_H
# include <wchar.h>
#endif
/* Get iswprint(). */
#if HAVE_WCTYPE_H
# include <wctype.h>
#endif
#if !defined iswprint && !HAVE_ISWPRINT
# define iswprint(wc) 1
#endif
/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
#if HAVE_MBRTOWC && defined mbstate_t
# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
# define mbsinit(ps) 1
#endif
#ifndef HAVE_DECL_WCWIDTH
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_WCWIDTH
int wcwidth ();
#endif
#ifndef wcwidth
# if !HAVE_WCWIDTH
/* wcwidth doesn't exist, so assume all printable characters have
width 1. */
# define wcwidth(wc) ((wc) == 0 ? 0 : iswprint (wc) ? 1 : -1)
# endif
#endif
/* Get ISPRINT. */
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
#else
# define IN_CTYPE_DOMAIN(c) isascii(c)
#endif
/* Undefine to protect against the definition in wctype.h of solaris2.6. */
#undef ISPRINT
#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (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, -1 is returned, unless MBSW_ACCEPT_UNPRINTABLE is specified.
With flags = 0, this is the multibyte analogon of the wcswidth function. */
int
mbswidth (const char *string, int flags)
{
return mbsnwidth (string, strlen (string), flags);
}
/* Returns the number of columns needed to represent the multibyte
character string pointed to by STRING of length NBYTES. If a
non-printable character occurs, -1 is returned, unless
MBSW_ACCEPT_UNPRINTABLE is specified. */
int
mbsnwidth (const char *string, size_t nbytes, int flags)
{
const char *p = string;
const char *plimit = p + nbytes;
int width;
width = 0;
#if HAVE_MBRTOWC && (MB_LEN_MAX > 1)
if (MB_CUR_MAX > 1)
{
while (p < plimit)
switch (*p)
{
case ' ': case '!': case '"': case '#': case '%':
case '&': case '\'': case '(': case ')': case '*':
case '+': case ',': case '-': case '.': case '/':
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case ':': case ';': case '<': case '=': case '>':
case '?':
case 'A': case 'B': case 'C': case 'D': case 'E':
case 'F': case 'G': case 'H': case 'I': case 'J':
case 'K': case 'L': case 'M': case 'N': case 'O':
case 'P': case 'Q': case 'R': case 'S': case 'T':
case 'U': case 'V': case 'W': case 'X': case 'Y':
case 'Z':
case '[': case '\\': case ']': case '^': case '_':
case 'a': case 'b': case 'c': case 'd': case 'e':
case 'f': case 'g': case 'h': case 'i': case 'j':
case 'k': case 'l': case 'm': case 'n': case 'o':
case 'p': case 'q': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x': case 'y':
case 'z': case '{': case '|': case '}': case '~':
/* These characters are printable ASCII characters. */
p++;
width++;
break;
default:
/* If we have a multibyte sequence, scan it up to its end. */
{
mbstate_t mbstate;
memset (&mbstate, 0, sizeof mbstate);
do
{
wchar_t wc;
size_t bytes;
int w;
bytes = mbrtowc (&wc, p, plimit - p, &mbstate);
if (bytes == (size_t) -1)
/* An invalid multibyte sequence was encountered. */
{
if (flags & MBSW_ACCEPT_INVALID)
break;
else
return -1;
}
if (bytes == (size_t) -2)
/* An incomplete multibyte character at the end. */
{
if (flags & MBSW_ACCEPT_INVALID)
break;
else
return -1;
}
if (bytes == 0)
/* A null wide character was encountered. */
bytes = 1;
w = wcwidth (wc);
if (w >= 0)
/* A printable multibyte character. */
width += w;
else
/* An unprintable multibyte character. */
if (flags & MBSW_ACCEPT_UNPRINTABLE)
width += 1;
else
return -1;
p += bytes;
}
while (! mbsinit (&mbstate));
}
break;
}
return width;
}
#endif
while (p < plimit)
{
unsigned char c = (unsigned char) *p++;
if ((flags & MBSW_ACCEPT_UNPRINTABLE) || ISPRINT (c))
width++;
else
return -1;
}
return width;
}

41
lib/mbswidth.h Normal file
View File

@@ -0,0 +1,41 @@
/* Determine the number of screen columns needed for a string.
Copyright (C) 2000 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__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
/* Optional flags to influence mbswidth/mbsnwidth behavior. */
/* If this bit is set, assume invalid characters have width 0.
Otherwise, return -1 upon finding an invalid or incomplete character. */
#define MBSW_ACCEPT_INVALID 1
/* If this bit is set, assume unprintable characters have width 1.
Otherwise, return -1 upon finding a non-printable character. */
#define MBSW_ACCEPT_UNPRINTABLE 2
/* Returns the number of screen columns needed for STRING. */
extern int mbswidth PARAMS ((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));

View File

@@ -304,19 +304,16 @@ md5_process_block (buffer, len, ctx)
{ \
a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
++words; \
CYCLIC (a, s); \
a = rol (a, s); \
a += b; \
} \
while (0)
/* It is unfortunate that C does not provide an operator for
cyclic rotation. Hope the C compiler is smart enough. */
#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))
/* Before we start, one word to the strange constants.
They are defined in RFC 1321 as
T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or
perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}'
*/
/* Round 1. */
@@ -345,7 +342,7 @@ md5_process_block (buffer, len, ctx)
do \
{ \
a += f (b, c, d) + correct_words[k] + T; \
CYCLIC (a, s); \
a = rol (a, s); \
a += b; \
} \
while (0)

View File

@@ -143,4 +143,19 @@ extern int md5_stream __P ((FILE *stream, void *resblock));
digest. */
extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
/* The following is from gnupg-1.0.2's cipher/bithelp.h. */
/* Rotate a 32 bit integer by n bytes */
#if defined(__GNUC__) && defined(__i386__)
static inline md5_uint32
rol(md5_uint32 x, int n)
{
__asm__("roll %%cl,%0"
:"=r" (x)
:"0" (x),"c" (n));
return x;
}
#else
# define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
#endif
#endif

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1993, 1997, 1999 Free Software Foundation, Inc.
/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
with help from Dan Sahlin (dan@sics.se) and
commentary by Jim Blandy (jimb@ai.mit.edu);
@@ -34,11 +34,18 @@ USA. */
# define __ptr_t char *
#endif /* C++ or ANSI C. */
#if defined (_LIBC)
#if defined _LIBC
# include <string.h>
# include <memcopy.h>
#else
# define reg_char char
#endif
#if defined (HAVE_LIMITS_H) || defined (_LIBC)
#if HAVE_STDLIB_H || defined _LIBC
# include <stdlib.h>
#endif
#if HAVE_LIMITS_H || defined _LIBC
# include <limits.h>
#endif
@@ -49,21 +56,28 @@ USA. */
#endif
#include <sys/types.h>
#if HAVE_BP_SYM_H || defined _LIBC
# include <bp-sym.h>
#else
# define BP_SYM(sym) sym
#endif
#undef memchr
#undef __memchr
/* Search no more than N bytes of S for C. */
__ptr_t
memchr (s, c, n)
__memchr (s, c_in, n)
const __ptr_t s;
int c;
int c_in;
size_t n;
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
unsigned long int longword, magic_bits, charmask;
unsigned reg_char c;
c = (unsigned char) c;
c = (unsigned char) c_in;
/* Handle the first few characters by reading one character at a time.
Do this until CHAR_PTR is aligned on a longword boundary. */
@@ -197,3 +211,6 @@ memchr (s, c, n)
return 0;
}
#ifdef weak_alias
weak_alias (__memchr, BP_SYM (memchr))
#endif

View File

@@ -49,6 +49,11 @@
#ifdef _LIBC
# include <memcopy.h>
# include <endian.h>
# if __BYTE_ORDER == __BIG_ENDIAN
# define WORDS_BIGENDIAN
# endif
#else /* Not in the GNU C library. */

209
lib/memrchr.c Normal file
View File

@@ -0,0 +1,209 @@
/* memrchr -- find the last occurrence of a byte in a memory block
Copyright (C) 1991, 93, 96, 97, 99, 2000 Free Software Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
with help from Dan Sahlin (dan@sics.se) and
commentary by Jim Blandy (jimb@ai.mit.edu);
adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
and implemented by Roland McGrath (roland@ai.mit.edu).
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.
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.
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. */
#include <stdlib.h>
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#undef __ptr_t
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
# define __ptr_t void *
#else /* Not C++ or ANSI C. */
# define __ptr_t char *
#endif /* C++ or ANSI C. */
#if defined (_LIBC)
# include <string.h>
# include <memcopy.h>
#else
# define reg_char char
#endif
#if defined (HAVE_LIMITS_H) || defined (_LIBC)
# include <limits.h>
#endif
#define LONG_MAX_32_BITS 2147483647
#ifndef LONG_MAX
# define LONG_MAX LONG_MAX_32_BITS
#endif
#include <sys/types.h>
#undef __memrchr
#undef memrchr
#ifndef weak_alias
# define __memrchr memrchr
#endif
/* Search no more than N bytes of S for C. */
__ptr_t
__memrchr (s, c_in, n)
const __ptr_t s;
int c_in;
size_t n;
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
unsigned long int longword, magic_bits, charmask;
unsigned reg_char c;
c = (unsigned char) c_in;
/* Handle the last few characters by reading one character at a time.
Do this until CHAR_PTR is aligned on a longword boundary. */
for (char_ptr = (const unsigned char *) s + n;
n > 0 && ((unsigned long int) char_ptr
& (sizeof (longword) - 1)) != 0;
--n)
if (*--char_ptr == c)
return (__ptr_t) char_ptr;
/* All these elucidatory comments refer to 4-byte longwords,
but the theory applies equally well to 8-byte longwords. */
longword_ptr = (unsigned long int *) char_ptr;
/* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
the "holes." Note that there is a hole just to the left of
each byte, with an extra at the end:
bits: 01111110 11111110 11111110 11111111
bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
The 1-bits make sure that carries propagate to the next 0-bit.
The 0-bits provide holes for carries to fall into. */
if (sizeof (longword) != 4 && sizeof (longword) != 8)
abort ();
#if LONG_MAX <= LONG_MAX_32_BITS
magic_bits = 0x7efefeff;
#else
magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
#endif
/* Set up a longword, each of whose bytes is C. */
charmask = c | (c << 8);
charmask |= charmask << 16;
#if LONG_MAX > LONG_MAX_32_BITS
charmask |= charmask << 32;
#endif
/* Instead of the traditional loop which tests each character,
we will test a longword at a time. The tricky part is testing
if *any of the four* bytes in the longword in question are zero. */
while (n >= sizeof (longword))
{
/* We tentatively exit the loop if adding MAGIC_BITS to
LONGWORD fails to change any of the hole bits of LONGWORD.
1) Is this safe? Will it catch all the zero bytes?
Suppose there is a byte with all zeros. Any carry bits
propagating from its left will fall into the hole at its
least significant bit and stop. Since there will be no
carry from its most significant bit, the LSB of the
byte to the left will be unchanged, and the zero will be
detected.
2) Is this worthwhile? Will it ignore everything except
zero bytes? Suppose every byte of LONGWORD has a bit set
somewhere. There will be a carry into bit 8. If bit 8
is set, this will carry into bit 16. If bit 8 is clear,
one of bits 9-15 must be set, so there will be a carry
into bit 16. Similarly, there will be a carry into bit
24. If one of bits 24-30 is set, there will be a carry
into bit 31, so all of the hole bits will be changed.
The one misfire occurs when bits 24-30 are clear and bit
31 is set; in this case, the hole at bit 31 is not
changed. If we had access to the processor carry flag,
we could close this loophole by putting the fourth hole
at bit 32!
So it ignores everything except 128's, when they're aligned
properly.
3) But wait! Aren't we looking for C, not zero?
Good point. So what we do is XOR LONGWORD with a longword,
each of whose bytes is C. This turns each byte that is C
into a zero. */
longword = *--longword_ptr ^ charmask;
/* Add MAGIC_BITS to LONGWORD. */
if ((((longword + magic_bits)
/* Set those bits that were unchanged by the addition. */
^ ~longword)
/* Look at only the hole bits. If any of the hole bits
are unchanged, most likely one of the bytes was a
zero. */
& ~magic_bits) != 0)
{
/* Which of the bytes was C? If none of them were, it was
a misfire; continue the search. */
const unsigned char *cp = (const unsigned char *) longword_ptr;
#if LONG_MAX > 2147483647
if (cp[7] == c)
return (__ptr_t) &cp[7];
if (cp[6] == c)
return (__ptr_t) &cp[6];
if (cp[5] == c)
return (__ptr_t) &cp[5];
if (cp[4] == c)
return (__ptr_t) &cp[4];
#endif
if (cp[3] == c)
return (__ptr_t) &cp[3];
if (cp[2] == c)
return (__ptr_t) &cp[2];
if (cp[1] == c)
return (__ptr_t) &cp[1];
if (cp[0] == c)
return (__ptr_t) cp;
}
n -= sizeof (longword);
}
char_ptr = (const unsigned char *) longword_ptr;
while (n-- > 0)
{
if (*--char_ptr == c)
return (__ptr_t) char_ptr;
}
return 0;
}
#ifdef weak_alias
weak_alias (__memrchr, memrchr)
#endif

View File

@@ -1,108 +0,0 @@
/* BSD compatible make directory function for System V
Copyright (C) 1988, 1990, 1998 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. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifndef S_IRWXU
# define S_IRWXU 0700
#endif
#ifndef S_IRWXG
# define S_IRWXG 0070
#endif
#ifndef S_IRWXO
# define S_IRWXO 0007
#endif
/* mkdir adapted from GNU tar. */
/* Make directory DPATH, with permission mode DMODE.
Written by Robert Rother, Mariah Corporation, August 1985
(sdcsvax!rmr or rmr@uscd). If you want it, it's yours.
Severely hacked over by John Gilmore to make a 4.2BSD compatible
subroutine. 11Mar86; hoptoad!gnu
Modified by rmtodd@uokmax 6-28-87 -- when making an already existing dir,
subroutine didn't return EEXIST. It does now. */
int
mkdir (const char *dpath, mode_t dmode)
{
pid_t cpid;
mode_t mode;
int status;
struct stat statbuf;
if (stat (dpath, &statbuf) == 0)
{
errno = EEXIST; /* stat worked, so it already exists. */
return -1;
}
/* If stat fails for a reason other than non-existence, return error. */
if (errno != ENOENT)
return -1;
cpid = fork ();
switch (cpid)
{
case -1: /* Cannot fork. */
return -1; /* errno is already set. */
case 0: /* Child process. */
/* Cheap hack to set mode of new directory. Since this child
process is going away anyway, we zap its umask.
This won't suffice to set SUID, SGID, etc. on this
directory, so the parent process calls chmod afterward. */
mode = umask (0); /* Get current umask. */
/* Set for mkdir. */
umask (mode | ((S_IRWXU | S_IRWXG | S_IRWXO) & ~dmode));
execl ("/bin/mkdir", "mkdir", dpath, (char *) 0);
_exit (1);
default: /* Parent process. */
/* Wait for kid to finish. */
while (wait (&status) != cpid)
/* Do nothing. */ ;
if (status)
{
/* /bin/mkdir failed. */
errno = EIO;
return -1;
}
return chmod (dpath, dmode);
}
}

View File

@@ -1,5 +1,5 @@
/* modechange.c -- file mode manipulation
Copyright (C) 1989, 1990, 1997-2000 Free Software Foundation, Inc.
Copyright (C) 1989, 1990, 1997, 1998, 1999 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

View File

@@ -1,5 +1,5 @@
/* mountlist.c -- return a list of mounted filesystems
Copyright (C) 1991, 1992, 1997, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1997-2000 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
@@ -40,7 +40,6 @@ char *strstr ();
char *xmalloc ();
char *xrealloc ();
char *xstrdup ();
void error ();
#include <errno.h>
#ifndef errno
@@ -85,6 +84,11 @@ extern int errno;
# include <sys/fs_types.h>
#endif
#ifdef MOUNTED_FS_STAT_DEV /* BeOS. */
# include <fs_info.h>
# include <dirent.h>
#endif
#ifdef MOUNTED_FREAD /* SVR2. */
# include <mnttab.h>
#endif
@@ -256,7 +260,7 @@ static char *
fsp_to_string (const struct statfs *fsp)
{
# if defined HAVE_F_FSTYPENAME_IN_STATFS
return fsp->f_fstypename;
return (char *) (fsp->f_fstypename);
# else
return fstype_to_string (fsp->f_type);
# endif
@@ -413,6 +417,111 @@ read_filesystem_list (int need_fs_type)
}
#endif /* MOUNTED_GETMNT. */
#if defined (MOUNTED_FS_STAT_DEV) /* BeOS */
{
/* The next_dev() and fs_stat_dev() system calls give the list of
all filesystems, including the information returned by statvfs()
(fs type, total blocks, free blocks etc.), but without the mount
point. But on BeOS all filesystems except / are mounted in the
rootfs, directly under /.
The directory name of the mount point is often, but not always,
identical to the volume name of the device.
We therefore get the list of subdirectories of /, and the list
of all filesystems, and match the two lists. */
DIR *dirp;
struct rootdir_entry
{
char *name;
dev_t dev;
ino_t ino;
struct rootdir_entry *next;
};
struct rootdir_entry *rootdir_list;
struct rootdir_entry **rootdir_tail;
int32 pos;
dev_t dev;
fs_info fi;
/* All volumes are mounted in the rootfs, directly under /. */
rootdir_list = NULL;
rootdir_tail = &rootdir_list;
dirp = opendir ("/");
if (dirp)
{
struct dirent *d;
while ((d = readdir (dirp)) != NULL)
{
char *name;
struct stat statbuf;
if (strcmp (d->d_name, "..") == 0)
continue;
if (strcmp (d->d_name, ".") == 0)
name = xstrdup ("/");
else
{
name = xmalloc (1 + strlen (d->d_name) + 1);
name[0] = '/';
strcpy (name + 1, d->d_name);
}
if (lstat (name, &statbuf) >= 0 && S_ISDIR (statbuf.st_mode))
{
struct rootdir_entry *re;
re = (struct rootdir_entry *) xmalloc (sizeof (struct rootdir_entry));
re->name = name;
re->dev = statbuf.st_dev;
re->ino = statbuf.st_ino;
/* Add to the linked list. */
*rootdir_tail = re;
rootdir_tail = &re->next;
}
else
free (name);
}
closedir (dirp);
}
*rootdir_tail = NULL;
for (pos = 0; (dev = next_dev (&pos)) >= 0; )
if (fs_stat_dev (dev, &fi) >= 0)
{
/* Note: fi.dev == dev. */
struct rootdir_entry *re;
for (re = rootdir_list; re; re = re->next)
if (re->dev == fi.dev && re->ino == fi.root)
break;
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (fi.device_name[0] != '\0' ? fi.device_name : fi.fsh_name);
me->me_mountdir = xstrdup (re != NULL ? re->name : fi.fsh_name);
me->me_type = xstrdup (fi.fsh_name);
me->me_dev = fi.dev;
me->me_dummy = 0;
me->me_remote = (fi.flags & B_FS_IS_SHARED) != 0;
/* Add to the linked list. */
*mtail = me;
mtail = &me->me_next;
}
*mtail = NULL;
while (rootdir_list != NULL)
{
struct rootdir_entry *re = rootdir_list;
rootdir_list = re->next;
free (re->name);
free (re);
}
}
#endif /* MOUNTED_FS_STAT_DEV */
#if defined (MOUNTED_GETFSSTAT) /* __alpha running OSF_1 */
{
int numsys, counter, bufsize;
@@ -615,6 +724,8 @@ read_filesystem_list (int need_fs_type)
for (thisent = entries; thisent < entries + bufsize;
thisent += vmp->vmt_length)
{
char *options, *ignore;
vmp = (struct vmount *) thisent;
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
if (vmp->vmt_flags & MNT_REMOTE)
@@ -638,7 +749,12 @@ read_filesystem_list (int need_fs_type)
}
me->me_mountdir = xstrdup (thisent + vmp->vmt_data[VMT_STUB].vmt_off);
me->me_type = xstrdup (fstype_to_string (vmp->vmt_gfstype));
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
options = thisent + vmp->vmt_data[VMT_ARGS].vmt_off;
ignore = strstr (options, "ignore");
me->me_dummy = (ignore
&& (ignore == options || ignore[-1] == ',')
&& (ignore[sizeof "ignore" - 1] == ','
|| ignore[sizeof "ignore" - 1] == '\0'));
me->me_dev = (dev_t) -1; /* vmt_fsid might be the info we want. */
/* Add to the linked list. */

View File

@@ -1,5 +1,5 @@
/* mountlist.h -- declarations for list of mounted filesystems
Copyright (C) 1991, 1992, 1998 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1998, 2000 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,7 +39,10 @@ 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, "ignore"))
(!strcmp (fs_type, "auto") \
|| !strcmp (fs_type, "autofs") \
/* for Irix 6.5 */ \
|| !strcmp (fs_type, "ignore"))
#endif
#ifndef ME_REMOTE

View File

@@ -36,6 +36,13 @@ extern int errno;
# include <unistd.h>
#endif
/* Some systems (MSDOS) don't have SIGCONT.
Using SIGTERM here turns the signal-handling code below
into a no-op on such systems. */
#ifndef SIGCONT
# define SIGCONT SIGTERM
#endif
#include "nanosleep.h"
static int suspended;

View File

@@ -1,5 +1,5 @@
/* obstack.c - subroutines used implicitly by object stack macros
Copyright (C) 1988,89,90,91,92,93,94,96 Free Software Foundation, Inc.
Copyright (C) 1988-1994,96,97,98,99,2000 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.
@@ -19,6 +19,10 @@
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 "obstack.h"
/* NOTE BEFORE MODIFYING THIS FILE: This version number must be
@@ -37,60 +41,62 @@
#include <stdio.h> /* Random thing to get __GNU_LIBRARY__. */
#if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
#include <gnu-versions.h>
#if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
#define ELIDE_CODE
#endif
# include <gnu-versions.h>
# if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
# define ELIDE_CODE
# endif
#endif
#ifndef ELIDE_CODE
#if defined (__STDC__) && __STDC__
#define POINTER void *
#else
#define POINTER char *
#endif
# if defined (__STDC__) && __STDC__
# define POINTER void *
# else
# define POINTER char *
# endif
/* Determine default alignment. */
struct fooalign {char x; double d;};
#define DEFAULT_ALIGNMENT \
# define DEFAULT_ALIGNMENT \
((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0))
/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
But in fact it might be less smart and round addresses to as much as
DEFAULT_ROUNDING. So we prepare for it to do that. */
union fooround {long x; double d;};
#define DEFAULT_ROUNDING (sizeof (union fooround))
# define DEFAULT_ROUNDING (sizeof (union fooround))
/* When we copy a long block of data, this is the unit to do it with.
On some machines, copying successive ints does not work;
in such a case, redefine COPYING_UNIT to `long' (if that works)
or `char' as a last resort. */
#ifndef COPYING_UNIT
#define COPYING_UNIT int
#endif
# ifndef COPYING_UNIT
# define COPYING_UNIT int
# endif
/* The functions allocating more room by calling `obstack_chunk_alloc'
jump to the handler pointed to by `obstack_alloc_failed_handler'.
This variable by default points to the internal function
This can be set to a user defined function which should either
abort gracefully or use longjump - but shouldn't return. This
variable by default points to the internal function
`print_and_abort'. */
#if defined (__STDC__) && __STDC__
# if defined (__STDC__) && __STDC__
static void print_and_abort (void);
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
#else
# else
static void print_and_abort ();
void (*obstack_alloc_failed_handler) () = print_and_abort;
#endif
# endif
/* Exit value used when `print_and_abort' is used. */
#if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifndef EXIT_FAILURE
#define EXIT_FAILURE 1
#endif
# if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
# include <stdlib.h>
# endif
# ifndef EXIT_FAILURE
# define EXIT_FAILURE 1
# endif
int obstack_exit_failure = EXIT_FAILURE;
/* The non-GNU-C macros copy the obstack into this global variable
@@ -104,33 +110,33 @@ struct obstack *_obstack;
For free, do not use ?:, since some compilers, like the MIPS compilers,
do not allow (expr) ? void : void. */
#if defined (__STDC__) && __STDC__
#define CALL_CHUNKFUN(h, size) \
# if defined (__STDC__) && __STDC__
# define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
#define CALL_FREEFUN(h, old_chunk) \
# define CALL_FREEFUN(h, old_chunk) \
do { \
if ((h) -> use_extra_arg) \
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
else \
(*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
} while (0)
#else
#define CALL_CHUNKFUN(h, size) \
# else
# define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size)))
#define CALL_FREEFUN(h, old_chunk) \
# define CALL_FREEFUN(h, old_chunk) \
do { \
if ((h) -> use_extra_arg) \
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
else \
(*(void (*) ()) (h)->freefun) ((old_chunk)); \
} while (0)
#endif
# endif
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
@@ -138,27 +144,26 @@ struct obstack *_obstack;
CHUNKFUN is the function to use to allocate chunks,
and FREEFUN the function to free them.
Return nonzero if successful, zero if out of memory.
To recover from an out of memory error,
free up some memory, then call this again. */
Return nonzero if successful, calls obstack_alloc_failed_handler if
allocation fails. */
int
_obstack_begin (h, size, alignment, chunkfun, freefun)
struct obstack *h;
int size;
int alignment;
#if defined (__STDC__) && __STDC__
# if defined (__STDC__) && __STDC__
POINTER (*chunkfun) (long);
void (*freefun) (void *);
#else
# else
POINTER (*chunkfun) ();
void (*freefun) ();
#endif
# endif
{
register struct _obstack_chunk *chunk; /* points to new chunk */
if (alignment == 0)
alignment = DEFAULT_ALIGNMENT;
alignment = (int) DEFAULT_ALIGNMENT;
if (size == 0)
/* Default size is what GNU malloc can fit in a 4096-byte block. */
{
@@ -176,13 +181,13 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
size = 4096 - extra;
}
#if defined (__STDC__) && __STDC__
# if defined (__STDC__) && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else
# else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
#endif
# endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->use_extra_arg = 0;
@@ -205,19 +210,19 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
struct obstack *h;
int size;
int alignment;
#if defined (__STDC__) && __STDC__
# if defined (__STDC__) && __STDC__
POINTER (*chunkfun) (POINTER, long);
void (*freefun) (POINTER, POINTER);
#else
# else
POINTER (*chunkfun) ();
void (*freefun) ();
#endif
# endif
POINTER arg;
{
register struct _obstack_chunk *chunk; /* points to new chunk */
if (alignment == 0)
alignment = DEFAULT_ALIGNMENT;
alignment = (int) DEFAULT_ALIGNMENT;
if (size == 0)
/* Default size is what GNU malloc can fit in a 4096-byte block. */
{
@@ -235,13 +240,13 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
size = 4096 - extra;
}
#if defined(__STDC__) && __STDC__
# if defined(__STDC__) && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else
# else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
#endif
# endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->extra_arg = arg;
@@ -274,12 +279,13 @@ _obstack_newchunk (h, length)
register struct _obstack_chunk *old_chunk = h->chunk;
register struct _obstack_chunk *new_chunk;
register long new_size;
register int obj_size = h->next_free - h->object_base;
register int i;
int already;
register long obj_size = h->next_free - h->object_base;
register long i;
long already;
char *object_base;
/* Compute size for new chunk. */
new_size = (obj_size + length) + (obj_size >> 3) + 100;
new_size = (obj_size + length) + (obj_size >> 3) + h->alignment_mask + 100;
if (new_size < h->chunk_size)
new_size = h->chunk_size;
@@ -291,6 +297,11 @@ _obstack_newchunk (h, length)
new_chunk->prev = old_chunk;
new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
/* Compute an aligned object_base in the new chunk */
object_base =
__INT_TO_PTR ((__PTR_TO_INT (new_chunk->contents) + h->alignment_mask)
& ~ (h->alignment_mask));
/* Move the existing object to the new chunk.
Word at a time is fast and is safe if the object
is sufficiently aligned. */
@@ -298,7 +309,7 @@ _obstack_newchunk (h, length)
{
for (i = obj_size / sizeof (COPYING_UNIT) - 1;
i >= 0; i--)
((COPYING_UNIT *)new_chunk->contents)[i]
((COPYING_UNIT *)object_base)[i]
= ((COPYING_UNIT *)h->object_base)[i];
/* We used to copy the odd few remaining bytes as one extra COPYING_UNIT,
but that can cross a page boundary on a machine
@@ -309,7 +320,7 @@ _obstack_newchunk (h, length)
already = 0;
/* Copy remaining bytes one by one. */
for (i = already; i < obj_size; i++)
new_chunk->contents[i] = h->object_base[i];
object_base[i] = h->object_base[i];
/* If the object just copied was the only data in OLD_CHUNK,
free that chunk and remove it from the chain.
@@ -320,7 +331,7 @@ _obstack_newchunk (h, length)
CALL_FREEFUN (h, old_chunk);
}
h->object_base = new_chunk->contents;
h->object_base = object_base;
h->next_free = h->object_base + obj_size;
/* The new chunk certainly contains no empty object yet. */
h->maybe_empty_object = 0;
@@ -330,11 +341,11 @@ _obstack_newchunk (h, length)
This is here for debugging.
If you use it in a program, you are probably losing. */
#if defined (__STDC__) && __STDC__
# if defined (__STDC__) && __STDC__
/* Suppress -Wmissing-prototypes warning. We don't want to declare this in
obstack.h because it is just for debugging. */
int _obstack_allocated_p (struct obstack *h, POINTER obj);
#endif
# endif
int
_obstack_allocated_p (h, obj)
@@ -359,7 +370,7 @@ _obstack_allocated_p (h, obj)
/* Free objects in obstack H, including OBJ and everything allocate
more recently than OBJ. If OBJ is zero, free everything in H. */
#undef obstack_free
# undef obstack_free
/* This function has two names with identical definitions.
This is the first one, called from non-ANSI code. */
@@ -445,32 +456,37 @@ _obstack_memory_used (h)
}
/* Define the error handler. */
#ifndef _
# ifdef HAVE_LIBINTL_H
# include <libintl.h>
# ifndef _
# define _(Str) gettext (Str)
# ifndef _
# if defined HAVE_LIBINTL_H || defined _LIBC
# include <libintl.h>
# ifndef _
# define _(Str) gettext (Str)
# endif
# else
# define _(Str) (Str)
# endif
# else
# define _(Str) (Str)
# endif
#endif
# if defined _LIBC && defined USE_IN_LIBIO
# include <libio/iolibio.h>
# define fputs(s, f) _IO_fputs (s, f)
# endif
static void
print_and_abort ()
{
fputs (_("memory exhausted\n"), stderr);
fputs (_("memory exhausted"), stderr);
fputc ('\n', stderr);
exit (obstack_exit_failure);
}
#if 0
# if 0
/* These are now turned off because the applications do not use it
and it uses bcopy via obstack_grow, which causes trouble on sysV. */
/* Now define the functional versions of the obstack macros.
Define them to simply use the corresponding macros to do the job. */
#if defined (__STDC__) && __STDC__
# if defined (__STDC__) && __STDC__
/* These function definitions do not work with non-ANSI preprocessors;
they won't pass through the macro names in parentheses. */
@@ -581,8 +597,8 @@ POINTER (obstack_copy0) (obstack, pointer, length)
return obstack_copy0 (obstack, pointer, length);
}
#endif /* __STDC__ */
# endif /* __STDC__ */
#endif /* 0 */
# endif /* 0 */
#endif /* !ELIDE_CODE */

View File

@@ -1,5 +1,5 @@
/* obstack.h - object stack macros
Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
Copyright (C) 1988,89,90,91,92,93,94,96,97,98,99 Free Software Foundation, Inc.
the C library, however. The master source lives in /gd/gnu/lib.
@@ -118,45 +118,39 @@ extern "C" {
may ignore the byte-within-word field of the pointer. */
#ifndef __PTR_TO_INT
#define __PTR_TO_INT(P) ((P) - (char *) 0)
# define __PTR_TO_INT(P) ((P) - (char *) 0)
#endif
#ifndef __INT_TO_PTR
#define __INT_TO_PTR(P) ((P) + (char *) 0)
# define __INT_TO_PTR(P) ((P) + (char *) 0)
#endif
/* We need the type of the resulting object. In ANSI C it is ptrdiff_t
but in traditional C it is usually long. If we are in ANSI C and
don't already have ptrdiff_t get it. */
/* We need the type of the resulting object. 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. */
#if defined (__STDC__) && __STDC__ && ! defined (offsetof)
#if defined (__GNUC__) && defined (IN_GCC)
/* On Next machine, the system's stddef.h screws up if included
after we have defined just ptrdiff_t, so include all of stddef.h.
Otherwise, define just ptrdiff_t, which is all we need. */
#ifndef __NeXT__
#define __need_ptrdiff_t
#endif
#endif
#include <stddef.h>
#endif
#if defined (__STDC__) && __STDC__
#define PTR_INT_TYPE ptrdiff_t
#ifdef __PTRDIFF_TYPE__
# define PTR_INT_TYPE __PTRDIFF_TYPE__
#else
#define PTR_INT_TYPE long
# ifdef HAVE_STDDEF_H
# include <stddef.h>
# define PTR_INT_TYPE ptrdiff_t
# else
# define PTR_INT_TYPE long
# endif
#endif
#if defined (_LIBC) || defined (HAVE_STRING_H)
#include <string.h>
#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
#if defined _LIBC || defined HAVE_STRING_H
# include <string.h>
# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
#else
#ifdef memcpy
#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
#else
#define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
#endif
# ifdef memcpy
# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
# else
# define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
# endif
#endif
struct _obstack_chunk /* Lives at front of each chunk. */
@@ -175,7 +169,7 @@ struct obstack /* control current object in current chunk */
char *chunk_limit; /* address of char after current chunk */
PTR_INT_TYPE temp; /* Temporary for some macros. */
int alignment_mask; /* Mask of alignment for each object. */
#if defined (__STDC__) && __STDC__
#if defined __STDC__ && __STDC__
/* These prototypes vary based on `use_extra_arg', and we use
casts to the prototypeless function type in all assignments,
but having prototypes here quiets -Wstrict-prototypes. */
@@ -199,7 +193,7 @@ struct obstack /* control current object in current chunk */
/* Declare the external functions we use; they are in obstack.c. */
#if defined (__STDC__) && __STDC__
#if defined __STDC__ && __STDC__
extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
@@ -216,7 +210,7 @@ extern int _obstack_begin_1 ();
extern int _obstack_memory_used ();
#endif
#if defined (__STDC__) && __STDC__
#if defined __STDC__ && __STDC__
/* Do the function-declarations after the structs
but before defining the macros. */
@@ -262,9 +256,10 @@ int obstack_memory_used (struct obstack *obstack);
so we do not declare them. */
/* Error handler called when `obstack_chunk_alloc' failed to allocate
more memory. This can be set to a user defined function. The
default action is to print a message and abort. */
#if defined (__STDC__) && __STDC__
more memory. This can be set to a user defined function which
should either abort gracefully or use longjump - but shouldn't
return. The default action is to print a message and abort. */
#if defined __STDC__ && __STDC__
extern void (*obstack_alloc_failed_handler) (void);
#else
extern void (*obstack_alloc_failed_handler) ();
@@ -293,53 +288,53 @@ extern int obstack_exit_failure;
/* To prevent prototype warnings provide complete argument list in
standard C version. */
#if defined (__STDC__) && __STDC__
#if defined __STDC__ && __STDC__
#define obstack_init(h) \
# define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
#define obstack_begin(h, size) \
# define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
(void *(*) (void *, long)) (chunkfun), \
(void (*) (void *, void *)) (freefun), (arg))
#define obstack_chunkfun(h, newchunkfun) \
# define obstack_chunkfun(h, newchunkfun) \
((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
#define obstack_freefun(h, newfreefun) \
# define obstack_freefun(h, newfreefun) \
((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
#else
#define obstack_init(h) \
# define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
(void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
#define obstack_begin(h, size) \
# define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
(void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
(void *(*) ()) (chunkfun), (void (*) ()) (freefun))
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
(void *(*) ()) (chunkfun), (void (*) ()) (freefun), (arg))
#define obstack_chunkfun(h, newchunkfun) \
# define obstack_chunkfun(h, newchunkfun) \
((h) -> chunkfun = (struct _obstack_chunk *(*)()) (newchunkfun))
#define obstack_freefun(h, newfreefun) \
# define obstack_freefun(h, newfreefun) \
((h) -> freefun = (void (*)()) (newfreefun))
#endif
@@ -350,30 +345,30 @@ extern int obstack_exit_failure;
#define obstack_memory_used(h) _obstack_memory_used (h)
#if defined (__GNUC__) && defined (__STDC__) && __STDC__
#if defined __GNUC__ && defined __STDC__ && __STDC__
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
does not implement __extension__. But that compiler doesn't define
__GNUC_MINOR__. */
#if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
#define __extension__
#endif
# if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
# define __extension__
# endif
/* For GNU C, if not -traditional,
we can define these macros to compute all args only once
without using a global variable.
Also, we can avoid using the `temp' slot, to make faster code. */
#define obstack_object_size(OBSTACK) \
# define obstack_object_size(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->next_free - __o->object_base); })
#define obstack_room(OBSTACK) \
# define obstack_room(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->chunk_limit - __o->next_free); })
#define obstack_make_room(OBSTACK,length) \
# define obstack_make_room(OBSTACK,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
@@ -381,12 +376,12 @@ __extension__ \
_obstack_newchunk (__o, __len); \
(void) 0; })
#define obstack_empty_p(OBSTACK) \
# define obstack_empty_p(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
(__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
#define obstack_grow(OBSTACK,where,length) \
# define obstack_grow(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
@@ -396,7 +391,7 @@ __extension__ \
__o->next_free += __len; \
(void) 0; })
#define obstack_grow0(OBSTACK,where,length) \
# define obstack_grow0(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
@@ -407,7 +402,7 @@ __extension__ \
*(__o->next_free)++ = 0; \
(void) 0; })
#define obstack_1grow(OBSTACK,datum) \
# define obstack_1grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + 1 > __o->chunk_limit) \
@@ -419,7 +414,7 @@ __extension__ \
and that the data added so far to the current object
shares that much alignment. */
#define obstack_ptr_grow(OBSTACK,datum) \
# define obstack_ptr_grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
@@ -427,7 +422,7 @@ __extension__ \
*((void **)__o->next_free)++ = ((void *)datum); \
(void) 0; })
#define obstack_int_grow(OBSTACK,datum) \
# define obstack_int_grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
@@ -435,10 +430,10 @@ __extension__ \
*((int *)__o->next_free)++ = ((int)datum); \
(void) 0; })
#define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
#define obstack_blank(OBSTACK,length) \
# define obstack_blank(OBSTACK,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
@@ -447,19 +442,19 @@ __extension__ \
__o->next_free += __len; \
(void) 0; })
#define obstack_alloc(OBSTACK,length) \
# define obstack_alloc(OBSTACK,length) \
__extension__ \
({ struct obstack *__h = (OBSTACK); \
obstack_blank (__h, (length)); \
obstack_finish (__h); })
#define obstack_copy(OBSTACK,where,length) \
# define obstack_copy(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__h = (OBSTACK); \
obstack_grow (__h, (where), (length)); \
obstack_finish (__h); })
#define obstack_copy0(OBSTACK,where,length) \
# define obstack_copy0(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__h = (OBSTACK); \
obstack_grow0 (__h, (where), (length)); \
@@ -467,7 +462,7 @@ __extension__ \
/* The local variable is named __o1 to avoid a name conflict
when obstack_blank is called. */
#define obstack_finish(OBSTACK) \
# define obstack_finish(OBSTACK) \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
void *value; \
@@ -483,23 +478,23 @@ __extension__ \
__o1->object_base = __o1->next_free; \
value; })
#define obstack_free(OBSTACK, OBJ) \
# define obstack_free(OBSTACK, OBJ) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
void *__obj = (OBJ); \
if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \
__o->next_free = __o->object_base = __obj; \
__o->next_free = __o->object_base = (char *)__obj; \
else (obstack_free) (__o, __obj); })
#else /* not __GNUC__ or not __STDC__ */
#define obstack_object_size(h) \
# define obstack_object_size(h) \
(unsigned) ((h)->next_free - (h)->object_base)
#define obstack_room(h) \
# define obstack_room(h) \
(unsigned) ((h)->chunk_limit - (h)->next_free)
#define obstack_empty_p(h) \
# define obstack_empty_p(h) \
((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
/* Note that the call to _obstack_newchunk is enclosed in (..., 0)
@@ -508,19 +503,19 @@ __extension__ \
Casting the third operand to void was tried before,
but some compilers won't accept it. */
#define obstack_make_room(h,length) \
# define obstack_make_room(h,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
#define obstack_grow(h,where,length) \
# define obstack_grow(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
_obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
(h)->next_free += (h)->temp)
#define obstack_grow0(h,where,length) \
# define obstack_grow0(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \
@@ -528,40 +523,40 @@ __extension__ \
(h)->next_free += (h)->temp, \
*((h)->next_free)++ = 0)
#define obstack_1grow(h,datum) \
# define obstack_1grow(h,datum) \
( (((h)->next_free + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), 1), 0) : 0), \
(*((h)->next_free)++ = (datum)))
#define obstack_ptr_grow(h,datum) \
# define obstack_ptr_grow(h,datum) \
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
(*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
#define obstack_int_grow(h,datum) \
# define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
(*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
#define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
#define obstack_blank(h,length) \
# define obstack_blank(h,length) \
( (h)->temp = (length), \
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
((h)->next_free += (h)->temp))
#define obstack_alloc(h,length) \
# define obstack_alloc(h,length) \
(obstack_blank ((h), (length)), obstack_finish ((h)))
#define obstack_copy(h,where,length) \
# define obstack_copy(h,where,length) \
(obstack_grow ((h), (where), (length)), obstack_finish ((h)))
#define obstack_copy0(h,where,length) \
# define obstack_copy0(h,where,length) \
(obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
#define obstack_finish(h) \
# define obstack_finish(h) \
( ((h)->next_free == (h)->object_base \
? (((h)->maybe_empty_object = 1), 0) \
: 0), \
@@ -575,21 +570,21 @@ __extension__ \
(h)->object_base = (h)->next_free, \
__INT_TO_PTR ((h)->temp))
#if defined (__STDC__) && __STDC__
#define obstack_free(h,obj) \
# if defined __STDC__ && __STDC__
# define obstack_free(h,obj) \
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
? (int) ((h)->next_free = (h)->object_base \
= (h)->temp + (char *) (h)->chunk) \
: (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
#else
#define obstack_free(h,obj) \
# else
# define obstack_free(h,obj) \
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
? (int) ((h)->next_free = (h)->object_base \
= (h)->temp + (char *) (h)->chunk) \
: (_obstack_free ((h), (h)->temp + (char *) (h)->chunk), 0)))
#endif
# endif
#endif /* not __GNUC__ or not __STDC__ */

View File

@@ -86,10 +86,13 @@ path_concat (const char *dir, const char *base, char **base_in_result)
p = mempcpy (p_concat, dir, dir_len);
if (ISSLASH (*(p - 1)) && ISSLASH(*base))
--p;
else if (!ISSLASH (*(p - 1)) && !ISSLASH(*base))
*p++ = DIRECTORY_SEPARATOR;
if (dir_len > 0)
{
if (ISSLASH (*(p - 1)) && ISSLASH(*base))
--p;
else if (!ISSLASH (*(p - 1)) && !ISSLASH(*base))
*p++ = DIRECTORY_SEPARATOR;
}
if (base_in_result)
*base_in_result = p;

View File

@@ -1,5 +1,5 @@
/* Parse dates for touch and date.
Copyright (C) 1989, 1990, 1991, 1998 Free Software Foundation Inc.
Copyright (C) 1989, 1990, 1991, 1998, 2000 Free Software Foundation Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,6 +23,9 @@
#endif
#include <stdio.h>
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#include <sys/types.h>
#if HAVE_STRING_H
# include <string.h>

25
lib/quote.c Normal file
View File

@@ -0,0 +1,25 @@
/* Written by Paul Eggert <eggert@twinsun.com> */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <quotearg.h>
#include <quote.h>
/* Return an unambiguous printable representated, allocated in slot N,
for NAME, suitable for diagnostics. */
char const *
quote_n (int n, char const *name)
{
return quotearg_n_style (n, locale_quoting_style, name);
}
/* Return an unambiguous printable representation of NAME, suitable
for diagnostics. */
char const *
quote (char const *name)
{
return quote_n (0, name);
}

12
lib/quote.h Normal file
View File

@@ -0,0 +1,12 @@
/* prototypes for quote.c */
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
char const *quote_n PARAMS ((int n, char const *name));
char const *quote PARAMS ((char const *name));

View File

@@ -33,6 +33,7 @@
#else
# define _(text) text
#endif
#define N_(text) text
#if HAVE_LIMITS_H
# include <limits.h>
@@ -58,31 +59,47 @@
# include <string.h>
#endif
#if HAVE_WCTYPE_H
# include <wctype.h>
#if HAVE_WCHAR_H
# include <wchar.h>
#endif
#if HAVE_MBRTOWC && HAVE_WCHAR_H
# include <wchar.h>
#if HAVE_MBRTOWC
size_t mbrtowc ();
# ifdef mbstate_t
# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
# define mbsinit(ps) 1
# endif
#else
# define iswprint(wc) 1
# define mbrtowc(pwc, s, n, ps) 1
/* Disable multibyte processing entirely. Since MB_CUR_MAX is 1, the
other macros are defined only for documentation and to satisfy C
syntax. */
# undef MB_CUR_MAX
# define MB_CUR_MAX 1
# define mbrtowc(pwc, s, n, ps) ((*(pwc) = *(s)) != 0)
# define mbsinit(ps) 1
# define mbstate_t int
# define iswprint(wc) ISPRINT ((unsigned char) (wc))
#endif
#ifndef iswprint
# if HAVE_WCTYPE_H
# include <wctype.h>
# endif
# if !defined iswprint && !HAVE_ISWPRINT
# define iswprint(wc) 1
# endif
#endif
#define INT_BITS (sizeof (int) * CHAR_BIT)
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
/* Undefine to protect against the definition in wctype.h of solaris2.6. */
# undef ISASCII
# define ISASCII(c) 1
# define IN_CTYPE_DOMAIN(c) 1
#else
# define ISASCII(c) isascii (c)
# define IN_CTYPE_DOMAIN(c) isascii(c)
#endif
/* Undefine to protect against the definition in wctype.h of solaris2.6. */
#undef ISPRINT
#define ISPRINT(c) (ISASCII (c) && isprint (c))
#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c))
struct quoting_options
{
@@ -91,8 +108,7 @@ struct quoting_options
/* Quote the characters indicated by this bit vector even if the
quoting style would not normally require them to be quoted. */
int quote_these_too[((UCHAR_MAX + 1) / INT_BITS
+ ((UCHAR_MAX + 1) % INT_BITS != 0))];
int quote_these_too[(UCHAR_MAX / INT_BITS) + 1];
};
/* Names of quoting styles. */
@@ -104,6 +120,7 @@ char const *const quoting_style_args[] =
"c",
"escape",
"locale",
"clocale",
0
};
@@ -115,7 +132,8 @@ enum quoting_style const quoting_style_vals[] =
shell_always_quoting_style,
c_quoting_style,
escape_quoting_style,
locale_quoting_style
locale_quoting_style,
clocale_quoting_style
};
/* The default quoting options. */
@@ -164,6 +182,17 @@ set_char_quoting (struct quoting_options *o, char c, int i)
return r;
}
/* MSGID approximates a quotation mark. Return its translation if it
has one; otherwise, return either it or "\"", depending on S. */
static char const *
gettext_quote (char const *msgid, enum quoting_style s)
{
char const *translation = _(msgid);
if (translation == msgid && s == clocale_quoting_style)
translation = "\"";
return translation;
}
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
argument ARG (of size ARGSIZE), using QUOTING_STYLE and the
non-quoting-style part of O to control quoting.
@@ -188,6 +217,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
char const *quote_string = 0;
size_t quote_string_len = 0;
int backslash_escapes = 0;
int unibyte_locale = MB_CUR_MAX == 1;
#define STORE(c) \
do \
@@ -212,11 +242,31 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
break;
case locale_quoting_style:
for (quote_string = _("`"); *quote_string; quote_string++)
STORE (*quote_string);
backslash_escapes = 1;
quote_string = _("'");
quote_string_len = strlen (quote_string);
case clocale_quoting_style:
{
/* Get translations for open and closing quotation marks.
The message catalog should translate "`" to a left
quotation mark suitable for the locale, and similarly for
"'". If the catalog has no translation,
locale_quoting_style quotes `like this', and
clocale_quoting_style quotes "like this".
For example, an American English Unicode locale should
translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
MARK). A British English Unicode locale should instead
translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. */
char const *left = gettext_quote (N_("`"), quoting_style);
char const *right = gettext_quote (N_("'"), quoting_style);
for (quote_string = left; *quote_string; quote_string++)
STORE (*quote_string);
backslash_escapes = 1;
quote_string = right;
quote_string_len = strlen (quote_string);
}
break;
case shell_always_quoting_style:
@@ -353,57 +403,59 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
we can't easily escape single characters within it. */
{
/* Length of multibyte sequence found so far. */
size_t m = 0;
size_t m;
int printable = 1;
mbstate_t mbstate;
memset (&mbstate, 0, sizeof mbstate);
int printable;
if (argsize == (size_t) -1)
argsize = strlen (arg);
do
if (unibyte_locale)
{
wchar_t w;
size_t bytes = mbrtowc (&w, &arg[i + m],
argsize - (i + m), &mbstate);
if (bytes == 0)
break;
else if (bytes == (size_t) -1)
{
printable = 0;
break;
}
else if (bytes == (size_t) -2)
{
printable = 0;
while (i + m < argsize && arg[i + m])
m++;
break;
}
else
{
if (! iswprint (w))
printable = 0;
m += bytes;
}
m = 1;
printable = ISPRINT (c);
}
while (! mbsinit (&mbstate));
if (m <= 1)
else
{
/* Escape a unibyte character like a multibyte
sequence if using backslash escapes, and if the
character is not printable. */
m = backslash_escapes && ! ISPRINT (c);
printable = 0;
mbstate_t mbstate;
memset (&mbstate, 0, sizeof mbstate);
m = 0;
printable = 1;
if (argsize == (size_t) -1)
argsize = strlen (arg);
do
{
wchar_t w;
size_t bytes = mbrtowc (&w, &arg[i + m],
argsize - (i + m), &mbstate);
if (bytes == 0)
break;
else if (bytes == (size_t) -1)
{
printable = 0;
break;
}
else if (bytes == (size_t) -2)
{
printable = 0;
while (i + m < argsize && arg[i + m])
m++;
break;
}
else
{
if (! iswprint (w))
printable = 0;
m += bytes;
}
}
while (! mbsinit (&mbstate));
}
if (m)
if (1 < m || (backslash_escapes && ! printable))
{
/* Output a multibyte sequence, or an escaped
unprintable unibyte character. */
size_t imax = i + m - 1;
size_t ilim = i + m;
for (;;)
{
@@ -414,7 +466,7 @@ quotearg_buffer_restyled (char *buffer, size_t buffersize,
STORE ('0' + ((c >> 3) & 7));
c = '0' + (c & 7);
}
if (i == imax)
if (ilim <= i + 1)
break;
STORE (c);
c = arg[++i];
@@ -471,18 +523,23 @@ quotearg_buffer (char *buffer, size_t buffersize,
OPTIONS specifies the 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. N is deliberately declared with type `int'
N must be nonnegative. N is deliberately declared with type "int"
to allow for future extensions (using negative values). */
static char *
quotearg_n_options (int n, char const *arg,
struct quoting_options const *options)
{
static unsigned int nslots;
static struct slotvec
/* 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];
static unsigned int nslots = 1;
struct slotvec
{
size_t size;
char *val;
} *slotvec;
};
static struct slotvec slotvec0 = {sizeof slot0, slot0};
static struct slotvec *slotvec = &slotvec0;
if (nslots <= n)
{
@@ -490,6 +547,11 @@ quotearg_n_options (int n, char const *arg,
size_t s = n1 * sizeof (struct slotvec);
if (! (0 < n1 && n1 == s / sizeof (struct slotvec)))
abort ();
if (slotvec == &slotvec0)
{
slotvec = (struct slotvec *) xmalloc (sizeof (struct slotvec));
*slotvec = slotvec0;
}
slotvec = (struct slotvec *) xrealloc (slotvec, s);
memset (slotvec + nslots, 0, (n1 - nslots) * sizeof (struct slotvec));
nslots = n;
@@ -503,7 +565,7 @@ quotearg_n_options (int n, char const *arg,
if (size <= qsize)
{
slotvec[n].size = size = qsize + 1;
slotvec[n].val = val = xrealloc (val, size);
slotvec[n].val = val = xrealloc (val == slot0 ? 0 : val, size);
quotearg_buffer (val, size, arg, (size_t) -1, options);
}

View File

@@ -1,5 +1,5 @@
/* quotearg.h - quote arguments for output
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,7 +25,8 @@ enum quoting_style
shell_always_quoting_style, /* --quoting-style=shell-always */
c_quoting_style, /* --quoting-style=c */
escape_quoting_style, /* --quoting-style=escape */
locale_quoting_style /* --quoting-style=locale */
locale_quoting_style, /* --quoting-style=locale */
clocale_quoting_style /* --quoting-style=clocale */
};
/* For now, --quoting-style=literal is the default, but this may change. */

View File

@@ -31,6 +31,10 @@
# include <sys/types.h>
# ifdef HAVE_UTMPX_H
# ifdef HAVE_UTMP_H
/* HPUX 10.20 needs utmp.h, for the definition of e.g., UTMP_FILE. */
# include <utmp.h>
# endif
# include <utmpx.h>
# define UTMP_STRUCT_NAME utmpx
# define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_tv.tv_sec)

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
/* Definitions for data structures and routines for the regular
expression library, version 0.12.
Copyright (C) 1985,89,90,91,92,93,95,96,97,98 Free Software Foundation, Inc.
Copyright (C) 1985,1989-1993,1995-1998, 2000 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.
@@ -221,13 +221,13 @@ extern reg_syntax_t re_syntax_options;
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
#define RE_SYNTAX_POSIX_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \
| RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
removed and RE_NO_BK_REFS is added. */
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
@@ -513,13 +513,31 @@ extern int re_exec _RE_ARGS ((const char *));
# endif
#endif
/* GCC 2.95 and later have "__restrict"; C99 compilers have
"restrict", and "configure" may have defined "restrict". */
#ifndef __restrict
# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
# if defined restrict || 199901L <= __STDC_VERSION__
# define __restrict restrict
# else
# define __restrict
# endif
# endif
#endif
/* For now unconditionally define __restrict_arr to expand to nothing.
Ideally we would have a test for the compiler which allows defining
it to restrict. */
#define __restrict_arr
/* POSIX compatibility. */
extern int regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern,
extern int regcomp _RE_ARGS ((regex_t *__restrict __preg,
const char *__restrict __pattern,
int __cflags));
extern int regexec _RE_ARGS ((const regex_t *__preg,
const char *__string, size_t __nmatch,
regmatch_t __pmatch[], int __eflags));
extern int regexec _RE_ARGS ((const regex_t *__restrict __preg,
const char *__restrict __string, size_t __nmatch,
regmatch_t __pmatch[__restrict_arr],
int __eflags));
extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg,
char *__errbuf, size_t __errbuf_size));

View File

@@ -36,9 +36,16 @@
extern int errno;
#endif
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#include "same.h"
#include "dirname.h"
#include "error.h"
#include "xalloc.h"
#if ENABLE_NLS
# include <libintl.h>
@@ -75,7 +82,7 @@ same_name (const char *source, const char *dest)
source_dirname = dir_name (source);
dest_dirname = dir_name (dest);
if (source_dirname == NULL || dest_dirname == NULL)
error (1, 0, _("virtual memory exhausted"));
xalloc_die ();
if (stat (source_dirname, &source_dir_stats))
{

View File

@@ -42,6 +42,10 @@
extern int errno;
#endif
#ifndef O_DIRECTORY
# define O_DIRECTORY 0
#endif
#include "save-cwd.h"
#include "error.h"
@@ -67,7 +71,7 @@ save_cwd (struct saved_cwd *cwd)
if (have_working_fchdir)
{
#if HAVE_FCHDIR
cwd->desc = open (".", O_RDONLY);
cwd->desc = open (".", O_RDONLY | O_DIRECTORY);
if (cwd->desc < 0)
{
error (0, errno, "cannot open current directory");

View File

@@ -23,16 +23,15 @@
#include <sys/types.h>
#if HAVE_UNISTD_H
# include <unistd.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#if HAVE_DIRENT_H
# 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
@@ -54,26 +53,25 @@
#ifdef STDC_HEADERS
# include <stdlib.h>
# include <string.h>
#else
char *malloc ();
char *realloc ();
#endif
#ifndef NULL
# define NULL 0
#endif
#ifndef stpcpy
char *stpcpy ();
#endif
#include "savedir.h"
#include "xalloc.h"
/* Return a freshly allocated string containing the filenames
in directory DIR, separated by '\0' characters;
the end is marked by two '\0' characters in a row.
NAME_SIZE is the number of bytes to initially allocate
for the string; it will be enlarged as needed.
Return NULL if DIR cannot be opened or if out of memory. */
Use NAME_SIZE == -1 if you do not know the size.
Return NULL (setting errno) if DIR cannot be opened, read, or closed. */
#ifndef NAME_SIZE_DEFAULT
# define NAME_SIZE_DEFAULT 512
#endif
char *
savedir (const char *dir, off_t name_size)
@@ -81,57 +79,58 @@ savedir (const char *dir, off_t name_size)
DIR *dirp;
struct dirent *dp;
char *name_space;
char *namep;
size_t allocated = name_size; /* Overflow is checked indirectly below. */
size_t used = 0;
int save_errno;
dirp = opendir (dir);
if (dirp == NULL)
return NULL;
/* Be sure name_size is at least `1' so there's room for
the final NUL byte. */
if (name_size <= 0)
name_size = 1;
/* Use the default if the size is not known. Be sure "allocated"
is at least `1' so there's room for the final NUL byte.
Do not simply test name_size <= 0, because the initialization
of "allocated" might have overflowed. */
if (name_size < 0 || allocated == 0)
allocated = NAME_SIZE_DEFAULT;
name_space = (char *) malloc (name_size);
if (name_space == NULL)
{
closedir (dirp);
return NULL;
}
namep = name_space;
name_space = xmalloc (allocated);
errno = 0;
while ((dp = readdir (dirp)) != NULL)
{
/* Skip "." and ".." (some NFS filesystems' directories lack them). */
if (dp->d_name[0] != '.'
|| (dp->d_name[1] != '\0'
&& (dp->d_name[1] != '.' || dp->d_name[2] != '\0')))
/* Skip "", ".", and "..". "" is returned by at least one buggy
implementation: Solaris 2.4 readdir on NFS filesystems. */
char const *entry = dp->d_name;
if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0')
{
off_t size_needed = (namep - name_space) + NAMLEN (dp) + 2;
if (size_needed > name_size)
size_t entry_size = strlen (entry) + 1;
if (used + entry_size < used)
xalloc_die ();
if (allocated <= used + entry_size)
{
char *new_name_space;
while (size_needed > name_size)
name_size += 1024;
new_name_space = realloc (name_space, name_size);
if (new_name_space == NULL)
do
{
closedir (dirp);
return NULL;
if (2 * allocated < allocated)
xalloc_die ();
allocated *= 2;
}
namep += new_name_space - name_space;
name_space = new_name_space;
while (allocated <= used + entry_size);
name_space = xrealloc (name_space, allocated);
}
namep = stpcpy (namep, dp->d_name) + 1;
memcpy (name_space + used, entry, entry_size);
used += entry_size;
}
}
*namep = '\0';
if (CLOSEDIR (dirp))
name_space[used] = '\0';
save_errno = errno;
if (CLOSEDIR (dirp) != 0)
save_errno = errno;
if (save_errno != 0)
{
free (name_space);
errno = save_errno;
return NULL;
}
return name_space;

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1995 Free Software Foundation, Inc.
/* Copyright (C) 1992, 1995, 2000 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
@@ -35,7 +35,7 @@ USA. */
#endif
#ifndef HAVE_GNU_LD
# define __environ environ
# define __environ environ
#endif
int

376
lib/sha.c Normal file
View File

@@ -0,0 +1,376 @@
/* sha.c - Functions to compute the SHA1 hash (message-digest) of files
or blocks of memory. Complies to the NIST specification FIPS-180-1.
Copyright (C) 2000 Scott G. Miller
Credits:
Robert Klep <robert@ilse.nl> -- Expansion function fix
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#if STDC_HEADERS || defined _LIBC
# include <stdlib.h>
# include <string.h>
#else
# ifndef HAVE_MEMCPY
# define memcpy(d, s, n) bcopy ((s), (d), (n))
# endif
#endif
#include "md5.h"
#include "sha.h"
/*
Not-swap is a macro that does an endian swap on architectures that are
big-endian, as SHA needs some data in a little-endian format
*/
#ifdef WORDS_BIGENDIAN
# define NOTSWAP(n) (n)
# define SWAP(n) \
(((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#else
# define NOTSWAP(n) \
(((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
# define SWAP(n) (n)
#endif
/* This array contains the bytes used to pad the buffer to the next
64-byte boundary. (RFC 1321, 3.1: Step 1) */
static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
/*
Takes a pointer to a 160 bit block of data (five 32 bit ints) and
intializes it to the start constants of the SHA1 algorithm. This
must be called before using hash in the call to sha_hash
*/
void
sha_init_ctx (struct sha_ctx *ctx)
{
ctx->A = 0x67452301;
ctx->B = 0xefcdab89;
ctx->C = 0x98badcfe;
ctx->D = 0x10325476;
ctx->E = 0xc3d2e1f0;
ctx->total[0] = ctx->total[1] = 0;
ctx->buflen = 0;
}
/* Put result from CTX in first 20 bytes following RESBUF. The result
must be in little endian byte order.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
void *
sha_read_ctx (const struct sha_ctx *ctx, void *resbuf)
{
((md5_uint32 *) resbuf)[0] = NOTSWAP (ctx->A);
((md5_uint32 *) resbuf)[1] = NOTSWAP (ctx->B);
((md5_uint32 *) resbuf)[2] = NOTSWAP (ctx->C);
((md5_uint32 *) resbuf)[3] = NOTSWAP (ctx->D);
((md5_uint32 *) resbuf)[4] = NOTSWAP (ctx->E);
return resbuf;
}
/* Process the remaining bytes in the internal buffer and the usual
prolog according to the standard and write the result to RESBUF.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
void *
sha_finish_ctx (struct sha_ctx *ctx, void *resbuf)
{
/* Take yet unprocessed bytes into account. */
md5_uint32 bytes = ctx->buflen;
size_t pad;
/* Now count remaining bytes. */
ctx->total[0] += bytes;
if (ctx->total[0] < bytes)
++ctx->total[1];
pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
memcpy (&ctx->buffer[bytes], fillbuf, pad);
/* Put the 64-bit file length in *bits* at the end of the buffer. */
*(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = NOTSWAP (ctx->total[0] << 3);
*(md5_uint32 *) &ctx->buffer[bytes + pad] = NOTSWAP ((ctx->total[1] << 3) |
(ctx->total[0] >> 29));
/* Process last bytes. */
sha_process_block (ctx->buffer, bytes + pad + 8, ctx);
return sha_read_ctx (ctx, resbuf);
}
/* Compute SHA1 message digest for bytes read from STREAM. The
resulting message digest number will be written into the 16 bytes
beginning at RESBLOCK. */
int
sha_stream (FILE *stream, void *resblock)
{
/* Important: BLOCKSIZE must be a multiple of 64. */
#define BLOCKSIZE 4096
struct sha_ctx ctx;
char buffer[BLOCKSIZE + 72];
size_t sum;
/* Initialize the computation context. */
sha_init_ctx (&ctx);
/* Iterate over full file contents. */
while (1)
{
/* We read the file in blocks of BLOCKSIZE bytes. One call of the
computation function processes the whole buffer so that with the
next round of the loop another block can be read. */
size_t n;
sum = 0;
/* Read block. Take care for partial reads. */
do
{
n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
sum += n;
}
while (sum < BLOCKSIZE && n != 0);
if (n == 0 && ferror (stream))
return 1;
/* If end of file is reached, end the loop. */
if (n == 0)
break;
/* Process buffer with BLOCKSIZE bytes. Note that
BLOCKSIZE % 64 == 0
*/
sha_process_block (buffer, BLOCKSIZE, &ctx);
}
/* Add the last bytes if necessary. */
if (sum > 0)
sha_process_bytes (buffer, sum, &ctx);
/* Construct result in desired memory. */
sha_finish_ctx (&ctx, resblock);
return 0;
}
/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
result is always in little endian byte order, so that a byte-wise
output yields to the wanted ASCII representation of the message
digest. */
void *
sha_buffer (const char *buffer, size_t len, void *resblock)
{
struct sha_ctx ctx;
/* Initialize the computation context. */
sha_init_ctx (&ctx);
/* Process whole buffer but last len % 64 bytes. */
sha_process_bytes (buffer, len, &ctx);
/* Put result in desired memory area. */
return sha_finish_ctx (&ctx, resblock);
}
void
sha_process_bytes (const void *buffer, size_t len, struct sha_ctx *ctx)
{
/* When we already have some bits in our internal buffer concatenate
both inputs first. */
if (ctx->buflen != 0)
{
size_t left_over = ctx->buflen;
size_t add = 128 - left_over > len ? len : 128 - left_over;
memcpy (&ctx->buffer[left_over], buffer, add);
ctx->buflen += add;
if (left_over + add > 64)
{
sha_process_block (ctx->buffer, (left_over + add) & ~63, ctx);
/* The regions in the following copy operation cannot overlap. */
memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
(left_over + add) & 63);
ctx->buflen = (left_over + add) & 63;
}
buffer = (const char *) buffer + add;
len -= add;
}
/* Process available complete blocks. */
if (len > 64)
{
sha_process_block (buffer, len & ~63, ctx);
buffer = (const char *) buffer + (len & ~63);
len &= 63;
}
/* Move remaining bytes in internal buffer. */
if (len > 0)
{
memcpy (ctx->buffer, buffer, len);
ctx->buflen = len;
}
}
/* --- Code below is the primary difference between md5.c and sha.c --- */
/* SHA1 round constants */
#define K1 0x5a827999L
#define K2 0x6ed9eba1L
#define K3 0x8f1bbcdcL
#define K4 0xca62c1d6L
/* Round functions. Note that F2 is the same as F4. */
#define F1(B,C,D) ( D ^ ( B & ( C ^ D ) ) )
#define F2(B,C,D) (B ^ C ^ D)
#define F3(B,C,D) ( ( B & C ) | ( D & ( B | C ) ) )
#define F4(B,C,D) (B ^ C ^ D)
/* Process LEN bytes of BUFFER, accumulating context into CTX.
It is assumed that LEN % 64 == 0.
Most of this code comes from GnuPG's cipher/sha1.c. */
void
sha_process_block (const void *buffer, size_t len, struct sha_ctx *ctx)
{
const md5_uint32 *words = buffer;
size_t nwords = len / sizeof (md5_uint32);
const md5_uint32 *endp = words + nwords;
md5_uint32 x[16];
md5_uint32 a = ctx->A;
md5_uint32 b = ctx->B;
md5_uint32 c = ctx->C;
md5_uint32 d = ctx->D;
md5_uint32 e = ctx->E;
/* First increment the byte count. RFC 1321 specifies the possible
length of the file up to 2^64 bits. Here we only compute the
number of bytes. Do a double word increment. */
ctx->total[0] += len;
if (ctx->total[0] < len)
++ctx->total[1];
#define M(I) ( tm = x[I&0x0f] ^ x[(I-14)&0x0f] \
^ x[(I-8)&0x0f] ^ x[(I-3)&0x0f] \
, (x[I&0x0f] = rol(tm, 1)) )
#define R(A,B,C,D,E,F,K,M) do { E += rol( A, 5 ) \
+ F( B, C, D ) \
+ K \
+ M; \
B = rol( B, 30 ); \
} while(0)
while (words < endp)
{
md5_uint32 tm;
int t;
/* FIXME: see sha1.c for a better implementation. */
for (t = 0; t < 16; t++)
{
x[t] = NOTSWAP (*words);
words++;
}
R( a, b, c, d, e, F1, K1, x[ 0] );
R( e, a, b, c, d, F1, K1, x[ 1] );
R( d, e, a, b, c, F1, K1, x[ 2] );
R( c, d, e, a, b, F1, K1, x[ 3] );
R( b, c, d, e, a, F1, K1, x[ 4] );
R( a, b, c, d, e, F1, K1, x[ 5] );
R( e, a, b, c, d, F1, K1, x[ 6] );
R( d, e, a, b, c, F1, K1, x[ 7] );
R( c, d, e, a, b, F1, K1, x[ 8] );
R( b, c, d, e, a, F1, K1, x[ 9] );
R( a, b, c, d, e, F1, K1, x[10] );
R( e, a, b, c, d, F1, K1, x[11] );
R( d, e, a, b, c, F1, K1, x[12] );
R( c, d, e, a, b, F1, K1, x[13] );
R( b, c, d, e, a, F1, K1, x[14] );
R( a, b, c, d, e, F1, K1, x[15] );
R( e, a, b, c, d, F1, K1, M(16) );
R( d, e, a, b, c, F1, K1, M(17) );
R( c, d, e, a, b, F1, K1, M(18) );
R( b, c, d, e, a, F1, K1, M(19) );
R( a, b, c, d, e, F2, K2, M(20) );
R( e, a, b, c, d, F2, K2, M(21) );
R( d, e, a, b, c, F2, K2, M(22) );
R( c, d, e, a, b, F2, K2, M(23) );
R( b, c, d, e, a, F2, K2, M(24) );
R( a, b, c, d, e, F2, K2, M(25) );
R( e, a, b, c, d, F2, K2, M(26) );
R( d, e, a, b, c, F2, K2, M(27) );
R( c, d, e, a, b, F2, K2, M(28) );
R( b, c, d, e, a, F2, K2, M(29) );
R( a, b, c, d, e, F2, K2, M(30) );
R( e, a, b, c, d, F2, K2, M(31) );
R( d, e, a, b, c, F2, K2, M(32) );
R( c, d, e, a, b, F2, K2, M(33) );
R( b, c, d, e, a, F2, K2, M(34) );
R( a, b, c, d, e, F2, K2, M(35) );
R( e, a, b, c, d, F2, K2, M(36) );
R( d, e, a, b, c, F2, K2, M(37) );
R( c, d, e, a, b, F2, K2, M(38) );
R( b, c, d, e, a, F2, K2, M(39) );
R( a, b, c, d, e, F3, K3, M(40) );
R( e, a, b, c, d, F3, K3, M(41) );
R( d, e, a, b, c, F3, K3, M(42) );
R( c, d, e, a, b, F3, K3, M(43) );
R( b, c, d, e, a, F3, K3, M(44) );
R( a, b, c, d, e, F3, K3, M(45) );
R( e, a, b, c, d, F3, K3, M(46) );
R( d, e, a, b, c, F3, K3, M(47) );
R( c, d, e, a, b, F3, K3, M(48) );
R( b, c, d, e, a, F3, K3, M(49) );
R( a, b, c, d, e, F3, K3, M(50) );
R( e, a, b, c, d, F3, K3, M(51) );
R( d, e, a, b, c, F3, K3, M(52) );
R( c, d, e, a, b, F3, K3, M(53) );
R( b, c, d, e, a, F3, K3, M(54) );
R( a, b, c, d, e, F3, K3, M(55) );
R( e, a, b, c, d, F3, K3, M(56) );
R( d, e, a, b, c, F3, K3, M(57) );
R( c, d, e, a, b, F3, K3, M(58) );
R( b, c, d, e, a, F3, K3, M(59) );
R( a, b, c, d, e, F4, K4, M(60) );
R( e, a, b, c, d, F4, K4, M(61) );
R( d, e, a, b, c, F4, K4, M(62) );
R( c, d, e, a, b, F4, K4, M(63) );
R( b, c, d, e, a, F4, K4, M(64) );
R( a, b, c, d, e, F4, K4, M(65) );
R( e, a, b, c, d, F4, K4, M(66) );
R( d, e, a, b, c, F4, K4, M(67) );
R( c, d, e, a, b, F4, K4, M(68) );
R( b, c, d, e, a, F4, K4, M(69) );
R( a, b, c, d, e, F4, K4, M(70) );
R( e, a, b, c, d, F4, K4, M(71) );
R( d, e, a, b, c, F4, K4, M(72) );
R( c, d, e, a, b, F4, K4, M(73) );
R( b, c, d, e, a, F4, K4, M(74) );
R( a, b, c, d, e, F4, K4, M(75) );
R( e, a, b, c, d, F4, K4, M(76) );
R( d, e, a, b, c, F4, K4, M(77) );
R( c, d, e, a, b, F4, K4, M(78) );
R( b, c, d, e, a, F4, K4, M(79) );
a = ctx->A += a;
b = ctx->B += b;
c = ctx->C += c;
d = ctx->D += d;
e = ctx->E += e;
}
}

75
lib/sha.h Normal file
View File

@@ -0,0 +1,75 @@
/* sha.h - Declaration of functions and datatypes for SHA1 sum computing
library functions.
Copyright (C) 1999, Scott G. Miller
*/
#ifndef _SHA_H
# define _SHA_H 1
# include <stdio.h>
# include "md5.h"
/* Structure to save state of computation between the single steps. */
struct sha_ctx
{
md5_uint32 A;
md5_uint32 B;
md5_uint32 C;
md5_uint32 D;
md5_uint32 E;
md5_uint32 total[2];
md5_uint32 buflen;
char buffer[128];
};
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is necessary that LEN is a multiple of 64!!! */
extern void sha_process_block __P ((const void *buffer, size_t len,
struct sha_ctx *ctx));
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is NOT required that LEN is a multiple of 64. */
extern void sha_process_bytes __P((const void *buffer, size_t len,
struct sha_ctx *ctx));
/* Initialize structure containing state of computation. */
extern void sha_init_ctx __P ((struct sha_ctx *ctx));
/* Process the remaining bytes in the buffer and put result from CTX
in first 16 bytes following RESBUF. The result is always in little
endian byte order, so that a byte-wise output yields to the wanted
ASCII representation of the message digest.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *sha_finish_ctx __P ((struct sha_ctx *ctx, void *resbuf));
/* Put result from CTX in first 16 bytes following RESBUF. The result is
always in little endian byte order, so that a byte-wise output yields
to the wanted ASCII representation of the message digest.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *sha_read_ctx __P ((const struct sha_ctx *ctx, void *resbuf));
/* Compute MD5 message digest for bytes read from STREAM. The
resulting message digest number will be written into the 16 bytes
beginning at RESBLOCK. */
extern int sha_stream __P ((FILE *stream, void *resblock));
/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
result is always in little endian byte order, so that a byte-wise
output yields to the wanted ASCII representation of the message
digest. */
extern void *sha_buffer __P ((const char *buffer, size_t len, void *resblock));
#endif

View File

@@ -98,8 +98,8 @@ extern char *tzname[];
# define L_(Str) L##Str
# define NLW(Sym) _NL_W##Sym
# define MEMCPY(d, s, n) wmemcpy (d, s, n)
# define STRLEN(s) wcslen (s)
# define MEMCPY(d, s, n) __wmemcpy (d, s, n)
# define STRLEN(s) __wcslen (s)
#else
# define CHAR_T char
@@ -457,8 +457,7 @@ static CHAR_T const month_name[][10] =
return _strftime_copytm (s, maxsize, format, &tmcopy ut_argument);
}
# undef my_strftime
# define my_strftime(S, Maxsize, Format, Tp) \
_strftime_copytm (S, Maxsize, Format, Tp)
# define my_strftime _strftime_copytm
#endif
@@ -752,6 +751,11 @@ my_strftime (s, maxsize, format, tp ut_argument)
case L_('b'):
case L_('h'): /* POSIX.2 extension. */
if (change_case)
{
to_uppcase = 1;
to_lowcase = 0;
}
if (modifier != 0)
goto bad_format;
#if defined _NL_CURRENT || !HAVE_STRFTIME
@@ -796,8 +800,10 @@ my_strftime (s, maxsize, format, tp ut_argument)
subformat:
{
CHAR_T *old_start = p;
size_t len = my_strftime (NULL, (size_t) -1, subfmt, tp);
add (len, my_strftime (p, maxsize - i, subfmt, tp));
size_t len = my_strftime (NULL, (size_t) -1, subfmt,
tp ut_argument);
add (len, my_strftime (p, maxsize - i, subfmt,
tp ut_argument));
if (to_uppcase)
while (old_start < p)
@@ -848,7 +854,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
if (era)
{
# ifdef COMPILE_WIDE
size_t len = wcslen (era->era_wname);
size_t len = __wcslen (era->era_wname);
cpy (len, era->era_wname);
# else
size_t len = strlen (era->era_name);

View File

@@ -1,21 +1,21 @@
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
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 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.
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. */
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"
@@ -24,22 +24,39 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include <sys/types.h>
#ifdef STDC_HEADERS
# include <string.h>
#if defined _LIBC || defined STDC_HEADERS
# include <stdlib.h>
# include <string.h>
#else
char *malloc ();
#endif
/* Duplicate S, returning an identical malloc'd string. */
#ifndef HAVE_DECL_STRNLEN
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRNLEN
size_t strnlen ();
#endif
#undef __strndup
#undef strndup
#ifndef weak_alias
# define __strndup strndup
#endif
char *
strndup (const char *s, size_t n)
__strndup (const char *s, size_t n)
{
char *new = malloc (n + 1);
size_t len = strnlen (s, n);
char *new = malloc (len + 1);
if (new == NULL)
return NULL;
new[n] = '\0';
return (char *) memcpy (new, s, n);
new[len] = '\0';
return (char *) memcpy (new, s, len);
}
#ifdef weak_alias
weak_alias (__strndup, strndup)
#endif

58
lib/strnlen.c Normal file
View File

@@ -0,0 +1,58 @@
/* Find the length of STRING, but scan at most MAXLEN characters.
Copyright (C) 1996, 1997, 1998, 2000 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 Library General Public License as
published by the Free Software Foundation; either version 2 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.
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. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
# include <memory.h>
# endif
# include <string.h>
#else
# include <strings.h>
#endif
#ifndef HAVE_DECL_MEMCHR
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_MEMCHR
char *memchr ();
#endif
#undef __strnlen
#undef strnlen
#ifndef weak_alias
# define __strnlen strnlen
#endif
/* Find the length of STRING, but scan at most MAXLEN characters.
If no '\0' terminator is found in that many characters, return MAXLEN. */
size_t
__strnlen (const char *string, size_t maxlen)
{
const char *end = memchr (string, '\0', maxlen);
return end ? end - string : maxlen;
}
#ifdef weak_alias
weak_alias (__strnlen, strnlen)
#endif

View File

@@ -121,7 +121,7 @@ print_unicode_char (FILE *stream, unsigned int code)
if (!initialized)
{
extern const char *locale_charset (void);
extern const char *locale_charset PARAMS ((void));
const char *charset = locale_charset ();
is_utf8 = (charset != NULL && !strcmp (charset, UTF8_NAME));

View File

@@ -40,6 +40,14 @@ char *alloca ();
#include <pwd.h>
#include <grp.h>
#if HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#if HAVE_STRING_H
# include <string.h>
#else
@@ -57,6 +65,9 @@ char *alloca ();
# include <unistd.h>
#endif
#include "xalloc.h"
#include "xstrtol.h"
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
@@ -79,6 +90,34 @@ struct group *getgrgid ();
# define endpwent() ((void) 0)
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
/* The extra casts work around common compiler bugs. */
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
/* The outer cast is needed to work around a bug in Cray C 5.0.3.0.
It is necessary at least when t == time_t. */
#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0))
#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t)))
#ifndef UID_T_MAX
# define UID_T_MAX TYPE_MAXIMUM (uid_t)
#endif
#ifndef GID_T_MAX
# define GID_T_MAX TYPE_MAXIMUM (gid_t)
#endif
/* MAXUID may come from limits.h or sys/params.h. */
#ifndef MAXUID
# define MAXUID UID_T_MAX
#endif
#ifndef MAXGID
# define MAXGID GID_T_MAX
#endif
/* Perform the equivalent of the statement `dest = strdup (src);',
but obtaining storage via alloca instead of from the heap. */
@@ -137,7 +176,6 @@ const char *
parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
char **username_arg, char **groupname_arg)
{
static const char *E_no_memory = N_("virtual memory exhausted");
static const char *E_invalid_user = N_("invalid user");
static const char *E_invalid_group = N_("invalid group");
static const char *E_bad_spec =
@@ -210,17 +248,20 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
{
if (!is_number (u))
error_msg = _(E_invalid_user);
error_msg = E_invalid_user;
else
{
int use_login_group;
use_login_group = (separator != NULL && g == NULL);
if (use_login_group)
error_msg = _(E_bad_spec);
error_msg = E_bad_spec;
else
{
/* FIXME: don't use atoi! */
*uid = atoi (u);
unsigned long int tmp_long;
if (xstrtoul (u, NULL, 0, &tmp_long, NULL) != LONGINT_OK
|| tmp_long > MAXUID)
return _(E_invalid_user);
*uid = tmp_long;
}
}
}
@@ -259,11 +300,14 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
if (grp == NULL)
{
if (!is_number (g))
error_msg = _(E_invalid_group);
error_msg = E_invalid_group;
else
{
/* FIXME: don't use atoi! */
*gid = atoi (g);
unsigned long int tmp_long;
if (xstrtoul (u, NULL, 0, &tmp_long, NULL) != LONGINT_OK
|| tmp_long > MAXGID)
return _(E_invalid_group);
*gid = tmp_long;
}
}
else
@@ -280,7 +324,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
{
*username_arg = strdup (u);
if (*username_arg == NULL)
error_msg = _(E_no_memory);
error_msg = xalloc_msg_memory_exhausted;
}
if (groupname != NULL && error_msg == NULL)
@@ -293,7 +337,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
free (*username_arg);
*username_arg = NULL;
}
error_msg = _(E_no_memory);
error_msg = xalloc_msg_memory_exhausted;
}
}
}
@@ -306,7 +350,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
goto retry;
}
return error_msg;
return _(error_msg);
}
#ifdef TEST

View File

@@ -1,5 +1,5 @@
/* Utility to help print --version output in a consistent format.
Copyright (C) 1999 Free Software Foundation, Inc.
Copyright (C) 1999, 2000 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
@@ -35,7 +35,7 @@
/* Default copyright goes to the FSF. */
char* version_etc_copyright =
N_("Copyright (C) 1999 Free Software Foundation, Inc.");
N_("Copyright (C) 2000 Free Software Foundation, Inc.");
/* Display the --version information the standard way.

View File

@@ -1,5 +1,5 @@
/* xalloc.h -- malloc with out-of-memory checking
Copyright (C) 1990-1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1990-1998, 1999, 2000 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,9 +46,9 @@ extern int xalloc_exit_failure;
extern void (*xalloc_fail_func) PARAMS ((void));
/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this
message must be non-NULL. It is translated via gettext.
The default value is "Memory exhausted". */
extern char *const xalloc_msg_memory_exhausted;
message is output. It is translated via gettext.
Its value is "memory exhausted". */
extern char const xalloc_msg_memory_exhausted[];
/* This function is always triggered when memory is exhausted. It is
in charge of honoring the three previous items. This is the

View File

@@ -1,5 +1,5 @@
/* xgetcwd.c -- return current directory with unlimited length
Copyright (C) 1992, 1996 Free Software Foundation, Inc.
Copyright (C) 1992, 1996, 2000 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
@@ -37,12 +37,9 @@ char *getwd ();
# define getcwd(Buf, Max) getwd (Buf)
#endif
/* Amount to increase buffer size by in each try. */
#define PATH_INCR 32
char *xmalloc ();
char *xrealloc ();
void free ();
extern void *xmalloc ();
extern char *xstrdup ();
extern void free ();
/* Return the current directory, newly allocated, arbitrarily long.
Return NULL and set errno on error. */
@@ -50,30 +47,39 @@ void free ();
char *
xgetcwd ()
{
char *cwd;
char *ret;
unsigned path_max;
char buf[1024];
errno = 0;
ret = getcwd (buf, sizeof (buf));
if (ret != NULL)
return xstrdup (buf);
if (errno != ERANGE)
return NULL;
path_max = (unsigned) PATH_MAX;
path_max += 2; /* The getcwd docs say to do this. */
cwd = xmalloc (path_max);
errno = 0;
while ((ret = getcwd (cwd, path_max)) == NULL && errno == ERANGE)
for (;;)
{
path_max += PATH_INCR;
cwd = xrealloc (cwd, path_max);
char *cwd = (char *) xmalloc (path_max);
errno = 0;
}
ret = getcwd (cwd, path_max);
if (ret != NULL)
return ret;
if (errno != ERANGE)
{
int save_errno = errno;
free (cwd);
errno = save_errno;
return NULL;
}
if (ret == NULL)
{
int save_errno = errno;
free (cwd);
errno = save_errno;
return NULL;
path_max += path_max / 16;
path_max += 32;
}
return cwd;
}

View File

@@ -1,5 +1,5 @@
/* xgethostname.c -- return current hostname with unlimited length
Copyright (C) 1992, 1996 Free Software Foundation, Inc.
Copyright (C) 1992, 1996, 2000 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,6 +30,10 @@ extern int errno;
#include "error.h"
#ifndef ENAMETOOLONG
# define ENAMETOOLONG 9999
#endif
#ifndef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
@@ -47,28 +51,26 @@ xgethostname ()
{
char *hostname;
size_t size;
int err;
size = INITIAL_HOSTNAME_LENGTH;
hostname = xmalloc (size);
/* Use size + 1 here rather than size to work around the bug
in SunOS5.5's gethostname whereby it NUL-terminates HOSTNAME
even when the name is longer than the supplied buffer. */
hostname = xmalloc (size + 1);
while (1)
{
/* Use size - 2 here rather than size - 1 to work around the bug
in SunOS5.5's gethostname whereby it NUL-terminates HOSTNAME
even when the name is longer than the supplied buffer. */
int k = size - 2;
int k = size - 1;
int err;
errno = 0;
hostname[k] = '\0';
err = gethostname (hostname, size);
if (err == 0 && hostname[k] == '\0')
if (err >= 0 && hostname[k] == '\0')
break;
#ifdef ENAMETOOLONG
else if (err != 0 && errno != ENAMETOOLONG && errno != 0)
else if (err < 0 && errno != ENAMETOOLONG && errno != 0)
error (EXIT_FAILURE, errno, "gethostname");
#endif
size *= 2;
hostname = xrealloc (hostname, size);
hostname = xrealloc (hostname, size + 1);
}
return hostname;

View File

@@ -1,5 +1,5 @@
/* xmalloc.c -- malloc with out of memory checking
Copyright (C) 1990-1997, 98, 99 Free Software Foundation, Inc.
Copyright (C) 1990-1999, 2000 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
@@ -63,7 +63,7 @@ void (*xalloc_fail_func) PARAMS ((void)) = 0;
/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message
before exiting when memory is exhausted. Goes through gettext. */
char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
char const xalloc_msg_memory_exhausted[] = N_("memory exhausted");
void
xalloc_die (void)
@@ -91,8 +91,7 @@ xmalloc (size_t n)
}
/* Change the size of an allocated block of memory P to N bytes,
with error checking.
If P is NULL, run xmalloc. */
with error checking. */
void *
xrealloc (void *p, size_t n)

View File

@@ -32,6 +32,10 @@ extern int errno;
#endif
@BEGIN_LSTAT_ONLY@
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#ifdef STAT_MACROS_BROKEN
# undef S_ISLNK
#endif
@@ -39,9 +43,16 @@ extern int errno;
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#ifndef HAVE_DECL_FREE
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_FREE
void free ();
#endif
char *xmalloc ();
/* lstat works different on Linux and Solaris systems. POSIX (see
/* lstat works differently on Linux and Solaris systems. POSIX (see
`pathname resolution' in the glossary) requires that programs like `ls'
take into consideration the fact that FILE has a trailing slash when
FILE is a symbolic link. On Linux systems, the lstat function already

View File

@@ -1,3 +1,343 @@
2000-10-29 Jim Meyering <meyering@lucent.com>
* fsusage.m4: s/AC_SHELL_IFELSE/AS_IFELSE/ to match autoconf renaming.
* ls-mntd-fs.m4: Likewise
2000-10-28 Jim Meyering <meyering@lucent.com>
* prereq.m4 (jm_PREREQ): Add jm_PREREQ_MEMCHR.
(jm_PREREQ_MEMCHR): New function.
2000-10-21 Jim Meyering <meyering@lucent.com>
* check-decl.m4 (jm_CHECK_DECLS): Also check for memrchr.
* prereq.m4 (jm_PREREQ_DIRNAME): New macro.
* jm-macros.m4 (AC_REPLACE_FUNCS): Add memrchr.
2000-09-18 Jim Meyering <meyering@lucent.com>
* getloadavg.m4 (AC_FUNC_GETLOADAVG): Restore the initial value of LIBS.
Otherwise, everyone ends up linking with -lelf for some configurations.
Reported by Mike Stone.
2000-08-26 Jim Meyering <meyering@lucent.com>
* jm-macros.m4: Use jm_FUNC_FPENDING.
* fpending.m4: New file.
2000-08-20 Jim Meyering <meyering@lucent.com>
* check-decl.m4: Include utmp.h `#if HAVE_UTMP_H', rather than
`#if !HAVE_UTMPX_H'. The latter would lose on systems with neither
utmp.h nor utmpx.h. Reported by Eli Zaretskii.
2000-08-11 J. David Anglin <dave@hiauly1.hia.nrc.ca>
Improve fileutils installation on systems where running
programs (like install) can't be unlinked.
* unlink-busy.m4 (jm_FUNC_UNLINK_BUSY_TEXT): New file/macro.
* jm-macros.m4: Use jm_FUNC_UNLINK_BUSY_TEXT.
2000-08-06 Paul Eggert <eggert@twinsun.com>
* m4/mbstate_t.m4 (AC_MBSTATE_T): Define mbstate_t to be int,
not char, for compatibility with glibc 2.1.3 strftime.c.
2000-07-23 Paul Eggert <eggert@twinsun.com>
* mbswidth.m4 (jm_PREREQ_MBSWIDTH): Check for wcwidth declaration.
2000-07-23 Jim Meyering <meyering@lucent.com>
* check-decl.m4 (jm_CHECK_DECLS): Check for declarations of these, too:
getgrgid, getpwuid, getuid.
2000-07-16 Bruno Haible <haible@clisp.cons.org>
* mbswidth.m4: New file.
* prereq.m4 (jm_PREREQ): Call jm_PREREQ_MBSWIDTH.
2000-07-14 Jim Meyering <meyering@lucent.com>
* xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Require jm_AC_TYPE_UINTMAX_T.
2000-07-10 Paul Eggert <eggert@twinsun.com>
From a suggestion by Bruno Haible.
* mbstate_t.m4 (AC_MBSTATE_T):
Renamed from AC_MBSTATE_T_OBJECT. All uses changed.
Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT
and mbstate_t, to a single-part test that simply defines mbstate_t.
* prereq.m4 (jm_PREREQ_QUOTEARG): s/AC_MBSTATE_T_OBJECT/AC_MBSTATE_T/.
2000-07-10 Jim Meyering <meyering@lucent.com>
* strerror_r.m4: Mirror the correction made in autoconf.
* gnu-source.m4: Output to confdefs.h directly.
Suggestion from Akim Demaille.
2000-07-09 Jim Meyering <meyering@lucent.com>
* jm-macros.m4 (jm_MACROS): Add a test to see if -lm is required
to link seq. If so, set SEQ_LIBM to -lm. From Bruno Haible.
* gnu-source.m4 (AC__GNU_SOURCE): New file/macro.
* jm-macros.m4 (jm_CHECK_ALL_TYPES): Require it.
2000-07-05 Bruno Haible <haible@clisp.cons.org>
* strerror_r.m4 (AC_FUNC_STRERROR_R): Pass a reasonably large buffer
to strerror_r.
Include <ctype.h> for use of isalpha.
2000-07-05 Paul Eggert <eggert@twinsun.com>
and Bruno Haible <haible@clisp.cons.org>
* mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Test for mbstate_t
only if the test for an object-type mbstate_t fails. This
prevents us from mistakenly reporting that mbstate_t is a
system object type after we "#define mbstate_t int" to work
around its lack.
2000-07-04 Jim Meyering <meyering@lucent.com>
* fsusage.m4 (jm_FILE_SYSTEM_USAGE): Use plain old `echo' instead
of the deprecated AC_CHECKING.
2000-07-03 Jim Meyering <meyering@lucent.com>
* check-decl.m4 (AC_CHECK_DECLS): Add strnlen.
2000-07-03 Paul Eggert <eggert@twinsun.com>
* mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13.
Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H.
2000-07-02 Jim Meyering <meyering@lucent.com>
* mbstate_t.m4: Also define mbstate_t, if necessary.
* chown.m4: Replace each use of AC_SUBST(LIBOBJS)/LIBOBJS=... with
AC_LIBOBJ(function_name).
* chown.m4: Likewise.
* fnmatch.m4: Likewise.
* ftruncate.m4: Likewise.
* getgroups.m4: Likewise.
* getline.m4: Likewise.
* group-member.m4: Likewise.
* jm-macros.m4: Likewise.
* lstat.m4: Likewise.
* malloc.m4: Likewise.
* memcmp.m4: Likewise.
* nanosleep.m4: Likewise.
* putenv.m4: Likewise.
* realloc.m4: Likewise.
* regex.m4: Likewise.
* stat.m4: Likewise.
* strftime.m4: Likewise.
2000-07-01 Jim Meyering <meyering@lucent.com>
* ls-mntd-fs.m4: Remove a `FIXME' comment and fix the associated
problem.
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Rename BeOS specific
macro from MOUNTED_NEXT_DEV to MOUNTED_FS_STAT_DEV.
2000-07-01 Jim Meyering <meyering@lucent.com>
* uptime.m4: Put double quotes around use of $cross_compiling.
2000-06-28 Jim Meyering <meyering@lucent.com>
* mbstate_t.m4: Use stdlib.h, not stdio.h. The latter is not included
by quotearg.c, for which we perform this test. From Bruno Haible.
2000-06-17 Bruno Haible <haible@clisp.cons.org>
* check-decl.m4 (_jm_DECL_HEADERS): Check for utmp.h as well.
* prereq.m4 (jm_PREREQ_READUTMP): Likewise. If either <utmp.h> or
<utmpx.h> exists, put readutmp.o into LIBOBJS.
2000-06-25 Jim Meyering <meyering@lucent.com>
* mbstate_t.m4: Include stdio.h before wchar.h to work around
Linux header bug when _XOPEN_SOURCE is defined to 500.
2000-06-24 Jim Meyering <meyering@lucent.com>
* strerror_r.m4: Revive this file -- to try out an experimental
version of AC_FUNC_STRERROR_R that may work even on BeOS, a system
for which strerror does return char*, but which lacks a conveniently
accessible declaration of the function. If the compile-test says
strerror_r doesn't work, then resort to a `run'-test that works on
BeOS and segfaults on DEC Unix.
2000-06-19 Paul Eggert <eggert@twinsun.com>
* mbstate_t.m4: New file, defining AC_MBSTATE_T_OBJECT.
* prereq.m4 (jm_PREREQ_QUOTEARG): Use it. Add check for iswprint.
2000-06-23 Jim Meyering <meyering@lucent.com>
* afs.m4: Add missing AC_MSG_RESULT.
Reported by Bruno Haible.
* fsusage.m4: s/AC_MSG_CHECKING/AC_CHECKING/.
Suggestion from Bruno Haible.
2000-06-21 Jim Meyering <meyering@lucent.com>
* jm-macros.m4 (AC_REPLACE_FUNCS): Add getpass.
2000-06-18 Jim Meyering <meyering@lucent.com>
* jm-macros.m4 (AC_REPLACE_FUNCS): Remove mkdir.
* link-follow.m4 (jm_AC_FUNC_LINK_FOLLOWS_SYMLINK): Change the
`checking whether...' message to be consistent with that of the
lstat test.
2000-06-16 Bruno Haible <haible@clisp.cons.org>
* glibc21.m4 (jm_GLIBC21): Define GLIBC21 for Makefiles, not for C.
2000-06-12 Jim Meyering <meyering@lucent.com>
* getloadavg.m4 (AM_FUNC_GETLOADAVG): Replace with AC_FUNC_GETLOADAVG
from autoconf, and tweak the latter to accept an optional argument.
* jm-macros.m4: s/AM_FUNC_GETLOADAVG/AC_FUNC_GETLOADAVG/, and supply
the optional argument, `lib'.
2000-06-08 Jim Meyering <meyering@lucent.com>
* largefile.m4: Remove file (now that it's part of autoconf).
2000-06-04 Paul Eggert <eggert@twinsun.com>
Rewrite largefile configuration so that we don't need to run
getconf and don't need AC_CANONICAL_HOST. [I'm leaving the use of
AC_CANONICAL_HOST in configure.in -- jmm]
* largefile.m4 (AC_SYS_LARGEFILE_FLAGS,
AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
(AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
(AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY.
All uses changed.
Instead of inspecting the output of getconf, try to compile the
test program without and with the macro definition.
(AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check
for getconf. Instead, check for the needed flags by compiling
test programs.
2000-06-03 Jim Meyering <meyering@lucent.com>
* prereq.m4 (jm_PREREQ_HUMAN): Use []-quoted list in AC_CHECK_DECLS,
now that autoconf requires that.
* jm-glibc-io.m4: Add a kludge to make autoheader emit the required
#undefs. E.g., #undef HAVE_DECL_FERROR_UNLOCKED.
Use []-quoted list in AC_CHECK_DECLS, now that autoconf requires that.
2000-05-26 Bruno Haible <haible@clisp.cons.org>
* glibc21.m4: New file.
* jm-macros.m4: (jm_MACROS): Call jm_GLIBC21.
2000-05-28 Jim Meyering <meyering@lucent.com>
* jm-macros.m4 (AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): Rename from
jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
* stat.m4: Likewise.
* lstat.m4: Likewise.
* lstat-slash.m4: Remove file (absorbed into autoconf).
* jm-macros.m4 (AC_FUNC_STRERROR_R): Rename from jm_FUNC_STRERROR_R.
* strerror_r.m4: Remove file (absorbed into autoconf).
2000-05-26 Jim Meyering <meyering@lucent.com>
* uptime.m4: Use `$cross_compiling', not `$ac_cv_prog_cc_cross'.
2000-05-24 Jim Meyering <meyering@lucent.com>
* prereq.m4: Use []-quoted list in AC_CHECK_MEMBERS, now that
autoconf requires that.
* lib-check.m4: Likewise.
* jm-macros.m4: Likewise.
* strftime.m4: Likewise.
* check-decl.m4 (jm_CHECK_DECLS): Use []-quoted list in AC_CHECK_DECLS,
now that autoconf requires that.
2000-05-22 Jim Meyering <meyering@lucent.com>
* stat.m4: Require jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
* lstat.m4: Likewise.
2000-05-20 Jim Meyering <meyering@lucent.com>
* prereq.m4 (jm_PREREQ_HUMAN): New macro.
(jm_PREREQ): Use it.
2000-05-09 Jim Meyering <meyering@lucent.com>
* gettext.m4: Rename this...
* libintl.m4: ...to this.
2000-05-06 Jim Meyering <meyering@lucent.com>
* jm-macros.m4 (AC_REPLACE_FUNCS): Add atexit.
(AC_REPLACE_FUNCS): Add strnlen.
* rmdir-errno.m4 (fetish_FUNC_RMDIR_NOTEMPTY): New macro and file.
* jm-macros.m4: Require fetish_FUNC_RMDIR_NOTEMPTY.
* nanosleep.m4: (jm_FUNC_NANOSLEEP): Save and restore LIBS around
AC_SEARCH_LIBS call for nanosleep.
(LIB_NANOSLEEP): Set and AC_SUBST.
2000-05-03 Paul Eggert <eggert@twinsun.com>
* largefile.m4 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to
be 500, instead of _GNU_SOURCE to be 1, to work around glibc
2.1.3 bug. This avoids a clash when files like regex.c define
_GNU_SOURCE.
2000-05-05 Jim Meyering <meyering@lucent.com>
* jm-macros.m4 (jm_MACROS): Save and restore LIBS around AC_SEARCH_LIBS
call for clock_gettime.
(LIB_CLOCK_GETTIME): Set and AC_SUBST.
* search-libs.m4: Update from autoconf.
su doesn't work on Solaris2.6.
* lib-check.m4: When checking for struct spwd.sp_pwdp, also include
<shadow.h>. Reported by Dragos Harabor.
2000-05-03 Jim Meyering <meyering@lucent.com>
* check-decl.m4 (AC_CHECK_DECLS): Add strndup.
2000-05-02 Paul Eggert <eggert@twinsun.com>
* largefile.m4 (AC_SYS_LARGEFILE): Define _GNU_SOURCE if
this is needed to make ftello visible (e.g. glibc 2.1.3). Use
compile-time test, rather than inspecting host and OS, to
decide whether to define _LARGEFILE_SOURCE.
2000-05-01 Jim Meyering <meyering@lucent.com>
* fsusage.m4: Use AC_MSG_CHECKING instead of obsolete AC_CHECKING.
* ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Add BeOS support.
Based on a patch from Bruno Haible.
2000-04-18 Jim Meyering <meyering@lucent.com>
* prereq.m4 (jm_PREREQ_GETPAGESIZE): New macro.

View File

@@ -13,14 +13,16 @@ d-ino.m4 \
d-type.m4 \
error.m4 \
fnmatch.m4 \
fpending.m4 \
fstypename.m4 \
fsusage.m4 \
ftruncate.m4 \
getgroups.m4 \
getline.m4 \
getloadavg.m4 \
gettext.m4 \
glibc.m4 \
glibc21.m4 \
gnu-source.m4 \
group-member.m4 \
iconv.m4 \
inttypes_h.m4 \
@@ -30,15 +32,16 @@ jm-macros.m4 \
jm-mktime.m4 \
jm-winsz1.m4 \
jm-winsz2.m4 \
largefile.m4 \
lchown.m4 \
lcmessage.m4 \
lib-check.m4 \
libintl.m4 \
link-follow.m4 \
ls-mntd-fs.m4 \
lstat-slash.m4 \
lstat.m4 \
malloc.m4 \
mbstate_t.m4 \
mbswidth.m4 \
memcmp.m4 \
nanosleep.m4 \
perl.m4 \
@@ -48,6 +51,7 @@ putenv.m4 \
readdir.m4 \
realloc.m4 \
regex.m4 \
rmdir-errno.m4 \
search-libs.m4 \
st_dm_mode.m4 \
st_mtim.m4 \
@@ -57,6 +61,7 @@ strftime.m4 \
timespec.m4 \
uintmax_t.m4 \
ulonglong.m4 \
unlink-busy.m4 \
uptime.m4 \
utimbuf.m4 \
utime.m4 \

View File

@@ -1,6 +1,7 @@
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Copyright (C) 1994, 1995-9, 2000 Free Software Foundation, Inc.
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000
# 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.
@@ -31,8 +32,6 @@ mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -75,8 +74,8 @@ DEPDIR = @DEPDIR@
DF_PROG = @DF_PROG@
FESETROUND_LIBM = @FESETROUND_LIBM@
GENCAT = @GENCAT@
GETCONF = @GETCONF@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GLIBC21 = @GLIBC21@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
@@ -90,7 +89,9 @@ INTLOBJS = @INTLOBJS@
KMEM_GROUP = @KMEM_GROUP@
LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
LIB_CRYPT = @LIB_CRYPT@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
MAKEINFO = @MAKEINFO@
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
@@ -104,6 +105,7 @@ POFILES = @POFILES@
POSUB = @POSUB@
POW_LIBM = @POW_LIBM@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SQRT_LIBM = @SQRT_LIBM@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
@@ -126,14 +128,16 @@ d-ino.m4 \
d-type.m4 \
error.m4 \
fnmatch.m4 \
fpending.m4 \
fstypename.m4 \
fsusage.m4 \
ftruncate.m4 \
getgroups.m4 \
getline.m4 \
getloadavg.m4 \
gettext.m4 \
glibc.m4 \
glibc21.m4 \
gnu-source.m4 \
group-member.m4 \
iconv.m4 \
inttypes_h.m4 \
@@ -143,15 +147,16 @@ jm-macros.m4 \
jm-mktime.m4 \
jm-winsz1.m4 \
jm-winsz2.m4 \
largefile.m4 \
lchown.m4 \
lcmessage.m4 \
lib-check.m4 \
libintl.m4 \
link-follow.m4 \
ls-mntd-fs.m4 \
lstat-slash.m4 \
lstat.m4 \
malloc.m4 \
mbstate_t.m4 \
mbswidth.m4 \
memcmp.m4 \
nanosleep.m4 \
perl.m4 \
@@ -161,6 +166,7 @@ putenv.m4 \
readdir.m4 \
realloc.m4 \
regex.m4 \
rmdir-errno.m4 \
search-libs.m4 \
st_dm_mode.m4 \
st_mtim.m4 \
@@ -170,6 +176,7 @@ strftime.m4 \
timespec.m4 \
uintmax_t.m4 \
ulonglong.m4 \
unlink-busy.m4 \
uptime.m4 \
utimbuf.m4 \
utime.m4 \

View File

@@ -1,7 +1,12 @@
#serial 1
#serial 3
AC_DEFUN(jm_AFS,
AC_CHECKING(for AFS)
test -d /afs \
&& AC_DEFINE(AFS, 1, [Define if you have the Andrew File System.])
AC_MSG_CHECKING(for AFS)
if test -d /afs; then
AC_DEFINE(AFS, 1, [Define if you have the Andrew File System.])
ac_result=yes
else
ac_result=no
fi
AC_MSG_RESULT($ac_result)
)

View File

@@ -1,4 +1,4 @@
#serial 10
#serial 16
dnl This is just a wrapper function to encapsulate this kludge.
dnl Putting it in a separate file like this helps share it between
@@ -38,27 +38,33 @@ AC_DEFUN(jm_CHECK_DECLS,
# endif
#endif
#if !HAVE_UTMPX_H
#if HAVE_UTMP_H
# include <utmp.h>
#endif
'
AC_CHECK_DECLS((
AC_CHECK_DECLS([
free,
getenv,
geteuid,
getgrgid,
getlogin,
getpwuid,
getuid,
getutent,
lseek,
malloc,
memchr,
memrchr,
nanosleep,
realloc,
stpcpy,
strndup,
strnlen,
strstr,
strtoul,
strtoull,
ttyname), , , $headers)
ttyname], , , $headers)
])
dnl FIXME: when autoconf has support for it.
@@ -67,5 +73,5 @@ AC_DEFUN(_jm_DECL_HEADERS,
[
AC_REQUIRE([AC_HEADER_STDC])
AC_CHECK_HEADERS(memory.h string.h strings.h stdlib.h unistd.h sys/time.h \
utmpx.h)
utmp.h utmpx.h)
])

View File

@@ -1,4 +1,4 @@
#serial 4
#serial 5
dnl From Jim Meyering.
dnl Determine whether chown accepts arguments of -1 for uid and gid.
@@ -42,8 +42,7 @@ AC_DEFUN(jm_FUNC_CHOWN,
jm_cv_func_working_chown=no)
])
if test $jm_cv_func_working_chown = no; then
AC_SUBST(LIBOBJS)
LIBOBJS="$LIBOBJS chown.$ac_objext"
AC_LIBOBJ(chown)
AC_DEFINE_UNQUOTED(chown, rpl_chown,
[Define to rpl_chown if the replacement function should be used.])
fi

View File

@@ -1,4 +1,4 @@
#serial 2
#serial 3
dnl Determine whether to add fnmatch.o to LIBOBJS and to
dnl define fnmatch to rpl_fnmatch.
@@ -10,8 +10,7 @@ AC_DEFUN(jm_FUNC_FNMATCH,
AC_FUNC_FNMATCH
if test $ac_cv_func_fnmatch_works = no \
&& test $ac_cv_gnu_library = no; then
AC_SUBST(LIBOBJS)
LIBOBJS="$LIBOBJS fnmatch.$ac_objext"
AC_LIBOBJ(fnmatch)
AC_DEFINE_UNQUOTED(fnmatch, rpl_fnmatch,
[Define to rpl_fnmatch if the replacement function should be used.])
fi

75
m4/fpending.m4 Normal file
View File

@@ -0,0 +1,75 @@
#serial 1
dnl From Jim Meyering
dnl Using code from emacs, based on suggestions from Paul Eggert
dnl and Ulrich Drepper.
dnl Find out how to determine the number of pending output bytes on a stream.
dnl glibc (2.1.93 and newer) and Solaris provide __fpending. On other systems,
dnl we have to grub around in the FILE struct.
AC_DEFUN(jm_FUNC_FPENDING,
[
AC_CHECK_HEADERS(stdio_ext.h)
AC_REPLACE_FUNCS([__fpending])
fp_headers='
# if HAVE_STDIO_EXT_H
# include <stdio_ext.h>
# endif
'
AC_CHECK_DECLS([__fpending], , , $fp_headers)
if test $ac_cv_func___fpending = no; then
AC_CACHE_CHECK(
[how to determine the number of pending output bytes on a stream],
ac_cv_sys_pending_output_n_bytes,
[
fp_save_DEFS=$DEFS
for ac_expr in \
\
'# glibc2' \
'fp->_IO_write_ptr - fp->_IO_write_base' \
\
'# traditional Unix' \
'fp->_ptr - fp->_base' \
\
'# BSD' \
'fp->_p - fp->_bf._base' \
\
'# SCO, Unixware' \
'fp->__ptr - fp->__base' \
\
'# old glibc?' \
'fp->__bufp - fp->__buffer' \
\
'# old glibc iostream?' \
'fp->_pptr - fp->_pbase' \
\
'# VMS' \
'(*fp)->_ptr - (*fp)->_base' \
\
'# e.g., DGUX R4.11; the info is not available' \
1 \
; do
# Skip each embedded comment.
case "$ac_expr" in '#'*) continue;; esac
DEFS="$DEFS -DPENDING_OUTPUT_N_BYTES=$ac_expr"
AC_TRY_COMPILE(
[#include <stdio.h>
],
[FILE *fp = stdin; (void) ($ac_expr);],
fp_done=yes
)
DEFS=$fp_save_DEFS
test "$fp_done" = yes && break
done
ac_cv_sys_pending_output_n_bytes=$ac_expr
]
)
AC_DEFINE_UNQUOTED(PENDING_OUTPUT_N_BYTES,
$ac_cv_sys_pending_output_n_bytes,
[the number of pending output bytes on stream `fp'])
fi
])

View File

@@ -1,4 +1,4 @@
#serial 1
#serial 4
# From fileutils/configure.in
@@ -11,7 +11,7 @@
AC_DEFUN(jm_FILE_SYSTEM_USAGE,
[
AC_CHECKING(how to get filesystem space usage)
echo "checking how to get filesystem space usage..."
ac_fsusage_space=no
# Perform only the link test since it seems there are no variants of the
@@ -187,6 +187,6 @@ AC_TRY_CPP([#include <sys/filsys.h>],
ac_fsusage_space=yes)
fi
AC_SHELL_IFELSE([test $ac_fsusage_space = yes], [$1], [$2])dnl
AS_IFELSE([test $ac_fsusage_space = yes], [$1], [$2])dnl
])

View File

@@ -1,4 +1,4 @@
#serial 1
#serial 2
# See if we need to emulate a missing ftruncate function using fcntl.
@@ -21,7 +21,7 @@ AC_DEFUN(jm_FUNC_FTRUNCATE,
fu_cv_sys_ftruncate_emulation=no)])
AC_MSG_RESULT($fu_cv_sys_ftruncate_emulation)
if test $fu_cv_sys_ftruncate_emulation = yes; then
LIBOBJS="$LIBOBJS ftruncate.$ac_objext"
AC_LIBOBJ(ftruncate)
fi
fi
])

View File

@@ -1,4 +1,4 @@
#serial 3
#serial 4
dnl From Jim Meyering.
dnl
@@ -38,8 +38,7 @@ AC_DEFUN(jm_FUNC_GETGROUPS,
jm_cv_func_working_getgroups=no)
])
if test $jm_cv_func_working_getgroups = no; then
AC_SUBST(LIBOBJS)
LIBOBJS="$LIBOBJS getgroups.$ac_objext"
AC_LIBOBJ(getgroups)
AC_DEFINE_UNQUOTED(getgroups, rpl_getgroups,
[Define as rpl_getgroups if getgroups doesn't work right.])
fi

View File

@@ -1,4 +1,4 @@
#serial 3
#serial 4
dnl See if there's a working, system-supplied version of the getline function.
dnl We can't just do AC_REPLACE_FUNCS(getline) because some systems
@@ -39,7 +39,6 @@ AC_DEFUN(AM_FUNC_GETLINE,
fi
if test $am_cv_func_working_getline = no; then
LIBOBJS="$LIBOBJS getline.$ac_objext"
AC_SUBST(LIBOBJS)dnl
AC_LIBOBJ(getline)
fi
])

View File

@@ -1,22 +1,45 @@
#serial 6
#serial 7
AC_DEFUN(AM_FUNC_GETLOADAVG,
# A replacement for autoconf's macro by the same name. This version
# accepts an optional argument specifying the name of the $srcdir-relative
# directory in which the file getloadavg.c may be found. It is unusual
# (but justified, imho) that this file is required at ./configure time.
undefine([AC_FUNC_GETLOADAVG])
# AC_FUNC_GETLOADAVG
# ------------------
AC_DEFUN([AC_FUNC_GETLOADAVG],
[ac_have_func=no # yes means we've found a way to get the load average.
am_cv_saved_LIBS="$LIBS"
# By default, expect to find getloadavg.c in $srcdir/.
ac_lib_dir_getloadavg=$srcdir
# But if there's an argument, DIR, expect to find getloadavg.c in $srcdir/DIR.
ifval([$1], [ac_lib_dir_getloadavg=$srcdir/$1])
# Make sure getloadavg.c is where it belongs, at ./configure-time.
test -f $ac_lib_dir_getloadavg/getloadavg.c \
|| AC_MSG_ERROR([getloadavg.c is not in $ac_lib_dir_getloadavg])
# FIXME: Add an autoconf-time test, too?
ac_save_LIBS=$LIBS
# Check for getloadavg, but be sure not to touch the cache variable.
(AC_CHECK_FUNC(getloadavg, exit 0, exit 1)) && ac_have_func=yes
# On HPUX9, an unprivileged user can get load averages through this function.
AC_CHECK_FUNCS(pstat_getdynamic)
# Solaris has libkstat which does not require root.
AC_CHECK_LIB(kstat, kstat_open)
if test $ac_cv_lib_kstat_kstat_open = yes ; then ac_have_func=yes ; fi
test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes
# Some systems with -lutil have (and need) -lkvm as well, some do not.
# On Solaris, -lkvm requires nlist from -lelf, so check that first
# to get the right answer into the cache.
# For kstat on solaris, we need libelf to force the definition of SVR4 below.
AC_CHECK_LIB(elf, elf_begin, LIBS="-lelf $LIBS")
if test $ac_have_func = no; then
AC_CHECK_LIB(elf, elf_begin, LIBS="-lelf $LIBS")
fi
if test $ac_have_func = no; then
AC_CHECK_LIB(kvm, kvm_open, LIBS="-lkvm $LIBS")
# Check for the 4.4BSD definition of getloadavg.
@@ -27,75 +50,32 @@ fi
if test $ac_have_func = no; then
# There is a commonly available library for RS/6000 AIX.
# Since it is not a standard part of AIX, it might be installed locally.
ac_save_LIBS="$LIBS"
ac_getloadavg_LIBS=$LIBS
LIBS="-L/usr/local/lib $LIBS"
AC_CHECK_LIB(getloadavg, getloadavg,
LIBS="-lgetloadavg $LIBS", LIBS="$ac_save_LIBS")
[LIBS="-lgetloadavg $LIBS"], [LIBS=$ac_getloadavg_LIBS])
fi
# Make sure it is really in the library, if we think we found it.
AC_REPLACE_FUNCS(getloadavg)
if test $ac_cv_func_getloadavg = yes; then
AC_DEFINE(HAVE_GETLOADAVG, 1, [FIXME])
ac_have_func=yes
else
AC_DEFINE(C_GETLOADAVG, 1, [Define if using getloadavg.c.])
# Figure out what our getloadavg.c needs.
ac_have_func=no
AC_CHECK_HEADER(sys/dg_sys_info.h,
[ac_have_func=yes; AC_DEFINE(DGUX, 1, [FIXME])
AC_CHECK_LIB(dgc, dg_sys_info)])
AC_CHECK_HEADERS(locale.h)
AC_CHECK_FUNCS(setlocale)
# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
# Irix 4.0.5F has the header but not the library.
if test $ac_have_func = no && test $ac_cv_lib_elf_elf_begin = yes; then
ac_have_func=yes; AC_DEFINE(SVR4, 1, [FIXME])
fi
if test $ac_have_func = no; then
AC_CHECK_HEADER(inq_stats/cpustats.h,
[ac_have_func=yes; AC_DEFINE(UMAX, 1, [FIXME])
AC_DEFINE(UMAX4_3, 1, [FIXME])])
fi
if test $ac_have_func = no; then
AC_CHECK_HEADER(sys/cpustats.h,
[ac_have_func=yes; AC_DEFINE(UMAX, 1, [FIXME])])
fi
if test $ac_have_func = no; then
AC_CHECK_HEADERS(mach/mach.h)
fi
AC_CHECK_HEADER(nlist.h,
[AC_DEFINE(NLIST_STRUCT, 1, [FIXME])
AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
[AC_TRY_COMPILE([#include <nlist.h>],
[struct nlist n; n.n_un.n_name = 0;],
ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
if test $ac_cv_struct_nlist_n_un = yes; then
AC_DEFINE(NLIST_NAME_UNION, 1, [FIXME])
fi
])dnl
fi # Do not have getloadavg in system libraries.
# Make sure it is really in the library, if we think we found it,
# otherwise set up the replacement function.
AC_CHECK_FUNCS(getloadavg, [],
[_AC_LIBOBJ_GETLOADAVG])
# Some definitions of getloadavg require that the program be installed setgid.
dnl FIXME Don't hardwire the path of getloadavg.c in the top-level directory.
AC_CACHE_CHECK(whether getloadavg requires setgid,
ac_cv_func_getloadavg_setgid,
ac_cv_func_getloadavg_setgid,
[AC_EGREP_CPP([Yowza Am I SETGID yet],
[#include "$srcdir/lib/getloadavg.c"
[#include "$ac_lib_dir_getloadavg/getloadavg.c"
#ifdef LDAV_PRIVILEGED
Yowza Am I SETGID yet
#endif],
ac_cv_func_getloadavg_setgid=yes, ac_cv_func_getloadavg_setgid=no)])
@%:@endif],
ac_cv_func_getloadavg_setgid=yes,
ac_cv_func_getloadavg_setgid=no)])
if test $ac_cv_func_getloadavg_setgid = yes; then
NEED_SETGID=true; AC_DEFINE(GETLOADAVG_PRIVILEGED, 1, [FIXME])
NEED_SETGID=true
AC_DEFINE(GETLOADAVG_PRIVILEGED, 1,
[Define if the `getloadavg' function needs to be run setuid
or setgid.])
else
NEED_SETGID=false
fi
@@ -103,25 +83,23 @@ AC_SUBST(NEED_SETGID)dnl
if test $ac_cv_func_getloadavg_setgid = yes; then
AC_CACHE_CHECK(group of /dev/kmem, ac_cv_group_kmem,
[ # On Solaris, /dev/kmem is a symlink. Get info on the real file.
[ # On Solaris, /dev/kmem is a symlink. Get info on the real file.
ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
# If we got an error (system does not support symlinks), try without -L.
test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
ac_cv_group_kmem=`echo $ac_ls_output \
| sed -ne 's/[ ][ ]*/ /g;
| sed -ne ['s/[ ][ ]*/ /g;
s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/;
/ /s/.* //;p;'`
]
)
KMEM_GROUP=$ac_cv_group_kmem
fi
AC_SUBST(KMEM_GROUP)dnl
if test x = "x$am_cv_saved_LIBS"; then
GETLOADAVG_LIBS="$LIBS"
else
GETLOADAVG_LIBS=`echo "$LIBS"|sed "s!$am_cv_saved_LIBS!!"`
fi
AC_SUBST(GETLOADAVG_LIBS)dnl
LIBS="$am_cv_saved_LIBS"
/ /s/.* //;p;']`
])
AC_SUBST(KMEM_GROUP, $ac_cv_group_kmem)dnl
fi
if test "x$ac_save_LIBS" = x; then
GETLOADAVG_LIBS=$LIBS
else
GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$ac_save_LIBS!!"`
fi
LIBS=$ac_save_LIBS
AC_SUBST(GETLOADAVG_LIBS)dnl
])# AC_FUNC_GETLOADAVG

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