Compare commits

..

3331 Commits

Author SHA1 Message Date
Jim Meyering
007f495c2f *** empty log message *** 1999-04-25 04:38:15 +00:00
Jim Meyering
0de4165e66 *** empty log message *** 1999-04-24 21:38:27 +00:00
Jim Meyering
f90a5e94b8 (print_entry): Use #if', not #ifdef HAVE_UT_HOST'. 1999-04-24 21:29:22 +00:00
Jim Meyering
88fc9ef946 *** empty log message *** 1999-04-24 13:14:25 +00:00
Jim Meyering
fc6db4f55a *** empty log message *** 1999-04-24 13:14:11 +00:00
Jim Meyering
a279b3a84b . 1999-04-24 13:00:16 +00:00
Jim Meyering
a56886d93d *** empty log message *** 1999-04-24 12:59:26 +00:00
Jim Meyering
82105f5876 *** empty log message *** 1999-04-24 12:58:07 +00:00
Jim Meyering
ea07044f83 . 1999-04-24 12:57:43 +00:00
Jim Meyering
b67ee7857a *** empty log message *** 1999-04-24 12:53:50 +00:00
Jim Meyering
6796615496 *** empty log message *** 1999-04-24 12:53:19 +00:00
Jim Meyering
88c9f81346 Include new "xstrtol.h", not "xstrtoul.h". 1999-04-24 12:43:39 +00:00
Jim Meyering
55865fda6c Include new "xstrtol.h", not "xstrtoul.h".
(struct control) [repeat]: Declare as uintmax_t, not int.
(struct control) [lines_required]: Likewise.
(handle_line_error): Use human_readable to print lines_required.
(parse_repeat_count): Parse a uintmax_t.
(parse_patterns): Parse a uintmax_t.
1999-04-24 12:42:53 +00:00
Jim Meyering
bdb9cd3f2c Include new "xstrtol.h", not "xstrtoul.h". 1999-04-24 12:33:56 +00:00
Jim Meyering
cef6937705 Include new "xstrtol.h", not "xstrtoul.h".
Change all U_LONG_LONG to uintmax_t.
(head_lines): Move a couple dcls into an inner scope.
(string_to_integer): Rename from string_to_ull.
1999-04-24 12:33:25 +00:00
Jim Meyering
34942b9da8 import latest 1999-04-23 04:20:42 +00:00
Jim Meyering
4cbb965035 *** empty log message *** 1999-04-22 15:19:11 +00:00
Jim Meyering
62edaf0b55 (word32): Don't use `#error'; it runs afoul of SunOS 4.1.4 cc. 1999-04-22 14:38:50 +00:00
Jim Meyering
c274f255c3 *** empty log message *** 1999-04-22 14:37:17 +00:00
Jim Meyering
e7fa925898 Guard strong_alias and weak_alias with #ifdef _LIBC. 1999-04-22 14:35:59 +00:00
Jim Meyering
b003c8fdfa Don't bother with pot-mail anymore -- Francois needs merely the URL. 1999-04-22 01:24:34 +00:00
Jim Meyering
2279aec4a3 . 1999-04-21 23:17:13 +00:00
Jim Meyering
1f74a371e0 . 1999-04-21 23:16:48 +00:00
Jim Meyering
ae295f9bab . 1999-04-21 04:34:29 +00:00
Jim Meyering
28a81b47c1 . 1999-04-21 04:30:22 +00:00
Jim Meyering
9b56140087 *** empty log message *** 1999-04-21 04:29:00 +00:00
Jim Meyering
8907976270 Remove the temporary strtoumax replacement;
we now have a true replacement in strtoumax.c.
(__strtol): Always define to strtoumax.
(<stdlib.h>): No need to include.
(PARAMS): Remove.
(my_strtoumax): Move this to strtoumax.c,
rename it to strtoumax, and simplify.
1999-04-21 04:28:36 +00:00
Jim Meyering
3354e7502c Update to glibc 2.1.1 version. 1999-04-21 04:27:24 +00:00
Jim Meyering
64bae48df6 . 1999-04-21 04:24:39 +00:00
Jim Meyering
9d3c3cb2c7 *** empty log message *** 1999-04-21 04:22:15 +00:00
Jim Meyering
9a16aa9fde *** empty log message *** 1999-04-21 04:21:50 +00:00
Jim Meyering
a6f5dd6269 (jm_CHECK_ALL_TYPES): Require jm_AC_TYPE_UNSIGNED_LONG_LONG. 1999-04-21 04:21:44 +00:00
Jim Meyering
9174cee25d (AC_CHECK_FUNCS): Remove strtoull, strtoumax, strtouq. 1999-04-21 04:14:59 +00:00
Jim Meyering
7d98d28569 *** empty log message *** 1999-04-21 04:04:20 +00:00
Jim Meyering
e441de9acc (jm_AC_TYPE_UINTMAX_T): Move unsigned long
long check into new jm_AC_TYPE_UNSIGNED_LONG_LONG macro.
1999-04-21 04:04:04 +00:00
Jim Meyering
36ca174d81 *** empty log message *** 1999-04-21 04:00:48 +00:00
Jim Meyering
76659f726f Require jm_AC_TYPE_UNSIGNED_LONG_LONG.
Replace xstroull if necessary.
1999-04-21 04:00:38 +00:00
Jim Meyering
42a64ac80e *** empty log message *** 1999-04-21 03:58:57 +00:00
Jim Meyering
6783ad7832 *** empty log message *** 1999-04-21 03:24:54 +00:00
Jim Meyering
e8b570e45a update comment 1999-04-21 03:19:26 +00:00
Jim Meyering
cf6eaeb03b <xstrtol.h>: Include this, not xstrtoul.h.
<human.h>: Include.
Use uintmax_t in place of unsigned long.
Use human_readable to convert to strings for printing.
1999-04-21 03:18:23 +00:00
Jim Meyering
42ccae28c6 . 1999-04-21 02:30:43 +00:00
Jim Meyering
c850864a19 . 1999-04-21 02:29:50 +00:00
Jim Meyering
c93a59ac4f . 1999-04-21 02:28:20 +00:00
Jim Meyering
abc54153b1 *** empty log message *** 1999-04-21 02:21:57 +00:00
Jim Meyering
c4a52014f7 Port to AIX and HP-UX. Support cross-compilation. 1999-04-21 02:21:47 +00:00
Jim Meyering
c7a0b8f429 <config.h>: Include first, since it can do
things like #define const, and this must be done before
including any system headers.
1999-04-20 13:26:06 +00:00
Jim Meyering
154588d722 (my_strtoumax): Fix typo in computing
whether overflow occurred.  Improve overflow-detection to use
only one conditional branch total, rather than 2N+1
conditional branches for an N-digit number.
1999-04-20 13:24:14 +00:00
Jim Meyering
f9270b650f *** empty log message *** 1999-04-19 14:09:07 +00:00
Jim Meyering
5f724e01b9 *** empty log message *** 1999-04-19 14:06:07 +00:00
Jim Meyering
c37f2f6355 (main): Restore `+' in getopt_long string. Otherwise,
commands like `seq 10 -2 0' wouldn't work.  From Andreas Schwab.
1999-04-19 14:05:34 +00:00
Jim Meyering
dcf32e94d2 *** empty log message *** 1999-04-19 14:03:17 +00:00
Jim Meyering
3e47e246f8 *** empty log message *** 1999-04-19 05:25:52 +00:00
Jim Meyering
d5c056d478 (b_host): Remove /pub suffix. 1999-04-19 05:22:54 +00:00
Jim Meyering
da96ede53c *** empty log message *** 1999-04-19 04:50:25 +00:00
Jim Meyering
6a9f42807f (my-distcheck): Use AMTAR, not TAR. 1999-04-19 04:50:03 +00:00
Jim Meyering
36564cbefd . 1999-04-19 04:45:09 +00:00
Jim Meyering
95836befb3 *** empty log message *** 1999-04-19 04:24:35 +00:00
Jim Meyering
0b8e81aab9 . 1999-04-19 04:20:57 +00:00
Jim Meyering
a0119464b8 *** empty log message *** 1999-04-19 02:56:54 +00:00
Jim Meyering
00811477e8 *** empty log message *** 1999-04-19 02:54:53 +00:00
Jim Meyering
e144c80776 Require jm_AC_PREREQ_XSTRTOUMAX. 1999-04-19 02:54:48 +00:00
Jim Meyering
ac4f985ac9 *** empty log message *** 1999-04-19 02:53:36 +00:00
Jim Meyering
560d7d9dac . 1999-04-19 02:42:58 +00:00
Jim Meyering
e7a7a48ee6 . 1999-04-19 02:39:52 +00:00
Jim Meyering
95e8d410ff (tempname): Wrap after 99999 only for length-impaired file systems. 1999-04-19 02:39:09 +00:00
Jim Meyering
d3b1ca9174 (main, longopts):
Use -u instead of -R for --remove, so that we can preserve
future compatibility with rm.
1999-04-19 02:15:09 +00:00
Jim Meyering
d70fb569fb [!HAVE_CONFIG_H] (ST_BLKSIZE): Define to 65536.
(do_wipefd): Use ST_BLKSIZE instead of referring to the st_blksize
member directly.
1999-04-19 02:13:01 +00:00
Jim Meyering
e5e1c6d4fd *** empty log message *** 1999-04-19 00:20:36 +00:00
Jim Meyering
d17b6bc300 *** empty log message *** 1999-04-18 23:20:24 +00:00
Jim Meyering
114946fdb0 Include xstrtol.h.
(parse_integer): Migrate most of the work into the new xstrtoumax fn.
1999-04-18 23:18:48 +00:00
Jim Meyering
30edff7a36 Include xstrtol.h, not xstrtoul.h, since xstrtol.h now defines all the
xstrto... functions.
1999-04-18 23:18:32 +00:00
Jim Meyering
d3ffbea816 Include xstrtol.h, not obsolete file xstrtoul.h. 1999-04-18 23:18:09 +00:00
Jim Meyering
cc7d631369 <stdlib.h>: Include if HAVE_STDLIB_H, since bison 1.27 invokes "free".
(LookupWord, yylex): Don't pass negative char to ctype macros.
1999-04-18 23:17:30 +00:00
Jim Meyering
4e8d80cad7 (xalloc_fail): Pass xalloc_msg_memory_exhausted through gettext. 1999-04-18 23:17:05 +00:00
Jim Meyering
a1d8c38553 (libfu_a_SOURCES): Add xstrtoumax.c.
(noinst_HEADERS): Remove xstrtoul.h.
1999-04-18 23:16:49 +00:00
Jim Meyering
0501984933 (__xstrtol, __strtol, __unsigned): Remove macro decls.
<inttypes.h>: Include if HAVE_INTTYPES_H.
(_DECLARE_XSTRTOL): New macro.
(xstrtol, xstrtoul, xstrtoumax): Declare all three functions, so that
we need only one include file, not three.
(_STRTOL_ERROR): Do not undef, as this is no longer needed.
Reword overflow message so that it's independent of type.
1999-04-18 23:16:23 +00:00
Jim Meyering
f8474e2421 (__strtol, __strtol_t, __xstrtol):
New macros to specify the
underlying function, its returned type, and our function.  Default to
values suitable for xstrtol.

Include <ctype.h>, since we use its macros.

(ULONG_MAX, LONG_MAX, ISBLANK): Remove: no longer needed.
(ISSPACE): New macro.

(bkm_scale, bkm_scale_by_power, __xstrtol, main): __unsigned long int
-> __strtol_t.

(__xstrtol): Depend on whether __strtol_t is an unsigned type, not on
whether STRING_TO_UNSIGNED is defined.  Skip isspace chars, not
isblank chars, to match strtol.  When returning
LONGINT_INVALID_SUFFIX_CHAR, store the value that we computed into
*val.
1999-04-18 23:15:34 +00:00
Jim Meyering
ddd5fa0ce5 (STRING_TO_UNSIGNED): Remove.
(__strtol, __strtol_t, __xstrtol): New macros.
1999-04-18 23:15:02 +00:00
Jim Meyering
a7a7424b8b Include xstrtol.h, not obsolete file xstrtoul.h.
"human.h", "xalloc.h": Include.
(attribute): Remove; no longer needed.
(xstrdup): New decl.
(STDOUT_FILENO): New macro.
(O_NOCTTY): Make sure it's always defined, even if HAVE_CONFIG_H.

The following changes have effect only if !HAVE_CONFIG_H.
<ctype.h>: New include.
(RETSIGTYPE): Remove bogus semicolon at end.
(STDOUT_FILENO, uintmax_t, human_readable, LONGEST_HUMAN_READABLE):
New macros.
(xstrtoumax): Renamed from xstrtoul, with corresponding type changes.
Handle suffixes like the real routine does.
(error): Remove bogus assignment of errno to errnum.
(xmalloc, xstrdup): New functions.

(O_NOCTTY): Define even if !HAVE_CONFIG_H.
(S_ISFIFO, S_ISSOCK): New macros, if not already defined.
(OUTPUT_BLOCK_SIZE): New macro.
(struct Options.verbose): Now a boolean, since we no longer have two
levels of verbosity.
(long_opts, usage, main): Remove -D or --device option.  Invert -p or
--preserve option, and rename it to -R or --remove.
(usage): Describe G suffix.
(usage): "-" no longer conflicts with -v.
(UCHAR_MAX): Indent `#error' so that SunOS 4.1.4 cc doesn't reject it.
(ind): Portability fixes: return word32, not unsigned; multiply by
sizeof (word32) instead of shifting left by 2.
(isaac_refill, isaac_mix): Comment out size of array parameter, as
ansi2knr mishandles this.
(status_visible, status_pos, pfstatus, flushstatus): Remove, since
pfstatus isn't portable to users with varying width fonts, or
internationalized messages, and vfprintf is problematic.  All callers
of pfstatus changed to use error instead; this removes incompatibility
of -v with -.  All calls to flushstatus removed.
(dopass, do_wipefd): Do not translate non-English msgs with gettext.

(dopass): Cast lseek constant arguments to (off_t) for benefit
of pre-ANSI compilers; fix one lseek call whose args were interchanged.
Remove unnecessary casts to (off_t).  Do not check for EIO
when determining file size; this was just my earlier wild guess.
Use human_readable to print off_t, instead of casting to unsigned long
(which doesn't work in Solaris 2.6, where off_t is longer than long).
Output human-readable sizes, instead of always using "K".
Check for offset overflow (it happened to me in SunOS 4.1.4).
(do_wipefd): Do not insist on regular files, but do check for special
files that cannot possibly be shredded.
Use xmalloc instead of malloc + check.
Do not inspect st_size for non-regular files.
Try to find the size of a non-regular file by seeking to its end.
Do not assume that a regular file of size-0 has unknown size.
Check for regular files with negative sizes,
and for overflow after rounding to next block.
Always try to truncate, even for special files, but do not report an
error if truncation fails on a special file.

(dopass, wipefile): Do not return 1 for special files; the caller
doesn't care any more.

(wipefd): Remove unnecessary (and nonportable) check for
whether the file descriptor is read-only.  Remove
no-longer-needed check for `-v -'.

(incname): Return 1 for carry bit, like the documentation says.

(wipename, wipefile): Accept new argument, specifying the
quoted file name.  All callers changed.

(wipename): Use xstrdup instead of strdup+error check.

(wipefile): Check for ENOTDIR when opening /dev/fd/NNN. Check for
errors in NNN more carefully. Restore errno after the check.
Check for errors when closing the file descriptor.
Use more consistent wording when unable to remove a file.

(main): Do not remove files by default.
Use xstrtoumax instead of xstrtoul uniformly, since xstrtoul won't
exist if !HAVE_CONFIG_H.
In diagnostics, quote invalid operands to -n and -s options.
Allow T, P, E, Z, and Y suffixes in -s operand.
flags.verbose is now a boolean, not a counter.
Use STDOUT_FILENO instead of 1, for clarity.
1999-04-18 23:13:57 +00:00
Jim Meyering
69b1c4026c (tempname): Add a FIXME comment. 1999-04-18 15:57:19 +00:00
Jim Meyering
0fe4e6b443 (NAME_MAX_IN_DIR): Rename from PATH_MAX_IN_DIR. Use _POSIX_NAME_MAX,
not _POSIX_PATH_MAX.  Guard with #if HAVE_PATHCONF rather than
#if HAVE_UNISTD_H.
1999-04-18 15:44:03 +00:00
Jim Meyering
8cee2c6772 Rename global: s/temp_file_prefix/temp_dir/. 1999-04-18 14:40:20 +00:00
Jim Meyering
eb4109b66e (usage): s/DIRECT/DIRECTORY/g 1999-04-18 14:38:24 +00:00
Jim Meyering
e0cbae44cd *** empty log message *** 1999-04-18 13:32:44 +00:00
Jim Meyering
8f913cc64f (main): Open the output file with *read* access
only if we might need to read to satisfy a `seek=' request.
From Matthias Urlichs.
1999-04-18 13:32:35 +00:00
Jim Meyering
64dec9fafb *** empty log message *** 1999-04-18 13:31:34 +00:00
Jim Meyering
a625377e8c *** empty log message *** 1999-04-18 03:25:23 +00:00
Jim Meyering
c5027d831c . 1999-04-18 02:16:56 +00:00
Jim Meyering
f4143898b2 *** empty log message *** 1999-04-17 14:41:38 +00:00
Jim Meyering
5101382ec6 *** empty log message *** 1999-04-17 11:56:21 +00:00
Jim Meyering
dd886e9690 (file_lines): Fix serious bug introduced with last changes.
From Andreas Schwab.
1999-04-17 11:50:03 +00:00
Jim Meyering
6a821331eb . 1999-04-15 14:09:04 +00:00
Jim Meyering
d679966505 *** empty log message *** 1999-04-15 14:03:06 +00:00
Jim Meyering
f01319465c rename .posix-warn to .env-warn 1999-04-15 13:59:14 +00:00
Jim Meyering
1dbd1aff6f . 1999-04-15 13:49:45 +00:00
Jim Meyering
69e1d626bd Add comments.
(init_header): Tweak white space in Date/Time header.
1999-04-15 13:49:13 +00:00
Jim Meyering
609582a161 new tests from Roland 1999-04-15 13:26:50 +00:00
Jim Meyering
bc95e393d8 Updated tests.
From Roland Huebner.
1999-04-15 13:26:44 +00:00
Jim Meyering
379dcf4c48 . 1999-04-15 12:45:57 +00:00
Jim Meyering
ffd4e9684a *** empty log message *** 1999-04-14 03:12:27 +00:00
Jim Meyering
809b33b2ff new version via automake 1999-04-13 14:44:33 +00:00
Jim Meyering
2a8c4e283e *** empty log message *** 1999-04-13 02:57:40 +00:00
Jim Meyering
e6bc0dccbc (main): Declare out_dev to be of type dev_t, not `int'.
Declare out_ino to be of type ino_t, not `int'.
1999-04-13 01:11:46 +00:00
Jim Meyering
b6d265e347 * src/od.c (MIN, MAX): Remove definitions.
* src/sys2.h (MIN, MAX): Define here instead.
1999-04-13 01:09:15 +00:00
Jim Meyering
4de61e5f98 . 1999-04-12 04:28:05 +00:00
Jim Meyering
1f6f06f7de (test_vector): Disable all tests while I wait for an updated suite. 1999-04-12 04:27:46 +00:00
Jim Meyering
69d1c5772e *** empty log message *** 1999-04-12 04:00:10 +00:00
Jim Meyering
d577eef9e4 *** empty log message *** 1999-04-12 03:54:57 +00:00
Jim Meyering
a36f86a13e . 1999-04-12 03:47:40 +00:00
Jim Meyering
924b7e2291 . 1999-04-12 03:47:17 +00:00
Jim Meyering
2e2161c97a (COPY_TO_EOF): Define.
(dump_remainder): Add parameter, n_bytes, and rewrite to use it.
Update callers.
(file_lines): Rename parameter.
(tail_bytes): Remove obsolete comment.
1999-04-12 03:22:24 +00:00
Jim Meyering
f3df8336ae Fix the problem whereby `yes > k & tail -1 k' would infloop.
(dump_remainder): Move this function to precede the new use in file_lines.
(tail_lines): Don't call dump_remainder here.
(file_lines): Call dump_remainder here instead.
1999-04-11 17:59:28 +00:00
Jim Meyering
a66cc3009b *** empty log message *** 1999-04-11 13:26:42 +00:00
Jim Meyering
cf3d3f1e6e (readtoken, readtokens): Protoize. 1999-04-11 13:25:52 +00:00
Jim Meyering
832dfa7e1f (xwrite): Use STDOUT_FILENO instead of literal `1'. 1999-04-11 03:42:21 +00:00
Jim Meyering
35af2e8613 *** empty log message *** 1999-04-11 03:24:12 +00:00
Jim Meyering
de9d4e9f91 (alpha): Add trailing slash for ncftp. 1999-04-11 03:24:04 +00:00
Jim Meyering
fb059dc67c *** empty log message *** 1999-04-11 02:19:51 +00:00
Jim Meyering
12562e897d . 1999-04-11 02:17:48 +00:00
Jim Meyering
cc40ff77a8 . 1999-04-11 02:17:20 +00:00
Jim Meyering
294b139566 *** empty log message *** 1999-04-11 02:15:26 +00:00
Jim Meyering
54047adacd *** empty log message *** 1999-04-11 01:45:44 +00:00
Jim Meyering
4d062fbe6d *** empty log message *** 1999-04-11 01:44:26 +00:00
Jim Meyering
23dfcdb368 `ls --color' would segfault
Include assert.h.
(color_indicator[]): Add an entry for the type, `door.'
(main): Assert that the lengths of the color_indicator and
indicator_name arrays are appropriately related.
1999-04-11 01:43:34 +00:00
Jim Meyering
e6a9ce41b6 *** empty log message *** 1999-04-11 01:35:01 +00:00
Jim Meyering
03e24361ee (scanargs): Fix bug introduced with last change: now that
the loop is gone, manually decrement argc and increment argv.
1999-04-11 01:32:28 +00:00
Jim Meyering
24c8bc7107 *** empty log message *** 1999-04-08 13:44:31 +00:00
Jim Meyering
4ab8ea3cb7 (Options for date): Document --iso-8601 1999-04-08 13:44:19 +00:00
Jim Meyering
75e403b3b3 Accept new option: --iso-8601. 1999-04-08 13:44:00 +00:00
Jim Meyering
367c2367a6 *** empty log message *** 1999-04-07 17:43:47 +00:00
Jim Meyering
1ff7d4be9b (difftm): Protoize. 1999-04-07 17:43:36 +00:00
Jim Meyering
43dcc7ef21 . 1999-04-07 17:43:12 +00:00
Jim Meyering
b655fc9cf7 . 1999-04-07 17:41:57 +00:00
Jim Meyering
b6dfae5d0e *** empty log message *** 1999-04-07 12:53:22 +00:00
Jim Meyering
1f8c95df83 split long line 1999-04-06 17:26:07 +00:00
Jim Meyering
2af4373a90 Update from master source in libc, removing %f. 1999-04-06 14:22:06 +00:00
Jim Meyering
20203a77e1 *** empty log message *** 1999-04-06 14:15:04 +00:00
Jim Meyering
d712631a71 Remove test for %f. 1999-04-06 14:14:58 +00:00
Jim Meyering
2d9a947471 *** empty log message *** 1999-04-05 03:51:33 +00:00
Jim Meyering
47a4b79f74 Comment out the test added on 1999-01-31. 1999-04-05 03:51:17 +00:00
Jim Meyering
b967ecb86b (url_dir_list): Define properly.
(real_dir_list): Likewise.
1999-04-05 02:00:03 +00:00
Jim Meyering
4fa4d097bd *** empty log message *** 1999-04-04 23:15:20 +00:00
Jim Meyering
5050912be0 Don't include string.h.
[!HAVE_CONFIG_H]: Include string.h here.
[!HAVE_CONFIG_H]: Hard-code RETSIGTYPE to `int'.
(sigill_handler): Change return type and type of local `oldhandler' to
RETSIGTYPE.
(isaac_seed_machdep): Change and type of local `oldhandler' to
RETSIGTYPE.
1999-04-04 23:15:07 +00:00
Jim Meyering
a147c61141 use dquotes, not squotes 1999-04-04 21:07:25 +00:00
Jim Meyering
4afd87dd11 *** empty log message *** 1999-04-04 20:54:30 +00:00
Jim Meyering
339497e1f4 *** empty log message *** 1999-04-04 16:02:28 +00:00
Jim Meyering
62528b9cf8 Change the sed command used to extract the
filename from ls -l output, to accommodate the change in format.
1999-04-04 16:00:50 +00:00
Jim Meyering
50c573d457 Add case_GETOPT_* cases. 1999-04-04 15:46:31 +00:00
Jim Meyering
96309d1da7 *** empty log message *** 1999-04-04 15:44:58 +00:00
Jim Meyering
d815c152df Standardize --help and --version processing. 1999-04-04 15:44:26 +00:00
Jim Meyering
25abb410d4 define/use AUTHORS 1999-04-04 14:44:45 +00:00
Jim Meyering
baa8cd4493 *** empty log message *** 1999-04-04 14:43:27 +00:00
Jim Meyering
d008b48e3b (print_long_format): Add a space between %s and %3u. This
assures that even when modebuf has the trailing `+' and there are more
than 99 hard links to a file, the permissions string and the link count
will be separated.
1999-04-04 14:41:43 +00:00
Jim Meyering
5b86bf7cde import latest 1999-04-04 14:33:18 +00:00
Jim Meyering
54ec5153c5 (S_IWUSR): Define if not already defined. 1999-04-04 14:32:58 +00:00
Jim Meyering
6369a887ba . 1999-04-04 14:30:44 +00:00
Jim Meyering
42edc330ed fix comments
add FIXME
1999-04-04 14:30:30 +00:00
Jim Meyering
e0e1dc0bf8 (dopass): add curly braces to avoid warning about ambiguous `else'.
(wipefd): Add parentheses suggested by gcc.
(do_wipefd): Remove declaration of unused local.
1999-04-04 04:54:34 +00:00
Jim Meyering
f381610dd5 [!HAVE_CONFIG_H] (xstrtoul, error, close_stdout): Added stubs
to allow standalone compilation.

(wipefile): Added support for emulating /dev/fd/# files even if
the OS doesn't support them.  From Paul Eggert.

(main, usage): Changed --device short option to -D.

(wipefd, do_wipefd): Renamed function to do_wipefd and added
separate wipefd that performs sanity checks on externally-opened file
descriptors, such as not append-only.  From Paul Eggert.

(do_wipefd, isaac_seedfd): Do not read file for any reason.
if the file is low-entropy, it's a security hole.
(wipefile) Changed to open O_WRONLY and chmod to write-only when
forcing.
(isaac_seedfd) Function deleted as unnecessary.
From Paul Eggert.

(dopass): Dynamically fall back to fsync() if fdatasync() fails,
since POSIX, in their infinitesimal wisdom, encourage implementations
that return constant -1, making compile-time testing useless.
From Paul Eggert.

(dopass): Changed to support a size of -1 to mean "unknown".
This entailed changing to a counting-up offset rather than couting-down
cursize for the central state variable.  Also changed size argument to
be call-by-reference so that it can be passed back once known.
(sizer) Function deleted as unnecessary.
(wipefd): Changed to match.  From Paul Eggert

(dopass): Try to skip over bad blocks in destination files.
Also added ftruncate() for more complete destruction of metadata.

(main, usage): Changed "-" to stand for standard output.
(wipefd): Added error message to detect conflict with -v.

(dopass): Added periodic fsync() calls to keep the pass progress
display in sync with reality.  Hopefully they're sufficiently far spaced
that throughput isn't affected.  It might be a good thing to do even in
non-verbose mode, to avoid filling up the kernel caches with dirty data.
Also added ftruncate() for more complete destruction of metadata.

(quotearg_colon): New function to print
pathological filenames properly.
[!HAVE_CONFIG_H] (quotearg_colon_buf) New internal helper function
that does most of the work.
(wipefd, do_wipefd, dopass) Now take a qname (pre-quoted name) argument.
(wipename, wipefile, main) Changed diagnostics to use quotearg_colon.
Error messages are also in a more uniform format.
From Paul Eggert.

(struct Options, main, do_wipefd): Added -s/--size=N flag.
(xstrtoul): Added support for valid_suffixes to help this.
(usage) Documented it.

(error): Changed some arguments from N_() to _(), since error()
does not translate its argument.  I think this is a bug.

(struct Options do_wipefd, wipefd, wipefile, main): moved passes
argument into the Options structure as n_iterations, which is now a
size_t.  From Paul Eggert.

(isaac_seed_start, isaac_seed_data, isaac_seed_finish): New functions
to manage seeding of RNG with arbitrary-sized data.
(isaac_init): commented out as dead code.
(isaac_seed): changed to use new functions to prevent any possibility of
a buffer overflow.

(isaac_seed): Added support for Solaris' gethrtime()
configure.in: Corresponding feature test.  From Paul Eggert.

(wipename): Change remove() to unlink() for speed & portability.
Use lstat() instead of access() to see if a filename is taken.  This
works even on dangling symlinks and avoids the suid problems of
access(2).  From Paul Eggert.

(isaac_seed_machdep): New function for reading cycle counters
1999-04-04 04:37:39 +00:00
Jim Meyering
034df8db20 *** empty log message *** 1999-04-04 04:34:16 +00:00
Jim Meyering
8fe009ed7c back out Paul's changes 1999-04-04 02:34:49 +00:00
Jim Meyering
c21cecaea8 Use AUTHORS in place of string in parse_long_options call. 1999-04-03 05:26:48 +00:00
Jim Meyering
1d47220ab2 Insert AUTHORS definition. 1999-04-03 05:22:05 +00:00
Jim Meyering
cf691ec714 Use PROGRAM_NAME in place of string in parse_long_options call. 1999-04-03 05:20:06 +00:00
Jim Meyering
7c2d5de6c7 define PROGRAM_NAME 1999-04-03 05:01:48 +00:00
Jim Meyering
db6ce0481b *** empty log message *** 1999-04-03 03:29:41 +00:00
Jim Meyering
98327bba60 (S_IWUSR): Define if not already defined. 1999-04-03 03:29:17 +00:00
Jim Meyering
a29afcb470 (isaac_seed): Don't overrun the s->mm buffer.
Use gethrtime if available.  Don't assume that clock_gettime succeeds.
Put most random sources first.
1999-04-03 03:27:57 +00:00
Jim Meyering
bf504d2a46 Add new options -bcCklL and fix some porting problems.
Remove options -dp.  Do not read output files.

(long_opts, usage, main, wipefile): Adjust to new options.
("human.h", "quotearg.h"): New includes.
(struct Options): New members contents, links, n_iterations.
Remove allow_devices, remove_file.  Change n_iterations to size_t.
All uses changed.
(output_block_size): New var.
(usage): Declare __noreturn__ attribute.
(fdatasync): Define to -1 if not present, since we need to invoke both
fdatasync and fsync if both are present.  All invokers of fdatasync
now try fdatasync, then fsync.
(MIXIN): New macro.
(isaac_seed): Use it to mix in values.  Add uid, gid to mix.
Don't use gettimeofday, as it has too many porting problems.
(isaac_seedfd): Remove, since we no longer read the output files.
(sizefd): Remove; we now determine size by writing sequentially.
(dopass, wipename, wipefile, main): Clean up error messages.
(dopass): Keep track of offset relative to start of file, not
end, since we may not know how large the file is.  If size is
negative, write until we fall off the end of the file.
(wipefd): Do not read output file.
Return 0 if successful, -1 if not; do not make a special case for
non-regular files, since our callers have that info now.
(wipename): Now static.  Return errno if error.
(main): "-" now stands for standard output.
Do not shred append-only standard output.
(wipefile): Do not grant read permission to file when wiping it.
Use symbolic permission (S_IWUSR), not octal.
From Paul Eggert.
1999-04-03 03:27:27 +00:00
Jim Meyering
ce9c687d5a [HAVE_SYS_ACL_H]: Include sys/acl.h.
(struct fileinfo): New member `have_acl'.
(gobble_file): Initialize it.
(print_long_format): Use it.
Mostly from Alen Muzinic.
1999-04-02 05:38:15 +00:00
Jim Meyering
eaaff3246a *** empty log message *** 1999-04-02 04:24:48 +00:00
Jim Meyering
7ba3c38741 *** empty log message *** 1999-04-02 04:20:17 +00:00
Jim Meyering
c69d22ae26 *** empty log message *** 1999-04-02 04:15:14 +00:00
Jim Meyering
35aee6bf13 (open_maybe_create): New function.
(touch): Rewrite not to use `creat' and to eliminate a race
condition that could make touch truncate a nonempty file.
Report and suggestions from Andrew Tridgell.
1999-04-02 02:55:10 +00:00
Jim Meyering
ac03113efe *** empty log message *** 1999-04-02 02:47:58 +00:00
Jim Meyering
bbea0501a9 *** empty log message *** 1999-04-01 05:16:46 +00:00
Jim Meyering
a7b641acd5 (main): Qualify a char* with the `const' keyword. 1999-04-01 05:15:37 +00:00
Jim Meyering
c4cf0531ff (main): Qualify a char* with the `const' keyword. 1999-04-01 05:10:41 +00:00
Jim Meyering
a7d0351c20 (install_file_in_dir): Qualify a char* with the `const' keyword. 1999-04-01 05:09:59 +00:00
Jim Meyering
beb464c0ea (main): Qualify a char* with the `const' keyword. 1999-04-01 05:08:22 +00:00
Jim Meyering
d8a18c33e8 (main): Qualify a char* with the `const' keyword. 1999-04-01 05:07:51 +00:00
Jim Meyering
abdc079cd5 Remove prototypes and tsort function definitions. 1999-04-01 05:05:17 +00:00
Jim Meyering
d0b9ad729c (main): Qualify a char* with the `const' keyword. 1999-04-01 04:58:29 +00:00
Jim Meyering
24df6275fb (main): Move the declaration of `e' into the scope
where it's used and make it `const'.
1999-04-01 04:56:28 +00:00
Jim Meyering
2500fe4079 (main): Qualify a char* with the `const' keyword. 1999-04-01 04:53:13 +00:00
Jim Meyering
3a3189e6c3 (touch): Qualify a char* with the `const' keyword. 1999-04-01 04:47:55 +00:00
Jim Meyering
db3c0ffb44 . 1999-03-31 15:21:00 +00:00
Jim Meyering
8935f38d4e *** empty log message *** 1999-03-31 06:02:07 +00:00
Jim Meyering
667799f7e2 Don't include closeout.h or version-etc.h explicitly. Now, they're included via sys2.h. 1999-03-31 05:59:13 +00:00
Jim Meyering
d30f9691c1 *** empty log message *** 1999-03-31 05:54:11 +00:00
Jim Meyering
fdd07e3d2b No longer include long-options.h.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-31 05:52:46 +00:00
Jim Meyering
419aa42181 Include "closeout.h" and "version-etc.h" 1999-03-31 05:52:46 +00:00
Jim Meyering
516b48e7a2 (AUTHORS): Actually define and use. 1999-03-31 05:06:42 +00:00
Jim Meyering
03c1b8518c (PROGRAM_NAME, AUTHORS): Define and use. 1999-03-31 04:16:08 +00:00
Jim Meyering
39090114f0 (PROGRAM_NAME, AUTHORS): Define and use. 1999-03-31 04:11:35 +00:00
Jim Meyering
b2513fc340 import latest 1999-03-30 15:11:20 +00:00
Jim Meyering
b989ccb248 . 1999-03-30 05:40:40 +00:00
Jim Meyering
2067a9fe97 . 1999-03-30 04:52:57 +00:00
Jim Meyering
a717cdf2d6 (make_node_op_equals): New function.
(mode_append_entry): Likewise.
(mode_compile): When none of [ugoa] is specified in an `=OP' change
mode request, insert a `=0' entry into the linked list so that all
bits are cleared first.  Use the new functions.
1999-03-30 04:51:08 +00:00
Jim Meyering
bb0631e825 *** empty log message *** 1999-03-30 04:48:57 +00:00
Jim Meyering
9dab31b501 (rmdir): Use pid_t instead of int; check status
against zero.  This is to improve portability.
1999-03-30 04:48:41 +00:00
Jim Meyering
2080baecff (rename): Use pid_t instead of int; check status
against zero.  This is to improve portability.
1999-03-30 04:48:17 +00:00
Jim Meyering
69952761e1 (mkdir): Use pid_t instead of int; check status
against zero.  This is to improve portability.
1999-03-30 04:47:52 +00:00
Jim Meyering
319976a665 (strip): Use standard "cannot fork" message.
Check for strip nonzero exit status.
1999-03-30 04:43:53 +00:00
Jim Meyering
8137487dd7 *** empty log message *** 1999-03-30 04:36:00 +00:00
Jim Meyering
0b1a5f6fe9 *** empty log message *** 1999-03-30 04:34:46 +00:00
Jim Meyering
236d3671e2 *** empty log message *** 1999-03-30 04:33:22 +00:00
Jim Meyering
ab33da4b55 (jm_CHECK_ALL_TYPES): New macro. 1999-03-30 04:29:19 +00:00
Jim Meyering
34f0f5c2c9 *** empty log message *** 1999-03-29 04:39:56 +00:00
Jim Meyering
bad53b08e6 Define GNU_PACKAGE here.
Be sure to AC_SUBST it, once again, so that @GNU_PACKAGE@ is
replaced e.g., in the *.sh files of the sh-utils.
1999-03-29 04:39:50 +00:00
Jim Meyering
1682163674 PROGRAM_NAME: rename from COMMAND_NAME 1999-03-29 02:56:52 +00:00
Jim Meyering
8ca2ea6a0e *** empty log message *** 1999-03-28 21:01:09 +00:00
Jim Meyering
7549c10f35 (get_date): Reuse tm_isdst of first localtime
call; this is an improvement on a bug fix suggested by
martin@dresden.nacamar.de.  Do not assume that localtime and
gmtime return non-null.
From Paul Eggert.
1999-03-28 20:58:51 +00:00
Jim Meyering
45eb651902 *** empty log message *** 1999-03-28 19:06:17 +00:00
Jim Meyering
6c9f8b17d0 *** empty log message *** 1999-03-28 14:59:09 +00:00
Jim Meyering
771cd1f617 *** empty log message *** 1999-03-28 14:40:37 +00:00
Jim Meyering
75cedb69be . 1999-03-28 14:40:21 +00:00
Jim Meyering
dc475b06bd *** empty log message *** 1999-03-28 14:39:34 +00:00
Jim Meyering
581baf7d99 (mode_compile): Upon allocation failure, free
everything starting with the head, not the tail.
1999-03-28 05:44:33 +00:00
Jim Meyering
7ca462d865 . 1999-03-27 23:07:53 +00:00
Jim Meyering
81e166e0ce *** empty log message *** 1999-03-27 14:33:30 +00:00
Jim Meyering
190ab69c07 *** empty log message *** 1999-03-27 14:32:36 +00:00
Jim Meyering
9d044f6b96 (strip): Use pid_t, not int. 1999-03-27 14:32:06 +00:00
Jim Meyering
713d9932c3 (print_user): Use uid_t instead of int.
(print_group): Use gid_t instead of int.
1999-03-27 14:29:51 +00:00
Jim Meyering
83bd8b5ff1 . 1999-03-26 14:27:18 +00:00
Jim Meyering
f92141140b *** empty log message *** 1999-03-26 14:26:38 +00:00
Jim Meyering
695cdd6f6a No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 14:26:18 +00:00
Jim Meyering
e7f2703c47 No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 14:25:30 +00:00
Jim Meyering
3d308f9549 No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 14:23:59 +00:00
Jim Meyering
f42367c3e7 No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 14:22:51 +00:00
Jim Meyering
0aa9923d96 No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 14:19:02 +00:00
Jim Meyering
85b4cd220b No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 14:18:29 +00:00
Jim Meyering
f0a21a933a reorder includes 1999-03-26 14:12:32 +00:00
Jim Meyering
42884ec0c7 (PROGRAM_NAME, AUTHORS): Define and use. 1999-03-26 14:07:12 +00:00
Jim Meyering
c227e4a167 (PROGRAM_NAME, AUTHORS): Define
(long_options): Remove unused struct.
(scanargs): Remove useless loop.
(main): Use PROGRAM_NAME and AUTHORS in call to parse_long_options.
1999-03-26 14:05:40 +00:00
Jim Meyering
c92de17d2f define and use AUTHORS 1999-03-26 05:17:17 +00:00
Jim Meyering
c060f16ed7 No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 04:23:55 +00:00
Jim Meyering
f19d194943 . 1999-03-26 04:23:01 +00:00
Jim Meyering
a721b1ac67 (libfu_a_SOURCES): Add version-etc.c.
(noinst_HEADERS): Add version-etc.h.
1999-03-26 04:20:23 +00:00
Jim Meyering
2a147b2b43 (parse_long_options): Remove version-, copyright-,
and author-printing code.  Do it via version_etc.
1999-03-26 04:19:07 +00:00
Jim Meyering
c004c87b6c *** empty log message *** 1999-03-26 04:17:33 +00:00
Jim Meyering
eff1cee6e1 (GETOPT_HELP_CHAR): Define.
(GETOPT_VERSION_CHAR): Define.
(GETOPT_HELP_OPTION_DECL): Define.
(GETOPT_VERSION_OPTION_DECL): Define.
(case_GETOPT_HELP_CHAR): Define.
(case_GETOPT_VERSION_CHAR): Define.
1999-03-26 04:12:41 +00:00
Jim Meyering
06303195c0 No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 04:11:15 +00:00
Jim Meyering
dd007634ac No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
1999-03-26 04:10:55 +00:00
Jim Meyering
562f29a2a2 (recheck): Factor out a block of duplicated code.
Set f->size to 0 upon encountering a new file so we read it from
the beginning rather than from then end of the first line or
block.  Otherwise, after a log rotation, tail would omit the first
line or block of the new file.  Reported by Ed Avis.
1999-03-25 14:29:13 +00:00
Jim Meyering
11212212b0 *** empty log message *** 1999-03-25 14:23:40 +00:00
Jim Meyering
1271e5321c *** empty log message *** 1999-03-24 13:48:48 +00:00
Jim Meyering
0b80d92d60 import 1.010 1999-03-24 13:48:22 +00:00
Jim Meyering
542d10fd71 *** empty log message *** 1999-03-22 22:36:39 +00:00
Jim Meyering
cec649b346 tweak usage message -- from Karl 1999-03-22 22:36:12 +00:00
Jim Meyering
04d1d85350 *** empty log message *** 1999-03-22 22:35:53 +00:00
Jim Meyering
cdbee41fbf *** empty log message *** 1999-03-21 13:38:51 +00:00
Jim Meyering
153de419bc import latest 1999-03-21 01:56:57 +00:00
Jim Meyering
bc3d22ae9b . 1999-03-20 23:25:35 +00:00
Jim Meyering
dafd051712 . 1999-03-20 23:24:55 +00:00
Jim Meyering
fde28088f4 *** empty log message *** 1999-03-20 23:24:23 +00:00
Jim Meyering
c2db2a08d9 s/jm_WITH_REGEX/jm_INCLUDED_REGEX/ 1999-03-20 23:24:15 +00:00
Jim Meyering
1424b8fd50 *** empty log message *** 1999-03-20 23:23:20 +00:00
Jim Meyering
df3d9f6812 (jm_INCLUDED_REGEX): Rename from jm_WITH_REGEX.
Don't depend on AM_GLIBC.  Suggestions from Alain Magloire.
1999-03-20 23:23:14 +00:00
Jim Meyering
df570c09ee *** empty log message *** 1999-03-20 23:16:34 +00:00
Jim Meyering
e2ff4b6e90 Don't modify PATH just to get GNU nice. Instead, try
to find an absolute path for GNU nice.  From Bruno Haible.
1999-03-20 23:10:02 +00:00
Jim Meyering
e16c2033b4 *** empty log message *** 1999-03-20 15:01:34 +00:00
Jim Meyering
4159e9e2f6 *** empty log message *** 1999-03-20 04:36:50 +00:00
Jim Meyering
a6ea4bd455 [WINSIZE_IN_PTEM]: Include sys/stream.h and sys/ptem.h.
Required by SCO ODT 2.0 systems.  Reported by William Bader.
1999-03-20 04:07:01 +00:00
Jim Meyering
f9ce2cffec *** empty log message *** 1999-03-20 04:06:02 +00:00
Jim Meyering
2bf19e8467 *** empty log message *** 1999-03-20 04:02:37 +00:00
Jim Meyering
5a16e75a56 (jm_WINSIZE_IN_PTEM): New macro. 1999-03-20 04:02:23 +00:00
Jim Meyering
fd6c9bbcef . 1999-03-18 15:34:12 +00:00
Jim Meyering
ab589a9ada (remove_cwd_entries): Reflect changes in hash_insert.
(remove_init): Call hash_initialize with one more argument.
1999-03-18 15:33:56 +00:00
Jim Meyering
3a7f42f1a8 . 1999-03-17 21:15:46 +00:00
Jim Meyering
278e9999a9 *** empty log message *** 1999-03-17 14:18:09 +00:00
Jim Meyering
8ee5e50927 (is_prime): Return bool rather than int. 1999-03-17 14:07:34 +00:00
Jim Meyering
3ae2c2ecf0 import latest 1999-03-16 15:34:33 +00:00
Jim Meyering
5cfbca30a9 tweak comments
add curlies
use assert(0) in place of abort
1999-03-15 16:52:22 +00:00
Jim Meyering
6d97ed71b7 *** empty log message *** 1999-03-15 15:50:55 +00:00
Jim Meyering
0a1a14a095 Revamp to allow fine-tuning to control when and by how
much the table grows and shrinks.
(next_prime): Don't assert.
(hash_reset_tuning): New function.
(check_tuning): New function.
(hash_initialize): Accept and use new tuning parameter.
(hash_rehash): Rewrite, updating for tuning.
(hash_insert): Honor tuning semantics.
(hash_delete): Likewise.
From Franois Pinard.
1999-03-15 15:50:31 +00:00
Jim Meyering
674d2ec393 (struct hash_tuning): Define.
(struct hash_table) [tuning]: Add member.
(hash_initialize): Add `tuning' parameter.
1999-03-15 15:41:59 +00:00
Jim Meyering
96359cf648 (hash_insert): Update prototype. 1999-03-15 15:33:21 +00:00
Jim Meyering
855b12df1d (hash_insert): Remove last parameter and change semantics.
(hash_insert): Don't increment n_entries unconditionally --
otherwise, we'd do so even when the insertion failed.
From Franois Pinard.
1999-03-15 15:33:01 +00:00
Jim Meyering
6e8f572094 . 1999-03-14 21:39:42 +00:00
Jim Meyering
e4fd405431 (tac_mem): `#if-0'-out this unused function.
(tac_stdin_to_mem): Likewise.
1999-03-13 20:30:33 +00:00
Jim Meyering
e9e5d9bf3f . 1999-03-13 20:29:14 +00:00
Jim Meyering
9e1ddcbf89 . 1999-03-13 20:28:51 +00:00
Jim Meyering
2003f808c7 (cut invocation): Describe --output-delimiter. 1999-03-13 17:26:44 +00:00
Jim Meyering
5c591b0e36 *** empty log message *** 1999-03-13 16:24:16 +00:00
Jim Meyering
dac5c72090 *** empty log message *** 1999-03-13 16:22:59 +00:00
Jim Meyering
5c8eb257ea *** empty log message *** 1999-03-13 16:21:19 +00:00
Jim Meyering
703336d148 *** empty log message *** 1999-03-13 16:19:18 +00:00
Jim Meyering
2bc2cc2f54 (base_name): If NAME is all slashes, return `/' (in
conformance with the single unix spec).  Reported by Peter Moulder.
1999-03-13 16:09:00 +00:00
Jim Meyering
1905d5266b *** empty log message *** 1999-03-12 15:24:25 +00:00
Jim Meyering
58bb02e74d *** empty log message *** 1999-03-12 15:19:29 +00:00
Jim Meyering
dc82d52a02 *** empty log message *** 1999-03-12 15:15:23 +00:00
Jim Meyering
158b19d487 *** empty log message *** 1999-03-12 15:14:05 +00:00
Jim Meyering
e0aa18bb33 (dump_remainder): Don't fflush stdout here.
(main) [if forever]: Make stdout unbuffered, instead.
1999-03-12 15:12:55 +00:00
Jim Meyering
ac6d2b033e (SETVBUF): Define new macro. 1999-03-12 15:11:57 +00:00
Jim Meyering
a3631a8114 *** empty log message *** 1999-03-12 15:11:29 +00:00
Jim Meyering
5478a521d6 Use AC_FUNC_SETVBUF_REVERSED. 1999-03-12 15:11:06 +00:00
Jim Meyering
ff12f6ff27 Declare getloadavg so I can build with -Werror. 1999-03-11 04:05:25 +00:00
Jim Meyering
ae79d1fceb *** empty log message *** 1999-03-11 03:57:23 +00:00
Jim Meyering
45eb5dac3c Skip failing tests: parenb, -parenb, -cread. 1999-03-11 03:49:07 +00:00
Jim Meyering
95d1aad02d *** empty log message *** 1999-03-10 15:39:29 +00:00
Jim Meyering
b910e6ea14 (canon_host): Don't use he->h_addr directly.
Based on a patch from Savochkin Andrey Vladimirovich.
1999-03-10 15:39:02 +00:00
Jim Meyering
4ba4999328 (getugroups): Take new parameter, gid.
Add gid to the list of groups.
From Ulrich Drepper.
1999-03-10 15:35:47 +00:00
Jim Meyering
d7176770d4 *** empty log message *** 1999-03-10 15:34:45 +00:00
Jim Meyering
fe27c7d14e fix typo in comment. 1999-03-09 18:53:54 +00:00
Jim Meyering
0c23f18574 *** empty log message *** 1999-03-09 16:11:03 +00:00
Jim Meyering
fbaac7ba29 fix small thinko 1999-03-09 16:10:30 +00:00
Jim Meyering
959eb64fb4 (xgetgroups): Take new parameter, gid, and pass it to getugroups.
(print_group_list): Call getpwuid and adjust calls to xgetgroups
to include new parameter.
1999-03-09 16:08:19 +00:00
Jim Meyering
290a9e03f2 (getugroups): Take new parameter, gid.
Add gid to the list of groups.
From Ulrich Drepper.
1999-03-09 16:07:49 +00:00
Jim Meyering
c057543e47 protoize 1999-03-09 16:07:16 +00:00
Jim Meyering
7456d2a652 . 1999-03-08 14:42:45 +00:00
Jim Meyering
965a1e5a94 *** empty log message *** 1999-03-08 14:41:57 +00:00
Jim Meyering
bee00278e6 *** empty log message *** 1999-03-08 14:40:54 +00:00
Jim Meyering
59aae8f311 *** empty log message *** 1999-03-08 14:37:40 +00:00
Jim Meyering
097ca8427d *** empty log message *** 1999-03-08 02:44:05 +00:00
Jim Meyering
546f3f81da (xalloc_fail): Use "%s" format so the message doesn't
have to be scanned for % signs.  Suggestion from Franois Pinard.
1999-03-08 02:43:14 +00:00
Jim Meyering
e879a5a73e *** empty log message *** 1999-03-07 21:00:44 +00:00
Jim Meyering
8eaa894f84 Add two more URLs and the loops to use them. 1999-03-07 20:19:08 +00:00
Jim Meyering
be65d0ad03 restore blank lines in --version output 1999-03-07 17:48:10 +00:00
Jim Meyering
3a69319e76 *** empty log message *** 1999-03-07 17:03:18 +00:00
Jim Meyering
0d24fd9224 *** empty log message *** 1999-03-07 16:59:29 +00:00
Jim Meyering
9bf8b6b4c7 Use only those *_unlocked macros that are declared. 1999-03-07 16:59:21 +00:00
Jim Meyering
4677710c39 *** empty log message *** 1999-03-07 16:44:06 +00:00
Jim Meyering
7fbb24fe4e (parse_long_options): Include `Copyright...' line in --version output. 1999-03-07 16:43:15 +00:00
Jim Meyering
c537a72db4 *** empty log message *** 1999-03-07 16:06:45 +00:00
Jim Meyering
23b14f50e3 Test for the actual feature.
With help from Eli Zaretskii.
1999-03-07 16:06:33 +00:00
Jim Meyering
b9842e7300 *** empty log message *** 1999-03-07 15:53:48 +00:00
Jim Meyering
2cd167fba1 (parse_long_options): Add the `...NO warranty...' message. 1999-03-07 15:53:20 +00:00
Jim Meyering
133e0a63c5 *** empty log message *** 1999-03-07 15:52:29 +00:00
Jim Meyering
95fe06e1ba (usage): Add missing \n\. 1999-03-07 15:52:14 +00:00
Jim Meyering
0c3c9353ab *** empty log message *** 1999-03-07 14:41:04 +00:00
Jim Meyering
cffac32634 *** empty log message *** 1999-03-07 14:38:08 +00:00
Jim Meyering
b035c9078c *** empty log message *** 1999-03-07 14:37:27 +00:00
Jim Meyering
b79cd299cb (TESTS): Add newline-1. 1999-03-07 14:35:18 +00:00
Jim Meyering
1e8f1e0863 Remove newline test. 1999-03-07 14:34:03 +00:00
Jim Meyering
0f8e5e93c1 remove trailing blanks 1999-03-07 13:57:27 +00:00
Jim Meyering
4433aaa043 Big pr update from Roland Huebner. 1999-03-07 13:56:47 +00:00
Jim Meyering
68bb940729 1999-02-13 Roland Huebner <rh@pelikan.cologne.de>
* src/pr.c
(main): Redefine options -s, -w to be POSIX compliant; introduce
new options -J, -S, -W to disentangle -s and -w when used together
with the three column options;
(add_line_number): Make POSIX compliant; use default number
separator TAB with single column output.
(add_line_number): Make POSIX compliant; with multicolumn output
now prefer `text columns of equal width' rather than a consequent
use of `default n-separator TAB'.
(add_line_number): Change line number cut-off from lower-oder to
higher-oder digit to avoid loss of information; no consequent
handling exists in different utilities and other UNIXes.
(char_to_clump): Expand input text tabs to 8 spaces, if
input_tab_char doesn't equal TAB (adapted to other UNIXes).
(usage): Update POSIX compliant options -s, -w; add new options -J,
-S, -W.
(main): Update the source internal documentation.
Some smaller BUGFIXES (print_sep_string, init_header, skip_to_page,
reset_status, print_header).
1999-03-07 13:46:22 +00:00
Jim Meyering
96e08503da (backslash): Use .\foo instead of \.foo so we
don't tramp on root directory in MSDOS/Windows.
Suggestion from Eli Zaretskii.
1999-03-07 13:34:30 +00:00
Jim Meyering
21e69c4002 (TESTS_ENVIRONMENT): Run md5sum with the --text option (for MSDOS). 1999-03-07 13:14:21 +00:00
Jim Meyering
bcaa45d181 *** empty log message *** 1999-03-07 05:14:30 +00:00
Jim Meyering
96e8d93844 *** empty log message *** 1999-03-07 05:11:05 +00:00
Jim Meyering
104866a990 New test: 8bit-delim. 1999-03-07 05:10:32 +00:00
Jim Meyering
3a01605b6b (getstr): Change type of `delim' parameter from char to int.
(cut_fields): Cast to `unsigned char' before comparing.
(main): Cast to `unsigned char' before assigning.
1999-03-07 05:09:23 +00:00
Jim Meyering
13106e125b *** empty log message *** 1999-03-07 04:54:43 +00:00
Jim Meyering
8a8a4eeab0 (batch_convert): Use a `%s' format in error call,
in case the argument string contains a `%'.
1999-03-07 04:54:36 +00:00
Jim Meyering
075ce6b479 *** empty log message *** 1999-03-07 04:53:14 +00:00
Jim Meyering
c771f143db (main): Use a `%s' format in error call,
in case the argument string contains a `%'.
1999-03-07 04:52:49 +00:00
Jim Meyering
76b9399091 (FATAL_ERROR): s/s/Message 1999-03-07 04:50:48 +00:00
Jim Meyering
81706baebd (swallow_file_in_memory): Use a `%s' format in error call,
in case the argument string contains a `%'.
1999-03-07 04:35:33 +00:00
Jim Meyering
59277d9406 (swallow_file_in_memory): Slurp up the whole file at
once on MSDOS as well, but we have to relax the test for whether
reading it succeeded.
1999-03-07 04:32:25 +00:00
Jim Meyering
73444fc778 [__DJGPP__]: Include <io.h> and <sys/exceptn.h>. 1999-03-07 04:10:17 +00:00
Jim Meyering
f62a91b03e . 1999-03-06 22:01:29 +00:00
Jim Meyering
a820bf8457 *** empty log message *** 1999-03-06 22:00:52 +00:00
Jim Meyering
1120f4c00c . 1999-03-06 22:00:09 +00:00
Jim Meyering
e2fcc9923d . 1999-03-06 21:59:25 +00:00
Jim Meyering
a7c6ba5e86 *** empty log message *** 1999-03-06 15:31:38 +00:00
Jim Meyering
5b2aa1846b Include long-options.h.
[long_options]: Remove the "help" and "version" entries.
Remove declarations of show_help and show_version.
(main): Use parse_long_options, including author name(s).
Remove the show_version and show_help blocks.
1999-03-06 15:28:54 +00:00
Jim Meyering
782b270314 *** empty log message *** 1999-03-04 14:02:25 +00:00
Jim Meyering
ff743d5451 (main): Include author name argument in call to parse_long_options. 1999-03-04 14:02:14 +00:00
Jim Meyering
0f67dfcaa3 *** empty log message *** 1999-03-04 05:36:19 +00:00
Jim Meyering
88cbad9817 Include long-options.h
[long_options]: Remove the "help" and "version" entries.
Remove declarations of show_help and show_version.
(main): Use parse_long_options, including author name(s).
Remove the show_version and show_help blocks.
1999-03-04 05:36:10 +00:00
Jim Meyering
0ae96f2361 (main): Include author name argument in call to parse_long_options. 1999-03-04 05:33:22 +00:00
Jim Meyering
32deb2026b (main): Include author name argument in call to parse_long_options. 1999-03-04 05:32:11 +00:00
Jim Meyering
8a61d8e336 Include long-options.h
[long_options]: Remove the "help" and "version" entries.
Remove declarations of show_help and show_version.
(main): Remove `const' attribute from dcl of argv parameter.
Call bindtextdomain and textdomain.
Use parse_long_options, including author name(s).
Remove the show_version and show_help blocks.
1999-03-04 05:31:17 +00:00
Jim Meyering
6e7be7b1c6 (main): Include author name argument. 1999-03-04 05:26:47 +00:00
Jim Meyering
51f63eeac9 *** empty log message *** 1999-03-04 05:09:13 +00:00
Jim Meyering
61fa70ac19 Include long-options.h
[long_options]: Remove the "help" and "version" entries.
(main): Use parse_long_options, including author name(s).
Remove the show_version and show_help blocks.
1999-03-04 05:09:05 +00:00
Jim Meyering
d0bdbe00ba Update prototype. 1999-03-04 05:08:21 +00:00
Jim Meyering
e35e21e280 (_): Define it.
(parse_long_options): Accept new parameter, authors, and print it.
1999-03-04 05:08:01 +00:00
Jim Meyering
8f443fb9c1 *** empty log message *** 1999-03-03 03:46:58 +00:00
Jim Meyering
d48f86fb02 *** empty log message *** 1999-03-02 13:53:48 +00:00
Jim Meyering
a877f41093 (read_utmp) [HAVE_UTMPNAME]: Rewrite. 1999-03-02 13:53:33 +00:00
Jim Meyering
88ab6854e5 import latest 1999-03-02 02:44:56 +00:00
Jim Meyering
09483e6dc6 *** empty log message *** 1999-02-19 07:33:55 +00:00
Jim Meyering
fce748fe1f <alloca.h>: Include if HAVE_ALLOCA_H, not FORCE_ALLOCA_H.
The FORCE_ALLOCA_H was a relic of the bad old pre-autoconf Emacs days.
1999-02-19 07:31:48 +00:00
Jim Meyering
878b334351 *** empty log message *** 1999-02-17 20:12:20 +00:00
Jim Meyering
0800a11f65 (AM_GNU_GETTEXT): Do `changequote' around use of brackets
in macro definition.  From Eli Zaretskii and Alain Magloire.
1999-02-17 20:12:10 +00:00
Jim Meyering
37f353eb26 tweak comment 1999-02-17 14:58:41 +00:00
Jim Meyering
68cab6ea0d (wipename): Fix string thinko. Now, shredding files
in subdirectories works (dir/file).  From Janos Farkas.
1999-02-17 14:41:39 +00:00
Jim Meyering
2e250112ee *** empty log message *** 1999-02-17 14:41:22 +00:00
Jim Meyering
a4758241e7 new version from Uli 1999-02-16 21:35:48 +00:00
Jim Meyering
4762e42042 . 1999-02-16 14:52:40 +00:00
Jim Meyering
8e42ae2cc4 . 1999-02-16 04:23:49 +00:00
Jim Meyering
824529d0aa (usage): add \n\ 1999-02-16 04:22:00 +00:00
Jim Meyering
7568de8654 update copyright dates 1999-02-16 04:20:43 +00:00
Jim Meyering
16f3644da7 *** empty log message *** 1999-02-16 04:19:44 +00:00
Jim Meyering
e2bf10d90e (main): #ifdef-out unreachable code. 1999-02-16 04:18:43 +00:00
Jim Meyering
df7b9c808b update copyright dates 1999-02-16 04:17:15 +00:00
Jim Meyering
4eb7ae21e8 (usage): Add a one-line description. 1999-02-16 04:15:46 +00:00
Jim Meyering
07c6f5e387 update copyright dates 1999-02-16 04:14:17 +00:00
Jim Meyering
e02df462ba *** empty log message *** 1999-02-15 15:42:39 +00:00
Jim Meyering
b874c17169 *** empty log message *** 1999-02-15 15:25:29 +00:00
Jim Meyering
e63a340c46 *** empty log message *** 1999-02-15 13:43:27 +00:00
Jim Meyering
aa1c4f58f1 . 1999-02-14 16:49:44 +00:00
Jim Meyering
089aa98fb8 *** empty log message *** 1999-02-14 03:29:33 +00:00
Jim Meyering
69272c2e85 (dc_parse_stream): Don't try to dereference NULL
if there's an error is in our built-in list.
1999-02-14 03:28:41 +00:00
Jim Meyering
421265ba29 *** empty log message *** 1999-02-14 02:36:41 +00:00
Jim Meyering
0fbe67a146 (main): Set x.backup_type only if backups are requested.
(cp_option_init): Initialize backup_type.
(backup_type): Remove unused variable.
1999-02-14 02:36:16 +00:00
Jim Meyering
a0a658c1f6 import latest 1999-02-09 20:49:55 +00:00
Jim Meyering
232eb53f42 *** empty log message *** 1999-02-09 05:04:50 +00:00
Jim Meyering
147d933a4f (slack_codes): Add "DOOR".
(ls_codes): Add corresponding "do".
1999-02-09 05:04:18 +00:00
Jim Meyering
6dde919c8a *** empty log message *** 1999-02-08 04:02:16 +00:00
Jim Meyering
0bf08d23cd Run all tests even if some fails.
Don't use trap.
1999-02-08 04:01:34 +00:00
Jim Meyering
ed2d3ddb6b Use `stty', not $STTY.
Fix typo in VERBOSE code: s/\$RM/stty/.
1999-02-08 03:42:02 +00:00
Jim Meyering
3dea3dfe03 (TESTS_ENVIRONMENT): Set PATH, not STTY. 1999-02-08 03:40:51 +00:00
Jim Meyering
70a87bf7ca *** empty log message *** 1999-02-08 03:35:15 +00:00
Jim Meyering
1a4f074c9e Don't include stdio.h. 1999-02-08 03:32:38 +00:00
Jim Meyering
9b1973fbd7 Include stdio.h. 1999-02-08 03:32:06 +00:00
Jim Meyering
03b1afaa8d *** empty log message *** 1999-02-08 03:31:41 +00:00
Jim Meyering
60979fecbb copyright date 1999-02-08 03:31:26 +00:00
Jim Meyering
e9144d8d30 copyright date 1999-02-08 03:30:52 +00:00
Jim Meyering
0c87b3168c Include stdio.h. 1999-02-08 03:30:33 +00:00
Jim Meyering
3946ca7fc1 Include stdio.h. 1999-02-08 03:30:06 +00:00
Jim Meyering
2dc3a543b1 Include stdio.h. 1999-02-08 03:29:36 +00:00
Jim Meyering
f7bb13ecd8 Include stdio.h. 1999-02-08 03:29:02 +00:00
Jim Meyering
68737ed84b s/@code etc./@env/ for envvars 1999-02-08 03:26:59 +00:00
Jim Meyering
e91bb3d2e9 typos, s/@code/@env/ for envvars 1999-02-08 00:03:16 +00:00
Jim Meyering
5fd73cbdf3 *** empty log message *** 1999-02-08 00:00:44 +00:00
Jim Meyering
07a5b9fe8e *** empty log message *** 1999-02-07 23:34:24 +00:00
Jim Meyering
cb954e6a87 *** empty log message *** 1999-02-07 23:31:49 +00:00
Jim Meyering
2d463bbcb5 *** empty log message *** 1999-02-07 23:07:43 +00:00
Jim Meyering
7d957fac2e *** empty log message *** 1999-02-07 23:06:38 +00:00
Jim Meyering
238e6f6a40 . 1999-02-07 23:06:14 +00:00
Jim Meyering
9625a6cdaf *** empty log message *** 1999-02-07 23:06:10 +00:00
Jim Meyering
05b9afe56b (my-distcheck): Don't depend on dist, now that this
is hooked up to the distcheck rule.
1999-02-07 23:02:34 +00:00
Jim Meyering
84f044b998 . 1999-02-07 23:00:01 +00:00
Jim Meyering
bc885b89c1 . 1999-02-07 16:38:18 +00:00
Jim Meyering
24c3de8eb7 *** empty log message *** 1999-02-07 16:37:08 +00:00
Jim Meyering
a2c6534e1d *** empty log message *** 1999-02-07 16:36:58 +00:00
Jim Meyering
38c9d6d2b6 . 1999-02-07 16:35:56 +00:00
Jim Meyering
a8f75cc5c9 . 1999-02-07 16:35:30 +00:00
Jim Meyering
467a9bfd4b New file -- extracted from sh-utils' configure.in. 1999-02-07 14:24:08 +00:00
Jim Meyering
c0dfa7f21b *** empty log message *** 1999-02-07 13:49:07 +00:00
Jim Meyering
9e0faa6d18 Support DOS-style d:/foo/bar absolute file names.
From Eli Zaretskii.
1999-02-07 13:41:27 +00:00
Jim Meyering
7e74cfab42 Use AC_SUBST(LIBOBJS) since we set LIBOBJS. 1999-02-07 05:37:39 +00:00
Jim Meyering
c77b696d1e *** empty log message *** 1999-02-07 05:32:49 +00:00
Jim Meyering
2c13a275ca Use .$ac_objext, not .o 1999-02-07 05:27:24 +00:00
Jim Meyering
48a0c3d403 . 1999-02-07 05:24:19 +00:00
Jim Meyering
a59624613d *** empty log message *** 1999-02-07 05:24:15 +00:00
Jim Meyering
88869ee024 Actually invoke jm_WITH_REGEX now that it requires an argument. 1999-02-07 05:23:27 +00:00
Jim Meyering
505f12e2e4 Add a run-time Test for proper operation of re_compile_pattern. 1999-02-07 05:20:23 +00:00
Jim Meyering
4473f3cb6e import latest 1999-02-06 18:37:55 +00:00
Jim Meyering
4ae35f8a89 cpp indent 1999-02-03 15:23:21 +00:00
Jim Meyering
cd9a08e476 (S_ISDOOR): Define if missing. 1999-02-03 13:56:43 +00:00
Jim Meyering
6025f81e94 . 1999-02-03 13:53:26 +00:00
Jim Meyering
e7dc64cdaf *** empty log message *** 1999-02-03 06:40:30 +00:00
Jim Meyering
ee34311b45 *** empty log message *** 1999-02-03 06:39:02 +00:00
Jim Meyering
ec20f35608 *** empty log message *** 1999-02-03 05:42:15 +00:00
Jim Meyering
0d148ec872 Handle DOOR. 1999-02-03 05:41:42 +00:00
Jim Meyering
751a3dc73b (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
Define to zero if not already defined.
(HAVE_SYMLINKS): Define.
(gobble_file): Remove #ifdef.
(get_link_name, make_link_path): Guard these with #if HAVE_SYMLINKS
rather than #ifdef S_ISLNK.
(print_type_indicator): Remove #ifdefs and reorganize.
(print_color_indicator): Remove #ifdefs.
(length_of_file_name_and_frills): Likewise.
1999-02-03 05:41:18 +00:00
Jim Meyering
43aa4122fc (print_type_indicator): Print doors as '>'.
(length_of_file_name_and_frills): Account for this.
1999-02-03 05:16:22 +00:00
Jim Meyering
a6d3060450 (ftypelet): Handle doors.
(S_ISDOOR): Define if missing.
1999-02-03 05:15:07 +00:00
Jim Meyering
015e2e77ed New version from L. Peter Deutsch. 1999-02-03 02:01:06 +00:00
Jim Meyering
b10a3f942e *** empty log message *** 1999-02-01 13:50:32 +00:00
Jim Meyering
ca787f30f6 (STRXCASECMP_FUNCTION): Don't increment within macro argument list.
From Akim Demaille.
1999-02-01 13:50:12 +00:00
Jim Meyering
ac68c4f0c9 *** empty log message *** 1999-01-31 23:16:49 +00:00
Jim Meyering
45d503f7f9 Wrap the @top node in @ifnottex instead of
@ifinfo so `makeinfo --html ...' works.  From Karl Berry.
1999-01-31 23:16:31 +00:00
Jim Meyering
3aaa173ce2 *** empty log message *** 1999-01-31 23:15:38 +00:00
Jim Meyering
7f7cdc86f9 Wrap the @top node in @ifnottex instead of
@ifinfo so `makeinfo --html ...' works.  From Karl Berry.
1999-01-31 23:15:30 +00:00
Jim Meyering
c54cb6e13b *** empty log message *** 1999-01-31 23:04:21 +00:00
Jim Meyering
c900767da2 *** empty log message *** 1999-01-31 18:51:14 +00:00
Jim Meyering
9f0e21b7ca new test: Create a hard link to a dangling symlink. 1999-01-31 18:51:08 +00:00
Jim Meyering
7442141536 *** empty log message *** 1999-01-31 18:44:48 +00:00
Jim Meyering
2aa0dbcc2e *** empty log message *** 1999-01-31 18:44:34 +00:00
Jim Meyering
94fa239afa *** empty log message *** 1999-01-31 18:44:14 +00:00
Jim Meyering
4872440d7a (do_link): Allow creation of a hard link to a dangling
symlink.  Reported by Alexey Solovyov:
1999-01-31 18:41:36 +00:00
Jim Meyering
821fddfdc5 *** empty log message *** 1999-01-31 18:41:18 +00:00
Jim Meyering
9a5044f0ea *** empty log message *** 1999-01-31 18:18:16 +00:00
Jim Meyering
2f07328f17 (main): Call chdir ("/") after chroot.
Suggestion from James Youngman.
1999-01-31 17:50:53 +00:00
Jim Meyering
09619556e6 . 1999-01-31 17:13:53 +00:00
Jim Meyering
5b070b2329 *** empty log message *** 1999-01-31 16:55:51 +00:00
Jim Meyering
a12101a224 Include locale.h.
[!HAVE_SETLOCALE]: Define-away setlocale.
(getloadavg): Ensure the sscanf of /proc/getloadavg data uses the
`C' numeric locale.  Restore afterwards.
1999-01-31 16:54:00 +00:00
Jim Meyering
62b3fd4e81 (print_uptime): Use the C numeric locale for sscanf
of /proc/uptime data, then restore.
1999-01-31 16:53:28 +00:00
Jim Meyering
c4ece6d8cb *** empty log message *** 1999-01-31 16:23:10 +00:00
Jim Meyering
69649d98b1 Check for locale.h and the function, setlocale. 1999-01-31 16:22:58 +00:00
Jim Meyering
99ce6d77e0 *** empty log message *** 1999-01-31 15:28:53 +00:00
Jim Meyering
3f9c40bdcb Protoize. 1999-01-31 15:28:48 +00:00
Jim Meyering
3b1dbb8f30 *** empty log message *** 1999-01-31 15:18:25 +00:00
Jim Meyering
6de09f9d18 *** empty log message *** 1999-01-31 15:13:00 +00:00
Jim Meyering
eaec7699ac (copy_internal): Describe any backup-related renaming
operations when in verbose mode.
(copy_internal): Likewise.
Based on changes from Marty Leisner.
1999-01-31 15:12:43 +00:00
Jim Meyering
e960794409 *** empty log message *** 1999-01-31 14:47:18 +00:00
Jim Meyering
82eb2dcf9e Declare chown manually. 1999-01-31 14:46:08 +00:00
Jim Meyering
c1fb8566f6 . 1999-01-31 14:16:28 +00:00
Jim Meyering
ef68c26a22 . 1999-01-31 05:41:02 +00:00
Jim Meyering
8ec1a397be . 1999-01-31 05:40:21 +00:00
Jim Meyering
9b531d8675 . 1999-01-31 05:39:01 +00:00
Jim Meyering
fc965709f9 *** empty log message *** 1999-01-31 05:29:41 +00:00
Jim Meyering
44a61d78bb Use 3-arg form of AC_DEFINE. 1999-01-31 05:29:34 +00:00
Jim Meyering
9195b6970b *** empty log message *** 1999-01-31 05:10:23 +00:00
Jim Meyering
eaacf48c40 . 1999-01-31 05:07:11 +00:00
Jim Meyering
263bc0f77b Make this a wrapper around the official AM_FUNC_MKTIME
rather than my private copy, now that the official one is up to date.
1999-01-31 05:06:51 +00:00
Jim Meyering
29d4ea7270 *** empty log message *** 1999-01-30 16:35:04 +00:00
Jim Meyering
9196dbf945 *** empty log message *** 1999-01-30 15:55:43 +00:00
Jim Meyering
98edf21e5e . 1999-01-30 15:53:25 +00:00
Jim Meyering
7dfa1c9eaa use AC_DEFINE_UNQUOTED, now 1999-01-30 14:20:15 +00:00
Jim Meyering
c1ea7960a5 *** empty log message *** 1999-01-30 13:51:20 +00:00
Jim Meyering
076e82b82b Use 3-arg form of AC_DEFINE. 1999-01-30 13:50:58 +00:00
Jim Meyering
779b181b61 Use 3-arg form of AC_DEFINE. 1999-01-30 13:38:57 +00:00
Jim Meyering
97f8518205 *** empty log message *** 1999-01-30 05:35:42 +00:00
Jim Meyering
d713f56660 use 3-arg form of AC_DEFINE_UNQUOTED 1999-01-30 05:35:10 +00:00
Jim Meyering
fed619866d *** empty log message *** 1999-01-30 05:34:00 +00:00
Jim Meyering
5d8751167c require 2.13 1999-01-30 04:51:49 +00:00
Jim Meyering
77f5cd6359 . 1999-01-29 13:45:11 +00:00
Jim Meyering
523442d018 *** empty log message *** 1999-01-29 05:15:49 +00:00
Jim Meyering
b04492c62b *** empty log message *** 1999-01-29 05:07:30 +00:00
Jim Meyering
87110cd9f2 . 1999-01-29 05:06:23 +00:00
Jim Meyering
7744b342e1 *** empty log message *** 1999-01-29 05:06:03 +00:00
Jim Meyering
56fee444e2 Use the 3-argument forms of AC_DEFINE* macros. 1999-01-29 05:05:56 +00:00
Jim Meyering
cef9c0a44a Use jm_AFS. 1999-01-29 05:03:30 +00:00
Jim Meyering
af1ef50ae1 *** empty log message *** 1999-01-29 05:00:35 +00:00
Jim Meyering
a2f2ba51bc Use TIME_WITH_SYS_TIME-based #if test rather than
TM_IN_SYS_TIME based one (for shred).
1999-01-29 04:58:32 +00:00
Jim Meyering
8bf7657cd4 . 1999-01-27 21:32:59 +00:00
Jim Meyering
4d319867cf . 1999-01-27 05:25:37 +00:00
Jim Meyering
9fe649e01a *** empty log message *** 1999-01-25 15:23:44 +00:00
Jim Meyering
922d1292c3 *** empty log message *** 1999-01-25 15:19:36 +00:00
Jim Meyering
f525fd81ca (isaac_seed): Guard clock_gettime with test of
HAVE_CLOCK_GETTIME, not CLOCK_REALTIME.
(wipename): Rename local dirfd to dir_fd to avoid shadowing the
function declared in Linux's dirent.h.
1999-01-25 15:13:10 +00:00
Jim Meyering
89826ef420 (ARRAY_CARDINALITY): Define.
(ARGMATCH_ASSERT): New macro.
1999-01-25 14:52:13 +00:00
Jim Meyering
a2e1454d4b *** empty log message *** 1999-01-25 14:33:44 +00:00
Jim Meyering
276d118b10 (usage): Remove static attribute. 1999-01-25 14:33:38 +00:00
Jim Meyering
fe9d964a78 (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:31:12 +00:00
Jim Meyering
54f4eb2224 (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:30:08 +00:00
Jim Meyering
86fb9cb9ec (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:29:22 +00:00
Jim Meyering
7082d762aa (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:28:31 +00:00
Jim Meyering
22099863b4 (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:27:48 +00:00
Jim Meyering
a4c1c9627e (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:26:38 +00:00
Jim Meyering
53ab150d29 (usage): Remove static attribute.
Move function be the first in the file.
1999-01-25 14:24:35 +00:00
Jim Meyering
1a3dfa550d . 1999-01-25 14:09:45 +00:00
Jim Meyering
2b9e4c6914 (program_name): Remove dcl.
Include error.h.
(argmatch_invalid): Use error rather than fprintf.
1999-01-25 14:08:04 +00:00
Jim Meyering
8908c87cb0 tweak comment 1999-01-25 13:59:34 +00:00
Jim Meyering
7049562dce tweak comment 1999-01-25 13:58:34 +00:00
Jim Meyering
e7ae216189 tweak comment 1999-01-25 13:54:30 +00:00
Jim Meyering
70ede084c0 *** empty log message *** 1999-01-25 05:51:07 +00:00
Jim Meyering
becdfba8b9 New version from L. Peter Deutsch. 1999-01-25 05:50:56 +00:00
Jim Meyering
cb6a8b722b *** empty log message *** 1999-01-25 00:34:39 +00:00
Jim Meyering
2ecbb0307d Exit nonzero upon failed write to stdout. 1999-01-25 00:34:26 +00:00
Jim Meyering
95ec5d7e78 *** empty log message *** 1999-01-25 00:18:55 +00:00
Jim Meyering
11a5174aa6 (DONT_UNLINK_WHILE_OPEN) [__MSDOS__ || _WIN32]: Define. 1999-01-25 00:18:47 +00:00
Jim Meyering
a9ec82981b *** empty log message *** 1999-01-25 00:17:40 +00:00
Jim Meyering
cbf82d876b (quotearg_n_options): Revert type of parameter `n'
(and hence that of the local `n1', too) to `int' at Paul's request.
1999-01-25 00:17:22 +00:00
Jim Meyering
8c5f91e5ad Add comments. 1999-01-25 00:13:36 +00:00
Jim Meyering
da9211c1c1 *** empty log message *** 1999-01-24 15:11:00 +00:00
Jim Meyering
26756c6f82 (fdatasync): Remove function. instead, ...
[! HAVE_FDATASYNC]: Define to fsync.
From Colin Plumb.
1999-01-24 15:10:22 +00:00
Jim Meyering
604691004d *** empty log message *** 1999-01-23 23:25:16 +00:00
Jim Meyering
70db3065cb (fdatasync) [! HAVE_FDATASYNC]: New function. 1999-01-23 23:07:53 +00:00
Jim Meyering
d91597a2e8 *** empty log message *** 1999-01-23 23:01:07 +00:00
Jim Meyering
1b0f03e1da (wipename): Print the `FILE: deleting' message only when in verbose mode. 1999-01-23 18:55:34 +00:00
Jim Meyering
e21cf52e03 (wipename): Print the `FILE: deleted' message only when in verbose mode. 1999-01-23 18:33:11 +00:00
Jim Meyering
4ab3a8a345 always close stdout 1999-01-23 18:15:41 +00:00
Jim Meyering
35c2b35dbd fix typos in comments 1999-01-23 17:36:33 +00:00
Jim Meyering
9550ca6b71 (pfstatus): Use __format__ and __printf__.
Remove `if __GNUC__ >= 2' guard.
1999-01-23 16:48:36 +00:00
Jim Meyering
5b181c3bd6 *** empty log message *** 1999-01-23 16:41:20 +00:00
Jim Meyering
b02f28bab4 Bracket pfstatus messages with _(). 1999-01-23 16:26:16 +00:00
Jim Meyering
68e327564d add parens around STREQ 1999-01-23 15:34:18 +00:00
Jim Meyering
e363353a48 restore mistakenly removed stdio.h
use error in place of pferror
(pferror): Remove.
(wipefd): Use error in place of fprintf(stderr,... call
s/alllocate/allocate
1999-01-23 15:32:48 +00:00
Jim Meyering
954d1b451f use `%s' rather than \"%s\" everywhere 1999-01-23 15:22:16 +00:00
Jim Meyering
8b036d56ef s/sterilize/shred/g
Don't include headers already included (and guarded by HAVE_FOO_H tests)
in system.h.
1999-01-23 15:17:54 +00:00
Jim Meyering
758bbda788 use getopt_long
(struct Options): Declare.
(usage): New function.
(program_name): Rename from argv0
(FLAG_* macros): Remove.
1999-01-23 05:32:58 +00:00
Jim Meyering
ae7d45cdc9 Include config.h, getopt.h, system.h and error.h.
Use #else/#if, not #elif.
1999-01-22 02:19:24 +00:00
Jim Meyering
6cb040753f import latest 1999-01-21 13:40:27 +00:00
Jim Meyering
42d3b0be50 *** empty log message *** 1999-01-19 04:47:33 +00:00
Jim Meyering
cdc04ccc0e (__mktime_internal): Adopt the traditional (and
problematic) notion of what to do when tm_isdst doesn't match.
From Paul Eggert.
1999-01-19 04:47:24 +00:00
Jim Meyering
509abea3f1 put back mistakenly removed pwd= assignment 1999-01-19 03:04:12 +00:00
Jim Meyering
67a1a846c4 remove temporary files 1999-01-18 18:33:58 +00:00
Jim Meyering
d3b6e5f4fb . 1999-01-18 17:14:57 +00:00
Jim Meyering
b83bf32695 . 1999-01-18 17:14:35 +00:00
Jim Meyering
65c540d59c Tweak grammar in description of ptx's --break-file=FILE option. 1999-01-18 16:30:20 +00:00
Jim Meyering
ab8dea5328 *** empty log message *** 1999-01-18 16:23:59 +00:00
Jim Meyering
a90a97ba1d Harmonization of @samp use for options. 1999-01-18 16:23:48 +00:00
Jim Meyering
21cf7cf8c2 indent -- sorry Colin. 1999-01-18 05:49:43 +00:00
Jim Meyering
9f4ddf5976 *** empty log message *** 1999-01-18 03:49:16 +00:00
Jim Meyering
25668ab60b *** empty log message *** 1999-01-18 03:47:16 +00:00
Jim Meyering
d12341e78a . 1999-01-18 03:46:48 +00:00
Jim Meyering
34ad3d2d3b Now that PATH is set properly, use ln rather than $LN. 1999-01-18 02:57:24 +00:00
Jim Meyering
bece904517 (TESTS): Add backup-1.
(TESTS_ENVIRONMENT): Set PATH here, rather than setting LN.
1999-01-18 02:56:27 +00:00
Jim Meyering
d869e3fdc0 . 1999-01-18 02:55:50 +00:00
Jim Meyering
33a1515274 . 1999-01-18 02:54:56 +00:00
Jim Meyering
890d74d50b Now that PATH is set properly, use rm and cp rather than $RM and $CP. 1999-01-18 02:54:36 +00:00
Jim Meyering
f0f15679fb . 1999-01-18 02:54:19 +00:00
Jim Meyering
b4b06d9c39 (TESTS_ENVIRONMENT): Set PATH here, rather than setting RM and CP. 1999-01-18 02:53:19 +00:00
Jim Meyering
e11c197cc2 (do_link): Try to remove DEST even after renaming it.
This fixes a bug reported by Jamie Lokier.
1999-01-18 02:41:13 +00:00
Jim Meyering
5967a93b4f *** empty log message *** 1999-01-18 02:40:30 +00:00
Jim Meyering
1f4c0ed890 cpp-indent #error line 1999-01-18 00:44:57 +00:00
Jim Meyering
9a6aae1ed7 . 1999-01-18 00:44:18 +00:00
Jim Meyering
3f05e0467f *** empty log message *** 1999-01-17 18:14:28 +00:00
Jim Meyering
ea020acdd2 (same_name): Use SAME_INODE rather than open coding it. 1999-01-17 18:12:19 +00:00
Jim Meyering
3b713062cd *** empty log message *** 1999-01-17 15:07:44 +00:00
Jim Meyering
f5f0c17fe9 Add SHELL = /bin/sh. 1999-01-17 13:53:32 +00:00
Jim Meyering
d34ec08816 compress copyright 1999-01-17 04:15:12 +00:00
Jim Meyering
7316f85aaa (ARGMATCH_DIE_DECL): Use it. 1999-01-16 17:18:01 +00:00
Jim Meyering
3c2295f52c *** empty log message *** 1999-01-16 17:15:32 +00:00
Jim Meyering
d3e2cd9eca (ARGMATCH_DIE_DECL): Define. 1999-01-16 17:15:24 +00:00
Jim Meyering
bf527b6094 *** empty log message *** 1999-01-16 17:01:20 +00:00
Jim Meyering
eb3b7c64d0 Define ARGMATCH_DIE. 1999-01-16 17:01:11 +00:00
Jim Meyering
0695444a89 . 1999-01-16 16:25:26 +00:00
Jim Meyering
cf00554f8f Don't declare base_name. 1999-01-16 16:22:00 +00:00
Jim Meyering
1b9f58551d Don't declare base_name.
Use function-style XARGMATCH once again.
1999-01-16 16:21:46 +00:00
Jim Meyering
4e83f9789c (usage): Remove `static'.
Use function-style XARGMATCH.
1999-01-16 16:20:02 +00:00
Jim Meyering
29064b5f4f Remove declarations of base_name and get_version.
(main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
Use xget_version and function-style XARGMATCH.
1999-01-16 16:18:26 +00:00
Jim Meyering
fadedac410 Remove declarations of base_name and get_version.
(main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
Use xget_version and function-style XARGMATCH.
1999-01-16 16:14:56 +00:00
Jim Meyering
06f14ae760 Remove declarations of base_name and get_version.
(main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
Use xget_version and function-style XARGMATCH.
1999-01-16 16:14:31 +00:00
Jim Meyering
1592f752f6 Don't declare base_name.
(usage): Don't make it static so that it can be
called from libfu.a by xargmatch.
1999-01-16 16:13:31 +00:00
Jim Meyering
84b4618b26 Remove declarations of base_name and get_version.
(main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
Use xget_version and function-style XARGMATCH.
1999-01-16 16:12:05 +00:00
Jim Meyering
414cf1b428 (base_name): Declare. 1999-01-16 16:04:43 +00:00
Jim Meyering
b76f341922 (quotearg_n_options): Declare n1 to be of type
unsigned int, not just int.
1999-01-16 15:55:20 +00:00
Jim Meyering
10f96d621c (get_version): Adjust prototype.
(xget_version): Add prototype.
(base_name): Remove prototype.
1999-01-16 15:54:22 +00:00
Jim Meyering
306ea2b028 [!HAVE_DECL_GETENV]: Declare getenv.
(backup_args): Reorder enum members.
(backup_types): Likewise.
(get_version): Take an additional parameter, `context'.
(xget_version): Like get_version, but if the `version' argument is NULL,
use the value of the envvar VERSION_CONTROL.
(base_name): Declare.
1999-01-16 15:51:21 +00:00
Jim Meyering
ff5b4df30b Add prototype for base_name. 1999-01-16 15:37:25 +00:00
Jim Meyering
20bc02752b (usage): Don't make it static so that it can be called from libfu.a by xargmatch. 1999-01-16 15:34:59 +00:00
Jim Meyering
410a3c94e8 (usage): Don't make it static so that it can be called from libfu.a by xargmatch. 1999-01-16 15:33:16 +00:00
Jim Meyering
c94e186b91 s/argmatch_exit_failure/argmatch_die/ 1999-01-16 15:21:52 +00:00
Jim Meyering
e42efa6866 (EXIT_FAILURE): Define.
(ARGMATCH_DIE): Use it.
1999-01-16 15:17:48 +00:00
Jim Meyering
115a5d0e61 *** empty log message *** 1999-01-16 15:12:19 +00:00
Jim Meyering
f28d5ba125 (XARGMATCH): Define to return a value once again.
(XARGCASEMATCH): Likewise.
1999-01-16 15:12:04 +00:00
Jim Meyering
f22e54a579 (ARGMATCH_DIE): Provide default.
(__xargmatch_internal): New function.
s/rogram_name/program_name.
From Akim Demaille.
1999-01-16 15:06:41 +00:00
Jim Meyering
888b0fe143 import latest 1999-01-15 13:26:46 +00:00
Jim Meyering
e0c1e743cc *** empty log message *** 1999-01-14 18:44:38 +00:00
Jim Meyering
3e60c9744d Use f', not x' as temp. file name to avoid warnings from perl5.004. 1999-01-14 18:43:54 +00:00
Jim Meyering
3cce240e0a . 1999-01-14 18:27:33 +00:00
Jim Meyering
17a4ddab33 *** empty log message *** 1999-01-14 18:27:01 +00:00
Jim Meyering
d2e1175756 (parse_long_options): Rename `usage' parameter
to avoid shadowing globally scoped function.
1999-01-14 18:26:51 +00:00
Jim Meyering
9fec9172be Don't prototype usage as static. 1999-01-14 18:25:16 +00:00
Jim Meyering
da25811932 Include closeout.h. (main): Use close_stdout. 1999-01-14 15:37:04 +00:00
Jim Meyering
dc4fd4c43b Include closeout.h. (main): Use close_stdout_status. 1999-01-14 15:36:50 +00:00
Jim Meyering
26ba9ca9df . 1999-01-13 05:50:34 +00:00
Jim Meyering
f749a71868 . 1999-01-13 05:50:05 +00:00
Jim Meyering
43ca488eae *** empty log message *** 1999-01-13 05:42:38 +00:00
Jim Meyering
b0c149e78f new version from automake 1999-01-13 05:40:42 +00:00
Jim Meyering
97bc6652e7 . 1999-01-13 05:38:11 +00:00
Jim Meyering
e0ad1ee4d1 . 1999-01-13 05:38:08 +00:00
Jim Meyering
af821763c5 new version from glibc 1999-01-13 05:37:17 +00:00
Jim Meyering
4a90a25973 new version from glibc 1999-01-13 05:36:45 +00:00
Jim Meyering
570fa71fb3 add parens, s/|/;/ 1999-01-12 17:40:08 +00:00
Jim Meyering
8d891cbf63 *** empty log message *** 1999-01-12 17:35:22 +00:00
Jim Meyering
58d4fd72fe Rewrite to avoid using fmt. 1999-01-12 17:35:13 +00:00
Jim Meyering
b517135765 . 1999-01-11 05:49:42 +00:00
Jim Meyering
f4e4297031 *** empty log message *** 1999-01-11 05:01:31 +00:00
Jim Meyering
22d584b475 . 1999-01-11 04:58:28 +00:00
Jim Meyering
f6aaba2b34 *** empty log message *** 1999-01-11 04:53:02 +00:00
Jim Meyering
c970990a0a All of the following new code is protected by `#if DONT_UNLINK_WHILE_OPEN'
(file_to_remove): New global.
(fp_to_close): New global.
(unlink_tempfile): New function.
(record_tempfile): New function.
(save_stdin): Call record_tempfile.
Use SET_BINARY.
(main): Use SET_BINARY and SET_BINARY2.
From Eli Zaretskii.
1999-01-11 04:52:44 +00:00
Jim Meyering
500f608a4d *** empty log message *** 1999-01-11 04:15:09 +00:00
Jim Meyering
e5eed12981 *** empty log message *** 1999-01-11 04:14:29 +00:00
Jim Meyering
8be71eeb83 . 1999-01-11 04:12:15 +00:00
Jim Meyering
06683af3c4 *** empty log message *** 1999-01-11 03:36:44 +00:00
Jim Meyering
38d09e7907 *** empty log message *** 1999-01-11 03:23:14 +00:00
Jim Meyering
0e777744cb (copy_internal): Handle two more values of errno from
failed rename of a directory into a subdirectory of itself.
1999-01-11 03:22:50 +00:00
Jim Meyering
9a887e5ca4 *** empty log message *** 1999-01-11 03:19:45 +00:00
Jim Meyering
495729b1dc (quotearg_buffer): Change escape_quoting_style so that it no longer escapes ` '.
Suggestion from Paul Eggert.
1999-01-11 03:11:15 +00:00
Jim Meyering
75e5479220 (decode_switches): Now that escape_quoting_style no longer
escapes the SPACE character, arrange for SPACEs to be quoted here.
1999-01-11 03:10:59 +00:00
Jim Meyering
db0dadb263 (ARGMATCH_QUOTING_STYLE): Change from c_quoting_style to escape_quoting_style.
(argmatch_invalid): Now that the quoted quantity is no longer double
quoted, remove the code that removed leading and trailing double quotes.
1999-01-11 03:10:19 +00:00
Jim Meyering
3c21ae616f *** empty log message *** 1999-01-11 02:49:20 +00:00
Jim Meyering
ac25bd69bf (main) [TEST_CANON_HOST]: Add a simple test driver. 1999-01-11 02:46:33 +00:00
Jim Meyering
87364848e2 import new version 1999-01-11 02:40:27 +00:00
Jim Meyering
015d9b3c3f . 1999-01-10 23:47:16 +00:00
Jim Meyering
8a3a8c7126 . 1999-01-10 23:44:44 +00:00
Jim Meyering
003cf75202 *** empty log message *** 1999-01-10 22:51:50 +00:00
Jim Meyering
51f90506ba Use the new 3-arg form of AC_DEFINE instead of my gross kludge. 1999-01-10 22:51:01 +00:00
Jim Meyering
4a0813fecb Use the new 3-arg form of AC_DEFINE instead of my gross kludge. 1999-01-10 22:50:14 +00:00
Jim Meyering
ee991227ee Use the new 3-arg form of AC_DEFINE instead of my gross kludge. 1999-01-10 22:49:24 +00:00
Jim Meyering
4d57863e63 Use the new 3-arg form of AC_DEFINE instead of my gross kludge. 1999-01-10 22:48:12 +00:00
Jim Meyering
d6c548c783 Use the new 3-arg form of AC_DEFINE instead of my gross kludge. 1999-01-10 22:47:37 +00:00
Jim Meyering
357c999a88 Use the new 3-arg form of AC_DEFINE instead of my gross kludge. 1999-01-10 22:47:01 +00:00
Jim Meyering
6222e67d7f Use 3-arg form of AC_DEFINE instead of the
AC_CHECK_FUNCS hack.  Now, it's still a hack, but at least the
comments in config.h.in are meaningful.
1999-01-10 22:45:03 +00:00
Jim Meyering
110bd4aa65 bump serial# 1999-01-10 22:43:13 +00:00
Jim Meyering
97d75acb2c Require autoconf-2.13 here. 1999-01-10 22:42:57 +00:00
Jim Meyering
8d598fb33d *** empty log message *** 1999-01-10 22:06:15 +00:00
Jim Meyering
ceb02a40aa *** empty log message *** 1999-01-10 14:57:07 +00:00
Jim Meyering
ea9ec4ab46 By default, don't use the included regex.c on systems
with glibc 2.  Suggestion from Uli Drepper.
1999-01-10 14:57:00 +00:00
Jim Meyering
37f6675617 *** empty log message *** 1999-01-09 21:20:02 +00:00
Jim Meyering
a9583f3841 *** empty log message *** 1999-01-09 16:25:02 +00:00
Jim Meyering
fd008ba80b declare `match' 1999-01-09 16:21:40 +00:00
Jim Meyering
1eb017af63 New option: --all-repeated (-D).
(output_all_repeated) [output_mode]: New enum value.
(usage): Describe it.
(writeline): Test for new mode.
(check_file): Likewise.
Based on patches from Jochen Hein and Florin Iucha.
(main): Diagnose `too many arguments'.
1999-01-09 16:16:18 +00:00
Jim Meyering
7a545dda54 Add tests from Jochen Hein. 1999-01-09 16:15:32 +00:00
Jim Meyering
27aafa985a (null-1): Add test from Jochen Hein. 1999-01-09 15:44:27 +00:00
Jim Meyering
df9cb5d5c0 s/max_n_consecutive_size_changes/max_n_consecutive_size_changes_between_opens/ 1999-01-09 14:21:32 +00:00
Jim Meyering
375b687738 (parse_obsolescent_option): Interpret `number' as decimal.
(parse_options): Likewise.
Reported by Kamal Paul Nigam.

New option: --max-unchanged-stats=N.
New option: --max-n-consecutive-size-changes=N.
1999-01-09 14:19:40 +00:00
Jim Meyering
955e21bb83 protoize 1999-01-07 03:43:01 +00:00
Jim Meyering
29547b55e4 import latest 1999-01-06 16:09:14 +00:00
Jim Meyering
15633a30c4 *** empty log message *** 1999-01-05 17:51:51 +00:00
Jim Meyering
6522d1a579 *** empty log message *** 1999-01-05 05:10:14 +00:00
Jim Meyering
dbe0ba8119 *** empty log message *** 1999-01-05 05:09:52 +00:00
Jim Meyering
ec29f8c718 *** empty log message *** 1999-01-05 04:38:35 +00:00
Jim Meyering
d7d06726a7 . 1999-01-05 04:29:34 +00:00
Jim Meyering
2b8ef64969 *** empty log message *** 1999-01-05 04:29:16 +00:00
Jim Meyering
5118d57563 (main): remove unused `i' 1999-01-04 20:16:31 +00:00
Jim Meyering
6bff151edc remove strcasecmp.cin 1999-01-04 20:14:26 +00:00
Jim Meyering
f8453c637e *** empty log message *** 1999-01-04 20:09:28 +00:00
Jim Meyering
551f17ed6f *** empty log message *** 1999-01-03 15:47:46 +00:00
Jim Meyering
944dc00d0c (usage): Remove third program_name argument -- there
were only two `%s' in the format string.
1999-01-03 15:47:38 +00:00
Jim Meyering
e38501be52 *** empty log message *** 1999-01-02 20:38:45 +00:00
Jim Meyering
7b36cfca74 (argmatch_invalid): Remove double quotes from the
offending quoted argument before using it in explanatory diagnostic.
Use a single fprintf stmt.
1999-01-02 20:35:06 +00:00
Jim Meyering
75b8fb688f . 1999-01-02 20:07:41 +00:00
Jim Meyering
5667ae159f *** empty log message *** 1999-01-02 20:07:04 +00:00
Jim Meyering
88d0241214 Replace strcasecmp and strncasecmp. 1999-01-02 20:06:59 +00:00
Jim Meyering
c3f528b978 . 1999-01-02 19:38:36 +00:00
Jim Meyering
fb888f11ab *** empty log message *** 1999-01-02 19:38:05 +00:00
Jim Meyering
731688ecd5 (tsort): Use a single call to error instead of two to fprintf.
(main): Remove `%s: ' prefix on format string.
1999-01-02 19:37:56 +00:00
Jim Meyering
7004c53ab4 (parse_options): Use XARGMATCH in place of argmatch. 1999-01-02 19:35:46 +00:00
Jim Meyering
501ee2ebd6 (format_vals): New array.
(main): Use XARGMATCH in place of argmatch.
1999-01-02 19:35:18 +00:00
Jim Meyering
e159d72704 *** empty log message *** 1999-01-02 19:33:33 +00:00
Jim Meyering
a31aa355b3 tsort docs 1999-01-02 19:32:14 +00:00
Jim Meyering
69834c7c98 (strcasecmp.c strncasecmp.c): Remove rules. 1999-01-02 19:31:19 +00:00
Jim Meyering
bfea519d18 . 1999-01-02 19:30:32 +00:00
Jim Meyering
51282eaf75 *** empty log message *** 1999-01-02 19:30:05 +00:00
Jim Meyering
1e25b6e3d3 Adapt to use new interface to XARGMATCH. 1999-01-02 19:29:47 +00:00
Jim Meyering
38acb920eb . 1999-01-02 19:28:42 +00:00
Jim Meyering
8b3cbe63d8 (get_version): Adapt to use new interface to XARGMATCH. 1999-01-02 19:28:31 +00:00
Jim Meyering
c7c2516a4d (XARGMATCH): Don't return a value; instead, modify a parameter.
Add a `Die_stmt' parameter.
Add parentheses.
1999-01-02 18:33:08 +00:00
Jim Meyering
fa7427c2ea (__xargmatch_internal): Remove now-unused function.
(argmatch_to_argument): Add `const' attribute to first parameter.
1999-01-02 18:32:50 +00:00
Jim Meyering
c39158b8ec *** empty log message *** 1999-01-02 16:36:25 +00:00
Jim Meyering
041b69340d use XARGMATCH, not XARGCASEMATCH 1999-01-02 16:35:55 +00:00
Jim Meyering
f4db32ef36 Add #ifdefs so it can be used for strncasecmp, too. 1999-01-02 15:55:52 +00:00
Jim Meyering
b966f347ee *** empty log message *** 1999-01-02 15:55:44 +00:00
Jim Meyering
49f27cd70e *** empty log message *** 1999-01-02 12:45:50 +00:00
Jim Meyering
2bb9d3c528 Move inclusion of assert.h to follow that of stdio.h.
Some losing systems require this.
Use STREQ macro instead of strcmp in a few places.
1999-01-02 05:54:07 +00:00
Jim Meyering
b311b41561 Remove definition of setlocale.
Remove definitions of bindtextdomain and textdomain.
1999-01-02 05:30:07 +00:00
Jim Meyering
0cb6dcf585 Include locale.h and libintl.h, and define `_()'.
Mark translatable strings.
1999-01-02 05:27:32 +00:00
Jim Meyering
e213c687aa *** empty log message *** 1999-01-02 05:17:17 +00:00
Jim Meyering
cb1d4eb4f2 (make_dir): New function, factored out of make_path.
(make_path): Use make_dir rather than open-coding it twice.
This effectively reverses the order of the latter pair of stat/mkdir
calls and fixes a race condition bug whereby one of two concurrent
`mkdir -p' processes could fail with EEXIST.
1999-01-02 05:16:57 +00:00
Jim Meyering
45ed22a319 *** empty log message *** 1999-01-02 02:34:47 +00:00
Jim Meyering
977e79ed76 Include readtokens.h.
(zeros): Rename global from `rr'.
(getstr): Remove function.
(tsort) Use readtoken instead of getstr.
1999-01-02 02:34:11 +00:00
Jim Meyering
a842553181 *** empty log message *** 1999-01-01 23:48:23 +00:00
Jim Meyering
1f6728404c *** empty log message *** 1999-01-01 23:46:52 +00:00
Jim Meyering
1b4f931bf4 . 1999-01-01 23:31:36 +00:00
Jim Meyering
2da1b2088f fix typo in comment 1999-01-01 22:55:53 +00:00
Jim Meyering
b99ab6e97d (PATH_MAX_IN_DIR) [HAVE_UNISTD_H]: New macro, for max
file name characters in a given directory.
(tempname): Make sure the temp file name is unique even if long
file names aren't supported.
1999-01-01 22:51:58 +00:00
Jim Meyering
13e5d17494 (cwrite) [O_BINARY]: Write output in binary mode.
(main) [O_BINARY]: Read input in binary mode.
1999-01-01 22:49:44 +00:00
Jim Meyering
f92719d4dc (bsd_sum_file, sysv_sum_file) [O_BINARY]: Read input in binary mode. 1999-01-01 22:48:51 +00:00
Jim Meyering
e60b747ade (tail_lines, tail_bytes) [O_BINARY]: Use binary I/O when appropriate. 1999-01-01 22:48:03 +00:00
Jim Meyering
7cb251e782 Add comments about peculiarities of Textutils operation on MS-DOS/MS-Windows. 1999-01-01 22:44:21 +00:00
Jim Meyering
f3ade72018 (wc): Use binary mode for input. 1999-01-01 22:42:36 +00:00
Jim Meyering
59998135d0 (unexpand): Use binary I/O where appropriate. 1999-01-01 22:41:58 +00:00
Jim Meyering
87f9e231c3 (main) [O_BINARY]: Use binary I/O when appropriate. 1999-01-01 22:40:48 +00:00
Jim Meyering
8e7da4a47c (skip, read_char, read_block) [O_BINARY]: Switch input
stream to binary mode.
1999-01-01 22:33:15 +00:00
Jim Meyering
f54c8f6d80 (OPENOPTS) [O_BINARY]: Use binary I/O when non-zero argument.
(md5_file) [O_BINARY]: Switch redirected stdin to binary mode.
(main) [O_BINARY]: Use binary reads by default on those systems
which care about the difference.
1999-01-01 22:29:32 +00:00
Jim Meyering
9eedfd2482 (head_bytes, head_lines) [O_BINARY]: Use binary I/O. 1999-01-01 22:28:40 +00:00
Jim Meyering
a498f54f37 (expand): Use binary I/O where appropriate. 1999-01-01 22:27:36 +00:00
Jim Meyering
4394c38352 (cksum) [O_BINARY]: Read redirected stdin in binary mode. 1999-01-01 22:22:02 +00:00
Jim Meyering
7914fb4069 (usage) [O_BINARY]: Describe -B,--binary option.
(main) [O_BINARY]: binary_files, binary_output, file_open_mode:
new variables. 	Add --binary to long_options[].  Switch stdin and
stdout to binary mode unless file contents are not important
anyway.  Open files in binary mode when required.
1999-01-01 22:20:23 +00:00
Jim Meyering
e6e8ae14c9 . 1999-01-01 22:11:50 +00:00
Jim Meyering
c704267b26 *** empty log message *** 1999-01-01 21:56:21 +00:00
Jim Meyering
3972420f3b (parse_options): Use XARGCASEMATCH in place of argmatch. 1999-01-01 21:47:08 +00:00
Jim Meyering
94c2a11f47 *** empty log message *** 1999-01-01 19:31:43 +00:00
Jim Meyering
d15c8cbe43 *** empty log message *** 1999-01-01 19:30:08 +00:00
Jim Meyering
b5c28b7097 Rename globals N and R so they don't shadow locals.
(tsort): Rename from `sort'.
1999-01-01 19:29:31 +00:00
Jim Meyering
06adce5358 remove trailing blanks 1999-01-01 19:05:47 +00:00
Jim Meyering
d9ce52992c from Mark Kettenis 1999-01-01 19:05:05 +00:00
Jim Meyering
83db4858d0 *** empty log message *** 1999-01-01 17:43:50 +00:00
Jim Meyering
21b87a6ab7 (quoting_style_vals): New public array. 1999-01-01 17:43:10 +00:00
Jim Meyering
975daefaad Add comments.
(xcalloc, xmalloc, xrealloc): Remove prototypes.
(calloc): Remove `#ifdef NOT_USED' that used to hide this function.
1999-01-01 17:40:08 +00:00
Jim Meyering
3b3e52352c Add comments.
(PARAMS, XMALLOC, XCALLOC, XREALLOC): Define.
Based on changes from Akim Demaille.
1999-01-01 17:36:43 +00:00
Jim Meyering
aa014b906c remove leading _ from _ARGMATCH_H_ 1999-01-01 17:34:18 +00:00
Jim Meyering
2a5e98c9a4 *** empty log message *** 1999-01-01 07:10:00 +00:00
Jim Meyering
dcaa4b656e . 1999-01-01 07:09:08 +00:00
Jim Meyering
5c6d6248e9 . 1999-01-01 07:08:54 +00:00
Jim Meyering
f8be5ac8df *** empty log message *** 1999-01-01 07:06:23 +00:00
Jim Meyering
32acfd66d0 (quotearg_n_options): Make options' parameter be const'. 1999-01-01 07:03:16 +00:00
Jim Meyering
dd16dfb3e3 (quotearg_buffer): Cast -1 to size_t before comparing.
(quotearg_n): Change type of 1st parameter from int to unsigned int.
(quotearg_n_options): Likewise.
From Akim Demaille.
1999-01-01 07:02:16 +00:00
Jim Meyering
2d4f0fea3a (humblock): Use ARGMATCH in place of argmatch. 1999-01-01 06:47:04 +00:00
Jim Meyering
46166ad9b7 (get_version): Use XARGCASEMATCH in place of argmatch & co. 1999-01-01 06:43:04 +00:00
Jim Meyering
bf97e5a0b8 . 1998-12-31 23:24:08 +00:00
Jim Meyering
422a7fdc78 (libfu_a_SOURCES): Remove strcasecmp.c.
(BUILT_SOURCES): Add strcasecmp.c and strncasecmp.c.
(EXTRA_DIST): Add strcasecmp.cin.
(strcasecmp.c): New rule.
(strncasecmp.c): New rule.
1998-12-31 22:03:13 +00:00
Jim Meyering
19270e99bc *** empty log message *** 1998-12-31 21:59:58 +00:00
Jim Meyering
91dc8874b0 (main): Use XARGCASEMATCH in place of argmatch & co. 1998-12-31 21:59:42 +00:00
Jim Meyering
58d6acdfd3 (indicator_style_types): New variable.
(format_types): Rename from `formats'.
(color_args): Remove unnecessary `no' string.
(color_types): Remove corresponding `color_never' entry.
(main): Use ARGMATCH_TO_ARGUMENT.
(decode_switches): Use ARGCASEMATCH instead of argmatch code
in each of several cases.
From Akim Demaille.
1998-12-31 21:49:36 +00:00
Jim Meyering
431652a886 (main): Use XARGCASEMATCH in place of argmatch & co. 1998-12-31 21:41:04 +00:00
Jim Meyering
2e487bb6da fix typo 1998-12-31 18:12:40 +00:00
Jim Meyering
c92163b6e9 white space changes 1998-12-31 18:10:53 +00:00
Jim Meyering
8782f7a817 (strncasecmp): Move to a separate file.
Add curly braces around some one-stmt-but-multiline blocks.
1998-12-31 18:07:23 +00:00
Jim Meyering
a58c222775 *** empty log message *** 1998-12-31 17:53:59 +00:00
Jim Meyering
44538bbbd8 remove trailing blanks 1998-12-31 16:19:31 +00:00
Jim Meyering
65df533705 lots of changes from Akim Demaille. 1998-12-31 16:18:46 +00:00
Jim Meyering
392902344a lots of changes from Akim Demaille. 1998-12-31 16:18:13 +00:00
Jim Meyering
bf588140c5 (addext): Protoize.
Indent cpp directives to match nesting.
1998-12-31 14:56:20 +00:00
Jim Meyering
0f2fbadbea (posix_time_parse): Change type of index `i' from int to unsigned int. 1998-12-31 14:53:16 +00:00
Jim Meyering
50225cad77 Fix warnings from gcc -W -Wall
(__attribute__): Define.
(ATTRIBUTE_UNUSED): Define.
(yyerror): Mark parameter as unused with ATTRIBUTE_UNUSED.
(MonthDayTable): Add initializers for last entry.
(UnitsTable): Likewise.
(OtherTable): Likewise.
(MilitaryTable): Likewise.
1998-12-31 14:37:21 +00:00
Jim Meyering
b15af47b49 . 1998-12-22 22:46:53 +00:00
Jim Meyering
9199178402 *** empty log message *** 1998-12-22 21:57:52 +00:00
Jim Meyering
f82c03de2d . 1998-12-20 13:50:13 +00:00
Jim Meyering
1a162983f4 *** empty log message *** 1998-12-20 02:31:54 +00:00
Jim Meyering
63ceb4f304 Use absolute path for final rm. 1998-12-20 02:31:47 +00:00
Jim Meyering
12838cec9b remove .saved-state 1998-12-19 21:07:32 +00:00
Jim Meyering
b5bfb1d399 *** empty log message *** 1998-12-19 17:21:00 +00:00
Jim Meyering
9497429d9b break long line 1998-12-19 17:20:03 +00:00
Jim Meyering
b80e127286 break long line 1998-12-19 17:19:13 +00:00
Jim Meyering
e53076d42c split long line 1998-12-19 17:18:23 +00:00
Jim Meyering
01fe7e76f4 . 1998-12-19 13:54:04 +00:00
Jim Meyering
bcf9971e84 *** empty log message *** 1998-12-19 13:53:37 +00:00
Jim Meyering
e107deb940 (my-distcheck): Run make with CFLAGS='-Wformat -Werror'. 1998-12-19 13:53:21 +00:00
Jim Meyering
7bf1f374e0 . 1998-12-18 22:11:39 +00:00
Jim Meyering
ede498bfb0 remove semicolon -- from Lars 1998-12-18 15:32:54 +00:00
Jim Meyering
2b00f4f4b6 *** empty log message *** 1998-12-18 15:32:29 +00:00
Jim Meyering
e93093d5e1 *** empty log message *** 1998-12-18 14:49:38 +00:00
Jim Meyering
f2606a6ba0 *** empty log message *** 1998-12-18 14:49:30 +00:00
Jim Meyering
58a77bf4f6 (Makefile.am): Simplify rule.
Based on suggestion from Lars Hecking.
1998-12-18 14:49:01 +00:00
Jim Meyering
344f43313d *** empty log message *** 1998-12-18 14:48:32 +00:00
Jim Meyering
e68c81a48f (copy_internal): Remove errnoeous `%s: ' prefix
from format string.  From Michiel Bacchiani.
1998-12-18 14:22:50 +00:00
Jim Meyering
0e49de1acb *** empty log message *** 1998-12-18 14:22:30 +00:00
Jim Meyering
a3e473c522 (UID_T_MAX, GID_T_MAX): Define them here instead. 1998-12-18 14:09:29 +00:00
Jim Meyering
6408b52640 (UID_T_MAX, GID_T_MAX): Remove definitions. 1998-12-18 14:09:19 +00:00
Jim Meyering
e28821d5f8 (MAXGID): Define.
Use gid_t (not int) as the type for `group' variables.
(parse_group): Use MAXGID, not INT_MAX.
1998-12-18 14:07:58 +00:00
Jim Meyering
621691b296 New options for tail: --follow=name, --follow=descriptor, --allow-missing
(Follow_mode): New enum.
(n_live_files): New function.
(tail_forever): Avoid starvation with --follow=name and a
continually-growing unlinked or renamed file.
1998-12-17 13:56:25 +00:00
Jim Meyering
72c9472cc0 import latest 1998-12-16 13:41:13 +00:00
Jim Meyering
7dfd5ca1cd add comment about opening exclusively 1998-12-13 19:26:35 +00:00
Jim Meyering
c5195207db . 1998-12-13 19:19:07 +00:00
Jim Meyering
8a644a90ef . 1998-12-13 19:01:59 +00:00
Jim Meyering
29ab746b79 Don't include stdlib.h and declare malloc and free.
This works around Solaris 2.7's conflicting prototype.
Reported by Karl Berry.
1998-12-13 18:04:11 +00:00
Jim Meyering
7cf7f3706f (EXTRA_DIST): Add xstat.in. 1998-12-13 17:19:51 +00:00
Jim Meyering
297e2cb744 . 1998-12-12 06:22:56 +00:00
Jim Meyering
9507d3559a In order to distinguish col(umn|or):
(init_column_info): Renamed from init_col_info.
(struct column_info): Renamed from struct col_info.
(struct color_ext_type): Renamed from struct col_ext_type.
From Akim Demaille.
1998-12-12 06:20:42 +00:00
Jim Meyering
876d24a3ed * src/ls.c: Group DIRED's code together.
(full_time, inhibit_group, col_ext_type): Declare static.
(dired_dump_obstack): Apply sizeof to variable, instead of its type.
(parse_ls_color): Rename ext2 as e2.  Move into the block where it is used.
From Akim Demaille.
1998-12-12 06:11:24 +00:00
Jim Meyering
1384f07f77 . 1998-12-12 05:48:25 +00:00
Jim Meyering
8ff77278a2 *** empty log message *** 1998-12-12 05:46:44 +00:00
Jim Meyering
8c97b5c46e (lstat.c): Add rule to generate this from xstat.in.
(stat.c): Likewise.
1998-12-12 05:46:02 +00:00
Jim Meyering
4ff6b43025 *** empty log message *** 1998-12-12 05:45:39 +00:00
Jim Meyering
af36c75750 . 1998-12-12 05:45:29 +00:00
Jim Meyering
fd65b86607 (quotearg_buffer): Use 7' as the mask, not 3'.
From Bruno Haible.
1998-12-11 14:14:16 +00:00
Jim Meyering
bc0c0e635c *** empty log message *** 1998-12-11 14:13:40 +00:00
Jim Meyering
0e65b3e861 Add a test for the quotearg_buffer bug. 1998-12-11 14:13:29 +00:00
Jim Meyering
458aad90ab *** empty log message *** 1998-12-11 13:47:28 +00:00
Jim Meyering
74235b07fa *** empty log message *** 1998-12-11 13:39:42 +00:00
Jim Meyering
a17cdb1173 (main): Arrange to exit unsuccessfully when stime fails.
From Andreas Schwab.
1998-12-11 13:37:52 +00:00
Jim Meyering
b2747b91a8 import version 1.006 1998-12-11 13:34:23 +00:00
Jim Meyering
0963c4ba11 . 1998-12-07 06:26:12 +00:00
Jim Meyering
b4640ed990 (dir_name): Rename from dirname.
Make argument `const'.  Include "dirname.h"
1998-12-07 06:25:54 +00:00
Jim Meyering
1698d53f72 (noinst_HEADERS): Add dirname.h. 1998-12-07 06:25:29 +00:00
Jim Meyering
5ae5d486a9 . 1998-12-07 06:24:28 +00:00
Jim Meyering
ef234641de *** empty log message *** 1998-12-07 06:21:12 +00:00
Jim Meyering
52dedbfebb Use dir_name, not dirname. Include dirname.h. 1998-12-07 06:20:50 +00:00
Jim Meyering
f5e9896c18 . 1998-12-07 05:54:49 +00:00
Jim Meyering
572632b8eb *** empty log message *** 1998-12-07 05:54:29 +00:00
Jim Meyering
a467be8ae8 *** empty log message *** 1998-12-07 05:18:06 +00:00
Jim Meyering
5551e54672 *** empty log message *** 1998-12-07 05:14:42 +00:00
Jim Meyering
b7e610bfdb (rpmatch) [!ENABLE_NLS]: Hard-code tests to use ^[yY]' and ^[nN]'.
From Karl Heuer.
1998-12-07 05:14:07 +00:00
Jim Meyering
7e6c89fc63 *** empty log message *** 1998-12-07 05:12:48 +00:00
Jim Meyering
7273e22923 declare base_name 1998-12-07 04:35:20 +00:00
Jim Meyering
6f5e749ea6 *** empty log message *** 1998-12-07 04:33:20 +00:00
Jim Meyering
376d67374f *** empty log message *** 1998-12-07 03:12:21 +00:00
Jim Meyering
7d60769bea ansideclify 1998-12-07 03:12:10 +00:00
Jim Meyering
604b3b397d *** empty log message *** 1998-12-06 23:09:39 +00:00
Jim Meyering
a68f3dee80 add ls -R . test 1998-12-06 23:09:29 +00:00
Jim Meyering
dd3bad9b7c . 1998-12-06 23:09:14 +00:00
Jim Meyering
6207f6f804 Fix `ls -R .' formatting bug that broke mktexlsr.
Include path-concat.h.
(basename_is_dot_or_dotdot): New function, derived from
is_not_dot_or_dotdot.
(is_not_dot_or_dotdot): Remove function.
(extract_dirs_from_files): Use `!basename_is_dot_or_dotdot'
instead of is_not_dot_or_dotdot and use path_concat instead of attach.
1998-12-06 23:08:55 +00:00
Jim Meyering
16c8a66a54 (TESTS): s/quoting/tests/. 1998-12-06 23:03:32 +00:00
Jim Meyering
9069b306dc renamed from quote 1998-12-06 23:01:12 +00:00
Jim Meyering
76223aedef *** empty log message *** 1998-12-06 22:18:38 +00:00
Jim Meyering
2ec7385fb0 Redefine putenv before including stdlib.h to work
around Solaris 2.7's conflicting prototype.  Reported by Karl Berry.
1998-12-06 22:18:17 +00:00
Jim Meyering
46dd5092ee . 1998-12-06 21:06:22 +00:00
Jim Meyering
e5f51be9f1 . 1998-12-06 21:06:02 +00:00
Jim Meyering
1e422ea7ec (DOT_OR_DOTDOT): New definition (moved here from remove.c.). 1998-11-30 03:01:24 +00:00
Jim Meyering
9d7c18290e (DOT_OR_DOTDOT): Move definition from this file... 1998-11-30 03:00:51 +00:00
Jim Meyering
90dbea92c4 (dd_copy): Rename function from `copy'. 1998-11-30 02:58:21 +00:00
Jim Meyering
d9878753d1 (do_copy): Rename local: s/unused/copy_into_self/ 1998-11-30 02:57:43 +00:00
Jim Meyering
4dbf57ed78 (do_move): Don't arrange to remove DEST in the copied-into-self case. 1998-11-30 02:56:05 +00:00
Jim Meyering
438a33770b *** empty log message *** 1998-11-30 02:54:28 +00:00
Jim Meyering
f7cd44c64c (TESTS): Add hard-link-1. 1998-11-30 02:53:57 +00:00
Jim Meyering
32df3704e4 (copy_internal): Remove earlier (but less effective)
test for move/copy-into-self.
Instead, deduce the move-into-self condition from errno==EINVAL
after a failed rename.
1998-11-30 02:10:13 +00:00
Jim Meyering
955d2c6ae5 *** empty log message *** 1998-11-30 02:03:01 +00:00
Jim Meyering
75d5ed8b58 (movefile): Don't free new_dest.
Bob McCracken reported that mv couldn't handle certain combinations
of hard linked source files.
1998-11-30 02:01:18 +00:00
Jim Meyering
b9c6c84a8c handle VERBOSE 1998-11-30 00:46:14 +00:00
Jim Meyering
3c6a1e9f08 (TESTS): Add into-self-3. 1998-11-30 00:45:44 +00:00
Jim Meyering
bb6a835cc1 *** empty log message *** 1998-11-30 00:44:59 +00:00
Jim Meyering
78f7236408 don't mention package name in comments 1998-11-21 17:43:41 +00:00
Jim Meyering
976ca67266 tweak comment 1998-11-21 17:33:45 +00:00
Jim Meyering
aba712c3bc *** empty log message *** 1998-11-17 02:14:16 +00:00
Jim Meyering
3ec7a99af6 Double-quote the uname... expression. 1998-11-17 02:14:12 +00:00
Jim Meyering
d60ac7e850 (AC_LFS): Add support for HP-UX 10.20 and HP-UX 11. 1998-11-17 02:09:52 +00:00
Jim Meyering
4c15e09a2c *** empty log message *** 1998-11-16 05:51:31 +00:00
Jim Meyering
a1d63c6f15 *** empty log message *** 1998-11-15 17:43:26 +00:00
Jim Meyering
e781ee9e60 *** empty log message *** 1998-11-15 17:36:02 +00:00
Jim Meyering
9764f6e3e1 *** empty log message *** 1998-11-15 17:35:45 +00:00
Jim Meyering
e77961586a (error): Don't use strerror_r's return value. 1998-11-15 17:35:34 +00:00
Jim Meyering
11135e1307 *** empty log message *** 1998-11-14 15:33:42 +00:00
Jim Meyering
d8a0eef528 (cvs-dist): Search for `$tag:' rather than just $tag
to avoid matching a prefix of another tag.
1998-11-14 15:33:34 +00:00
Jim Meyering
b7657496c3 update from master copy 1998-11-14 15:00:39 +00:00
Jim Meyering
01c7f17f33 Correct comment. POSIX does not permit it to succeed. 1998-11-14 13:23:22 +00:00
Jim Meyering
a211252152 *** empty log message *** 1998-11-14 13:23:08 +00:00
Jim Meyering
24c0a0a99d Correct comment. POSIX does not permit it to succeed. 1998-11-14 13:22:58 +00:00
Jim Meyering
df521a1b29 revert-to-4.0-b7 1998-11-14 13:17:34 +00:00
Jim Meyering
686a7e9ff3 *** empty log message *** 1998-11-14 13:15:22 +00:00
Jim Meyering
1d738b51d1 revert backupfile change 1998-11-14 13:13:50 +00:00
Jim Meyering
84c2d0e52e revert-last-change 1998-11-14 13:13:10 +00:00
Jim Meyering
6c0c08eb29 back out last change: there is a better way 1998-11-11 05:16:09 +00:00
Jim Meyering
7de9edecfc (BACKUPFILE_EXIT_FAILURE): Define.
(get_version): Use it in place of EXIT_FAILURE.
1998-11-11 05:01:26 +00:00
Jim Meyering
9e3f43b368 [EXIT_FAILURE]: Define.
(get_version): Use EXIT_FAILURE as exit status rather than
hard-coding `2'.  From Franois Pinard.
1998-11-10 05:57:56 +00:00
Jim Meyering
d7b702d0d0 avoid new warnings from texinfo-1.12b 1998-11-08 16:20:00 +00:00
Jim Meyering
ed5b1cad23 . 1998-11-08 16:13:13 +00:00
Jim Meyering
532074e1c7 . 1998-11-08 03:49:22 +00:00
Jim Meyering
deef42170f *** empty log message *** 1998-11-08 03:44:44 +00:00
Jim Meyering
b808de586b *** empty log message *** 1998-11-08 03:42:44 +00:00
Jim Meyering
ac7f057d98 Rewrite to set HAVE_LSTAT_EMPTY_STRING_BUG. 1998-11-08 03:42:35 +00:00
Jim Meyering
2daa912c53 Rewrite to set HAVE_STAT_EMPTY_STRING_BUG. 1998-11-08 03:42:20 +00:00
Jim Meyering
7bf8c634eb . 1998-11-08 03:42:04 +00:00
Jim Meyering
c091e6fe83 [lstat]: Remove #undef.
(rpl_lstat): Protoize.  Use ENOENT, not EINVAL, to be consistent
with lib/stat.c.
1998-11-08 03:40:04 +00:00
Jim Meyering
dc61111cc6 (rpl_stat): Protoize.
(stat): Remove #undef.
1998-11-08 03:39:42 +00:00
Jim Meyering
920680fe4f [HAVE_LSTAT_EMPTY_STRING_BUG]: Define lstat to rpl_lstat and declare the latter. 1998-11-08 03:38:06 +00:00
Jim Meyering
c9f0e3d343 *** empty log message *** 1998-11-02 17:08:44 +00:00
Jim Meyering
b4c9bd2b7e . 1998-11-01 17:17:52 +00:00
Jim Meyering
453be366da latest from ftp.gnu.org 1998-11-01 16:41:46 +00:00
Jim Meyering
f51e80f564 *** empty log message *** 1998-11-01 05:26:06 +00:00
Jim Meyering
993a56e8e0 . 1998-11-01 01:04:11 +00:00
Jim Meyering
d8e4dccdca . 1998-11-01 01:02:24 +00:00
Jim Meyering
427e67b196 Rewrite to use new testing framework. 1998-11-01 00:52:32 +00:00
Jim Meyering
90ffddc87e . 1998-11-01 00:52:16 +00:00
Jim Meyering
8458f55338 *** empty log message *** 1998-11-01 00:52:06 +00:00
Jim Meyering
bf5ef10371 . 1998-11-01 00:51:26 +00:00
Jim Meyering
d087967041 . 1998-11-01 00:50:23 +00:00
Jim Meyering
cfb54dec88 *** empty log message *** 1998-11-01 00:49:44 +00:00
Jim Meyering
e1958a7253 *** empty log message *** 1998-11-01 00:12:41 +00:00
Jim Meyering
cf50a06294 (TESTS): Add new test `empty-name', but comment it out. 1998-11-01 00:12:07 +00:00
Jim Meyering
c96d9a880f *** empty log message *** 1998-11-01 00:09:44 +00:00
Jim Meyering
25bf05e45e update from master copy 1998-10-31 15:19:09 +00:00
Jim Meyering
99b35637c4 . 1998-10-25 14:30:46 +00:00
Jim Meyering
09b8756e33 . 1998-10-25 14:30:15 +00:00
Jim Meyering
9c5d11d5c5 . 1998-10-25 14:28:04 +00:00
Jim Meyering
bf6c2a07af *** empty log message *** 1998-10-25 14:12:47 +00:00
Jim Meyering
c729fe037e (TESTS): Add new test `unreadable'. But comment
it out since we're so close to release and since the test compares the
text of diagnostics that are likely to vary between systems.
(TEST_ENVIRONMENT): Add required framework.
1998-10-25 14:08:38 +00:00
Jim Meyering
02cde32c0a *** empty log message *** 1998-10-25 14:03:09 +00:00
Jim Meyering
7741f87086 *** empty log message *** 1998-10-25 13:58:56 +00:00
Jim Meyering
9e630b86cb (remove_cwd_entries): Don't apply CLOSEDIR to a NULL
pointer. (provoke with `mkdir -m 0100 x; rm -rf x')
Upon CLOSEDIR failure, set `status' to RM_ERROR, not RM_OK.
(remove_dir): Return `status', rather than always RM_OK.
1998-10-25 13:58:50 +00:00
Jim Meyering
2e19f14a91 *** empty log message *** 1998-10-23 02:08:48 +00:00
Jim Meyering
65b1a6ec82 (usage): Add mention of --version and --help. 1998-10-23 02:08:35 +00:00
Jim Meyering
06d1a87e3b *** empty log message *** 1998-10-18 14:18:22 +00:00
Jim Meyering
f417e8b9d4 . 1998-10-18 14:14:09 +00:00
Jim Meyering
4fb556ee0e Don't invoke localtime_r or gmtime_r unless it's the GNU C
library's localtime_r and gmtime_r; there are too many buggy
	implementations of localtime_r and gmtime_r out there, and
	it's not worth keeping track of all the different bugs.

	* strftime.c (__EXTENSIONS__): Remove.
	(my_strftime_gmtime_r): Renamed from gmtime_r; all uses changed.
	(my_strftime_localtime_r): Renamed from localtime_r; all uses changed.
	Base them on localtime/gmtime if not _LIBC.
1998-10-18 14:09:48 +00:00
Jim Meyering
c850393032 Don't invoke localtime_r or gmtime_r unless it's the GNU C
library's localtime_r and gmtime_r; there are too many buggy
	implementations of localtime_r and gmtime_r out there, and
	it's not worth keeping track of all the different bugs.

	* mktime.c (__EXTENSIONS__, HAVE_LOCALTIME_R): Remove.
	(my_mktime_localtime_r): Renamed from localtime_r; all uses changed.
	Base it on localtime unless _LIBC.
1998-10-18 14:08:35 +00:00
Jim Meyering
61ece919c6 (jm_CHECK_DECL_LOCALTIME_R): Remove macro. 1998-10-18 14:08:09 +00:00
Jim Meyering
843b44b3f7 *** empty log message *** 1998-10-18 01:50:53 +00:00
Jim Meyering
5edb65b5c4 . 1998-10-18 01:49:44 +00:00
Jim Meyering
a71cb7cad1 Declare localtime_r if necessary. 1998-10-18 01:11:35 +00:00
Jim Meyering
e2d1b297e7 Declare localtime_r if necessary. 1998-10-18 01:10:21 +00:00
Jim Meyering
70bea7fd3e *** empty log message *** 1998-10-18 01:08:54 +00:00
Jim Meyering
ec936db8d7 (jm_CHECK_DECLS): Reflect interface change.
(jm_CHECK_DECL_LOCALTIME_R): New macro.
1998-10-18 01:08:22 +00:00
Jim Meyering
2b69ce2d89 (jm_CHECK_DECLARATION): Don't hard-code which headers to
include, though we still hard-code the `require'-like AC_CHECK_HEADERS
calls for those previously hard-coded headers.  Instead, take a new parameter.
(jm_CHECK_DECLARATIONS): Reflect interface change.
1998-10-18 01:07:17 +00:00
Jim Meyering
0a25bc498d Test for spring-forward gap before long-running test. 1998-10-18 00:58:07 +00:00
Jim Meyering
6cc7e13732 (run_tests): Run $prog with --version only if $verbose. 1998-10-17 12:47:21 +00:00
Jim Meyering
0e1c643956 *** empty log message *** 1998-10-17 12:39:57 +00:00
Jim Meyering
2e29b32116 Some systems require <unistd.h> to be included before <time.h> for
localtime_r to be declared properly.
1998-10-17 12:39:30 +00:00
Jim Meyering
082787996c Use the more portable "TZ=PST8PDT,M4.1.0,M10.5.0"
instead of "TZ=America/Vancouver".  From Paul Eggert.
1998-10-14 21:27:52 +00:00
Jim Meyering
edef42bf40 *** empty log message *** 1998-10-12 03:51:35 +00:00
Jim Meyering
efce5c3bdf . 1998-10-12 03:50:44 +00:00
Jim Meyering
18ac22d2fc . 1998-10-12 03:50:24 +00:00
Jim Meyering
c20eae80c7 add jm_ prefix to cache variable 1998-10-12 03:20:21 +00:00
Jim Meyering
6f43239736 *** empty log message *** 1998-10-12 02:56:35 +00:00
Jim Meyering
c6b7de061f *** empty log message *** 1998-10-12 02:55:35 +00:00
Jim Meyering
10d64e02c4 Require jm_AM_FUNC_MKTIME, not AM_FUNC_MKTIME. 1998-10-12 02:55:28 +00:00
Jim Meyering
852a30165b (jm_AM_FUNC_MKTIME): New file and macro. 1998-10-12 02:55:17 +00:00
Jim Meyering
e4d0cf679c . 1998-10-12 02:51:10 +00:00
Jim Meyering
57c0968203 *** empty log message *** 1998-10-12 02:51:01 +00:00
Jim Meyering
761ed79f4d (_REENTRANT): Define again -- linux-2.0.33 needs it. 1998-10-12 02:00:59 +00:00
Jim Meyering
f49ea966c3 *** empty log message *** 1998-10-12 01:18:08 +00:00
Jim Meyering
8c6d49c84d *** empty log message *** 1998-10-11 23:04:04 +00:00
Jim Meyering
061a10d1ff (__mktime_internal): When the requested time falls
in a spring-forward gap of size DT, return a time that is DT
away from the requested time, preferring a time whose tm_isdst
differs from the requested value.  Bump the max number of
probes from 4 to 6 to account for the extra probes needed to
discover a spring-forward gap in the worst case.
1998-10-11 23:03:41 +00:00
Jim Meyering
787dfe9c83 . 1998-10-10 18:38:05 +00:00
Jim Meyering
9e3949fa6f . 1998-10-10 18:37:44 +00:00
Jim Meyering
62b64a0e92 *** empty log message *** 1998-10-08 12:24:40 +00:00
Jim Meyering
37c289ea31 (my_mktime_localtime_r): Renamed from localtime_r.
Define also if HAVE_LOCALTIME_R && defined (localtime_r), with
a body that merely expands localtime_r; this works around a
bug in Digital Unix 4.0A and 4.0D.
1998-10-08 12:19:48 +00:00
Jim Meyering
297a13a5a3 import 1.5b 1998-10-06 04:07:25 +00:00
Jim Meyering
2aae4df6ef *** empty log message *** 1998-10-05 12:27:03 +00:00
Jim Meyering
8670ecb6cb (long_options): Add entry for --suffix=SUFFIX option. 1998-10-05 12:23:21 +00:00
Jim Meyering
1b1bcc5e29 *** empty log message *** 1998-10-05 04:30:40 +00:00
Jim Meyering
03d1ff2dea *** empty log message *** 1998-10-05 04:24:42 +00:00
Jim Meyering
1381664a56 . 1998-10-05 04:21:39 +00:00
Jim Meyering
3ed45d5062 back out last change 1998-10-05 04:20:33 +00:00
Jim Meyering
dfd3465715 half-hearted attempt to support file name quoting 1998-10-05 04:20:12 +00:00
Jim Meyering
86488adef8 *** empty log message *** 1998-10-05 04:05:41 +00:00
Jim Meyering
3564013e18 add double quotes 1998-10-05 03:34:17 +00:00
Jim Meyering
a019f34623 (TESTS_ENVIRONMENT): Define PERL. 1998-10-05 03:30:41 +00:00
Jim Meyering
0e2247a55b *** empty log message *** 1998-10-04 13:53:18 +00:00
Jim Meyering
253d68786d *** empty log message *** 1998-10-04 13:50:52 +00:00
Jim Meyering
f6a19e2c78 . 1998-10-04 13:15:15 +00:00
Jim Meyering
f7880af3db . 1998-10-04 03:23:24 +00:00
Jim Meyering
ce55ab29b1 . 1998-10-04 03:11:32 +00:00
Jim Meyering
6bbbdce4d8 *** empty log message *** 1998-10-04 03:08:54 +00:00
Jim Meyering
5027e9d281 *** empty log message *** 1998-10-04 03:06:22 +00:00
Jim Meyering
701e23d1e4 (split_3): Rename local variable, to `escaped_filename'.
(main): Output the leading backslash not just when there's a newline
in the file name, but also when there's a backslash.
1998-10-04 03:05:37 +00:00
Jim Meyering
516e60ed10 Add tests with filenames containing newline and backslash characters. 1998-10-04 03:01:12 +00:00
Jim Meyering
61c04cdaed use debug, not verbose 1998-10-04 02:54:15 +00:00
Jim Meyering
3d58b592ed rewrite for Fetish.pm 1998-10-04 02:51:30 +00:00
Jim Meyering
71aa0114bb . 1998-10-04 02:45:26 +00:00
Jim Meyering
cbd698b247 . 1998-10-04 01:08:18 +00:00
Jim Meyering
bf887b6800 . 1998-10-04 01:04:55 +00:00
Jim Meyering
d8827d033a *** empty log message *** 1998-10-04 01:03:51 +00:00
Jim Meyering
434df90510 (TESTS_ENVIRONMENT): Add PATH. 1998-10-04 01:03:26 +00:00
Jim Meyering
483b1367bc *** empty log message *** 1998-10-03 19:51:36 +00:00
Jim Meyering
df694b9339 . 1998-10-03 19:50:10 +00:00
Jim Meyering
dcd55a5277 . 1998-10-03 19:47:20 +00:00
Jim Meyering
742600e30d Invoke program with --manhelp option only if
--name=STRING not specified.  Otherwise, this would fail with `yes'.
1998-10-03 19:15:41 +00:00
Jim Meyering
62db78c613 *** empty log message *** 1998-10-03 17:39:49 +00:00
Jim Meyering
f439fa811c . 1998-10-03 17:27:28 +00:00
Jim Meyering
169bead160 . 1998-10-03 17:21:02 +00:00
Jim Meyering
2ebff08169 (main): Update to use new version of posixtime. 1998-10-03 17:18:52 +00:00
Jim Meyering
5b1af11410 . 1998-10-03 16:49:01 +00:00
Jim Meyering
62ff4ae63c Make `VERBOSE' be a little more verbose. 1998-10-03 16:47:44 +00:00
Jim Meyering
9ef5ce0581 (TESTS): Add i-1. 1998-10-03 16:46:27 +00:00
Jim Meyering
d21a17dbb4 . 1998-10-03 16:45:10 +00:00
Jim Meyering
cfd0d53368 . 1998-10-03 05:00:26 +00:00
Jim Meyering
432e6df3e4 Include /bin/sh driver framework. 1998-10-03 04:59:26 +00:00
Jim Meyering
95fd28c290 *** empty log message *** 1998-10-03 04:58:28 +00:00
Jim Meyering
2239a0ff2c . 1998-10-03 04:58:21 +00:00
Jim Meyering
0345ac460a . 1998-10-03 04:54:54 +00:00
Jim Meyering
8b0f15401b . 1998-10-03 04:52:09 +00:00
Jim Meyering
af988b5428 . 1998-10-03 04:43:55 +00:00
Jim Meyering
2e4ebbf522 *** empty log message *** 1998-10-02 14:31:24 +00:00
Jim Meyering
84fd56fe2a *** empty log message *** 1998-10-02 14:31:11 +00:00
Jim Meyering
a23ce11f2a latest from ftp.gnu.org 1998-10-02 03:21:04 +00:00
Jim Meyering
a7dea23c83 . 1998-09-29 03:54:30 +00:00
Jim Meyering
453a3cbd73 . 1998-09-29 03:41:16 +00:00
Jim Meyering
3da2cfc475 *** empty log message *** 1998-09-29 03:41:05 +00:00
Jim Meyering
22c794bf9b *** empty log message *** 1998-09-29 03:34:42 +00:00
Jim Meyering
0c47bc711f *** empty log message *** 1998-09-29 03:21:10 +00:00
Jim Meyering
cdd0e0a757 *** empty log message *** 1998-09-29 03:13:25 +00:00
Jim Meyering
0bb1cba1bc . 1998-09-29 03:12:27 +00:00
Jim Meyering
662777cad5 *** empty log message *** 1998-09-29 02:48:10 +00:00
Jim Meyering
b7e1eadbf8 (copy_internal): Do honor `n' reply in move-mode.
Otherwise, `touch a b; echo n|mv -i a b' would remove b.
From Bernd Leibing.
1998-09-28 16:15:00 +00:00
Jim Meyering
685d842096 *** empty log message *** 1998-09-28 16:14:33 +00:00
Jim Meyering
a3e6379a2c *** empty log message *** 1998-09-28 03:36:44 +00:00
Jim Meyering
3e99e73234 (main): Decrement optind when we find an `option' that
looks like -N.  Reported by Clark Morgan.
1998-09-28 03:35:51 +00:00
Jim Meyering
efcde72ce7 (my-distcheck): Tweak. 1998-09-27 19:37:57 +00:00
Jim Meyering
7155f1e45a *** empty log message *** 1998-09-27 19:37:51 +00:00
Jim Meyering
59463cd869 (alpha): New target. 1998-09-27 18:44:59 +00:00
Jim Meyering
998842665b (alpha): New target. 1998-09-27 18:44:34 +00:00
Jim Meyering
63a8243257 *** empty log message *** 1998-09-27 17:54:50 +00:00
Jim Meyering
9d806a54bf *** empty log message *** 1998-09-27 17:45:22 +00:00
Jim Meyering
855f6816d6 *** empty log message *** 1998-09-27 17:45:00 +00:00
Jim Meyering
2b53ea5791 Protect against multiple inclusion.
From Akim Demaille.
1998-09-27 17:44:49 +00:00
Jim Meyering
80768df1f5 *** empty log message *** 1998-09-27 17:36:17 +00:00
Jim Meyering
61f48952f2 add missing close paren 1998-09-27 17:31:29 +00:00
Jim Meyering
095d748e53 . 1998-09-27 17:30:06 +00:00
Jim Meyering
f5df8ad7f0 . 1998-09-27 17:27:38 +00:00
Jim Meyering
aaa4b67c31 (jm_MACROS): Require jm_FUNC_FNMATCH. 1998-09-27 17:26:55 +00:00
Jim Meyering
4a5b97a91e . 1998-09-27 16:45:42 +00:00
Jim Meyering
8589763111 Makefile.am 1998-09-27 16:45:21 +00:00
Jim Meyering
1ff7800b19 *** empty log message *** 1998-09-27 16:41:04 +00:00
Jim Meyering
fbe115a9e4 indent 1998-09-27 16:40:09 +00:00
Jim Meyering
3f17755a74 . 1998-09-27 16:39:53 +00:00
Jim Meyering
fbb1fb519f (my_strftime): Update from FSF. 1998-09-27 12:45:33 +00:00
Jim Meyering
dc68d2454e *** empty log message *** 1998-09-27 02:57:44 +00:00
Jim Meyering
80499598c1 (copy_internal): Don't preserve hard-linked directories
to avoid damaging the destination filesystem when copying from a
Netapp snapshot directory.  With code from Kjetil Torgrim Hollstein
and Paul Eggert.
1998-09-27 02:57:29 +00:00
Jim Meyering
b6dcafff11 . 1998-09-26 19:13:40 +00:00
Jim Meyering
219c7a280d . 1998-09-26 19:13:28 +00:00
Jim Meyering
3f9e8072e8 factor.c 1998-09-26 19:12:16 +00:00
Jim Meyering
72f8c0a17c (__xstrtol) [STRING_TO_UNSIGNED]: Return
LONGINT_INVALID for strings that begin with `-'.
1998-09-26 19:11:23 +00:00
Jim Meyering
d679ddd839 Add a test for negative argument.
Tweak postprocessing framework.
1998-09-26 15:32:31 +00:00
Jim Meyering
cded303e29 Declare locals: before, after. From Andries Brouwer. 1998-09-21 12:05:49 +00:00
Jim Meyering
050e7dcf7c *** empty log message *** 1998-09-20 14:35:17 +00:00
Jim Meyering
ad37e45e20 . 1998-09-20 13:44:20 +00:00
Jim Meyering
2b8279f893 (install_file_to_path) [-D]: Create any leading
directories with permissions of 0755.
1998-09-20 13:44:12 +00:00
Jim Meyering
ef679d9871 (install_file_to_path): Copy the file after creating any leading directories.
(main) [case 'v']: Set `x.verbose' to 1, not 0.
1998-09-20 02:17:26 +00:00
Jim Meyering
3ba504d409 (cvs-dist): Don't use tar --diff.
(announcement): Tweak.
1998-09-19 21:51:33 +00:00
Jim Meyering
c11fa3240a *** empty log message *** 1998-09-19 20:40:33 +00:00
Jim Meyering
ca22f0d886 . 1998-09-19 20:40:20 +00:00
Jim Meyering
23b298e107 *** empty log message *** 1998-09-19 18:43:12 +00:00
Jim Meyering
6aaf307bc4 *** empty log message *** 1998-09-19 17:39:38 +00:00
Jim Meyering
efcc24f9d4 *** empty log message *** 1998-09-19 17:33:27 +00:00
Jim Meyering
24a8bf2d3e update bug-reporting address 1998-09-19 17:32:35 +00:00
Jim Meyering
ef67832eae (main): Revamp option processing, again.
stty couldn't parse some of its options.
1998-09-19 17:30:17 +00:00
Jim Meyering
6eb0392a41 (TESTS): Add basic-1. 1998-09-19 17:28:45 +00:00
Jim Meyering
6880f434c0 update bug-reporting address 1998-09-19 17:24:05 +00:00
Jim Meyering
6606de8b81 (program_name): Declare *not* to be const. 1998-09-19 17:19:06 +00:00
Jim Meyering
08cfef16a2 update bug-reporting address 1998-09-19 17:17:58 +00:00
Jim Meyering
2f235c5843 *** empty log message *** 1998-09-19 13:33:49 +00:00
Jim Meyering
fde72176e8 *** empty log message *** 1998-09-19 13:11:58 +00:00
Jim Meyering
7c43d59107 Fix post-protoization typo. 1998-09-19 13:11:23 +00:00
Jim Meyering
dfb1f6a5b0 . 1998-09-19 13:09:51 +00:00
Jim Meyering
19ff66c384 (PARAMS): Define and use.
From Kaveh Ghazi.
1998-09-17 13:48:20 +00:00
Jim Meyering
d7a781ab5a *** empty log message *** 1998-09-13 15:19:44 +00:00
Jim Meyering
48c8542657 *** empty log message *** 1998-09-13 15:13:59 +00:00
Jim Meyering
b73a1b844f *** empty log message *** 1998-09-13 14:34:07 +00:00
Jim Meyering
59f3e7dfea . 1998-09-13 00:06:18 +00:00
Jim Meyering
78df00cae0 (remove_cwd_entries): Declare to be static. 1998-09-12 20:27:45 +00:00
Jim Meyering
745cee714a . 1998-09-12 20:20:30 +00:00
Jim Meyering
6d16699fff . 1998-09-12 20:12:55 +00:00
Jim Meyering
ea44cc33ca (oatoi): declare arg to be const 1998-09-09 15:39:13 +00:00
Jim Meyering
4db847ce3c Protoize. 1998-09-09 14:21:16 +00:00
Jim Meyering
231813e179 *** empty log message *** 1998-09-09 13:47:43 +00:00
Jim Meyering
1c3a5c6ff8 *** empty log message *** 1998-09-09 13:44:52 +00:00
Jim Meyering
72e1d14aec . 1998-09-07 18:08:31 +00:00
Jim Meyering
584f4d85cf (show_dev) [!posix_format]: When using --print-type,
let the device path and the file system type share a single (wider)
field if their combined lengths allow it.  From Andries Brouwer.
1998-09-07 18:08:09 +00:00
Jim Meyering
9096ee8e42 . 1998-09-07 17:03:50 +00:00
Jim Meyering
f7c0efdba2 *** empty log message *** 1998-09-07 15:13:59 +00:00
Jim Meyering
a3c0837bc3 Upon failure, suggest how to rerun the test
with longer delay, in case NFS clock skew was the cause of the failure.
Reported by Kaveh Ghazi.
1998-09-07 15:13:48 +00:00
Jim Meyering
834b042b93 *** empty log message *** 1998-09-07 14:13:26 +00:00
Jim Meyering
f0e77e8722 . 1998-09-07 14:11:00 +00:00
Jim Meyering
5c094d2ab2 *** empty log message *** 1998-09-07 14:10:53 +00:00
Jim Meyering
1eb146483f (_create_file): Don't include $$ in temp file name.
(run_tests): Use shorter suffixes for temp file names.
1998-09-07 14:07:23 +00:00
Jim Meyering
1b3c2bbb06 *** empty log message *** 1998-09-07 14:03:09 +00:00
Jim Meyering
edbbc8335c (run_tests): Add simple PRE/POST hooks. 1998-09-07 13:59:43 +00:00
Jim Meyering
48405e4b9c *** empty log message *** 1998-09-07 13:58:26 +00:00
Jim Meyering
f9ae8064f2 (print_dir_name): Put back.
(print_dir): Also print directory name header if print_dir_name is true.
1998-09-07 13:02:46 +00:00
Jim Meyering
9ce9d75ddb add test harness 1998-09-07 03:23:30 +00:00
Jim Meyering
d59ce5651c *** empty log message *** 1998-09-07 02:38:28 +00:00
Jim Meyering
981c203fab *** empty log message *** 1998-09-07 02:36:36 +00:00
Jim Meyering
c0385fb129 Include posixtm.h.
(usage): Correct the description of the format of the
date string argument to -t option.
(main): Update to use rewritten posixtime function.
Reported by Andries Brouwer.
1998-09-07 02:35:31 +00:00
Jim Meyering
ac88b78ef3 *** empty log message *** 1998-09-07 02:24:39 +00:00
Jim Meyering
e01fce9e16 (libfu_a_SOURCES): Change posixtm.y to posixtm.c.
(noinst_HEADERS): Add posixtm.h.
1998-09-07 02:21:19 +00:00
Jim Meyering
164bff8dc0 *** empty log message *** 1998-09-07 02:18:43 +00:00
Jim Meyering
7b7b9007db . 1998-09-07 02:17:55 +00:00
Jim Meyering
c0ad97a781 rewrite from yacc-based version 1998-09-06 22:57:00 +00:00
Jim Meyering
c5a9a5f563 . 1998-09-06 22:55:47 +00:00
Jim Meyering
b363124be4 *** empty log message *** 1998-09-06 22:53:59 +00:00
Jim Meyering
d06d2de67c remove --help-style comment near top 1998-09-06 04:54:39 +00:00
Jim Meyering
82f324a6fd *** empty log message *** 1998-08-30 03:22:07 +00:00
Jim Meyering
84f0e8fc80 . 1998-08-30 03:21:13 +00:00
Jim Meyering
9a27c21fbf (ST_TIME_CMP_NS, ATIME_CMP, CTIME_CMP, MTIME_CMP): Use new ST_MTIM_NSEC macro. 1998-08-30 03:21:02 +00:00
Jim Meyering
1fff978392 . 1998-08-30 03:20:13 +00:00
Jim Meyering
4d87b9a10e (AC_STRUCT_ST_MTIM_NSEC): Renamed from AC_STRUCT_ST_MTIM.
(AC_STRUCT_ST_MTIM_NSEC): Generate name of ns member, instead of just 1 or undef.
Allow for UnixWare 2.1.2 and Solaris 2.6 if in pedantic mode.
1998-08-30 03:16:57 +00:00
Jim Meyering
8fd24dfea9 . 1998-08-30 03:13:01 +00:00
Jim Meyering
9355314687 *** empty log message *** 1998-08-30 03:12:48 +00:00
Jim Meyering
5c6991f93d (longopts): Use corresponding short-option character
in place of `1', and `NULL' in place of pointer in initialization.
1998-08-30 03:12:22 +00:00
Jim Meyering
9e9d7be706 Don't assume ASCII. 1998-08-30 03:08:21 +00:00
Jim Meyering
49b81671fd (longopts): Don't assume ASCII. 1998-08-30 03:07:52 +00:00
Jim Meyering
38429fe661 (long_options): Replace 12 with CHAR_MAX + 1. 1998-08-30 03:02:53 +00:00
Jim Meyering
ce0ba9e9d9 (long_options): Replace 12 with CHAR_MAX + 1. 1998-08-30 03:02:21 +00:00
Jim Meyering
5b3b5af5b8 (longopts): Use corresponding short-option character
in place of `1', and `NULL' in place of pointer in initialization.
1998-08-30 03:00:13 +00:00
Jim Meyering
6a2cf8a297 (longopts): Use corresponding short-option character
in place of `1', and `NULL' in place of pointer in initialization.
1998-08-30 02:58:50 +00:00
Jim Meyering
22fd1ff303 Replace 12 and 13 with CHAR_MAX + 1 and CHAR_MAX + 2 respectively. 1998-08-30 02:57:17 +00:00
Jim Meyering
cb1386ec32 (long_options): Use corresponding short-option character
in place of `1', and `NULL' in place of pointer in initialization.
1998-08-30 02:55:12 +00:00
Jim Meyering
da2761cc1a (long_options): Use corresponding short-option character
in place of `1', and `NULL' in place of pointer in initialization.
1998-08-30 02:52:45 +00:00
Jim Meyering
1fc1a65968 (long_options): Use corresponding short-option character
in place of `1', and `NULL' in place of opt_* pointer in initialization.
1998-08-30 02:50:28 +00:00
Jim Meyering
b6f403c606 Don't assume ASCII in getopt arg handling. 1998-08-30 02:33:45 +00:00
Jim Meyering
fa59cde3fe Don't assume ASCII. 1998-08-30 02:33:25 +00:00
Jim Meyering
6f7507be50 (CHAR_MIN, CHAR_MAX):
Renamed from SCHAR_MIN, SCHAR_MAX, since these
macros apply to char, not signed char.
1998-08-30 02:29:35 +00:00
Jim Meyering
33df2fe237 (EXTRA_DIST): Remove Fetish.pm.
TESTS_ENVIRONMENT: Set PROG, not LS.
1998-08-29 18:08:33 +00:00
Jim Meyering
87c3c9c7c6 . 1998-08-29 18:07:01 +00:00
Jim Meyering
e622324cbe *** empty log message *** 1998-08-29 18:06:27 +00:00
Jim Meyering
99114dd25a . 1998-08-29 18:06:10 +00:00
Jim Meyering
e29225aa01 use ENV{PROG}, not ENV{LS} 1998-08-29 18:05:53 +00:00
Jim Meyering
8bfd3a7d70 *** empty log message *** 1998-08-29 18:00:11 +00:00
Jim Meyering
f9abdd4a47 (print_dir_name): Remove global variable.
(print_dir): When trace_dirs is set, always print the directory
name header.
1998-08-29 17:57:34 +00:00
Jim Meyering
c7f7a81276 . 1998-08-26 15:21:00 +00:00
Jim Meyering
f721219e91 *** empty log message *** 1998-08-26 15:18:51 +00:00
Jim Meyering
ded46c159b . 1998-08-26 15:17:59 +00:00
Jim Meyering
9cc2f64ff3 . 1998-08-26 15:17:37 +00:00
Jim Meyering
ae3a2c75ff *** empty log message *** 1998-08-26 15:17:21 +00:00
Jim Meyering
24fa66e128 . 1998-08-26 15:16:47 +00:00
Jim Meyering
b6a0fe5ab0 *** empty log message *** 1998-08-26 15:15:34 +00:00
Jim Meyering
da190d7c06 . 1998-08-26 15:13:56 +00:00
Jim Meyering
ddd448d549 *** empty log message *** 1998-08-26 14:49:41 +00:00
Jim Meyering
71bd321379 . 1998-08-26 14:49:16 +00:00
Jim Meyering
93449adfa4 (dc_parse_stream): Don't segfault when a line
contains only one token.  Reported by Olav Morkrid.
1998-08-26 14:45:16 +00:00
Jim Meyering
21041064bd *** empty log message *** 1998-08-26 14:44:52 +00:00
Jim Meyering
f5443ca875 ptx documentation from Francois 1998-08-25 18:27:58 +00:00
Jim Meyering
eb771bb870 *** empty log message *** 1998-08-16 22:04:19 +00:00
Jim Meyering
43589db615 *** empty log message *** 1998-08-16 15:26:45 +00:00
Jim Meyering
04a86ff23a (PARAMS): Define and use. 1998-08-16 15:26:20 +00:00
Jim Meyering
b32c1f0696 *** empty log message *** 1998-08-16 04:24:38 +00:00
Jim Meyering
94d7c5b58c *** empty log message *** 1998-08-16 04:23:22 +00:00
Jim Meyering
0cb7d9a409 . 1998-08-16 04:22:49 +00:00
Jim Meyering
81bb7f1df3 . 1998-08-16 03:56:27 +00:00
Jim Meyering
7fc3b4cf7d *** empty log message *** 1998-08-16 03:56:15 +00:00
Jim Meyering
cef050f076 Use the new AC_CHECK_TYPE(ssize_t, int) instead of jm_TYPE_SSIZE_T. 1998-08-16 03:55:49 +00:00
Jim Meyering
919b805380 . 1998-08-16 03:55:36 +00:00
Jim Meyering
0e48a577b5 . 1998-08-16 03:53:30 +00:00
Jim Meyering
b0ead8f2d6 *** empty log message *** 1998-08-16 03:20:13 +00:00
Jim Meyering
5614a7d282 (do_move): Fail upon attempt to move a directory into itself.
With prodding from Franois Pinard :-)
1998-08-16 03:09:56 +00:00
Jim Meyering
9c5fb99864 Update for changed behavior of mv. 1998-08-16 03:05:01 +00:00
Jim Meyering
1145211d6b fix typos 1998-08-16 01:44:40 +00:00
Jim Meyering
0c35411a4f *** empty log message *** 1998-08-16 01:38:38 +00:00
Jim Meyering
8bd9ea509e *** empty log message *** 1998-08-16 01:37:02 +00:00
Jim Meyering
bddb246b90 *** empty log message *** 1998-08-16 01:28:55 +00:00
Jim Meyering
e646635206 *** empty log message *** 1998-08-16 00:03:06 +00:00
Jim Meyering
ea9e600f58 *** empty log message *** 1998-08-15 23:59:12 +00:00
Jim Meyering
78c34dee50 *** empty log message *** 1998-08-15 23:58:05 +00:00
Jim Meyering
56949aaebd . 1998-08-15 23:55:00 +00:00
Jim Meyering
18d7d6b082 . 1998-08-15 23:53:59 +00:00
Jim Meyering
0cb75a1a07 *** empty log message *** 1998-08-15 23:53:07 +00:00
Jim Meyering
cc271ce8f3 *** empty log message *** 1998-08-15 23:52:39 +00:00
Jim Meyering
bf73df9811 *** empty log message *** 1998-08-15 23:51:58 +00:00
Jim Meyering
b07a5a108e *** empty log message *** 1998-08-15 23:43:37 +00:00
Jim Meyering
2db8ef7c55 . 1998-08-15 23:29:09 +00:00
Jim Meyering
634ff11428 *** empty log message *** 1998-08-15 22:00:47 +00:00
Jim Meyering
c3b1ab8af1 *** empty log message *** 1998-08-15 21:57:55 +00:00
Jim Meyering
327a21114a *** empty log message *** 1998-08-15 21:57:17 +00:00
Jim Meyering
df91781926 *** empty log message *** 1998-08-15 21:54:10 +00:00
Jim Meyering
4431579378 *** empty log message *** 1998-08-15 21:52:09 +00:00
Jim Meyering
19afd110b3 *** empty log message *** 1998-08-15 21:51:44 +00:00
Jim Meyering
5b02046b20 *** empty log message *** 1998-08-15 21:41:49 +00:00
Jim Meyering
97a44fbdf0 *** empty log message *** 1998-08-15 21:40:06 +00:00
Jim Meyering
49d59ad66b *** empty log message *** 1998-08-15 21:39:17 +00:00
Jim Meyering
c2bbdeab6d *** empty log message *** 1998-08-15 21:38:08 +00:00
Jim Meyering
0d33861999 (copy_internal) [one-file-system]: Do copy mount point
directories (but none of their entries).  This makes
`cp --one-file-system' work the same way tar does.
From Marty Leisner.
1998-08-15 21:16:34 +00:00
Jim Meyering
9c38d004ec *** empty log message *** 1998-08-15 21:09:20 +00:00
Jim Meyering
a302182ac8 *** empty log message *** 1998-08-15 20:33:18 +00:00
Jim Meyering
6b0411ab47 *** empty log message *** 1998-08-15 20:23:33 +00:00
Jim Meyering
65ce4687f5 *** empty log message *** 1998-08-15 20:05:59 +00:00
Jim Meyering
363847ca74 *** empty log message *** 1998-08-15 19:55:35 +00:00
Jim Meyering
d223f01b43 *** empty log message *** 1998-08-15 19:50:54 +00:00
Jim Meyering
3a2b528573 *** empty log message *** 1998-08-15 19:30:32 +00:00
Jim Meyering
14717b8618 *** empty log message *** 1998-08-15 19:23:40 +00:00
Jim Meyering
dc8cd6e39a . 1998-08-15 18:40:41 +00:00
Jim Meyering
6db0107e71 *** empty log message *** 1998-08-15 18:39:45 +00:00
Jim Meyering
a6f74451d3 . 1998-08-15 18:39:38 +00:00
Jim Meyering
8d2302724c . 1998-08-15 18:38:04 +00:00
Jim Meyering
8fa35e89ca . 1998-08-15 18:37:55 +00:00
Jim Meyering
baad4b697c . 1998-08-15 18:37:36 +00:00
Jim Meyering
79d411ceba (qmark_funny_chars): Add comment from Paul eggert. 1998-08-15 16:43:13 +00:00
Jim Meyering
52070d3e4a *** empty log message *** 1998-08-15 14:48:36 +00:00
Jim Meyering
85cc6dedf8 *** empty log message *** 1998-08-15 14:47:50 +00:00
Jim Meyering
e3869f58ad (usage): Reformat a little. 1998-08-15 14:45:19 +00:00
Jim Meyering
c34fd6b4a7 (long_options): Add long names for all options.
(usage): Update help string.
(main): Handle the special options --pages and --columns.
1998-08-15 14:22:01 +00:00
Jim Meyering
63d64851b1 Add braces to suppress warning about ambiguous `else'. 1998-08-15 14:21:00 +00:00
Jim Meyering
d68269bb55 Add braces to suppress warning about ambiguous `else'. 1998-08-15 14:20:16 +00:00
Jim Meyering
2aa62088a3 Work around another bug in Ultrix4.3a's /bin/sh.
Reported by Christian von Roques.
1998-08-15 03:24:56 +00:00
Jim Meyering
f2d4fc8016 Avoid bug in Ultrix4.3a /bin/sh,
not initializing output redirection of : command.
1998-08-15 03:04:06 +00:00
Jim Meyering
bf57f4af46 Avoid bug in Ultrix4.3a /bin/sh,
not initializing output redirection of : command.
1998-08-15 03:03:44 +00:00
Jim Meyering
dc43a7bb60 *** empty log message *** 1998-08-15 03:01:44 +00:00
Jim Meyering
9d7c2d4f7d (read_filesystem_list) [MOUNTED_GETMNT]: Don't infloop on getmnt(2) returning 0.
Christian von Roques
1998-08-15 03:01:13 +00:00
Jim Meyering
888da5c359 *** empty log message *** 1998-08-14 14:14:07 +00:00
Jim Meyering
7b0caffd31 . 1998-08-14 14:09:05 +00:00
Jim Meyering
ed2a7b4e53 . 1998-08-13 18:08:14 +00:00
Jim Meyering
2a6a20ae20 . 1998-08-13 15:25:02 +00:00
Jim Meyering
1dce9a3295 . 1998-08-13 04:54:41 +00:00
Jim Meyering
f6da9983e4 *** empty log message *** 1998-08-13 04:12:33 +00:00
Jim Meyering
e6bc93f49a (DISTFILES): Remove ChangeLog. 1998-08-13 04:06:52 +00:00
Jim Meyering
88c0b8d630 Provide automake-style DESTDIR support.
From Johan Danielsson.
1998-08-13 04:01:46 +00:00
Jim Meyering
669ff7331b . 1998-08-13 02:11:10 +00:00
Jim Meyering
54667de765 . 1998-08-13 02:09:24 +00:00
Jim Meyering
736ea546d9 (noinst_HEADERS): Add filemode.h. 1998-08-13 02:07:54 +00:00
Jim Meyering
461aea548a Include filemode.h. 1998-08-13 02:06:41 +00:00
Jim Meyering
e31691fc1d Protoize. Tsort function definitions and remove prototypes of
static functions.
(mode_string): Remove prototype.
1998-08-13 02:05:56 +00:00
Jim Meyering
8e576e0036 . 1998-08-13 02:05:29 +00:00
Jim Meyering
b9fa91a205 (ftypelet): Add comments for Cray DMF support.
From Johan Danielsson.
1998-08-13 01:52:01 +00:00
Jim Meyering
ff438ee87f *** empty log message *** 1998-08-13 01:48:05 +00:00
Jim Meyering
34cd17408c . 1998-08-13 01:41:38 +00:00
Jim Meyering
138bad1512 add commented `diff -u' command 1998-08-12 17:14:34 +00:00
Jim Meyering
f0604f17d6 *** empty log message *** 1998-08-11 19:10:43 +00:00
Jim Meyering
3fce6c3270 . 1998-08-11 18:53:19 +00:00
Jim Meyering
ba36aa0602 *** empty log message *** 1998-08-11 18:40:21 +00:00
Jim Meyering
58a54666a7 *** empty log message *** 1998-08-11 18:17:01 +00:00
Jim Meyering
40178d3a77 *** empty log message *** 1998-08-11 17:35:57 +00:00
Jim Meyering
b9ca4fe720 . 1998-08-11 17:30:46 +00:00
Jim Meyering
c6afbb198c (rel-check): New rule. 1998-08-11 15:53:55 +00:00
Jim Meyering
c267424d7b automatically generate template for test release announcement 1998-08-11 15:23:01 +00:00
Jim Meyering
053a0e3a8e *** empty log message *** 1998-08-11 13:21:31 +00:00
Jim Meyering
39b1c602aa (usage): Correct description. Reported by John Murphy. 1998-08-11 13:16:24 +00:00
Jim Meyering
2df9108f70 *** empty log message *** 1998-08-11 13:16:11 +00:00
Jim Meyering
a2d2353f0d add comment from glibc version 1998-08-11 01:52:38 +00:00
Jim Meyering
6af7fe7bf9 *** empty log message *** 1998-08-09 20:08:27 +00:00
Jim Meyering
26abcd14d2 update from glibc 1998-08-07 12:54:51 +00:00
Jim Meyering
2fe9a639e5 *** empty log message *** 1998-08-03 03:03:29 +00:00
Jim Meyering
f1db42afed Ansideclify. 1998-08-03 03:03:11 +00:00
Jim Meyering
2d329c22c0 *** empty log message *** 1998-08-03 03:02:20 +00:00
Jim Meyering
c3db9f982a (readline): Return zero upon error as well as upon
end of file.  From James Youngman.
1998-08-03 03:02:04 +00:00
Jim Meyering
c01e767ceb . 1998-08-02 20:52:34 +00:00
Jim Meyering
0d16e71b07 . 1998-08-02 19:45:45 +00:00
Jim Meyering
2fcce776e8 . 1998-08-02 16:33:53 +00:00
Jim Meyering
bad1e4b2e1 *** empty log message *** 1998-08-02 16:33:45 +00:00
Jim Meyering
f5a228ae42 *** empty log message *** 1998-08-02 16:32:42 +00:00
Jim Meyering
a40eb86598 . 1998-08-02 16:25:14 +00:00
Jim Meyering
0136b885fe (re_protect): Add comment. 1998-08-02 16:24:41 +00:00
Jim Meyering
0f7ac75854 (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, CTIME_CMP, MTIME_CMP): New macros. 1998-08-02 16:24:13 +00:00
Jim Meyering
9fc5987250 (copy_internal): Compare time stamps with subsecond resolution if available. 1998-08-02 16:23:28 +00:00
Jim Meyering
e71d9696d7 (compare_ctime, rev_cmp_ctime, compare_mtime,
rev_cmp_mtime, compare_atime, rev_cmp_atime): Compare time
stamps with subsecond resolution if available.
1998-08-02 16:23:06 +00:00
Jim Meyering
6e1306ba8b (touch): Add comment. 1998-08-02 16:22:43 +00:00
Jim Meyering
a607901e48 (change_timestamps): Add comment. 1998-08-02 16:22:24 +00:00
Jim Meyering
01053400d0 *** empty log message *** 1998-08-02 16:20:50 +00:00
Jim Meyering
419b2d26fe Use hack to avoid having to put #undef HAVE_ST_MTIM in acconfig.h manually. 1998-08-02 16:20:39 +00:00
Jim Meyering
4ed33b3073 tweak indentation 1998-08-02 16:18:21 +00:00
Jim Meyering
ef9ee27d89 from Paul Eggert 1998-08-02 16:15:17 +00:00
Jim Meyering
277da1b998 *** empty log message *** 1998-08-02 04:16:01 +00:00
Jim Meyering
983b8c433c . 1998-08-01 15:48:56 +00:00
Jim Meyering
d5c69ef797 (my_setlocale): Guard definition within #ifdef ENABLE_NLS. 1998-08-01 15:47:26 +00:00
Jim Meyering
eb8ea6eac5 Avoid broken pipe message for tests that fail with usage errors. 1998-07-30 12:26:24 +00:00
Jim Meyering
da68f39411 * src/sort.c (usage): Add angle brackets to make `Report bugs...'
message consistent with all the rest.
1998-07-30 12:13:39 +00:00
Jim Meyering
2fcc1267b5 *** empty log message *** 1998-07-29 13:29:23 +00:00
Jim Meyering
4ead0cb8df (NEGATION_SIGN): Renamed from NEGATIVE_SIGN to avoid
clash with <langinfo.h>.  All uses changed.
From Andreas Schwab.
1998-07-29 13:29:10 +00:00
Jim Meyering
f96dc5e195 Avoid broken pipe for 'y' and 'z' tests.
From Andreas.
1998-07-29 13:27:28 +00:00
Jim Meyering
82e166ebbb *** empty log message *** 1998-07-29 04:01:45 +00:00
Jim Meyering
6a9aa3cf98 (show_all_fs):
Revert to boolean value; the old negative value is
now in show_local_fs.
(show_local_fs): New variable.
(show_dev): New args me_dummy and me_class.  Use show_local_fs
and boolean show_all_fs in combination with these new args
to decide whether to show a device.
(show_disk): Pass flags to show_dev.
(show_point): Use a non-dummy mount entry if possible.
(show_all_entries): Pass flags to show_dev.
(main): --local sets show_local_fs now.  Ask for file system types if
show_local_fs is nonzero, since ME_REMOTE might need them.

From Paul.
1998-07-29 04:01:29 +00:00
Jim Meyering
3cf7eece6f Remove duplicate include of <stdio.h>. 1998-07-29 04:00:36 +00:00
Jim Meyering
7dfff499c3 (struct mount_entry):
New members me_dummy, me_remote.
(read_filesystem_list): Remove all_fs argument.
(REMOTE_FS_TYPE): Remove.
(ME_DUMMY, ME_REMOTE): New macros.

From Paul.
1998-07-29 03:58:55 +00:00
Jim Meyering
52e2de5780 (read_filesystem_list): Remove all_fs
argument, but put the necessary information into the result so
that the caller can ignore filesystems that he's not
interested in.

From Paul.
1998-07-29 03:58:02 +00:00
Jim Meyering
c0d6757201 *** empty log message *** 1998-07-28 13:29:22 +00:00
Jim Meyering
3942f87ee3 *** empty log message *** 1998-07-28 13:20:20 +00:00
Jim Meyering
9d07c1872f Undef stat. 1998-07-28 13:15:58 +00:00
Jim Meyering
be388d139c *** empty log message *** 1998-07-27 14:25:10 +00:00
Jim Meyering
6e132bee5e Make copy create each destination file initially
with mode 0600 so strip will work, then apply specified mode.
Arne Henrik Juul reported that `./ginstall -s -c -m 555 dd /tmp' failed.
1998-07-27 13:39:36 +00:00
Jim Meyering
7d63d3c635 . 1998-07-27 13:38:42 +00:00
Jim Meyering
08d53c4c6a (TESTS_ENVIRONMENT): Set LS, MKDIR, and RM. 1998-07-27 13:27:45 +00:00
Jim Meyering
94edd792f7 use ls to check the permissions 1998-07-27 13:26:58 +00:00
Jim Meyering
5ab6986171 Test stripping an executable that eventually will be made unwritable. 1998-07-27 13:18:31 +00:00
Jim Meyering
25176dbdef *** empty log message *** 1998-07-26 21:48:37 +00:00
Jim Meyering
b49807bfb2 Convert some char* dcls to `unsigned char*' and remove a cast --
to placate irix4's cc.
1998-07-26 20:43:50 +00:00
Jim Meyering
d71367f33e (check_punctuation): Add cast to placate irix4's cc. Reported by Kaveh Ghazi. 1998-07-26 20:42:02 +00:00
Jim Meyering
bd85887daf (split_3): Add cast to placate irix4's cc. From Kaveh Ghazi. 1998-07-26 20:09:25 +00:00
Jim Meyering
82988e97cf (chown): Remove unused definition.
Reported by Kaveh Ghazi.
1998-07-26 04:13:57 +00:00
Jim Meyering
2b374ec2d9 . 1998-07-26 04:10:01 +00:00
Jim Meyering
3e3b8558d6 . 1998-07-26 04:06:55 +00:00
Jim Meyering
5c4cb177ef Add tests for new --output-delimiter option,
as well as for NUL input delimiter (--delimiter='').
1998-07-26 04:06:37 +00:00
Jim Meyering
71a3fc7989 . 1998-07-26 04:06:07 +00:00
Jim Meyering
5c9345dbd1 (cut_fields): Honor new --output-delimiter option.
(main): Fix handling of --delimiter='' (-d '').  Until now, it has
never worked as advertised.  I guess no one tried it.
1998-07-26 04:05:07 +00:00
Jim Meyering
287ddc8d05 *** empty log message *** 1998-07-26 03:59:27 +00:00
Jim Meyering
36ac5f1519 . 1998-07-26 02:59:37 +00:00
Jim Meyering
bde54af30f *** empty log message *** 1998-07-26 02:56:36 +00:00
Jim Meyering
cafbd3477a Add two tests. `sort -o no-file no-file' didn't fail. 1998-07-26 02:55:53 +00:00
Jim Meyering
165718775f (main): Stat all non-`-' input file files (and fail if a
stat fails) when an output file is specified by `-o' but doesn't exist.
1998-07-26 02:54:01 +00:00
Jim Meyering
f90d1551cb *** empty log message *** 1998-07-26 00:29:45 +00:00
Jim Meyering
613f0e187f (main): rmdir fails with EEXIST on some systems.
Handle that, so --ignore-fail-on-non-empty works.
(EEXIST): Define to zero if not defined.
(ENOTEMPTY): Likewise.
1998-07-26 00:29:30 +00:00
Jim Meyering
ca6da4ffce *** empty log message *** 1998-07-25 21:50:53 +00:00
Jim Meyering
ac517dbe89 Remove `diff' I'd put in for debugging.
Exit with the status from cmp.
1998-07-25 21:50:35 +00:00
Jim Meyering
3ae3622d9e *** empty log message *** 1998-07-25 17:52:54 +00:00
Jim Meyering
27682ba5ce Skip three more unportable tests. These failed on SunOS4.1.4. 1998-07-25 17:52:37 +00:00
Jim Meyering
8dd3e53122 *** empty log message *** 1998-07-25 16:49:13 +00:00
Jim Meyering
d1187d36da *** empty log message *** 1998-07-25 16:45:45 +00:00
Jim Meyering
0f85045bb3 . 1998-07-25 15:32:12 +00:00
Jim Meyering
69835e9fb6 (SAME_INODE): Define it here instead. 1998-07-25 15:31:23 +00:00
Jim Meyering
3ba948db7e (SAME_INODE): Remove definition. 1998-07-25 15:30:08 +00:00
Jim Meyering
d1f9e2315b . 1998-07-25 15:28:24 +00:00
Jim Meyering
d04604664a (same_file): New function
(remove_dir): Use it to give a better diagnostic when rmdir fails
because it can't remove the current directory.
1998-07-25 15:27:55 +00:00
Jim Meyering
4e9a99dd9a (long_options): Changes table entries not to use this form:
{"all", no_argument, &show_all_fs, 1},
but rather this form:
{"all", no_argument, NULL, 'a'},
Using the latter, all the option handling in one place: the getopt loop.
1998-07-25 15:14:16 +00:00
Jim Meyering
3f3df4e600 Use PARAMS macro. 1998-07-25 15:01:32 +00:00
Jim Meyering
27e780fe97 (xatoi): Ansideclify.
(fstype_to_string): Ansideclify.
1998-07-25 15:00:37 +00:00
Jim Meyering
122d3f15ae (REMOTE_FS_TYPE): New macro. 1998-07-25 14:55:10 +00:00
Jim Meyering
bb3fca40db (read_filesystem_list) [MOUNTED_GETMNTINFO]: Use fsp_to_string.
(fsp_to_string): Don't xmalloc return value (yet).
1998-07-25 14:54:42 +00:00
Jim Meyering
91c40bd499 (read_filesystem_list): If all_fs is negative, omit non-local filesytems.
From Paul Eggert.
1998-07-25 14:41:04 +00:00
Jim Meyering
0f4fcb1fbd (show_dev): Omit local devices if show_all_fs is negative.
(show_all_fs): If negative, omit non-local filesystems.
All uses of (all_fs != 0) changed to (all_fs > 0).
(long_options, usage, main): Add -l or --local option.
(main): When asking for df of an explicit file name, get all
the mount points, so that we're more likely to find it when
we look it up.
1998-07-25 14:36:07 +00:00
Jim Meyering
3fbc98bb54 . 1998-07-25 13:49:47 +00:00
Jim Meyering
240b9c0f89 . 1998-07-25 13:48:45 +00:00
Jim Meyering
fc13bb65df (utime_now): Moved into m4/utimes.m4.
(touch) [!HAVE_UTIME_NULL]: Remove #ifdef and use of utime_now in if-block.
1998-07-25 13:20:49 +00:00
Jim Meyering
27f3ca3d5a . 1998-07-25 13:16:38 +00:00
Jim Meyering
f1a7e03bbe *** empty log message *** 1998-07-25 13:10:11 +00:00
Jim Meyering
8d58cbb99e . 1998-07-22 18:32:36 +00:00
Jim Meyering
3b87431a69 (human_readable): amt -> damt, to fix typo when
computing which power to use after overflow occurs during
multiplication.

From Paul Eggert.
1998-07-22 18:30:16 +00:00
Jim Meyering
d09816b054 *** empty log message *** 1998-07-22 16:57:26 +00:00
Jim Meyering
19c23eefb7 Include <stdio.h> if NDEBUG is not defined; needed on SunOS 4.
From Paul Eggert.
1998-07-22 16:57:15 +00:00
Jim Meyering
ef8d2acace . 1998-07-20 03:59:51 +00:00
Jim Meyering
f7d6ece6e4 . 1998-07-20 03:58:24 +00:00
Jim Meyering
90a63a16ec . 1998-07-20 03:58:04 +00:00
Jim Meyering
ec7ec3773f *** empty log message *** 1998-07-20 03:57:59 +00:00
Jim Meyering
a97f821233 (copy_internal): Add another exclusion from the
sameness test: when --force has been specified, the destination
is unlinked before any copy.
(copy_internal): Add yet another: when both src and dest are symlinks.
1998-07-19 04:14:52 +00:00
Jim Meyering
b15e832f4d *** empty log message *** 1998-07-18 14:06:38 +00:00
Jim Meyering
e77a16efec *** empty log message *** 1998-07-18 13:54:40 +00:00
Jim Meyering
7fd7c6465e *** empty log message *** 1998-07-18 13:53:32 +00:00
Jim Meyering
7fc23ef625 . 1998-07-18 13:51:11 +00:00
Jim Meyering
1bd7deb235 (TESTS): Add into-self-2. 1998-07-18 13:16:43 +00:00
Jim Meyering
f2dd2f10c1 . 1998-07-18 13:15:33 +00:00
Jim Meyering
1af4f2f11d (read_filesystem_list): Fix more memory leaks on failure.
From Andreas Schwab.
1998-07-18 12:28:31 +00:00
Jim Meyering
1703d0d59c *** empty log message *** 1998-07-16 23:41:43 +00:00
Jim Meyering
7ac1d190bc Include lchown.h. 1998-07-16 23:41:03 +00:00
Jim Meyering
0c3c6b1b0b *** empty log message *** 1998-07-16 23:40:18 +00:00
Jim Meyering
01c3ff5a1e (noinst_HEADERS): Add lchown.h. 1998-07-16 23:26:50 +00:00
Jim Meyering
1b03d98f62 include lchown.h 1998-07-16 23:25:29 +00:00
Jim Meyering
b294d530d4 . 1998-07-16 23:23:05 +00:00
Jim Meyering
75b6b90fe1 [!ENOSYS] (ENOSYS): Define to ENOTSUP or ENOMSG. 1998-07-16 23:20:03 +00:00
Jim Meyering
7613946ac6 *** empty log message *** 1998-07-16 23:14:30 +00:00
Jim Meyering
5b16f997e8 [!ENOSYS] (ENOSYS): Define to ENOTSUP or ENOMSG. 1998-07-16 23:12:25 +00:00
Jim Meyering
ee041d6d4f Update prototype. 1998-07-16 23:02:19 +00:00
Jim Meyering
f89f495c0d (safe_read): Change type of pointer parameter to
`void' to avoid Irix4 cc errors.  Reported by Kaveh Ghazi.
1998-07-16 23:02:03 +00:00
Jim Meyering
5e3e9e7a15 . 1998-07-16 22:58:12 +00:00
Jim Meyering
8d4d2c4cf4 (check_format): Add `5' to the list of digits.
Reported by Donni Erpel.
1998-07-15 12:39:58 +00:00
Jim Meyering
36de2ed1e2 . 1998-07-13 00:33:36 +00:00
Jim Meyering
f42b337a0b check: depend on maint_gen 1998-07-13 00:31:49 +00:00
Jim Meyering
6cdd12a9f2 (print_header): Print "1k-blocks", not "1.0k-blocks". 1998-07-13 00:17:57 +00:00
Jim Meyering
a0ec87fbf9 *** empty log message *** 1998-07-09 14:29:22 +00:00
Jim Meyering
5c71306463 (jm_FUNC_CHOWN): Add a check to verify that the
uid and gid actually remain unchanged.
1998-07-09 14:29:11 +00:00
Jim Meyering
da69105424 *** empty log message *** 1998-07-08 01:10:45 +00:00
Jim Meyering
1ea1c0864c *** empty log message *** 1998-07-08 01:08:37 +00:00
Jim Meyering
a4e98775a4 Remove FCLOSE_UNLOCKED block. 1998-07-08 01:07:39 +00:00
Jim Meyering
5017930f13 Remove fclose_unlocked. 1998-07-08 01:03:34 +00:00
Jim Meyering
73b7370917 (parse_line): Add casts to avoid errors from Irix4's `cc' C compiler.
From Kaveh Ghazi.
1998-07-05 00:25:10 +00:00
Jim Meyering
bca292d9e6 Include stdio.h. Required on some systems when using assert.
From Kaveh Ghazi.
1998-07-04 17:15:08 +00:00
Jim Meyering
6e3b675ea8 Use cmp, not diff.
Reported by Kaveh Ghazi.
1998-07-04 17:08:26 +00:00
Jim Meyering
95efa0587b *** empty log message *** 1998-07-04 16:46:04 +00:00
Jim Meyering
e49ef588db bump serial number 1998-07-04 16:45:52 +00:00
Jim Meyering
5823a999fe Use syscmd, ifelse, and sysval. Mainly as an exercise
to prove that this macro can be used in packages without regex.c.
1998-07-04 16:45:18 +00:00
Jim Meyering
218c464b91 tweak comment 1998-07-04 15:46:38 +00:00
Jim Meyering
3cc80de466 . 1998-07-04 15:14:46 +00:00
Jim Meyering
52fa9ac235 Remove #ifdef around <regex.h> inclusion. 1998-07-04 14:45:29 +00:00
Jim Meyering
9b809393be Remove #ifdef around <regex.h> inclusion.
(extract_regexp): Remove #if !WITH_REGEX...#endif block.
1998-07-04 14:45:12 +00:00
Jim Meyering
610567e17f *** empty log message *** 1998-07-04 04:10:28 +00:00
Jim Meyering
ad4e506e0f add warning 1998-07-04 04:07:55 +00:00
Jim Meyering
4475ffda48 (remove_dir): Use fprintf, not error to avoid newline in prompt. 1998-07-04 03:59:34 +00:00
Jim Meyering
1b23f5094d *** empty log message *** 1998-07-04 03:43:50 +00:00
Jim Meyering
02f917c543 . 1998-07-04 03:42:40 +00:00
Jim Meyering
60a6e7be26 *** empty log message *** 1998-07-04 03:17:08 +00:00
Jim Meyering
8133377948 . 1998-07-04 01:46:33 +00:00
Jim Meyering
1df5503ccf *** empty log message *** 1998-07-04 01:46:23 +00:00
Jim Meyering
e9a5c7551c use $jm_with_regex, now $WITH_REGEX 1998-07-04 01:46:01 +00:00
Jim Meyering
adfde62439 remove ifdef around inclusion of regex.h altogether!! 1998-07-04 01:44:01 +00:00
Jim Meyering
4b05962106 add 100 to serial number 1998-07-04 01:38:14 +00:00
Jim Meyering
df142feab8 . 1998-07-04 01:33:27 +00:00
Jim Meyering
b2aff777b1 (noinst_HEADERS): Add regex.h. 1998-07-04 01:33:19 +00:00
Jim Meyering
b793f241f4 . 1998-07-04 00:53:46 +00:00
Jim Meyering
ad22b83e45 *** empty log message *** 1998-07-04 00:53:38 +00:00
Jim Meyering
c71fc5f18e . 1998-07-04 00:48:49 +00:00
Jim Meyering
3e13b5e49d . 1998-07-04 00:48:15 +00:00
Jim Meyering
8f55e63084 (read_filesystem_list):
Don't leak memory on failure.
Don't create a dummy struct mount_entry entry;
use the address-of-the-tail-address method instead.
Preserve errno if possible on failure, setting it to 0 if inapplicable.
Close file descriptor leak if the F_SETLKW failed.
Report an error if SVR4 lock file cannot be opened for some reason
other than a nonexistent lock file.
1998-07-04 00:48:11 +00:00
Jim Meyering
2eb479a682 . 1998-07-04 00:41:16 +00:00
Jim Meyering
ec65e39e6f *** empty log message *** 1998-07-04 00:40:52 +00:00
Jim Meyering
bedf44ba83 (AM_WITH_NLS): Remove intl/libintl.h if <libintl.h> is to be used. 1998-07-04 00:39:41 +00:00
Jim Meyering
0cb0cc4e2f . 1998-07-04 00:35:27 +00:00
Jim Meyering
aee16a6664 . 1998-07-04 00:23:40 +00:00
Jim Meyering
93d47b3db9 . 1998-07-04 00:22:39 +00:00
Jim Meyering
18c222c5b5 . 1998-07-04 00:20:47 +00:00
Jim Meyering
bb01a24be5 Require jm_WITH_REGEX. 1998-07-04 00:20:36 +00:00
Jim Meyering
1ccc979847 . 1998-07-04 00:19:23 +00:00
Jim Meyering
ad1d74e973 *** empty log message *** 1998-07-04 00:19:08 +00:00
Jim Meyering
0142ca7d96 *** empty log message *** 1998-07-04 00:17:52 +00:00
Jim Meyering
bcfa9cbbd7 Change guard on <regex.h> inclusion to use new
symbol `! HAVE_LIBC_REGEX' defined in m4/regex.m4.
1998-07-04 00:15:37 +00:00
Jim Meyering
6c93489171 . 1998-07-04 00:05:23 +00:00
Jim Meyering
345c323ffd (copy_internal): Rename variable and reverse sense of tests
to make the code a little clearer.
1998-07-03 23:56:44 +00:00
Jim Meyering
1f682431ae (df_readable): Rename local so as not to shadow global. 1998-07-03 21:05:06 +00:00
Jim Meyering
698a43f363 (SAME_INODE): New macro.
Use it to replace open-coded equivalents.
1998-07-03 20:57:31 +00:00
Jim Meyering
def9c2bf0b (copy_internal): Try harder identifying a relative
symbolic link in the current directory.
From Andreas Schwab.
1998-07-03 20:32:37 +00:00
Jim Meyering
6191d1839a Skip tests that depend on link(2) not following symlinks.
From Andreas Schwab.
1998-07-03 20:09:03 +00:00
Jim Meyering
184870f9bb (copy_internal): Don't skip test for same file if creating a hardlink
from symlink over a non-symlink while making backups.
1998-07-03 20:06:50 +00:00
Jim Meyering
6ccae5e2d8 (copy_internal): Don't call chown on a symlink. 1998-07-03 19:57:42 +00:00
Jim Meyering
31f6e2b228 *** empty log message *** 1998-07-01 12:46:39 +00:00
Jim Meyering
d05618c5c2 Don't define NDEBUG, now that it's done via configure's --disable-assert option. 1998-07-01 12:44:22 +00:00
Jim Meyering
7a314199db (read_filesystem_list):
Plug file descriptor leak on failure.
Report failure if lock file can't be opened for some reason
other than nonexistence.
1998-06-30 14:32:53 +00:00
Jim Meyering
837a447ba4 *** empty log message *** 1998-06-30 14:32:33 +00:00
Jim Meyering
5d2bbddf97 . 1998-06-30 03:57:55 +00:00
Jim Meyering
6dda2aaa52 (read_filesystem_list) [MOUNTED_GETMNTENT2]:
Always close stream and file descriptor before returning.
1998-06-30 03:56:57 +00:00
Jim Meyering
3fa1d4bb24 (main): Move the test of the result of the read_filesystem_list call
up out of if-block -- code in the else-block depends on it too.
1998-06-30 02:27:51 +00:00
Jim Meyering
1c84606b56 (read_filesystem_list): If SVR4, lock /etc/.mnttab.lock if available,
to avoid race conditions (e.g. with the automounter on Solaris 2.6).

Include <errno.h>, <fcntl.h>, <unistd.h>.
1998-06-30 02:15:43 +00:00
Jim Meyering
b1b273f24f *** empty log message *** 1998-06-29 20:34:02 +00:00
Jim Meyering
e211d3960f . 1998-06-29 20:33:24 +00:00
Jim Meyering
9282f5f8a6 . 1998-06-29 20:32:36 +00:00
Jim Meyering
1d2074e02a protoize 1998-06-29 20:29:28 +00:00
Jim Meyering
8dce8df49a . 1998-06-29 17:35:28 +00:00
Jim Meyering
4d4b2c8e5e *** empty log message *** 1998-06-29 17:31:11 +00:00
Jim Meyering
a72bab1a32 *** empty log message *** 1998-06-29 17:19:30 +00:00
Jim Meyering
affbb977af . 1998-06-29 17:03:13 +00:00
Jim Meyering
aa1c5467ec (fstype_to_string): Guard with #if ! HAVE_F_FSTYPENAME_IN_STATFS. 1998-06-29 17:01:48 +00:00
Jim Meyering
435fa5a7dd Include sys/param.h. NetBSD 1.3.1 requires this
for the definition of NGROUPS (used in a system header included
by sys/mount.h).
1998-06-29 16:57:09 +00:00
Jim Meyering
b7441176e3 *** empty log message *** 1998-06-29 16:24:37 +00:00
Jim Meyering
f3c14cb59f revert back to using lower case _unlocked wrapper names 1998-06-29 16:24:01 +00:00
Jim Meyering
8ba97d963e Include system.h only after error.h and readutmp.h
so we don't get redefinition warnings about getc, etc.
Revert back to using lower case _unlocked wrapper names.
1998-06-29 16:23:15 +00:00
Jim Meyering
223e88f957 *** empty log message *** 1998-06-29 16:16:58 +00:00
Jim Meyering
83d4b736d2 revert back to using lower case _unlocked wrapper names 1998-06-29 15:59:39 +00:00
Jim Meyering
257c5c4737 revert back to using lower case _unlocked wrapper names 1998-06-29 15:57:45 +00:00
Jim Meyering
391c960cba Update call to human_readable -- now there's one fewer arg. 1998-06-29 15:56:23 +00:00
Jim Meyering
62f208d493 . 1998-06-29 15:38:09 +00:00
Jim Meyering
60ae0b81a5 (__xstrtol), src/dd.c (parse_integer):
Add support for SI-like suffixes like "GB" and "TD".
(usage): Describe it.
1998-06-29 15:36:28 +00:00
Jim Meyering
09d344df5b (human_readable_base, output_units): Remove;
replace with new variable output_block_size.  All uses changed.
(long_options, usage, main): Add --block-size.
(main, decode_switches): Use new human_block_size function to
initialize output block size consistently with other programs.

From Paul Eggert.
1998-06-29 15:34:54 +00:00
Jim Meyering
43f4099c95 (human_readable_base, output_units): Remove;
replace with new variable output_block_size.  All uses changed.
(long_options, usage, main): Add --block-size.
(main, decode_switches): Use new human_block_size function to
initialize output block size consistently with other programs.

(print_header, show_dev): Shrink some columns and expand
others, to squeeze in support for today's larger filesystems.
(print_header): Print output block size using power-of-1024 SI format.
(df_readable): Coalesce last two args into one, for convenience.
All callers changed.
(main): Remove check for portable output format and larger
or human-readable block sizes.

From Paul Eggert.
1998-06-29 15:33:38 +00:00
Jim Meyering
476cb02516 * lib/xstrtol.c (bkm_scale): Don't assume that you can convert
unsigned long to double without losing information.
	(bkm_scale_by_power): New function.

	* lib/xstrtol.c (__xstrtol), src/dd.c (parse_integer):
	Add support for SI-like suffixes like "GB" and "TD".
	* src/dd.c (usage): Describe it.
1998-06-29 15:24:43 +00:00
Jim Meyering
159788fcca (__ZLONG_MAX): Remove. 1998-06-29 15:24:15 +00:00
Jim Meyering
f32dc5a2b0 (human_readable): Coalesce last two args into one, for convenience. 1998-06-29 15:23:45 +00:00
Jim Meyering
ea7102f120 * lib/human.c, lib/human.h (human_readable): Coalesce last two args
into one, for convenience.  All callers changed.
	(human_block_size): New function.
	* lib/human.c: Include <config.h> only if HAVE_CONFIG_H.
	Include <stdlib.h> if HAVE_STDLIB_H;
	declare getenv unless HAVE_DECL_GETENV.
	(_): New macro.
	Include <argmatch.h>, <error.h>, <xstrtoul.h>.
	(DEFAULT_BLOCK_SIZE): New macro.
	(block_size_args, block_size_types): New constants.
	(humblock): New function.
1998-06-29 15:23:04 +00:00
Jim Meyering
41ef62c472 *** empty log message *** 1998-06-29 14:27:03 +00:00
Jim Meyering
26d5ce2f26 . 1998-06-29 03:42:55 +00:00
Jim Meyering
868ed3b0af (usage): Make --kilobytes description consistent with
that in du and df.  From Gran Uddeborg.
1998-06-29 03:42:50 +00:00
Jim Meyering
6552bb980b *** empty log message *** 1998-06-29 03:42:18 +00:00
Jim Meyering
79a6760fe4 . 1998-06-29 02:27:55 +00:00
Jim Meyering
531453d901 . 1998-06-29 02:16:17 +00:00
Jim Meyering
1d94869663 . 1998-06-29 02:15:29 +00:00
Jim Meyering
ce195c7a07 . 1998-06-29 02:14:27 +00:00
Jim Meyering
09a2261919 . 1998-06-29 02:13:56 +00:00
Jim Meyering
c5eb9edf26 Change all uses of unlocked-wrapped functions to their upper case wrapper names. 1998-06-29 02:13:21 +00:00
Jim Meyering
dd9470cb58 Change all uses of unlocked-wrapped functions to their upper case wrapper names. 1998-06-29 02:11:07 +00:00
Jim Meyering
02fc5fa0d0 Change all uses of unlocked-wrapped functions to their upper case wrapper names. 1998-06-29 02:10:24 +00:00
Jim Meyering
b62793b100 . 1998-06-29 01:11:00 +00:00
Jim Meyering
c7af539321 (fsp_to_string): Clean out some crufty #ifdefs
now that we're using the jm_FSTYPENAME autoconf macro.
1998-06-29 01:10:24 +00:00
Jim Meyering
e989012b57 add #undefs, alphabetize 1998-06-29 01:00:51 +00:00
Jim Meyering
7aeda9a4d3 . 1998-06-28 23:51:58 +00:00
Jim Meyering
d51682ef43 *** empty log message *** 1998-06-28 23:51:47 +00:00
Jim Meyering
ab869ed00e . 1998-06-28 23:12:10 +00:00
Jim Meyering
73ab48d4e7 experimental support for -t [optional fd] -- probably soon to be backed out 1998-06-28 21:53:05 +00:00
Jim Meyering
73e6d60538 . 1998-06-28 21:42:37 +00:00
Jim Meyering
032aecf5e7 Require the new macro: jm_FUNC_GLIBC_UNLOCKED_IO. 1998-06-28 21:41:08 +00:00
Jim Meyering
8f3524de4a . 1998-06-28 21:40:12 +00:00
Jim Meyering
439fdff851 Add macro definitions for GNU libc unlocked wrappers. 1998-06-28 21:38:14 +00:00
Jim Meyering
933b990ab9 add a FIXME for output delimiter 1998-06-28 21:32:51 +00:00
Jim Meyering
ae965a958a remove `non-directory' 1998-06-28 21:13:04 +00:00
Jim Meyering
214ee5aecd *** empty log message *** 1998-06-28 21:11:31 +00:00
Jim Meyering
4dc12acc27 *** empty log message *** 1998-06-28 21:11:20 +00:00
Jim Meyering
a92dd43b7c Add DIRED_ prefix to the macros: FPUTS and FPUTS_LITERAL. 1998-06-28 20:34:29 +00:00
Jim Meyering
d2698caef3 s/PUTCHAR/DIRED_PUTCHAR/g. 1998-06-28 20:31:16 +00:00
Jim Meyering
db8fe3cf1f *** empty log message *** 1998-06-28 02:35:08 +00:00
Jim Meyering
664ba0841c *** empty log message *** 1998-06-27 23:54:10 +00:00
Jim Meyering
26d84b6c70 *** empty log message *** 1998-06-27 23:45:46 +00:00
Jim Meyering
70c8aaf873 Add two tests for double spacing. 1998-06-27 23:45:03 +00:00
Jim Meyering
182a1780ac (print_page): Break out of loop before double space test
if cols_ready_to_print is zero.
1998-06-27 23:43:40 +00:00
Jim Meyering
cf430d3590 *** empty log message *** 1998-06-27 22:10:02 +00:00
Jim Meyering
6ae99a4290 (copy_internal): Fix it so hard-link test is no longer hidden inside
big if-(backup_type == none) block.
1998-06-27 22:09:45 +00:00
Jim Meyering
c76172fbb0 *** empty log message *** 1998-06-27 21:36:28 +00:00
Jim Meyering
dd040b917a *** empty log message *** 1998-06-27 21:14:40 +00:00
Jim Meyering
4ec1fad4e7 *** empty log message *** 1998-06-27 21:03:16 +00:00
Jim Meyering
9d9fef5595 (copy_reg): Detect identical source and dest here.
(copy_internal): Make the test symmetric.
1998-06-27 20:44:23 +00:00
Jim Meyering
6fd3c331ba . 1998-06-27 20:37:17 +00:00
Jim Meyering
9b989298f4 *** empty log message *** 1998-06-27 20:35:26 +00:00
Jim Meyering
07507c07da (TESTS): Add same-file. 1998-06-27 20:35:16 +00:00
Jim Meyering
c96968a2a3 *** empty log message *** 1998-06-27 20:33:58 +00:00
Jim Meyering
a3e1200b4a *** empty log message *** 1998-06-27 20:33:22 +00:00
Jim Meyering
2b2424aab8 *** empty log message *** 1998-06-27 20:22:36 +00:00
Jim Meyering
994c3c82ef . 1998-06-27 20:20:25 +00:00
Jim Meyering
dfc86db1cc *** empty log message *** 1998-06-27 20:14:15 +00:00
Jim Meyering
162f6824cf *** empty log message *** 1998-06-27 20:10:29 +00:00
Jim Meyering
feccdc6c58 *** empty log message *** 1998-06-27 13:45:23 +00:00
Jim Meyering
2f617e52d6 changed --verbose message 1998-06-27 04:40:13 +00:00
Jim Meyering
d200f4974b (remove_file): Remove `non-directory' part of
`removing non-directory FILE' verbose message.
1998-06-27 04:39:25 +00:00
Jim Meyering
de45950430 (show_dev): Increase field width for blocks, used,
and available columns from 7 to 8.
1998-06-24 03:02:06 +00:00
Jim Meyering
4d95aa356f *** empty log message *** 1998-06-21 18:53:07 +00:00
Jim Meyering
d82af243b1 *** empty log message *** 1998-06-21 18:51:18 +00:00
Jim Meyering
2781ec69b7 . 1998-06-18 15:22:51 +00:00
Jim Meyering
4a9222e0c2 (check): Depend on $(maint_gen) so
`make maintainer-clean; ./configure; make check' works.
1998-06-18 15:20:03 +00:00
Jim Meyering
84c104b6da . 1998-06-07 14:45:55 +00:00
Jim Meyering
500594433a *** empty log message *** 1998-06-07 14:40:04 +00:00
Jim Meyering
ed1fdb8841 *** empty log message *** 1998-06-07 14:27:15 +00:00
Jim Meyering
5d59e18618 *** empty log message *** 1998-06-07 14:08:40 +00:00
Jim Meyering
94ff35fc2d . 1998-06-07 13:56:20 +00:00
Jim Meyering
dc6658157d . 1998-06-06 04:42:12 +00:00
Jim Meyering
36fc028151 *** empty log message *** 1998-06-05 13:00:17 +00:00
Jim Meyering
6db9dc96d3 *** empty log message *** 1998-06-01 03:31:42 +00:00
Jim Meyering
7af859841f . 1998-06-01 03:29:54 +00:00
Jim Meyering
dcfb3e037a (main): Fix argv-handling bug in my 1998-05-09 change.
Reported by Don Parsons.
1998-06-01 03:28:16 +00:00
Jim Meyering
bc63f10b59 *** empty log message *** 1998-06-01 03:27:57 +00:00
Jim Meyering
ce42a622b2 *** empty log message *** 1998-05-30 21:34:32 +00:00
Jim Meyering
5cd15e8abb Clean up ctime test. Note that it fails also
on Solaris5.5.1 tmpfs file systems.
1998-05-30 21:34:21 +00:00
Jim Meyering
c685d1c4cb . 1998-05-30 20:49:07 +00:00
Jim Meyering
cc13b3d81f *** empty log message *** 1998-05-30 20:48:26 +00:00
Jim Meyering
f23d890626 *** empty log message *** 1998-05-27 12:54:34 +00:00
Jim Meyering
e7976515e2 . 1998-05-27 12:41:08 +00:00
Jim Meyering
25485fa497 . 1998-05-27 12:39:37 +00:00
Jim Meyering
ab4ea710f1 (TESTS): s/cr-1/rt-1/ 1998-05-27 12:38:10 +00:00
Jim Meyering
39f78131e2 . 1998-05-27 12:36:38 +00:00
Jim Meyering
75637a7ef4 Don't use the ctime for testing, it is impossible to set it reliably. 1998-05-27 12:35:56 +00:00
Jim Meyering
9e1c89c38e (two_arguments): Don't test argv[pos][2] if it's past end of string. 1998-05-26 13:36:49 +00:00
Jim Meyering
c726bc5709 it's --disable-nls, not --disable-gettext 1998-05-25 04:10:33 +00:00
Jim Meyering
585b65b676 . 1998-05-25 03:41:02 +00:00
Jim Meyering
b815641481 *** empty log message *** 1998-05-24 17:45:14 +00:00
Jim Meyering
84d222f735 new version from automake-1.3 1998-05-24 17:43:17 +00:00
Jim Meyering
001e1b4302 . 1998-05-24 14:20:58 +00:00
Jim Meyering
dd2934197b tweak --changed diagnostic 1998-05-24 14:17:33 +00:00
Jim Meyering
ad174925d9 . 1998-05-24 14:02:44 +00:00
Jim Meyering
2aacc55e9b Fix braino: check S_ISLNK only if lstat succeeds. 1998-05-24 14:00:03 +00:00
Jim Meyering
6f050de759 fix typo: s/chat/char/ 1998-05-24 13:41:57 +00:00
Jim Meyering
45d32cef80 tweak comment 1998-05-24 13:36:54 +00:00
Jim Meyering
3f51edcdec Accept new option, --dereference. --no-dereference is now the default.
(Change_status) [CH_NOT_APPLIED]: New member.
(change_symlinks): Enable this by default, now.
(describe_change): Handle new case.
(change_file_owner): Add new parameter: cmdline_arg.  Update callers.
Reorganize to reflect changed semantics.
(LCHOWN): Remove definitions.
1998-05-24 12:51:37 +00:00
Jim Meyering
59c9c4036b *** empty log message *** 1998-05-24 12:49:44 +00:00
Jim Meyering
ef2860263b *** empty log message *** 1998-05-20 01:30:57 +00:00
Jim Meyering
d6b76c3f75 . 1998-05-20 01:09:12 +00:00
Jim Meyering
efa242bee1 *** empty log message *** 1998-05-20 01:08:28 +00:00
Jim Meyering
8ea818e214 *** empty log message *** 1998-05-19 16:22:58 +00:00
Jim Meyering
9bd57c9f22 . 1998-05-19 16:05:54 +00:00
Jim Meyering
0d457a6aee . 1998-05-19 16:05:30 +00:00
Jim Meyering
2722883a87 Add jm_FUNC_LCHOWN. 1998-05-19 16:05:23 +00:00
Jim Meyering
8105878c15 *** empty log message *** 1998-05-19 16:04:24 +00:00
Jim Meyering
231c5aec0f . 1998-05-19 16:02:40 +00:00
Jim Meyering
e4e242e839 . 1998-05-19 16:01:48 +00:00
Jim Meyering
da8b83f81a *** empty log message *** 1998-05-19 16:01:31 +00:00
Jim Meyering
df610e05ba *** empty log message *** 1998-05-19 15:53:03 +00:00
Jim Meyering
9dab634c13 *** empty log message *** 1998-05-19 15:51:10 +00:00
Jim Meyering
e5154f74b1 . 1998-05-19 15:49:18 +00:00
Jim Meyering
67786e0fb6 *** empty log message *** 1998-05-19 15:15:09 +00:00
Jim Meyering
c84011e059 . 1998-05-19 15:06:49 +00:00
Jim Meyering
e36f49348b Remove $other_partition_tmpdir 1998-05-18 13:53:40 +00:00
Jim Meyering
e786c1a0eb *** empty log message *** 1998-05-17 04:57:10 +00:00
Jim Meyering
c057d35836 . 1998-05-16 23:46:05 +00:00
Jim Meyering
d9b628359a *** empty log message *** 1998-05-16 20:37:24 +00:00
Jim Meyering
29b1eab1af . 1998-05-16 20:35:46 +00:00
Jim Meyering
9abd463ffb . 1998-05-16 20:35:23 +00:00
Jim Meyering
b54c86e8bc add 2 more tsts 1998-05-16 20:35:19 +00:00
Jim Meyering
b885f7cbca . 1998-05-16 20:33:44 +00:00
Jim Meyering
7006d5fed6 *** empty log message *** 1998-05-16 20:27:26 +00:00
Jim Meyering
976664803c (read_utmp): Add variant for systems that have the utmpname function.
Ansideclify.
1998-05-16 20:26:54 +00:00
Jim Meyering
3fdd4e6cd2 add copyright 1998-05-16 20:21:39 +00:00
Jim Meyering
42755ceb62 cast for losing Solaris 1998-05-16 20:21:06 +00:00
Jim Meyering
8f03befb52 . 1998-05-16 20:11:01 +00:00
Jim Meyering
78af2f9732 . 1998-05-16 20:08:30 +00:00
Jim Meyering
88b4a9a940 *** empty log message *** 1998-05-16 20:07:59 +00:00
Jim Meyering
045ebed00c (opt-b, opt-s, opt_sb, opt_r): New test.
(opt_br): New test -- exercises above-fixed bug.
1998-05-16 20:07:40 +00:00
Jim Meyering
24a7456cc0 (tac_seekable): Fix error in handling regex separators. 1998-05-16 20:06:56 +00:00
Jim Meyering
b17e1af41c . 1998-05-16 05:18:07 +00:00
Jim Meyering
349b13e33a remove jm_FUNC_GNU_STRFTIME 1998-05-16 04:44:48 +00:00
Jim Meyering
7b1d31a9b1 . 1998-05-16 04:40:58 +00:00
Jim Meyering
085866c1a3 (hash_compare_strings): Return true or false, not 1/0.
(remove_cwd_entries): Use RM_OK, not equivalent literal `1'.
1998-05-16 04:40:38 +00:00
Jim Meyering
4f75855c2e (is_prime): Ansideclify.
(next_prime): Ansideclify.  Add an assertion.
1998-05-16 04:39:24 +00:00
Jim Meyering
d649910685 (EXTRA_DIST): Remove. Automake groks the `LIBOBJS='
lines in the m4/*.m4 macros, so the hack of including some
custom-replaced C source file names here is no longer needed.
1998-05-16 04:37:45 +00:00
Jim Meyering
e3e1698c6b . 1998-05-16 04:30:42 +00:00
Jim Meyering
b49e060cda . 1998-05-14 16:03:15 +00:00
Jim Meyering
e769659852 . 1998-05-13 04:15:47 +00:00
Jim Meyering
33d7cba8a7 *** empty log message *** 1998-05-13 04:03:21 +00:00
Jim Meyering
65b2d6c97e *** empty log message *** 1998-05-13 03:51:10 +00:00
Jim Meyering
2f3c1a3561 . 1998-05-13 03:50:46 +00:00
Jim Meyering
d8b68fc0c5 (EXTRA_DIST): Add isc-posix.m4. 1998-05-13 03:50:35 +00:00
Jim Meyering
06ffb13ff0 clean up diagnostic 1998-05-13 03:49:36 +00:00
Jim Meyering
3e62291a3c . 1998-05-13 03:48:43 +00:00
Jim Meyering
10972f68e8 *** empty log message *** 1998-05-13 03:48:05 +00:00
Jim Meyering
15aac9a45d (copy_internal): Plug a small leak. 1998-05-13 03:47:02 +00:00
Jim Meyering
43fd950ef9 undefine before redefining 1998-05-11 15:16:40 +00:00
Jim Meyering
6c4002b2b5 . 1998-05-11 12:39:16 +00:00
Jim Meyering
816ee7dc0d . 1998-05-11 12:33:07 +00:00
Jim Meyering
916c762152 . 1998-05-11 11:54:48 +00:00
Jim Meyering
0d7fe8a4de (do_move): Remove lots of code that was duplicated in
copy.c (copy), now that copy() has better support for mv.  This fixes
a bug with cross-filesystem `mv -i' whereby you could get two prompts
for the same destination file and eventually remove the destination
file even though one of the responses was negative.
Reported by Dirk Lattermann.
1998-05-11 04:12:51 +00:00
Jim Meyering
841c6fbfe0 *** empty log message *** 1998-05-11 04:12:26 +00:00
Jim Meyering
859bfc78b1 reflect additional parameter to copy
initialize new member: move_mode.
1998-05-11 04:07:16 +00:00
Jim Meyering
21ae3d911c (copy_internal): Use new move_mode member.
Add parameter.
(copy): Add parameter.
1998-05-11 04:06:22 +00:00
Jim Meyering
4520ff31e2 Better support for mv:
[struct cp_options] (move_mode): New member.
1998-05-11 04:04:16 +00:00
Jim Meyering
92ce634177 (TESTS): Likewise. 1998-05-11 04:01:42 +00:00
Jim Meyering
6d89cf5f12 *** empty log message *** 1998-05-11 04:00:54 +00:00
Jim Meyering
83a4462018 . 1998-05-11 03:55:18 +00:00
Jim Meyering
2b416bd83e *** empty log message *** 1998-05-11 03:48:31 +00:00
Jim Meyering
96ab6a541a (TESTS): Add backup-is-src. 1998-05-11 03:47:24 +00:00
Jim Meyering
571a29d870 *** empty log message *** 1998-05-11 03:46:59 +00:00
Jim Meyering
20f1f8b063 . 1998-05-11 03:46:48 +00:00
Jim Meyering
4e1e8c600d add --verbose and compare against expected output 1998-05-11 03:35:01 +00:00
Jim Meyering
d816bb4f14 *** empty log message *** 1998-05-11 03:26:40 +00:00
Jim Meyering
ce60ef7400 *** empty log message *** 1998-05-11 03:19:35 +00:00
Jim Meyering
6e98d78fd4 add "'s 1998-05-11 03:13:51 +00:00
Jim Meyering
2c5862c808 *** empty log message *** 1998-05-11 03:13:36 +00:00
Jim Meyering
268db2760a *** empty log message *** 1998-05-11 03:13:00 +00:00
Jim Meyering
0062e8f915 *** empty log message *** 1998-05-11 03:09:18 +00:00
Jim Meyering
057743741f Use am_cv_func_working_getline, not `jm_'-prefixed version. 1998-05-10 20:58:09 +00:00
Jim Meyering
3f2774c8b4 *** empty log message *** 1998-05-10 16:11:13 +00:00
Jim Meyering
3e0c559579 Use AM_FUNC_MKTIME, now that it's up to date. 1998-05-10 16:10:40 +00:00
Jim Meyering
e7d6615b76 Don't declare strdup if it's defined as a macro.
Reported by Lorne Baker.
1998-05-10 16:04:39 +00:00
Jim Meyering
91df5bbc48 *** empty log message *** 1998-05-10 16:03:56 +00:00
Jim Meyering
4cc5661b42 (cp_option_init): s/use_mode/set_mode/ 1998-05-10 12:22:58 +00:00
Jim Meyering
19a98e3edc (cp_option_init): Likewise.
(main): Set new preserve_* options.
1998-05-10 12:22:23 +00:00
Jim Meyering
50e17793c8 (cp_option_init): Initialize new members. 1998-05-10 12:19:30 +00:00
Jim Meyering
8a0a50e6b0 (new_nondir_mode): New function. Use where appropriate.
Use more-specific preserve_* members in place of removed `preserve'.
(copy_internal): Honor failed_unlink_is_fatal.
1998-05-10 12:18:21 +00:00
Jim Meyering
a42054dd57 Support for install:
[struct cp_options] (failed_unlink_is_fatal): New member.
(preserve_owner_and_group): New member.
(preserve_chmod_bits): New member.
(preserve_timestamps): New member.
(preserve): Remove member.
(set_mode): New member.
(mode): New member.
1998-05-10 12:17:46 +00:00
Jim Meyering
24da56f990 (main): Rewrite argv-handling to be clearer.
(copy_file): Rewrite to use copy.c (copy).
(change_attributes): Get rid of now-(with chown wrapper)-unnecessary
`no_need_to_chown' parameter.  Fix caller.
(install_file_in_file): Remove now-unnecessary `to_created' parameter.
(cp_option_init): New function.
Update several functions to take new parameter specifying copy options.
1998-05-10 03:05:44 +00:00
Jim Meyering
d8e6937773 . 1998-05-09 20:25:09 +00:00
Jim Meyering
e1b2b2337d . 1998-05-09 20:23:38 +00:00
Jim Meyering
60c77b6c28 . 1998-05-09 19:56:35 +00:00
Jim Meyering
c7b3d3e91b . 1998-05-09 19:56:14 +00:00
Jim Meyering
60c1207b74 . 1998-05-09 19:07:40 +00:00
Jim Meyering
d344aaa129 *** empty log message *** 1998-05-09 17:42:59 +00:00
Jim Meyering
83c2cfa04d Include safe-read.h.
Don't declare safe_read.
1998-05-09 17:42:50 +00:00
Jim Meyering
53c7a54a58 Include safe-read.h.
Don't declare safe_read.
1998-05-09 17:41:37 +00:00
Jim Meyering
e81bcd87cb . 1998-05-09 17:38:05 +00:00
Jim Meyering
10d98345b4 . 1998-05-09 17:37:10 +00:00
Jim Meyering
e17b601d5e (EXTRA_DIST): Remove mktime.m4, now that the new version is included
with automake.
1998-05-09 17:18:55 +00:00
Jim Meyering
f5d8ee465e (EXTRA_DIST): Add ssize_t.m4. 1998-05-09 17:00:48 +00:00
Jim Meyering
51c06c49cf . 1998-05-09 17:00:38 +00:00
Jim Meyering
bbf4d37373 (tac_seekable): Rename from tac_stream.
Change `FILE *in' parameter to `int input_fd'. Adjust callers.
Revert to using safe_read -- can't mix lseek and fread.
And can't use fseek because it can't handle files larger than 2^32.
1998-05-09 14:42:31 +00:00
Jim Meyering
9bb85624cf fix up compile warnings 1998-05-07 17:45:10 +00:00
Jim Meyering
9b5402ec48 Don't use safe_read. Use fread instead.
Fix open and fdopen to agree that file is read/write: O_RDWR and "w+".
This is required on at least solaris5.5.1.
1998-05-07 17:43:13 +00:00
Jim Meyering
77728e4f4b add curlies 1998-05-07 16:01:02 +00:00
Jim Meyering
9db889c372 add some curly braces 1998-05-07 15:55:56 +00:00
Jim Meyering
caace05438 rename variable 1998-05-07 15:54:44 +00:00
Jim Meyering
cd7f8d6e9b (tac_stdin): Use STDIN_FILENO rather than literal `0' in fstat call. 1998-05-07 15:50:54 +00:00
Jim Meyering
bf598c02ba add tr `double' script example 1998-05-07 14:32:59 +00:00
Jim Meyering
3954a4f441 remove dcl of unused safe_read 1998-05-04 00:44:37 +00:00
Jim Meyering
506343b223 . 1998-05-04 00:28:35 +00:00
Jim Meyering
2f8dc98340 . 1998-05-04 00:27:15 +00:00
Jim Meyering
d015aad1f2 . 1998-05-03 23:21:42 +00:00
Jim Meyering
a99c3df843 *** empty log message *** 1998-05-03 23:21:39 +00:00
Jim Meyering
e78bc7655d . 1998-05-03 22:18:22 +00:00
Jim Meyering
a519a07f25 . 1998-05-03 22:15:39 +00:00
Jim Meyering
02efcd60ed . 1998-05-03 22:14:55 +00:00
Jim Meyering
39e2377300 . 1998-05-03 22:14:06 +00:00
Jim Meyering
cda5bf9db9 . 1998-05-03 21:56:10 +00:00
Jim Meyering
27c8d53a3a . 1998-05-03 21:46:06 +00:00
Jim Meyering
3e7e7d0792 Use `-I.' with each invocation of $(PERL).
perl-5.004_xx comes with a Test.pm module that'd be used otherwise.
1998-05-03 21:41:51 +00:00
Jim Meyering
a5b0ca6f24 . 1998-05-03 21:05:51 +00:00
Jim Meyering
1f62fd20a3 update from gettext-0.10.35 1998-05-03 20:46:29 +00:00
Jim Meyering
254fc64f64 update from gettext-0.10.35 1998-05-03 20:37:39 +00:00
Jim Meyering
9dc7d5d2ae . 1998-05-02 15:37:18 +00:00
Jim Meyering
45af919ce6 (check_format): Use ISDIGIT, not isdigit. 1998-05-02 15:36:43 +00:00
Jim Meyering
89c9e683a3 . 1998-05-02 15:33:01 +00:00
Jim Meyering
d20d0fc27d . 1998-05-02 15:31:13 +00:00
Jim Meyering
5b7e895b65 . 1998-05-02 15:25:56 +00:00
Jim Meyering
2e97d27586 (parse_line): Use ISSPACE, not isspace.
Use unsigned char * pointers, not potentially signed ones, to avoid
sign extension.
1998-04-28 13:09:47 +00:00
Jim Meyering
a155c3d684 tweak from FSF 1998-04-28 12:19:53 +00:00
Jim Meyering
3489f267a4 *** empty log message *** 1998-04-27 16:09:46 +00:00
Jim Meyering
3fc7024e49 . 1998-04-27 05:05:47 +00:00
Jim Meyering
30b522371a . 1998-04-27 05:04:54 +00:00
Jim Meyering
88013e3cb4 . 1998-04-27 05:04:05 +00:00
Jim Meyering
7c8a2cdacf . 1998-04-27 05:03:43 +00:00
Jim Meyering
876f399d50 . 1998-04-27 05:03:09 +00:00
Jim Meyering
05ffec210e Disable test f-1, now that it fails. 1998-04-27 05:02:56 +00:00
Jim Meyering
163f7f9c20 . 1998-04-27 05:01:43 +00:00
Jim Meyering
8fbf79b4e0 *** empty log message *** 1998-04-27 05:01:19 +00:00
Jim Meyering
08b5c3046c *** empty log message *** 1998-04-27 05:00:00 +00:00
Jim Meyering
551b879bf1 *** empty log message *** 1998-04-27 04:57:59 +00:00
Jim Meyering
bd1eee0315 add 22b 1998-04-27 04:53:31 +00:00
Jim Meyering
72f7eb4e63 . 1998-04-27 04:41:41 +00:00
Jim Meyering
fef313b2b0 Remove definition of _GNU_SOURCE 1998-04-27 04:31:45 +00:00
Jim Meyering
464e2ce05d (22a): Add test. 1998-04-27 04:30:30 +00:00
Jim Meyering
a48999494d *** empty log message *** 1998-04-27 04:29:36 +00:00
Jim Meyering
d5d061ee9b (keycompare): Don't return 0 from inside the keyspec-iterating loop.
With this change, test 22a passes.  Reported by Zvi Har'El.
1998-04-27 04:29:05 +00:00
Jim Meyering
b44e91e99d (strncoll): Remove bogus assertion. 1998-04-27 03:50:17 +00:00
Jim Meyering
ce3668f3c1 (EXTRA_DIST): Add assert.m4. 1998-04-26 20:48:58 +00:00
Jim Meyering
44fa09dc5e . 1998-04-26 20:48:00 +00:00
Jim Meyering
808b938840 Don't define NDEBUG. 1998-04-26 20:42:16 +00:00
Jim Meyering
83d4d74a88 Don't define NDEBUG. 1998-04-26 20:41:42 +00:00
Jim Meyering
0d38a270a4 Do not define _GNU_SOURCE and/or NDEBUG 1998-04-26 20:38:28 +00:00
Jim Meyering
3f017c26ca [struct File_spec] (pretty_name): Remove member.
(pretty_name): New function.
1998-04-26 20:09:26 +00:00
Jim Meyering
4c946943ea *** empty log message *** 1998-04-26 19:58:57 +00:00
Jim Meyering
7dd872d963 Remove usage-like comments near beginning of file. 1998-04-26 19:58:43 +00:00
Jim Meyering
b7d50ca523 (xwrite): New function -- converted from macro. 1998-04-26 19:53:54 +00:00
Jim Meyering
fe18d63a65 (close_fd): New function -- converted from macro.
[struct File_spec] (n_stat_calls): New member.
[struct File_spec] (n_unchanged_stats): New member.
(max_n_unchanged_stats): New global.
Initialize new members.
1998-04-26 19:50:21 +00:00
Jim Meyering
6668e39160 *** empty log message *** 1998-04-26 15:28:20 +00:00
Jim Meyering
d738449858 (md5_check): Declare local, `md5num' as _unsigned_ char*.
(hex_digits): Declare parameter `s' as _unsigned_ char*.
(split_3): Declare parameter `u' as _unsigned_ char**.
1998-04-26 15:28:06 +00:00
Jim Meyering
7254d243f2 (print_nth_dir): Remove first (and always-true) part of conjunct in assertion. 1998-04-26 05:14:50 +00:00
Jim Meyering
91da5cedc7 . 1998-04-17 15:37:52 +00:00
Jim Meyering
1187f5eb7f (xfields): Used unsigned char* pointers to avoid 1998-04-17 15:37:29 +00:00
Jim Meyering
5bcc1fd7fd (check_punctuation): Used unsigned char* pointers to avoid 1998-04-17 15:37:03 +00:00
Jim Meyering
e4c9ae3c6b . 1998-04-17 15:30:37 +00:00
Jim Meyering
d1121fa4c0 *** empty log message *** 1998-04-14 15:17:45 +00:00
Jim Meyering
713c315978 Use STREQ in string equality tests, not strcmp. 1998-04-14 15:17:32 +00:00
Jim Meyering
8cc46c2a18 (noinst_HEADERS): Add safe-read.h. 1998-04-13 16:29:58 +00:00
Jim Meyering
518f85fc40 . 1998-04-13 13:51:27 +00:00
Jim Meyering
48990a9078 Include safe-read.h instead of merely declaring safe_read. 1998-04-12 19:56:25 +00:00
Jim Meyering
69a3ee0b49 . 1998-04-12 15:16:37 +00:00
Jim Meyering
8ed3137f52 (TYPE_MAXIMUM): Update from system.h. 1998-04-12 09:39:30 +00:00
Jim Meyering
d4257e63c7 Use STREQ rather than strcmp 1998-04-12 09:27:45 +00:00
Jim Meyering
7154d646cb (wc): Declare per-file counters and `linepos' to be of type uintmax_t.
Declare bytes_read to be ssize_t.
1998-04-12 09:12:21 +00:00
Jim Meyering
b388203a65 Include safe-read.h instead of merely declaring safe_read. 1998-04-11 18:24:09 +00:00
Jim Meyering
66c7b3c41d Include safe-read.h instead of merely declaring safe_read. 1998-04-11 18:23:13 +00:00
Jim Meyering
ac7b3c4fa9 [HAVE_INTTYPES_H]: Include inttypes.h.
Declare counters to be of type uintmax_t.
(write_counts): Use human_readable to format potentially-long-long
numbers.  Suggestion from Rogier Wolff.
1998-04-11 18:21:24 +00:00
Jim Meyering
b402870080 (noinst_HEADERS): Add safe-read.h. 1998-04-11 17:53:09 +00:00
Jim Meyering
1cbe202b0a . 1998-04-11 17:52:28 +00:00
Jim Meyering
d618576e0e split a couple long lines 1998-04-11 15:37:35 +00:00
Jim Meyering
51fe35760e Add curly braces around statements in if/else/while/do/etc. that
span more than a line -- even around multiline simple statements or
single-line simple statements preceded by a comment line.
1998-04-11 15:35:06 +00:00
Jim Meyering
8bbe8ab5d4 . 1998-04-11 15:05:20 +00:00
Jim Meyering
ba51843a2c . 1998-04-11 15:04:39 +00:00
Jim Meyering
397d9be228 import version 2.231 1998-04-11 15:03:51 +00:00
Jim Meyering
dddfcab3b3 *** empty log message *** 1998-04-11 09:24:28 +00:00
Jim Meyering
00ea94587f indent cpp directives 1998-04-09 07:28:10 +00:00
Jim Meyering
49875c1593 make there be two spaces after `.' in comments 1998-04-09 07:22:52 +00:00
Jim Meyering
7b9c4d3d03 (cph_hash_insert): Rename from now-conflicting hash_insert.
Also declare to be static.
1998-04-06 08:15:29 +00:00
Jim Meyering
3783d6be57 (hash_insert): Remove declaration. 1998-04-06 08:14:58 +00:00
Jim Meyering
632ebfa209 Change names/usage of hash-related functions to work with the above. 1998-04-06 08:11:35 +00:00
Jim Meyering
29cc8bf4f3 Lots of minor spec and name changes, and new comments.
From Franois Pinard.
1998-04-06 08:09:36 +00:00
Jim Meyering
50892edd61 Lots of minor spec and name changes, and new comments.
(hash_rehash): Rewritten to be easier on the allocator.
From Franois Pinard.
1998-04-06 08:09:11 +00:00
Jim Meyering
72193ba149 *** empty log message *** 1998-04-06 00:26:54 +00:00
Jim Meyering
854b5197ad *** empty log message *** 1998-04-05 23:44:12 +00:00
Jim Meyering
d90641d9d8 . 1998-04-05 23:43:58 +00:00
Jim Meyering
300be5a250 *** empty log message *** 1998-04-05 21:35:33 +00:00
Jim Meyering
3911fadcf9 add braces to disambiguate ambiguous else 1998-04-05 21:32:26 +00:00
Jim Meyering
382ca69cec . 1998-04-05 18:24:45 +00:00
Jim Meyering
9fc10dc6c3 (WIDE_CHAR_SUPPORT): Define.
This now depends on HAVE_BTOWC so systems that lack btowc (like
solaris-2.5.1) don't lose.
1998-04-05 18:24:18 +00:00
Jim Meyering
f0a8ebf596 *** empty log message *** 1998-04-05 18:22:30 +00:00
Jim Meyering
53c085b7e5 (jm_PREREQ_REGEX): New macro.
(jm_PREREQ): Use it here.
1998-04-05 18:22:11 +00:00
Jim Meyering
faa759b349 *** empty log message *** 1998-04-04 21:37:50 +00:00
Jim Meyering
398e92a2ec *** empty log message *** 1998-04-04 18:17:10 +00:00
Jim Meyering
3483943ebc (PARAMS): Define. 1998-04-04 18:16:51 +00:00
Jim Meyering
108b074aea . 1998-04-04 16:47:29 +00:00
Jim Meyering
19fcb4356c Use "%s", not device_name, as the format string, in case the
latter contains `%'.
1998-04-04 16:47:19 +00:00
Jim Meyering
c4b7f217a5 stty: document new --file/-F option 1998-04-04 16:36:30 +00:00
Jim Meyering
cb04f85936 . 1998-04-04 16:28:11 +00:00
Jim Meyering
902bbe7707 *** empty log message *** 1998-04-04 16:27:12 +00:00
Jim Meyering
c9a9ec9b53 . 1998-04-04 16:20:15 +00:00
Jim Meyering
840a08ccde . 1998-04-04 16:19:34 +00:00
Jim Meyering
5fbcd963df clean up comments 1998-04-04 10:36:32 +00:00
Jim Meyering
953c42bd52 (valid_options): Parenthesize assignment in while expr.
(main): Remove dcl of unused `cp'.
1998-04-04 09:38:47 +00:00
Jim Meyering
765122f558 Use STREQ in place of strcmp everywhere.
(valid_options): Indent
(main): s/case 'f':/case 'F':/
Tweak error messages to make them consistent.
Remove #if-0'd block.
Move dcl of fdflags into scope where it's used.
1998-04-04 09:30:39 +00:00
Jim Meyering
e46a424ce9 [1998-03-31 Theodore Ts'o <tytso@rsts-11.mit.edu>]
(main): Fix broken options parsing that worked only
by serendipity (getopt_long_only already parsed short options; no
need to parse them again manually!).  Add support for the --file
option, which allows the user to specify the device whose line
settings are to be set.  This is necessary because POSIX ttys will
block waiting for carrier detect to go high if CLOCAL is not set,
unless the device is opened with the O_NONBLOCK flag.
Unfortunately, the shell doesn't use this flag, so users lose.
Opening the device in stty is the easist way to fix this.
(speeds): Add support for 230400 and 460800 line speeds, which are
supported by Linux.
1998-04-04 09:08:04 +00:00
Jim Meyering
095c92bc46 . 1998-04-04 08:24:11 +00:00
Jim Meyering
7957dcc00a . 1998-04-04 08:11:22 +00:00
Jim Meyering
108f8f2d04 . 1998-04-04 08:07:26 +00:00
Jim Meyering
39463d50ed update comment 1998-04-04 08:06:24 +00:00
Jim Meyering
4a46351e06 Add conditionals so that running `make' in an
unconfigured source directory will get a reasonable diagnostic.
1998-04-04 08:05:18 +00:00
Jim Meyering
8aca15bac0 . 1998-04-04 08:03:48 +00:00
Jim Meyering
1ddffff8c0 *** empty log message *** 1998-04-04 08:02:23 +00:00
Jim Meyering
e7683a577a (aclocal-files): Remove now-unnecessary (with
automake-1.2h and the above change) aclocal-related rules and includes.
1998-04-04 07:50:13 +00:00
Jim Meyering
3063e56f2e *** empty log message *** 1998-04-01 06:47:32 +00:00
Jim Meyering
eb3a4daa24 . 1998-04-01 06:47:25 +00:00
Jim Meyering
b6844f1931 (TESTS): Add cr-1. 1998-04-01 06:46:52 +00:00
Jim Meyering
a636450727 (compare_ctime, rev_cmp_ctime, compare_mtime,
rev_cmp_mtime, compare_atime, rev_cmp_atime, compare_size,
rev_cmp_size): Use file name as secondary sort key to get
consistent sorting.
1998-04-01 06:35:01 +00:00
Jim Meyering
6456a7d8ac . 1998-03-31 23:11:50 +00:00
Jim Meyering
a57d5061ff (TYPE_MAXIMUM): Cast result to (t)' so this macro works with unsigned char'.
From Greg Wooledge.
(SCHAR_MIN, SCHAR_MAX, SHRT_MIN, SHRT_MAX, LONG_MAX, ULONG_MAX): Define.
1998-03-31 23:11:37 +00:00
Jim Meyering
45e8e5c550 Merge with the version from textutils. 1998-03-31 13:14:22 +00:00
Jim Meyering
69412999dc (EXTRA_DIST): Remove mk-script.pl.
(mk_script): Set to ../mk-script.
(x-tests): Use `$(PERL) -w -- $(mk_script)', not ./mk-script.
Remove @MAINT@ cruft.
(Makefile.am): Likewise.
Remove @MAINT@ cruft.  Now `missing' will explain the failure
when people don't have Perl yet modify a file whose rebuilding
would lead to the use of Perl.
1998-03-31 12:49:00 +00:00
Jim Meyering
85b39cb589 add descriptive first-line comment 1998-03-31 12:09:55 +00:00
Jim Meyering
9f358e6830 (rpl_memcmp): Rename from memcmp. 1998-03-31 12:05:17 +00:00
Jim Meyering
defb2bdef8 . 1998-03-31 07:50:22 +00:00
Jim Meyering
6e577f0b56 *** empty log message *** 1998-03-28 14:57:25 +00:00
Jim Meyering
c157e5fbef Add copyright. 1998-03-28 14:56:49 +00:00
Jim Meyering
ca6cf35a5e Add copyright.
[_AIX]: Add #pragma alloca.
1998-03-28 14:56:11 +00:00
Jim Meyering
ede420f14a ($(ACLOCAL_M4)): Replace old rule with this
dependency and the := assignment of ACLOCAL to make the default
rule use the `-I m4' option.
1998-03-27 22:37:56 +00:00
Jim Meyering
52a2ff839c . 1998-03-27 22:34:23 +00:00
Jim Meyering
821a0823b1 *** empty log message *** 1998-03-27 22:33:37 +00:00
Jim Meyering
e52d8736b1 remove dcl of unused local, num_regs 1998-03-27 22:29:05 +00:00
Jim Meyering
5c0ee776d4 cpp-directive aesthetics 1998-03-27 12:40:03 +00:00
Jim Meyering
465ebf7c37 new version from Uli 1998-03-27 11:23:07 +00:00
Jim Meyering
18ad404d02 . 1998-03-26 16:27:28 +00:00
Jim Meyering
28cb02fc78 (batch_convert): Remove spurious space in error message.
Reported by Karl Berry.
1998-03-26 15:41:14 +00:00
Jim Meyering
cbf0181378 s/@samp/@email/ for e-mail addresses 1998-03-25 07:38:24 +00:00
Jim Meyering
bca2db9877 . 1998-03-23 23:52:30 +00:00
Jim Meyering
aa71be25c0 . 1998-03-23 23:49:18 +00:00
Jim Meyering
cd053a291e update from automake-2.1h 1998-03-23 23:19:01 +00:00
Jim Meyering
fa4148be50 *** empty log message *** 1998-03-23 23:13:24 +00:00
Jim Meyering
5695f8ea2d . 1998-03-23 23:13:08 +00:00
Jim Meyering
18d159d47e *** empty log message *** 1998-03-23 23:12:45 +00:00
Jim Meyering
0bb2acd9da Kludges so I don't have to add HAVE_INTTYPES_H in acconfig.h. 1998-03-23 23:10:30 +00:00
Jim Meyering
7a8b4afa3e . 1998-03-23 22:47:45 +00:00
Jim Meyering
3a0352ad9a . 1998-03-23 22:47:05 +00:00
Jim Meyering
55569d4f9f update from libc/copies 1998-03-23 07:24:54 +00:00
Jim Meyering
eeef5c523d merge variables: forever_multiple and forever
(recheck): New function.
Begin to support --allow-missing option.
1998-03-22 20:55:34 +00:00
Jim Meyering
e8ab1c28f8 *** empty log message *** 1998-03-22 20:38:44 +00:00
Jim Meyering
df4ba7d9ca (tail_forever): plug gross fd leaks
Don't close stdin
Don't print header unnecessarily if the first file to grow
is the last one for which a header was printed.
1998-03-21 16:33:53 +00:00
Jim Meyering
e832812173 *** empty log message *** 1998-03-21 08:54:58 +00:00
Jim Meyering
ac648dbc8a Update from patch-2.5.3. 1998-03-21 08:51:48 +00:00
Jim Meyering
c75ccba2d3 Update from patch-2.5.3. 1998-03-21 08:49:00 +00:00
Jim Meyering
a33adfebb2 (decode_switches): Pass a null pointer instead of address
of quotearg_quoting_options.
1998-03-21 08:47:54 +00:00
Jim Meyering
b50b941826 . 1998-03-19 22:27:17 +00:00
Jim Meyering
6ec5bace8a (show_dev): If fsu_bavail_top_bit_set is nonzero,
assume the original value corresponding to fsu_bavail was negative.
1998-03-19 22:18:29 +00:00
Jim Meyering
b48e78e3b7 Include <limits.h>.
(CHAR_BIT, EXTRACT_TOP_BIT, PROPAGATE_TOP_BIT): New macros.
(get_fs_usage): If top bit of system variable corresponding to
fsu_bavail is set, then set fsu_bavail_top_bit_set, and
sign-extend the value when storing it into fsu_bavail.
1998-03-19 22:18:04 +00:00
Jim Meyering
33179975d7 (struct fs_usage): New member
fsu_bavail_top_bit_set.
1998-03-19 22:17:43 +00:00
Jim Meyering
d4a8891aef *** empty log message *** 1998-03-18 21:53:35 +00:00
Jim Meyering
fcbfefa513 *** empty log message *** 1998-03-17 23:31:18 +00:00
Jim Meyering
fcf6405f2d (tail_file): Merge largely-duplicated blocks of code. 1998-03-15 23:04:56 +00:00
Jim Meyering
0ecb6ace02 . 1998-03-15 20:36:02 +00:00
Jim Meyering
6d42c7e9d7 *** empty log message *** 1998-03-15 18:05:05 +00:00
Jim Meyering
6684ffa826 Use #if, not #ifdef with HAVE_ macros.
Use #if !, not #ifndef with HAVE_ macros.
1998-03-15 17:54:50 +00:00
Jim Meyering
bfbc3ce20c Use #if, not #ifdef with HAVE_ macros 1998-03-15 11:09:10 +00:00
Jim Meyering
0f5f23cb9e . 1998-03-15 09:52:09 +00:00
Jim Meyering
93494dde07 *** empty log message *** 1998-03-15 09:48:52 +00:00
Jim Meyering
be3b9520ad (EXTRA_DIST): Add prereq.m4. 1998-03-15 09:47:28 +00:00
Jim Meyering
c2c6f081c5 *** empty log message *** 1998-03-15 09:47:03 +00:00
Jim Meyering
36b10d9f21 . 1998-03-15 09:45:00 +00:00
Jim Meyering
72c0980585 *** empty log message *** 1998-03-15 09:43:27 +00:00
Jim Meyering
58647fd63d *** empty log message *** 1998-03-15 09:11:44 +00:00
Jim Meyering
6eb5e899e1 *** empty log message *** 1998-03-15 09:10:21 +00:00
Jim Meyering
a01c762a81 *** empty log message *** 1998-03-15 09:08:51 +00:00
Jim Meyering
c29025e6ed (EXTRA_DIST): Add error.m4. 1998-03-15 09:08:39 +00:00
Jim Meyering
b3582e7533 . 1998-03-15 09:07:39 +00:00
Jim Meyering
12f49aa1ae update from fsf 1998-03-15 08:11:02 +00:00
Jim Meyering
f31f7e1c75 *** empty log message *** 1998-03-14 19:53:21 +00:00
Jim Meyering
d34d42ca05 . 1998-03-14 16:39:09 +00:00
Jim Meyering
6974d67aa2 *** empty log message *** 1998-03-14 16:38:41 +00:00
Jim Meyering
85d9447441 . 1998-03-14 16:38:35 +00:00
Jim Meyering
45c381f4ba s/get-date.h/getdate.h/ 1998-03-14 16:35:24 +00:00
Jim Meyering
184c0062a4 s/get-date.h/getdate.h/ 1998-03-14 16:32:35 +00:00
Jim Meyering
7024c7d55c s/get-date.h/getdate.h/ 1998-03-14 16:31:51 +00:00
Jim Meyering
d84a21ea2d . 1998-03-14 16:30:52 +00:00
Jim Meyering
2f6fa9d160 . 1998-03-14 16:26:41 +00:00
Jim Meyering
4ac374c8e5 *** empty log message *** 1998-03-14 16:26:14 +00:00
Jim Meyering
17070ae7bf . 1998-03-14 16:25:42 +00:00
Jim Meyering
a1cc8f5961 *** empty log message *** 1998-03-14 15:56:46 +00:00
Jim Meyering
27caa20d7b *** empty log message *** 1998-03-14 15:32:55 +00:00
Jim Meyering
757555a4dc . 1998-03-14 15:31:41 +00:00
Jim Meyering
ada5e63612 . 1998-03-14 10:42:01 +00:00
Jim Meyering
a8d20df6b2 (TESTS): Add into-self. 1998-03-14 10:41:39 +00:00
Jim Meyering
4a28ea9bd6 *** empty log message *** 1998-03-14 10:41:26 +00:00
Jim Meyering
e4a1ead494 *** empty log message *** 1998-03-14 10:41:02 +00:00
Jim Meyering
ad1a2f76ce *** empty log message *** 1998-03-14 10:40:30 +00:00
Jim Meyering
a7a6111f81 . 1998-03-14 10:37:29 +00:00
Jim Meyering
7c579a0231 . 1998-03-13 23:39:48 +00:00
Jim Meyering
6630a24b7a (copy): Update prototype. 1998-03-13 23:39:39 +00:00
Jim Meyering
6429ffabbb *** empty log message *** 1998-03-13 23:39:10 +00:00
Jim Meyering
e558629ce1 (do_move): Add &copy_into_self arg in call to copy.
Don't remove source directory when copy_into_self is nonzero.
Reported by Arne Henrik Juul.
1998-03-13 23:38:50 +00:00
Jim Meyering
fefa8511b8 (do_copy): Add unused arg in calls to copy. 1998-03-13 23:38:27 +00:00
Jim Meyering
347db9ce77 (copy_dir): Add new parameter, copy_into_self, and set it.
(copy_internal): Likewise.
(copy): Likewise.
Update all callers.
1998-03-13 23:37:42 +00:00
Jim Meyering
92da57a7be Use `virtual memory exhausted' message, not
`Memory exhausted' to be consistent with the majority of other
such messages.
Say `removing all...', not `removing any...'.
1998-03-13 23:35:43 +00:00
Jim Meyering
4078ae8de8 (remove_parents): Be consistent with documentation of
--verbose option and with remove.c in saying `removing...' before
the operation is attempted.
(main): Likewise.
Suggestions from Santiago Vila.
1998-03-13 23:35:25 +00:00
Jim Meyering
3086193091 (usage): Tweak spacing 1998-03-13 15:32:28 +00:00
Jim Meyering
823425b310 *** empty log message *** 1998-03-13 15:27:10 +00:00
Jim Meyering
e03fc9bc82 protoize 1998-03-13 15:25:49 +00:00
Jim Meyering
64379c5cd8 (getugroups): Don't add a group number if it would be a duplicate.
From Ulrich Drepper.
1998-03-13 15:24:43 +00:00
Jim Meyering
d4825df6cf *** empty log message *** 1998-03-11 11:55:31 +00:00
Jim Meyering
cb3b5ed486 (save_stdin): Open temporary file exclusively, to
foil a common denial-of-service attack.
From Paul Eggert.
1998-03-11 11:54:11 +00:00
Jim Meyering
7ee8ed7e37 (xtmpfopen): Open temporary file exclusively, to
foil a common denial-of-service attack.
From Paul Eggert.
1998-03-11 11:53:29 +00:00
Jim Meyering
a991132f3e (getuidbyname) [__DJGPP__]: Make function know about
any arbitrary user name.
(getgidbyname) [__DJGPP__]: Make function know about any arbitrary
group name.
From Eli.
1998-03-10 22:55:20 +00:00
Jim Meyering
7f0867df00 (parse_user_spec) [__DJGPP__]: Make function know
about any arbitrary user and group by pretending to be the user
and to belong to the group specified in `spec_arg' argument.
1998-03-10 22:49:04 +00:00
Jim Meyering
6354d07ea0 . 1998-02-25 23:47:36 +00:00
Jim Meyering
3216105fbb . 1998-02-25 23:46:59 +00:00
Jim Meyering
8d5c4784b8 . 1998-02-25 23:46:13 +00:00
Jim Meyering
ec47f73107 . 1998-02-25 23:36:33 +00:00
Jim Meyering
94cd0c09f6 . 1998-02-25 23:35:53 +00:00
Jim Meyering
db3440d444 . 1998-02-25 22:40:24 +00:00
Jim Meyering
e8bec0725e *** empty log message *** 1998-02-25 22:39:46 +00:00
Jim Meyering
8598c54bb1 Use -include, not `include' for aclocal-files. 1998-02-25 22:39:29 +00:00
Jim Meyering
e457645eac Include new file quotearg.h.
(enum indicator_style): Rename all to classify, and not_programs
to file_type, to match option spellings.  All users changed.
(indicator_style_args): New constant.
(quote_funny_chars, quote_as_string, quote_shell): Remove;
(filename_quoting_options, dirname_quoting_options): Use these
variables instead.
(long_options): Add --indicator-style, --quoting-style,
--show-control-chars.  Remove --quote-shell.
(dired_dump_obstack): Remove style parameter and don't output style.
(main): Go back to previous method of outputting //DIRED//
and //SUBDIRED// lines, without style.  But add a new
//DIRED-OPTIONS// line that does output style.
(decode_switches, usage): Add --indicator-style, --quoting-style,
--show-control-chars.  Remove --quote-shell.
(decode_switches): Default from QUOTING_STYLE environment variable.
Set new quoting vars.
(quote_name): Renamed from quote_filename.
Take new arg specifying quoting options.
Always print; do not have a special case for null FILE * argument.
All callers changed.
Move the guts of this function to new file quotearg.c.
(length_of_file_name_and_frills): Use quotearg_buffer instead
of (old) quote_filename to find length of file name.
(decode_switches, parse_ls_color, print_dir, gobble_file,
get_link_name):	Quote output in diagnostics.
1998-02-25 22:38:12 +00:00
Jim Meyering
a14303dbc9 *** empty log message *** 1998-02-25 08:20:55 +00:00
Jim Meyering
84ad5c47c8 (TYPE_SIGNED): Define.
(TYPE_MAXIMUM): Define.
(ULONG_MAX): Use TYPE_MAXIMUM.
(LONG_MAX): Use TYPE_MAXIMUM.
1998-02-24 23:33:41 +00:00
Jim Meyering
998b3a148c (libfu_a_SOURCES): Add quotearg.c.
(noinst_HEADERS): Add quotearg.h.
1998-02-24 23:31:40 +00:00
Jim Meyering
71ee764f1e . 1998-02-24 23:31:11 +00:00
Jim Meyering
07a6f7a9e2 protoize 1998-02-24 23:19:33 +00:00
Jim Meyering
0f5ca22215 add comment 1998-02-24 23:19:13 +00:00
Jim Meyering
fc50286759 update from libit 1998-02-24 23:18:23 +00:00
Jim Meyering
0a1fd1d2ad protoize 1998-02-24 23:17:38 +00:00
Jim Meyering
7a04e95c62 capitalize macro params and protoize 1998-02-24 22:59:34 +00:00
Jim Meyering
938e7fe7ef add copyright 1998-02-24 22:58:26 +00:00
Jim Meyering
d8ab75cedc Update from libit. 1998-02-24 22:54:10 +00:00
Jim Meyering
650b182278 . 1998-02-23 10:16:53 +00:00
Jim Meyering
f31f7889fb *** empty log message *** 1998-02-22 12:36:32 +00:00
Jim Meyering
b1f2e5a7fd *** empty log message *** 1998-02-22 12:31:06 +00:00
Jim Meyering
34141257cf . 1998-02-22 12:30:47 +00:00
Jim Meyering
c96ef37ba9 *** empty log message *** 1998-02-22 09:20:33 +00:00
Jim Meyering
ccc65c4a81 *** empty log message *** 1998-02-22 09:20:17 +00:00
Jim Meyering
be5250f0ec *** empty log message *** 1998-02-22 09:19:36 +00:00
Jim Meyering
d1c1677873 . 1998-02-22 09:18:33 +00:00
Jim Meyering
6eae430477 Truncate to 1998 entries only. 1998-02-22 09:17:58 +00:00
Jim Meyering
82d361dc53 *** empty log message *** 1998-02-22 09:10:57 +00:00
Jim Meyering
6e05a13259 revert most of last delta, but leave cppi/copyright changes 1998-02-22 08:21:07 +00:00
Jim Meyering
a1413ad1cd *** empty log message *** 1998-02-22 08:19:19 +00:00
Jim Meyering
c9dd33ec3f *** empty log message *** 1998-02-22 08:18:51 +00:00
Jim Meyering
b9a394eec5 *** empty log message *** 1998-02-21 16:15:23 +00:00
Jim Meyering
f315b52ca9 . 1998-02-21 16:14:42 +00:00
Jim Meyering
26c02dd946 . 1998-02-21 16:14:15 +00:00
Jim Meyering
a03a97d7d8 *** empty log message *** 1998-02-21 16:14:05 +00:00
Jim Meyering
ead1152ef8 *** empty log message *** 1998-02-21 11:55:30 +00:00
Jim Meyering
2326be84d5 *** empty log message *** 1998-02-21 11:54:09 +00:00
Jim Meyering
7980fa3b78 *** empty log message *** 1998-02-21 11:53:27 +00:00
Jim Meyering
70a8ff09ed *** empty log message *** 1998-02-21 11:52:45 +00:00
Jim Meyering
38a63c863e . 1998-02-21 11:44:39 +00:00
Jim Meyering
a4fb33a110 . 1998-02-21 11:44:13 +00:00
Jim Meyering
bd9a38183c *** empty log message *** 1998-02-21 11:39:06 +00:00
Jim Meyering
45d85e3ba2 . 1998-02-21 11:38:47 +00:00
Jim Meyering
afa328c54e . 1998-02-21 11:33:09 +00:00
Jim Meyering
c66e967d70 . 1998-02-21 11:29:12 +00:00
Jim Meyering
ccaf565665 *** empty log message *** 1998-02-21 11:28:46 +00:00
Jim Meyering
b1a82ad6f2 . 1998-02-21 11:17:06 +00:00
Jim Meyering
c9a2ec01e5 *** empty log message *** 1998-02-21 11:15:43 +00:00
Jim Meyering
f7acc2f589 *** empty log message *** 1998-02-21 11:09:33 +00:00
Jim Meyering
5bf77e1015 . 1998-02-21 11:04:07 +00:00
Jim Meyering
3aa15eac61 *** empty log message *** 1998-02-20 21:51:48 +00:00
Jim Meyering
5799c6474d . 1998-02-20 21:50:49 +00:00
Jim Meyering
f8998dae41 Include get-date.h.
Remove get_date decl.
1998-02-20 21:50:30 +00:00
Jim Meyering
a7ba2688ca s/getdate.h/get-date.h/ 1998-02-20 21:47:10 +00:00
Jim Meyering
6810b30f39 (noinst_HEADERS): s/getdate.h/get-date.h/ 1998-02-20 21:42:29 +00:00
Jim Meyering
f8d66bde6a s/getdate.h/get-date.h/ 1998-02-20 21:42:11 +00:00
Jim Meyering
4675b67c10 . 1998-02-20 12:22:50 +00:00
Jim Meyering
ae3c7c2fb1 *** empty log message *** 1998-02-19 21:38:16 +00:00
Jim Meyering
a3ff199f12 *** empty log message *** 1998-02-19 21:37:45 +00:00
Jim Meyering
61ef81a837 (dirname): Include ctype.h.
[IN_CTYPE_DOMAIN]: Define.
[ISALPHA]: Define.
[MSDOS]: Add support for DOS-style file names with drive letters.
Based on a patch from Eli Zaretskii.
1998-02-19 21:31:06 +00:00
Jim Meyering
dcb8db3c82 [__DJGPP__]: Add missing typedef for daddr_t. 1998-02-19 21:28:38 +00:00
Jim Meyering
92b49f0da1 *** empty log message *** 1998-02-16 23:28:09 +00:00
Jim Meyering
f322649c58 (cp_option_init): Set copy_as_regular to 0, not 1.
Otherwise, mv tries to open special files.
Reported by Kjetil Torgrim Homme.
1998-02-16 23:27:50 +00:00
Jim Meyering
f49fee3e5f *** empty log message *** 1998-02-13 08:49:34 +00:00
Jim Meyering
6dbc8ff80b *** empty log message *** 1998-02-13 08:48:54 +00:00
Jim Meyering
65978b6328 Add my comment from ChangeLog entry for gkm's change. 1998-02-11 22:17:38 +00:00
Jim Meyering
5f8949c46c *** empty log message *** 1998-02-09 07:02:15 +00:00
Jim Meyering
b302e2becc *** empty log message *** 1998-02-09 07:01:02 +00:00
Jim Meyering
5921d6bc50 (cvs-dist): Update po/. 1998-02-09 07:00:34 +00:00
Jim Meyering
ec76108bb7 . 1998-02-08 22:17:10 +00:00
Jim Meyering
519365bb08 (usage): Reword to use TARGET' and LINK_NAME' in description. 1998-02-08 21:27:18 +00:00
Jim Meyering
c1fc9dbe64 . 1998-02-07 15:17:56 +00:00
Jim Meyering
06b4686f8a . 1998-02-07 15:17:31 +00:00
Jim Meyering
5a244d2598 *** empty log message *** 1998-02-07 10:19:22 +00:00
Jim Meyering
497a1e0c04 *** empty log message *** 1998-02-07 10:17:43 +00:00
Jim Meyering
32ee7fb170 *** empty log message *** 1998-02-07 10:14:29 +00:00
Jim Meyering
db7449461c . 1998-02-07 09:59:05 +00:00
Jim Meyering
9ed89c9d9c *** empty log message *** 1998-02-07 09:58:59 +00:00
Jim Meyering
6110857115 *** empty log message *** 1998-02-07 09:57:39 +00:00
Jim Meyering
36afcc383a *** empty log message *** 1998-02-07 09:54:05 +00:00
Jim Meyering
9e7ca26738 Don't set am_cv_func_working_getline before the
cache-check for the same variable -- that defeated the purpose of
the test; the test program was never run.  This was a problem only
on systems with losing getline functions -- HP-UX 10.20 is one.
Reported by Bjorn Helgaas.
1998-02-07 09:50:58 +00:00
Jim Meyering
de38f9c61f . 1998-02-07 08:13:44 +00:00
Jim Meyering
aa14b2d994 . 1998-02-07 08:13:08 +00:00
Jim Meyering
a6a3dee962 *** empty log message *** 1998-02-06 20:48:10 +00:00
Jim Meyering
0324f8d422 . 1998-02-06 20:47:23 +00:00
Jim Meyering
5a9c4223f6 . 1998-02-06 20:45:51 +00:00
Jim Meyering
eeeb6c7b23 . 1998-02-06 12:37:16 +00:00
Jim Meyering
206e3f08de *** empty log message *** 1998-02-06 12:37:07 +00:00
Jim Meyering
61a80b3a12 (EXTRA_DIST): Add perl.m4. 1998-02-06 12:36:59 +00:00
Jim Meyering
4da3feb0e9 . 1998-02-06 12:36:04 +00:00
Jim Meyering
a3d39ceb13 *** empty log message *** 1998-02-06 10:42:55 +00:00
Jim Meyering
b252cc8d6d . 1998-02-06 10:32:31 +00:00
Jim Meyering
afac7f3a78 . 1998-02-04 20:28:08 +00:00
Jim Meyering
fae6846955 *** empty log message *** 1998-02-04 20:19:14 +00:00
Jim Meyering
f79e8bdcaf . 1998-02-04 20:18:09 +00:00
Jim Meyering
ebfdc834f2 . 1998-02-04 18:15:05 +00:00
Jim Meyering
6e5ac55673 . 1998-02-04 18:06:31 +00:00
Jim Meyering
43d2406f55 . 1998-02-04 18:04:39 +00:00
Jim Meyering
29772527c8 . 1998-02-04 18:01:23 +00:00
Jim Meyering
4e72061130 . 1998-02-04 18:00:57 +00:00
Jim Meyering
470cfd9491 . 1998-02-04 12:41:35 +00:00
Jim Meyering
ff9a9a2bdf . 1998-02-03 08:56:02 +00:00
Jim Meyering
a3db75c4b3 add comments on #endif's 1998-02-03 08:28:43 +00:00
Jim Meyering
46fb234f5f (xgetgroups): Guard function defn with #if HAVE_GETGROUPS. 1998-02-03 08:27:48 +00:00
Jim Meyering
1e985af9d7 . 1998-02-03 07:38:23 +00:00
Jim Meyering
8ef38f80ec (sys/types.h): Include to get size_t on some systems.
(NULL): Define if needed.
1998-02-03 07:23:13 +00:00
Jim Meyering
047f0c2125 *** empty log message *** 1998-02-01 09:58:33 +00:00
Jim Meyering
a10c7fcd7c *** empty log message *** 1998-02-01 09:56:46 +00:00
Jim Meyering
54a0879129 *** empty log message *** 1998-01-31 07:28:56 +00:00
Jim Meyering
494d8173bd *** empty log message *** 1998-01-28 08:14:56 +00:00
Jim Meyering
e8b739e317 (print_header): Change format to align heading over
last column of `df -i' output.  From Andreas Schwab.
1998-01-28 08:09:56 +00:00
Jim Meyering
ef4765e11b . 1998-01-25 21:21:47 +00:00
Jim Meyering
ca9451a39d . 1998-01-25 21:20:53 +00:00
Jim Meyering
1349c30df2 Use $(VERSION) etc. Not @VERSION@. 1998-01-25 21:07:30 +00:00
Jim Meyering
8659ec88d4 . 1998-01-25 20:50:57 +00:00
Jim Meyering
e27d21668c (parse_obsolescent_option): -l is an obsolescent option. 1998-01-25 14:07:46 +00:00
Jim Meyering
902598d05d . 1998-01-25 12:20:58 +00:00
Jim Meyering
fc026cd548 . 1998-01-25 12:19:05 +00:00
Jim Meyering
7d4a70eaff *** empty log message *** 1998-01-25 10:51:55 +00:00
Jim Meyering
186958482f *** empty log message *** 1998-01-25 10:51:21 +00:00
Jim Meyering
da80ee04d2 . 1998-01-25 09:49:00 +00:00
Jim Meyering
dd3a865a8e . 1998-01-25 09:47:51 +00:00
Jim Meyering
aaf66a2413 *** empty log message *** 1998-01-25 09:29:46 +00:00
Jim Meyering
0eba2a8dd7 (DO_CHOWN): Don't fail for non-root when chown fails due
not only to lack of permission (EPERM), but also to lack of support
(EINVAL).  Reported by Bengt Martensson.
1998-01-25 09:28:48 +00:00
Jim Meyering
7c04ce1f09 (re_protect): Don't fail for non-root when chown fails due
not only to lack of permission (EPERM), but also to lack of support
(EINVAL).  Reported by Bengt Martensson.
1998-01-25 09:27:57 +00:00
Jim Meyering
7b4833b03c *** empty log message *** 1998-01-25 09:23:26 +00:00
Jim Meyering
3a62f8785f (cat): Convert comma-expressions to pairs of
semicolon-terminated stmts.
Add braces around compound if/else stmts.
1998-01-25 08:25:05 +00:00
Jim Meyering
85923cb2bc add missing `)' 1998-01-24 23:34:46 +00:00
Jim Meyering
bc05ba3d5a *** empty log message *** 1998-01-24 23:33:18 +00:00
Jim Meyering
ea2969da49 (parse_obsolescent_option): Do not interpret `-f -n 1 ...'
as obsolescent options.
Accept new option: --sleep-interval=SECONDS (-s).
(parse_options): Recognize it.
(usage): Describe it.
(tail_forever): Use it.
(dump_remainder): Use it.
1998-01-24 23:33:02 +00:00
Jim Meyering
0966b97bd1 (f-1): Add test for option-processing of `-f -n 1'. 1998-01-24 23:32:43 +00:00
Jim Meyering
8c3fb79a89 . 1998-01-24 16:48:52 +00:00
Jim Meyering
fc68d2786b *** empty log message *** 1998-01-24 16:27:26 +00:00
Jim Meyering
0d26afa6e0 *** empty log message *** 1998-01-24 16:22:11 +00:00
Jim Meyering
bb964b3eec (test_failure): Note that the SunOS4.1.4 failure
of the ctime test is expected.
Rename does not update ctime; link does -- so use ln, not mv.
1998-01-24 16:21:48 +00:00
Jim Meyering
638776e577 *** empty log message *** 1998-01-24 15:13:58 +00:00
Jim Meyering
0881032a16 *** empty log message *** 1998-01-24 14:50:28 +00:00
Jim Meyering
c58c644f8f *** empty log message *** 1998-01-24 14:50:16 +00:00
Jim Meyering
6e602a0232 *** empty log message *** 1998-01-24 14:49:30 +00:00
Jim Meyering
097d40b3d3 *** empty log message *** 1998-01-24 09:55:10 +00:00
Jim Meyering
57258b3446 . 1998-01-24 08:46:29 +00:00
Jim Meyering
39508b8db3 *** empty log message *** 1998-01-24 08:46:21 +00:00
Jim Meyering
cd4c2d0fdc (TYPE_MINIMUM): Add extra outer cast to work around
bug in Cray C 5.0.3.0 when T == time_t.
1998-01-24 08:45:55 +00:00
Jim Meyering
8a0550a816 Adjust expected output for changed format of `rm --verbose'. 1998-01-24 08:43:46 +00:00
Jim Meyering
663d8b143c *** empty log message *** 1998-01-23 22:09:18 +00:00
Jim Meyering
2a1a1843b7 (__mktime_internal): Work around bug in Irix4.0.5's
C compiler.  From Kaveh Ghazi.
(TYPE_MINIMUM): Define.
(TYPE_MAXIMUM): Define.
(TIME_T_MIN): Use TYPE_MINIMUM.
(TIME_T_MAX): Use TYPE_MAXIMUM.
1998-01-23 22:02:54 +00:00
Jim Meyering
9c70563ee7 add curlies 1998-01-23 18:34:12 +00:00
Jim Meyering
37ce5a5497 . 1998-01-22 23:29:35 +00:00
Jim Meyering
37a3052a36 *** empty log message *** 1998-01-22 09:03:08 +00:00
Jim Meyering
2a4842f7f3 (quit): Declare to be inline to stifle compile warning. 1998-01-22 08:58:12 +00:00
Jim Meyering
d82fadf365 Reorder functions to obviate forward dcls. 1998-01-22 08:55:13 +00:00
Jim Meyering
ef63ce007d (do_copy): Add unreachable `return 0' to stifle warning. 1998-01-22 08:36:27 +00:00
Jim Meyering
6a8e657775 . 1998-01-22 08:33:34 +00:00
Jim Meyering
309819620b (TESTS_ENVIRONMENT): Add TOUCH. 1998-01-22 08:33:26 +00:00
Jim Meyering
f7bb262cc8 minor tweaks 1998-01-22 08:33:02 +00:00
Jim Meyering
d5494d57f5 Don't use -f. Do adjust $RM if it's a relative path. 1998-01-22 08:32:22 +00:00
Jim Meyering
14a2593daf Use GNU touch to work around problems with NFS caching and/or clock skew. 1998-01-22 08:27:16 +00:00
Jim Meyering
9cdd2e05e6 (copy_internal): Use x->backup_type, not the global.
(valid_options): Use VALID_BACKUP_TYPE and VALID_SPARSE_MODE.
1998-01-22 08:22:00 +00:00
Jim Meyering
6cce6a1b7f [NDEBUG]: Comment out definition.
(do_copy): Use x->backup_type, not the global.
1998-01-22 08:19:17 +00:00
Jim Meyering
d9f0ca41bd (rm_option_init): New function.
(cp_option_init): New function.
(copy_reg): Remove now-unused function.
(do_move): Set up for and use `copy.c (copy)' in place of copy_reg.
Set up for and use `remove.c (rm)' in place of unlink.
1998-01-22 08:16:09 +00:00
Jim Meyering
df7cef21c7 Remove and minimally librarify guts for use in mv.c.
(main): Pass options (`&x') to rm.
Call remove_init and remove_fini instead of open-coding them.
1998-01-22 08:14:52 +00:00
Jim Meyering
9f2d1beded *** empty log message *** 1998-01-22 08:14:17 +00:00
Jim Meyering
ff59218d54 New file. Contains guts of old rm.c.
(remove_init): New function.
(remove_fini): New function.
1998-01-22 08:13:57 +00:00
Jim Meyering
1a18272561 Declare new global, backup_type.
(main): Initialize backup_type unconditionally.
(do_link): Call find_backup_file_name with new argument, backup_type.
1998-01-22 08:13:12 +00:00
Jim Meyering
2bdf8621d6 Declare new global, backup_type.
(main): Initialize backup_type unconditionally.
(copy_file): Call find_backup_file_name with new backup_type, argument.
1998-01-22 08:12:24 +00:00
Jim Meyering
758ab7a013 *** empty log message *** 1998-01-21 16:37:09 +00:00
Jim Meyering
734d1cccc3 (VALID_SPARSE_MODE): Define.
[struct cp_options] (backup_type): New member.
1998-01-21 16:16:00 +00:00
Jim Meyering
13de1036ac . 1998-01-21 15:59:28 +00:00
Jim Meyering
2167febcb1 Fix copyright 1998-01-21 15:57:48 +00:00
Jim Meyering
2c11b736aa Use ANSI function definitions.
Remove global declaration of backup_type.
(simple_backup_suffix): Default to `~', not `.orig'.
Use PARAMS, not __BACKUPFILE_P.
(find_backup_file_name): Add parameter, backup_type.
1998-01-21 15:57:18 +00:00
Jim Meyering
a52e0efbe2 Remove extern declaration of backup_type.
Use PARAMS, not __BACKUPFILE_P.
(VALID_BACKUP_TYPE): Define.
(find_backup_file_name): Adjust prototype.
1998-01-21 15:55:12 +00:00
Jim Meyering
4935348b67 Use ANSI function definitions. 1998-01-20 11:34:38 +00:00
Jim Meyering
e6a0306b1b [enum backup_type]: Set `none' to 1. 1998-01-20 11:34:04 +00:00
Jim Meyering
2bec121abb add `,' in comment 1998-01-19 09:29:27 +00:00
Jim Meyering
412043f1d8 . 1998-01-18 11:52:44 +00:00
Jim Meyering
4ffa362cc4 *** empty log message *** 1998-01-18 11:52:38 +00:00
Jim Meyering
35592ba64c (strncoll, strncoll_s2_readonly, look_for_fraction, numcompare):
Remove the `unsigned' from some `unsigned char*' parameter types.
Add casts via UCHAR where necessary to avoid problems with unwanted
sign extension.  Based on a patch from Kaveh Ghazi to appease Irix4's
cc compiler.
e.g.,
 > cc -DLOCALEDIR=\"/caip/u3/ghazi/foobar/share/locale\" -DHAVE_CONFIG_H
 >      -I.. -I../../src -I../../lib -I../intl -c ../../src/sort.c
 > accom: Error: ../../src/sort.c, line 500: prototype parameter 1 type
 >      must have all of the actual arguments qualifiers (except the
 >      outermost) and pointed-to types must be compatible (ANSI
 >      3.3.2.2,3.3.16.1)
 >              diff = strcoll (s1, s2);
 >        ----------------------------^
 > accom: Error: ../../src/sort.c, line 500: Argument 1 Type Doesn't
 >      Match prototype description; prototype: pointer to const char is
 >      different from actual: pointer to unsigned char
 >              diff = strcoll (s1, s2);
 >        ----------------------------^
 > accom: Error: ../../src/sort.c, line 500: prototype parameter 2 type
 >      must have all of the actual arguments qualifiers (except the
 >      outermost) and pointed-to types must be compatible (ANSI
 >      3.3.2.2,3.3.16.1)
 >              diff = strcoll (s1, s2);
 >        ----------------------------^
 > accom: Error: ../../src/sort.c, line 500: Argument 2 Type Doesn't
 >      Match prototype description; prototype: pointer to const char is
 >      different from actual: pointer to unsigned char
 >              diff = strcoll (s1, s2);
 >        ----------------------------^
1998-01-18 11:51:08 +00:00
Jim Meyering
c1618a8c4c (next_file_name): Rewrite. This removes an artificial limit (albeit
already high, at INT_MAX :-) on the number of files split could create.
Reported by Ralf W. Stephan.
1998-01-18 11:18:08 +00:00
Jim Meyering
96be8bca99 Guard inclusion of langinfo.h also with HAVE_LANGINFO_H,
for Irix-4.0.5.  From Kaveh Ghazi.
1998-01-16 23:29:24 +00:00
Jim Meyering
b8a16a3f2a (mergefps): Add braces to avoid ambiguous `else' statement.
(nls_set_fraction): Likewise.
1998-01-16 23:23:04 +00:00
Jim Meyering
f1217e4976 . 1998-01-16 11:18:05 +00:00
Jim Meyering
62279c6e2d . 1998-01-16 11:17:02 +00:00
Jim Meyering
71545a6276 Make PARAMS-defining conditionals consistent. 1998-01-16 08:52:30 +00:00
Jim Meyering
53cfcbd19c Make PARAMS-defining conditionals consistent. 1998-01-16 08:51:39 +00:00
Jim Meyering
5618133eed (fail-0): Disable test. It depends on
sizeof(long) being 32 bits.  Reported by Kaveh Ghazi.
1998-01-16 08:04:19 +00:00
Jim Meyering
ade1f58e11 (print_header): Fix inode format header to line it up
with the rest of the output.
1998-01-14 08:52:56 +00:00
Jim Meyering
74cf3e8bab Set errno to ENOENT, not EINVAL. This is consistent
with most other implementations.
1998-01-13 10:08:11 +00:00
Jim Meyering
ca50e875af *** empty log message *** 1998-01-13 09:53:15 +00:00
Jim Meyering
a75ea1014e *** empty log message *** 1998-01-12 09:00:10 +00:00
Jim Meyering
98af2e9636 *** empty log message *** 1998-01-12 08:55:42 +00:00
Jim Meyering
68e5877403 *** empty log message *** 1998-01-12 08:55:01 +00:00
Jim Meyering
2b906615c2 *** empty log message *** 1998-01-12 08:53:18 +00:00
Jim Meyering
443f852f61 Include sys/param.h only #if HAVE_SYS_PARAM_H.
Move function-spanning `#if ...BSIZE' stmt to follow inclusion of
sys/param.h since BSIZE is sometimes defined in sys/param.h.
Based on a patch from Philippe De Muyter.
1998-01-12 08:13:39 +00:00
Jim Meyering
d1f4e617b5 *** empty log message *** 1998-01-11 09:24:17 +00:00
Jim Meyering
1aa070dd2e . 1998-01-11 09:14:29 +00:00
Jim Meyering
007e81132a . 1998-01-11 09:14:02 +00:00
Jim Meyering
6bcfff640e *** empty log message *** 1998-01-11 09:12:30 +00:00
Jim Meyering
aa2880362c . 1998-01-11 08:02:39 +00:00
Jim Meyering
88bd90109b *** empty log message *** 1998-01-10 22:13:49 +00:00
Jim Meyering
dba300a0d0 CHAR_BIT SCHAR_MAX UCHAR_MAX SHRT_MAX INT_MAX UINT_MAX LONG_MAX ULONG_MAX
Remove definitions of those symbols.
* src/csplit.c: Move inclusion of regex.h/rx.h to follow system.h
since it now includes limit.h which defines RE_DUP_MAX.
* src/nl.c: Likewise.
* src/tac.c: Likewise.
1998-01-10 22:12:03 +00:00
Jim Meyering
b9ed71e46e . 1998-01-10 20:53:56 +00:00
Jim Meyering
7bba3e945f initialize fail to 0 1998-01-10 16:25:46 +00:00
Jim Meyering
1bdfcabd2c . 1998-01-10 16:24:46 +00:00
Jim Meyering
c88a4c91da (EXTRA_DIST): Add const.m4. 1998-01-10 16:24:26 +00:00
Jim Meyering
136f2fd28c . 1998-01-10 15:57:57 +00:00
Jim Meyering
82739833a1 *** empty log message *** 1998-01-10 15:09:46 +00:00
Jim Meyering
1c5c2597b5 *** empty log message *** 1998-01-10 15:08:00 +00:00
Jim Meyering
eacbf12ea4 *** empty log message *** 1998-01-10 15:04:32 +00:00
Jim Meyering
0ccdf3419d (usage): Describe -D. 1998-01-10 15:03:58 +00:00
Jim Meyering
cec85a4b3a . 1998-01-10 14:25:27 +00:00
Jim Meyering
a077a7833c *** empty log message *** 1998-01-10 14:23:08 +00:00
Jim Meyering
a3094b0529 (batch_convert): Use memcpy when we don't need return value. 1998-01-10 14:21:35 +00:00
Jim Meyering
d73dd15544 . 1998-01-10 13:36:47 +00:00
Jim Meyering
27c1ad9576 *** empty log message *** 1998-01-10 13:36:09 +00:00
Jim Meyering
2eefbf7647 (usage): Correct descriptions of --sort, --time, and -t.
Suggestions from Andreas Schwab.
1998-01-10 12:53:09 +00:00
Jim Meyering
79d39ab7bf (decode_switches) [-u]: Fix bug whereby -u had no effect
without -l or -t.  Now, -u (like -c) implies --sort=time.
Suggestion from Andreas Schwab.
1998-01-10 12:07:50 +00:00
Jim Meyering
12782f54b0 *** empty log message *** 1998-01-10 11:56:26 +00:00
Jim Meyering
fff6de7b04 *** empty log message *** 1998-01-10 11:54:39 +00:00
Jim Meyering
cc76db2016 use sh-script test, not Test.pm framework 1998-01-10 11:27:24 +00:00
Jim Meyering
77c94909cf *** empty log message *** 1998-01-10 11:24:51 +00:00
Jim Meyering
3b8d19272d . 1998-01-10 11:00:46 +00:00
Jim Meyering
6099914170 *** empty log message *** 1998-01-10 10:36:41 +00:00
Jim Meyering
09d96ac539 (make_path): Reformat 3 if-stmts to test `if (newly_created_dir)' only once.
Suggestion from Andreas Schwab.
1998-01-10 10:28:37 +00:00
Jim Meyering
3edbca0e04 (make_path): Put only newly created directories on the LEADING_DIRS list. 1998-01-10 10:22:30 +00:00
Jim Meyering
c062a35803 *** empty log message *** 1998-01-08 23:17:20 +00:00
Jim Meyering
3da029a5d9 *** empty log message *** 1998-01-08 23:16:14 +00:00
Jim Meyering
de1dabf7d7 *** empty log message *** 1998-01-08 22:58:18 +00:00
Jim Meyering
03283b5000 (tac_stream): Don't perform arithmetic on now-void pointer
result of xrealloc (until recently it was char*).
1998-01-08 22:58:03 +00:00
Jim Meyering
9f5dc7e7d0 (inittables): Add && HAVE_NL_LANGINFO to the #if-test
guarding the nls month-checking code.
(nls_numeric_format): Remove unnecessary (and error-evoking w/SunOS' cc)
`unsigned' from dcls of text and lim.
(main): Cast lconvp->grouping to `unsigned char*' to appease SunOS's cc.
1998-01-08 22:56:45 +00:00
Jim Meyering
ab9cd27938 *** empty log message *** 1998-01-07 07:45:46 +00:00
Jim Meyering
c767a49741 *** empty log message *** 1998-01-06 23:53:50 +00:00
Jim Meyering
0fdd1b9130 Add %expect directive.
Move inclusion of getdate.h and dependent extern declarations down
so getdate.h's prototype follows the sometimes-enabled definition
of `const' to nothing.  Otherwise, the prototype wouldn't match
the definition because of the defined-away `const'.
(get_date): ANSI-fy definition.
From Kaveh Ghazi.
1998-01-06 23:53:33 +00:00
Jim Meyering
f19ca6fe29 *** empty log message *** 1998-01-05 17:43:31 +00:00
Jim Meyering
6cc3cf776c (df_readable): New function.
(show_dev): If a value consists entirely of 1 bits, or is derived
from some other value that consists entirely of 1 bits, report "-".
Check inode and block counts more carefully for plausibility,
to avoid arithmetic overflow when computing percentages.
1998-01-05 17:43:00 +00:00
Jim Meyering
e162abfc5b (get_fs_usage): Add parens. 1998-01-05 17:38:38 +00:00
Jim Meyering
866773c72a (PROPAGATE_ALL_ONES): New macro.
(get_fs_usage): If a value consists entirely of 1 bits,
propagate this info to the output by setting it to (uintmax_t) -1.
1998-01-05 17:33:54 +00:00
Jim Meyering
06bab849fc reindent a little 1998-01-05 10:11:08 +00:00
Jim Meyering
ed0becde29 reformat comment, dcl fail, dirname 1998-01-05 10:09:24 +00:00
Jim Meyering
8d64a37a77 remove SPECIAL_BITS #ifdefs 1998-01-05 10:06:41 +00:00
Jim Meyering
0520188821 Add support for marty's -D option 1998-01-05 10:06:07 +00:00
Jim Meyering
05d9a7233b *** empty log message *** 1998-01-04 23:28:28 +00:00
Jim Meyering
f664e44a2f *** empty log message *** 1998-01-04 23:27:12 +00:00
Jim Meyering
5705eaaee2 . 1998-01-04 22:54:19 +00:00
Jim Meyering
0e69432852 . 1998-01-04 22:46:40 +00:00
Jim Meyering
2d69426882 copyright 1998-01-04 22:46:23 +00:00
Jim Meyering
5d4f8ebdfd (main, usage): Check for write error to stdout before exiting.
Include "closeout.h".
1998-01-04 22:45:28 +00:00
Jim Meyering
b246280c27 (parse_long_options): Check for write error to stdout before exiting. 1998-01-04 22:43:44 +00:00
Jim Meyering
60e021ee4e (libfu_a_SOURCES): Add closeout.c.
(noinst_HEADERS): Add closeout.h.
1998-01-04 22:42:38 +00:00
Jim Meyering
63c0f480ad Use a single enumerated type, Verbosity, instead of
the two booleans, verbose and changes_only.  This fixes a bug whereby
--change had the same effect as --verbose.
Plus Paul's close_stdout changes.
1998-01-04 22:41:02 +00:00
Jim Meyering
e375f4e9c8 Use a single enumerated type, Verbosity, instead of
the two booleans, verbose and changes_only.  This fixes a bug whereby
--change had the same effect as --verbose.
1998-01-04 22:40:27 +00:00
Jim Meyering
109b9c5f94 . 1998-01-04 21:48:30 +00:00
Jim Meyering
126c1a40e5 . 1998-01-04 21:47:31 +00:00
Jim Meyering
2440fd8bac . 1998-01-03 22:53:52 +00:00
Jim Meyering
98b9c4bed7 . 1998-01-03 22:16:23 +00:00
Jim Meyering
40f708f534 . 1998-01-03 22:14:58 +00:00
Jim Meyering
ebc5dc0b0c *** empty log message *** 1998-01-03 22:13:53 +00:00
Jim Meyering
e0ed4e6a77 *** empty log message *** 1998-01-03 18:10:47 +00:00
Jim Meyering
c24393e0fd *** empty log message *** 1998-01-03 18:09:23 +00:00
Jim Meyering
e15db4ca81 *** empty log message *** 1998-01-03 16:47:35 +00:00
Jim Meyering
1059e96721 (show_dev): Treat `fsu.fsu_bavail == (unsigned long) -1'
just like `fsu.fsu_blocks == 0' as an indicator that usage information
is invalid.  This happens with Solaris-5.5.1 CD-ROM partitions.
1998-01-03 16:47:21 +00:00
Jim Meyering
234ea05171 *** empty log message *** 1998-01-03 14:40:33 +00:00
Jim Meyering
0fa007e352 *** empty log message *** 1998-01-03 12:03:01 +00:00
Jim Meyering
9e6b379dbf *** empty log message *** 1998-01-03 11:58:49 +00:00
Jim Meyering
d46bab3a59 Guard PARAMS-enabling definition with
`defined PROTOTYPES || (defined __STDC__ && __STDC__)' to be consistent.
1998-01-03 11:56:58 +00:00
Jim Meyering
541699c01c Guard PARAMS-enabling definition with
`defined PROTOTYPES || (defined __STDC__ && __STDC__)' to avoid
problems with Irix4's cc.  From Kaveh Ghazi.
1998-01-03 11:56:09 +00:00
Jim Meyering
23a8ea7992 *** empty log message *** 1998-01-02 23:18:08 +00:00
Jim Meyering
6b4321fd1b *** empty log message *** 1998-01-02 23:16:53 +00:00
Jim Meyering
2fb86e2eb8 (get_ids): When otherwise unspecified, set uid and gid to -1. 1998-01-02 23:16:38 +00:00
Jim Meyering
53bc7b04cb (make_path): Try to change ownership only if we've just created the
directory.  Fix latent bug (s/&&/||/ in two places -- also, note that
it could not be exercised via install or mkdir) whereby chown would
not be invoked when only one of owner/group is not -1.
1998-01-02 23:15:39 +00:00
Jim Meyering
43c2a5f62b *** empty log message *** 1998-01-01 21:33:29 +00:00
Jim Meyering
b3d19ee824 (remove_cwd_entries): Initialize the entry-name obstack
only once and never free it.
1998-01-01 21:32:46 +00:00
Jim Meyering
2c2fa642c4 (show_dev): Move check for 0-block device (and return if
not e.g., -a) back up to precede first print stmt.
1998-01-01 21:30:00 +00:00
Jim Meyering
cb5e8a14c2 *** empty log message *** 1998-01-01 19:45:43 +00:00
Jim Meyering
48221eb8bd *** empty log message *** 1998-01-01 19:44:02 +00:00
Jim Meyering
3e6934d53e *** empty log message *** 1998-01-01 19:41:47 +00:00
Jim Meyering
741e2bd94b *** empty log message *** 1998-01-01 19:36:19 +00:00
Jim Meyering
0327bae400 *** empty log message *** 1997-12-31 21:36:14 +00:00
Jim Meyering
e3d35f6789 (show_dev): Print inode counts human readably. 1997-12-31 21:34:07 +00:00
Jim Meyering
b76a453304 (decode_switches): -h and -H override output units.
(print_dir, gobble_file, print_long_format,
print_file_name_and_frills): Print disk allocations human readably.
1997-12-31 21:33:51 +00:00
Jim Meyering
069e564d89 . 1997-12-31 14:28:44 +00:00
Jim Meyering
cadfe29978 *** empty log message *** 1997-12-31 14:04:54 +00:00
Jim Meyering
da111683d5 (show_dev): Move computation of
blocks_used etc. and blocks_percent_used,
inodes_used etc. and inodes_percent_used into respective branches
of the `if (inode_format)' statement where they're actually used.
1997-12-31 14:04:20 +00:00
Jim Meyering
57da248b85 *** empty log message *** 1997-12-31 11:01:48 +00:00
Jim Meyering
b66148ba39 Define and use PARAMS, not __EXCLUDE_P. 1997-12-31 11:01:35 +00:00
Jim Meyering
86d2f9eaa8 Use PARAMS, not __EXCLUDE_P. 1997-12-31 11:01:18 +00:00
Jim Meyering
25e06fece0 (usage): s/TAB/ /g 1997-12-29 22:09:28 +00:00
Jim Meyering
d1de57abbc *** empty log message *** 1997-12-29 21:29:51 +00:00
Jim Meyering
5cc8090de2 (remove_cwd_entries): Plug a gross leak -- don't call
obstack_init inside the loop.
1997-12-29 21:04:26 +00:00
Jim Meyering
e2ed51f99e *** empty log message *** 1997-12-29 12:06:02 +00:00
Jim Meyering
134ed86e33 (usage): Replace TABs with spaces in --help message. 1997-12-29 12:05:36 +00:00
Jim Meyering
f7d4fc0e38 (invalid_arg): Use a single fprintf and whole
format statements to ease translation.
Convert from K&R to ANSI function dcls.
1997-12-29 12:02:43 +00:00
Jim Meyering
3531b69552 . 1997-12-28 21:49:54 +00:00
Jim Meyering
ce9923ab87 Use ANSI syntax, not K&R. 1997-12-28 10:41:01 +00:00
Jim Meyering
6d02c37081 *** empty log message *** 1997-12-28 10:38:30 +00:00
Jim Meyering
b2e7f8b0af (make_path) [!__STDC__]: Remove K&R-style definition. 1997-12-28 10:38:15 +00:00
Jim Meyering
08c3f260a1 define PARAMS 1997-12-28 09:48:26 +00:00
Jim Meyering
cde7e42dde Add PARAMS. 1997-12-28 08:04:08 +00:00
Jim Meyering
4656a7e55b Remove incorrect declaration of group_member.
Include group-member.h instead.
Based on suggestion from Ulrich Drepper.
1997-12-28 08:03:54 +00:00
Jim Meyering
3513f31730 *** empty log message *** 1997-12-27 23:55:40 +00:00
Jim Meyering
1bcedd2345 *** empty log message *** 1997-12-27 23:55:18 +00:00
Jim Meyering
456d579624 . 1997-12-25 23:06:12 +00:00
Jim Meyering
c02b9b75c6 new version from kb 1997-12-25 18:00:21 +00:00
Jim Meyering
012a6455ea . 1997-12-25 17:51:15 +00:00
Jim Meyering
bb48c492c6 (_GNU_SOURCE): Define only if not already defined. 1997-12-25 17:44:08 +00:00
Jim Meyering
1a952f8145 . 1997-12-25 17:43:21 +00:00
Jim Meyering
2bb1686d0c . 1997-12-25 17:05:45 +00:00
Jim Meyering
1f1ea6519b (get_ids): Don't cast GID_T_MAX to long, it might overflow. 1997-12-25 17:05:23 +00:00
Jim Meyering
f10648f6c7 (skip): Compare lseek return value with -1 to allow it
to be negative as signed value.
1997-12-25 17:04:15 +00:00
Jim Meyering
d9f1fd86d9 Declare stpcpy only if not defined as macro. 1997-12-25 17:02:25 +00:00
Jim Meyering
ea0f644cdd (S_ISLNK): Define this instead of S_ISDIR. 1997-12-25 17:01:35 +00:00
Jim Meyering
4f71c21910 Declare stpcpy only if not defined as macro. 1997-12-25 17:01:13 +00:00
Jim Meyering
9897ca0150 Declare stpcpy only if not defined as macro. 1997-12-25 16:49:08 +00:00
Jim Meyering
1a8e1f7bfd Include <string.h> if available. 1997-12-25 16:48:51 +00:00
Jim Meyering
c9f538deb9 (copy_internal): Use S_ISLNK only if defined. 1997-12-25 16:48:29 +00:00
Jim Meyering
88df9ef6f6 . 1997-12-24 13:16:54 +00:00
Jim Meyering
46e9b477a9 *** empty log message *** 1997-12-21 22:48:24 +00:00
Jim Meyering
82e77237a6 . 1997-12-21 22:48:08 +00:00
Jim Meyering
f54368ec1b s/__P/PARAMS/ 1997-12-21 22:39:53 +00:00
Jim Meyering
44dddb31c0 *** empty log message *** 1997-12-21 22:32:44 +00:00
Jim Meyering
2e308957d4 s/__P/PARAMS/ 1997-12-21 22:30:30 +00:00
Jim Meyering
2391251527 Don't include limits.h. 1997-12-21 22:22:04 +00:00
Jim Meyering
3858d01133 Don't include limits.h. 1997-12-21 22:21:26 +00:00
Jim Meyering
62fed0f3a2 Don't include limits.h or sys/param.h. 1997-12-21 22:21:10 +00:00
Jim Meyering
37998fc5bd Don't include limits.h.
These are all done in system.h now.
1997-12-21 22:20:17 +00:00
Jim Meyering
6123a88852 Don't include limits.h.
(UINT_MAX): Don't define.
(INT_MAX): Don't define.
These are all done in system.h now.
1997-12-21 22:20:01 +00:00
Jim Meyering
3d0e13a00d . 1997-12-21 12:29:32 +00:00
Jim Meyering
2f606bcf56 *** empty log message *** 1997-12-21 12:18:05 +00:00
Jim Meyering
1ed365fb82 Use PARAMS, not __P. 1997-12-21 12:17:26 +00:00
Jim Meyering
2b2fb0cf91 *** empty log message *** 1997-12-21 12:11:32 +00:00
Jim Meyering
76d9ec0ad0 increment serial number 1997-12-21 12:11:17 +00:00
Jim Meyering
32068e5812 increment serial number 1997-12-21 12:10:55 +00:00
Jim Meyering
90d217b19a increment serial number 1997-12-21 12:10:26 +00:00
Jim Meyering
726c48d02f Fix reversed types on -1 args to chown.
From Kaveh Ghazi.
1997-12-21 12:10:07 +00:00
Jim Meyering
1af374e6a4 . 1997-12-21 12:06:03 +00:00
Jim Meyering
9ef99e168b *** empty log message *** 1997-12-21 12:05:56 +00:00
Jim Meyering
bdcaa361bc Include exclude.h.
(exclude): New static var.
(long_options, usage, main): Add --exclude and --exclude-from or -X.
(count_entry): Skip excluded entries.
1997-12-21 12:05:42 +00:00
Jim Meyering
a1003f154f remove FIXME-describe comments 1997-12-21 11:57:17 +00:00
Jim Meyering
3ba71d6de1 add FIXME-describe comments 1997-12-21 11:56:34 +00:00
Jim Meyering
ac5fc8ea73 Include exclude.h.
(exclude): New static var.
(long_options, usage, main): Add --exclude and --exclude-from or -X.
(count_entry): Skip excluded entries.
1997-12-21 11:47:27 +00:00
Jim Meyering
a3e0b4392c (libfu_a_SOURCES): Add exclude.c.
(noinst_HEADERS): Add exclude.h.
1997-12-21 11:46:49 +00:00
Jim Meyering
cbd71d8eea . 1997-12-21 11:43:34 +00:00
Jim Meyering
a2c7ebd49c . 1997-12-21 11:24:53 +00:00
Jim Meyering
727298f3f5 Use PARAMS, not __P. 1997-12-21 11:22:51 +00:00
Jim Meyering
27d24b46ad (rpl_chown): Rename from chown.
Undefine chown just after including config.h.
Include sys/stat.h.
Use correct ordering of uid and gid parameters both in function
definition and in call to chown.
With patches from Kaveh Ghazi.
1997-12-21 11:17:20 +00:00
Jim Meyering
a2f0f9ac89 s/__P/PARAMS/g 1997-12-16 15:44:00 +00:00
Jim Meyering
ece81e9e4a *** empty log message *** 1997-12-16 15:43:01 +00:00
Jim Meyering
70618de21b s/__P/PARAMS/g. 1997-12-16 15:42:48 +00:00
Jim Meyering
589a3c2872 *** empty log message *** 1997-12-16 15:33:33 +00:00
Jim Meyering
03f9f3dbec s/__P/PARAMS/g 1997-12-16 15:32:32 +00:00
Jim Meyering
fc22546441 . 1997-12-16 15:16:20 +00:00
Jim Meyering
08b3d2975e *** empty log message *** 1997-12-16 15:13:06 +00:00
Jim Meyering
5d764734f7 tweak indentation 1997-12-16 15:11:23 +00:00
Jim Meyering
36665a7464 (struct bin_str): Make len int, not unsigned, to avoid
bogus comparison < 0.
(quote_filename): Add forward decl.
(decode_switches): -b, -e, -N, -Q are now mutually exclusive.
(print_dir): Quote directory name as per quoting options.
(print_long_format): Don't count color changes as part of file name.
(quote_filename): Revamp interface: now accepts stream to output to
and filename, and returns length of quoted filename.
This removes duplicated code and should make errors less likely.
Also, no longer mallocs storage.  All callers changed.
Don't quote ' ' if -Q.
(OUTCHAR): New macro.
(SAVECHAR, SAVE_2_CHARS): Remove.
(print_name_with_quoting): New stack arg.  All callers changed.
(print_color_indicator): Cast ext len to size_t to avoid warning
with GCC 2.8.
(length_of_file_name_and_frills): Rewrite to use quote_filename.
This fixes bug when computing file name length with -e.
1997-12-14  Paul Eggert  <eggert@twinsun.com>
Add shell style quoting, and make it the default.
* NEWS, doc/fileutils.texi: Describe -e, which is now the default.
Describe change to --dired output.
* src/ls.c (quote_shell): New var.
(long_options, decode_switches, usage): New option -e or --quote-shell.
(dired_dump_obstack): New arg STYLE.
(main): Pass quoting style to dired_dump_obstack.
(decode_switches): -N now clears quote_as_string.
(quote_filename): Add shell style quoting.
1997-12-16 15:09:19 +00:00
Jim Meyering
1ca40285b2 (deep): Remove `find > k' debugging remnant. 1997-12-15 11:35:22 +00:00
Jim Meyering
ce939d6f44 Make sure we get diagnostics in English. 1997-12-14 21:51:44 +00:00
Jim Meyering
f126c8d3a1 Remove lseek and memchr dcls. 1997-12-14 16:28:18 +00:00
Jim Meyering
970ffd8520 *** empty log message *** 1997-12-14 16:28:06 +00:00
Jim Meyering
7dcb361c82 *** empty log message *** 1997-12-14 16:25:06 +00:00
Jim Meyering
5867abf11e *** empty log message *** 1997-12-14 15:38:18 +00:00
Jim Meyering
9afbb6eec6 (ASSIGN_STRDUPA): Cast alloca return value to char*. 1997-12-14 15:38:04 +00:00
Jim Meyering
ef938e62d0 s/HAVE_DECLARATION_/HAVE_DECL_/. 1997-12-14 15:15:07 +00:00
Jim Meyering
e68f7b2e4b cast memcpy to char* 1997-12-14 15:12:29 +00:00
Jim Meyering
b1bd801e94 Add #serial 1. 1997-12-14 15:03:38 +00:00
Jim Meyering
56b3459d40 add memchr dcl 1997-12-14 14:00:15 +00:00
Jim Meyering
f684c873f7 s/HAVE_DECLARATION/HAVE_DECL_/g 1997-12-14 12:40:33 +00:00
Jim Meyering
7c474bb76f add lseek 1997-12-14 12:03:55 +00:00
Jim Meyering
31c36865e5 *** empty log message *** 1997-12-14 12:03:38 +00:00
Jim Meyering
a6c30b90a3 *** empty log message *** 1997-12-14 08:03:18 +00:00
Jim Meyering
386843fd25 s/DECLARATION_/DECL_/g.
Add memchr.
1997-12-14 08:03:07 +00:00
Jim Meyering
457d8d9aef *** empty log message *** 1997-12-14 07:44:38 +00:00
Jim Meyering
15f5e27eaf s/HAVE_DECLARATION_/HAVE_DECL_/g 1997-12-14 07:40:32 +00:00
Jim Meyering
1ac1f811f6 *** empty log message *** 1997-12-13 23:42:54 +00:00
Jim Meyering
b86f6c2308 (main): Add some braces.
Check return code from fclose of each input file.
Close stdout and check for errors.
1997-12-13 23:39:09 +00:00
Jim Meyering
444c6da144 (close_output_file): Check ferror before calling fclose.
(main): Close stdout and check for errors.
1997-12-13 23:38:53 +00:00
Jim Meyering
84a050b56f . 1997-12-13 22:56:50 +00:00
Jim Meyering
b5697888a0 . 1997-12-13 22:55:52 +00:00
Jim Meyering
8f38e99480 . 1997-12-13 22:54:01 +00:00
Jim Meyering
f977e4b5cf Change --help output to tell the truth: that for of=FILE,
FILE *is* truncated.  Reported by Miles Bader.
Remove incomplete, usage-like comment at top of file.
1997-12-13 22:49:33 +00:00
Jim Meyering
d75ca19d76 (usage): Mention that `notrunc' is a conv= option.
Reported by Miles Bader.
1997-12-13 17:01:54 +00:00
Jim Meyering
587a9df786 . 1997-12-13 16:23:06 +00:00
Jim Meyering
295372322d (do_move): If rename fails for any reason (not just when
errno == EXDEV), then revert to trying copy-then-unlink.  This is
necessary to allow moving files within certain types of Linux NFS
mounted filesystems.  Reported by Marty Leisner.
1997-12-13 16:22:58 +00:00
Jim Meyering
b2959537e6 *** empty log message *** 1997-12-13 16:13:34 +00:00
Jim Meyering
39546ad7d7 *** empty log message *** 1997-12-11 18:18:22 +00:00
Jim Meyering
322f7b0971 . 1997-12-11 08:40:21 +00:00
Jim Meyering
a320eee158 (do_link): Don't require --force when target exists and
using --backup.  This changes makes ln consistent with cp and mv in
this respect.  Suggestion from Eli Zaretskii.
1997-12-11 08:40:10 +00:00
Jim Meyering
603137e2ab *** empty log message *** 1997-12-10 11:17:16 +00:00
Jim Meyering
4f242b4d51 use NULL, '\0' instead of zeroes 1997-12-10 10:31:25 +00:00
Jim Meyering
3cd84da3a6 (main): Make sure pw->pw_shell is non-NULL before trying to strdup it.
Patch from Dick Streefland.
1997-12-10 10:25:46 +00:00
Jim Meyering
92f0098844 . 1997-12-06 21:18:14 +00:00
Jim Meyering
45ef6ccef8 . 1997-12-06 21:16:57 +00:00
Jim Meyering
20e1875a32 revert last change 1997-12-06 21:09:58 +00:00
Jim Meyering
b73786146f use SORT_INITIAL_LINE_LENGTH envvar for testing 1997-12-06 21:09:30 +00:00
Jim Meyering
a587b015d0 *** empty log message *** 1997-12-06 21:08:41 +00:00
Jim Meyering
a353313b22 *** empty log message *** 1997-12-06 18:23:51 +00:00
Jim Meyering
7209272d72 . 1997-12-06 13:42:21 +00:00
Jim Meyering
6ee3c1a91a (fillbuf): split longer-than-80-char line 1997-12-06 12:13:52 +00:00
Jim Meyering
9f50126a03 . 1997-12-06 09:20:26 +00:00
Jim Meyering
5d1987b3da . 1997-12-06 09:18:32 +00:00
Jim Meyering
04c29cd1db Separate struct dcl and typedef.
(String *): Rename from parameter-shadowed `string'.
(stringstruct): Remove typedef.
1997-12-06 08:57:14 +00:00
Jim Meyering
d91c95fda0 (re_compile_fastmap): Remove dcl of unused num_regs. 1997-12-06 08:27:25 +00:00
Jim Meyering
8f1aea2bc0 *** empty log message *** 1997-11-30 15:17:48 +00:00
Jim Meyering
ad7eabb3b3 . 1997-11-30 15:14:10 +00:00
Jim Meyering
468e83a183 *** empty log message *** 1997-11-30 14:22:56 +00:00
Jim Meyering
66fbc2c8f6 (savedir): Revert last change. malloc always
works when called with zero, because we use the wrapper if the
system version is lacking.
1997-11-30 14:20:17 +00:00
Jim Meyering
2807179898 *** empty log message *** 1997-11-30 13:44:02 +00:00
Jim Meyering
216037574d *** empty log message *** 1997-11-30 13:43:36 +00:00
Jim Meyering
4f670edacc *** empty log message *** 1997-11-30 13:37:44 +00:00
Jim Meyering
5c3d73a99b (EXTRA_DIST): Add inttypes_h.m4 and uintmax_t.m4. 1997-11-30 13:35:45 +00:00
Jim Meyering
d29ca45595 . 1997-11-30 13:35:35 +00:00
Jim Meyering
9e2eec1ca9 *** empty log message *** 1997-11-30 13:35:25 +00:00
Jim Meyering
e0da3d8d39 filter through cppi 1997-11-30 11:17:28 +00:00
Jim Meyering
3f7e011ab0 remove trailing blank 1997-11-30 11:16:14 +00:00
Jim Meyering
bca6f1740d remove trailing blank 1997-11-30 11:15:27 +00:00
Jim Meyering
d7d6efb0d7 remove trailing blank 1997-11-30 11:15:02 +00:00
Jim Meyering
3203b1d69c *** empty log message *** 1997-11-30 11:13:34 +00:00
Jim Meyering
fbe1ba7079 . 1997-11-30 11:13:18 +00:00
Jim Meyering
00c42a8936 (human_readable): Convert to ANSI-style definition.
[lint]: Define `power'.
1997-11-30 11:10:24 +00:00
Jim Meyering
5320bf5037 filter through cppi 1997-11-30 11:08:39 +00:00
Jim Meyering
79111711fe . 1997-11-30 11:08:23 +00:00
Jim Meyering
f7acc655f4 (print_long_format): Rename inner-scoped buf' arrays to hbuf'
to avoid shadowing local.
1997-11-30 11:07:49 +00:00
Jim Meyering
e5781fe090 (change_dir_owner): Cast st_size arg to unsigned int in savedir call. 1997-11-30 11:05:34 +00:00
Jim Meyering
a10fdc591f (change_dir_mode): Cast st_size arg to unsigned int in savedir call. 1997-11-30 11:05:10 +00:00
Jim Meyering
f7ecccf234 (full_filename): Use memcpy, not mempcpy when not using the return value. 1997-11-30 11:02:47 +00:00
Jim Meyering
5112b2973f filter through cppi 1997-11-30 11:01:54 +00:00
Jim Meyering
10aa5f6fd7 (<limits.h>): Include if HAVE_LIMITS_H.
(CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_MAX, UINT_MAX):
New macros.
(ST_NBLOCKS): Now counts actual blocks, not 512-byte blocks.
(ST_NBLOCKSIZE): New macro.
1997-11-30 10:25:21 +00:00
Jim Meyering
9c59f1dcc4 (<inttypes.h>): Include if HAVE_INTTYPES_H.
("human.h"): Include.
(<limits.h>): Don't include; system.h does it now.
(INT_MAX): Remove.
(longdiff): Remove bogus definition that uses subtraction;
it gives the wrong answer when overflows occur.
(convert_blocks): Remove.
(output_units): New variable;
replaces booleans kilobyte_blocks and megabyte_blocks.
(human_readable_base): New variable.
(long_options, usage): Add -h or --human-readable and -H or --si.
(decode_switches): Adjust to renamed option variables.
Use -H if BLOCKSIZE is SI.  Add -h, -H.
(print_dir): Count blocks using uintmax_t, not int.
(gobble_file): Now returns uintmax_t, not int.
Don't convert blocks to 512 byte units, as this might overflow;
let caller handle the problem.  Deduce what caller will print
by invoking human_readable.
(print_long_format, print_file_name_and_frills): Don't assume
inode number, block count, file size fit in unsigned long.
Use human_readable to do block count conversion and to print
file sizes.
(prep_non_filename_text): Print decimal string for time if
localtime fails due to enormous time_t.
1997-11-30 10:25:16 +00:00
Jim Meyering
d08a2b63dc (BITSPERBYTE): Remove.
(UID_T_MAX, GID_T_MAX): Define in terms of TYPE_MAXIMUM.
1997-11-30 10:25:11 +00:00
Jim Meyering
6ed8115087 (<inttypes.h>): Include if HAVE_INTTYPES_H.
("human.h"): Include.
(LONGEST_HUMAN_READABLE, enum Output_units): Remove.
(count_entry): Now returns uintmax_t, not long.
(human_readable_base): Renamed from opt_human_readable; value is now
zero or positive integer, not just zero or nonzero.
(output_units): Now an integer giving output size.
(tot_size): Now uintmax_t, not long.
(long_options, usage): Add --si or -H.
(main): Adjust to renamed option variables.
Use -H if BLOCKSIZE is SI.  Add -H.
(human_readable): Remove; rewritten and now in lib/human.c.
(print_size): Rewrite in terms of human_readable.
Accept extra arg to be printed after size; all callers changed.
1997-11-30 10:25:07 +00:00
Jim Meyering
76916942ca (<inttypes.h>): Include if HAVE_INTTYPES_H.
("human.h"): Include.
(LONGEST_HUMAN_READABLE_1K_BYTE_BLOCKS): Remove.
(human_readable_base): Renamed from human_blocks; value is now
zero or positive integer, not just zero or nonzero.
(output_units): New variable;
replaces booleans kilobyte_blocks and megabyte_blocks.
(long_options): Add --si or -H.
(print_header): Adjust to renamed option variables.
(human_readable_1k_blocks): Remove.
(show_dev): Count blocks using uintmax_t, not long.
Calculate percentages using double, not long; this still isn't
perfect as it suffers double rounding, but it's more likely to
round correctly in practice than using long did.
Adjust to renamed option variables.
Use new human_readable library function to format uintmax_t values.
(usage): Add -H, --si.
(main): Adjust to renamed option variables.
Use -H if BLOCKSIZE is SI.  Add -H.
1997-11-30 10:25:02 +00:00
Jim Meyering
72bc3b818f (<inttypes.h>): Include if HAVE_INTTYPES_H.
("human.h"): Include.
(input_blocksize, output_blocksize, conversion_blocksize):
Now size_t instead of long.  0 means unset.
(skip_records, seek_record, max_records): Now uintmax_t, not long.
(w_partial, w_full, r_partial, r_full, r_truncate):
Now uintmax_t instead of unsigned.
(print_stats): Print counts as uintmax_t, not unsigned.
(main, skip): Check for overflow when computing file offsets.
(skip): Records count arg is uintmax_t, not long; blocksize arg is
size_t, not long.  Try lseek even on non regular files, as per comment.
(oc, col): Now size_t, not int.
(copy): No need to check max_records >= 0 any more, as the
default value is now effectively infinity.
Cast lseek arg to off_t.
(copy, copy_with_block): conversion_blocksize - col can never
be negative now, since it's unsigned, so rewrite loops to
avoid problems with unsigned.
(scanargs): Parse numeric args using uintmax_t, not int.
Check for overflow when converting block size args to size_t.
Blocksize options are now unsigned, and are now 0 when not set yet.
(parse_integer): Return uintmax_t, not int; accept new int * arg
to store error indicator, since all returned values are now valid.
Check for overflow when scanning integer.
1997-11-30 10:24:58 +00:00
Jim Meyering
a5fe3a240b (<inttypes.h>): Include if HAVE_INTTYPES_H.
(hash_insert2): Cast inode number to uintmax_t; this prevents
negative remainders if the inode number is negative and ino_t
is longer than unsigned.
1997-11-30 10:24:54 +00:00
Jim Meyering
b8c474191a (copy_reg): Store file size as off_t, not long.
Do not assume st_size has been normalized to 512 byte blocks,
or that it fits in size_t after dividing by the blocksize.
1997-11-30 10:24:50 +00:00
Jim Meyering
0f411474da (<limits.h>, UINT_MAX, UINT_MAX): Remove; now
done by system.h.
1997-11-30 10:24:45 +00:00
Jim Meyering
dcd4c05dfa (savedir): Check for size zero before invoking
malloc; this can occur if st_size arg overflows on conversion to
unsigned int.  All callers now cast st_size arg to unsigned int.
1997-11-30 10:24:41 +00:00
Jim Meyering
07783bcdf0 (getuidbyname, getgidbyname): Names can now
be NULL in cache.  This change merely fixes ifdeffed-out code.
1997-11-30 10:24:38 +00:00
Jim Meyering
240cb49efe New file. The interface is inspired
by the human_readable function that was in du.c, but it's pretty
much rewritten from scratch.
1997-11-30 10:24:32 +00:00
Jim Meyering
412d0aba50 (struct fs_usage): New member fsu_blocksize.
Other members are now uintmax_t, not long.
1997-11-30 10:24:28 +00:00
Jim Meyering
25fabf3d2d Do all calculations using uintmax_t.
Include <inttypes.h> if available.
(adjust_blocks, CONVERT_BLOCKS): Remove.
(get_fs_usage): Set new member fsu_blocksize, and do not convert
numbers to 512-byte block units; this avoids overflow here.
Cast lseek arg to off_t, not long.
1997-11-30 10:24:24 +00:00
Jim Meyering
f633782aa1 (st_blocks): long -> off_t.
Avoid arithmetic overflow when size is near max.
Depend on _POSIX_SOURCE and BSIZE, not _POSIX_VERSION, for
compatibility with system.h.
(BSIZE): Remove definition, since if BSIZE is not defined
we're never invoked.
1997-11-30 10:24:20 +00:00
Jim Meyering
ce43e130bb (libfu_a_SOURCES): Add new file human.c.
(noinst_HEADERS): Add new file human.h.
1997-11-30 10:24:16 +00:00
Jim Meyering
8754a488e0 . 1997-11-30 08:32:44 +00:00
Jim Meyering
75a5b970b3 (mempcpy): remove static inline function 1997-11-30 07:34:12 +00:00
Jim Meyering
e08f95ef54 . 1997-11-29 18:05:14 +00:00
Jim Meyering
4eac40b0e5 *** empty log message *** 1997-11-24 14:25:52 +00:00
Jim Meyering
04712f52ad also test for stdlib.h
don't use STDC_HEADERS in ifdef for stdlib.h
1997-11-24 14:21:16 +00:00
Jim Meyering
c781b840f2 move big chunk of defs to sys2 1997-11-24 14:19:32 +00:00
Jim Meyering
d8415fe94f *** empty log message *** 1997-11-24 12:57:50 +00:00
Jim Meyering
9928e82eac *** empty log message *** 1997-11-24 12:53:29 +00:00
Jim Meyering
49803907f5 . 1997-11-19 18:59:48 +00:00
Jim Meyering
4c3aa5cba3 (hash_pjw): Don't use ANSI `U' suffix. Cast instead. 1997-11-19 18:59:02 +00:00
Jim Meyering
c04cb4522a add PARAMS around prototype lists 1997-11-19 18:57:40 +00:00
Jim Meyering
f62113bea3 . 1997-11-19 18:55:53 +00:00
Jim Meyering
d92a618daf revert a mempcpy to memcpy 1997-11-19 18:55:31 +00:00
Jim Meyering
1110f5f335 (AUTOMAKE_OPTIONS): Use ansi2knr so *I* don't
have to convert my hash package to use k&r C.
1997-11-19 15:04:15 +00:00
Jim Meyering
68c59ca300 *** empty log message *** 1997-11-18 03:47:06 +00:00
Jim Meyering
65eb6ca593 *** empty log message *** 1997-11-18 03:32:19 +00:00
Jim Meyering
9ed80c0140 (_REENTRANT): #define, as some hosts need this to declare localtime_r properly.
From Paul Eggert.
1997-11-18 03:32:00 +00:00
Jim Meyering
6106d5a733 . 1997-11-18 03:29:24 +00:00
Jim Meyering
59b9b24bad undef putenv 1997-11-17 15:45:19 +00:00
Jim Meyering
f1b490166e add jm_ prefix to use of am_cv_func_working_mktime
increment serial #
1997-11-17 15:13:41 +00:00
Jim Meyering
3c94a67faa . 1997-11-16 15:28:23 +00:00
Jim Meyering
434a17cc05 . 1997-11-16 15:27:52 +00:00
Jim Meyering
aa96253ae1 . 1997-11-15 19:58:19 +00:00
Jim Meyering
87cff95abc . 1997-11-15 19:54:47 +00:00
Jim Meyering
4da60d3e2c *** empty log message *** 1997-11-15 19:51:16 +00:00
Jim Meyering
fec9572013 include unistd.h 1997-11-15 19:43:06 +00:00
Jim Meyering
1076c92f8d . 1997-11-15 17:19:48 +00:00
Jim Meyering
8def3e3ec1 remove fixup_null_alloc prototype 1997-11-15 17:18:01 +00:00
Jim Meyering
83ef9b531a (EXTRA_DIST): Add mktime.m4. 1997-11-15 17:14:10 +00:00
Jim Meyering
f9d9d1cbb4 . 1997-11-15 17:13:23 +00:00
Jim Meyering
31c1d2ed3d *** empty log message *** 1997-11-15 17:13:20 +00:00
Jim Meyering
e66833e32e Require jm_AM_FUNC_MKTIME, not the one from automake. 1997-11-15 17:13:02 +00:00
Jim Meyering
e6186db39f (mempcpy): Remove definition. 1997-11-15 17:09:34 +00:00
Jim Meyering
ae2984e8ca . 1997-11-15 17:08:32 +00:00
Jim Meyering
ed5048e229 Check for %F format.
Add comments.
1997-11-15 13:17:15 +00:00
Jim Meyering
e84c69c6cf (bigtime_test): New function from Paul Eggert to detect SunOS4.1.4's
infinite looping mktime.
Portability tweaks from Paul Eggert.
1997-11-15 05:41:02 +00:00
Jim Meyering
7ee6b0046f Temporarily add a copy of this file from the automake
distribution.  Update names to have jm_ prefix.
(irix_6_4_bug): New function based on code from Ariel Faigon.
1997-11-15 05:28:04 +00:00
Jim Meyering
708a265b39 . 1997-11-15 05:24:30 +00:00
Jim Meyering
df29ef2431 . 1997-11-13 14:29:18 +00:00
Jim Meyering
3022e9b806 . 1997-11-13 14:25:41 +00:00
Jim Meyering
db984f4c6d update from GNU libc 1997-11-13 14:24:03 +00:00
Jim Meyering
e0d703658c update from GNU libc 1997-11-13 14:22:56 +00:00
Jim Meyering
f52ec0e772 partial update from FSF -- use int, not size_t; 0, not NULL 1997-11-13 14:21:02 +00:00
Jim Meyering
d29c650718 . 1997-11-13 14:16:21 +00:00
Jim Meyering
690342eae7 Update from FSF. 1997-11-13 13:23:16 +00:00
Jim Meyering
2e21152e49 Update from FSF. 1997-11-13 13:22:54 +00:00
Jim Meyering
7afa02b918 Check for POSIX.2's %f format spec. 1997-11-13 13:19:15 +00:00
Jim Meyering
7ba5fcb251 add -*-Makefile-*- 1997-11-12 17:28:34 +00:00
Jim Meyering
f1af5f9504 . 1997-11-12 17:27:41 +00:00
Jim Meyering
5b399f4fe0 [!HAVE_MEMPCPY] (mempcpy): Define here instead. 1997-11-12 17:21:54 +00:00
Jim Meyering
c0cc0c26ed [!HAVE_MEMPCPY] (mempcpy): Define. 1997-11-12 17:19:21 +00:00
Jim Meyering
b74c9a14fd (copy_dir): Use path_concat rather than open-coding it. 1997-11-12 17:18:55 +00:00
Jim Meyering
b3828d9190 *** empty log message *** 1997-11-12 16:28:53 +00:00
Jim Meyering
4842565b62 [!HAVE_MEMPCPY] (mempcpy): Define.
(batch_convert): Use mempcpy rather than stpcpy.
1997-11-12 16:28:06 +00:00
Jim Meyering
4d1e1b28f8 (path_concat): Use mempcpy, not stpcpy. 1997-11-12 16:18:23 +00:00
Jim Meyering
992fc3869f return memcpy result directly 1997-11-12 16:11:17 +00:00
Jim Meyering
e96a4f0ed1 . 1997-11-10 14:40:40 +00:00
Jim Meyering
65dd91dfc3 . 1997-11-10 14:39:14 +00:00
Jim Meyering
99910b9591 . 1997-11-10 04:11:57 +00:00
Jim Meyering
dbac29a533 *** empty log message *** 1997-11-10 03:53:45 +00:00
Jim Meyering
5e28f75496 (jm_STRFTIME_PREREQS): Check for localtime_r.
(jm_FUNC_GNU_STRFTIME): Use new macro.
(jm_FUNC_STRFTIME): New macro.  Likewise.
1997-11-10 03:52:47 +00:00
Jim Meyering
bc445a1f16 (jm_FUNC_MKTIME): Check for localtime_r. 1997-11-10 03:52:33 +00:00
Jim Meyering
572930e171 *** empty log message *** 1997-11-10 03:31:27 +00:00
Jim Meyering
9694cb0f15 add -*-Makefile-*- to first line 1997-11-09 19:06:53 +00:00
Jim Meyering
03fbbc6ee0 add -*-Makefile-*- to first line 1997-11-09 19:06:31 +00:00
Jim Meyering
ab08d64445 . 1997-11-08 21:10:39 +00:00
Jim Meyering
d9173c1c81 . 1997-11-08 21:04:13 +00:00
Jim Meyering
6d3a217c16 (EXTRA_DIST): Add lfs.m4. 1997-11-08 21:02:34 +00:00
Jim Meyering
979f238fb3 (fseeko): Define a stub if ! HAVE_FSEEKO.
(skip): Use fseeko if available.  Don't use lseek; it causes
the stdio stream to become out of sync with respect to the
underyling file descriptor.
From Paul Eggert.
1997-11-08 21:02:01 +00:00
Jim Meyering
6af4f825de . 1997-11-08 20:42:52 +00:00
Jim Meyering
9ef77c1298 *** empty log message *** 1997-11-08 20:38:23 +00:00
Jim Meyering
7417f884af (keycompare): call alloca(0) after each iteration 1997-11-08 04:47:17 +00:00
Jim Meyering
b391c8ba91 . 1997-11-08 04:46:30 +00:00
Jim Meyering
cc2fcaa6ab *** empty log message *** 1997-11-08 03:00:52 +00:00
Jim Meyering
214ed98dd8 Fix typo in comment.
Add header check for string.h.
1997-11-08 03:00:20 +00:00
Jim Meyering
36ce9a1c1c use 2 mempcpy instead of two memcpy calls 1997-11-08 02:59:16 +00:00
Jim Meyering
d87c244809 cleanup
use abort for framework errors
1997-11-08 02:56:10 +00:00
Jim Meyering
19058180fa . 1997-11-07 18:19:50 +00:00
Jim Meyering
55405358b3 *** empty log message *** 1997-11-07 17:19:00 +00:00
Jim Meyering
aaf22602f2 . 1997-11-07 17:18:15 +00:00
Jim Meyering
a313a7d147 (getmonth): Remove HAVE_ALLOCA #ifdefs.
We always have alloca.
(keycompare): Don't use variable size arrays (it's a gcc-extension).
Rewrite code that increments new lengths when not `ignoring'.
1997-11-06 14:37:34 +00:00
Jim Meyering
a8da87911c make sure autoconf tests have been run 1997-11-03 15:19:20 +00:00
Jim Meyering
cbd4a8af0f Add insurance: tell xmalloc.c we've done the test. 1997-11-03 15:18:09 +00:00
Jim Meyering
752325fc8e *** empty log message *** 1997-11-03 05:46:09 +00:00
Jim Meyering
d17ebff653 *** empty log message *** 1997-11-03 05:43:56 +00:00
Jim Meyering
0ad181ef01 *** empty log message *** 1997-11-03 05:39:43 +00:00
Jim Meyering
c9848717d6 *** empty log message *** 1997-11-03 05:38:28 +00:00
Jim Meyering
aafe49ef49 (xalloc_fail): Renamed from fixup_null_alloc.
(xcalloc): #ifdef-out unused function.
(xrealloc): Remove code to work around deficient versions of realloc.
Now we have an autoconf-enabled replacement version.
(xmalloc): Remove code to work around deficient versions of malloc.
Now we have an autoconf-enabled replacement version.
1997-11-03 05:25:44 +00:00
Jim Meyering
c417b4e790 be stricter: check for both P == 0 and N == 0. 1997-11-03 05:20:41 +00:00
Jim Meyering
1919353d75 *** empty log message *** 1997-11-03 05:20:09 +00:00
Jim Meyering
65673815ac *** empty log message *** 1997-11-03 05:19:56 +00:00
Jim Meyering
ab5ff1597f (main): New option, --max-line-length (-L).
(wc, write_counts): Implement it.
From Bruno Haible.
1997-11-03 05:08:36 +00:00
Jim Meyering
d6174d58f9 . 1997-11-03 04:52:50 +00:00
Jim Meyering
ea3c071c2d *** empty log message *** 1997-11-03 04:51:54 +00:00
Jim Meyering
3f3c12d723 don't use touch 1997-11-03 04:50:11 +00:00
Jim Meyering
f2ddecd375 revert last change 1997-11-03 04:40:37 +00:00
Jim Meyering
07e8ae7cb1 create 100 at a time 1997-11-03 04:40:07 +00:00
Jim Meyering
1b3376c9da Put cycle-detecting code inside an
#ifdef ENABLE_CYCLE_CHECK, for systems lacking d_ino.
[D_INO_IN_DIRENT]: Define ENABLE_CYCLE_CHECK.

(ASSIGN_STRDUPA): Clean up.
(right_justify): Use memcpy return value directly.
Suggestions from Ulrich Drepper.

(remove_cwd_entries) [! defined HAVE_WORKING_READDIR]: Impose overhead
of working around non-POSIX readdir implementation only on systems
that need it.
(remove_cwd_entries): Temporarily save a copy of each entry name in
an obstack rather than on the stack via alloca, then free it in the
likely event that we don't save the entry in the hash table.
1997-11-03 04:22:57 +00:00
Jim Meyering
6327a7ad45 *** empty log message *** 1997-11-02 14:38:49 +00:00
Jim Meyering
ae21be058f . 1997-11-02 14:28:13 +00:00
Jim Meyering
53424a8278 *** empty log message *** 1997-11-02 14:28:10 +00:00
Jim Meyering
267987dd44 *** empty log message *** 1997-11-02 14:25:46 +00:00
Jim Meyering
1b4242d631 . 1997-11-02 14:24:16 +00:00
Jim Meyering
c70a6df8c7 *** empty log message *** 1997-11-02 14:21:59 +00:00
Jim Meyering
0b5e948104 Guard cycle-detecting code inside #ifdef ENABLE_CYCLE_CHECK.
[D_INO_IN_DIRENT]: Define ENABLE_CYCLE_CHECK.
1997-10-28 00:55:11 +00:00
Jim Meyering
41431bbd91 *** empty log message *** 1997-10-27 05:00:47 +00:00
Jim Meyering
7da7de8f59 *** empty log message *** 1997-10-27 04:59:35 +00:00
Jim Meyering
3426a19c60 add comment 1997-10-27 04:59:25 +00:00
Jim Meyering
f831d9c32d Convert to upper case before comparing.
This makes join -i work with sort -f.
1997-10-27 04:58:22 +00:00
Jim Meyering
94c4bdd4c8 fix typo in comment 1997-10-27 03:22:01 +00:00
Jim Meyering
b67ad81f67 . 1997-10-26 15:07:47 +00:00
Jim Meyering
d9eac1e2c0 Add A, _, a tests using -f. 1997-10-26 15:07:01 +00:00
Jim Meyering
fb9673ea4a . 1997-10-26 04:51:38 +00:00
Jim Meyering
83dd3a893b . 1997-10-26 04:50:59 +00:00
Jim Meyering
ce7a44e806 . 1997-10-26 04:50:23 +00:00
Jim Meyering
91a4b3d1ed *** empty log message *** 1997-10-26 04:50:05 +00:00
Jim Meyering
910c82eff8 (NLS_STRNCMP) [!ENABLE_NLS]: s/strcmp/strncmp/ 1997-10-26 04:42:02 +00:00
Jim Meyering
eb5fa8bdd2 (xalloc_fail_func): Initialize to 0, not NULL. 1997-10-26 04:39:53 +00:00
Jim Meyering
6f82682a64 . 1997-10-26 04:26:09 +00:00
Jim Meyering
0ef0b74972 (EXTRA_DIST): Add malloc.c. 1997-10-26 03:58:27 +00:00
Jim Meyering
a091e5e93d . 1997-10-26 03:57:43 +00:00
Jim Meyering
956fa0cc78 (EXTRA_DIST): Add malloc.m4. 1997-10-26 03:53:07 +00:00
Jim Meyering
504453762c . 1997-10-26 03:52:27 +00:00
Jim Meyering
71a0d20bf5 (EXTRA_DIST): Add realloc.c. 1997-10-26 03:15:47 +00:00
Jim Meyering
9386131a43 . 1997-10-26 02:48:44 +00:00
Jim Meyering
0819395283 . 1997-10-26 02:48:15 +00:00
Jim Meyering
c5c9c39bb9 . 1997-10-26 02:47:19 +00:00
Jim Meyering
139d0623b8 . 1997-10-26 02:46:35 +00:00
Jim Meyering
bf3f82daa0 (noinst_HEADERS): Add xalloc.h. 1997-10-26 02:20:32 +00:00
Jim Meyering
f399320c40 . 1997-10-25 22:04:11 +00:00
Jim Meyering
df445b0891 Remove old-style xmalloc and xrealloc decls. 1997-10-25 22:03:55 +00:00
Jim Meyering
b3ab88e970 Remove old-style xmalloc and xrealloc decls. 1997-10-25 22:03:20 +00:00
Jim Meyering
e2609be248 Include xalloc.h.
Remove dcls of xmalloc, xcalloc and xrealloc.
1997-10-25 22:01:13 +00:00
Jim Meyering
226e5a6478 . 1997-10-25 21:52:24 +00:00
Jim Meyering
123a921fc2 s/xmalloc_exit_failure/xalloc_exit_failure 1997-10-25 21:52:09 +00:00
Jim Meyering
e6503ed629 Include xalloc.h.
Change VOID to void.
(xalloc_exit_failure): Renamed extern.
(xalloc_msg_memory_exhausted): New extern.
(xalloc_fail_func): New extern.
(fixup_null_alloc): Use new variables.
1997-10-25 21:51:21 +00:00
Jim Meyering
01b84d9480 . 1997-10-25 21:49:45 +00:00
Jim Meyering
c740c3f8ae . 1997-10-25 04:45:58 +00:00
Jim Meyering
e211bb2aff Remove old-style xmalloc and xrealloc decls. 1997-10-25 04:45:43 +00:00
Jim Meyering
cfcb7f0117 Remove old-style xmalloc and xrealloc decls.
(add_tabstop): Cast first arg of xrealloc to char*.
1997-10-25 04:44:00 +00:00
Jim Meyering
0927513b16 Include xalloc.h.
(xmalloc): Remove function.
(xrealloc): Remove function.
(main): Set xalloc_fail_func to cleanup.
Set xmalloc_exit_failure SORT_FAILURE.
1997-10-25 04:43:10 +00:00
Jim Meyering
0873056df7 Remove old-style xmalloc and xrealloc decls.
(paste_parallel): Cast first arg of xrealloc to char*.
1997-10-25 04:42:15 +00:00
Jim Meyering
b480949713 Remove old-style xmalloc and xrealloc decls.
(decode_format_string): Cast first arg of xrealloc to char*.
1997-10-25 04:41:18 +00:00
Jim Meyering
f4ae4ca4ef Remove old-style xmalloc and xrealloc decls.
(add_tabstop): Cast first arg of xrealloc to char*.
1997-10-25 04:40:28 +00:00
Jim Meyering
a0b56b516a Include xalloc.h.
(xmalloc): Remove function.
(xrealloc): Remove function.
(main): Set xalloc_fail_func to cleanup.
1997-10-25 04:38:58 +00:00
Jim Meyering
7dcae67d92 (ADD_RANGE_PAIR): Cast first arg of xrealloc to char*.
(getstr): Cast xmalloc return value to char*.
(xmalloc): Remove decl.
(xrealloc): Remove decl.
1997-10-25 04:37:57 +00:00
Jim Meyering
866a9c5e2d Use unsigned int, not just unsigned. 1997-10-24 13:17:16 +00:00
Jim Meyering
4c29214245 *** empty log message *** 1997-10-24 13:06:56 +00:00
Jim Meyering
d6b68f0fff . 1997-10-24 04:29:41 +00:00
Jim Meyering
fe4e67e1a0 *** empty log message *** 1997-10-24 02:13:01 +00:00
Jim Meyering
cd4c834ded quote AC_HEADER_STDC in AC_REQUIRE. 1997-10-24 02:06:52 +00:00
Jim Meyering
1c97532caf don't use lower and upper temporaries 1997-10-24 01:45:56 +00:00
Jim Meyering
220323bbbf . 1997-10-24 01:44:35 +00:00
Jim Meyering
5aa2bbe173 *** empty log message *** 1997-10-24 01:44:29 +00:00
Jim Meyering
ba1b5f6db1 . 1997-10-24 01:43:24 +00:00
Jim Meyering
c25ff2f7c9 *** empty log message *** 1997-10-24 01:43:12 +00:00
Jim Meyering
23fa5c1d3f . 1997-10-24 01:42:27 +00:00
Jim Meyering
bd38753847 *** empty log message *** 1997-10-24 01:42:02 +00:00
Jim Meyering
d1ea3d6f17 . 1997-10-23 16:15:31 +00:00
Jim Meyering
339afbb210 [!HAVE_DECLARATION_FREE]: Declare free.
[!HAVE_DECLARATION_MALLOC]: Declare malloc.
[!HAVE_DECLARATION_REALLOC]: Declare realloc.
[!HAVE_DECLARATION_STPCPY]: Declare stpcpy.
[!HAVE_DECLARATION_STRSTR]: Declare strstr.
1997-10-23 16:07:31 +00:00
Jim Meyering
f4d8e10147 Remove stpcpy decl.
Remove free, malloc, and realloc decls.
1997-10-23 16:06:59 +00:00
Jim Meyering
9fec99f4a6 Remove free and malloc decls. 1997-10-23 16:06:19 +00:00
Jim Meyering
3faf14fe5c Remove stpcpy decl.
Remove free and malloc decls.
1997-10-23 16:05:59 +00:00
Jim Meyering
eae64f3a4f Remove stpcpy decl. 1997-10-23 16:04:47 +00:00
Jim Meyering
2190ae8456 . 1997-10-23 16:04:22 +00:00
Jim Meyering
5d95b57e31 *** empty log message *** 1997-10-23 16:04:09 +00:00
Jim Meyering
ddac742eb8 . 1997-10-23 15:59:42 +00:00
Jim Meyering
9e51e01450 . 1997-10-23 15:58:39 +00:00
Jim Meyering
096b53e6c6 [STREQ]: Undef then redefine. 1997-10-23 15:57:54 +00:00
Jim Meyering
1f98316792 Remove strstr decl. 1997-10-23 15:57:36 +00:00
Jim Meyering
58e904c6fd Remove stpcpy decl. 1997-10-23 15:57:21 +00:00
Jim Meyering
308d4d7b56 . 1997-10-23 15:34:12 +00:00
Jim Meyering
fd9508f73e . 1997-10-23 15:32:42 +00:00
Jim Meyering
92f84dde01 . 1997-10-23 15:32:08 +00:00
Jim Meyering
c7ba7d37a5 *** empty log message *** 1997-10-23 14:30:37 +00:00
Jim Meyering
e3d7071595 Remove stpcpy dcl. 1997-10-23 14:30:27 +00:00
Jim Meyering
00bc2c29ca Remove malloc, and realloc dcls. 1997-10-23 14:30:14 +00:00
Jim Meyering
f11893c764 Remove free, malloc, and realloc dcls. 1997-10-23 14:30:03 +00:00
Jim Meyering
1aad2e1c4a Remove malloc and realloc dcls. 1997-10-23 14:29:46 +00:00
Jim Meyering
d4899bad7e Remove stpcpy dcl. 1997-10-23 14:28:31 +00:00
Jim Meyering
1323b4bc13 *** empty log message *** 1997-10-23 13:28:01 +00:00
Jim Meyering
9f1ddc8d01 (EXTRA_DIST): Add decl.m4 and do-decl.m4. 1997-10-23 13:26:45 +00:00
Jim Meyering
d0a698d984 *** empty log message *** 1997-10-23 04:53:18 +00:00
Jim Meyering
1bf2efdbf0 . 1997-10-23 04:53:06 +00:00
Jim Meyering
394f851071 update from FSF 1997-10-22 14:06:16 +00:00
Jim Meyering
b36a76ab70 *** empty log message *** 1997-10-20 18:31:29 +00:00
Jim Meyering
916300ba27 *** empty log message *** 1997-10-19 03:20:04 +00:00
Jim Meyering
22b1971cbc *** empty log message *** 1997-10-19 03:12:10 +00:00
Jim Meyering
a7e650ac12 (remove_cwd_entries): Entries in table of processed dir
entries are not malloc'd, so don't have hash cleanup free them.
Rewind dirp upon NULL readdir, required for at least SunOS.
1997-10-19 03:09:40 +00:00
Jim Meyering
53e807719a *** empty log message *** 1997-10-19 02:38:31 +00:00
Jim Meyering
b51e8b8ec4 *** empty log message *** 1997-10-19 02:37:12 +00:00
Jim Meyering
6f976ee5d4 . 1997-10-18 20:14:50 +00:00
Jim Meyering
3fa5a54f68 (LONG_MAX): Define if not defined. 1997-10-18 19:49:50 +00:00
Jim Meyering
72ab8e314c *** empty log message *** 1997-10-17 19:05:07 +00:00
Jim Meyering
d255fdbe9c *** empty log message *** 1997-10-17 18:58:04 +00:00
Jim Meyering
71c4a4524f . 1997-10-17 18:57:46 +00:00
Jim Meyering
c555721842 (remove_cwd_entries): Change the while(dp...) to a while(1) loop,
and move dcl and assignment of dp into the loop.
1997-10-17 18:06:34 +00:00
Jim Meyering
0dcc4a0d58 *** empty log message *** 1997-10-17 15:21:27 +00:00
Jim Meyering
d6cdc3e8f5 . 1997-10-17 15:20:17 +00:00
Jim Meyering
df400162fc *** empty log message *** 1997-10-17 15:20:08 +00:00
Jim Meyering
695b9df0ec indent 1997-10-16 15:34:26 +00:00
Jim Meyering
1a68cff356 Add comments. From Orn. 1997-10-16 15:29:15 +00:00
Jim Meyering
acf88c6fa8 add assertions 1997-10-16 15:03:54 +00:00
Jim Meyering
1bcc596ada . 1997-10-16 15:01:58 +00:00
Jim Meyering
f015b15dc9 (look_for_fraction): Patch from Orn Hansen.
(getmonth): Compare the two month names only to the length of the
string in the month table.  Patch from Orn Hansen.
(NLS_STRNCMP): New macro.
(strncoll_s2_readonly): New function.
(inittables): Don't use temporary `comp' to hide type of comparator function.
(nls_sort_month_comp): Declare parameters to be void* to match
comparator function type required for qsort.
(getmonth): Use NLS_STRNCMP rather than #ifdef.
Use do-while, rather than while-loop.
1997-10-16 14:54:58 +00:00
Jim Meyering
e803da432b begin merging Orn's changes 1997-10-16 13:12:13 +00:00
Jim Meyering
8f8e6f63d8 *** empty log message *** 1997-10-15 21:38:08 +00:00
Jim Meyering
bbc161b496 . 1997-10-15 05:12:00 +00:00
Jim Meyering
e3fe6a0efd *** empty log message *** 1997-10-15 05:00:41 +00:00
Jim Meyering
1ab25ef4a1 (_NL_ITEM) [!defined]: Define.
From from rn E. Hansen.
1997-10-15 05:00:33 +00:00
Jim Meyering
0fab8dca59 . 1997-10-14 22:34:00 +00:00
Jim Meyering
55707840f3 Remove ChangeLog entry from Orn. 1997-10-14 22:33:20 +00:00
Jim Meyering
8d3d73c573 Use STREQ in place of most uses of strcmp.
(zaptemp): Make parameter `const'.
1997-10-14 22:32:44 +00:00
Jim Meyering
2bb1be5ca0 (NLS_STRCMP): Define.
(getmonth): Remove ifdef and use NLS_STRCMP instead.
Use HAVE_ALLOCA, not _HAVE_ALLOCA.
1997-10-14 22:25:02 +00:00
Jim Meyering
cb3a4594b9 . 1997-10-14 22:15:31 +00:00
Jim Meyering
a1796c88cb . 1997-10-14 22:15:06 +00:00
Jim Meyering
ed63af49a2 Add tests to exercise fraccompare. 1997-10-14 22:14:48 +00:00
Jim Meyering
e1927c2248 . 1997-10-14 22:09:59 +00:00
Jim Meyering
0fa42caea6 (CHARS_IN_ABM): Remove definition
(inittables): Remove assumption that all abbreviated month names have
length 3.
(getmonth): Likewise.
(main): Add #if's for more efficient code when using the GNU C library.
From Ulrich Drepper.
1997-10-14 21:36:33 +00:00
Jim Meyering
69c54c088c tweak Orn's fraccompare. Always use it. 1997-10-14 20:41:28 +00:00
Jim Meyering
bf5606ff49 (fraccompare): Indent.
Move dcls of S and N into if block.
1997-10-14 14:12:48 +00:00
Jim Meyering
3f7506491b fix spelling errors in comments 1997-10-14 13:47:22 +00:00
Jim Meyering
8c96da80b0 (keycompare): Move assignment out of if-expression. 1997-10-14 13:40:51 +00:00
Jim Meyering
df3a123e85 (strncoll): Rename parameter to LEN.
Clean up formatting.
Add a FIXME.
1997-10-14 13:37:35 +00:00
Jim Meyering
8b924d2318 *** empty log message *** 1997-10-14 13:08:06 +00:00
Jim Meyering
7fff797d97 Declare xstrdup.
(my_setlocale): New function.
(main): Guard against failure of strdup (use xstrdup) and setlocale.
1997-10-14 13:07:12 +00:00
Jim Meyering
42a2bc2846 (STREQ): Remove definition. 1997-10-14 12:50:28 +00:00
Jim Meyering
b2ff7dd7c5 [patch from Orn]
(look_for_fraction): Eliminate arbitrary limit on
number of `groups'.  Declare as void, not int.
Patch from rn E. Hansen.
(main): When determining whether we're in the C or POSIX locale,
don't rely on the form of the string returned by setlocale.
Suggestion from Ulrich Drepper.
1997-10-14 12:19:09 +00:00
Jim Meyering
27c0b63dfc apply one more piece from KBs patch 1997-10-13 23:09:15 +00:00
Jim Meyering
588d5520d6 expr reorg from KB 1997-10-13 21:59:27 +00:00
Jim Meyering
1f96e81489 *** empty log message *** 1997-10-13 14:08:51 +00:00
Jim Meyering
a41c38cb7d Bracket inclusion of termios.h with #ifdef HAVE_TERMIOS_H.
Masami Takikawa reported that this is necessary on NeXTStep 3.0 systems.
1997-10-13 14:08:38 +00:00
Jim Meyering
c4aa5c4df7 *** empty log message *** 1997-10-13 14:07:31 +00:00
Jim Meyering
2c32c6a11a eliminate a comma expr,
fix one func return type
eliminate `* 1'
1997-10-13 04:02:42 +00:00
Jim Meyering
b01df13c39 (NLS_MAP): Remove unused definitions.
Replace with uses of UCHAR.
(nls_locale_map): Remove dcl of unused file-scope array.
1997-10-13 03:52:35 +00:00
Jim Meyering
3616231d94 (NLS_MEMCMP): Define.
(keycompare): Use it instead of open-coded #ifdefs.
(compare): Likewise.
1997-10-13 03:48:58 +00:00
Jim Meyering
b7e7317be0 indent and clean up some more 1997-10-13 03:37:16 +00:00
Jim Meyering
045d8da585 Indent some more.
#ifdef ENABLE_NLS th NLS part of insertkey.
1997-10-13 03:26:39 +00:00
Jim Meyering
0ac3a6acde indent and add FIXME comments 1997-10-13 03:12:17 +00:00
Jim Meyering
9ee502b57d filter through cppi 1997-10-13 02:08:30 +00:00
Jim Meyering
79bfec7ced Apply big patch from rn E. Hansen. 1997-10-13 02:08:01 +00:00
Jim Meyering
168acf8b9c . 1997-10-10 21:22:33 +00:00
Jim Meyering
eed785a714 . 1997-10-10 21:22:01 +00:00
Jim Meyering
a9e92e39a3 . 1997-10-10 21:21:04 +00:00
Jim Meyering
ee9b6aa2e5 *** empty log message *** 1997-10-10 21:20:45 +00:00
Jim Meyering
d7f5a724ca Add a test.
From William Lewis.
1997-10-10 21:20:27 +00:00
Jim Meyering
b9b4d6b169 *** empty log message *** 1997-10-08 14:24:32 +00:00
Jim Meyering
3d6090e6f7 *** empty log message *** 1997-10-07 23:59:21 +00:00
Jim Meyering
3ea2606e41 indent cpp directives to reflect nesting 1997-10-07 23:58:29 +00:00
Jim Meyering
3f3f566627 update bug-reporting address 1997-10-07 23:55:52 +00:00
Jim Meyering
05bbdbd786 update bug-reporting address 1997-10-07 23:53:36 +00:00
Jim Meyering
54abd85010 update bug-reporting address 1997-10-07 23:53:10 +00:00
Jim Meyering
5db3c9bdb4 update bug-reporting address 1997-10-07 23:51:39 +00:00
Jim Meyering
45e8ddd2c9 . 1997-10-07 22:08:55 +00:00
Jim Meyering
e5549867e2 change verbose messages 1997-10-06 13:30:14 +00:00
Jim Meyering
2e1d300fe5 (usage): Add a line describing --verbose. 1997-10-06 13:09:28 +00:00
Jim Meyering
4e3811ecb7 *** empty log message *** 1997-10-06 13:07:47 +00:00
Jim Meyering
40fa6cc699 (make_path): Print verbose message using fprintf, not error. 1997-10-06 13:07:14 +00:00
Jim Meyering
7a4cc2dff1 (make_path): Print message IFF the directory was
just created and the format string is non-NULL.
1997-10-06 13:03:29 +00:00
Jim Meyering
b6bc4c265e *** empty log message *** 1997-10-06 05:32:54 +00:00
Jim Meyering
f8265dd3d8 *** empty log message *** 1997-10-06 05:25:59 +00:00
Jim Meyering
48f0a08332 fix braino 1997-10-06 05:23:49 +00:00
Jim Meyering
c8eb28c84b . 1997-10-06 05:04:16 +00:00
Jim Meyering
e13ae8ea54 (noinst_HEADERS): Add savedir.h. 1997-10-06 05:04:11 +00:00
Jim Meyering
947713c68b . 1997-10-06 04:58:33 +00:00
Jim Meyering
7bff8c9b50 (struct cp_options): New field: require_preserve. 1997-10-06 04:58:26 +00:00
Jim Meyering
eb2947bbbd (cp_option_init): Initialize it.
(main): Set to 1 for -a and for -p.
1997-10-06 04:58:05 +00:00
Jim Meyering
fe12b67113 (copy_internal): Use require_preserve. 1997-10-06 04:57:40 +00:00
Jim Meyering
22a4f828db . 1997-10-04 01:57:39 +00:00
Jim Meyering
03ae2c6b97 Remove old-style savedir dcl.
Include savedir.h for prototype.
1997-10-04 01:57:12 +00:00
Jim Meyering
3445d47a10 Remove old-style savedir dcl.
Include savedir.h for prototype.
1997-10-04 01:56:23 +00:00
Jim Meyering
a3ce4b756d *** empty log message *** 1997-10-04 01:55:11 +00:00
Jim Meyering
5873623fd5 (savedir): Declare DIR parameter to be const.
Include savedir.h.
1997-10-04 01:43:58 +00:00
Jim Meyering
a1faaa73d3 . 1997-10-04 01:43:13 +00:00
Jim Meyering
792a091d75 . 1997-10-03 03:28:05 +00:00
Jim Meyering
f76c31d4cd *** empty log message *** 1997-10-03 03:26:20 +00:00
Jim Meyering
e762d8ee73 (test_vector): Remove _%Z from test `9'.
The timezone string was too system dependent.
1997-10-03 03:26:01 +00:00
Jim Meyering
a8cf858306 (fspec_init_dp): Use DTTOIF. Fix syntax error in code
that gets compiled on BSDI3.0 systems.
1997-10-03 02:44:33 +00:00
Jim Meyering
20694b3960 *** empty log message *** 1997-09-30 04:33:59 +00:00
Jim Meyering
0b26f06ded . 1997-09-30 04:32:56 +00:00
Jim Meyering
5bdecc6cc7 . 1997-09-30 04:29:50 +00:00
Jim Meyering
d24d45b2b4 . 1997-09-30 04:29:22 +00:00
Jim Meyering
65ad25c5dc . 1997-09-30 04:19:40 +00:00
Jim Meyering
a84d00ebd3 . 1997-09-30 04:19:04 +00:00
Jim Meyering
40dfaeed5c *** empty log message *** 1997-09-28 16:33:22 +00:00
Jim Meyering
de2517a1f4 (remove_dir): Update old comment. 1997-09-28 03:51:00 +00:00
Jim Meyering
4a32d010ef [enum RM_status]: Remove `= 2'. Add comment.
(dir_stack): Describe.
(remove_file): Revert s/fprintf/error/ change.  We don't want newlines at
end of prompt strings.
(remove_dir): Likewise.
1997-09-28 03:47:53 +00:00
Jim Meyering
3fca18930e . 1997-09-28 02:40:17 +00:00
Jim Meyering
02ade899f9 Integrate test to detect bug in memcmp from the
Next x86 OpenStep C library.  Test program from William Lewis.
1997-09-28 02:32:26 +00:00
Jim Meyering
3e90df41a9 tweak comment 1997-09-27 23:45:54 +00:00
Jim Meyering
a25003439a . 1997-09-27 23:24:39 +00:00
Jim Meyering
7899ec4a2b *** empty log message *** 1997-09-27 23:24:27 +00:00
Jim Meyering
dd3edcb414 . 1997-09-25 12:59:56 +00:00
Jim Meyering
b7bfc2d2a2 Make echo conform to POSIX. By default, don't
interpret backslash escape sequences.
[V9_DEFAULT]: Don't #define.
(usage): Document -e option.
(main): Recognize options iff POSIXLY_CORRECT is not set.
From Bruno Haible.
1997-09-25 12:58:50 +00:00
Jim Meyering
9177f974da *** empty log message *** 1997-09-22 12:00:10 +00:00
Jim Meyering
77e927d501 od's new z format 1997-09-22 05:00:50 +00:00
Jim Meyering
aa298d7bbe [struct tspec] (hexl_mode_trailer): Rename from `trailer.'
(dump_hexl_mode_trailer): Rename from dump_string_trailer.
Use fputs and putchar instead of trivial or %-less printfs.
(decode_one_format): Parenthesize each field_width assignment in an
argument list to make the side effect a little more apparent.
(write_block): Use fputs and putchar instead of trivial or %-less printfs.
(dump_strings): Cast string_min to off_t to avoid long-standing warning.
1997-09-22 04:59:57 +00:00
Jim Meyering
f1e4f5cf82 Patch from John Kodis. 1997-09-21 20:23:58 +00:00
Jim Meyering
3f11fc8041 . 1997-09-21 13:24:12 +00:00
Jim Meyering
535135e826 *** empty log message *** 1997-09-21 13:22:37 +00:00
Jim Meyering
89d48552da (IN_CTYPE_DOMAIN): Define.
(ISSPACE): Guard with IN_CTYPE_DOMAIN.
(ISDIGIT): Guard with IN_CTYPE_DOMAIN.
(TOUPPER): Guard with IN_CTYPE_DOMAIN.
From Bruno Haible.
1997-09-21 13:22:20 +00:00
Jim Meyering
29becc72ac (IN_CTYPE_DOMAIN): Define.
(ISSPACE): Define.
(ISDIGIT): Define.
(TOLOWER): Define.
1997-09-21 13:19:19 +00:00
Jim Meyering
99e8d1ac51 (IN_CTYPE_DOMAIN): Define.
(ISSPACE): Define.
(readname): Use ISSPACE, not isspace.
1997-09-21 13:15:48 +00:00
Jim Meyering
0ea3fb3c07 *** empty log message *** 1997-09-21 04:55:06 +00:00
Jim Meyering
7449936903 (libfu_a_SOURCES): Use hash.c, not oa-hash.c.
(noinst_HEADERS): Use hash.h, not oa-hash.h.
1997-09-21 04:54:52 +00:00
Jim Meyering
004c583882 *** empty log message *** 1997-09-21 04:53:29 +00:00
Jim Meyering
fc802521f3 Use hash.c (chaining) functions, not those of oa-hash.c
(open addressing).  The latter implementation is wonderful when
deletions are rare, but doen't support the frequent deletions
required to implement the active directory set.
1997-09-21 04:53:14 +00:00
Jim Meyering
2e1922942c (hash_free_0): Remove prototype.
Move function to precede first use.
1997-09-21 04:41:19 +00:00
Jim Meyering
2dd7796da0 (ZALLOC): Take Ht parameter instead of relying on one being in scope. 1997-09-20 19:38:29 +00:00
Jim Meyering
20539121db *** empty log message *** 1997-09-20 19:33:46 +00:00
Jim Meyering
daeaff8c14 *** empty log message *** 1997-09-20 19:33:05 +00:00
Jim Meyering
e760bf3708 *** empty log message *** 1997-09-20 18:32:40 +00:00
Jim Meyering
5f20a181aa . 1997-09-17 17:06:52 +00:00
Jim Meyering
2fef57672b use malloc, not xmalloc in obstack #define
use Uli's prime code, not near-prime
(hash_initialize): don't require prime table size as input
(hash_insert_if_absent): When rehashing, choose new size that is 2N+1, not 2N.
1997-09-17 17:06:26 +00:00
Jim Meyering
bba93bb711 use HASH_H, not _hash_h_ in #ifndef
fix comment: hash_rehash does *not* use hash_key_freer
(HASH_INSERT_NEW_ITEM): Take new arg: Failp.
1997-09-17 17:04:21 +00:00
Jim Meyering
fa1ece2973 from ti/hdlsv 1997-09-17 16:03:32 +00:00
Jim Meyering
4d09de4e63 (main): Call parse_long_options only if POSIXLY_CORRECT
is *not* set.  Reported by Frank T Lofaro.
1997-09-17 13:04:31 +00:00
Jim Meyering
95343e720d *** empty log message *** 1997-09-17 13:04:19 +00:00
Jim Meyering
96c7801048 *** empty log message *** 1997-09-17 13:03:53 +00:00
Jim Meyering
85f74e093b *** empty log message *** 1997-09-17 12:58:45 +00:00
Jim Meyering
ddc44210a4 update from FSF .../copies 1997-09-17 12:46:45 +00:00
Jim Meyering
e52535af00 *** empty log message *** 1997-09-16 20:03:02 +00:00
Jim Meyering
3a0056aa09 . 1997-09-16 19:59:02 +00:00
Jim Meyering
3e9c67e385 tweak message strings 1997-09-15 18:46:42 +00:00
Jim Meyering
821279c98b tweak message strings 1997-09-15 18:45:47 +00:00
Jim Meyering
312d78eca6 (install_handler): Rename from sig_handler. 1997-09-15 14:18:15 +00:00
Jim Meyering
6a4773b2d9 *** empty log message *** 1997-09-15 14:17:42 +00:00
Jim Meyering
c9b7235ea0 *** empty log message *** 1997-09-15 14:13:37 +00:00
Jim Meyering
942ecc6d94 *** empty log message *** 1997-09-15 14:11:35 +00:00
Jim Meyering
2c53930cbb *** empty log message *** 1997-09-15 14:11:02 +00:00
Jim Meyering
dc0e1d4cb5 . 1997-09-15 14:03:35 +00:00
Jim Meyering
5b421e3103 *** empty log message *** 1997-09-15 14:03:23 +00:00
Jim Meyering
c2bbb8e875 (do_link): Perform S_ISLNK test only if lstat succeeded. 1997-09-15 14:02:47 +00:00
Jim Meyering
1822e3bd68 declare malloc 1997-09-15 13:26:09 +00:00
Jim Meyering
b4204ff74c (remove_cwd_entries): Don't free entries -- they're alloca'd, now. 1997-09-15 13:24:43 +00:00
Jim Meyering
45853bf653 Use memcpy, not stpncpy. This fixes a UMR. 1997-09-15 12:34:25 +00:00
Jim Meyering
ee62735854 . 1997-09-15 04:11:30 +00:00
Jim Meyering
370d12c241 . 1997-09-15 03:59:24 +00:00
Jim Meyering
a3576f081b *** empty log message *** 1997-09-15 03:58:06 +00:00
Jim Meyering
425f0215f8 *** empty log message *** 1997-09-15 03:57:04 +00:00
Jim Meyering
eaa1924e36 Write implementation overview. 1997-09-15 03:56:19 +00:00
Jim Meyering
e33f73ba8d remove obsolete comment 1997-09-15 03:31:42 +00:00
Jim Meyering
e01071c1d7 tweak comment 1997-09-15 03:24:03 +00:00
Jim Meyering
6d77a9d346 (full_filename): Use realloc, not xrealloc. 1997-09-15 03:23:12 +00:00
Jim Meyering
f5be07c5c7 *** empty log message *** 1997-09-15 03:21:40 +00:00
Jim Meyering
2adf9f295e . 1997-09-15 03:21:35 +00:00
Jim Meyering
bf886f22b7 . 1997-09-15 03:20:53 +00:00
Jim Meyering
cb92ddeb53 (EXTRA_DIST): Add realloc.m4. 1997-09-15 03:20:45 +00:00
Jim Meyering
ddbf490eb4 (EXTRA_DIST): Add realloc.c. 1997-09-15 03:19:52 +00:00
Jim Meyering
8dae34819a . 1997-09-14 17:43:43 +00:00
Jim Meyering
5a74e8ae4e (equal): Use STREQ (form system.h) instead.
(siginfo_handler): New function to handle SIGINFO/SIGUSR1.
(handle_sig): New function.
(main): Use handle_sig instead of open-coding it.
Handle SIGINFO (or SIGUSR1 if that's not defined).
(print_stats): Move definition to precede first reference.
Remove prototype.
1997-09-14 17:42:33 +00:00
Jim Meyering
ac1bb837ca *** empty log message *** 1997-09-14 16:25:33 +00:00
Jim Meyering
686c105caa *** empty log message *** 1997-09-14 16:24:35 +00:00
Jim Meyering
cb628f9be3 Don't include signal.h. 1997-09-14 16:24:17 +00:00
Jim Meyering
cc76a774e3 . 1997-09-14 16:04:48 +00:00
Jim Meyering
9aef26e3d0 (main) [--traditional]: Don't give diagnostic about there
being more than three arguments if there are *no* arguments specified.
Reported by Jochen Hein.
1997-09-14 16:03:58 +00:00
Jim Meyering
c2210482ee *** empty log message *** 1997-09-14 16:03:23 +00:00
Jim Meyering
fe57800e4c . 1997-09-14 04:18:48 +00:00
Jim Meyering
d5f56f9cd7 (struct col_info) [valid_len]: Rename from `valid' which conflicted
with the macro in locale.h of SunOS4.1.4.
1997-09-14 04:16:37 +00:00
Jim Meyering
22c2c69da4 (print_horizontal): Add some non-essential curly braces. 1997-09-14 04:08:52 +00:00
Jim Meyering
d9f0902259 (print_many_per_line): Add some non-essential curly braces. 1997-09-14 04:07:28 +00:00
Jim Meyering
f61c317736 *** empty log message *** 1997-09-14 03:49:47 +00:00
Jim Meyering
aa8336c08f *** empty log message *** 1997-09-14 03:48:17 +00:00
Jim Meyering
548bd7cf11 s/__inline/inline/. 1997-09-14 03:41:26 +00:00
Jim Meyering
b208989a75 (PARAMS): Define.
(rm): Guard prototype in forward dcl with PARAMS.
1997-09-14 03:39:26 +00:00
Jim Meyering
849a724b76 (PARAMS): Define.
Guard prototype with PARAMS.
1997-09-14 03:36:38 +00:00
Jim Meyering
12c9be75c3 *** empty log message *** 1997-09-14 03:36:21 +00:00
Jim Meyering
322a087077 *** empty log message *** 1997-09-14 03:32:59 +00:00
Jim Meyering
230bf922dd [HAVE_CONFIG_H]: Include config.h. 1997-09-14 03:32:09 +00:00
Jim Meyering
1778193988 Use 1' not +1' -- some compilers (sunos' cc) can't parse it. 1997-09-14 03:22:39 +00:00
Jim Meyering
85bb9aba83 [HAVE_CONFIG_H]: Include config.h. 1997-09-14 03:20:38 +00:00
Jim Meyering
3e8068282b Include config.h. 1997-09-14 03:12:35 +00:00
Jim Meyering
f8356568bd . 1997-09-14 02:27:14 +00:00
Jim Meyering
fced145a6f . 1997-09-14 02:21:09 +00:00
Jim Meyering
75b17ba951 Add tests 19a and 19b. 1997-09-14 02:20:55 +00:00
Jim Meyering
76bf15f3f5 . 1997-09-14 02:19:38 +00:00
Jim Meyering
9610d3daa9 . 1997-09-14 02:19:15 +00:00
Jim Meyering
1b868e164e *** empty log message *** 1997-09-14 02:02:14 +00:00
Jim Meyering
561028f4ac merge from rm-fix branch 1997-09-14 02:00:48 +00:00
Jim Meyering
ea05c547f4 *** empty log message *** 1997-09-11 15:47:49 +00:00
Jim Meyering
16f5d0a11b Add new option: --verbose (-v).
From Andreas Schwab.
1997-09-11 15:45:20 +00:00
Jim Meyering
85925f6fe8 *** empty log message *** 1997-09-05 02:14:21 +00:00
Jim Meyering
a72c09608f . 1997-09-02 05:00:43 +00:00
Jim Meyering
163218e095 *** empty log message *** 1997-09-02 04:58:33 +00:00
Jim Meyering
7f519808bb (EXTRA_DIST): Remove mvdir.c and rmdir.c.
Add lstat.c and stat.c.
1997-09-02 04:58:17 +00:00
Jim Meyering
eb5eb4b184 . 1997-09-02 04:57:10 +00:00
Jim Meyering
30e5bc03f5 *** empty log message *** 1997-09-02 04:29:38 +00:00
Jim Meyering
08774a1668 *** empty log message *** 1997-09-02 02:16:28 +00:00
Jim Meyering
c08bc8f748 update from libc 1997-09-02 02:15:10 +00:00
Jim Meyering
90df7a344e *** empty log message *** 1997-09-02 02:09:01 +00:00
Jim Meyering
156f60ff68 (EXTRA_DIST): Add stat.m4. 1997-09-02 02:08:52 +00:00
Jim Meyering
b3dd93b242 . 1997-09-02 02:07:40 +00:00
Jim Meyering
2d93d34275 [!STDC_HEADERS]: Declare malloc. 1997-09-02 01:51:39 +00:00
Jim Meyering
262b5c6bb6 . 1997-09-02 01:46:30 +00:00
Jim Meyering
dbc71f8be4 *** empty log message *** 1997-09-01 20:44:46 +00:00
Jim Meyering
84de13d6fe *** empty log message *** 1997-09-01 20:43:47 +00:00
Jim Meyering
f59116179b *** empty log message *** 1997-09-01 20:32:07 +00:00
Jim Meyering
ba1852e6f1 (do_link): Form destination file name (when DEST is a directory) before
checking whether SOURCE and DEST are the same file.
1997-09-01 20:31:00 +00:00
Jim Meyering
3f27c2b654 update gettext-0.31 1997-09-01 20:27:07 +00:00
Jim Meyering
fbd9c922b4 . 1997-09-01 20:25:23 +00:00
Jim Meyering
2d87c8508a *** empty log message *** 1997-09-01 20:23:34 +00:00
Jim Meyering
9d07e1de5c . 1997-09-01 20:08:08 +00:00
Jim Meyering
8188297c46 . 1997-09-01 16:30:41 +00:00
Jim Meyering
7515c4a994 *** empty log message *** 1997-09-01 02:36:48 +00:00
Jim Meyering
da4376bb23 . 1997-09-01 02:15:13 +00:00
Jim Meyering
173606dfc6 Describe who's --lookup option. 1997-09-01 02:12:18 +00:00
Jim Meyering
3d061807bb *** empty log message *** 1997-09-01 02:09:17 +00:00
Jim Meyering
bb22f10c37 (main): New option --lookup (-l).
(print_entry): Only call canon_host if user explicitly asks for it.
(usage): Describe --lookup.
From Galen Hazelwood.
1997-09-01 02:08:58 +00:00
Jim Meyering
4aa3cfc3db *** empty log message *** 1997-08-31 22:19:30 +00:00
Jim Meyering
fe531f25e6 *** empty log message *** 1997-08-31 22:17:25 +00:00
Jim Meyering
8a788f502e . 1997-08-31 22:15:57 +00:00
Jim Meyering
a98be62643 tweak comment 1997-08-31 22:10:46 +00:00
Jim Meyering
c0270058fe *** empty log message *** 1997-08-31 22:09:54 +00:00
Jim Meyering
f5d34cdce9 (change_file_group): Call describe_change with a 3-state argument.
(describe_change): Report whether the operation was successful,
a failure, or that the request was a no-op.
Before, running `chown --verb bin /' as non-root reported
  group of / changed to bin
  chgrp: you are not a member of group `bin': Not owner
1997-08-31 22:07:53 +00:00
Jim Meyering
72bf7437cb (change_file_owner): Call describe_change with a 3-state argument.
(describe_change): Report whether the operation was successful,
a failure, or that the request was a no-op.
Before, running `chown --verb bin /' as non-root reported
  owner of / changed to bin
  chown: /: Not owner
1997-08-31 22:06:10 +00:00
Jim Meyering
7d6f2ec75d . 1997-08-31 21:25:29 +00:00
Jim Meyering
2e828fa1eb . 1997-08-31 21:24:49 +00:00
Jim Meyering
13bbc7d111 *** empty log message *** 1997-08-31 21:22:28 +00:00
Jim Meyering
0180caa0c5 . 1997-08-31 21:22:13 +00:00
Jim Meyering
5ca242d9a0 *** empty log message *** 1997-08-31 21:20:56 +00:00
Jim Meyering
e340982761 *** empty log message *** 1997-08-31 21:02:35 +00:00
Jim Meyering
c98bd4b9f3 *** empty log message *** 1997-08-31 21:02:10 +00:00
Jim Meyering
031bd9ac31 (EXTRA_DIST): Add lstat.m4. 1997-08-31 21:00:36 +00:00
Jim Meyering
7435d83352 . 1997-08-31 21:00:05 +00:00
Jim Meyering
ea4e209b2b . 1997-08-31 20:52:51 +00:00
Jim Meyering
a0ccfc52c8 *** empty log message *** 1997-08-31 20:42:52 +00:00
Jim Meyering
42c0f57881 add description 1997-08-31 20:08:26 +00:00
Jim Meyering
a14eed3cb2 Ifdef out dcl of now-unused nogroup_alist. 1997-08-31 18:13:56 +00:00
Jim Meyering
59e5cb3ea3 *** empty log message *** 1997-08-31 16:18:10 +00:00
Jim Meyering
377f2fbc55 . 1997-08-31 16:17:56 +00:00
Jim Meyering
e81e47663f . 1997-08-31 15:28:07 +00:00
Jim Meyering
e7d45e86d1 *** empty log message *** 1997-08-31 15:27:53 +00:00
Jim Meyering
9ecc0c5517 . 1997-08-31 15:21:13 +00:00
Jim Meyering
83e5d2b29b (libfu_a_SOURCES): Add oa-hash.c.
(noinst_HEADERS): Add oa-hash.h.
1997-08-31 15:20:57 +00:00
Jim Meyering
fffe6020aa *** empty log message *** 1997-08-31 13:10:35 +00:00
Jim Meyering
e7eb4ca699 . 1997-08-31 13:09:27 +00:00
Jim Meyering
e5c36df55c (EXTRA_DIST): Add d-ino.m4 and d-type.m4. 1997-08-31 13:09:01 +00:00
Jim Meyering
0f3d7f59a9 [!STDC_HEADERS]: Declare malloc. 1997-08-31 13:00:00 +00:00
Jim Meyering
c3cdbb8d3f (change_file_mode): Call describe_change with a 3-state argument.
(describe_change): Report whether the operation was successful,
a failure, or that the request was a no-op.
Before, running `chmod --verb u-r /' as non-root reported
  mode of / changed to 0355 (-wxr-xr-x)
  chmod: /: Not owner
Reported by Philippe Schnoebelen <phs@hobbes.fing.edu.uy>
1997-08-31 12:57:15 +00:00
Jim Meyering
2a1bb90a7e *** empty log message *** 1997-08-31 12:54:14 +00:00
Jim Meyering
2f1095be00 *** empty log message *** 1997-08-31 12:36:07 +00:00
Jim Meyering
72a9275f65 *** empty log message *** 1997-08-24 21:06:00 +00:00
Jim Meyering
92715a3867 . 1997-08-24 20:56:13 +00:00
Jim Meyering
4a3c8c53e3 *** empty log message *** 1997-08-24 20:55:56 +00:00
Jim Meyering
1f3b5a3dd8 *** empty log message *** 1997-08-24 20:51:07 +00:00
Jim Meyering
a1d61ec70e *** empty log message *** 1997-08-24 20:50:16 +00:00
Jim Meyering
c83761c759 . 1997-08-24 20:42:54 +00:00
Jim Meyering
88eb1da1da . 1997-08-24 20:30:06 +00:00
Jim Meyering
6b099582bd . 1997-08-24 19:18:03 +00:00
Jim Meyering
fada8884a3 update from glibc 1997-08-22 14:55:01 +00:00
Jim Meyering
2fc81ec762 . 1997-08-18 20:03:36 +00:00
Jim Meyering
b5ef7a4be7 (show_date): Don't hang if strftime produces an empty string. 1997-08-18 19:50:35 +00:00
Jim Meyering
41347fc40e *** empty log message *** 1997-08-16 17:41:45 +00:00
Jim Meyering
2bd0aa26c2 *** empty log message *** 1997-08-16 17:40:57 +00:00
Jim Meyering
962cb92146 *** empty log message *** 1997-08-16 17:39:59 +00:00
Jim Meyering
db00e4acb1 *** empty log message *** 1997-08-16 16:41:15 +00:00
Jim Meyering
754478c6f5 . 1997-08-16 16:40:55 +00:00
Jim Meyering
caa34fb806 . 1997-08-16 12:25:56 +00:00
Jim Meyering
aad3038b71 (mode_create_from_ref): Remove dcl of unused local, I. 1997-08-03 20:28:45 +00:00
Jim Meyering
a4def0664d . 1997-08-03 17:53:25 +00:00
Jim Meyering
8075bc7e8a s/\<_ (/_(/g 1997-08-03 02:49:43 +00:00
Jim Meyering
c710dafd38 . 1997-08-03 02:07:58 +00:00
Jim Meyering
dc16b600a5 *** empty log message *** 1997-08-03 02:07:26 +00:00
Jim Meyering
c091f9835b indent 1997-08-03 02:04:28 +00:00
Jim Meyering
6993b5780b . 1997-08-03 01:54:34 +00:00
Jim Meyering
6e08ff4f71 *** empty log message *** 1997-08-02 17:36:07 +00:00
Jim Meyering
6df8557d33 . 1997-08-02 17:32:04 +00:00
Jim Meyering
9608d12c39 *** empty log message *** 1997-08-02 17:31:01 +00:00
Jim Meyering
dd9b964694 *** empty log message *** 1997-08-02 17:21:18 +00:00
Jim Meyering
b8f7d0087d *** empty log message *** 1997-08-02 17:20:39 +00:00
Jim Meyering
70611589b3 . 1997-08-02 17:10:12 +00:00
Jim Meyering
94c7a45d8e *** empty log message *** 1997-08-02 16:51:37 +00:00
Jim Meyering
9a012ca907 . 1997-08-02 15:29:55 +00:00
Jim Meyering
9bb6fc54aa . 1997-08-02 15:25:25 +00:00
Jim Meyering
eb1e691d00 . 1997-08-02 15:23:59 +00:00
Jim Meyering
45764b9af2 Remove @code{} from node names. 1997-07-30 16:31:56 +00:00
Jim Meyering
fb1e26800f . 1997-07-29 03:08:13 +00:00
Jim Meyering
910502b044 Add new option: --reference=FILE. 1997-07-29 03:05:45 +00:00
Jim Meyering
2ff9982e42 Add new option: --reference=FILE. 1997-07-29 03:04:58 +00:00
Jim Meyering
f6e8b41a5f (mode_create_from_ref): Don't use umask.
Don't use MODE_X_IF_ANY_X.
1997-07-29 03:03:49 +00:00
Jim Meyering
42e5deb36c (usage): tweak -p descr 1997-07-29 02:55:45 +00:00
Jim Meyering
8bff24291a *** empty log message *** 1997-07-29 02:30:55 +00:00
Jim Meyering
16340bfef0 . 1997-07-29 02:30:34 +00:00
Jim Meyering
fa5f24c4c6 *** empty log message *** 1997-07-29 02:06:33 +00:00
Jim Meyering
b78d012e9d Declare pointer parameters const as appropriate. 1997-07-29 02:06:25 +00:00
Jim Meyering
43e8e1245e (main): New option --preserve-timestamps (-p).
(install_file_in_file): Change timestamps if requested.
(change_timestamps): New function.
(usage): Describe --preserve-timestamps.
Correct --mode description.
From Galen Hazelwood.
1997-07-29 01:57:24 +00:00
Jim Meyering
8569f8ffa9 replace with new version from libc 1997-07-26 02:55:14 +00:00
Jim Meyering
821c3f6fda use Cambridge, Mass example, not Azores one 1997-07-25 12:47:34 +00:00
Jim Meyering
e36d0b9d89 big patch from Paul Eggert 1997-07-25 12:43:58 +00:00
Jim Meyering
720e3dc89a *** empty log message *** 1997-07-22 01:37:42 +00:00
Jim Meyering
4fcb103952 *** empty log message *** 1997-07-22 01:36:06 +00:00
Jim Meyering
a267b98f43 *** empty log message *** 1997-07-22 01:27:45 +00:00
Jim Meyering
afc73d862b (parse_obsolescent_option): #ifdef-out portability warning. 1997-07-22 01:26:35 +00:00
Jim Meyering
9a1113585f *** empty log message *** 1997-07-22 01:16:55 +00:00
Jim Meyering
f1ee29eac3 (checkfp): tweak comment 1997-07-19 15:08:53 +00:00
Jim Meyering
1bc1e233ca *** empty log message *** 1997-07-19 15:05:08 +00:00
Jim Meyering
dddf0d13df (checkfp): Print the `disorder' message. Include both
the number and the contents of the first out-of-order line, in addition
to the file name.  Change meaning of return value.
(check): Don't print disorder message here.
Adjust test of checkfp's return value.
Feature suggestion from Karl Heuer.
1997-07-19 15:04:59 +00:00
Jim Meyering
b9551de86a *** empty log message *** 1997-07-19 15:02:19 +00:00
Jim Meyering
5bd6c2209a *** empty log message *** 1997-07-19 13:38:57 +00:00
Jim Meyering
08bc7404bc This means that if multiple users are given on the command line, the
error return code is that of the last, so earlier failures can't be
detected.
1997-07-16 13:46:53 +00:00
Jim Meyering
78b6253dea *** empty log message *** 1997-07-16 12:55:40 +00:00
Jim Meyering
10055f8398 *** empty log message *** 1997-07-16 12:55:05 +00:00
Jim Meyering
1a91d3ecc2 *** empty log message *** 1997-07-16 12:52:00 +00:00
Jim Meyering
74ed7c9f94 Exit with status from `id' command.
Don't print `$name : $groups' if id fails.
Reported by Austin Donnelly.
1997-07-16 12:49:36 +00:00
Jim Meyering
f46c35a744 *** empty log message *** 1997-07-15 14:12:45 +00:00
Jim Meyering
f574936f77 correct cpp-indentation 1997-07-15 14:05:07 +00:00
Jim Meyering
8abf2733e0 Merge with FSF. 1997-07-15 14:03:22 +00:00
Jim Meyering
8c6a8c7743 tweak again 1997-07-14 18:32:12 +00:00
Jim Meyering
197d78d428 new version from kb, with patch 1997-07-14 18:15:50 +00:00
Jim Meyering
64c3a36a0e . 1997-07-14 15:43:25 +00:00
Jim Meyering
bf72a762d8 . 1997-07-14 15:42:30 +00:00
Jim Meyering
78364faa8b . 1997-07-14 15:42:10 +00:00
Jim Meyering
92435ee51b . 1997-07-14 15:37:48 +00:00
Jim Meyering
589e18a1f7 Tweak new examples based on Karl B.s suggestions. 1997-07-14 14:41:16 +00:00
Jim Meyering
566451e5be remove fixme 1997-07-13 23:37:57 +00:00
Jim Meyering
8ea7459457 (EXTRA_DIST): Remove explicit mention of texinfo.texi.
Now, automake includes it automatically.
1997-07-13 23:20:39 +00:00
Jim Meyering
3a58489962 . 1997-07-13 23:03:49 +00:00
Jim Meyering
3ef794ff5f turn off losing tests 1997-07-13 23:03:31 +00:00
Jim Meyering
e30da6776c *** empty log message *** 1997-07-13 22:50:19 +00:00
Jim Meyering
a33a897f29 *** empty log message *** 1997-07-13 22:49:39 +00:00
Jim Meyering
f43d9ab8a6 *** empty log message *** 1997-07-13 22:06:36 +00:00
Jim Meyering
8acf7844dc *** empty log message *** 1997-07-13 22:04:17 +00:00
Jim Meyering
a3adba60c8 . 1997-07-13 21:59:43 +00:00
Jim Meyering
25ec733e8d Include xstrtoul.h.
Remove global variable, unit_size.
(atou): Remove now-unused function.
(parse_unit): Likewise.
(string_to_ull): New function.
(head): Take new parameter, count_lines.  Use it instead of unit_size.
Update callers.
(head_file): Likewise.
(main): Use string_to_ull, not atou/parse_unit.
1997-07-13 21:59:34 +00:00
Jim Meyering
08e6bd4da0 *** empty log message *** 1997-07-13 20:38:15 +00:00
Jim Meyering
7c97f17f9b *** empty log message *** 1997-07-13 20:27:15 +00:00
Jim Meyering
5b0298d2b5 . 1997-07-13 19:47:00 +00:00
Jim Meyering
7e73237bac . 1997-07-13 19:45:14 +00:00
Jim Meyering
8568fe543b . 1997-07-13 16:36:10 +00:00
Jim Meyering
1c9c4d7230 More tests -- add TZ-free equivalents. 1997-07-13 16:36:04 +00:00
Jim Meyering
3e129adac4 add ``First, a quote:'' 1997-07-13 15:08:31 +00:00
Jim Meyering
8f6f2a4cc1 don't include error.h. 1997-07-13 13:31:30 +00:00
Jim Meyering
4f110142bb *** empty log message *** 1997-07-13 04:28:05 +00:00
Jim Meyering
23497d87b7 (DISTFILES): Remove ChangeLog. 1997-07-13 04:27:57 +00:00
Jim Meyering
73f3647fe2 . 1997-07-13 04:25:15 +00:00
Jim Meyering
a305c4a189 . 1997-07-13 04:13:53 +00:00
Jim Meyering
b05ff2249b Rename lots of `this' locals.
Make some parameters `const'.
(who): Update read_utmp caller.
(search_entries): Take additional param: utmp_buf.
Update read_utmp caller.
(who_am_i): Update read_utmp caller.
1997-07-13 04:13:40 +00:00
Jim Meyering
7fe4db1451 (users): Update read_utmp caller. 1997-07-13 03:57:00 +00:00
Jim Meyering
393e4a8c36 (uptime): Update read_utmp caller. 1997-07-13 03:56:29 +00:00
Jim Meyering
aba02b5978 (PARAMS): Update prototype.
(utmp_contents): Remove dcl.
1997-07-13 03:55:38 +00:00
Jim Meyering
708d4a74de (read_utmp): Take new params: count and buffer.
Return boolean indicating failure.
Now, caller must give diagnostic upon.
1997-07-13 03:54:00 +00:00
Jim Meyering
6e1340462e Add FIXME.
indent
1997-07-13 03:13:09 +00:00
Jim Meyering
aeea923e99 indent 1997-07-13 03:10:15 +00:00
Jim Meyering
d461077920 indent 1997-07-13 03:08:45 +00:00
Jim Meyering
d0c515b45c indent 1997-07-13 03:07:36 +00:00
Jim Meyering
4b84ea8745 indent 1997-07-13 02:58:35 +00:00
Jim Meyering
51a0fa60c8 . 1997-07-13 02:54:48 +00:00
Jim Meyering
2d8c67c7d5 *** empty log message *** 1997-07-13 02:54:28 +00:00
Jim Meyering
ad0f8c9b71 (uptime): rename users to n_users 1997-07-13 02:52:58 +00:00
Jim Meyering
67fe78f11c declare xmalloc
(users): rename users to n_users
1997-07-13 02:52:24 +00:00
Jim Meyering
b18c5abf1c (who): rename users to n_users 1997-07-13 02:51:34 +00:00
Jim Meyering
59f66af0f4 . 1997-07-13 02:49:39 +00:00
Jim Meyering
4cf5b77561 . 1997-07-13 02:19:46 +00:00
Jim Meyering
65738c9162 . 1997-07-13 02:18:14 +00:00
Jim Meyering
6341f011d7 . 1997-07-13 02:17:51 +00:00
Jim Meyering
558f0fa3ea revert to previous version 1997-07-12 23:16:59 +00:00
Jim Meyering
7673378e0a *** empty log message *** 1997-07-12 23:01:17 +00:00
Jim Meyering
97fca9a840 *** empty log message *** 1997-07-12 22:56:55 +00:00
Jim Meyering
f124c131af *** empty log message *** 1997-07-12 22:55:13 +00:00
Jim Meyering
ee81a6190f *** empty log message *** 1997-07-12 22:53:07 +00:00
Jim Meyering
d1a07e1ad2 (MAYBE_SET_TZ_UTC0): New macro.
(set_tz): New function.
(batch_convert): If necessary, save the initial value of TZ and
for each date in the file, restore it before each call to get_date,
then set it to UTC0 before each show_date call.
(main): Don't set TZ before calling get_date.
Set TZ after get_date call and before show_date call.
Reported by Matthew Braun.
1997-07-12 22:52:57 +00:00
Jim Meyering
3dcfda7bda . 1997-07-12 22:32:21 +00:00
Jim Meyering
3f275a59a5 add a --file test 1997-07-12 22:32:12 +00:00
Jim Meyering
67132b480f Add a few more date examples. Prompted by question from Galen H. 1997-07-12 22:10:03 +00:00
Jim Meyering
d9921abba7 . 1997-07-12 21:59:08 +00:00
Jim Meyering
626e48dcca . 1997-07-12 21:57:51 +00:00
Jim Meyering
f1994a3f6e *** empty log message *** 1997-07-12 21:57:38 +00:00
Jim Meyering
b6a57ff354 add date2sec and sec2date from the manual 1997-07-12 21:56:35 +00:00
Jim Meyering
0e6b6d4c5c add utc-1 1997-07-12 21:07:26 +00:00
Jim Meyering
309b8c57fb *** empty log message *** 1997-07-12 20:34:34 +00:00
Jim Meyering
a3294a01b0 *** empty log message *** 1997-07-11 16:07:52 +00:00
Jim Meyering
204f6064e5 remove `minimally' 1997-07-11 16:07:29 +00:00
Jim Meyering
17ca5d8c74 remove `minimally' 1997-07-11 16:07:06 +00:00
Jim Meyering
4a2df8ccf5 new one from Karl 1997-07-11 15:27:19 +00:00
Jim Meyering
2d1baaeb31 *** empty log message *** 1997-07-10 18:30:08 +00:00
Jim Meyering
1a2964b988 *** empty log message *** 1997-07-10 18:29:27 +00:00
Jim Meyering
4170f6416d . 1997-07-10 18:25:12 +00:00
Jim Meyering
735847657b *** empty log message *** 1997-07-10 18:25:05 +00:00
Jim Meyering
8d6318c532 . 1997-07-10 17:32:31 +00:00
Jim Meyering
36df273199 . 1997-07-10 17:31:40 +00:00
Jim Meyering
1db47deedb . 1997-07-10 17:31:29 +00:00
Jim Meyering
d6bdaed4c0 . 1997-07-10 17:30:50 +00:00
Jim Meyering
1481657ca1 . 1997-07-10 17:29:09 +00:00
Jim Meyering
99f8939150 *** empty log message *** 1997-07-10 16:19:13 +00:00
Jim Meyering
45eb103e4c convert obsolescent tests to posix-style ones 1997-07-10 16:16:17 +00:00
Jim Meyering
990c0d0fad Include $0 in `wrong number of elements...' message. 1997-07-10 15:56:33 +00:00
Jim Meyering
9295c4fdca Remove $. from duplicate test name message 1997-07-10 15:56:09 +00:00
Jim Meyering
41c1791ddd *** empty log message *** 1997-07-10 15:38:43 +00:00
Jim Meyering
c8fbd48706 *** empty log message *** 1997-07-10 15:35:01 +00:00
Jim Meyering
ccd911b026 . 1997-07-10 15:34:31 +00:00
Jim Meyering
deb5b314a5 . 1997-07-10 15:26:51 +00:00
Jim Meyering
c23aa46af6 *** empty log message *** 1997-07-09 21:14:40 +00:00
Jim Meyering
8dfdbd327c . 1997-07-09 18:11:59 +00:00
Jim Meyering
49ec273bd5 . 1997-07-09 18:03:56 +00:00
Jim Meyering
b09226e1b4 *** empty log message *** 1997-07-09 18:03:12 +00:00
Jim Meyering
d68871bdec (make_path): Chdir to `/' before starting if necessary.
Call save_cwd before while loop rather than from first iteration inside it.
1997-07-09 18:02:07 +00:00
Jim Meyering
6b544d3d8a . 1997-07-09 17:57:48 +00:00
Jim Meyering
2624654a78 (strverscmp): Add `parenentheses around arithmetic in operand of |'
as suggested by gcc -Wall.
1997-07-09 15:55:41 +00:00
Jim Meyering
2d3d80a3f2 indent 1997-07-09 15:42:54 +00:00
Jim Meyering
f6ffa56bc6 fix typo in comment 1997-07-09 15:33:27 +00:00
Jim Meyering
8d71f2bb2d . 1997-07-09 15:32:31 +00:00
Jim Meyering
a9309ad872 . 1997-07-09 15:31:29 +00:00
Jim Meyering
bc1634bc1a *** empty log message *** 1997-07-09 15:30:22 +00:00
Jim Meyering
6da5f51d3a . 1997-07-09 15:28:14 +00:00
Jim Meyering
a8068a365d *** empty log message *** 1997-07-09 15:28:01 +00:00
Jim Meyering
29e0df8652 . 1997-07-09 15:21:03 +00:00
Jim Meyering
f9f695018a *** empty log message *** 1997-07-09 14:21:30 +00:00
Jim Meyering
64320d0470 . 1997-07-09 14:20:14 +00:00
Jim Meyering
5e0ce74b1d . 1997-07-09 14:18:57 +00:00
Jim Meyering
47489a5b27 *** empty log message *** 1997-07-09 14:16:44 +00:00
Jim Meyering
a5d528d3d7 *** empty log message *** 1997-07-09 14:12:13 +00:00
Jim Meyering
3358aeb5d3 . 1997-07-09 14:05:31 +00:00
Jim Meyering
bc16e65a8e *** empty log message *** 1997-07-09 14:05:22 +00:00
Jim Meyering
6bb8c4e904 Add comments. 1997-07-09 14:00:27 +00:00
Jim Meyering
89743fce5c *** empty log message *** 1997-07-08 23:20:50 +00:00
Jim Meyering
8f19e15873 *** empty log message *** 1997-07-08 23:06:36 +00:00
Jim Meyering
c2f3a114a8 *** empty log message *** 1997-07-08 23:05:32 +00:00
Jim Meyering
ba6af15f00 *** empty log message *** 1997-07-08 23:04:58 +00:00
Jim Meyering
0c073269a5 . 1997-07-08 23:00:29 +00:00
Jim Meyering
4e9441a1e7 . 1997-07-08 22:44:58 +00:00
Jim Meyering
c2b8fe4acf . 1997-07-08 22:43:38 +00:00
Jim Meyering
f3a329069e (mode_create_from_ref): New function. 1997-07-06 21:28:04 +00:00
Jim Meyering
244fb561f8 (mode_create_from_ref): Add prototype.
(MODE_MASK_ALL): New define.
(MODE_BAD_REFERENCE): New define.
1997-07-06 21:27:44 +00:00
Jim Meyering
2cd9474cb6 (getuidbyname): Declare parameter to be const.
(getgidbyname): Declare parameter to be const.
1997-07-06 21:27:07 +00:00
Jim Meyering
abd1bad4b6 (noinst_HEADERS): Add strverscmp.h. 1997-07-06 21:25:57 +00:00
Jim Meyering
f066a3acfe . 1997-07-06 21:25:19 +00:00
Jim Meyering
83c3f08048 declare stpcpy 1997-07-06 21:24:10 +00:00
Jim Meyering
d0caad54ae Add new option: --sort=version (-v). 1997-07-06 21:23:42 +00:00
Jim Meyering
f873ad6e6c (libfu_a_SOURCES): Add strverscmp.c.
(noinst_HEADERS): Add strverscmp.h.
1997-07-06 14:47:50 +00:00
Jim Meyering
0c5e6d93cd *** empty log message *** 1997-07-06 13:52:12 +00:00
Jim Meyering
2b0ecc7fa5 (print_long_format): Reflect changes in semantics of getuser, getgroup. 1997-07-06 13:51:16 +00:00
Jim Meyering
afe6283539 (getuser): Return NULL (rather than stringified uid) upon lookup failure.
(getgroup): Likewise.
(getuidbyname) [NOT_USED]: #ifdef-out unused function.
(getgidbyname) [NOT_USED]: #ifdef-out unused function.
1997-07-06 13:50:29 +00:00
Jim Meyering
0735c835a9 Change some #ifdef to #if.
Indent a cpp directive.
1997-07-06 11:57:38 +00:00
Jim Meyering
a1cf1abf4d *** empty log message *** 1997-07-05 22:52:33 +00:00
Jim Meyering
1fca2b262a *** empty log message *** 1997-07-05 22:50:58 +00:00
Jim Meyering
08f38fd930 (parse_obsolescent_option): If POSIXLY_CORRECT is set, give
a diagnostic and fail when there are two or more non-option arguments.
1997-07-05 22:50:32 +00:00
Jim Meyering
573588283f . 1997-07-05 13:24:11 +00:00
Jim Meyering
8e14d7accc *** empty log message *** 1997-07-05 13:23:18 +00:00
Jim Meyering
77ef7e08a7 *** empty log message *** 1997-07-05 08:26:21 +00:00
Jim Meyering
ac0ee614d6 Redefine/undef getusershell around inclusion of <unistd.h>
(via system.h) so Cray's int-returning prototype doesn't conflict
with our char*-returning one.
1997-07-05 08:25:58 +00:00
Jim Meyering
8e04be3e8d . 1997-07-04 23:05:22 +00:00
Jim Meyering
4369606f15 regenerate with updated mk-script 1997-07-04 23:04:21 +00:00
Jim Meyering
f014f4f60f *** empty log message *** 1997-07-04 19:12:34 +00:00
Jim Meyering
581b1540f5 Redirect output of cmp to /dev/null. 1997-07-04 19:12:25 +00:00
Jim Meyering
a7da25a2bb *** empty log message *** 1997-07-04 19:05:12 +00:00
Jim Meyering
14608042dd . 1997-07-04 19:01:55 +00:00
Jim Meyering
f8bedd0047 . 1997-07-04 15:02:30 +00:00
Jim Meyering
4d8f9c4929 regenerate with updated ../Makefile.am.in 1997-07-04 15:02:06 +00:00
Jim Meyering
1e80216861 regenerate with updated mk-script 1997-07-04 15:01:57 +00:00
Jim Meyering
b541bff3de . 1997-07-04 15:01:06 +00:00
Jim Meyering
bea4748f5c regenerate with updated mk-script 1997-07-04 14:43:55 +00:00
Jim Meyering
19d151cbbd regenerate with updated ../Makefile.am.in 1997-07-04 14:43:06 +00:00
Jim Meyering
d61ab3fc24 . 1997-07-04 14:42:16 +00:00
Jim Meyering
70cfca742f *** empty log message *** 1997-07-04 08:20:55 +00:00
Jim Meyering
677ddac432 (validate): Create test files in $(srcdir), not in build dir. 1997-07-04 08:09:15 +00:00
Jim Meyering
93b02c5289 *** empty log message *** 1997-07-04 07:53:28 +00:00
Jim Meyering
22ff29fe3e (apply_attributes): New function.
(copy_reg): Use apply_attributes instead of open-coding the pieces.
Now, failure to preserve file attributes does not cause mv to change
its exit status, and such failures elicit warning diagnostics.  This
behavior is required by POSIX.  Before, failure to preserve ownership
due to insufficient access was diagnosed only for root.
Prompted by a report from Bengt Martensson.
1997-07-03 12:16:41 +00:00
Jim Meyering
ab171ee6b5 *** empty log message *** 1997-07-03 12:13:31 +00:00
Jim Meyering
c86d0a7a45 *** empty log message *** 1997-07-03 10:29:48 +00:00
Jim Meyering
4396edc12e (test_vector): Remove bogus TZ=GMT environment setting. 1997-07-03 10:28:51 +00:00
Jim Meyering
442d670b3a . 1997-07-02 16:09:39 +00:00
Jim Meyering
7a280a0fda (STRTOX): Convert function header in macro definition
to K&R-style.  Otherwise, ansi2knr would fail to convert the function
definitions to K&R for old style compilers.  From Kaveh Ghazi.
1997-07-02 16:07:44 +00:00
Jim Meyering
df05506016 *** empty log message *** 1997-07-01 11:55:55 +00:00
Jim Meyering
b3580d0a75 . 1997-07-01 11:50:44 +00:00
Jim Meyering
2499628bff (make_path): Reorder stat-then-mkdir-if-missing
calls so that mkdir is called first.  Before make_path would first
`stat' a directory, then call mkdir if it didn't exist.  But if
some other process created the directory between the stat & mkdir,
the mkdir would fail with EEXIST.  Diagnosis and suggestion from
Greg McGary.
1997-07-01 11:50:39 +00:00
Jim Meyering
b5e0f033a6 *** empty log message *** 1997-07-01 11:50:08 +00:00
Jim Meyering
059ccb6ac7 [putenv]: Undefine before including system headers.
Otherwise, the declaration of *rpl_putenv* conflicts with the system
prototype on at least Irix5.3.  From Marcus Daniels.
1997-07-01 11:30:08 +00:00
Jim Meyering
5f14bb768e *** empty log message *** 1997-06-30 04:00:48 +00:00
Jim Meyering
7f490dad0e . 1997-06-30 03:53:28 +00:00
Jim Meyering
3e81211212 . 1997-06-30 01:58:23 +00:00
Jim Meyering
3f0b15ac80 *** empty log message *** 1997-06-29 22:26:54 +00:00
Jim Meyering
41faa55aed (base_name_strip_trailing_slashes): Remove. 1997-06-29 22:26:18 +00:00
Jim Meyering
04c0cd59a5 (base_name_strip_trailing_slashes): new function. 1997-06-29 22:25:54 +00:00
Jim Meyering
6ad0d51107 (copy): Add FIXME comment. 1997-06-29 22:24:26 +00:00
Jim Meyering
bc8c5033e3 *** empty log message *** 1997-06-29 22:21:51 +00:00
Jim Meyering
dc404c4107 (copy_reg): New parameter, SOURCE_STATS.
(do_move): Update caller.
(movefile): Take new boolean parameter, DEST_IS_DIR,
to save a stat per moved file when the destination is a directory.
(main): Call movefile with additional argument.
(strip_trailing_slashes_2): New function.
(movefile): Remove trailing slashes from dest.  Otherwise, stat ("b/")
fails with ENOTDIR on systems including Linux w/libc 2.0.30.
Reproduce with `rm -rf a b; mkdir a; touch b; ./mv a b/'.
(do_move): Fix misleading comment.
1997-06-29 22:21:42 +00:00
Jim Meyering
e44678aac2 *** empty log message *** 1997-06-29 21:24:26 +00:00
Jim Meyering
42a63be148 *** empty log message *** 1997-06-29 21:13:33 +00:00
Jim Meyering
1226259896 Remove _sys_putenv cruft and just rename the function itself. 1997-06-29 21:05:05 +00:00
Jim Meyering
cabc10b909 *** empty log message *** 1997-06-29 20:26:38 +00:00
Jim Meyering
90e9fd9c77 . 1997-06-29 20:24:27 +00:00
Jim Meyering
0935e2ce3f *** empty log message *** 1997-06-29 20:21:38 +00:00
Jim Meyering
611cf8e97b *** empty log message *** 1997-06-29 20:19:45 +00:00
Jim Meyering
3d9239c750 fix it right 1997-06-29 20:18:58 +00:00
Jim Meyering
551c02f7b6 Define-away putenv only if it's not already defined. 1997-06-29 20:12:52 +00:00
Jim Meyering
90c131fa21 . 1997-06-29 13:52:16 +00:00
Jim Meyering
a6b6c95b83 *** empty log message *** 1997-06-29 13:50:57 +00:00
Jim Meyering
25c1d1dccd *** empty log message *** 1997-06-29 13:49:53 +00:00
Jim Meyering
d9741142c8 . 1997-06-29 13:34:51 +00:00
Jim Meyering
a84d2bada4 Set and export LANGUAGE, LC_ALL, and LANG
so tests get english strings.  From Ulrich Drepper.
1997-06-29 12:19:43 +00:00
Jim Meyering
9654920c40 . 1997-06-29 03:27:24 +00:00
Jim Meyering
a13135d09e Move the OPENOPTS def from end to beginning of else clause so it's closer
to the one in the then clause.
1997-06-29 01:56:36 +00:00
Jim Meyering
f657d65570 update from automake-1.2 1997-06-25 17:05:56 +00:00
Jim Meyering
9bcfe15afe . 1997-06-25 17:01:22 +00:00
Jim Meyering
4378dcecdf . 1997-06-25 16:08:03 +00:00
Jim Meyering
fa4894b30c . 1997-06-25 15:38:35 +00:00
Jim Meyering
6700c89ac7 Use variable width columns when printing in multi-column mode.
(init_col_info): New function.
(print_current_files): Call init_col_info if format is
`many_per_line' or `horizontal'.
(print_many_per_line): Calculate optimum column widths.
(print_horizontal): Likewise.
From Ulrich Drepper.
1997-06-22 19:52:24 +00:00
Jim Meyering
d18dc59619 *** empty log message *** 1997-06-22 04:04:07 +00:00
Jim Meyering
973f13ccb2 . 1997-06-22 04:01:43 +00:00
Jim Meyering
e148f6d293 . 1997-06-22 03:51:36 +00:00
Jim Meyering
3841b591c1 . 1997-06-22 03:50:14 +00:00
Jim Meyering
e8b0678fed . 1997-06-22 03:49:51 +00:00
Jim Meyering
08f074fb34 *** empty log message *** 1997-06-22 03:38:08 +00:00
Jim Meyering
2f91f08a79 . 1997-06-22 03:32:37 +00:00
Jim Meyering
9bf8c1c229 . 1997-06-16 18:02:08 +00:00
Jim Meyering
504b9fe47a . 1997-06-16 18:01:32 +00:00
Jim Meyering
57f7889059 comment 1997-06-16 17:50:23 +00:00
Jim Meyering
8b4d49fc79 . 1997-06-16 17:42:33 +00:00
Jim Meyering
a6526f2171 (eval6): Accept new unary operator, quote.
From Karl Heuer.
1997-06-16 17:01:24 +00:00
Jim Meyering
bfc9115ee5 *** empty log message *** 1997-06-16 16:58:28 +00:00
Jim Meyering
5e3188fba4 . 1997-06-16 16:57:55 +00:00
Jim Meyering
57c0f5cfff (EXTRA_DIST): Add putenv.m4. 1997-06-16 16:57:02 +00:00
Jim Meyering
19342feca7 . 1997-06-16 16:45:15 +00:00
Jim Meyering
7b097c0e37 add copyright 1997-06-16 16:15:30 +00:00
Jim Meyering
952a76e506 tweak error message 1997-06-16 16:12:04 +00:00
Jim Meyering
0dcca900cc (full_write): Add comment regarding failure due to bug in
Linux Slackware 1.2.13 kernel.
1997-06-15 15:06:52 +00:00
Jim Meyering
ab029fd3e5 . 1997-06-15 13:35:02 +00:00
Jim Meyering
acdc74dbf5 Rewrite using save-cwd.c and chdir to remove quadratic component of complexity.
Before, it processed O(n^2) directory name components via stat and mkdir.
Now it's O(n).  This makes mkdir -p a lot more efficient when creating
directories with very many components.  On a Linux 2.0.30 ext2fs filesystem
this command: mkdir -p `perl -e 'print "a/" x 500'`  now runs in 0.77 seconds
(user+sys).  Contrast that with the 9.5(!) seconds it took before.
1997-06-15 13:34:47 +00:00
Jim Meyering
1830d29be9 Add test that -o 0 works. 1997-06-15 11:47:46 +00:00
Jim Meyering
3b4748d124 *** empty log message *** 1997-06-15 11:42:55 +00:00
Jim Meyering
50e65a424c (init_header) [T_BUF_FMT]: Output the 4-digit year (not the
2-digit abbreviation) in each page header.  Reported by Noah Friedman.
1997-06-15 11:40:47 +00:00
Jim Meyering
aca4091fae *** empty log message *** 1997-06-14 19:33:13 +00:00
Jim Meyering
2add756624 *** empty log message *** 1997-06-14 17:32:00 +00:00
Jim Meyering
2f1768f676 (cut_fields): Detect when the input is empty and handle
that special case.  Before `cut -f1 </dev/null' would improperly
output a single newline.  Reported by Phil Richards.
1997-06-14 17:31:40 +00:00
Jim Meyering
4f0bef5377 . 1997-06-14 16:45:00 +00:00
Jim Meyering
4dc1f7070b . 1997-06-14 16:36:22 +00:00
Jim Meyering
63ca47adfc proof reading from kb 1997-06-13 16:07:12 +00:00
Jim Meyering
c8460daf24 . 1997-06-12 16:40:53 +00:00
Jim Meyering
a6062bfb05 document expr's new quote operator 1997-06-12 16:32:08 +00:00
Jim Meyering
83461932b5 *** empty log message *** 1997-06-12 15:07:26 +00:00
Jim Meyering
23c6ab8674 *** empty log message *** 1997-06-12 15:07:05 +00:00
Jim Meyering
25f6a4a7c0 remove blank line at end and add copyright
tweak cpp indentation
1997-06-12 12:58:47 +00:00
Jim Meyering
8eebff2029 *** empty log message *** 1997-06-12 11:51:11 +00:00
Jim Meyering
6ecad0839e (eval6): Accept new unary operator, quote. From Karl Heuer. 1997-06-12 11:50:58 +00:00
Jim Meyering
9fb965dfd8 Add comment for posixly_correct. 1997-06-12 11:47:34 +00:00
Jim Meyering
bcdaf2c1a5 fix typo in expr/index doc.
from kwzh
1997-06-12 11:27:04 +00:00
Jim Meyering
e737958ebb . 1997-06-11 20:19:30 +00:00
Jim Meyering
44df08ee55 *** empty log message *** 1997-06-11 20:19:23 +00:00
Jim Meyering
8406b91aba (docolon): Test (re_buffer.re_nsub > 0) rather than
searching for `\(' to determine whether to return 0 or the empty
string.  Before it would improperly return '' if the pattern
contained a substring like this: `\\('.  From Karl Heuer.
For example, running expr c : '\\(' should print `0'.
1997-06-11 20:18:15 +00:00
Jim Meyering
2078f2391e . 1997-06-06 14:30:11 +00:00
Jim Meyering
f442eb2941 . 1997-06-03 20:01:55 +00:00
Jim Meyering
f1390de4c3 [HAVE_UNISTD_H]: Include unistd.h.
John Gatewood Ham reported that this is necessary for DJGPP/Win95.
1997-06-03 20:01:47 +00:00
Jim Meyering
93ede2c8e1 *** empty log message *** 1997-06-03 20:01:14 +00:00
Jim Meyering
ae7a2a007a . 1997-06-02 14:29:50 +00:00
Jim Meyering
1f107588fa . 1997-06-01 18:47:56 +00:00
Jim Meyering
a45a7e3819 . 1997-06-01 17:59:08 +00:00
Jim Meyering
5f0bf654a4 (mk-script): Depend on ../../config.status. 1997-06-01 17:58:27 +00:00
Jim Meyering
985bd80461 . 1997-06-01 17:20:42 +00:00
Jim Meyering
8bb2bf5d28 *** empty log message *** 1997-06-01 17:20:31 +00:00
Jim Meyering
cc167bce98 *** empty log message *** 1997-06-01 17:16:30 +00:00
Jim Meyering
f5291be83e Add tests using `next'. 1997-06-01 17:16:23 +00:00
Jim Meyering
2c0e561933 (OtherTable): Interpret `next' as 1 (not 2) units.
Patch from Richard Sharman <rsharman@magmacom.com>.
1997-06-01 17:15:51 +00:00
Jim Meyering
a488983890 fix for abs pathnames 1997-05-30 14:00:47 +00:00
Jim Meyering
94468e0921 indent cpp directives 1997-05-29 13:20:25 +00:00
Jim Meyering
4377246ee3 update from automake-1.1p 1997-05-29 13:19:34 +00:00
Jim Meyering
6edc738156 correct/normalize indentation in cpp directives 1997-05-28 12:19:28 +00:00
Jim Meyering
4f690a51e3 update from FSF 1997-05-28 12:01:33 +00:00
Jim Meyering
7eaf75e3b1 *** empty log message *** 1997-05-28 11:43:25 +00:00
Jim Meyering
4354caa2d4 (read_filesystem_list): Add `|| defined (__OpenBSD__)'
to the NetBSD #if so OpenBSD also uses the f_fstypename member.
(fstype_to_string): Add `&& !defined (__OpenBSD__)' to the NetBSD #if
expression to exclude this function definition.  OpenBSD 2.1 beta
doesn't need it.  Patch from Hugh Daniel <hugh@ecotone.xanadu.com>
1997-05-28 11:42:29 +00:00
Jim Meyering
106775512b *** empty log message *** 1997-05-28 11:40:16 +00:00
Jim Meyering
72559c0e30 *** empty log message *** 1997-05-27 14:17:08 +00:00
Jim Meyering
437b98461e Don't include backupfile.h. 1997-05-27 14:16:49 +00:00
Jim Meyering
074c7edade *** empty log message *** 1997-05-27 13:55:45 +00:00
Jim Meyering
e4f25ca7b1 Use base_name, not basename. 1997-05-27 13:55:23 +00:00
Jim Meyering
dd547a84bf . 1997-05-27 12:50:39 +00:00
Jim Meyering
bc50ceb474 clean up for -Wall 1997-05-27 11:05:40 +00:00
Jim Meyering
4c2adcbd56 Use base_name, not basename. 1997-05-27 11:04:41 +00:00
Jim Meyering
f0c27dac9e Use base_name, not basename.
Use X, not CP_OPTIONS.
1997-05-27 11:00:50 +00:00
Jim Meyering
93e9fef09f (libfu_a_SOURCES): Add addext.c.
Remove getversion.c;  get_version is now in backupfile.c.
Add basename.c since it's no longer replacible.
1997-05-27 10:45:34 +00:00
Jim Meyering
187f712b73 *** empty log message *** 1997-05-27 10:39:22 +00:00
Jim Meyering
aa8b6cf83c Change dcl of program_name so it doesn't conflict with the ubiquitous char* one. 1997-05-27 10:39:10 +00:00
Jim Meyering
46a9863033 . 1997-05-27 10:31:04 +00:00
Jim Meyering
c213bae308 Update from patch-2.2.93. 1997-05-27 10:30:45 +00:00
Jim Meyering
ca55ba3715 Update from FSF via patch-2.2.93. 1997-05-27 09:41:25 +00:00
Jim Meyering
168eb7758e Update from FSF via patch-2.2.93. 1997-05-27 09:39:25 +00:00
Jim Meyering
96c4c01019 Update from glibc via patch-2.2.93. 1997-05-27 09:38:06 +00:00
Jim Meyering
926c6c3301 *** empty log message *** 1997-05-26 04:46:57 +00:00
Jim Meyering
8805ede31b (copy_internal): When preserving symlinks (--no-dereference) and the
destination file is a symlink, use stat (not xstat) to see if it points
back to the source.  Reported by James <james@albion.glarp.com>.
1997-05-26 04:46:47 +00:00
Jim Meyering
cd29ba84ab *** empty log message *** 1997-05-26 04:43:47 +00:00
Jim Meyering
a65a081656 declare strip_trailing_slashes 1997-05-25 21:25:28 +00:00
Jim Meyering
8b36f9cbcd *** empty log message *** 1997-05-25 21:24:44 +00:00
Jim Meyering
0cc1681a5b Remove global variable opt_human_readable.
(enum Output_units): Rename from output_size.
Rename size_* to Unit_*.
Add Unit_variable to correspond to --human-readable.
(convert_blocks): Remove now-unused definition.
(human_readable): Rename paramater n_bytes to n_blocks.
Adjust conversions to reflect fact that input is now number of
512-byte blocks, not bytes.
(print_size): New function.
(du_files): Use print_size instead of open coding it.
(count_entry): Always count in units of 512-byte blocks to delay.
This lets du accumulate totals corresponding to a terabyte before
overflowing 32-bit long int.
Use print_size instead of open coding it.
1997-05-25 21:23:15 +00:00
Jim Meyering
e3e8f658c4 *** empty log message *** 1997-05-25 15:17:31 +00:00
Jim Meyering
07876bcb5d (convert_blocks): Add definition. 1997-05-25 15:10:03 +00:00
Jim Meyering
11080b7544 (convert_blocks): Remove definition.
Indent cpp directives.
1997-05-25 14:22:55 +00:00
Jim Meyering
1b71b3372e (convert_blocks): Remove now-unnecessary #undef.
(du_files): Pass output_size unchanged to convert_blocks.  No need
to test output_size for size_bytes, convert_blocks handles that
correctly.
(count_entry): Likewise.
1997-05-25 14:21:41 +00:00
Jim Meyering
1bfb2c3ec7 *** empty log message *** 1997-05-25 14:11:59 +00:00
Jim Meyering
1ba34180d7 (main): Implement new --max-depth=N option.
Based on the idea and a patch from Torbjorn Lindgren.
(du_files): Likewise.
(count_entry): Likewise.
[AIX]: Remove unused #pragma alloca.
1997-05-25 14:11:50 +00:00
Jim Meyering
54a61c3cf6 Remove FIXME.
Add spurious curlies and an empty line.
1997-05-25 13:00:01 +00:00
Jim Meyering
f735e157e9 . 1997-05-25 03:47:31 +00:00
Jim Meyering
5708e7bba8 *** empty log message *** 1997-05-25 03:47:21 +00:00
Jim Meyering
6919955eb1 New options: --ignore-fail-on-non-empty and --verbose.
(remove_parents): Implement new options.
(main): Likewise.
1997-05-25 03:46:46 +00:00
Jim Meyering
4f99d359c8 . 1997-05-25 03:15:30 +00:00
Jim Meyering
6fd92cf72b *** empty log message *** 1997-05-24 18:27:46 +00:00
Jim Meyering
2ebfd210cd . 1997-05-24 18:26:59 +00:00
Jim Meyering
d5659aa5e1 . 1997-05-24 18:12:59 +00:00
Jim Meyering
9add219c87 . 1997-05-24 18:11:33 +00:00
Jim Meyering
4d347c9e1f *** empty log message *** 1997-05-24 14:43:51 +00:00
Jim Meyering
90721ff4a4 (read_filesystem_list): Show automount-related
duplicate filesystems only when --all specified.  With suggestions
from Stuart Kemp.
1997-05-24 14:43:21 +00:00
Jim Meyering
1024238089 Indent cpp directives. 1997-05-24 14:42:40 +00:00
Jim Meyering
b0f8e63615 . 1997-05-24 14:31:23 +00:00
Jim Meyering
c8062f789d . 1997-05-24 14:13:55 +00:00
Jim Meyering
3dc7a93409 . 1997-05-24 14:11:19 +00:00
Jim Meyering
59ed92cdcf . 1997-05-23 13:23:49 +00:00
Jim Meyering
d0a506b84b . 1997-05-02 04:02:17 +00:00
Jim Meyering
ccb48f46d6 indent cpp-directives 1997-05-01 20:53:59 +00:00
Jim Meyering
9080de09fc indent cpp-directives 1997-05-01 20:51:16 +00:00
Jim Meyering
44848c0887 update from automake-1.1o 1997-04-29 15:48:14 +00:00
Jim Meyering
f6a1207cf9 . 1997-04-29 15:22:05 +00:00
Jim Meyering
6c04dfc1e1 *** empty log message *** 1997-04-27 23:46:02 +00:00
Jim Meyering
795d254715 (STRTOX): Don't fail because of extra character(s) following a
character constant.  Give the *warning* only if !POSIXLY_CORRECT.
1997-04-27 23:45:57 +00:00
Jim Meyering
e5ce0d8b3e *** empty log message *** 1997-04-27 23:33:54 +00:00
Jim Meyering
9778fd673b (cfcc_msg): File-scope constant.
(STRTOX): Use new constant as error message format string in macro.
Suggestion from Andreas Schwab.
1997-04-27 23:33:49 +00:00
Jim Meyering
3a46eb9695 . 1997-04-27 23:12:01 +00:00
Jim Meyering
3a84136d8c . 1997-04-27 20:18:07 +00:00
Jim Meyering
a77bf7510f *** empty log message *** 1997-04-27 20:13:21 +00:00
Jim Meyering
afdfd95be8 *** empty log message *** 1997-04-27 20:12:16 +00:00
Jim Meyering
3f9d8ee21b . 1997-04-27 19:41:52 +00:00
Jim Meyering
480a5db227 . 1997-04-27 19:41:16 +00:00
Jim Meyering
9874f0eedf changes suggested by kb 1997-04-24 13:00:51 +00:00
Jim Meyering
39361c9d6e patch from Andreas S. 1997-04-21 14:55:26 +00:00
Jim Meyering
7f74dcb1a6 s/;/. in comment to placate francois 1997-04-10 03:46:01 +00:00
Jim Meyering
738818ee66 . 1997-04-07 16:59:43 +00:00
Jim Meyering
90e1281e8e *** empty log message *** 1997-04-07 15:24:38 +00:00
Jim Meyering
907f15c7d6 *** empty log message *** 1997-04-07 15:21:33 +00:00
Jim Meyering
258186e1ce . 1997-04-07 15:10:57 +00:00
Jim Meyering
2e1059b400 . 1997-04-07 15:08:56 +00:00
Jim Meyering
58a9554b17 . 1997-04-07 00:44:33 +00:00
Jim Meyering
ca70b66b72 (STRTOX): New macro to eliminate code duplication.
(xstrtod, xstrtol, xstrtoul): Remove functions.
Use the STRTOX instead.
1997-04-06 20:58:16 +00:00
Jim Meyering
b3f0804efd . 1997-04-06 20:42:00 +00:00
Jim Meyering
ebce57b0e6 *** empty log message *** 1997-04-06 20:36:48 +00:00
Jim Meyering
3426e7ca7a Change most char* dcls to const char*. 1997-04-06 19:32:19 +00:00
Jim Meyering
39b444e420 Reorder functions to obviate forward decls. 1997-04-06 19:30:07 +00:00
Jim Meyering
00ea088ccd . 1997-04-04 03:29:25 +00:00
Jim Meyering
cd45cc7335 (EXTRA_DIST): Update file list. 1997-04-04 03:27:35 +00:00
Jim Meyering
7ecf5ed43b . 1997-04-04 03:18:54 +00:00
Jim Meyering
6d648c45ed Add test from Phil Richards. 1997-04-04 03:18:04 +00:00
Jim Meyering
cc093a9945 (main): Implement new --max-depth=N option.
Based on the idea and a patch from Torbjorn Lindgren.
(du_files): Likewise.
(count_entry): Likewise.
1997-03-27 05:47:56 +00:00
Jim Meyering
3416bdb6e1 *** empty log message *** 1997-03-27 05:45:12 +00:00
Jim Meyering
a37da82c38 . 1997-03-23 21:27:46 +00:00
Jim Meyering
f101a9b57f *** empty log message *** 1997-03-23 21:22:14 +00:00
Jim Meyering
c7b5fd2423 . 1997-03-23 02:56:47 +00:00
Jim Meyering
f1c111d469 *** empty log message *** 1997-03-23 02:30:09 +00:00
Jim Meyering
24ffa56fd0 . 1997-03-22 19:54:32 +00:00
Jim Meyering
e269fcdb28 *** empty log message *** 1997-03-22 06:06:02 +00:00
Jim Meyering
61ac269c6e *** empty log message *** 1997-03-22 06:05:16 +00:00
Jim Meyering
e71f8cf087 *** empty log message *** 1997-03-22 06:03:31 +00:00
Jim Meyering
b524db4e87 *** empty log message *** 1997-03-22 05:58:50 +00:00
Jim Meyering
37e05875d5 *** empty log message *** 1997-03-22 05:58:26 +00:00
Jim Meyering
fcc31060fa . 1997-03-21 03:16:03 +00:00
Jim Meyering
e328e25bd1 . 1997-03-21 03:14:53 +00:00
Jim Meyering
bf435650e1 . 1997-03-21 03:11:55 +00:00
Jim Meyering
cd0aba1c14 . 1997-03-21 03:10:21 +00:00
Jim Meyering
a1e46876c6 . 1997-03-19 02:57:20 +00:00
Jim Meyering
66c246fc17 cpp-indent
Change a few #ifdef to #if.
Remove 3 spurious #ifdef that were guarding an #undef each.
1997-03-19 02:56:54 +00:00
Jim Meyering
fbe78f2ef6 . 1997-03-19 02:12:42 +00:00
Jim Meyering
33da7dcdda (check_format): Rename local, FORMAT_STRING, to avoid shadowing global.
(print_numbers): Likewise.
1997-03-19 02:12:36 +00:00
Jim Meyering
3f2ded808d (idle_string): Rename local, IDLE, to avoid shadowing global. 1997-03-18 23:34:23 +00:00
Jim Meyering
bcdeccb6a3 (log_su): Resort to getpwuid if getlogin fails.
If no tty name is found, use `none' in the log message.
Based on a patch from Galen Hazelwood.
1997-03-18 12:49:20 +00:00
Jim Meyering
808a6a2308 . 1997-03-14 04:14:37 +00:00
Jim Meyering
29e56fa096 . 1997-03-14 04:09:13 +00:00
Jim Meyering
f02b837782 (main): Allow use of 0 (zero) as the margin offset
argument to the -o option.  Patch from Gary Anderson.
1997-03-14 04:06:12 +00:00
Jim Meyering
294ea6ffc2 . 1997-03-14 04:00:19 +00:00
Jim Meyering
c127695e96 (main): Make sure c1 is not -1 before using it as an
array index.  Patch from Greg McGary.  Although this is truly a
bug, I believe it would not cause tr to misbehave on most systems.
I could not construct a test case with which this bug causes tr
to generate invalid output.
1997-03-14 03:59:21 +00:00
Jim Meyering
d713508802 Add test that -o 0 works. 1997-03-14 03:52:10 +00:00
Jim Meyering
c42ed1e1fb . 1997-03-14 03:30:22 +00:00
Jim Meyering
e64db863dd . 1997-03-14 03:30:02 +00:00
Jim Meyering
40b667e0e9 . 1997-03-14 03:29:41 +00:00
Jim Meyering
effc683cfc (TIME_T_MIN): Work around a bug in Cray C 5.0.3.0. 1997-03-14 03:28:09 +00:00
Jim Meyering
898fd10ec0 . 1997-03-13 05:21:23 +00:00
Jim Meyering
7017b8f67f (change_file_group): Use uid of -1 to indicate
we don't want to change the file's user ID.
1997-03-13 05:19:54 +00:00
Jim Meyering
c230f7db00 Update from gettext-0.10.27. 1997-03-13 05:17:50 +00:00
Jim Meyering
5ed7bf6069 . 1997-03-13 05:17:16 +00:00
Jim Meyering
a7cbdd04cd . 1997-03-13 05:16:47 +00:00
Jim Meyering
4e81181981 (EXTRA_DIST): Add chown.c. 1997-03-13 05:13:18 +00:00
Jim Meyering
1dc27001d5 Add chown.m4. 1997-03-13 05:12:13 +00:00
Jim Meyering
9034e099da . 1997-03-13 05:10:42 +00:00
Jim Meyering
78f4331cab . 1997-03-13 03:54:05 +00:00
Jim Meyering
a9616d4982 . 1997-03-12 01:26:15 +00:00
Jim Meyering
f1fbec95d5 . 1997-03-11 05:11:09 +00:00
Jim Meyering
dd2f783492 . 1997-03-11 05:02:11 +00:00
Jim Meyering
fac7cfba06 . 1997-03-10 04:47:59 +00:00
Jim Meyering
613357b0ab (decode_switches): Ignore value of COLUMNS envionment
variable when it is the empty string.  Suggestion from Ulrich Drepper.
1997-03-10 04:47:32 +00:00
Jim Meyering
de397548a8 comm's exit status 1997-03-10 03:47:13 +00:00
Jim Meyering
8a3180c8f0 . 1997-03-09 06:33:43 +00:00
Jim Meyering
73e03453df . 1997-03-09 06:18:33 +00:00
Jim Meyering
ea805db369 (usage): Fix typo in --help output. From Andreas Schwab. 1997-03-01 04:33:59 +00:00
Jim Meyering
d358cd813b . 1997-02-28 05:02:41 +00:00
Jim Meyering
571f4f4fde . 1997-02-28 05:01:39 +00:00
Jim Meyering
8c93627ccb (tYEAR_UNIT): Increase yyRelYear by $1, not just by 1.
From Andreas Schwab.
1997-02-27 05:53:15 +00:00
Jim Meyering
80409f292d . 1997-02-27 05:52:59 +00:00
Jim Meyering
8b2b45e172 . 1997-02-27 05:49:51 +00:00
Jim Meyering
94cab36432 (re_protect): When there is any potential for ambiguity in a diagnostic,
give explanatory diagnostic in addition to file name.
1997-02-27 05:49:44 +00:00
Jim Meyering
e1b834211b (copy_internal): When there is any potential for
ambiguity in a diagnostic, give explanatory diagnostic in addition
to file name.
1997-02-27 05:49:01 +00:00
Jim Meyering
a0400ec19b . 1997-02-26 13:01:45 +00:00
Jim Meyering
27237bfb10 . 1997-02-26 04:21:01 +00:00
Jim Meyering
df86f458a2 . 1997-02-26 02:21:34 +00:00
Jim Meyering
88c3a362e9 . 1997-02-23 05:47:16 +00:00
Jim Meyering
a4ccff96f9 . 1997-02-23 02:01:27 +00:00
Jim Meyering
6df1efb30c . 1997-02-22 20:41:21 +00:00
Jim Meyering
75bc50c6fc . 1997-02-22 20:34:30 +00:00
Jim Meyering
5cb0201730 . 1997-02-22 20:19:05 +00:00
Jim Meyering
db78b4797a (tMONTH_UNIT): Increase yyRelMonth by $1, not just by 1.
(tDAY_UNIT): Likewise for yyRelDay.
(tHOUR_UNIT): Likewise for yyRelHour.
(tMINUTE_UNIT): Likewise for yyRelMinutes.
(tSEC_UNIT): Likewise for yyRelSeconds.
1997-02-22 20:13:19 +00:00
Jim Meyering
9de7f6a024 . 1997-02-21 02:19:59 +00:00
Jim Meyering
4b0e6d0a33 update from FSF 1997-02-21 02:19:48 +00:00
Jim Meyering
a6ebe05733 . 1997-02-21 02:17:18 +00:00
Jim Meyering
e16668553e update from FSF 1997-02-21 02:16:54 +00:00
Jim Meyering
3b459d46bc . 1997-02-20 05:11:19 +00:00
Jim Meyering
2e31651a02 (factor): Rewrite inner loop to be more efficient.
Patch from Torbjorn Granlund.
1997-02-20 05:11:12 +00:00
Jim Meyering
9e2c86c67a . 1997-02-20 05:06:29 +00:00
Jim Meyering
4af2c36dfa (main): Remove trailing slashes from command line arguments.
Otherwise, running `mkdir x; chmod 644 x; ls -d x/' (note the trailing
slash) makes ls fail with permission denied on at least Linux 1.2.13
and 2.0.14 systems.
1997-02-20 04:54:56 +00:00
Jim Meyering
5234813a09 . 1997-02-19 03:38:52 +00:00
Jim Meyering
3b8313838c . 1997-02-19 03:27:18 +00:00
Jim Meyering
9b47c04ac1 . 1997-02-19 03:25:30 +00:00
Jim Meyering
11332e0c26 Add tests for %U, %V, and %W and for a bug fixed on 1996-03-05.
Remove misleading `-' from leap-1 test.
1997-02-19 03:23:16 +00:00
Jim Meyering
785168be90 . 1997-02-19 03:20:35 +00:00
Jim Meyering
91eb812c61 . 1997-02-19 02:54:43 +00:00
Jim Meyering
2be08dd6d3 . 1997-02-19 00:56:22 +00:00
Jim Meyering
6d09ea7b0d . 1997-02-18 17:46:56 +00:00
Jim Meyering
7bb258353f . 1997-02-18 17:46:04 +00:00
Jim Meyering
35ec0a08b5 . 1997-02-18 15:13:51 +00:00
Jim Meyering
1b1bca8a63 . 1997-02-18 15:13:12 +00:00
Jim Meyering
11e498679b . 1997-02-18 15:12:41 +00:00
Jim Meyering
30979f06d8 . 1997-02-18 02:47:49 +00:00
Jim Meyering
c321e5b51a . 1997-02-18 02:46:29 +00:00
Jim Meyering
bf8b53e78b . 1997-02-18 02:43:59 +00:00
Jim Meyering
1ee3e32c80 . 1997-02-17 04:18:26 +00:00
Jim Meyering
668010de9e . 1997-02-17 04:18:06 +00:00
Jim Meyering
24f79bb72c . 1997-02-17 04:17:09 +00:00
Jim Meyering
1bdee95e06 . 1997-02-17 04:12:20 +00:00
Jim Meyering
90bdeb65ca . 1997-02-17 04:11:19 +00:00
Jim Meyering
522f1f2f27 . 1997-02-17 01:33:48 +00:00
Jim Meyering
0d457a8063 . 1997-02-17 01:30:05 +00:00
Jim Meyering
5db942f46c . 1997-02-17 01:26:54 +00:00
Jim Meyering
80cccededc . 1997-02-17 01:26:13 +00:00
Jim Meyering
dd77d0602a Add missing paren. 1997-02-16 23:49:11 +00:00
Jim Meyering
4722a74bcf (Tests '7.*'): Reflect file-renaming. 1997-02-16 19:14:32 +00:00
Jim Meyering
16632f72fc . 1997-02-16 19:11:10 +00:00
Jim Meyering
be855de208 renamed from T- versions to avoid name-clashes on case-indep filesystems 1997-02-16 19:08:01 +00:00
Jim Meyering
feb2f918b3 (parse_obsolescent_option): Reverse order of args in diagnostic.
Remove `' quotes in diagnostic.
(parse_options): Remove `' quotes in diagnostic.
1997-02-16 14:31:39 +00:00
Jim Meyering
6bdbdae68c fixed off-by-one error 1997-02-12 16:31:01 +00:00
Jim Meyering
59f891e8b8 FIXME: major revamp to use FILE*; passed a few more tests 1997-02-12 16:25:40 +00:00
Jim Meyering
2be25646bd change wording in message 1997-02-09 16:07:38 +00:00
Jim Meyering
4ee12115f0 update copyright 1997-02-09 04:56:33 +00:00
Jim Meyering
7eb03c4372 update copyrights for 1997 1997-02-09 04:54:16 +00:00
Jim Meyering
b7ffe8cdaf update copyrights for 1997 1997-02-09 04:52:50 +00:00
Jim Meyering
dbc538f92b update copyrights for 1997 1997-02-09 04:46:02 +00:00
Jim Meyering
562488ee9c (parse_obsolescent_option): Give warning diagnostic for
(but now accept) obsolescent usage with more than one file argument.
1997-02-09 04:44:47 +00:00
Jim Meyering
3e9c9be49e . 1997-02-08 03:25:12 +00:00
Jim Meyering
9e2ad11286 . 1997-02-07 04:17:25 +00:00
Jim Meyering
5d159ca17a . 1997-02-07 04:04:24 +00:00
Jim Meyering
b7a12bb110 (quote_filename): Allocate two more bytes (for quotes)
when using --quote-name (-Q).
Feb 2 change wasn't complete.  Patch from Mark Harris.
1997-02-06 03:58:09 +00:00
Jim Meyering
155fa29f27 . 1997-02-05 04:20:20 +00:00
Jim Meyering
8257531353 . 1997-02-05 04:07:17 +00:00
Jim Meyering
49e3c8fee2 Bracket inclusion of termios.h with #if HAVE_TERMIOS_H.
Masami Takikawa reported that NeXTStep 3.0 doesn't have termios.h.
1997-02-05 04:06:53 +00:00
Jim Meyering
7a5980964b Dennis Biringer <biringer@textron.mhpcc.af.mil> writes:
| Please note that Hawaii has no daylight savings time (HDT - Hawaii
| Daylight) as stated on page 147 of the tar manual.  We are always on Hawaii
| Standard Time (HST).
|
| Also, on page 146, the Alaska-Hawaii Standard zone (AHST) is called
| Hawaii-Aleutian Standard Time by section 263 of the United States Code.
| (http://tycho.usno.navy.mil/260.html).
|
| Thanks for the effort on the manual,
| Dennis
|
| --
| Dennis Biringer                            535 Lipoa Parkway #149
| Dennis.Biringer@textron.mhpcc.af.mil       Kihei HI 96753
| biringer@mrtc.org                          VOICE: 808-874-3206
1997-02-05 02:35:46 +00:00
Jim Meyering
c1e4806502 [__GNUC__]: Don't define alloca to __builtin_alloca. 1997-02-04 03:52:16 +00:00
Jim Meyering
84ed9c3db9 . 1997-02-04 03:48:17 +00:00
Jim Meyering
3c97cf0102 libitize 1997-02-04 03:30:49 +00:00
Jim Meyering
9e61c5f51a . 1997-02-04 03:29:06 +00:00
Jim Meyering
a0aa288531 libitize 1997-02-04 03:27:13 +00:00
Jim Meyering
1235c944d2 libitize 1997-02-04 03:26:31 +00:00
Jim Meyering
05ff9c82a6 new obstack from libc 1997-02-04 03:20:29 +00:00
Jim Meyering
e4af7abbde . 1997-02-03 05:09:12 +00:00
Jim Meyering
e8bcfd934a Move alloca-related preprocessor code into system.h. 1997-02-03 05:08:19 +00:00
Jim Meyering
1b5a74d1a7 (parse_long_options): Compare getopt_long return
value against -1, not EOF.  Use NULL, not `(int *) 0' as last parameter
in getopt_long call.
1997-02-03 05:06:27 +00:00
Jim Meyering
a2ffd5db02 [__GNUC__]: Don't define alloca to __builtin_alloca. 1997-02-03 04:20:22 +00:00
Jim Meyering
704a69781e . 1997-02-03 03:22:52 +00:00
Jim Meyering
5f24ab538f . 1997-02-03 03:21:02 +00:00
Jim Meyering
6a203a2347 (quote_filename): Don't backslash-escape double quotes.
This fixes a problem whereby columns weren't aligned when some files
contained double quote characters and ls's --escape (-b) option was
used.  Reported by Mark Harris.
1997-02-03 00:10:40 +00:00
Jim Meyering
16e150496f . 1997-02-02 23:51:20 +00:00
Jim Meyering
44a82a9eb6 . 1997-02-02 22:22:37 +00:00
Jim Meyering
a15366696c * src/cp-hash.c (struct entry): Move dcl to this file from cp.h.
(struct htab): Likewise.
No longer include cp.h.  Instead, include the things it used to include.
1997-02-02 22:21:03 +00:00
Jim Meyering
c64a391bb2 . 1997-02-02 21:23:10 +00:00
Jim Meyering
1d286acd9a (hash_insert2): Rename local HTAB to HT to avoid shadowing global. 1997-02-02 20:44:10 +00:00
Jim Meyering
b63df62ce1 [obstack_chunk_alloc]: Define to malloc, not xmalloc
to work better with new obstack functions.
1997-02-02 20:11:54 +00:00
Jim Meyering
ff323743c5 [obstack_chunk_alloc]: Define to malloc, not xmalloc
to work better with new obstack functions.
1997-02-02 20:10:11 +00:00
Jim Meyering
50d2bb5b7b (main): Rename local I to C to avoid shadowing and to
be more consistent.  Declare I in inner scopes.
1997-02-02 20:09:02 +00:00
Jim Meyering
1a375e421b Gutted code -- pieces are in copy.[ch]. 1997-02-02 18:33:19 +00:00
Jim Meyering
09e2cc2fdf use $@, instead of literal `POTFILES' 1997-02-02 16:05:43 +00:00
Jim Meyering
d262a3cc82 (POTFILES): Redirect to an intermediate file and write-protect POTFILES. 1997-02-02 15:43:54 +00:00
Jim Meyering
badb35bdb7 . 1997-02-02 00:09:46 +00:00
Jim Meyering
3cca84e543 . 1997-02-02 00:09:25 +00:00
Jim Meyering
4ea19e3b31 . 1997-02-01 23:12:18 +00:00
Jim Meyering
118cbe89db . 1997-02-01 16:56:47 +00:00
Jim Meyering
f13f9c1936 Reflect renamings. 1997-02-01 16:56:32 +00:00
Jim Meyering
0bda501d01 rename 1997-02-01 16:55:41 +00:00
Jim Meyering
8e6d4e2d3e . 1997-02-01 16:53:08 +00:00
Jim Meyering
c859133450 . 1997-02-01 16:52:02 +00:00
Jim Meyering
1b4dfdc778 . 1997-02-01 16:51:33 +00:00
Jim Meyering
620317a6bf . 1997-02-01 16:51:11 +00:00
Jim Meyering
c1c6d5fa1f (test 10md): Reflect renaming. 1997-02-01 16:48:08 +00:00
Jim Meyering
576b49f9f0 . 1997-02-01 16:47:56 +00:00
Jim Meyering
f18a2cdcd6 . 1997-02-01 16:47:17 +00:00
Jim Meyering
b6aa3e6c17 . 1997-02-01 16:46:06 +00:00
Jim Meyering
2e2fe82afe (spec_to_list): Warn about all filenames that exceed max-length before dying. 1997-02-01 16:44:15 +00:00
Jim Meyering
67c5175138 . 1997-02-01 16:41:08 +00:00
Jim Meyering
bece4592b4 update for 20.1 patch from roland 1997-02-01 16:39:27 +00:00
Jim Meyering
0081aea9e1 . 1997-02-01 13:23:39 +00:00
Jim Meyering
fec37a7211 (init_parameters): For compatibility: use default
separator `TAB' with full length lines.  From Roland Huebner.
1997-02-01 13:23:27 +00:00
Jim Meyering
5d3c42ac61 . 1997-02-01 13:20:02 +00:00
Jim Meyering
cd0b33c839 (usage): Make parenthetical note on --no-dereference a little more general. 1997-02-01 04:49:51 +00:00
Jim Meyering
a7dbd3f5e4 . 1997-02-01 04:25:59 +00:00
Jim Meyering
e077b7593b bracket bug address with <> and append a period 1997-02-01 04:24:58 +00:00
Jim Meyering
a882d55b52 bracket bug address with <> and append a period 1997-02-01 04:24:08 +00:00
Jim Meyering
899a90bfd9 bracket bug address with <> and append a period 1997-02-01 04:23:31 +00:00
Jim Meyering
09f70cf63b Rename globals buffer and buffer_size to have G_ prefix
to avoid shadowing local variables.
1997-02-01 03:29:21 +00:00
Jim Meyering
d4efcf477e (add_line_number): Rename from `number' to avoid shadowing local variables. 1997-02-01 03:25:14 +00:00
Jim Meyering
0e291b59ed . 1997-02-01 03:13:22 +00:00
Jim Meyering
b8c82a8e39 Compare getopt_long return value against -1, not EOF. Use NULL, not '(int *) 0' as last parameter in getopt_long call. 1997-02-01 03:05:36 +00:00
Jim Meyering
4f51b86bfb Compare getopt_long return value against -1, not EOF. Use NULL, not '(int *) 0' as last parameter in getopt_long call. 1997-02-01 03:03:44 +00:00
Jim Meyering
c2d2dec516 Compare getopt_long return value against -1, not EOF. Use NULL, not '(int *) 0' as last parameter in getopt_long call. 1997-02-01 02:00:04 +00:00
Jim Meyering
1e40423be8 (maintainer-clean): Remove GMOFILES.
From Paul Eggert.
1997-01-30 05:28:37 +00:00
Jim Meyering
0c5ab92b59 . 1997-01-30 04:16:33 +00:00
Jim Meyering
b9278db095 . 1997-01-30 04:11:17 +00:00
Jim Meyering
944b08f293 Do each test twice: get input via REDIR and PIPE. 1997-01-30 03:38:47 +00:00
Jim Meyering
307b54a273 (test_vector): Do each (non-stdin-requiring) test three times. 1997-01-30 03:38:07 +00:00
Jim Meyering
795162649b . 1997-01-30 03:36:40 +00:00
Jim Meyering
3181551ddd . 1997-01-30 03:36:06 +00:00
Jim Meyering
4cbcb32a53 correctly compute number of tests 1997-01-30 03:31:40 +00:00
Jim Meyering
13a5e426f3 Remove common_option_prefix flag.
(test_vector): Prepend the common option here instead.
1997-01-30 03:27:35 +00:00
Jim Meyering
56557d787a Remove input_via_stdin flag.
Do each test twice: get input via REDIR and PIPE.
1997-01-30 03:26:27 +00:00
Jim Meyering
6b1d2c4de1 Do each test three times. 1997-01-30 03:25:16 +00:00
Jim Meyering
bca3705ac5 . 1997-01-30 03:22:44 +00:00
Jim Meyering
9fcda065b6 . 1997-01-30 03:14:43 +00:00
Jim Meyering
188edf1546 . 1997-01-30 03:01:15 +00:00
Jim Meyering
22922b8765 Allow each test to be run any or all of three different ways. Program
input may be specified via a file or files listed on the command line,
via input redirection (if there's only one file), or via a pipe.
1997-01-29 14:19:17 +00:00
Jim Meyering
e16812dea8 . 1997-01-29 13:03:05 +00:00
Jim Meyering
20580c3f25 . 1997-01-29 02:54:21 +00:00
Jim Meyering
a6871ebbce Remove `t' prefix on all generated test file names.
Change suffixes from (.in, .exp, .out, .err) to (.I, .X, .O, .E).
Ensure that no test file (generated or maintainer-supplied) has a
longer than 14 characters.
1997-01-28 21:22:34 +00:00
Jim Meyering
0ce61713d5 (usage): Remove one space in message to make colons line up. 1997-01-28 03:44:27 +00:00
Jim Meyering
d705b6c469 . 1997-01-28 03:43:05 +00:00
Jim Meyering
771ab6e1bf (print_long_format): Fix off-by-one problem in size being passed to strftime. 1997-01-28 03:40:18 +00:00
Jim Meyering
b103723acc . 1997-01-27 03:15:14 +00:00
Jim Meyering
03ebea3ec6 . 1997-01-27 03:10:22 +00:00
Jim Meyering
5f011471a3 really make the messages identical 1997-01-27 02:28:39 +00:00
728 changed files with 73842 additions and 30615 deletions

166
ABOUT-NLS
View File

@@ -1,16 +1,16 @@
Notes on the GNU Translation Project
************************************
Notes on the Free Translation Project
*************************************
GNU is going international! The GNU Translation Project is a way to
get maintainers, translators, and users all together, so that GNU will
gradually become able to speak many languages. A few packages already
provide translations for their messages.
Free software is going international! The Free Translation Project
is a way to get maintainers of free software, translators, and users all
together, so that will gradually become able to speak many languages.
A few packages already provide translations for their messages.
If you found this `ABOUT-NLS' file inside a GNU distribution, you
may assume that the distributed package does use GNU `gettext'
internally, itself available at your nearest GNU archive site. But you
do *not* need to install GNU `gettext' prior to configuring, installing
or using this package with messages translated.
If you found this `ABOUT-NLS' file inside a distribution, you may
assume that the distributed package does use GNU `gettext' internally,
itself available at your nearest GNU archive site. But you do *not*
need to install GNU `gettext' prior to configuring, installing or using
this package with messages translated.
Installers will find here some useful hints. These notes also
explain how users should proceed for getting the programs to use the
@@ -31,19 +31,23 @@ should configure it using
./configure --with-included-gettext
to force usage of internationalizing routines provided within this
package, despite the existence of internationalizing capabilities in
the operating system where this package is being installed. So far, no
prior implementation provides as many useful features (such as locale
alias or message inheritance). It is also not possible to offer this
additional functionality on top of a `catgets' implementation. Future
versions of GNU `gettext' will very likely convey even more
functionality. So it might be a good idea to change to GNU `gettext'
as soon as possible.
package, despite the existence of internationalizing capabilities in the
operating system where this package is being installed. So far, only
the `gettext' implementation in the GNU C library version 2 provides as
many features (such as locale alias or message inheritance) as the
implementation here. It is also not possible to offer this additional
functionality on top of a `catgets' implementation. Future versions of
GNU `gettext' will very likely convey even more functionality. So it
might be a good idea to change to GNU `gettext' as soon as possible.
So you need not provide this option if you are using GNU libc 2 or
you have installed a recent copy of the GNU gettext package with the
included `libintl'.
INSTALL Matters
===============
Some GNU packages are "localizable" when properly installed; the
Some packages are "localizable" when properly installed; the
programs they contain can be made to speak your own native language.
Most such packages use GNU `gettext'. Other packages have their own
ways to internationalization, predating GNU `gettext'.
@@ -113,21 +117,20 @@ shell prompt, merely execute `setenv LANG de' (in `csh'),
can be done from your `.login' or `.profile' file, once and for all.
An operating system might already offer message localization for
many of its programs, while other programs (whether GNU or not) have
been installed locally with the full capabilities of GNU `gettext'.
Just using `gettext' extended syntax for `LANG' would break proper
localization of already available operating system programs. In this
case, users should set both `LANGUAGE' and `LANG' variables in their
environment, as programs using GNU `gettext' give preference to
`LANGUAGE'. For example, some Swedish users would rather read
translations in German than English for when Swedish is not available.
This is easily accomplished by setting `LANGUAGE' to `sv:de' while
leaving `LANG' to `sv'.
many of its programs, while other programs have been installed locally
with the full capabilities of GNU `gettext'. Just using `gettext'
extended syntax for `LANG' would break proper localization of already
available operating system programs. In this case, users should set
both `LANGUAGE' and `LANG' variables in their environment, as programs
using GNU `gettext' give preference to `LANGUAGE'. For example, some
Swedish users would rather read translations in German than English for
when Swedish is not available. This is easily accomplished by setting
`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
Translating Teams
=================
For the GNU Translation Project to be a success, we need interested
For the Free Translation Project to be a success, we need interested
people who like their own language and write it well, and who are also
able to synergize with other translators speaking the same language.
Each translation team has its own mailing list, courtesy of Linux
@@ -135,15 +138,14 @@ International. You may reach your translation team at the address
`LL@li.org', replacing LL by the two-letter ISO 639 code for your
language. Language codes are *not* the same as the country codes given
in ISO 3166. The following translation teams exist, as of December
1996:
1997:
Arabic `ar', Chinese `zh', Czech `cs', Danish `da', Dutch `nl',
English `en', Esperanto `eo', Finnish `fi', French `fr', German
`de', Greek `el', Hebrew `he', Hungarian `hu', Irish `ga', Italian
`it', Indonesian `id', Japanese `ja', Korean `ko', Latin `la',
Norwegian `no', Persian `fa', Polish `pl', Portuguese `pt',
Russian `ru', Slovenian `sl', Spanish `es', Swedish `sv', Telugu
`te', Turkish `tr' and Ukrainian `uk'.
Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
`hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
`pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
Swedish `sv', and Turkish `tr'.
For example, you may reach the Chinese translation team by writing to
`zh@li.org'.
@@ -160,55 +162,53 @@ message to `sv-request@li.org', having this message body:
*actively* in translations, or at solving translational difficulties,
rather than merely lurking around. If your team does not exist yet and
you want to start one, or if you are unsure about what to do or how to
get started, please write to `gnu-translation@gnu.ai.mit.edu' to reach
the GNU coordinator for all translator teams.
get started, please write to `translation@iro.umontreal.ca' to reach the
coordinator for all translator teams.
The English team is special. It works at improving and uniformizing
the terminology used in GNU. Proven linguistic skill are praised more
than programming skill, here. For the time being, please avoid
subscribing to the English team unless explicitly invited to do so.
the terminology in use. Proven linguistic skill are praised more than
programming skill, here.
Available Packages
==================
Languages are not equally supported in all GNU packages. The
following matrix shows the current state of GNU internationalization,
as of December 1996. The matrix shows, in regard of each package, for
which languages PO files have been submitted to translation
coordination.
Languages are not equally supported in all packages. The following
matrix shows the current state of internationalization, as of December
1997. The matrix shows, in regard of each package, for which languages
PO files have been submitted to translation coordination.
Ready PO files cs de en es fi fr ja ko nl no pl pt sl sv
.-------------------------------------------.
bash | [] [] [] | 3
bison | [] [] [] | 3
clisp | [] [] [] | 3
cpio | [] [] [] [] | 4
diffutils | [] [] [] [] | 4
enscript | [] [] [] [] [] | 5
fileutils | [] [] [] [] [] [] [] [] | 8
findutils | [] [] [] [] [] [] | 6
flex | [] [] | 2
gcal | [] [] [] | 3
gettext | [] [] [] [] [] [] [] [] [] [] | 11
grep | [] [] [] [] [] [] [] [] | 8
hello | [] [] [] [] [] [] [] [] [] [] | 10
id-utils | [] [] | 2
indent | | 0
libc | [] [] [] [] [] [] | 6
m4 | [] [] [] [] [] | 5
make | [] [] [] [] [] | 5
music | [] | 1
ptx | [] [] [] [] [] [] [] [] | 8
recode | [] [] [] [] [] [] [] | 7
sh-utils | [] [] [] [] [] | 5
sharutils | [] [] [] [] | 4
tar | [] [] [] [] [] [] [] [] [] | 9
texinfo | | 0
textutils | [] [] [] [] [] [] | 6
wdiff | [] [] [] [] [] [] [] [] | 8
`-------------------------------------------'
14 languages cs de en es fi fr ja ko nl no pl pt sl sv
27 packages 1 21 1 11 1 24 1 8 20 7 14 6 7 14 136
Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv
.----------------------------------------------------.
bash | [] [] [] | 3
bison | [] [] [] | 3
clisp | [] [] [] [] | 4
cpio | [] [] [] [] [] [] | 6
diffutils | [] [] [] [] [] | 5
enscript | [] [] [] [] [] [] | 6
fileutils | [] [] [] [] [] [] [] [] [] [] | 10
findutils | [] [] [] [] [] [] [] [] [] | 9
flex | [] [] [] [] | 4
gcal | [] [] [] [] [] | 5
gettext | [] [] [] [] [] [] [] [] [] [] [] | 12
grep | [] [] [] [] [] [] [] [] [] [] | 10
hello | [] [] [] [] [] [] [] [] [] [] [] | 11
id-utils | [] [] [] | 3
indent | [] [] [] [] [] | 5
libc | [] [] [] [] [] [] [] | 7
m4 | [] [] [] [] [] [] | 6
make | [] [] [] [] [] [] | 6
music | [] [] | 2
ptx | [] [] [] [] [] [] [] [] | 8
recode | [] [] [] [] [] [] [] [] [] | 9
sh-utils | [] [] [] [] [] [] [] [] | 8
sharutils | [] [] [] [] [] [] | 6
tar | [] [] [] [] [] [] [] [] [] [] [] | 11
texinfo | [] [] [] | 3
textutils | [] [] [] [] [] [] [] [] [] | 9
wdiff | [] [] [] [] [] [] [] [] | 8
`----------------------------------------------------'
17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv
27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179
Some counters in the preceding matrix are higher than the number of
visible blocks let us expect. This is because a few extra PO files are
@@ -219,8 +219,8 @@ dialects.
which it applies should also have been internationalized and
distributed as such by its maintainer. There might be an observable
lag between the mere existence a PO file and its wide availability in a
GNU distribution.
distribution.
If December 1996 seems to be old, you may fetch a more recent copy
If December 1997 seems to be old, you may fetch a more recent copy
of this `ABOUT-NLS' file on most GNU archive sites.

View File

@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -279,7 +279,7 @@ POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -304,8 +304,9 @@ the "copyright" line and a pointer to where the full notice is found.
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.
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.

27
GNUmakefile Normal file
View File

@@ -0,0 +1,27 @@
# Having a separate GNUmakefile lets me `include' the dynamically
# generated rules created via Makefile.maint as well as Makefile.maint itself.
# This makefile is used only if you run GNU Make.
# It is necessary if you want to build targets usually of interest
# only to the maintainer.
# Systems where /bin/sh is not the default shell need this. The $(shell)
# command below won't work with e.g. stock DOS/Windows shells.
SHELL = /bin/sh
have-Makefile := $(shell test -f Makefile && echo yes)
# If the user runs GNU make but has not yet run ./configure,
# give them a diagnostic.
ifeq ($(have-Makefile),yes)
include Makefile
include $(srcdir)/Makefile.maint
else
all:
@echo There seems to be no Makefile in this directory.
@echo "You must run ./configure before running \`make'."
@exit 1
endif

View File

@@ -31,7 +31,7 @@ The simplest way to compile this package is:
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes a while. While running, it prints some
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
@@ -167,7 +167,9 @@ operates.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made.
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
@@ -178,4 +180,3 @@ operates.
script, and exit.
`configure' also accepts some other, not widely useful, options.

113
Makefile.maint Normal file
View File

@@ -0,0 +1,113 @@
# -*-Makefile-*-
# This Makefile fragment is shared between fileutils, sh-utils, textutils.
maintainer-check:
if head ChangeLog| grep 'Version $(VERSION)' > /dev/null; then \
:; \
else \
echo "$(VERSION) not in ChangeLog; not tagging" 1>&2; \
exit 1; \
fi
$(MAKE) distcheck
$(MAKE) my-distcheck
# Tag before making distribution. Also, don't make a distribution if
# checks fail. Also, make sure the NEWS file is up-to-date.
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
cvs-dist: maintainer-check
pkg=`echo "$(PACKAGE)" | tr a-z A-Z`; \
ver=`echo "$(VERSION)" | sed 's/\./_/g'`; \
tag="$$pkg-$$ver"; \
echo tag=$$tag; \
if cvs -n log -h README| grep -e $$tag: > /dev/null; then \
echo "VERSION not new; not tagging" 1>&2; \
exit 1; \
fi; \
cvs update po; \
cvs tag -c $$tag
$(MAKE) dist
t=./=test
my-distcheck:
-rm -rf $(t)
mkdir $(t)
GZIP=$(GZIP) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
cd $(t)/$(distdir) \
&& ./configure --disable-nls \
&& $(MAKE) CFLAGS='-Wformat -Werror' \
&& $(MAKE) dvi \
&& $(MAKE) check \
&& $(MAKE) distclean
cd $(t) && mv $(distdir) $(distdir).old \
&& $(AMTAR) -zxf ../$(distdir).tar.gz
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
-rm -rf $(t)
@echo "========================"; \
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 a-z Xa-y)
PREV_VERSION_REGEXP := $(shell echo $(PREV_VERSION)|sed 's/\./\\./g')
v = Version
a_host=alpha.gnu.org
b_host=tug.org
c_host=ftp.enst.fr
a_url_dir=gnu/fetish
b_url_dir=gnu/fetish
c_url_dir=pub/gnu/gnits/fetish
a_real_dir=/fs/share/ftp/gnu/fetish
b_real_dir=/home/ftp/pub/gnu/fetish
c_real_dir=/pub/gnu/gnits/fetish
url_dir_list = $(foreach x,a b c,ftp://$($(x)_host)/$($(x)_url_dir))
real_dir_list = $(foreach x,a b c,ftp://$($(x)_host)$($(x)_real_dir))
md5 = $(shell md5sum < $(distdir).tar.gz|sed 's/ -//')
rel-check:
tarz=/tmp/rel-check-tarz-$$$$; \
md5_tmp=/tmp/rel-check-md5-$$$$; \
set -e; \
trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
wget -q --output-document=$$tarz $(url); \
echo "$(md5) -" > $$md5_tmp; \
md5sum -c $$md5_tmp < $$tarz
announcement: NEWS ChangeLog $(distdir).tar.gz
@( \
echo Subject: $(distdir) released; \
echo; \
echo FIXME: put comments here; \
echo; \
for url in $(url_dir_list); do \
echo " $$url/$(distdir).tar.gz"; \
done; \
echo; \
echo "$(md5) $(distdir).tar.gz"; \
echo; \
echo NEWS:; \
sed -n "/$(THIS_VERSION_REGEXP)/,/$(PREV_VERSION_REGEXP)/p" NEWS \
| grep -v '^\['; \
echo; \
echo ChangeLog entries:; \
sed -n "1,/$v $(PREV_VERSION_REGEXP)/p" \
ChangeLog; \
)
alpha:
$(MAKE) cvs-dist
$(MAKE) -s announcement > /tmp/announcement
ln $(distdir).tar.gz ../release
chmod a-w $(distdir).tar.gz
@echo =====================================
@for url in $(real_dir_list); do \
echo "ncftp -u $$url/"; \
done
@echo '# put $(distdir).tar.gz'
@echo '# send the /tmp/announcement e-mail'
@echo =====================================

63
THANKS
View File

@@ -1,21 +1,80 @@
This is just a start at listing e-mail addresses of contributors.
The rest of the addresses are still in the ChangeLog.
Arne Henrik Juul arnej@imf.unit.no
Achim Blumensath: blume@corona.oche.de
aldomel: aldomel@ix.netcom.com
Alen Muzinic: zveki@fly.cc.fer.hr
Akim Demaille: demaille@inf.enst.fr
Alain Magloire: alain@qnx.com
Alexey Solovyov: alekso@math.uu.se
Andreas Jaeger: jaeger@gnu.org
Andreas Schwab: schwab@issan.informatik.uni-dortmund.de
Andrew Dalke: dalke@bioreason.com
Andrew Tridgell: tridge@samba.org
Andries Brouwer: Andries.Brouwer@cwi.nl
Arne Henrik Juul: arnej@imf.unit.no
Bauke Jan Douma: bjdouma@xs4all.nl
Bengt Martensson: bengt@mathematik.uni-Bremen.de
Bernd Leibing: bernd.leibing@rz.uni-ulm.de
Bjorn Helgaas: helgaas@rsn.hp.com
Bob McCracken: kerouac@ravenet.com
Brendan O'Dea: bod@compusol.com.au
Charles Karney: karney@pppl.gov
Christian von Roques: roques@pond.sub.org
Colin Plumb: colin@nyx.net
Dirk Lattermann: dlatt@t-online.de
Don Parsons: dparsons@synapse.kent.edu
Eirik Fuller: eirik@netcom.com
Eli Zaretskii: eliz@is.elta.co.il
Emile LeBlanc: leblanc@math.toronto.edu
François Pinard: pinard@iro.umontreal.ca
Galen Hazelwood: galenh@micron.net
Göran Uddeborg: goeran@uddeborg.pp.se
Greg McGary: gkm@eng.ascend.com
Hugh Daniel: hugh@xanadu.com
James: james@albion.glarp.com
James Antill: jmanti%essex.ac.uk@seralph21.essex.ac.uk
James Tanis: jtt@soscorp.com
Jamie Lokier: jamie@imbolc.ucc.ie
Janos Farkas: chexum@shadow.banki.hu
Jesse Thilo: jgt2@eecs.lehigh.edu
Joakim Rosqvist: dvljrt@cs.umu.se
Johan Danielsson: joda@pdc.kth.se
John Bley: jbb6@acpub.duke.edu
John Gatewood Ham: zappaman@alphabox.compsci.buu.ac.th
John Gotts: jgotts@umich.edu
jvogel: jvogel@linkny.com
Karl Heuer: kwzh@gnu.org
Kjetil Torgrim Homme: kjetilho@ifi.uio.no
Larry McVoy: lm@sgi.com
Lars Hecking: lhecking@nmrc.ucc.ie
Lorne Baker: lbaker@nitro.avint.net
Marcus Daniels: marcus@sysc.pdx.edu
Mark A. Thomas: thommark@access.digex.net
Mark Harris: mark@monitor.designacc.com
Mark Kettenis: kettenis@phys.uva.nl
Marty Leisner: leisner@sdsp.mc.xerox.com
Masami Takikawa: takikawm@CS.ORST.EDU
Matthew S. Levine: mslevine@theory.lcs.mit.edu
Matthew Swift: swift@alum.mit.edu
Matthias Urlichs: smurf@noris.de
Michiel Bacchiani: bacchian@raven.bu.edu
Miles Bader: miles@gnu.ai.mit.edu
Noel Cragg: noel@red-bean.com
Olav Morkrid: olav@funcom.com
Per Kristian Hove: perhov@math.ntnu.no
Peter Eriksson: peter@ifm.liu.se
Paul Eggert: eggert@twinsun.com
Philippe De Muyter: phdm@macqel.be
Rainer Orth: ro@TechFak.Uni-Bielefeld.DE
Ross Ridge: rridge@calum.csclub.uwaterloo.ca
Santiago Vila Doncel: sanvila@ctv.es
Santiago Vila Doncel: sanvila@unex.es
Stuart Kemp: skemp@peter.bmc.com
Thomas Bushnell, n/BSG: thomas@gnu.ai.mit.edu
Torbjorn Lindgren: tl@funcom.no
Tony Leneis: tony@plaza.ds.adp.com
Ulrich Drepper: drepper@cygnus.com
Volker Borchert: bt@teknon.de
Michael Veksler: mveksler@techunix.technion.ac.il
Wayne Stewart: wstewa@atl.com
William Bader: william@nscs.fast.net

View File

@@ -1,20 +1,19 @@
Makefile
fileutils.info
version.texi
fileutils.info*
fileutils.log
fileutils.dvi
fileutils.aux
fileutils.toc
fileutils.cp
fileutils.fn
fileutils.vr
fileutils.tp
fileutils.ky
fileutils.pg
fileutils.cm
fileutils.fl
fileutils.op
fileutils.cp
fileutils.cps
fileutils.dvi
fileutils.fl
fileutils.fn
fileutils.info
fileutils.info*
fileutils.ky
fileutils.log
fileutils.op
fileutils.pg
fileutils.toc
fileutils.tp
fileutils.vr
stamp-vti
version.texi

View File

@@ -1,12 +1,14 @@
## Process this file with automake to produce Makefile.in
## Process this file with automake to produce Makefile.in -*-Makefile-*-
info_TEXINFOS = fileutils.texi
# FIXME: remove texinfo.tex when automake has been fixed to include it
# automatically
EXTRA_DIST = perm.texi getdate.texi texinfo.tex
EXTRA_DIST = perm.texi getdate.texi
# Tell makeinfo to put everything in a single info file: sh-utils.info.
# Otherwise, it would also generate files with names like sh-utils.info-[123],
# and those names all map to one 14-byte name (sh-utils.info-) on some crufty
# The following is necessary if the package name is 8 characters or longer.
# If the info documentation would be split into 10 or more separate files,
# then this is necessary even if the package name is 7 characters long.
#
# Tell makeinfo to put everything in a single info file: <package>.info.
# Otherwise, it would also generate files with names like <package>.info-[123],
# and those names all map to one 14-byte name (<package>.info-) on some crufty
# old systems.
MAKEINFO = makeinfo --no-split

View File

@@ -1,11 +1,16 @@
# Makefile.in generated automatically by automake 1.1l from Makefile.am
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -26,41 +31,88 @@ mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_FLAG =
transform = @program_transform_name@
YACC = @YACC@
GENCAT = @GENCAT@
PERL = @PERL@
MV = @MV@
GMSGFMT = @GMSGFMT@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AMTAR = @AMTAR@
AMTARFLAGS = @AMTARFLAGS@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
DF_PROG = @DF_PROG@
GENCAT = @GENCAT@
GETCONF = @GETCONF@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MVDIR_PROG = @MVDIR_PROG@
PACKAGE = @PACKAGE@
PERL = @PERL@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
LN = @LN@
RM = @RM@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
YACC = @YACC@
l = @l@
info_TEXINFOS = fileutils.texi
# FIXME: remove texinfo.tex when automake has been fixed to include it
# automatically
EXTRA_DIST = perm.texi getdate.texi texinfo.tex
EXTRA_DIST = perm.texi getdate.texi
# Tell makeinfo to put everything in a single info file: sh-utils.info.
# Otherwise, it would also generate files with names like sh-utils.info-[123],
# and those names all map to one 14-byte name (sh-utils.info-) on some crufty
# The following is necessary if the package name is 8 characters or longer.
# If the info documentation would be split into 10 or more separate files,
# then this is necessary even if the package name is 7 characters long.
#
# Tell makeinfo to put everything in a single info file: <package>.info.
# Otherwise, it would also generate files with names like <package>.info-[123],
# and those names all map to one 14-byte name (<package>.info-) on some crufty
# old systems.
MAKEINFO = makeinfo --no-split
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
DIST_SOURCES =
TEXI2DVI = texi2dvi
INFO_DEPS = fileutils.info
DVIS = fileutils.dvi
@@ -69,45 +121,42 @@ DIST_COMMON = Makefile.am Makefile.in mdate-sh stamp-vti texinfo.tex \
version.texi
PACKAGE = @PACKAGE@
VERSION = @VERSION@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) \
$(TEXINFOS) $(MANS) $(EXTRA_DIST)
TAR = tar
default: all
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
.SUFFIXES: .texi .texinfo .info .dvi .ps
$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL)
cd $(top_srcdir) && automake --gnu doc/Makefile
.SUFFIXES: .dvi .info .ps .texi .texinfo .txi
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
version.texi: @MAINT@stamp-vti
$(srcdir)/version.texi: stamp-vti
@:
stamp-vti: fileutils.texi $(top_srcdir)/configure.in
echo "@set UPDATED `cd $(srcdir) \
&& $(SHELL) ./mdate-sh fileutils.texi`" > vti.tmp
echo "@set EDITION $(VERSION)" >> vti.tmp
echo "@set VERSION $(VERSION)" >> vti.tmp
cmp -s vti.tmp $(srcdir)/version.texi || cp vti.tmp $(srcdir)/version.texi
rm vti.tmp
echo timestamp > $(srcdir)/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
@cmp -s vti.tmp $(srcdir)/version.texi \
|| (echo "Updating $(srcdir)/version.texi"; \
cp vti.tmp $(srcdir)/version.texi)
-@rm -f vti.tmp
@cp $(srcdir)/version.texi $@
mostlyclean-vti:
rm -f vti.tmp
-rm -f vti.tmp
clean-vti:
distclean-vti:
maintainer-clean-vti:
@MAINT@rm -f stamp-vti version.texi
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
fileutils.info: fileutils.texi version.texi
fileutils.dvi: fileutils.texi version.texi
@@ -116,6 +165,7 @@ fileutils.dvi: fileutils.texi version.texi
DVIPS = dvips
.texi.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
@@ -123,45 +173,84 @@ DVIPS = dvips
TEXINPUTS=$(srcdir):$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.texi:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo.dvi:
TEXINPUTS=$(srcdir):$$TEXINPUTS $(TEXI2DVI) $<
TEXINPUTS=$(srcdir):$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.txi.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.txi.dvi:
TEXINPUTS=$(srcdir):$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.txi:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.dvi.ps:
$(DVIPS) $< -o $@
install-info-am: $(INFO_DEPS)
$(NORMAL_INSTALL)
$(mkinstalldirs) $(infodir)
@for file in $(INFO_DEPS); do \
for ifile in `cd $(srcdir) && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $(srcdir)/$$ifile; then \
echo "$(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile"; \
$(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(infodir)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
d=$(srcdir); \
for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $$d/$$ifile; then \
echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
$(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
else : ; fi; \
done; \
done
$(POST_INSTALL)
@if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
for file in $(INFO_DEPS); do \
echo "install-info --info-dir=$(infodir) $(infodir)/$$file";\
install-info --info-dir=$(infodir) $(infodir)/$$file; :;\
@$(POST_INSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
done; \
else : ; fi
uninstall-info:
if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
ii=yes; \
else ii=; fi; \
for file in $(INFO_DEPS); do \
(cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
test -z $ii || install-info --info-dir=$(infodir) --remove $$file; \
$(PRE_UNINSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file"; \
install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
done; \
else :; fi
@$(NORMAL_UNINSTALL)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
(if cd $(DESTDIR)$(infodir); then \
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
else :; fi); \
done
dist-info: $(INFO_DEPS)
for base in $(INFO_DEPS); do \
list='$(INFO_DEPS)'; \
for base in $$list; do \
d=$(srcdir); \
for file in `cd $$d && eval echo $$base*`; do \
test -f $(distdir)/$$file \
@@ -170,18 +259,25 @@ dist-info: $(INFO_DEPS)
done; \
done
mostlyclean-info:
rm -f fileutils.aux fileutils.cp fileutils.cps fileutils.dvi \
fileutils.fn fileutils.fns fileutils.ky fileutils.log \
fileutils.pg fileutils.toc fileutils.tp fileutils.vr \
fileutils.op
mostlyclean-aminfo:
-rm -f fileutils.aux fileutils.cp fileutils.cps fileutils.dvi \
fileutils.fn fileutils.fns fileutils.pgs fileutils.ky \
fileutils.kys fileutils.ps fileutils.log fileutils.pg \
fileutils.toc fileutils.tp fileutils.tps fileutils.vr \
fileutils.vrs fileutils.op fileutils.tr fileutils.cv \
fileutils.cn
clean-info:
clean-aminfo:
distclean-info:
distclean-aminfo:
maintainer-clean-info:
for i in $(INFO_DEPS); do rm -f `eval echo $$i*`; done
maintainer-clean-aminfo:
cd $(srcdir) && for i in $(INFO_DEPS); do \
rm -f $$i; \
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
rm -f $$i-[0-9]*; \
fi; \
done
tags: TAGS
TAGS:
@@ -189,68 +285,86 @@ TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = doc
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
distdir=`cd $(distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits doc/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
$(MAKE) distdir="$(distdir)" dist-info
info: $(INFO_DEPS)
dvi: $(DVIS)
check: all
$(MAKE)
installcheck:
install-exec:
$(NORMAL_INSTALL)
install-data: install-info-am
$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
info-am: $(INFO_DEPS)
info: info-am
dvi-am: $(DVIS)
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am:
install-exec: install-exec-am
install: install-exec install-data all
@:
uninstall: uninstall-info
all: $(INFO_DEPS) Makefile
install-data-am: install-info-am
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-info
uninstall: uninstall-am
all-am: Makefile $(INFO_DEPS)
all-redirect: all-am
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
installdirs:
$(mkinstalldirs) $(infodir)
$(mkinstalldirs) $(DESTDIR)$(infodir)
mostlyclean-generic:
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
rm -f Makefile $(DISTCLEANFILES)
rm -f config.cache config.log stamp-h
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-vti mostlyclean-info mostlyclean-generic
mostlyclean-am: mostlyclean-vti mostlyclean-aminfo mostlyclean-generic
clean: clean-vti clean-info clean-generic mostlyclean
mostlyclean: mostlyclean-am
distclean: distclean-vti distclean-info distclean-generic clean
rm -f config.status
clean-am: clean-vti clean-aminfo clean-generic mostlyclean-am
maintainer-clean: maintainer-clean-vti maintainer-clean-info \
maintainer-clean-generic distclean
clean: clean-am
distclean-am: distclean-vti distclean-aminfo distclean-generic clean-am
distclean: distclean-am
maintainer-clean-am: maintainer-clean-vti maintainer-clean-aminfo \
maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: default mostlyclean-vti distclean-vti clean-vti \
maintainer-clean-vti install-info-am uninstall-info mostlyclean-info \
distclean-info clean-info maintainer-clean-info tags distdir info dvi \
installcheck install-exec install-data install uninstall all \
maintainer-clean: maintainer-clean-am
.PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \
install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \
clean-aminfo maintainer-clean-aminfo tags distdir info-am info dvi-am \
dvi check check-am installcheck-am installcheck install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all install-strip \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean

View File

@@ -4,6 +4,8 @@
@cindex date input formats
@findex getdate
First, a quote:
@quotation
Our units of temporal measurement, from seconds on up to months, are so
complicated, asymmetrical and disjunctive so as to make coherent mental
@@ -44,7 +46,7 @@ midnight, 1 January 1970 UCT.
* General date syntax:: Common rules.
* Calendar date item:: 19 Dec 1994.
* Time of day item:: 9:20pm.
* Timezone item:: EST, DST, BST, UCT, AHST, ...
* Time zone item:: EST, DST, BST, UTC, ...
* Day of week item:: Monday and others.
* Relative item in date strings:: next tuesday, 2 years ago.
* Pure numbers in date strings:: 19931219, 1440.
@@ -203,161 +205,139 @@ 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}.
@cindex timezone correction
@cindex minutes, timezone correction by
The time may alternatively be followed by a timezone correction,
@cindex time zone correction
@cindex minutes, time zone correction by
The time may alternatively be followed by a time zone correction,
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 timezone correction is given this way, it
forces interpretation of the time in UTC, overriding any previous
specification for the timezone or the local timezone. The @var{minute}
part of the time of the day may not be elided when a timezone correction
is used. This is the only way to specify a timezone correction by
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
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
fractional parts of an hour.
Either @samp{am}/@samp{pm} or a timezone correction may be specified,
Either @samp{am}/@samp{pm} or a time zone correction may be specified,
but not both.
@node Timezone item
@section Timezone item
@node Time zone item
@section Time zone item
@cindex timezone item
@cindex time zone item
A @dfn{timezone item} specifies an international timezone, indicated by
a small set of letters. Any included period is ignored. Military
timezone designations use a single letter. Currently, only integral
zone hours may be represented in a timezone item. See the previous
section for a finer control over the timezone correction.
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.
Here are many non-daylight-savings-time timezones, indexed by the zone
Here are many non-daylight-saving-time time zones, indexed by the zone
hour value.
@table @asis
@item +000
@cindex Greenwich Mean Time
@cindex Universal Coordinated Time
@cindex Western European Time
@samp{GMT} for Greenwich Mean, @samp{UT} or @samp{UTC} for Universal
(Coordinated), @samp{WET} for Western European and @samp{Z} for
militaries.
@item +100
@cindex West African Time
@samp{WAT} for West Africa and
@samp{A} for militaries.
@item +200
@cindex Azores Time
@samp{AT} for Azores and @samp{B} for militaries.
@item +300
@samp{C} for militaries.
@item +400
@cindex Atlantic Standard Time
@samp{AST} for Atlantic Standard and @samp{D} for militaries.
@item +500
@cindex Eastern Standard Time
@samp{E} for militaries and @samp{EST} for Eastern Standard.
@item +600
@cindex Central Standard Time
@samp{CST} for Central Standard and @samp{F} for militaries.
@item +700
@cindex Mountain Standard Time
@samp{G} for militaries and @samp{MST} for Mountain Standard.
@item +800
@cindex Pacific Standard Time
@samp{H} for militaries and @samp{PST} for Pacific Standard.
@item +900
@cindex Yukon Standard Time
@samp{I} for militaries and @samp{YST} for Yukon Standard.
@item +1000
@cindex Alaska-Hawaii Time
@cindex Central Alaska Time
@cindex Hawaii Standard Time
@samp{AHST} for Alaska-Hawaii Standard, @samp{CAT} for Central Alaska,
@samp{HST} for Hawaii Standard and @samp{K} for militaries.
@item +1100
@cindex Nome Standard Time
@samp{L} for militaries and @samp{NT} for Nome.
@item +1200
@cindex International Date Line West
@samp{IDLW} for International Date Line West and @samp{M} for
militaries.
@item -100
@cindex Central European Time
@cindex Middle European Time
@cindex Middle European Winter Time
@cindex French Winter Time
@cindex Swedish Winter Time
@samp{CET} for Central European, @samp{FWT} for French Winter,
@samp{MET} for Middle European, @samp{MEWT} for Middle European
Winter, @samp{N} for militaries and @samp{SWT} for Swedish Winter.
@item -200
@cindex Eastern European Time
@cindex USSR Zone
@samp{EET} for Eastern European, USSR Zone 1 and @samp{O} for militaries.
@item -300
@cindex Baghdad Time
@samp{BT} for Baghdad, USSR Zone 2 and @samp{P} for militaries.
@item -400
@samp{Q} for militaries and @samp{ZP4} for USSR Zone 3.
@item -500
@samp{R} for militaries and @samp{ZP5} for USSR Zone 4.
@item -600
@samp{S} for militaries and @samp{ZP6} for USSR Zone 5.
@item -700
@cindex West Australian Standard Time
@samp{T} for militaries and @samp{WAST} for West Australian Standard.
@item -800
@cindex China Coast Time
@samp{CCT} for China Coast, USSR Zone 7 and @samp{U} for militaries.
@item -900
@cindex Japan Standard Time
@samp{JST} for Japan Standard, USSR Zone 8 and @samp{V} for militaries.
@item -1000
@cindex East Australian Standard Time
@cindex Guam Standard Time
@samp{EAST} for East Australian Standard, @samp{GST} for Guam
Standard, USSR Zone 9 and @samp{W} for militaries.
@item -1200
@samp{Y} for militaries.
@item -1100
@samp{X} for militaries.
@item -1200
@cindex International Date Line East
@cindex New Zealand Standard Time
@samp{IDLE} for International Date Line East, @samp{NZST} for
New Zealand Standard, @samp{NZT} for New Zealand and @samp{Y} 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 savings time
Here are many DST timezones, indexed by the zone hour value. Also, by
following a non-DST timezone by the string @samp{DST} in a separate word
(that is, separated by some whitespace), the corresponding DST timezone
@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 0
@samp{BST} for British Summer.
@item +400
@samp{ADT} for Atlantic Daylight.
@item +500
@samp{EDT} for Eastern Daylight.
@item +600
@samp{CDT} for Central Daylight.
@item +700
@samp{MDT} for Mountain Daylight.
@item +800
@item -0700
@samp{PDT} for Pacific Daylight.
@item +900
@samp{YDT} for Yukon Daylight.
@item +1000
@samp{HDT} for Hawaii Daylight.
@item -100
@samp{MEST} for Middle European Summer, @samp{MESZ} for Middle European
Summer, @samp{SST} for Swedish Summer and @samp{FST} for French Summer.
@item -700
@samp{WADT} for West Australian Daylight.
@item -1000
@samp{EADT} for Eastern Australian Daylight.
@item -1200
@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
@@ -487,15 +467,15 @@ year.
@cindex MacKenzie, David
@cindex Meyering, Jim
@code{getdate} was originally implemented by Steven M. Bellovin
(@samp{smb@@research.att.com}) while at the University of North Carolina
(@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 (@samp{rsalz@@bbn.com})
and Jim Berets (@samp{jberets@@bbn.com}) in August, 1990. Various
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.
@cindex Pinard, F.
@cindex Berry, K.
This chapter was originally produced by Fran@,{c}ois Pinard
(@samp{pinard@@iro.umontreal.ca}) from the @file{getdate.y} source code,
and then edited by K.@: Berry (@samp{kb@@cs.umb.edu}).
(@email{pinard@@iro.umontreal.ca}) from the @file{getdate.y} source code,
and then edited by K.@: Berry (@email{kb@@cs.umb.edu}).

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# mdate-sh - get modification time of a file and pretty-print it.
# Copyright (C) 1995, 1996 Free Software Foundation, Inc.
# Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
# Get modification time of a file or directory and pretty-print it.
# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,8 +14,8 @@
# 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.
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Prevent date giving response in another language.
LANG=C
@@ -25,14 +25,15 @@ export LC_ALL
LC_TIME=C
export LC_TIME
# Get the extended ls output of the file.
# Get the extended ls output of the file or directory.
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
if ls -L /dev/null 1>/dev/null 2>&1; then
set - `ls -L -l $1`
set - x`ls -L -l -d $1`
else
set - `ls -l $1`
set - x`ls -l -d $1`
fi
# The month is at least the fourth argument.
# (3 shifts here, the next inside the loop)
# The month is at least the fourth argument
# (3 shifts here, the next inside the loop).
shift
shift
shift

View File

@@ -113,15 +113,14 @@ by the Foundation.
@end titlepage
@ifinfo
@ifnottex
@node Top
@top GNU shell utilities
@cindex shell utilities
@cindex utilities for shell programming
This manual minimally documents version @value{VERSION} of the GNU shell
utilities.
This manual documents version @value{VERSION} of the GNU shell utilities.
@menu
* Introduction:: Caveats, overview, and authors.
@@ -141,7 +140,7 @@ utilities.
* Index:: General index.
@end menu
@end ifinfo
@end ifnottex
@node Introduction
@@ -167,7 +166,7 @@ The GNU shell utilities are mostly compatible with the POSIX.2 standard.
@c This paragraph appears in all of fileutils.texi, textutils.texi, and
@c sh-utils.texi too -- so be sure to keep them consistent.
@cindex bugs, reporting
Please report bugs to @samp{sh-utils-bugs@@gnu.ai.mit.edu}. Remember
Please report bugs to @samp{bug-sh-utils@@gnu.org}. Remember
to include the version number, machine architecture, input files, and
any other information needed to reproduce the bug: your input, what you
expected, what you got, and why it is wrong. Diffs are welcome, but
@@ -182,8 +181,10 @@ sometimes difficult to infer. @xref{Bugs, , , gcc, GNU CC}.
@cindex Pinard, @value{Francois}
@cindex Berry, Karl
@cindex Stallman, Richard
This manual is based on the Unix man pages in the distribution, which
were originally written by David MacKenzie and updated by Jim Meyering.
This manual was originally derived from the Unix man pages in the
distribution, which were written by David MacKenzie and updated by Jim
Meyering. What you are reading now is the authoritative documentation
for these utilities; the man pages are no longer being maintained.
@value{Francois} Pinard did the initial conversion to Texinfo format.
Karl Berry did the indexing, some reorganization, and editing of the results.
Richard Stallman contributed his usual invaluable insights to the
@@ -717,53 +718,92 @@ Exit status:
@end display
@menu
* Relations for expr:: | & < <= = == != >= >
* String expressions:: <colon> match substr index length quote
* Numeric expressions:: + - * / %
* String expressions:: <colon> match substr index length
* Relations for expr:: | & < <= = == != >= >
* Examples of expr:: Examples.
@end menu
@node Relations for expr
@subsection Relations for @code{expr}
@node String expressions
@subsection String expressions
@cindex connectives, logical
@cindex logical connectives
@cindex relations, numeric or string
@cindex string expressions
@cindex expressions, string
The usual logical connectives and relations, in order of precedence.
@code{expr} supports pattern matching and other string operators. These
have lower precedence than both the numeric and relational operators (in
the next sections).
@table @samp
@item |
@kindex |
@cindex logical or operator
@cindex or operator
Yields its first argument if it is neither null nor 0, otherwise its
second argument.
@item @var{string} : @var{regex}
@cindex pattern matching
@cindex regular expression matching
@cindex matching patterns
Perform pattern matching. The arguments are coerced 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.
@item &
@kindex &
@cindex logical and operator
@cindex and operator
Yields its first argument if neither argument is null or 0, otherwise
0.
If the match succeeds and @var{regex} uses @samp{\(} and @samp{\)}, the
@code{:} expression returns the part of @var{string} that matched the
subexpression; otherwise, it returns the number of characters matched.
@item < <= = == != >= >
@kindex <
@kindex <=
@kindex =
@kindex ==
@kindex >
@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
both arguments to numbers and do a numeric comparison; if either
coercion fails, it does a lexicographic comparison.
If the match fails, the @code{:} operator returns the null string if
@samp{\(} and @samp{\)} are used in @var{regex}, otherwise 0.
@kindex \( @r{regexp operator}
Only the first @samp{\( @dots{} \)} pair is relevant to the return
value; additional pairs are meaningful only for grouping the regular
expression operators.
@kindex \+ @r{regexp operator}
@kindex \? @r{regexp operator}
@kindex \| @r{regexp operator}
In the regular expression, @code{\+}, @code{\?}, and @code{\|} are
operators which respectively match one or more, zero or one, or separate
alternatives. SunOS and other @code{expr}'s treat these as regular
characters. (POSIX allows either behavior.)
@xref{Top, , Regular Expression Library, regex, Regex}, for details of
regular expression syntax. Some examples are in @ref{Examples of expr}.
@item match @var{string} @var{regex}
@findex match
An alternative way to do pattern matching. This is the same as
@w{@samp{@var{string} : @var{regex}}}.
@item substr @var{string} @var{position} @var{length}
@findex substr
Returns the substring of @var{string} beginning at @var{position}
with length at most @var{length}. If either @var{position} or
@var{length} is negative, zero, or non-numeric, returns the null string.
@item index @var{string} @var{charset}
@findex index
Returns the first position in @var{string} where the first character in
@var{charset} was found. If no character in @var{charset} is found in
@var{string}, return 0.
@item length @var{string}
@findex length
Returns the length of @var{string}.
@item quote @var{token}
@findex quote
Interpret @var{token} as a string, even if it is a keyword like @var{match}
or an operator like @code{/}.
This makes it possible to test @code{expr length quote "$x"} or
@code{expr quote "$x" : '.*/\(.\)'} and have it do the right thing even if
the value of @var{$x} happens to be (for example) @code{/} or @code{index}.
This operator is a GNU extension. It is disabled when
the environment variable @env{POSIXLY_CORRECT} is set.
@end table
To make @code{expr} interpret keywords as strings, you must use the
@code{quote} operator.
@node Numeric expressions
@subsection Numeric expressions
@@ -771,9 +811,9 @@ coercion fails, it does a lexicographic comparison.
@cindex numeric expressions
@cindex expressions, numeric
Numeric operators, in order of increasing precedence. The connectives
(previous section) have higher precedence, the string operators
(following section) have lower.
@code{expr} supports the usual numeric operators, in order of increasing
precedence. The string operators (previous section) have lower precedence,
the connectives (next section) have higher.
@table @samp
@@ -798,67 +838,51 @@ numbers; an error occurs if this cannot be done.
@end table
@node String expressions
@subsection String expressions
@node Relations for expr
@subsection Relations for @code{expr}
@cindex string expressions
@cindex expressions, string
@cindex connectives, logical
@cindex logical connectives
@cindex relations, numeric or string
String operators. These have lowest precedence.
@code{expr} supports the usual logical connectives and relations. These
are higher precedence than either the string or numeric operators
(previous sections). Here is the list, lowest-precedence operator first.
@table @samp
@item @var{string} : @var{regex}
@cindex pattern matching
@cindex regular expression matching
@cindex matching patterns
Perform pattern matching. The arguments are coerced to strings and the
second is considered to be a (basic, a la @code{grep}) regular
expression, with a @code{^} implicitly prepended. The first argument is
then matched against this regular expression.
@item |
@kindex |
@cindex logical or operator
@cindex or operator
Returns its first argument if that is neither null nor 0, otherwise its
second argument.
If the match succeeds and @var{regex} uses @samp{\(} and @samp{\)}, the
@code{:} expression returns the part of @var{string} that matched the
subexpression; otherwise, it returns the number of characters matched.
@item &
@kindex &
@cindex logical and operator
@cindex and operator
Return its first argument if neither argument is null or 0, otherwise
0.
If the match fails, the @code{:} operator returns the null string if
@samp{\(} and @samp{\)} are used in @var{regex}, otherwise 0.
Only the first @samp{\( @dots{} \)} pair is relevant to the return
value; additional pairs are meaningful only for grouping the regular
expression operators.
@xref{Top, , Regular Expression Library, regex, Regex}, for details of
regular expression syntax.
@item match @var{string} @var{regex}
@findex match
An alternative way to do pattern matching. This is the same as
@w{@samp{@var{string} : @var{regex}}}.
@item substr @var{string} @var{position} @var{length}
@findex substr
Returns the substring of @var{string} beginning at @var{position}
with length at most @var{length}. If either @var{position} or
@var{length} is negative or non-numeric, returns the null string.
@item index @var{string} @var{character-class}
@findex index
Returns the first position in @var{string} where the first character in
@var{charset} was found. If no character in @var{charset} is found in
@var{string}, return 0.
@item length @var{string}
@findex length
Returns the length of @var{string}.
@item < <= = == != >= >
@kindex <
@kindex <=
@kindex =
@kindex ==
@kindex >
@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
both arguments to numbers and do a numeric comparison; if either
coercion fails, it does a lexicographic comparison.
@end table
The keywords cannot be used as strings.
@node Examples of expr
@subsection Examples of @code{expr}
@subsection Examples of using @code{expr}
@cindex examples of @code{expr}
Here are a few examples, including quoting for shell metacharacters.
@@ -874,6 +898,12 @@ To print the non-directory part of the file name stored in
expr $fname : '.*/\(^.*\)' '^|' $fname
@end example
An example showing that @code{\+} is an operator:
@example
expr aaa : 'a\+'
@result{} 3
@end example
@example
expr abc : 'a\(.\)c'
@result{} b
@@ -881,7 +911,8 @@ expr index abcdef cz
@result{} 3
expr index index a
@error{} expr: syntax error
expr index quote index a
@result{} 0
@end example
@@ -1109,15 +1140,16 @@ The only options are a lone @samp{--help} or
Synopses:
@example
stty [@var{setting}]@dots{}
stty [@var{option}] [@var{setting}]@dots{}
stty [@var{option}]
@end example
If given no arguments, @code{stty} prints the baud rate, line
If given no line settings, @code{stty} prints the baud rate, line
discipline number (on systems that support it), and line settings
that have been changed from the values set by @samp{stty sane}.
Mode reading and setting are performed on the tty line connected to
standard input.
By default, mode reading and setting are performed on the tty line
connected to standard input, although this can be modified by the
@samp{--file} option.
@code{stty} accepts many non-option arguments that change aspects of
the terminal line operation, as described below.
@@ -1129,7 +1161,19 @@ The program accepts the following options. Also see @ref{Common options}.
@itemx --all
@opindex -a
@opindex --all
Print all current settings in human-readable form.
Print all current settings in human-readable form. This option may not
be used in combination with any line settings.
@item -F @var{device}
@itemx --file @var{device}
@opindex -F
@opindex --file
Set the line opened by the filename specified in @var{device} instead of
the tty line connected to standard input. This option is necessary
because opening a POSIX tty requires use of the @code{O_NONDELAY} flag to
prevent a POSIX tty from blocking until the carrier detect line is high if
the @code{clocal} flag is not set. Hence, it is not always possible
to allow the shell to open the device in the traditional manner.
@item -g
@itemx --save
@@ -1137,7 +1181,8 @@ Print all current settings in human-readable form.
@opindex --save
@cindex machine-readable @code{stty} output
Print all current settings in a form that can be used as an argument to
another @code{stty} command to restore the current settings.
another @code{stty} command to restore the current settings. This option
may not be used in combination with any line settings.
@end table
@@ -1704,7 +1749,7 @@ Tell the kernel that the terminal has @var{n} columns. Non-POSIX.
@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
typically use the environment variables @code{LINES} and @code{COLUMNS}
typically use the environment variables @env{LINES} and @env{COLUMNS}
instead; however, GNU @code{stty} does not know anything about them.)
Non-POSIX.
@@ -2024,6 +2069,14 @@ After the login time, print the number of hours and minutes that the
user has been idle. @samp{.} means the user was active in last minute.
@samp{old} means the user was idle for more than 24 hours.
@item -l
@itemx --lookup
@opindex -l
@opindex --lookup
Attempt to canonicalize hostnames found in utmp through a DNS lookup. This
is not the default because it can cause significant delays on systems with
automatic dial-up internet access.
@item -H
@itemx --heading
@opindex -H
@@ -2337,6 +2390,33 @@ input. This is useful when you have many dates to process, because the
system overhead of starting up the @code{date} executable many times can
be considerable.
@item -I[@var{timespec}]
@itemx --iso-8601[=@var{timespec}]
@opindex -I[@var{timespec}]
@opindex --iso-8601[=@var{timespec}]
Display the date using the ISO 8601 format, @samp{%Y-%m-%d}.
The optional argument @var{timespec} specifies the number of additional
terms of the time to include. It can be one of the following:
@table @samp
@item auto
The default behavior: print just the date.
@item hours
Append the hour of the day to the date.
@item minutes
Append the hours and minutes.
@item seconds
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
@@ -2439,6 +2519,50 @@ use @samp{date --rfc}. I just did and saw this:
Mon, 25 Mar 1996 23:34:17 -0600
@end example
@item
To convert a date string to the number of seconds since the epoch
(which is 1970-01-01 00:00:00 UTC), use the @samp{--date} option with
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),
thus a total of five hours and one second after the epoch:
@example
date --date='1970-01-01 00:00:01 UTC +5 hours' +%s
18001
@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
interpreting the string. Here's what you would get if you were in
Greenwich, England:
@example
# local time zone used
date --date='1970-01-01 00:00:01' +%s
1
@end example
@item
If you're sorting or graphing dated data, your raw date values may be
represented as seconds since the epoch. But few people can look at
the date @samp{946684800} and casually note ``Oh, that's the first second
of the year 2000.''
@example
date --date='2000-01-01 UTC' +%s
946684800
@end example
To convert such an unwieldy number of seconds back to
a more readable form, use a command like this:
@smallexample
date -d '1970-01-01 946684800 sec' +"%Y-%m-%d %T %z"
2000-01-01 00:00:00 +0000
@end smallexample
@end itemize
@@ -2593,7 +2717,7 @@ Ordinarily, filenames are looked up starting at the root of the
directory structure, i.e., @file{/}. @code{chroot} changes the root to
the directory @var{newroot} (which must exist) and then runs
@var{command} with optional @var{args}. If @var{command} is not
specified, the default is the value of the @code{SHELL} environment
specified, the default is the value of the @env{SHELL} environment
variable or @code{/bin/sh} if not set, invoked with the @samp{-i} option.
The only options are @samp{--help} and @samp{--version}. @xref{Common
@@ -2623,7 +2747,7 @@ to an empty value is different from unsetting it.
@vindex PATH
The first remaining argument specifies the program name to invoke; it is
searched for according to the @code{PATH} environment variable. Any
searched for according to the @env{PATH} environment variable. Any
remaining arguments are passed as arguments to that program.
@cindex environment, printing
@@ -2767,9 +2891,9 @@ effective user id of zero (the super-user).
@vindex LOGNAME
@cindex login shell
By default, @code{su} does not change the current directory.
It sets the environment variables @code{HOME} and @code{SHELL}
It sets the environment variables @env{HOME} and @env{SHELL}
from the password entry for @var{user}, and if @var{user} is not
the super-user, sets @code{USER} and @code{LOGNAME} to @var{user}.
the super-user, sets @env{USER} and @env{LOGNAME} to @var{user}.
By default, the shell is not a login shell.
Any additional @var{arg}s are passed as additional arguments to the
@@ -2820,10 +2944,10 @@ expansion (globbing), which is not likely to be useful.
@vindex PATH
@cindex login shell, creating
Make the shell a login shell. This means the following. Unset all
environment variables except @code{TERM}, @code{HOME}, and @code{SHELL}
(which are set as described above), and @code{USER} and @code{LOGNAME}
environment variables except @env{TERM}, @env{HOME}, and @env{SHELL}
(which are set as described above), and @env{USER} and @env{LOGNAME}
(which are set, even for the super-user, as described above), and set
@code{PATH} to a compiled-in default value. Change to @var{user}'s home
@env{PATH} to a compiled-in default value. Change to @var{user}'s home
directory. Prepend @samp{-} to the shell's name, intended to make it
read its login startup file(s).
@@ -2836,9 +2960,9 @@ read its login startup file(s).
@cindex environment, preserving
@flindex /etc/shells
@cindex restricted shell
Do not change the environment variables @code{HOME}, @code{USER},
@code{LOGNAME}, or @code{SHELL}. Run the shell given in the environment
variable @code{SHELL} instead of the shell from @var{user}'s passwd
Do not change the environment variables @env{HOME}, @env{USER},
@env{LOGNAME}, or @env{SHELL}. Run the shell given in the environment
variable @env{SHELL} instead of the shell from @var{user}'s passwd
entry, unless the user running @code{su} is not the superuser and
@var{user}'s shell is restricted. A @dfn{restricted shell} is one that
is not listed in the file @file{/etc/shells}, or in a compiled-in list

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,10 @@
.deps
Makefile
getdate.c
posixtm.c
safe-stat.h
safe-stat.c
getdate.tab.c
lstat.c
safe-lstat.c
safe-lstat.h
getdate.tab.c
.deps
safe-stat.c
safe-stat.h
stat.c

21
lib/.gdb-history Normal file
View File

@@ -0,0 +1,21 @@
r 206.65.212.10
b main
r
n
s
n
p addr
p addr
p he->h_name
n
q
b canon_host
r 206.65.212.10
n
p he
p *he
n
n
p (he->h_addrtype)
n
q

View File

@@ -1,25 +1,37 @@
## Process this file with automake to produce Makefile.in
noinst_LIBRARIES = libfu.a
## Process this file with automake to produce Makefile.in -*-Makefile-*-
## FIXME: Remove mvdir.c, and rmdir.c when
## automake is fixed -- probably for 1.1g
EXTRA_DIST = mkdir.c rmdir.c getline.c mktime.c strftime.c getgroups.c
AUTOMAKE_OPTIONS = ../src/ansi2knr
noinst_LIBRARIES = libfu.a
INCLUDES = -I.. -I$(srcdir) -I../intl
libfu_a_SOURCES = getdate.y posixtm.y getopt.c getopt1.c \
argmatch.c backupfile.c dirname.c filemode.c \
full-write.c getversion.c idcache.c \
isdir.c long-options.c makepath.c modechange.c path-concat.c \
safe-read.c save-cwd.c savedir.c stripslash.c userspec.c xgetcwd.c \
xmalloc.c xstrdup.c xstrtol.c xstrtoul.c yesno.c
libfu_a_SOURCES = getdate.y posixtm.c getopt.c getopt1.c \
addext.c argmatch.c backupfile.c basename.c \
closeout.c dirname.c exclude.c filemode.c \
full-write.c human.c idcache.c \
isdir.c long-options.c makepath.c modechange.c hash.c path-concat.c \
quotearg.c safe-read.c save-cwd.c savedir.c stripslash.c userspec.c \
version-etc.c xgetcwd.c xmalloc.c xstrdup.c \
xstrtol.c xstrtoul.c xstrtoumax.c yesno.c
libfu_a_LIBADD = @LIBOBJS@ @ALLOCA@
libfu_a_DEPENDENCIES = $(libfu_a_LIBADD)
noinst_HEADERS = argmatch.h backupfile.h error.h fnmatch.h fsusage.h \
getdate.h getline.h getopt.h group-member.h long-options.h \
makepath.h modechange.h mountlist.h path-concat.h pathmax.h \
save-cwd.h xstrtol.h xstrtoul.h
noinst_HEADERS = argmatch.h backupfile.h closeout.h \
dirname.h error.h exclude.h filemode.h fnmatch.h fsusage.h \
getdate.h getline.h getopt.h group-member.h human.h lchown.h long-options.h \
makepath.h modechange.h mountlist.h hash.h path-concat.h pathmax.h \
posixtm.h quotearg.h regex.h safe-read.h save-cwd.h savedir.h strverscmp.h \
version-etc.h xalloc.h xstrtol.h
BUILT_SOURCES = getdate.c posixtm.c
BUILT_SOURCES = getdate.c lstat.c stat.c
EXTRA_DIST = xstat.in
lstat.c: xstat.in
sed -e '/@IGNORE@/d' -e 's/@xstat@/lstat/g' $(srcdir)/xstat.in > $@-t
mv $@-t $@
stat.c: xstat.in
sed -e '/@IGNORE@/d' -e 's/@xstat@/stat/g' $(srcdir)/xstat.in > $@-t
mv $@-t $@

View File

@@ -1,11 +1,16 @@
# Makefile.in generated automatically by automake 1.1l from Makefile.am
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -26,49 +31,102 @@ mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_FLAG =
transform = @program_transform_name@
YACC = @YACC@
GENCAT = @GENCAT@
PERL = @PERL@
MV = @MV@
GMSGFMT = @GMSGFMT@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AMTAR = @AMTAR@
AMTARFLAGS = @AMTARFLAGS@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
DF_PROG = @DF_PROG@
GENCAT = @GENCAT@
GETCONF = @GETCONF@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LIBOBJS = @LIBOBJS@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MVDIR_PROG = @MVDIR_PROG@
PACKAGE = @PACKAGE@
PERL = @PERL@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
LN = @LN@
RM = @RM@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
YACC = @YACC@
l = @l@
AUTOMAKE_OPTIONS = ../src/ansi2knr
noinst_LIBRARIES = libfu.a
EXTRA_DIST = mkdir.c rmdir.c getline.c mktime.c strftime.c getgroups.c
INCLUDES = -I.. -I$(srcdir) -I../intl
libfu_a_SOURCES = getdate.y posixtm.y getopt.c getopt1.c \
argmatch.c backupfile.c dirname.c filemode.c \
full-write.c getversion.c idcache.c \
isdir.c long-options.c makepath.c modechange.c path-concat.c \
safe-read.c save-cwd.c savedir.c stripslash.c userspec.c xgetcwd.c \
xmalloc.c xstrdup.c xstrtol.c xstrtoul.c yesno.c
libfu_a_SOURCES = getdate.y posixtm.c getopt.c getopt1.c \
addext.c argmatch.c backupfile.c basename.c \
closeout.c dirname.c exclude.c filemode.c \
full-write.c human.c idcache.c \
isdir.c long-options.c makepath.c modechange.c hash.c path-concat.c \
quotearg.c safe-read.c save-cwd.c savedir.c stripslash.c userspec.c \
version-etc.c xgetcwd.c xmalloc.c xstrdup.c \
xstrtol.c xstrtoul.c xstrtoumax.c yesno.c
libfu_a_LIBADD = @LIBOBJS@ @ALLOCA@
libfu_a_DEPENDENCIES = $(libfu_a_LIBADD)
noinst_HEADERS = argmatch.h backupfile.h error.h fnmatch.h fsusage.h \
getdate.h getline.h getopt.h group-member.h long-options.h \
makepath.h modechange.h mountlist.h path-concat.h pathmax.h \
save-cwd.h xstrtol.h xstrtoul.h
noinst_HEADERS = argmatch.h backupfile.h closeout.h \
dirname.h error.h exclude.h filemode.h fnmatch.h fsusage.h \
getdate.h getline.h getopt.h group-member.h human.h lchown.h long-options.h \
makepath.h modechange.h mountlist.h hash.h path-concat.h pathmax.h \
posixtm.h quotearg.h regex.h safe-read.h save-cwd.h savedir.h strverscmp.h \
version-etc.h xalloc.h xstrtol.h
BUILT_SOURCES = getdate.c posixtm.c
BUILT_SOURCES = getdate.c lstat.c stat.c
EXTRA_DIST = xstat.in
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
@@ -79,61 +137,66 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
libfu_a_OBJECTS = getdate.o posixtm.o getopt.o getopt1.o argmatch.o \
backupfile.o dirname.o filemode.o full-write.o getversion.o idcache.o \
isdir.o long-options.o makepath.o modechange.o path-concat.o \
safe-read.o save-cwd.o savedir.o stripslash.o userspec.o xgetcwd.o \
xmalloc.o xstrdup.o xstrtol.o xstrtoul.o yesno.o
ANSI2KNR = ../src/ansi2knr
am_libfu_a_OBJECTS = getdate$U.o posixtm$U.o getopt$U.o getopt1$U.o \
addext$U.o argmatch$U.o backupfile$U.o basename$U.o closeout$U.o \
dirname$U.o exclude$U.o filemode$U.o full-write$U.o human$U.o \
idcache$U.o isdir$U.o long-options$U.o makepath$U.o modechange$U.o \
hash$U.o path-concat$U.o quotearg$U.o safe-read$U.o save-cwd$U.o \
savedir$U.o stripslash$U.o userspec$U.o version-etc$U.o xgetcwd$U.o \
xmalloc$U.o xstrdup$U.o xstrtol$U.o xstrtoul$U.o xstrtoumax$U.o \
yesno$U.o
libfu_a_OBJECTS = $(am_libfu_a_OBJECTS)
AR = ar
INTERLOCK = ./interlock
YLWRAP = ./ylwrap
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
DIST_SOURCES = $(libfu_a_SOURCES)
HEADERS = $(noinst_HEADERS)
DIST_COMMON = Makefile.am Makefile.in alloca.c basename.c error.c \
error.h euidaccess.c fileblocks.c fnmatch.c fsusage.c ftruncate.c \
getdate.c getgroups.c getline.c group-member.c interlock memcmp.c \
memcpy.c memset.c mkdir.c mktime.c mountlist.c obstack.c obstack.h \
posixtm.c regex.c regex.h rename.c rmdir.c rpmatch.c rx.c rx.h stpcpy.c \
strcasecmp.c strdup.c strftime.c strndup.c strstr.c strtol.c strtoul.c \
ylwrap
DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in TODO alloca.c \
chown.c error.c error.h euidaccess.c fileblocks.c fnmatch.c fsusage.c \
ftruncate.c getdate.c getgroups.c getline.c group-member.c lchown.c \
lstat.c malloc.c memcmp.c memcpy.c memset.c mkdir.c mktime.c \
mountlist.c obstack.c obstack.h realloc.c regex.c rename.c rmdir.c \
rpmatch.c stat.c stpcpy.c strcasecmp.c strdup.c strftime.c \
strncasecmp.c strndup.c strstr.c strtol.c strtoul.c strtoull.c \
strtoumax.c strverscmp.c utime.c
PACKAGE = @PACKAGE@
VERSION = @VERSION@
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) \
$(TEXINFOS) $(MANS) $(EXTRA_DIST)
TAR = tar
DEP_FILES = .deps/alloca.P .deps/argmatch.P .deps/backupfile.P \
.deps/basename.P .deps/dirname.P .deps/error.P .deps/euidaccess.P \
GZIP_ENV = --best
DEP_FILES = .deps/addext.P .deps/alloca.P .deps/argmatch.P \
.deps/backupfile.P .deps/basename.P .deps/chown.P .deps/closeout.P \
.deps/dirname.P .deps/error.P .deps/euidaccess.P .deps/exclude.P \
.deps/fileblocks.P .deps/filemode.P .deps/fnmatch.P .deps/fsusage.P \
.deps/ftruncate.P .deps/full-write.P .deps/getdate.P .deps/getgroups.P \
.deps/getline.P .deps/getopt.P .deps/getopt1.P .deps/getversion.P \
.deps/group-member.P .deps/idcache.P .deps/isdir.P .deps/long-options.P \
.deps/makepath.P .deps/memcmp.P .deps/memcpy.P .deps/memset.P \
.deps/mkdir.P .deps/mktime.P .deps/modechange.P .deps/mountlist.P \
.deps/obstack.P .deps/path-concat.P .deps/posixtm.P .deps/regex.P \
.deps/rename.P .deps/rmdir.P .deps/rpmatch.P .deps/rx.P \
.deps/safe-read.P .deps/save-cwd.P .deps/savedir.P .deps/stpcpy.P \
.deps/strcasecmp.P .deps/strdup.P .deps/strftime.P .deps/stripslash.P \
.deps/strndup.P .deps/strstr.P .deps/strtol.P .deps/strtoul.P \
.deps/userspec.P .deps/xgetcwd.P .deps/xmalloc.P .deps/xstrdup.P \
.deps/xstrtol.P .deps/xstrtoul.P .deps/yesno.P
.deps/getline.P .deps/getopt.P .deps/getopt1.P .deps/group-member.P \
.deps/hash.P .deps/human.P .deps/idcache.P .deps/isdir.P .deps/lchown.P \
.deps/long-options.P .deps/lstat.P .deps/makepath.P .deps/malloc.P \
.deps/memcmp.P .deps/memcpy.P .deps/memset.P .deps/mkdir.P \
.deps/mktime.P .deps/modechange.P .deps/mountlist.P .deps/obstack.P \
.deps/path-concat.P .deps/posixtm.P .deps/quotearg.P .deps/realloc.P \
.deps/regex.P .deps/rename.P .deps/rmdir.P .deps/rpmatch.P \
.deps/safe-read.P .deps/save-cwd.P .deps/savedir.P .deps/stat.P \
.deps/stpcpy.P .deps/strcasecmp.P .deps/strdup.P .deps/strftime.P \
.deps/stripslash.P .deps/strncasecmp.P .deps/strndup.P .deps/strstr.P \
.deps/strtol.P .deps/strtoul.P .deps/strtoull.P .deps/strtoumax.P \
.deps/strverscmp.P .deps/userspec.P .deps/utime.P .deps/version-etc.P \
.deps/xgetcwd.P .deps/xmalloc.P .deps/xstrdup.P .deps/xstrtol.P \
.deps/xstrtoul.P .deps/xstrtoumax.P .deps/yesno.P
SOURCES = $(libfu_a_SOURCES)
OBJECTS = $(libfu_a_OBJECTS)
default: all
OBJECTS = $(am_libfu_a_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .c .o .y
$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL)
cd $(top_srcdir) && automake --gnu lib/Makefile
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
@@ -141,155 +204,413 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
maintainer-clean-noinstLIBRARIES:
.c.o:
$(COMPILE) -c $<
mostlyclean-compile:
rm -f *.o core
-rm -f *.o core *.core
clean-compile:
distclean-compile:
rm -f *.tab.c
-rm -f *.tab.c
maintainer-clean-compile:
$(libfu_a_OBJECTS): ../config.h
../src/ansi2knr: ../src/ansi2knr.o
cd ../src && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
../src/ansi2knr.o:
cd ../src && $(MAKE) $(AM_MAKEFLAGS) ansi2knr.o
mostlyclean-kr:
-rm -f *_.c
clean-kr:
distclean-kr:
maintainer-clean-kr:
getdate$U.o:
posixtm$U.o:
getopt$U.o:
getopt1$U.o:
addext$U.o:
argmatch$U.o:
backupfile$U.o:
basename$U.o:
closeout$U.o:
dirname$U.o:
exclude$U.o:
filemode$U.o:
full-write$U.o:
human$U.o:
idcache$U.o:
isdir$U.o:
long-options$U.o:
makepath$U.o:
modechange$U.o:
hash$U.o:
path-concat$U.o:
quotearg$U.o:
safe-read$U.o:
save-cwd$U.o:
savedir$U.o:
stripslash$U.o:
userspec$U.o:
version-etc$U.o:
xgetcwd$U.o:
xmalloc$U.o:
xstrdup$U.o:
xstrtol$U.o:
xstrtoul$U.o:
xstrtoumax$U.o:
yesno$U.o:
libfu.a: $(libfu_a_OBJECTS) $(libfu_a_DEPENDENCIES)
rm -f libfu.a
-rm -f libfu.a
$(AR) cru libfu.a $(libfu_a_OBJECTS) $(libfu_a_LIBADD)
$(RANLIB) libfu.a
getdate.o:
lstat.o:
stat.o:
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
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)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/basename.c; then echo $(srcdir)/basename.c; else echo basename.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > basename_.c
chown_.c: chown.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/chown.c; then echo $(srcdir)/chown.c; else echo chown.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > chown_.c
closeout_.c: closeout.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/closeout.c; then echo $(srcdir)/closeout.c; else echo closeout.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > closeout_.c
dirname_.c: dirname.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dirname.c; then echo $(srcdir)/dirname.c; else echo dirname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > dirname_.c
error_.c: error.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/error.c; then echo $(srcdir)/error.c; else echo error.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > error_.c
euidaccess_.c: euidaccess.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/euidaccess.c; then echo $(srcdir)/euidaccess.c; else echo euidaccess.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > euidaccess_.c
exclude_.c: exclude.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/exclude.c; then echo $(srcdir)/exclude.c; else echo exclude.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > exclude_.c
fileblocks_.c: fileblocks.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fileblocks.c; then echo $(srcdir)/fileblocks.c; else echo fileblocks.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fileblocks_.c
filemode_.c: filemode.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/filemode.c; then echo $(srcdir)/filemode.c; else echo filemode.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > filemode_.c
fnmatch_.c: fnmatch.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fnmatch.c; then echo $(srcdir)/fnmatch.c; else echo fnmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fnmatch_.c
fsusage_.c: fsusage.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fsusage.c; then echo $(srcdir)/fsusage.c; else echo fsusage.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fsusage_.c
ftruncate_.c: ftruncate.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ftruncate.c; then echo $(srcdir)/ftruncate.c; else echo ftruncate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ftruncate_.c
full-write_.c: full-write.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/full-write.c; then echo $(srcdir)/full-write.c; else echo full-write.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > full-write_.c
getdate_.c: getdate.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getdate.c; then echo $(srcdir)/getdate.c; else echo getdate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getdate_.c
getgroups_.c: getgroups.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getgroups.c; then echo $(srcdir)/getgroups.c; else echo getgroups.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getgroups_.c
getline_.c: getline.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getline.c; then echo $(srcdir)/getline.c; else echo getline.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getline_.c
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
group-member_.c: group-member.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/group-member.c; then echo $(srcdir)/group-member.c; else echo group-member.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > group-member_.c
hash_.c: hash.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash.c; then echo $(srcdir)/hash.c; else echo hash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > hash_.c
human_.c: human.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/human.c; then echo $(srcdir)/human.c; else echo human.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > human_.c
idcache_.c: idcache.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/idcache.c; then echo $(srcdir)/idcache.c; else echo idcache.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > idcache_.c
isdir_.c: isdir.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/isdir.c; then echo $(srcdir)/isdir.c; else echo isdir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > isdir_.c
lchown_.c: lchown.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lchown.c; then echo $(srcdir)/lchown.c; else echo lchown.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lchown_.c
long-options_.c: long-options.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/long-options.c; then echo $(srcdir)/long-options.c; else echo long-options.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > long-options_.c
lstat_.c: lstat.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lstat.c; then echo $(srcdir)/lstat.c; else echo lstat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lstat_.c
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
memcmp_.c: memcmp.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memcmp.c; then echo $(srcdir)/memcmp.c; else echo memcmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memcmp_.c
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
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)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/modechange.c; then echo $(srcdir)/modechange.c; else echo modechange.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > modechange_.c
mountlist_.c: mountlist.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mountlist.c; then echo $(srcdir)/mountlist.c; else echo mountlist.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mountlist_.c
obstack_.c: obstack.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/obstack.c; then echo $(srcdir)/obstack.c; else echo obstack.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > obstack_.c
path-concat_.c: path-concat.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/path-concat.c; then echo $(srcdir)/path-concat.c; else echo path-concat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > path-concat_.c
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
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
realloc_.c: realloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/realloc.c; then echo $(srcdir)/realloc.c; else echo realloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > realloc_.c
regex_.c: regex.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/regex.c; then echo $(srcdir)/regex.c; else echo regex.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > regex_.c
rename_.c: rename.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rename.c; then echo $(srcdir)/rename.c; else echo rename.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rename_.c
rmdir_.c: rmdir.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rmdir.c; then echo $(srcdir)/rmdir.c; else echo rmdir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rmdir_.c
rpmatch_.c: rpmatch.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rpmatch.c; then echo $(srcdir)/rpmatch.c; else echo rpmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rpmatch_.c
safe-read_.c: safe-read.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/safe-read.c; then echo $(srcdir)/safe-read.c; else echo safe-read.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > safe-read_.c
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
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
stpcpy_.c: stpcpy.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stpcpy.c; then echo $(srcdir)/stpcpy.c; else echo stpcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stpcpy_.c
strcasecmp_.c: strcasecmp.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strcasecmp.c; then echo $(srcdir)/strcasecmp.c; else echo strcasecmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strcasecmp_.c
strdup_.c: strdup.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strdup.c; then echo $(srcdir)/strdup.c; else echo strdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strdup_.c
strftime_.c: strftime.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strftime.c; then echo $(srcdir)/strftime.c; else echo strftime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strftime_.c
stripslash_.c: stripslash.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stripslash.c; then echo $(srcdir)/stripslash.c; else echo stripslash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stripslash_.c
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
strstr_.c: strstr.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strstr.c; then echo $(srcdir)/strstr.c; else echo strstr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strstr_.c
strtol_.c: strtol.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtol.c; then echo $(srcdir)/strtol.c; else echo strtol.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strtol_.c
strtoul_.c: strtoul.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoul.c; then echo $(srcdir)/strtoul.c; else echo strtoul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strtoul_.c
strtoull_.c: strtoull.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoull.c; then echo $(srcdir)/strtoull.c; else echo strtoull.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strtoull_.c
strtoumax_.c: strtoumax.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strtoumax.c; then echo $(srcdir)/strtoumax.c; else echo strtoumax.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strtoumax_.c
strverscmp_.c: strverscmp.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strverscmp.c; then echo $(srcdir)/strverscmp.c; else echo strverscmp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strverscmp_.c
userspec_.c: userspec.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/userspec.c; then echo $(srcdir)/userspec.c; else echo userspec.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > userspec_.c
utime_.c: utime.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utime.c; then echo $(srcdir)/utime.c; else echo utime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > utime_.c
version-etc_.c: version-etc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/version-etc.c; then echo $(srcdir)/version-etc.c; else echo version-etc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > version-etc_.c
xgetcwd_.c: xgetcwd.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xgetcwd.c; then echo $(srcdir)/xgetcwd.c; else echo xgetcwd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xgetcwd_.c
xmalloc_.c: xmalloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xmalloc_.c
xstrdup_.c: xstrdup.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c
xstrtol_.c: xstrtol.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtol.c; then echo $(srcdir)/xstrtol.c; else echo xstrtol.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrtol_.c
xstrtoul_.c: xstrtoul.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrtoul.c; then echo $(srcdir)/xstrtoul.c; else echo xstrtoul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrtoul_.c
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 chown_.o \
closeout_.o dirname_.o error_.o euidaccess_.o exclude_.o fileblocks_.o \
filemode_.o fnmatch_.o fsusage_.o ftruncate_.o full-write_.o getdate_.o \
getgroups_.o getline_.o getopt_.o getopt1_.o group-member_.o hash_.o \
human_.o idcache_.o isdir_.o lchown_.o long-options_.o lstat_.o \
makepath_.o malloc_.o memcmp_.o memcpy_.o memset_.o mkdir_.o mktime_.o \
modechange_.o mountlist_.o obstack_.o path-concat_.o posixtm_.o \
quotearg_.o realloc_.o regex_.o rename_.o rmdir_.o rpmatch_.o \
safe-read_.o save-cwd_.o savedir_.o stat_.o stpcpy_.o strcasecmp_.o \
strdup_.o strftime_.o stripslash_.o strncasecmp_.o strndup_.o strstr_.o \
strtol_.o strtoul_.o strtoull_.o strtoumax_.o strverscmp_.o userspec_.o \
utime_.o version-etc_.o xgetcwd_.o xmalloc_.o xstrdup_.o xstrtol_.o \
xstrtoul_.o xstrtoumax_.o yesno_.o : $(ANSI2KNR)
.y.c:
$(SHELL) $(INTERLOCK) =yacclockdir $(YLWRAP) "$(YACC)" y.tab.c $*.c y.tab.h $*.h -- $(YFLAGS) $<
$(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c
if test -f y.tab.h; then \
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
else :; fi
tags: TAGS
ID: $(HEADERS) $(SOURCES)
here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list="$(SUBDIRS)"; for subdir in $$list; do \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
done; \
test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \
|| cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
rm -f TAGS ID
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = lib
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
distdir=`cd $(distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits lib/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-include .deps/.P
.deps/.P:
test -d .deps || mkdir .deps
echo > $@
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-include $(DEP_FILES)
$(DEP_FILES): .deps/.P
mostlyclean-depend:
clean-depend:
distclean-depend:
-rm -rf .deps
maintainer-clean-depend:
rm -rf .deps
.deps/%.P: $(srcdir)/%.c
@echo "Computing dependencies for $<..."
@o='o'; \
test -n "$o" && o='$$o'; \
$(MKDEP) $< | sed "s/^\(.*\)\.o:/\1.$$o \1.l$$o:/" > $@
info:
dvi:
check: all
$(MAKE)
installcheck:
install-exec:
$(NORMAL_INSTALL)
%.o: %.c
@echo '$(COMPILE) -c $<'; \
$(COMPILE) -Wp,-MD,.deps/$(*D)/$(*F).pp -c $<
@-cp .deps/$(*D)/$(*F).pp .deps/$(*D)/$(*F).P; \
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*D)/$(*F).P; \
rm .deps/$(*D)/$(*F).pp
install-data:
$(NORMAL_INSTALL)
%.lo: %.c
@echo '$(LTCOMPILE) -c $<'; \
$(LTCOMPILE) -Wp,-MD,.deps/$(*D)/$(*F).pp -c $<
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
< .deps/$(*D)/$(*F).pp > .deps/$(*D)/$(*F).P; \
tr ' ' '\012' < .deps/$(*D)/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*D)/$(*F).P; \
rm -f .deps/$(*D)/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am:
install-exec: install-exec-am
install: install-exec install-data all
@:
uninstall:
all: $(LIBRARIES) $(BUILT_SOURCES) $(HEADERS) Makefile
install-data-am:
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am:
uninstall: uninstall-am
all-am: Makefile $(LIBRARIES) $(HEADERS)
all-redirect: all-am
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
installdirs:
mostlyclean-generic:
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
rm -f Makefile $(DISTCLEANFILES)
rm -f config.cache config.log stamp-h
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
mostlyclean-tags mostlyclean-depend mostlyclean-generic
-test -z "getdate.c$(BUILT_SOURCES)" || rm -f getdate.c $(BUILT_SOURCES)
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
mostlyclean-kr mostlyclean-tags mostlyclean-depend \
mostlyclean-generic
clean: clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
clean-generic mostlyclean
mostlyclean: mostlyclean-am
distclean: distclean-noinstLIBRARIES distclean-compile distclean-tags \
distclean-depend distclean-generic clean
rm -f config.status
clean-am: clean-noinstLIBRARIES clean-compile clean-kr clean-tags \
clean-depend clean-generic mostlyclean-am
maintainer-clean: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-tags \
maintainer-clean-depend maintainer-clean-generic \
distclean
clean: clean-am
distclean-am: distclean-noinstLIBRARIES distclean-compile distclean-kr \
distclean-tags distclean-depend distclean-generic \
clean-am
distclean: distclean-am
maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-kr \
maintainer-clean-tags maintainer-clean-depend \
maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: default mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
maintainer-clean: maintainer-clean-am
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
distclean-depend clean-depend maintainer-clean-depend info dvi \
installcheck install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
maintainer-clean-compile mostlyclean-kr distclean-kr clean-kr \
maintainer-clean-kr tags mostlyclean-tags distclean-tags clean-tags \
maintainer-clean-tags distdir mostlyclean-depend distclean-depend \
clean-depend maintainer-clean-depend info-am info dvi-am dvi check \
check-am installcheck-am installcheck install-exec-am install-exec \
install-data-am install-data install-am install uninstall-am uninstall \
all-redirect all-am all install-strip installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
lstat.c: xstat.in
sed -e '/@IGNORE@/d' -e 's/@xstat@/lstat/g' $(srcdir)/xstat.in > $@-t
mv $@-t $@
stat.c: xstat.in
sed -e '/@IGNORE@/d' -e 's/@xstat@/stat/g' $(srcdir)/xstat.in > $@-t
mv $@-t $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.

32
lib/TODO Normal file
View File

@@ -0,0 +1,32 @@
Things to do to hash.c:
Always use curly braces around statements in if/else/while/do/etc.
that span more than a line -- even around multiline simple statements
or single-line simple statements preceded by a comment line.
Never have lines longer than 80 chars.
Remove ^L characters. We don't want/need such crutches.
Get a good (smart) pagination filter. I have one (a perl script)
that usually does a decent job for me -- I called it something
like stdc-print and think I sent you an early verison.
I don't like the name `cursor'. I much prefer short names
like `p' for index variables. I doubt I'll change all of them,
but thought you should know why some will probably end up changing.
#define USE_OBSTACK somewhere
Fix this comment. Depending on system and application...
Mention fragmentation.
+#if USE_OBSTACK
+ /* Whenever obstacks are used, it is possible to allocate all overflowed
+ entries into a single stack, so they all can be freed in a single
+ operation. It is not clear if the speedup is worth the trouble. */
+ struct obstack entry_stack;
+#endif
assert (bucket_limit - bucket == n_buckets) ?
remove.c: s/done/successful or ok

105
lib/addext.c Normal file
View File

@@ -0,0 +1,105 @@
/* addext.c -- add an extension to a file name
Copyright (C) 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
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> and Paul Eggert */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifndef HAVE_DOS_FILE_NAMES
# define HAVE_DOS_FILE_NAMES 0
#endif
#ifndef HAVE_LONG_FILE_NAMES
# define HAVE_LONG_FILE_NAMES 0
#endif
#include <backupfile.h>
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef _POSIX_NAME_MAX
# define _POSIX_NAME_MAX 14
#endif
#include <sys/types.h>
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
char *base_name PARAMS ((char const *));
/* Append to FILENAME the extension EXT, unless the result would be too long,
in which case just append the character E. */
void
addext (char *filename, char const *ext, int e)
{
char *s = base_name (filename);
size_t slen = strlen (s), extlen = strlen (ext);
long slen_max = -1;
#if HAVE_PATHCONF && defined _PC_NAME_MAX
if (slen + extlen <= _POSIX_NAME_MAX && ! HAVE_DOS_FILE_NAMES)
/* The file name is so short there's no need to call pathconf. */
slen_max = _POSIX_NAME_MAX;
else if (s == filename)
slen_max = pathconf (".", _PC_NAME_MAX);
else
{
char c = *s;
*s = 0;
slen_max = pathconf (filename, _PC_NAME_MAX);
*s = c;
}
#endif
if (slen_max < 0)
slen_max = HAVE_LONG_FILE_NAMES ? 255 : 14;
if (HAVE_DOS_FILE_NAMES && slen_max <= 12)
{
/* Live within DOS's 8.3 limit. */
char *dot = strchr (s, '.');
if (dot)
{
slen -= dot + 1 - s;
s = dot + 1;
slen_max = 3;
}
else
slen_max = 8;
extlen = 9; /* Don't use EXT. */
}
if (slen + extlen <= slen_max)
strcpy (s + slen, ext);
else
{
if (slen_max <= slen)
slen = slen_max - 1;
s[slen] = e;
s[slen + 1] = 0;
}
}

View File

@@ -22,11 +22,11 @@
your main control loop, etc. to force garbage collection. */
#ifdef HAVE_CONFIG_H
#include <config.h>
# include <config.h>
#endif
#ifdef emacs
#include "blockinput.h"
# include "blockinput.h"
#endif
/* If compiling with GCC 2, this file's not needed. */
@@ -34,39 +34,41 @@
/* If someone has defined alloca as a macro,
there must be some other way alloca is supposed to work. */
#ifndef alloca
# ifndef alloca
#ifdef emacs
#ifdef static
# ifdef emacs
# ifdef static
/* actually, only want this if static is defined as ""
-- this is for usg, in which emacs must undefine static
in order to make unexec workable
*/
#ifndef STACK_DIRECTION
# ifndef STACK_DIRECTION
you
lose
-- must know STACK_DIRECTION at compile-time
#endif /* STACK_DIRECTION undefined */
#endif /* static */
#endif /* emacs */
# endif /* STACK_DIRECTION undefined */
# endif /* static */
# endif /* emacs */
/* If your stack is a linked list of frames, you have to
provide an "address metric" ADDRESS_FUNCTION macro. */
#if defined (CRAY) && defined (CRAY_STACKSEG_END)
# if defined (CRAY) && defined (CRAY_STACKSEG_END)
long i00afunc ();
#define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
#else
#define ADDRESS_FUNCTION(arg) &(arg)
#endif
# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
# else
# define ADDRESS_FUNCTION(arg) &(arg)
# endif
#if __STDC__
# if __STDC__
typedef void *pointer;
#else
# else
typedef char *pointer;
#endif
# endif
#define NULL 0
# ifndef NULL
# define NULL 0
# endif
/* Different portions of Emacs need to call different versions of
malloc. The Emacs executable needs alloca to call xmalloc, because
@@ -78,9 +80,9 @@ typedef char *pointer;
Callers below should use malloc. */
#ifndef emacs
#define malloc xmalloc
#endif
# ifndef emacs
# define malloc xmalloc
# endif
extern pointer malloc ();
/* Define STACK_DIRECTION if you know the direction of stack
@@ -91,18 +93,18 @@ extern pointer malloc ();
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#ifndef STACK_DIRECTION
#define STACK_DIRECTION 0 /* Direction unknown. */
#endif
# ifndef STACK_DIRECTION
# define STACK_DIRECTION 0 /* Direction unknown. */
# endif
#if STACK_DIRECTION != 0
# if STACK_DIRECTION != 0
#define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
#else /* STACK_DIRECTION == 0; need run-time code. */
# else /* STACK_DIRECTION == 0; need run-time code. */
static int stack_dir; /* 1 or -1 once known. */
#define STACK_DIR stack_dir
# define STACK_DIR stack_dir
static void
find_stack_direction ()
@@ -126,7 +128,7 @@ find_stack_direction ()
}
}
#endif /* STACK_DIRECTION == 0 */
# endif /* STACK_DIRECTION == 0 */
/* An "alloca header" is used to:
(a) chain together all alloca'ed blocks;
@@ -135,9 +137,9 @@ find_stack_direction ()
It is very important that sizeof(header) agree with malloc
alignment chunk size. The following default should work okay. */
#ifndef ALIGN_SIZE
#define ALIGN_SIZE sizeof(double)
#endif
# ifndef ALIGN_SIZE
# define ALIGN_SIZE sizeof(double)
# endif
typedef union hdr
{
@@ -159,26 +161,25 @@ static header *last_alloca_header = NULL; /* -> last alloca header. */
implementations of C, for example under Gould's UTX/32. */
pointer
alloca (size)
unsigned size;
alloca (unsigned size)
{
auto char probe; /* Probes stack depth: */
register char *depth = ADDRESS_FUNCTION (probe);
#if STACK_DIRECTION == 0
# if STACK_DIRECTION == 0
if (STACK_DIR == 0) /* Unknown growth direction. */
find_stack_direction ();
#endif
# endif
/* Reclaim garbage, defined as all alloca'd storage that
was allocated from deeper in the stack than currently. */
was allocated from deeper in the stack than currently. */
{
register header *hp; /* Traverses linked list. */
#ifdef emacs
# ifdef emacs
BLOCK_INPUT;
#endif
# endif
for (hp = last_alloca_header; hp != NULL;)
if ((STACK_DIR > 0 && hp->h.deep > depth)
@@ -195,9 +196,9 @@ alloca (size)
last_alloca_header = hp; /* -> last valid storage. */
#ifdef emacs
# ifdef emacs
UNBLOCK_INPUT;
#endif
# endif
}
if (size == 0)
@@ -220,15 +221,15 @@ alloca (size)
}
}
#if defined (CRAY) && defined (CRAY_STACKSEG_END)
# if defined (CRAY) && defined (CRAY_STACKSEG_END)
#ifdef DEBUG_I00AFUNC
#include <stdio.h>
#endif
# ifdef DEBUG_I00AFUNC
# include <stdio.h>
# endif
#ifndef CRAY_STACK
#define CRAY_STACK
#ifndef CRAY2
# ifndef CRAY_STACK
# define CRAY_STACK
# ifndef CRAY2
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
struct stack_control_header
{
@@ -280,7 +281,7 @@ struct stack_segment_linkage
long sss7;
};
#else /* CRAY2 */
# else /* CRAY2 */
/* The following structure defines the vector of words
returned by the STKSTAT library routine. */
struct stk_stat
@@ -333,12 +334,12 @@ struct stk_trailer
long unknown14;
};
#endif /* CRAY2 */
#endif /* not CRAY_STACK */
# endif /* CRAY2 */
# endif /* not CRAY_STACK */
#ifdef CRAY2
# ifdef CRAY2
/* Determine a "stack measure" for an arbitrary ADDRESS.
I doubt that "lint" will like this much. */
I doubt that "lint" will like this much. */
static long
i00afunc (long *address)
@@ -407,7 +408,7 @@ i00afunc (long *address)
return (result);
}
#else /* not CRAY2 */
# else /* not CRAY2 */
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
Determine the number of the cell within the stack,
given the address of the cell. The purpose of this
@@ -452,9 +453,9 @@ i00afunc (long address)
while (!(this_segment <= address && address <= stkl))
{
#ifdef DEBUG_I00AFUNC
# ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
#endif
# endif
if (pseg == 0)
break;
stkl = stkl - pseg;
@@ -473,9 +474,9 @@ i00afunc (long address)
while (pseg != 0)
{
#ifdef DEBUG_I00AFUNC
# ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o\n", pseg, size);
#endif
# endif
stkl = stkl - pseg;
ssptr = (struct stack_segment_linkage *) stkl;
size = ssptr->sssize;
@@ -485,8 +486,8 @@ i00afunc (long address)
return (result);
}
#endif /* not CRAY2 */
#endif /* CRAY */
# endif /* not CRAY2 */
# endif /* CRAY */
#endif /* no alloca */
# endif /* no alloca */
#endif /* not GCC version 2 */

View File

@@ -1,5 +1,5 @@
/* argmatch.c -- find a match for a string in an array
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 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
@@ -15,32 +15,83 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by David MacKenzie <djm@ai.mit.edu> */
/* Written by David MacKenzie <djm@ai.mit.edu>
Modified by Akim Demaille <demaille@inf.enst.fr> */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include "argmatch.h"
#include <stdio.h>
#ifdef STDC_HEADERS
# include <string.h>
#endif
extern char *program_name;
#if HAVE_LOCALE_H
# include <locale.h>
#endif
/* If ARG is an unambiguous match for an element of the
null-terminated array OPTLIST, return the index in OPTLIST
of the matched element, else -1 if it does not match any element
or -2 if it is ambiguous (is a prefix of more than one element). */
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
int
argmatch (arg, optlist)
const char *arg;
const char *const *optlist;
#include "error.h"
#include "quotearg.h"
/* When reporting an invalid argument, show nonprinting characters
by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use
literal_quoting_style. */
#ifndef ARGMATCH_QUOTING_STYLE
# define ARGMATCH_QUOTING_STYLE escape_quoting_style
#endif
/* The following test is to work around the gross typo in
systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE
is defined to 0, not 1. */
#if !EXIT_FAILURE
# undef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
/* Non failing version of argmatch call this function after failing. */
#ifndef ARGMATCH_DIE
# define ARGMATCH_DIE exit (EXIT_FAILURE)
#endif
#ifdef ARGMATCH_DIE_DECL
ARGMATCH_DIE_DECL;
#endif
static void
__argmatch_die (void)
{
int i; /* Temporary index in OPTLIST. */
ARGMATCH_DIE;
}
/* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h.
Default to __argmatch_die, but allow caller to change this at run-time. */
argmatch_exit_fn argmatch_die = __argmatch_die;
/* If ARG is an unambiguous match for an element of the
null-terminated array ARGLIST, return the index in ARGLIST
of the matched element, else -1 if it does not match any element
or -2 if it is ambiguous (is a prefix of more than one element).
If SENSITIVE, comparison is case sensitive.
If VALLIST is none null, use it to resolve ambiguities limited to
synonyms, i.e., for
"yes", "yop" -> 0
"no", "nope" -> 1
"y" is a valid argument, for `0', and "n" for `1'. */
static int
__argmatch_internal (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize,
int case_sensitive)
{
int i; /* Temporary index in ARGLIST. */
size_t arglen; /* Length of ARG. */
int matchind = -1; /* Index of first nonexact match. */
int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */
@@ -48,19 +99,30 @@ argmatch (arg, optlist)
arglen = strlen (arg);
/* Test all elements for either exact match or abbreviated matches. */
for (i = 0; optlist[i]; i++)
for (i = 0; arglist[i]; i++)
{
if (!strncmp (optlist[i], arg, arglen))
if (case_sensitive
? !strncmp (arglist[i], arg, arglen)
: !strncasecmp (arglist[i], arg, arglen))
{
if (strlen (optlist[i]) == arglen)
if (strlen (arglist[i]) == arglen)
/* Exact match found. */
return i;
else if (matchind == -1)
/* First nonexact match found. */
matchind = i;
else
/* Second nonexact match found. */
ambiguous = 1;
{
/* Second nonexact match found. */
if (vallist == NULL
|| memcmp (vallist + valsize * matchind,
vallist + valsize * i, valsize))
{
/* There is a real ambiguity, or we could not
disambiguate. */
ambiguous = 1;
}
}
}
}
if (ambiguous)
@@ -69,21 +131,186 @@ argmatch (arg, optlist)
return matchind;
}
/* argmatch - case sensitive version */
int
argmatch (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize)
{
return __argmatch_internal (arg, arglist, vallist, valsize, 1);
}
/* argcasematch - case insensitive version */
int
argcasematch (const char *arg, const char *const *arglist,
const char *vallist, size_t valsize)
{
return __argmatch_internal (arg, arglist, vallist, valsize, 0);
}
/* Error reporting for argmatch.
KIND is a description of the type of entity that was being matched.
CONTEXT is a description of the type of entity that was being matched.
VALUE is the invalid value that was given.
PROBLEM is the return value from argmatch. */
void
invalid_arg (kind, value, problem)
const char *kind;
const char *value;
int problem;
argmatch_invalid (const char *context, const char *value, int problem)
{
fprintf (stderr, "%s: ", program_name);
if (problem == -1)
fprintf (stderr, "invalid");
else /* Assume -2. */
fprintf (stderr, "ambiguous");
fprintf (stderr, " %s `%s'\n", kind, value);
enum quoting_style saved_quoting_style;
char const *format;
/* Make sure to have a good quoting style to report errors.
literal is insane here. */
saved_quoting_style = get_quoting_style (NULL);
set_quoting_style (NULL, ARGMATCH_QUOTING_STYLE);
format = (problem == -1
? _("invalid argument `%s' for `%s'")
: _("ambiguous argument `%s' for `%s'"));
error (0, 0, format, quotearg (value), context);
set_quoting_style (NULL, saved_quoting_style);
}
/* List the valid arguments for argmatch.
ARGLIST is the same as in argmatch.
VALLIST is a pointer to an array of values.
VALSIZE is the size of the elements of VALLIST */
void
argmatch_valid (const char *const *arglist,
const char *vallist, size_t valsize)
{
int i;
const char *last_val = NULL;
/* We try to put synonyms on the same line. The assumption is that
synonyms follow each other */
fprintf (stderr, _("Valid arguments are:"));
for (i = 0; arglist[i]; i++)
if ((i == 0)
|| memcmp (last_val, vallist + valsize * i, valsize))
{
fprintf (stderr, "\n - `%s'", arglist[i]);
last_val = vallist + valsize * i;
}
else
{
fprintf (stderr, ", `%s'", arglist[i]);
}
putc ('\n', stderr);
}
/* Never failing versions of the previous functions.
CONTEXT is the context for which argmatch is called (e.g.,
"--version-control", or "$VERSION_CONTROL" etc.). Upon failure,
calls the (supposed never to return) function EXIT_FN. */
int
__xargmatch_internal (const char *context,
const char *arg, const char *const *arglist,
const char *vallist, size_t valsize,
int case_sensitive,
argmatch_exit_fn exit_fn)
{
int res = __argmatch_internal (arg, arglist,
vallist, valsize,
case_sensitive);
if (res >= 0)
/* Success. */
return res;
/* We failed. Explain why. */
argmatch_invalid (context, arg, res);
argmatch_valid (arglist, vallist, valsize);
(*exit_fn) ();
return -1; /* To please the compilers. */
}
/* Look for VALUE in VALLIST, an array of objects of size VALSIZE and
return the first corresponding argument in ARGLIST */
const char *
argmatch_to_argument (const char *value,
const char *const *arglist,
const char *vallist, size_t valsize)
{
int i;
for (i = 0; arglist[i]; i++)
if (!memcmp (value, vallist + valsize * i, valsize))
return arglist[i];
return NULL;
}
#ifdef TEST
/*
* Based on "getversion.c" by David MacKenzie <djm@gnu.ai.mit.edu>
*/
char *program_name;
extern const char *getenv ();
/* When to make backup files. */
enum backup_type
{
/* Never make backups. */
none,
/* Make simple backups of every file. */
simple,
/* Make numbered backups of files that already have numbered backups,
and simple backups of the others. */
numbered_existing,
/* Make numbered backups of every file. */
numbered
};
/* Two tables describing arguments (keys) and their corresponding
values */
static const char *const backup_args[] =
{
"no", "none", "off",
"simple", "never",
"existing", "nil",
"numbered", "t",
0
};
static const enum backup_type backup_vals[] =
{
none, none, none,
simple, simple,
numbered_existing, numbered_existing,
numbered, numbered
};
int
main (int argc, const char *const *argv)
{
const char *cp;
enum backup_type backup_type = none;
program_name = (char *) argv[0];
if (argc > 2)
{
fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name);
exit (1);
}
if ((cp = getenv ("VERSION_CONTROL")))
backup_type = XARGCASEMATCH ("$VERSION_CONTROL", cp,
backup_args, backup_vals);
if (argc == 2)
backup_type = XARGCASEMATCH (program_name, argv[1],
backup_args, backup_vals);
printf ("The version control is `%s'\n",
ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals));
return 0;
}
#endif

View File

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

View File

@@ -1,5 +1,5 @@
/* backupfile.c -- make Emacs style backup file names
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 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
@@ -12,100 +12,103 @@
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. */
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* David MacKenzie <djm@gnu.ai.mit.edu>.
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>.
Some algorithms adapted from GNU Emacs. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <argmatch.h>
#include <backupfile.h>
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include "backupfile.h"
#ifdef HAVE_STRING_H
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#ifdef HAVE_DIRENT_H
#if HAVE_DIRENT_H
# include <dirent.h>
# define NLENGTH(direct) (strlen((direct)->d_name))
#else /* not HAVE_DIRENT_H */
# define NLENGTH(direct) strlen ((direct)->d_name)
#else
# define dirent direct
# define NLENGTH(direct) ((direct)->d_namlen)
# ifdef HAVE_SYS_NDIR_H
# define NLENGTH(direct) ((size_t) (direct)->d_namlen)
# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif /* HAVE_SYS_NDIR_H */
# ifdef HAVE_SYS_DIR_H
# endif
# if HAVE_SYS_DIR_H
# include <sys/dir.h>
# endif /* HAVE_SYS_DIR_H */
# ifdef HAVE_NDIR_H
# endif
# if HAVE_NDIR_H
# include <ndir.h>
# endif /* HAVE_NDIR_H */
#endif /* HAVE_DIRENT_H */
# endif
#endif
#ifdef CLOSEDIR_VOID
#if CLOSEDIR_VOID
/* Fake a return value. */
# define CLOSEDIR(d) (closedir (d), 0)
#else
# define CLOSEDIR(d) closedir (d)
#endif
#ifdef STDC_HEADERS
#if STDC_HEADERS
# include <stdlib.h>
#else
char *malloc ();
#endif
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
#else
# define IN_CTYPE_DOMAIN(c) isascii(c)
#ifndef HAVE_DECL_GETENV
char *getenv ();
#endif
#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))
char *base_name PARAMS ((char const *));
/* ISDIGIT differs from ISDIGIT_LOCALE, as follows:
#if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H
# define HAVE_DIR 1
#else
# define HAVE_DIR 0
#endif
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
/* Upper bound on the string length of an integer converted to string.
302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit;
add 1 for integer division truncation; add 1 more for a minus sign. */
#define INT_STRLEN_BOUND(t) ((sizeof (t) * CHAR_BIT - 1) * 302 / 1000 + 2)
/* ISDIGIT differs from isdigit, as follows:
- Its arg may be any int or unsigned int; it need not be an unsigned char.
- It's guaranteed to evaluate its argument exactly once.
- It's typically faster.
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless
only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
it's important to use the locale's definition of `digit' even when the
host does not conform to Posix. */
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
#if defined (HAVE_UNISTD_H)
#include <unistd.h>
#endif
#if defined (_POSIX_VERSION)
/* POSIX does not require that the d_ino field be present, and some
systems do not provide it. */
# define REAL_DIR_ENTRY(dp) 1
#else
#if D_INO_IN_DIRENT
# define REAL_DIR_ENTRY(dp) ((dp)->d_ino != 0)
#else
# define REAL_DIR_ENTRY(dp) 1
#endif
/* Which type of backup file names are generated. */
enum backup_type backup_type = none;
/* The extension added to file names to produce a simple (as opposed
to numbered) backup file name. */
char *simple_backup_suffix = "~";
const char *simple_backup_suffix = "~";
char *basename ();
char *dirname ();
static char *concat ();
char *find_backup_file_name ();
static char *make_version_name ();
static int max_backup_version ();
static int version_number ();
static int max_backup_version PARAMS ((const char *, const char *));
static int version_number PARAMS ((const char *, const char *, size_t));
/* Return the name of the new backup file for file FILE,
allocated with malloc. Return 0 if out of memory.
@@ -113,41 +116,56 @@ static int version_number ();
Do not call this function if backup_type == none. */
char *
find_backup_file_name (file)
const char *file;
find_backup_file_name (const char *file, enum backup_type backup_type)
{
char *dir;
char *base_versions;
int highest_backup;
size_t backup_suffix_size_max;
size_t file_len = strlen (file);
size_t numbered_suffix_size_max = INT_STRLEN_BOUND (int) + 4;
char *s;
const char *suffix = simple_backup_suffix;
if (backup_type == simple)
return concat (file, simple_backup_suffix);
base_versions = concat (basename (file), ".~");
if (base_versions == 0)
return 0;
dir = dirname (file);
if (dir == 0)
/* Allow room for simple or `.~N~' backups. */
backup_suffix_size_max = strlen (simple_backup_suffix) + 1;
if (HAVE_DIR && backup_suffix_size_max < numbered_suffix_size_max)
backup_suffix_size_max = numbered_suffix_size_max;
s = malloc (file_len + backup_suffix_size_max + numbered_suffix_size_max);
if (s)
{
free (base_versions);
return 0;
strcpy (s, file);
#if HAVE_DIR
if (backup_type != simple)
{
int highest_backup;
size_t dir_len = base_name (s) - s;
strcpy (s + dir_len, ".");
highest_backup = max_backup_version (file + dir_len, s);
if (! (backup_type == numbered_existing && highest_backup == 0))
{
char *numbered_suffix = s + (file_len + backup_suffix_size_max);
sprintf (numbered_suffix, ".~%d~", highest_backup + 1);
suffix = numbered_suffix;
}
strcpy (s, file);
}
#endif /* HAVE_DIR */
addext (s, suffix, '~');
}
highest_backup = max_backup_version (base_versions, dir);
free (base_versions);
free (dir);
if (backup_type == numbered_existing && highest_backup == 0)
return concat (file, simple_backup_suffix);
return make_version_name (file, highest_backup + 1);
return s;
}
#if HAVE_DIR
/* Return the number of the highest-numbered backup file for file
FILE in directory DIR. If there are no numbered backups
of FILE in DIR, or an error occurs reading DIR, return 0.
FILE should already have ".~" appended to it. */
*/
static int
max_backup_version (file, dir)
const char *file;
const char *dir;
max_backup_version (const char *file, const char *dir)
{
DIR *dirp;
struct dirent *dp;
@@ -164,7 +182,7 @@ max_backup_version (file, dir)
while ((dp = readdir (dirp)) != 0)
{
if (!REAL_DIR_ENTRY (dp) || NLENGTH (dp) <= file_name_length)
if (!REAL_DIR_ENTRY (dp) || NLENGTH (dp) < file_name_length + 4)
continue;
this_version = version_number (file, dp->d_name, file_name_length);
@@ -176,62 +194,75 @@ max_backup_version (file, dir)
return highest_version;
}
/* Return a string, allocated with malloc, containing
"FILE.~VERSION~". Return 0 if out of memory. */
static char *
make_version_name (file, version)
const char *file;
int version;
{
char *backup_name;
backup_name = malloc (strlen (file) + 16);
if (backup_name == 0)
return 0;
sprintf (backup_name, "%s.~%d~", file, version);
return backup_name;
}
/* If BACKUP is a numbered backup of BASE, return its version number;
otherwise return 0. BASE_LENGTH is the length of BASE.
BASE should already have ".~" appended to it. */
*/
static int
version_number (base, backup, base_length)
const char *base;
const char *backup;
int base_length;
version_number (const char *base, const char *backup, size_t base_length)
{
int version;
const char *p;
version = 0;
if (!strncmp (base, backup, base_length) && ISDIGIT (backup[base_length]))
if (strncmp (base, backup, base_length) == 0
&& backup[base_length] == '.'
&& backup[base_length + 1] == '~')
{
for (p = &backup[base_length]; ISDIGIT (*p); ++p)
for (p = &backup[base_length + 2]; ISDIGIT (*p); ++p)
version = version * 10 + *p - '0';
if (p[0] != '~' || p[1])
version = 0;
}
return version;
}
#endif /* HAVE_DIR */
/* Return the newly-allocated concatenation of STR1 and STR2.
If out of memory, return 0. */
static char *
concat (str1, str2)
const char *str1;
const char *str2;
static const char * const backup_args[] =
{
char *newstr;
int str1_length = strlen (str1);
/* In a series of synonyms, present the most meaning full first, so
that argmatch_valid be more readable. */
"none", "off",
"simple", "never",
"existing", "nil",
"numbered", "t",
0
};
newstr = malloc (str1_length + strlen (str2) + 1);
if (newstr == 0)
return 0;
strcpy (newstr, str1);
strcpy (newstr + str1_length, str2);
return newstr;
static const enum backup_type backup_types[] =
{
none, none,
simple, simple,
numbered_existing, numbered_existing,
numbered, numbered
};
/* Return the type of backup specified by VERSION.
If VERSION is NULL or the empty string, return numbered_existing.
If VERSION is invalid or ambiguous, fail with a diagnostic appropriate
for the specified CONTEXT. Unambiguous abbreviations are accepted. */
enum backup_type
get_version (const char *context, const char *version)
{
if (version == 0 || *version == 0)
return numbered_existing;
else
return XARGMATCH (context, version, backup_args, backup_types);
}
/* Return the type of backup specified by VERSION.
If VERSION is NULL, use the value of the envvar VERSION_CONTROL.
If the specified string is invalid or ambiguous, fail with a diagnostic
appropriate for the specified CONTEXT.
Unambiguous abbreviations are accepted. */
enum backup_type
xget_version (const char *context, const char *version)
{
if (version && *version)
return get_version (context, version);
else
return get_version ("$VERSION_CONTROL", getenv ("VERSION_CONTROL"));
}

View File

@@ -1,5 +1,5 @@
/* backupfile.h -- declarations for making Emacs style backup file names
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990-1992, 1997-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
@@ -12,8 +12,12 @@
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. */
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef BACKUPFILE_H_
# define BACKUPFILE_H_
/* When to make backup files. */
enum backup_type
@@ -32,11 +36,25 @@ enum backup_type
numbered
};
extern enum backup_type backup_type;
extern char *simple_backup_suffix;
# define VALID_BACKUP_TYPE(Type) \
((Type) == none \
|| (Type) == simple \
|| (Type) == numbered_existing \
|| (Type) == numbered)
#ifdef __STDC__
char *find_backup_file_name (const char *file);
#else
char *find_backup_file_name ();
#endif
extern char const *simple_backup_suffix;
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
char *find_backup_file_name PARAMS ((char const *, enum backup_type));
enum backup_type get_version PARAMS ((char const *context, char const *arg));
enum backup_type xget_version PARAMS ((char const *context, char const *arg));
void addext PARAMS ((char *, char const *, int));
#endif /* ! BACKUPFILE_H_ */

View File

@@ -1,5 +1,5 @@
/* basename.c -- return the last element in a path
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 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
@@ -15,24 +15,41 @@
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
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Return NAME with any leading path stripped off.
Don't use strrchr/rindex. */
#ifndef FILESYSTEM_PREFIX_LEN
# define FILESYSTEM_PREFIX_LEN(Filename) 0
#endif
#ifndef ISSLASH
# define ISSLASH(C) ((C) == '/')
#endif
/* In general, we can't use the builtin `basename' function if available,
since it has different meanings in different environments.
In some environments the builtin `basename' modifies its argument.
If NAME is all slashes, be sure to return `/'. */
char *
basename (name)
const char *name;
base_name (char const *name)
{
const char *base = name;
char const *base = name += FILESYSTEM_PREFIX_LEN (name);
int all_slashes = 1;
char const *p;
while (*name)
for (p = name; *p; p++)
{
if (*name == '/')
base = name + 1;
++name;
if (ISSLASH (*p))
base = p + 1;
else
all_slashes = 0;
}
/* If NAME is all slashes, arrange to return `/'. */
if (*base == '\0' && ISSLASH (*name) && all_slashes)
--base;
return (char *) base;
}

63
lib/bumpalloc.h Normal file
View File

@@ -0,0 +1,63 @@
/* BUMP_ALLOC macro - increase table allocation by one element.
Copyright (C) 1990, 1991, 1993, 1998 Free Software Foundation, Inc.
François Pinard <pinard@iro.umontreal.ca>, 1990.
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. */
/*-------------------------------------------------------------------------.
| Bump the allocation of the array pointed to by TABLE whenever required. |
| The table already has already COUNT elements in it, this macro ensure it |
| has enough space to accommodate at least one more element. Space is |
| allocated (2 ^ EXPONENT) elements at a time. Each element of the array |
| is of type TYPE. |
`-------------------------------------------------------------------------*/
/* 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.
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
achieve this is to never use this macro directly, but use it to define
other macros, which would then be TABLE-specific.
The first time through, COUNT is usually zero. Note that COUNT is not
updated by this macro, but it should be update elsewhere, later. This
is convenient, because it allows TABLE[COUNT] to refer to the new
element at the end. Once its construction is completed, COUNT++ will
record it in the table. Calling this macro several times in a row
without updating COUNT is a bad thing to do. */
#define BUMP_ALLOC(Table, Count, Exponent, Type) \
BUMP_ALLOC_WITH_SIZE ((Table), (Count), (Exponent), Type, sizeof (Type))
/* In cases `sizeof TYPE' would not always yield the correct value for
the size of each element entry, this macro accepts a supplementary
SIZE argument. The EXPONENT, TYPE and SIZE parameters should still
have the same value for all macro calls related to a specific TABLE. */
#define BUMP_ALLOC_WITH_SIZE(Table, Count, Exponent, Type, Size) \
do \
{ \
if (((Count) & (~(~0 << (Exponent)))) == 0) \
{ \
if ((Count) == 0) \
(Table) = (Type *) xmalloc ((1 << (Exponent)) * (Size)); \
else \
(Table) = (Type *) \
xrealloc ((Table), ((Count) + (1 << (Exponent))) * (Size)); \
} \
} \
while (0)

View File

@@ -1,6 +1,6 @@
/* Host name canonicalization
Copyright (C) 1995 Free Software Foundation, Inc.
Copyright (C) 1995, 1999 Free Software Foundation, Inc.
Written by Miles Bader <miles@gnu.ai.mit.edu>
@@ -43,11 +43,12 @@
# include <arpa/inet.h>
#endif
void free ();
/* Returns the canonical hostname associated with HOST (allocated in a static
buffer), or 0 if it can't be determined. */
char *
canon_host (host)
char *host;
canon_host (const char *host)
{
#ifdef HAVE_GETHOSTBYNAME
struct hostent *he = gethostbyname (host);
@@ -68,9 +69,23 @@ canon_host (host)
}
if (addr && strcmp (he->h_name, addr) == 0)
/* gethostbyname() cheated! Lookup the host name via the address
this time to get the actual host name. */
he = gethostbyaddr (he->h_addr, he->h_length, he->h_addrtype);
{
/* gethostbyname has returned a string representation of the IP
address, for example, "127.0.0.1". So now, look up the host
name via the address. Although it may seem reasonable to look
up the host name via the address, we must not pass `he->h_addr'
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);
if (h_addr_copy == NULL)
he = NULL;
else
{
he = gethostbyaddr (h_addr_copy, he->h_length, he->h_addrtype);
free (h_addr_copy);
}
}
# endif /* HAVE_GETHOSTBYADDR */
if (he)
@@ -79,3 +94,17 @@ canon_host (host)
#endif /* HAVE_GETHOSTBYNAME */
return 0;
}
#ifdef TEST_CANON_HOST
int
main (int argc, char **argv)
{
int i;
for (i = 1; i < argc; i++)
{
char *s = canon_host (argv[i]);
printf ("%s: %s\n", argv[i], (s ? s : "<undef>"));
}
exit (0);
}
#endif /* TEST_CANON_HOST */

55
lib/chown.c Normal file
View File

@@ -0,0 +1,55 @@
/* provide consistent interface to chown for systems that don't interpret
an ID of -1 as meaning `don't change the corresponding ID'.
Copyright (C) 1997 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 */
#include <config.h>
/* Disable the definition of chown to rpl_chown (from config.h) in this
file. Otherwise, we'd get conflicting prototypes for rpl_chown on
most systems. */
#undef chown
#include <sys/types.h>
#include <sys/stat.h>
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
/* FIXME: describe. */
int
rpl_chown (const char *file, uid_t uid, gid_t gid)
{
if (gid == (gid_t) -1 || uid == (uid_t) -1)
{
struct stat file_stats;
/* Stat file to get id(s) that should remain unchanged. */
if (stat (file, &file_stats))
return 1;
if (gid == (gid_t) -1)
gid = file_stats.st_gid;
if (uid == (uid_t) -1)
uid = file_stats.st_uid;
}
return chown (file, uid, gid);
}

81
lib/closeout.c Normal file
View File

@@ -0,0 +1,81 @@
/* closeout.c - close standard output
Copyright (C) 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
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
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#ifndef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#include <stdio.h>
#include "closeout.h"
#include "error.h"
/* Close standard output, exiting with status STATUS on failure.
If a program writes *anything* to stdout, that program should `fflush'
stdout and make sure that it succeeds before exiting. Otherwise,
suppose that you go to the extreme of checking the return status
of every function that does an explicit write to stdout. The last
printf can succeed in writing to the internal stream buffer, and yet
the fclose(stdout) could still fail (due e.g., to a disk full error)
when it tries to write out that buffered data. Thus, you would be
left with an incomplete output file and the offending program would
exit successfully.
FIXME: note the fflush suggested above is implicit in the fclose
we actually do below. Consider doing only the fflush and/or using
setvbuf to inhibit buffering.
Besides, it's wasteful to check the return value from every call
that writes to stdout -- just let the internal stream state record
the failure. That's what the ferror test is checking below.
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"));
if (fclose (stdout) != 0)
error (status, errno, _("write error"));
}
/* Close standard output, exiting with status EXIT_FAILURE on failure. */
void
close_stdout (void)
{
close_stdout_status (EXIT_FAILURE);
}

10
lib/closeout.h Normal file
View File

@@ -0,0 +1,10 @@
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
void close_stdout PARAMS ((void));
void close_stdout_status PARAMS ((int status));

148
lib/diacrit.c Normal file
View File

@@ -0,0 +1,148 @@
/* Diacritics processing for a few character codes.
Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
François Pinard <pinard@iro.umontreal.ca>, 1988.
All this file is a temporary hack, waiting for locales in GNU.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "diacrit.h"
/* ISO 8859-1 Latin-1 code is used as the underlying character set. If
MSDOS is defined, IBM-PC's character set code is used instead. */
/*--------------------------------------------------------------------.
| For each alphabetic character, returns what it would be without its |
| possible diacritic symbol. |
`--------------------------------------------------------------------*/
const char diacrit_base[256] =
{
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', 0, 0, 0, 0, 0,
0, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', 0, 0, 0, 0, 0,
#ifdef MSDOS
'C', 'u', 'e', 'a', 'a', 'a', 'a', 'c',
'e', 'e', 'e', 'i', 'i', 'i', 'A', 'A',
'E', 'e', 'E', 'o', 'o', 'o', 'u', 'u',
'y', 'O', 'U', 0, 0, 0, 0, 0,
'a', 'i', 'o', 'u', 'n', 'N', 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
#else /* not MSDOS */
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'C',
'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I',
0, 'N', 'O', 'O', 'O', 'O', 'O', 0,
'O', 'U', 'U', 'U', 'U', 'Y', 0, 0,
'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c',
'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i',
0, 'n', 'o', 'o', 'o', 'o', 'o', 0,
'o', 'u', 'u', 'u', 'u', 'y', 0, 'y',
#endif /* not MSDOS */
};
/*------------------------------------------------------------------------.
| For each alphabetic character, returns a code of what its diacritic is, |
| according to the following codes: 1 (eE) over aA for latin diphtongs; 2 |
| (') acute accent; 3 (`) grave accent; 4 (^) circumflex accent; 5 (") |
| umlaut or diaraesis; 6 (~) tilda; 7 (,) cedilla; 8 (o) covering degree |
| symbol; 9 (|) slashed character. |
`------------------------------------------------------------------------*/
const char diacrit_diac[256] =
{
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 4, 0,
3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 6, 0,
#ifdef MSDOS
7, 5, 2, 4, 5, 3, 8, 7,
4, 5, 3, 5, 4, 3, 5, 8,
2, 1, 1, 4, 5, 3, 4, 3,
5, 5, 5, 0, 0, 0, 0, 0,
2, 2, 2, 2, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
#else /* not MSDOS */
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
3, 2, 4, 6, 5, 8, 1, 7,
3, 2, 4, 5, 3, 2, 4, 5,
0, 6, 3, 2, 4, 6, 5, 0,
9, 3, 2, 4, 5, 2, 0, 0,
3, 2, 4, 6, 5, 8, 1, 7,
3, 2, 4, 5, 3, 2, 4, 5,
0, 6, 3, 2, 4, 6, 5, 0,
9, 3, 2, 4, 5, 2, 0, 0,
#endif /* not MSDOS */
};

16
lib/diacrit.h Normal file
View File

@@ -0,0 +1,16 @@
/* Diacritics processing for a few character codes.
Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
François Pinard <pinard@iro.umontreal.ca>, 1988.
All this file is a temporary hack, waiting for locales in GNU.
*/
extern const char diacrit_base[]; /* characters without diacritics */
extern const char diacrit_diac[]; /* diacritic code for each character */
/* Returns CHAR without its diacritic. CHAR is known to be alphabetic. */
#define tobase(Char) (diacrit_base[(unsigned char) (Char)])
/* 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 Free Software Foundation, Inc.
Copyright (C) 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
@@ -15,32 +15,33 @@
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>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef STDC_HEADERS
#include <stdlib.h>
# include <stdlib.h>
#else
char *malloc ();
#endif
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
#include <string.h>
#if defined STDC_HEADERS || defined HAVE_STRING_H
# include <string.h>
#else
#include <strings.h>
#ifndef strrchr
#define strrchr rindex
#endif
# include <strings.h>
# ifndef strrchr
# define strrchr rindex
# endif
#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. */
char *
dirname (path)
char *path;
dir_name (const char *path)
{
char *newpath;
char *slash;

31
lib/dirname.h Normal file
View File

@@ -0,0 +1,31 @@
/* Copyright (C) 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. */
#ifndef DIRNAME_H_
# define DIRNAME_H_ 1
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
char *
dir_name PARAMS ((const char *path));
#endif /* not DIRNAME_H_ */

View File

@@ -1,23 +1,27 @@
/* error.c -- error handler for noninteractive utilities
Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
/* Error handler for noninteractive utilities
Copyright (C) 1990,91,92,93,94,95,96,97,98 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 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.
This program is distributed in the hope that it will be useful,
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 General Public License for more details.
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 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 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. */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
#if HAVE_CONFIG_H
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
@@ -43,13 +47,12 @@
void exit ();
#endif
#include "error.h"
#ifndef _
# define _(String) String
#endif
/* Get prototypes for the functions defined here. */
#include <error.h>
/* If NULL, error will flush stdout, then print on stderr the program
name, a colon and a space. Otherwise, error will call this
function without parameters instead. */
@@ -68,17 +71,25 @@ unsigned int error_message_count;
# define program_name program_invocation_name
# include <errno.h>
#else /* not _LIBC */
/* In GNU libc we want do not want to use the common name `error' directly.
Instead make it a weak alias. */
# define error __error
# define error_at_line __error_at_line
#else /* not _LIBC */
/* The calling program should define program_name and set it to the
name of the executing program. */
extern char *program_name;
# if HAVE_STRERROR
# ifndef strerror /* On some systems, strerror is a macro */
char *strerror ();
# endif
# ifdef HAVE_STRERROR_R
# define __strerror_r strerror_r
# else
# if HAVE_STRERROR
# ifndef strerror /* On some systems, strerror is a macro */
char *strerror ();
# endif
# else
static char *
private_strerror (errnum)
int errnum;
@@ -87,11 +98,12 @@ private_strerror (errnum)
extern int sys_nerr;
if (errnum > 0 && errnum <= sys_nerr)
return sys_errlist[errnum];
return _(sys_errlist[errnum]);
return _("Unknown system error");
}
# define strerror private_strerror
# endif /* HAVE_STRERROR */
# define strerror private_strerror
# endif /* HAVE_STRERROR */
# endif /* HAVE_STRERROR_R */
#endif /* not _LIBC */
/* Print the program name and error message MESSAGE, which is a printf-style
@@ -101,7 +113,7 @@ private_strerror (errnum)
/* VARARGS */
void
#if defined(VA_START) && __STDC__
#if defined VA_START && __STDC__
error (int status, int errnum, const char *message, ...)
#else
error (status, errnum, message, va_alist)
@@ -137,7 +149,17 @@ error (status, errnum, message, va_alist)
++error_message_count;
if (errnum)
fprintf (stderr, ": %s", strerror (errnum));
{
#if defined HAVE_STRERROR_R || defined _LIBC
char errbuf[1024];
/* Don't use __strerror_r's return value because on some systems
(at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */
__strerror_r (errnum, errbuf, sizeof errbuf);
fprintf (stderr, ": %s", errbuf);
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif
}
putc ('\n', stderr);
fflush (stderr);
if (status)
@@ -149,7 +171,7 @@ error (status, errnum, message, va_alist)
int error_one_per_line;
void
#if defined(VA_START) && __STDC__
#if defined VA_START && __STDC__
error_at_line (int status, int errnum, const char *file_name,
unsigned int line_number, const char *message, ...)
#else
@@ -205,9 +227,24 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
++error_message_count;
if (errnum)
fprintf (stderr, ": %s", strerror (errnum));
{
#if defined HAVE_STRERROR_R || defined _LIBC
char errbuf[1024];
fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif
}
putc ('\n', stderr);
fflush (stderr);
if (status)
exit (status);
}
#ifdef _LIBC
/* Make the weak alias. */
# undef error
# undef error_at_line
weak_alias (__error, error)
weak_alias (__error_at_line, error_at_line)
#endif

View File

@@ -1,10 +1,14 @@
/* error.h -- declaration for error-reporting function
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
/* Declaration for error-reporting function
Copyright (C) 1995, 1996, 1997 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.
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 distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -12,26 +16,31 @@
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. */
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
#ifndef ERROR_H_
# define ERROR_H_
#ifndef _ERROR_H
#define _ERROR_H 1
# ifndef __attribute__
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
# define __attribute__(Spec) /* empty */
# endif
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
# define __attribute__(Spec) /* empty */
# endif
/* The __-protected variants of `format' and `printf' attributes
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __format__ format
# define __printf__ printf
# endif
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __format__ format
# define __printf__ printf
# endif
#endif
# if defined (__STDC__) && __STDC__
#ifdef __cplusplus
extern "C" {
#endif
#if defined (__STDC__) && __STDC__
/* Print a message with `fprintf (stderr, FORMAT, ...)';
if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
@@ -49,11 +58,11 @@ extern void error_at_line (int status, int errnum, const char *fname,
function without parameters instead. */
extern void (*error_print_progname) (void);
# else
#else
void error ();
void error_at_line ();
extern void (*error_print_progname) ();
# endif
#endif
/* This variable is incremented each time `error' is called. */
extern unsigned int error_message_count;
@@ -62,4 +71,8 @@ extern unsigned int error_message_count;
variable controls whether this mode is selected or not. */
extern int error_one_per_line;
#endif /* not ERROR_H_ */
#ifdef __cplusplus
}
#endif
#endif /* error.h */

View File

@@ -1,5 +1,5 @@
/* euidaccess -- check if effective user id can access file
Copyright (C) 1990, 1991, 1995 Free Software Foundation, Inc.
Copyright (C) 1990, 1991, 1995, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -21,7 +21,7 @@ Suite 330, Boston, MA 02111-1307, USA. */
/* Written by David MacKenzie and Torbjorn Granlund.
Adapted for GNU C library by Roland McGrath. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -111,7 +111,7 @@ static gid_t egid;
/* Nonzero if UID, GID, EUID, and EGID have valid values. */
static int have_ids = 0;
# ifdef HAVE_GETGROUPS
# if HAVE_GETGROUPS
int group_member ();
# else
# define group_member(gid) 0
@@ -127,9 +127,7 @@ int group_member ();
filesystem, text busy, etc. */
int
euidaccess (path, mode)
const char *path;
int mode;
euidaccess (const char *path, int mode)
{
struct stat stats;
int granted;

127
lib/exclude.c Normal file
View File

@@ -0,0 +1,127 @@
/* exclude.c -- exclude file names
Copyright 1992, 1993, 1994, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <eggert@twinsun.com> */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#include <exclude.h>
#include <fnmatch.h>
#include <stdio.h>
#include <sys/types.h>
void *xmalloc PARAMS ((size_t));
void *xrealloc PARAMS ((void *, size_t));
/* Keep track of excluded file name patterns. */
struct exclude
{
char const **exclude;
int exclude_alloc;
int exclude_count;
};
struct exclude *
new_exclude (void)
{
struct exclude *ex = (struct exclude *) xmalloc (sizeof (struct exclude));
ex->exclude_count = 0;
ex->exclude_alloc = 64;
ex->exclude = (char const **) xmalloc (ex->exclude_alloc * sizeof (char *));
return ex;
}
int
excluded_filename (struct exclude const *ex, char const *f)
{
char const * const *exclude = ex->exclude;
int exclude_count = ex->exclude_count;
int i;
for (i = 0; i < exclude_count; i++)
if (fnmatch (exclude[i], f, 0) == 0)
return 1;
return 0;
}
void
add_exclude (struct exclude *ex, char const *pattern)
{
if (ex->exclude_alloc <= ex->exclude_count)
ex->exclude = (char const **) xrealloc (ex->exclude,
((ex->exclude_alloc *= 2)
* sizeof (char *)));
ex->exclude[ex->exclude_count++] = pattern;
}
int
add_exclude_file (struct exclude *ex, char const *filename, char line_end)
{
int use_stdin = filename[0] == '-' && !filename[1];
FILE *in;
char *buf;
char *p;
char const *pattern;
char const *lim;
size_t buf_alloc = 1024;
size_t buf_count = 0;
int c;
int e = 0;
if (use_stdin)
in = stdin;
else if (! (in = fopen (filename, "r")))
return -1;
buf = xmalloc (buf_alloc);
while ((c = getc (in)) != EOF)
{
buf[buf_count++] = c;
if (buf_count == buf_alloc)
buf = xrealloc (buf, buf_alloc *= 2);
}
buf = xrealloc (buf, buf_count + 1);
if (ferror (in))
e = errno;
if (!use_stdin && fclose (in) != 0)
e = errno;
for (pattern = p = buf, lim = buf + buf_count; p <= lim; p++)
if (p < lim ? *p == line_end : buf < p && p[-1])
{
*p = '\0';
add_exclude (ex, pattern);
pattern = p + 1;
}
errno = e;
return e ? -1 : 0;
}

34
lib/exclude.h Normal file
View File

@@ -0,0 +1,34 @@
/* exclude.h -- declarations for excluding file names
Copyright 1992, 1993, 1994, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <eggert@twinsun.com> */
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
struct exclude;
struct exclude *new_exclude PARAMS ((void));
void add_exclude PARAMS ((struct exclude *, char const *));
int add_exclude_file PARAMS ((struct exclude *, char const *, char));
int excluded_filename PARAMS ((struct exclude const *, char const *));

View File

@@ -1,5 +1,5 @@
/* Convert file size to number of blocks on System V-like machines.
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 1997, 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
@@ -17,23 +17,31 @@
/* Written by Brian L. Matthews, blm@6sceng.UUCP. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if !defined (HAVE_ST_BLOCKS) && !defined(_POSIX_VERSION)
# include <sys/types.h>
#include <sys/types.h>
#if HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#if !HAVE_ST_BLOCKS && !defined _POSIX_SOURCE && defined BSIZE
# if HAVE_UNISTD_H
# include <unistd.h>
# endif
# ifndef NINDIR
/* Some SysV's, like Irix, seem to lack these. Hope they're correct. */
/* Size of a indirect block, in bytes. */
# ifndef BSIZE
# define BSIZE 1024
# if defined (__DJGPP__)
typedef long daddr_t; /* for disk address */
# endif
/* Some SysV's, like Irix, seem to lack this. Hope it's correct. */
/* Number of inode pointers per indirect block. */
# define NINDIR (BSIZE/sizeof(daddr_t))
# define NINDIR (BSIZE / sizeof (daddr_t))
# endif /* !NINDIR */
/* Number of direct block addresses in an inode. */
@@ -41,12 +49,11 @@
/* Return the number of 512-byte blocks in a file of SIZE bytes. */
long
st_blocks (size)
long size;
off_t
st_blocks (off_t size)
{
long datablks = (size + 512 - 1) / 512;
long indrblks = 0;
off_t datablks = size / 512 + (size % 512 != 0);
off_t indrblks = 0;
if (datablks > NDIR)
{

View File

@@ -1,5 +1,5 @@
/* filemode.c -- make a string describing file modes
Copyright (C) 1985, 1990, 1993 Free Software Foundation, Inc.
Copyright (C) 1985, 1990, 1993, 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
@@ -15,13 +15,15 @@
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>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include "filemode.h"
#if !S_IRUSR
# if S_IREAD
# define S_IRUSR S_IREAD
@@ -47,51 +49,181 @@
#endif
#ifdef STAT_MACROS_BROKEN
#undef S_ISBLK
#undef S_ISCHR
#undef S_ISDIR
#undef S_ISFIFO
#undef S_ISLNK
#undef S_ISMPB
#undef S_ISMPC
#undef S_ISNWK
#undef S_ISREG
#undef S_ISSOCK
# undef S_ISBLK
# undef S_ISCHR
# undef S_ISDIR
# undef S_ISFIFO
# undef S_ISLNK
# undef S_ISMPB
# undef S_ISMPC
# undef S_ISNWK
# undef S_ISREG
# undef S_ISSOCK
#endif /* STAT_MACROS_BROKEN. */
#if !defined(S_ISBLK) && defined(S_IFBLK)
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
#if !defined(S_ISCHR) && defined(S_IFCHR)
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#if !defined(S_ISREG) && defined(S_IFREG)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#if !defined(S_ISFIFO) && defined(S_IFIFO)
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif
#if !defined(S_ISLNK) && defined(S_IFLNK)
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#if !defined(S_ISSOCK) && defined(S_IFSOCK)
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#endif
#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
#define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
#endif
#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
#define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
#endif
#if !defined(S_ISDOOR) && defined(S_IFDOOR) /* Solaris 2.5 and up */
# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR)
#endif
void mode_string ();
static char ftypelet ();
static void rwx ();
static void setst ();
/* Look at read, write, and execute bits in BITS and set
flags in CHARS accordingly. */
static void
rwx (short unsigned int bits, char *chars)
{
chars[0] = (bits & S_IRUSR) ? 'r' : '-';
chars[1] = (bits & S_IWUSR) ? 'w' : '-';
chars[2] = (bits & S_IXUSR) ? 'x' : '-';
}
/* Set the 's' and 't' flags in file attributes string CHARS,
according to the file mode BITS. */
static void
setst (short unsigned int bits, char *chars)
{
#ifdef S_ISUID
if (bits & S_ISUID)
{
if (chars[3] != 'x')
/* Set-uid, but not executable by owner. */
chars[3] = 'S';
else
chars[3] = 's';
}
#endif
#ifdef S_ISGID
if (bits & S_ISGID)
{
if (chars[6] != 'x')
/* Set-gid, but not executable by group. */
chars[6] = 'S';
else
chars[6] = 's';
}
#endif
#ifdef S_ISVTX
if (bits & S_ISVTX)
{
if (chars[9] != 'x')
/* Sticky, but not executable by others. */
chars[9] = 'T';
else
chars[9] = 't';
}
#endif
}
/* Return a character indicating the type of file described by
file mode BITS:
'd' for directories
'D' for doors
'b' for block special files
'c' for character special files
'm' for multiplexor files
'M' for an off-line (regular) file
'l' for symbolic links
's' for sockets
'p' for fifos
'-' for regular files
'?' for any other file type. */
static char
ftypelet (long int bits)
{
#ifdef S_ISBLK
if (S_ISBLK (bits))
return 'b';
#endif
if (S_ISCHR (bits))
return 'c';
if (S_ISDIR (bits))
return 'd';
if (S_ISREG (bits))
return '-';
#ifdef S_ISFIFO
if (S_ISFIFO (bits))
return 'p';
#endif
#ifdef S_ISLNK
if (S_ISLNK (bits))
return 'l';
#endif
#ifdef S_ISSOCK
if (S_ISSOCK (bits))
return 's';
#endif
#ifdef S_ISMPC
if (S_ISMPC (bits))
return 'm';
#endif
#ifdef S_ISNWK
if (S_ISNWK (bits))
return 'n';
#endif
#ifdef S_ISDOOR
if (S_ISDOOR (bits))
return 'D';
#endif
/* The following two tests are for Cray DMF (Data Migration
Facility), which is a HSM file system. A migrated file has a
`st_dm_mode' that is different from the normal `st_mode', so any
tests for migrated files should use the former. */
#ifdef S_ISOFD
if (S_ISOFD (bits))
/* off line, with data */
return 'M';
#endif
#ifdef S_ISOFL
/* off line, with no data */
if (S_ISOFL (bits))
return 'M';
#endif
return '?';
}
/* Like filemodestring, but only the relevant part of the `struct stat'
is given as an argument. */
void
mode_string (short unsigned int mode, char *str)
{
str[0] = ftypelet ((long) mode);
rwx ((mode & 0700) << 0, &str[1]);
rwx ((mode & 0070) << 3, &str[4]);
rwx ((mode & 0007) << 6, &str[7]);
setst (mode, str);
}
/* filemodestring - fill in string STR with an ls-style ASCII
representation of the st_mode field of file stats block STATP.
@@ -130,137 +262,7 @@ static void setst ();
'T' if the file is sticky but not executable. */
void
filemodestring (statp, str)
struct stat *statp;
char *str;
filemodestring (struct stat *statp, char *str)
{
mode_string (statp->st_mode, str);
}
/* Like filemodestring, but only the relevant part of the `struct stat'
is given as an argument. */
void
mode_string (mode, str)
unsigned short mode;
char *str;
{
str[0] = ftypelet ((long) mode);
rwx ((mode & 0700) << 0, &str[1]);
rwx ((mode & 0070) << 3, &str[4]);
rwx ((mode & 0007) << 6, &str[7]);
setst (mode, str);
}
/* Return a character indicating the type of file described by
file mode BITS:
'd' for directories
'b' for block special files
'c' for character special files
'm' for multiplexor files
'l' for symbolic links
's' for sockets
'p' for fifos
'-' for regular files
'?' for any other file type. */
static char
ftypelet (bits)
long bits;
{
#ifdef S_ISBLK
if (S_ISBLK (bits))
return 'b';
#endif
if (S_ISCHR (bits))
return 'c';
if (S_ISDIR (bits))
return 'd';
if (S_ISREG (bits))
return '-';
#ifdef S_ISFIFO
if (S_ISFIFO (bits))
return 'p';
#endif
#ifdef S_ISLNK
if (S_ISLNK (bits))
return 'l';
#endif
#ifdef S_ISSOCK
if (S_ISSOCK (bits))
return 's';
#endif
#ifdef S_ISMPC
if (S_ISMPC (bits))
return 'm';
#endif
#ifdef S_ISNWK
if (S_ISNWK (bits))
return 'n';
#endif
#ifdef S_ISOFD
/* Cray migrated dmf file. */
if (S_ISOFD (bits))
return 'M';
#endif
#ifdef S_ISOFL
/* Cray migrated dmf file. */
if (S_ISOFL (bits))
return 'M';
#endif
return '?';
}
/* Look at read, write, and execute bits in BITS and set
flags in CHARS accordingly. */
static void
rwx (bits, chars)
unsigned short bits;
char *chars;
{
chars[0] = (bits & S_IRUSR) ? 'r' : '-';
chars[1] = (bits & S_IWUSR) ? 'w' : '-';
chars[2] = (bits & S_IXUSR) ? 'x' : '-';
}
/* Set the 's' and 't' flags in file attributes string CHARS,
according to the file mode BITS. */
static void
setst (bits, chars)
unsigned short bits;
char *chars;
{
#ifdef S_ISUID
if (bits & S_ISUID)
{
if (chars[3] != 'x')
/* Set-uid, but not executable by owner. */
chars[3] = 'S';
else
chars[3] = 's';
}
#endif
#ifdef S_ISGID
if (bits & S_ISGID)
{
if (chars[6] != 'x')
/* Set-gid, but not executable by group. */
chars[6] = 'S';
else
chars[6] = 's';
}
#endif
#ifdef S_ISVTX
if (bits & S_ISVTX)
{
if (chars[9] != 'x')
/* Sticky, but not executable by others. */
chars[9] = 'T';
else
chars[9] = 't';
}
#endif
}

9
lib/filemode.h Normal file
View File

@@ -0,0 +1,9 @@
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
void mode_string PARAMS ((short unsigned int mode, char *str));

View File

@@ -1,38 +1,32 @@
/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1992, 1993, 1996, 1997 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.
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.
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. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Enable GNU extensions in fnmatch.h. */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif
#include <errno.h>
#include <fnmatch.h>
#include <ctype.h>
#if defined (STDC_HEADERS) || !defined (isascii)
# define ISASCII(c) 1
#else
# define ISASCII(c) isascii(c)
#endif
#define ISUPPER(c) (ISASCII (c) && isupper (c))
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
@@ -42,7 +36,16 @@
program understand `configure --with-gnu-libc' and omit the object files,
it is simpler to just do this in the source for each such file. */
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
#if defined _LIBC || !defined __GNU_LIBRARY__
# if defined STDC_HEADERS || !defined isascii
# define ISASCII(c) 1
# else
# define ISASCII(c) isascii(c)
# endif
# define ISUPPER(c) (ISASCII (c) && isupper (c))
# ifndef errno
@@ -52,16 +55,13 @@ extern int errno;
/* Match STRING against the filename pattern PATTERN, returning zero if
it matches, nonzero if not. */
int
fnmatch (pattern, string, flags)
const char *pattern;
const char *string;
int flags;
fnmatch (const char *pattern, const char *string, int flags)
{
register const char *p = pattern, *n = string;
register char c;
/* Note that this evalutes C many times. */
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
/* Note that this evaluates C many times. */
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
while ((c = *p++) != '\0')
{
@@ -83,6 +83,9 @@ fnmatch (pattern, string, flags)
if (!(flags & FNM_NOESCAPE))
{
c = *p++;
if (c == '\0')
/* Trailing \ loses. */
return FNM_NOMATCH;
c = FOLD (c);
}
if (FOLD (*n) != c)
@@ -94,10 +97,24 @@ fnmatch (pattern, string, flags)
(n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
return FNM_NOMATCH;
for (c = *p++; c == '?' || c == '*'; c = *p++, ++n)
if (((flags & FNM_FILE_NAME) && *n == '/') ||
(c == '?' && *n == '\0'))
return FNM_NOMATCH;
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 == '?')
{
/* A ? needs to match one character. */
if (*n == '\0')
/* There isn't another character; no match. */
return FNM_NOMATCH;
else
/* One character of the string is consumed in matching
this ? wildcard, so *??? won't match if there are
less than three characters. */
++n;
}
}
if (c == '\0')
return 0;
@@ -134,7 +151,11 @@ fnmatch (pattern, string, flags)
register char cstart = c, cend = c;
if (!(flags & FNM_NOESCAPE) && c == '\\')
cstart = cend = *p++;
{
if (*p == '\0')
return FNM_NOMATCH;
cstart = cend = *p++;
}
cstart = cend = FOLD (cstart);
@@ -181,8 +202,12 @@ fnmatch (pattern, string, flags)
c = *p++;
if (!(flags & FNM_NOESCAPE) && c == '\\')
/* XXX 1003.2d11 is unclear if this is right. */
++p;
{
if (*p == '\0')
return FNM_NOMATCH;
/* XXX 1003.2d11 is unclear if this is right. */
++p;
}
}
if (not)
return FNM_NOMATCH;

View File

@@ -1,5 +1,5 @@
/* fsusage.c -- return space usage of mounted filesystems
Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1996, 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
@@ -19,10 +19,20 @@
# include <config.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include "fsusage.h"
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
int statfs ();
#if HAVE_SYS_PARAM_H
@@ -62,30 +72,27 @@ int statfs ();
int statvfs ();
#endif
/* Many space usage primitives use all 1 bits to denote a value that is
not applicable or unknown. Propagate this information by returning
a uintmax_t value that is all 1 bits if the argument is all 1 bits,
even if the argument is unsigned and smaller than uintmax_t. */
#define PROPAGATE_ALL_ONES(x) ((x) == -1 ? (uintmax_t) -1 : (uintmax_t) (x))
/* Extract the top bit of X as an uintmax_t value. */
#define EXTRACT_TOP_BIT(x) ((x) \
& ((uintmax_t) 1 << (sizeof (x) * CHAR_BIT - 1)))
/* If a value is negative, many space usage primitives store it into an
integer variable by assignment, even if the variable's type is unsigned.
So, if a space usage variable X's top bit is set, convert X to the
uintmax_t value V such that (- (uintmax_t) V) is the negative of
the original value. If X's top bit is clear, just yield X.
Use PROPAGATE_TOP_BIT if the original value might be negative;
otherwise, use PROPAGATE_ALL_ONES. */
#define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1))
int safe_read ();
/* Return the number of TOSIZE-byte blocks used by
BLOCKS FROMSIZE-byte blocks, rounding away from zero.
TOSIZE must be positive. Return -1 if FROMSIZE is not positive. */
static long
adjust_blocks (blocks, fromsize, tosize)
long blocks;
int fromsize, tosize;
{
if (tosize <= 0)
abort ();
if (fromsize <= 0)
return -1;
if (fromsize == tosize) /* e.g., from 512 to 512 */
return blocks;
else if (fromsize > tosize) /* e.g., from 2048 to 512 */
return blocks * (fromsize / tosize);
else /* e.g., from 256 to 512 */
return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize);
}
/* Fill in the fields of FSP with information about space usage for
the filesystem on which PATH resides.
DISK is the device on which PATH is mounted, for space-getting
@@ -94,33 +101,33 @@ adjust_blocks (blocks, fromsize, tosize)
ERRNO is either a system error value, or zero if DISK is NULL
on a system that requires a non-NULL value. */
int
get_fs_usage (path, disk, fsp)
const char *path;
const char *disk;
struct fs_usage *fsp;
get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp)
{
#ifdef STAT_STATFS3_OSF1
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_fsize, 512)
struct statfs fsd;
if (statfs (path, &fsd, sizeof (struct statfs)) != 0)
return -1;
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
#endif /* STAT_STATFS3_OSF1 */
#ifdef STAT_STATFS2_FS_DATA /* Ultrix */
# define CONVERT_BLOCKS(B) adjust_blocks ((B), 1024, 512)
struct fs_data fsd;
if (statfs (path, &fsd) != 1)
return -1;
fsp->fsu_blocks = CONVERT_BLOCKS (fsd.fd_req.btot);
fsp->fsu_bfree = CONVERT_BLOCKS (fsd.fd_req.bfree);
fsp->fsu_bavail = CONVERT_BLOCKS (fsd.fd_req.bfreen);
fsp->fsu_files = fsd.fd_req.gtot;
fsp->fsu_ffree = fsd.fd_req.gfree;
fsp->fsu_blocksize = 1024;
fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.fd_req.btot);
fsp->fsu_bfree = PROPAGATE_ALL_ONES (fsd.fd_req.bfree);
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.fd_req.bfreen);
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.fd_req.bfreen) != 0;
fsp->fsu_files = PROPAGATE_ALL_ONES (fsd.fd_req.gtot);
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.fd_req.gfree);
#endif /* STAT_STATFS2_FS_DATA */
@@ -128,8 +135,6 @@ get_fs_usage (path, disk, fsp)
# ifndef SUPERBOFF
# define SUPERBOFF (SUPERB * 512)
# endif
# define CONVERT_BLOCKS(B) \
adjust_blocks ((B), (fsd.s_type == Fs2b ? 1024 : 512), 512)
struct filsys fsd;
int fd;
@@ -143,29 +148,35 @@ get_fs_usage (path, disk, fsp)
fd = open (disk, O_RDONLY);
if (fd < 0)
return -1;
lseek (fd, (long) SUPERBOFF, 0);
lseek (fd, (off_t) SUPERBOFF, 0);
if (safe_read (fd, (char *) &fsd, sizeof fsd) != sizeof fsd)
{
close (fd);
return -1;
}
close (fd);
fsp->fsu_blocks = CONVERT_BLOCKS (fsd.s_fsize);
fsp->fsu_bfree = CONVERT_BLOCKS (fsd.s_tfree);
fsp->fsu_bavail = CONVERT_BLOCKS (fsd.s_tfree);
fsp->fsu_files = (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1);
fsp->fsu_ffree = fsd.s_tinode;
fsp->fsu_blocksize = (fsd.s_type == Fs2b ? 1024 : 512);
fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.s_fsize);
fsp->fsu_bfree = PROPAGATE_ALL_ONES (fsd.s_tfree);
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.s_tfree);
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.s_tfree) != 0;
fsp->fsu_files = (fsd.s_isize == -1
? (uintmax_t) -1
: (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1));
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.s_tinode);
#endif /* STAT_READ_FILSYS */
#ifdef STAT_STATFS2_BSIZE /* 4.3BSD, SunOS 4, HP-UX, AIX */
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_bsize, 512)
struct statfs fsd;
if (statfs (path, &fsd) < 0)
return -1;
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize);
# ifdef STATFS_TRUNCATES_BLOCK_COUNTS
/* In SunOS 4.1.2, 4.1.3, and 4.1.3_U1, the block counts in the
@@ -184,60 +195,60 @@ get_fs_usage (path, disk, fsp)
#endif /* STAT_STATFS2_BSIZE */
#ifdef STAT_STATFS2_FSIZE /* 4.4BSD */
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_fsize, 512)
struct statfs fsd;
if (statfs (path, &fsd) < 0)
return -1;
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
#endif /* STAT_STATFS2_FSIZE */
#ifdef STAT_STATFS4 /* SVR3, Dynix, Irix, AIX */
# if _AIX || defined(_CRAY)
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_bsize, 512)
# ifdef _CRAY
# define f_bavail f_bfree
# endif
# else
# define CONVERT_BLOCKS(B) (B)
# ifndef _SEQUENT_ /* _SEQUENT_ is DYNIX/ptx */
# ifndef DOLPHIN /* DOLPHIN 3.8.alfa/7.18 has f_bavail */
# define f_bavail f_bfree
# endif
# endif
# if !_AIX && !defined _SEQUENT_ && !defined DOLPHIN
# define f_bavail f_bfree
# endif
struct statfs fsd;
if (statfs (path, &fsd, sizeof fsd, 0) < 0)
return -1;
/* Empirically, the block counts on most SVR3 and SVR3-derived
systems seem to always be in terms of 512-byte blocks,
no matter what value f_bsize has. */
# if _AIX || defined(_CRAY)
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize);
# else
fsp->fsu_blocksize = 512;
# endif
#endif /* STAT_STATFS4 */
#ifdef STAT_STATVFS /* SVR4 */
# define CONVERT_BLOCKS(B) \
adjust_blocks ((B), fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize, 512)
struct statvfs fsd;
if (statvfs (path, &fsd) < 0)
return -1;
/* f_frsize isn't guaranteed to be supported. */
fsp->fsu_blocksize =
PROPAGATE_ALL_ONES (fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize);
#endif /* STAT_STATVFS */
#if !defined(STAT_STATFS2_FS_DATA) && !defined(STAT_READ_FILSYS)
/* !Ultrix && !SVR2 */
fsp->fsu_blocks = CONVERT_BLOCKS (fsd.f_blocks);
fsp->fsu_bfree = CONVERT_BLOCKS (fsd.f_bfree);
fsp->fsu_bavail = CONVERT_BLOCKS (fsd.f_bavail);
fsp->fsu_files = fsd.f_files;
fsp->fsu_ffree = fsd.f_ffree;
fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.f_blocks);
fsp->fsu_bfree = PROPAGATE_ALL_ONES (fsd.f_bfree);
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.f_bavail);
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.f_bavail) != 0;
fsp->fsu_files = PROPAGATE_ALL_ONES (fsd.f_files);
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.f_ffree);
#endif /* not STAT_STATFS2_FS_DATA && not STAT_READ_FILSYS */
@@ -248,9 +259,7 @@ get_fs_usage (path, disk, fsp)
/* AIX PS/2 does not supply statfs. */
int
statfs (path, fsb)
char *path;
struct statfs *fsb;
statfs (char *path, struct statfs *fsb)
{
struct stat stats;
struct dustat fsd;

View File

@@ -1,5 +1,5 @@
/* fsusage.h -- declarations for filesystem space usage info
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,22 +16,30 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Space usage statistics for a filesystem. Blocks are 512-byte. */
#if !defined FSUSAGE_H_
# define FSUSAGE_H_
struct fs_usage
{
long fsu_blocks; /* Total blocks. */
long fsu_bfree; /* Free blocks available to superuser. */
long fsu_bavail; /* Free blocks available to non-superuser. */
long fsu_files; /* Total file nodes. */
long fsu_ffree; /* Free file nodes. */
int fsu_blocksize; /* Size of a block. */
uintmax_t fsu_blocks; /* Total blocks. */
uintmax_t fsu_bfree; /* Free blocks available to superuser. */
uintmax_t fsu_bavail; /* Free blocks available to non-superuser. */
int fsu_bavail_top_bit_set; /* 1 if fsu_bavail represents a value < 0. */
uintmax_t fsu_files; /* Total file nodes. */
uintmax_t fsu_ffree; /* Free file nodes. */
};
#ifndef __P
#if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
#define __P(args) args
#else
#define __P(args) ()
#endif /* GCC. */
#endif /* Not __P. */
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
int get_fs_usage __P ((const char *path, const char *disk,
struct fs_usage *fsp));
int get_fs_usage PARAMS ((const char *path, const char *disk,
struct fs_usage *fsp));
#endif

View File

@@ -1,8 +1,8 @@
/* ftruncate emulations that work on some System V's.
This file is in the public domain. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
@@ -11,28 +11,24 @@
#ifdef F_CHSIZE
int
ftruncate (fd, length)
int fd;
off_t length;
ftruncate (int fd, off_t length)
{
return fcntl (fd, F_CHSIZE, length);
}
#else /* not F_CHSIZE */
#ifdef F_FREESP
# ifdef F_FREESP
/* By William Kucharski <kucharsk@netcom.com>. */
#include <sys/stat.h>
#include <errno.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
# include <sys/stat.h>
# include <errno.h>
# if HAVE_UNISTD_H
# include <unistd.h>
# endif
int
ftruncate (fd, length)
int fd;
off_t length;
ftruncate (int fd, off_t length)
{
struct flock fl;
struct stat filebuf;
@@ -71,33 +67,29 @@ ftruncate (fd, length)
return 0;
}
#else /* not F_CHSIZE nor F_FREESP */
#ifdef HAVE_CHSIZE
# else /* not F_CHSIZE nor F_FREESP */
# if HAVE_CHSIZE
int
ftruncate (fd, length)
int fd;
off_t length;
ftruncate (int fd, off_t length)
{
return chsize (fd, length);
}
#else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
# else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
#include <errno.h>
#ifndef errno
# include <errno.h>
# ifndef errno
extern int errno;
#endif
# endif
int
ftruncate (fd, length)
int fd;
off_t length;
ftruncate (int fd, off_t length)
{
errno = EIO;
return -1;
}
#endif /* not HAVE_CHSIZE */
#endif /* not F_FREESP */
# endif /* not HAVE_CHSIZE */
# endif /* not F_FREESP */
#endif /* not F_CHSIZE */

View File

@@ -1,5 +1,5 @@
/* full-write.c -- an interface to write that retries after interrupts
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 1997, 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
@@ -37,10 +37,7 @@ extern int errno;
Return LEN upon success, write's (negative) error code otherwise. */
int
full_write (desc, ptr, len)
int desc;
char *ptr;
size_t len;
full_write (int desc, const char *ptr, size_t len)
{
int total_written;
@@ -48,6 +45,10 @@ full_write (desc, ptr, len)
while (len > 0)
{
int written = write (desc, ptr, len);
/* FIXME: write on my 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. */
if (written < 0)
{
#ifdef EINTR

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1995 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997, 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
@@ -14,28 +14,28 @@
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
#if HAVE_CONFIG_H
# include <config.h>
#endif
# ifndef PARAMS
# if defined (__GNUC__) || __STDC__
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
#if defined (vms)
#ifdef vms
# include <types.h>
# include <time.h>
#else
# include <sys/types.h>
# ifdef TIME_WITH_SYS_TIME
# if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# ifdef HAVE_SYS_TIME_H
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>

View File

@@ -3,16 +3,14 @@
** Originally written by Steven M. Bellovin <smb@research.att.com> while
** at the University of North Carolina at Chapel Hill. Later tweaked by
** a couple of people on Usenet. Completely overhauled by Rich $alz
** <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990;
**
** This grammar has 13 shift/reduce conflicts.
** <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
**
** This code is in the public domain and has no copyright.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
# ifdef FORCE_ALLOCA_H
# ifdef HAVE_ALLOCA_H
# include <alloca.h>
# endif
#endif
@@ -30,6 +28,10 @@
#include <stdio.h>
#include <ctype.h>
#if HAVE_STDLIB_H
# include <stdlib.h> /* for `free'; used by Bison 1.27 */
#endif
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
#else
@@ -51,12 +53,18 @@
host does not conform to Posix. */
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
#include "getdate.h"
#if defined (STDC_HEADERS) || defined (USG)
# include <string.h>
#endif
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __attribute__(x)
#endif
#ifndef ATTRIBUTE_UNUSED
# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
#endif
/* Some old versions of bison generate parsers that use bcopy.
That loses on systems that don't provide the function, so we have
to redefine it here. */
@@ -64,10 +72,6 @@
# define bcopy(from, to, len) memcpy ((to), (from), (len))
#endif
extern struct tm *gmtime ();
extern struct tm *localtime ();
extern time_t mktime ();
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
yacc generated parsers in the same program. Note that these are only
@@ -172,6 +176,9 @@ static int yyRelYear;
%}
/* This grammar has 13 shift/reduce conflicts. */
%expect 13
%union {
int Number;
enum _MERIDIAN Meridian;
@@ -347,7 +354,7 @@ relunit : tUNUMBER tYEAR_UNIT {
yyRelYear += $1 * $2;
}
| tYEAR_UNIT {
yyRelYear++;
yyRelYear += $1;
}
| tUNUMBER tMONTH_UNIT {
yyRelMonth += $1 * $2;
@@ -356,7 +363,7 @@ relunit : tUNUMBER tYEAR_UNIT {
yyRelMonth += $1 * $2;
}
| tMONTH_UNIT {
yyRelMonth++;
yyRelMonth += $1;
}
| tUNUMBER tDAY_UNIT {
yyRelDay += $1 * $2;
@@ -365,7 +372,7 @@ relunit : tUNUMBER tYEAR_UNIT {
yyRelDay += $1 * $2;
}
| tDAY_UNIT {
yyRelDay++;
yyRelDay += $1;
}
| tUNUMBER tHOUR_UNIT {
yyRelHour += $1 * $2;
@@ -374,7 +381,7 @@ relunit : tUNUMBER tYEAR_UNIT {
yyRelHour += $1 * $2;
}
| tHOUR_UNIT {
yyRelHour++;
yyRelHour += $1;
}
| tUNUMBER tMINUTE_UNIT {
yyRelMinutes += $1 * $2;
@@ -383,7 +390,7 @@ relunit : tUNUMBER tYEAR_UNIT {
yyRelMinutes += $1 * $2;
}
| tMINUTE_UNIT {
yyRelMinutes++;
yyRelMinutes += $1;
}
| tUNUMBER tSEC_UNIT {
yyRelSeconds += $1 * $2;
@@ -392,7 +399,7 @@ relunit : tUNUMBER tYEAR_UNIT {
yyRelSeconds += $1 * $2;
}
| tSEC_UNIT {
yyRelSeconds++;
yyRelSeconds += $1;
}
;
@@ -441,6 +448,15 @@ o_merid : /* NULL */
%%
/* Include this file down here because bison inserts code above which
may define-away `const'. We want the prototype for get_date to have
the same signature as the function definition does. */
#include "getdate.h"
extern struct tm *gmtime ();
extern struct tm *localtime ();
extern time_t mktime ();
/* Month and day table. */
static TABLE const MonthDayTable[] = {
{ "january", tMONTH, 1 },
@@ -467,7 +483,7 @@ static TABLE const MonthDayTable[] = {
{ "thurs", tDAY, 4 },
{ "friday", tDAY, 5 },
{ "saturday", tDAY, 6 },
{ NULL }
{ NULL, 0, 0 }
};
/* Time units table. */
@@ -482,7 +498,7 @@ static TABLE const UnitsTable[] = {
{ "min", tMINUTE_UNIT, 1 },
{ "second", tSEC_UNIT, 1 },
{ "sec", tSEC_UNIT, 1 },
{ NULL }
{ NULL, 0, 0 }
};
/* Assorted relative-time words. */
@@ -493,7 +509,7 @@ static TABLE const OtherTable[] = {
{ "now", tMINUTE_UNIT, 0 },
{ "last", tUNUMBER, -1 },
{ "this", tMINUTE_UNIT, 0 },
{ "next", tUNUMBER, 2 },
{ "next", tUNUMBER, 1 },
{ "first", tUNUMBER, 1 },
/* { "second", tUNUMBER, 2 }, */
{ "third", tUNUMBER, 3 },
@@ -507,7 +523,7 @@ static TABLE const OtherTable[] = {
{ "eleventh", tUNUMBER, 11 },
{ "twelfth", tUNUMBER, 12 },
{ "ago", tAGO, 1 },
{ NULL }
{ NULL, 0, 0 }
};
/* The timezone table. */
@@ -592,7 +608,7 @@ static TABLE const TimezoneTable[] = {
{ "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */
{ "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */
{ "idle", tZONE, -HOUR (12) }, /* International Date Line East */
{ NULL }
{ NULL, 0, 0 }
};
/* Military timezone table. */
@@ -622,7 +638,7 @@ static TABLE const MilitaryTable[] = {
{ "x", tZONE, HOUR (-11) },
{ "y", tZONE, HOUR (-12) },
{ "z", tZONE, HOUR ( 0) },
{ NULL }
{ NULL, 0, 0 }
};
@@ -631,7 +647,7 @@ static TABLE const MilitaryTable[] = {
/* ARGSUSED */
static int
yyerror (s)
char *s;
char *s ATTRIBUTE_UNUSED;
{
return 0;
}
@@ -694,7 +710,7 @@ LookupWord (buff)
/* Make it lowercase. */
for (p = buff; *p; p++)
if (ISUPPER (*p))
if (ISUPPER ((unsigned char) *p))
*p = tolower (*p);
if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0)
@@ -775,7 +791,7 @@ LookupWord (buff)
}
/* Military timezones. */
if (buff[1] == '\0' && ISALPHA (*buff))
if (buff[1] == '\0' && ISALPHA ((unsigned char) *buff))
{
for (tp = MilitaryTable; tp->name; tp++)
if (strcmp (buff, tp->name) == 0)
@@ -806,7 +822,7 @@ LookupWord (buff)
static int
yylex ()
{
register char c;
register unsigned char c;
register char *p;
char buff[20];
int Count;
@@ -814,7 +830,7 @@ yylex ()
for (;;)
{
while (ISSPACE (*yyInput))
while (ISSPACE ((unsigned char) *yyInput))
yyInput++;
if (ISDIGIT (c = *yyInput) || c == '-' || c == '+')
@@ -865,8 +881,7 @@ yylex ()
/* Yield A - B, measured in seconds. */
static long
difftm (a, b)
struct tm *a, *b;
difftm (struct tm *a, struct tm *b)
{
int ay = a->tm_year + (TM_YEAR_ORIGIN - 1);
int by = b->tm_year + (TM_YEAR_ORIGIN - 1);
@@ -886,9 +901,7 @@ difftm (a, b)
}
time_t
get_date (p, now)
const char *p;
const time_t *now;
get_date (const char *p, const time_t *now)
{
struct tm tm, tm0, *tmp;
time_t Start;
@@ -896,12 +909,15 @@ get_date (p, now)
yyInput = p;
Start = now ? *now : time ((time_t *) NULL);
tmp = localtime (&Start);
if (!tmp)
return -1;
yyYear = tmp->tm_year + TM_YEAR_ORIGIN;
yyMonth = tmp->tm_mon + 1;
yyDay = tmp->tm_mday;
yyHour = tmp->tm_hour;
yyMinutes = tmp->tm_min;
yySeconds = tmp->tm_sec;
tm.tm_isdst = tmp->tm_isdst;
yyMeridian = MER24;
yyRelSeconds = 0;
yyRelMinutes = 0;
@@ -937,7 +953,6 @@ get_date (p, now)
tm.tm_hour += yyRelHour;
tm.tm_min += yyRelMinutes;
tm.tm_sec += yyRelSeconds;
tm.tm_isdst = -1;
tm0 = tm;
Start = mktime (&tm);
@@ -984,7 +999,11 @@ get_date (p, now)
if (yyHaveZone)
{
long delta = yyTimezone * 60L + difftm (&tm, gmtime (&Start));
long delta;
struct tm *gmt = gmtime (&Start);
if (!gmt)
return -1;
delta = yyTimezone * 60L + difftm (&tm, gmt);
if ((Start + delta < Start) != (delta < 0))
return -1; /* time_t overflow */
Start += delta;

View File

@@ -1,5 +1,5 @@
/* provide consistent interface to getgroups for systems that don't allow N==0
Copyright (C) 1996 Free Software Foundation, Inc.
Copyright (C) 1996, 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
@@ -25,14 +25,11 @@ char *xmalloc ();
/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, 0) always fails.
On other systems, it returns the number of supplemental groups for the
process is returned.
This function handles that special case and lets the system-
provided function handle all others. */
process. This function handles that special case and lets the system-
provided function handle all others. */
int
getgroups (n, group)
size_t n;
GETGROUPS_T *group;
getgroups (size_t n, GETGROUPS_T *group)
{
int n_groups;
GETGROUPS_T *gbuf;

View File

@@ -1,6 +1,6 @@
/* getline.c -- Replacement for GNU C library function getline
Copyright (C) 1993, 1996 Free Software Foundation, Inc.
Copyright (C) 1993, 1996, 1997, 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
@@ -24,17 +24,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* The `getdelim' function is only declared if the following symbol
is defined. */
#define _GNU_SOURCE 1
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif
#include <stdio.h>
#include <sys/types.h>
#if defined __GNU_LIBRARY__ && HAVE_GETDELIM
int
getline (lineptr, n, stream)
char **lineptr;
size_t *n;
FILE *stream;
getline (char **lineptr, size_t *n, FILE *stream)
{
return getdelim (lineptr, n, '\n', stream);
}
@@ -61,12 +61,7 @@ char *malloc (), *realloc ();
null terminator), or -1 on error or EOF. */
int
getstr (lineptr, n, stream, terminator, offset)
char **lineptr;
size_t *n;
FILE *stream;
char terminator;
size_t offset;
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. */
@@ -135,20 +130,13 @@ getstr (lineptr, n, stream, terminator, offset)
}
int
getline (lineptr, n, stream)
char **lineptr;
size_t *n;
FILE *stream;
getline (char **lineptr, size_t *n, FILE *stream)
{
return getstr (lineptr, n, stream, '\n', 0);
}
int
getdelim (lineptr, n, delimiter, stream)
char **lineptr;
size_t *n;
int delimiter;
FILE *stream;
getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream)
{
return getstr (lineptr, n, stream, delimiter, 0);
}

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1995 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997 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
@@ -20,10 +20,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# include <stdio.h>
# ifndef PARAMS
# if defined (__GNUC__) || __STDC__
# define PARAMS(args) args
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(args) ()
# define PARAMS(Args) ()
# endif
# endif

View File

@@ -1,5 +1,5 @@
/* Get the system load averages.
Copyright (C) 1985, 86, 87, 88, 89, 91, 92, 93, 1994, 1995
Copyright (C) 1985, 86, 87, 88, 89, 91, 92, 93, 1994, 1995, 1997
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -51,7 +51,7 @@
DGUX
eunice UNIX emulator under VMS.
hpux
MSDOS No-op for MSDOS.
__MSDOS__ No-op for MSDOS.
NeXT
sgi
sequent Sequent Dynix 3.x.x (BSD)
@@ -60,7 +60,7 @@
UMAX
UMAX4_3
VMS
WIN32 No-op for Windows95/NT.
WINDOWS32 No-op for Windows95/NT.
__linux__ Linux: assumes /proc filesystem mounted.
Support from Michael K. Johnson.
__NetBSD__ NetBSD: assumes /kern filesystem mounted.
@@ -98,8 +98,14 @@
extern int errno;
#endif
#ifndef HAVE_GETLOADAVG
#if HAVE_LOCALE_H
# include <locale.h>
#endif
#if !HAVE_SETLOCALE
# define setlocale(Category, Locale) /* empty */
#endif
#ifndef HAVE_GETLOADAVG
/* The existing Emacs configuration files define a macro called
LOAD_AVE_CVT, which accepts a value of type LOAD_AVE_TYPE, and
@@ -167,6 +173,9 @@ extern int errno;
# if defined (__osf__) && (defined (__alpha) || defined (__alpha__))
# define OSF_ALPHA
# include <sys/mbuf.h>
# include <sys/socket.h>
# include <net/route.h>
# include <sys/table.h>
# endif
@@ -278,7 +287,7 @@ extern int errno;
/* Sometimes both MIPS and sgi are defined, so FSCALE was just defined
above under #ifdef MIPS. But we want the sgi value. */
# undef FSCALE
# define FSCALE 1000.0
# define FSCALE 1000.0
# endif
# if defined (ardent) && defined (titan)
@@ -296,7 +305,7 @@ extern int errno;
# endif /* Not FSCALE. */
# if !defined (LDAV_CVT) && defined (FSCALE)
# define LDAV_CVT(n) (((double) (n)) / FSCALE)
# define LDAV_CVT(n) (((double) (n)) / FSCALE)
# endif
/* VAX C can't handle multi-line #ifs, or lines longer that 256 characters. */
@@ -444,6 +453,14 @@ extern int errno;
# endif /* LOAD_AVE_TYPE */
# if defined(__GNU__) && !defined (NeXT)
/* Note that NeXT Openstep defines __GNU__ even though it should not. */
/* GNU system acts much like NeXT, for load average purposes,
but not exactly. */
# define NeXT
# define host_self mach_host_self
# endif
# ifdef NeXT
# ifdef HAVE_MACH_MACH_H
# include <mach/mach.h>
@@ -543,7 +560,7 @@ getloadavg (loadavg, nelem)
elem = -1;
# endif
# if !defined (LDAV_DONE) && defined (SUNOS_5)
# if !defined (LDAV_DONE) && defined (HAVE_LIBKSTAT)
/* Use libkstat because we don't have to be root. */
# define LDAV_DONE
kstat_ctl_t *kc;
@@ -588,7 +605,7 @@ getloadavg (loadavg, nelem)
}
kstat_close (kc);
# endif /* SUNOS_5 */
# endif /* HAVE_LIBKSTAT */
# if !defined (LDAV_DONE) && defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC)
/* Use pstat_getdynamic() because we don't have to be root. */
@@ -627,8 +644,11 @@ getloadavg (loadavg, nelem)
if (count <= 0)
return -1;
/* The following sscanf must use the C locale. */
setlocale (LC_NUMERIC, "C");
count = sscanf (ldavgbuf, "%lf %lf %lf",
&load_ave[0], &load_ave[1], &load_ave[2]);
setlocale (LC_NUMERIC, "");
if (count < 1)
return -1;
@@ -826,7 +846,7 @@ getloadavg (loadavg, nelem)
: (load_ave.tl_avenrun.l[0] / (double) load_ave.tl_lscale));
# endif /* OSF_MIPS */
# if !defined (LDAV_DONE) && (defined (MSDOS) || defined (WIN32))
# if !defined (LDAV_DONE) && (defined (__MSDOS__) || defined (WINDOWS32))
# define LDAV_DONE
/* A faithful emulation is going to have to be saved for a rainy day. */
@@ -834,7 +854,7 @@ getloadavg (loadavg, nelem)
{
loadavg[elem] = 0.0;
}
# endif /* MSDOS */
# endif /* __MSDOS__ || WINDOWS32 */
# if !defined (LDAV_DONE) && defined (OSF_ALPHA)
# define LDAV_DONE

View File

@@ -1,13 +1,10 @@
/* Getopt for GNU.
NOTE: getopt is now part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
Free Software Foundation, Inc.
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
@@ -27,19 +24,19 @@
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
#ifndef _NO_PROTO
#define _NO_PROTO
# define _NO_PROTO
#endif
#ifdef HAVE_CONFIG_H
#include <config.h>
# include <config.h>
#endif
#if !defined (__STDC__) || !__STDC__
#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
#include <stdio.h>
@@ -53,11 +50,11 @@
it is simpler to just do this in the source for each such file. */
#define GETOPT_INTERFACE_VERSION 2
#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
#include <gnu-versions.h>
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
#define ELIDE_CODE
#endif
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
# include <gnu-versions.h>
# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
# define ELIDE_CODE
# endif
#endif
#ifndef ELIDE_CODE
@@ -68,32 +65,26 @@
#ifdef __GNU_LIBRARY__
/* Don't include stdlib.h for non-GNU C libraries because some of them
contain conflicting prototypes for getopt. */
#include <stdlib.h>
#include <unistd.h>
# include <stdlib.h>
# include <unistd.h>
#endif /* GNU C library. */
#ifdef VMS
#include <unixlib.h>
#if HAVE_STRING_H - 0
#include <string.h>
#endif
#endif
#if defined (WIN32) && !defined (__CYGWIN32__)
/* It's not Unix, really. See? Capital letters. */
#include <windows.h>
#define getpid() GetCurrentProcessId()
# include <unixlib.h>
# if HAVE_STRING_H - 0
# include <string.h>
# endif
#endif
#ifndef _
/* This is for other GNU distributions with internationalized messages.
When compiling libc, the _ macro is predefined. */
#ifdef HAVE_LIBINTL_H
# include <libintl.h>
# define _(msgid) gettext (msgid)
#else
# define _(msgid) (msgid)
#endif
# ifdef HAVE_LIBINTL_H
# include <libintl.h>
# define _(msgid) gettext (msgid)
# else
# define _(msgid) (msgid)
# endif
#endif
/* This version of `getopt' appears to the caller like standard Unix `getopt'
@@ -203,14 +194,22 @@ static char *posixly_correct;
because there are many ways it can cause trouble.
On some systems, it contains special magic macros that don't work
in GCC. */
#include <string.h>
#define my_index strchr
# include <string.h>
# define my_index strchr
#else
# if HAVE_STRING_H
# include <string.h>
# else
# include <strings.h>
# endif
/* Avoid depending on library functions or files
whose names are inconsistent. */
char *getenv ();
#ifndef getenv
extern char *getenv ();
#endif
static char *
my_index (str, chr)
@@ -231,11 +230,11 @@ my_index (str, chr)
#ifdef __GNUC__
/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
That was relevant to code that was here before. */
#if !defined (__STDC__) || !__STDC__
# if (!defined __STDC__ || !__STDC__) && !defined strlen
/* gcc with -traditional declares the built-in strlen to return int,
and has done so at least since version 2.4.5. -- rms. */
extern int strlen (const char *);
#endif /* not __STDC__ */
# endif /* not __STDC__ */
#endif /* __GNUC__ */
#endif /* not __GNU_LIBRARY__ */
@@ -253,7 +252,10 @@ static int last_nonopt;
/* Bash 2.0 gives us an environment variable containing flags
indicating ARGV elements that should not be considered arguments. */
static const char *nonoption_flags;
/* Defined in getopt_init.c */
extern char *__getopt_nonoption_flags;
static int nonoption_flags_max_len;
static int nonoption_flags_len;
static int original_argc;
@@ -262,17 +264,29 @@ static char *const *original_argv;
/* Make sure the environment variable bash 2.0 puts in the environment
is valid for the getopt call we must make sure that the ARGV passed
to getopt is that one passed to the process. */
static void store_args (int argc, char *const *argv) __attribute__ ((unused));
static void
store_args (int argc, char *const *argv)
__attribute__ ((unused))
store_args_and_env (int argc, char *const *argv)
{
/* XXX This is no good solution. We should rather copy the args so
that we can compare them later. But we must not use malloc(3). */
original_argc = argc;
original_argv = argv;
}
text_set_element (__libc_subinit, store_args);
#endif
# ifdef text_set_element
text_set_element (__libc_subinit, store_args_and_env);
# endif /* text_set_element */
# define SWAP_FLAGS(ch1, ch2) \
if (nonoption_flags_len > 0) \
{ \
char __tmp = __getopt_nonoption_flags[ch1]; \
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
__getopt_nonoption_flags[ch2] = __tmp; \
}
#else /* !_LIBC */
# define SWAP_FLAGS(ch1, ch2)
#endif /* _LIBC */
/* Exchange two adjacent subsequences of ARGV.
One subsequence is elements [first_nonopt,last_nonopt)
@@ -283,7 +297,7 @@ text_set_element (__libc_subinit, store_args);
`first_nonopt' and `last_nonopt' are relocated so that they describe
the new indices of the non-options in ARGV after they are moved. */
#if defined (__STDC__) && __STDC__
#if defined __STDC__ && __STDC__
static void exchange (char **);
#endif
@@ -301,6 +315,28 @@ exchange (argv)
It leaves the longer segment in the right place overall,
but it consists of two parts that need to be swapped next. */
#ifdef _LIBC
/* First make sure the handling of the `__getopt_nonoption_flags'
string can work normally. Our top argument must be in the range
of the string. */
if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
{
/* We must extend the array. The user plays games with us and
presents new arguments. */
char *new_str = malloc (top + 1);
if (new_str == NULL)
nonoption_flags_len = nonoption_flags_max_len = 0;
else
{
memset (__mempcpy (new_str, __getopt_nonoption_flags,
nonoption_flags_max_len),
'\0', top + 1 - nonoption_flags_max_len);
nonoption_flags_max_len = top + 1;
__getopt_nonoption_flags = new_str;
}
}
#endif
while (top > middle && middle > bottom)
{
if (top - middle > middle - bottom)
@@ -315,6 +351,7 @@ exchange (argv)
tem = argv[bottom + i];
argv[bottom + i] = argv[top - (middle - bottom) + i];
argv[top - (middle - bottom) + i] = tem;
SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
}
/* Exclude the moved bottom segment from further swapping. */
top -= len;
@@ -331,6 +368,7 @@ exchange (argv)
tem = argv[bottom + i];
argv[bottom + i] = argv[middle + i];
argv[middle + i] = tem;
SWAP_FLAGS (bottom + i, middle + i);
}
/* Exclude the moved top segment from further swapping. */
bottom += len;
@@ -345,7 +383,7 @@ exchange (argv)
/* Initialize the internal data when the first call is made. */
#if defined (__STDC__) && __STDC__
#if defined __STDC__ && __STDC__
static const char *_getopt_initialize (int, char *const *, const char *);
#endif
static const char *
@@ -358,7 +396,7 @@ _getopt_initialize (argc, argv, optstring)
is the program name); the sequence of previously skipped
non-option ARGV-elements is empty. */
first_nonopt = last_nonopt = optind = 1;
first_nonopt = last_nonopt = optind;
nextchar = NULL;
@@ -385,17 +423,27 @@ _getopt_initialize (argc, argv, optstring)
if (posixly_correct == NULL
&& argc == original_argc && argv == original_argv)
{
/* Bash 2.0 puts a special variable in the environment for each
command it runs, specifying which ARGV elements are the results of
file name wildcard expansion and therefore should not be
considered as options. */
char var[100];
sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ());
nonoption_flags = getenv (var);
if (nonoption_flags == NULL)
nonoption_flags_len = 0;
else
nonoption_flags_len = strlen (nonoption_flags);
if (nonoption_flags_max_len == 0)
{
if (__getopt_nonoption_flags == NULL
|| __getopt_nonoption_flags[0] == '\0')
nonoption_flags_max_len = -1;
else
{
const char *orig_str = __getopt_nonoption_flags;
int len = nonoption_flags_max_len = strlen (orig_str);
if (nonoption_flags_max_len < argc)
nonoption_flags_max_len = argc;
__getopt_nonoption_flags =
(char *) malloc (nonoption_flags_max_len);
if (__getopt_nonoption_flags == NULL)
nonoption_flags_max_len = -1;
else
memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
'\0', nonoption_flags_max_len - len);
}
}
nonoption_flags_len = nonoption_flags_max_len;
}
else
nonoption_flags_len = 0;
@@ -471,10 +519,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
optarg = NULL;
if (!__getopt_initialized || optind == 0)
if (optind == 0 || !__getopt_initialized)
{
if (optind == 0)
optind = 1; /* Don't scan ARGV[0], the program name. */
optstring = _getopt_initialize (argc, argv, optstring);
optind = 1; /* Don't scan ARGV[0], the program name. */
__getopt_initialized = 1;
}
@@ -483,11 +532,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
from the shell indicating it is not an option. The later information
is only used when the used in the GNU libc. */
#ifdef _LIBC
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|| (optind < nonoption_flags_len \
&& nonoption_flags[optind] == '1'))
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|| (optind < nonoption_flags_len \
&& __getopt_nonoption_flags[optind] == '1'))
#else
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
#endif
if (nextchar == NULL || *nextchar == '\0')
@@ -646,16 +695,18 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else
{
if (opterr)
if (argv[optind - 1][1] == '-')
/* --option */
fprintf (stderr,
_("%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
else
/* +option or -option */
fprintf (stderr,
_("%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0], pfound->name);
{
if (argv[optind - 1][1] == '-')
/* --option */
fprintf (stderr,
_("%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
else
/* +option or -option */
fprintf (stderr,
_("%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0], pfound->name);
}
nextchar += strlen (nextchar);

View File

@@ -1,8 +1,6 @@
/* Declarations for getopt.
Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
Copyright (C) 1989,90,91,92,93,94,96,97,98 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
@@ -20,7 +18,10 @@
Boston, MA 02111-1307, USA. */
#ifndef _GETOPT_H
#define _GETOPT_H 1
#ifndef __need_getopt
# define _GETOPT_H 1
#endif
#ifdef __cplusplus
extern "C" {
@@ -57,6 +58,7 @@ extern int opterr;
extern int optopt;
#ifndef __need_getopt
/* Describe the long-named options requested by the application.
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
of `struct option' terminated by an element containing a name which is
@@ -80,11 +82,11 @@ extern int optopt;
struct option
{
#if defined (__STDC__) && __STDC__
# if defined __STDC__ && __STDC__
const char *name;
#else
# else
char *name;
#endif
# endif
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int has_arg;
@@ -94,40 +96,74 @@ struct option
/* Names for the values of the `has_arg' field of `struct option'. */
#define no_argument 0
#define required_argument 1
#define optional_argument 2
# define no_argument 0
# define required_argument 1
# define optional_argument 2
#endif /* need getopt */
#if defined (__STDC__) && __STDC__
#ifdef __GNU_LIBRARY__
/* Get definitions and prototypes for functions to process the
arguments in ARGV (ARGC of them, minus the program name) for
options given in OPTS.
Return the option character from OPTS just read. Return -1 when
there are no more options. For unrecognized options, or options
missing arguments, `optopt' is set to the option letter, and '?' is
returned.
The OPTS string is a list of characters which are recognized option
letters, optionally followed by colons, specifying that that letter
takes an argument, to be placed in `optarg'.
If a letter in OPTS is followed by two colons, its argument is
optional. This behavior is specific to the GNU `getopt'.
The argument `--' causes premature termination of argument
scanning, explicitly telling `getopt' that there are no more
options.
If OPTS begins with `--', then non-option arguments are treated as
arguments to the option '\0'. This behavior is specific to the GNU
`getopt'. */
#if defined __STDC__ && __STDC__
# ifdef __GNU_LIBRARY__
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
extern int getopt (int argc, char *const *argv, const char *shortopts);
#else /* not __GNU_LIBRARY__ */
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
# else /* not __GNU_LIBRARY__ */
extern int getopt ();
#endif /* __GNU_LIBRARY__ */
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind);
# endif /* __GNU_LIBRARY__ */
# ifndef __need_getopt
extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
const struct option *__longopts, int *__longind);
extern int getopt_long_only (int __argc, char *const *__argv,
const char *__shortopts,
const struct option *__longopts, int *__longind);
/* Internal only. Users should not call this directly. */
extern int _getopt_internal (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind,
int long_only);
extern int _getopt_internal (int __argc, char *const *__argv,
const char *__shortopts,
const struct option *__longopts, int *__longind,
int __long_only);
# endif
#else /* not __STDC__ */
extern int getopt ();
# ifndef __need_getopt
extern int getopt_long ();
extern int getopt_long_only ();
extern int _getopt_internal ();
# endif
#endif /* __STDC__ */
#ifdef __cplusplus
}
#endif
#endif /* _GETOPT_H */
/* Make sure we later can get all the definitions and declarations. */
#undef __need_getopt
#endif /* getopt.h */

View File

@@ -1,8 +1,7 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
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
@@ -25,7 +24,7 @@
#include "getopt.h"
#if !defined (__STDC__) || !__STDC__
#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
#ifndef const
@@ -44,7 +43,7 @@
it is simpler to just do this in the source for each such file. */
#define GETOPT_INTERFACE_VERSION 2
#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
#include <gnu-versions.h>
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
#define ELIDE_CODE

View File

@@ -1,5 +1,5 @@
/* getugroups.c -- return a list of the groups a user is in
Copyright (C) 1990, 1991 Free Software Foundation.
Copyright (C) 1990, 1991, 1998, 1999 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
@@ -41,34 +41,53 @@ struct group *getgrent ();
# include <strings.h>
#endif
/* Like `getgroups', but for user USERNAME instead of for
the current process. */
/* Like `getgroups', but for user USERNAME instead of for the current
process. Store at most MAXCOUNT group IDs in the GROUPLIST array.
If GID is not -1, store it first (if possible). GID should be the
group ID (pw_gid) obtained from getpwuid, in case USERNAME is not
listed in /etc/groups.
Always return the number of groups of which USERNAME is a member. */
int
getugroups (maxcount, grouplist, username)
int maxcount;
GETGROUPS_T *grouplist;
char *username;
getugroups (int maxcount, GETGROUPS_T *grouplist, char *username, gid_t gid)
{
struct group *grp;
register char **cp;
register int count = 0;
if (gid != -1)
{
if (maxcount != 0)
grouplist[count] = gid;
++count;
}
setgrent ();
while ((grp = getgrent ()) != 0)
for (cp = grp->gr_mem; *cp; ++cp)
if (!strcmp (username, *cp))
{
if (maxcount != 0)
int n;
/* See if this group number is already on the list. */
for (n = 0; n < count; ++n)
if (grouplist[n] == grp->gr_gid)
break;
/* If it's a new group number, then try to add it to the list. */
if (n == count)
{
if (count >= maxcount)
if (maxcount != 0)
{
endgrent ();
return count;
if (count >= maxcount)
{
endgrent ();
return count;
}
grouplist[count] = grp->gr_gid;
}
grouplist[count] = grp->gr_gid;
count++;
}
count++;
}
endgrent ();
return count;

View File

@@ -1,5 +1,5 @@
/* getusershell.c -- Return names of valid user shells.
Copyright (C) 1991 Free Software Foundation, Inc.
Copyright (C) 1991, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -29,6 +29,14 @@
#include <stdio.h>
#include <ctype.h>
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
#else
# define IN_CTYPE_DOMAIN(c) isascii(c)
#endif
#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c))
#ifdef STDC_HEADERS
# include <stdlib.h>
#else
@@ -175,10 +183,10 @@ readname (name, size, stream)
}
/* Skip blank space. */
while ((c = getc (stream)) != EOF && isspace (c))
while ((c = getc (stream)) != EOF && ISSPACE (c))
/* Do nothing. */ ;
while (c != EOF && !isspace (c))
while (c != EOF && !ISSPACE (c))
{
(*name)[name_index++] = c;
while (name_index >= *size)

View File

@@ -1,5 +1,5 @@
/* getversion.c -- select backup filename type
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 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
@@ -46,8 +46,7 @@ static const enum backup_type backup_types[] =
Unique abbreviations are accepted. */
enum backup_type
get_version (version)
char *version;
get_version (const char *version)
{
int i;

View File

@@ -1,5 +1,5 @@
/* group-member.c -- determine whether group id is in calling user's group list
Copyright (C) 1994 Free Software Foundation, Inc.
Copyright (C) 1994, 1997, 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
@@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -26,7 +26,7 @@
# include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
@@ -41,18 +41,17 @@ struct group_info
GETGROUPS_T *group;
};
#ifdef HAVE_GETGROUPS
#if HAVE_GETGROUPS
static void
free_group_info (g)
struct group_info *g;
free_group_info (struct group_info *g)
{
free (g->group);
free (g);
}
static struct group_info *
get_group_info ()
get_group_info (void)
{
int n_groups;
int n_group_slots;
@@ -96,8 +95,7 @@ get_group_info ()
either of the current or effective group IDs. */
int
group_member (gid)
gid_t gid;
group_member (gid_t gid)
{
#ifndef HAVE_GETGROUPS
return ((gid == getgid ()) || (gid == getegid ()));

View File

@@ -1,7 +1,15 @@
#ifndef GROUP_MEMBER_H_
# define GROUP_MEMBER_H_ 1
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
int
group_member ();
group_member PARAMS ((gid_t));
#endif /* GROUP_MEMBER_H_ */

1000
lib/hash.c Normal file

File diff suppressed because it is too large Load Diff

120
lib/hash.h Normal file
View File

@@ -0,0 +1,120 @@
/* hash - hashing table processing.
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
Written by Jim Meyering <meyering@ascend.com>, 1998.
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. */
/* A generic hash table package. */
/* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use
obstacks instead of malloc, and recompile `hash.c' with same setting. */
#ifndef PARAMS
# if PROTOTYPES || __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
typedef unsigned (*Hash_hasher) PARAMS ((const void *, unsigned));
typedef bool (*Hash_comparator) PARAMS ((const void *, const void *));
typedef void (*Hash_data_freer) PARAMS ((void *));
typedef bool (*Hash_processor) PARAMS ((void *, void *));
struct hash_entry
{
void *data;
struct hash_entry *next;
};
struct hash_tuning
{
/* This structure is mainly used for `hash_initialize', see the block
documentation of `hash_reset_tuning' for more complete comments. */
float shrink_threshold; /* ratio of used buckets to trigger a shrink */
float shrink_factor; /* ratio of new smaller size to original size */
float growth_threshold; /* ratio of used buckets to trigger a growth */
float growth_factor; /* ratio of new bigger size to original size */
bool is_n_buckets; /* if CANDIDATE really means table size */
};
typedef struct hash_tuning Hash_tuning;
struct hash_table
{
/* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1,
for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets
are not empty, there are N_ENTRIES active entries in the table. */
struct hash_entry *bucket;
struct hash_entry *bucket_limit;
unsigned n_buckets;
unsigned n_buckets_used;
unsigned n_entries;
/* Tuning arguments, kept in a physicaly separate structure. */
const Hash_tuning *tuning;
/* Three functions are given to `hash_initialize', see the documentation
block for this function. In a word, HASHER randomizes a user entry
into a number up from 0 up to some maximum minus 1; COMPARATOR returns
true if two user entries compare equally; and DATA_FREER is the cleanup
function for a user entry. */
Hash_hasher hasher;
Hash_comparator comparator;
Hash_data_freer data_freer;
/* A linked list of freed struct hash_entry structs. */
struct hash_entry *free_entry_list;
#if USE_OBSTACK
/* Whenever obstacks are used, it is possible to allocate all overflowed
entries into a single stack, so they all can be freed in a single
operation. It is not clear if the speedup is worth the trouble. */
struct obstack entry_stack;
#endif
};
typedef struct hash_table Hash_table;
/* Information and lookup. */
unsigned hash_get_n_buckets PARAMS ((const Hash_table *));
unsigned hash_get_n_buckets_used PARAMS ((const Hash_table *));
unsigned hash_get_n_entries PARAMS ((const Hash_table *));
unsigned hash_get_max_bucket_length PARAMS ((const Hash_table *));
bool hash_table_ok PARAMS ((const Hash_table *));
void hash_print_statistics PARAMS ((const Hash_table *, FILE *));
void *hash_lookup PARAMS ((const Hash_table *, const void *));
/* Walking. */
void *hash_get_first PARAMS ((const Hash_table *));
void *hash_get_next PARAMS ((const Hash_table *, const void *));
unsigned hash_get_entries PARAMS ((const Hash_table *, void **, unsigned));
unsigned hash_do_for_each PARAMS ((const Hash_table *, Hash_processor, void *));
/* Allocation and clean-up. */
unsigned hash_string PARAMS ((const char *, unsigned));
void hash_reset_tuning PARAMS ((Hash_tuning *));
Hash_table *hash_initialize PARAMS ((unsigned, const Hash_tuning *,
Hash_hasher, Hash_comparator,
Hash_data_freer));
void hash_clear PARAMS ((Hash_table *));
void hash_free PARAMS ((Hash_table *));
/* Insertion and deletion. */
bool hash_rehash PARAMS ((Hash_table *, unsigned));
void *hash_insert PARAMS ((Hash_table *, const void *));
void *hash_delete PARAMS ((Hash_table *, const void *));

286
lib/human.c Normal file
View File

@@ -0,0 +1,286 @@
/* human.c -- print human readable file size
Copyright (C) 1996, 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
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. */
/* Originally contributed by lm@sgi.com;
--si, output block size selection, and large file support
added by eggert@twinsun.com. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#include <sys/types.h>
#include <stdio.h>
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#ifndef HAVE_DECL_GETENV
char *getenv ();
#endif
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
#include <argmatch.h>
#include <error.h>
#include <xstrtol.h>
#include "human.h"
static const char suffixes[] =
{
0, /* not used */
'k', /* kilo */
'M', /* Mega */
'G', /* Giga */
'T', /* Tera */
'P', /* Peta */
'E', /* Exa */
'Z', /* Zetta */
'Y' /* Yotta */
};
/* Convert N to a human readable format in BUF.
N is expressed in units of FROM_BLOCK_SIZE. FROM_BLOCK_SIZE must
be positive.
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.
If OUTPUT_BLOCK_SIZE is negative, use a format like "127k" if
possible, using powers of -OUTPUT_BLOCK_SIZE; otherwise, use
ordinary decimal format. Normally -OUTPUT_BLOCK_SIZE is either
1000 or 1024; it must be at least 2. Most people visually process
strings of 3-4 digits effectively, but longer strings of digits are
more prone to misinterpretation. Hence, converting to an
abbreviated form usually improves readability. Use a suffix
indicating which power is being used. For example, assuming
-OUTPUT_BLOCK_SIZE is 1024, 8500 would be converted to 8.3k,
133456345 to 127M, 56990456345 to 53G, and so on. Numbers smaller
than -OUTPUT_BLOCK_SIZE aren't modified. */
char *
human_readable (uintmax_t n, char *buf,
int from_block_size, int output_block_size)
{
uintmax_t amt;
int base;
int to_block_size;
int tenths;
int power;
char *p;
/* 0 means adjusted N == AMT.TENTHS;
1 means AMT.TENTHS < adjusted N < AMT.TENTHS + 0.05;
2 means adjusted N == AMT.TENTHS + 0.05;
3 means AMT.TENTHS + 0.05 < adjusted N < AMT.TENTHS + 0.1. */
int rounding;
if (output_block_size < 0)
{
base = -output_block_size;
to_block_size = 1;
}
else
{
base = 0;
to_block_size = output_block_size;
}
p = buf + LONGEST_HUMAN_READABLE;
*p = '\0';
#ifdef lint
/* Suppress `used before initialized' warning. */
power = 0;
#endif
/* 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;
tenths = rounding = 0;
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 * (double) multiplier;
if (! base)
sprintf (buf, "%.0f", damt);
else
{
double e = 1;
power = 0;
do
{
e *= base;
power++;
}
while (e * base <= damt && power < sizeof suffixes - 1);
damt /= e;
sprintf (buf, "%.1f%c", damt, suffixes[power]);
if (4 < strlen (buf))
sprintf (buf, "%.0f%c", damt, suffixes[power]);
}
return buf;
}
}
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);
}
/* Use power of BASE notation if adjusted AMT is large enough. */
if (base && base <= amt)
{
power = 0;
do
{
int r10 = (amt % base) * 10 + tenths;
int r2 = (r10 % base) * 2 + (rounding >> 1);
amt /= base;
tenths = r10 / base;
rounding = (r2 < base
? 0 < r2 + rounding
: 2 + (base < r2 + rounding));
power++;
}
while (base <= amt && power < sizeof suffixes - 1);
*--p = suffixes[power];
if (amt < 10)
{
tenths += 2 < rounding + (tenths & 1);
if (tenths == 10)
{
amt++;
tenths = 0;
}
if (amt < 10)
{
*--p = '0' + tenths;
*--p = '.';
tenths = 0;
}
}
}
if (5 < tenths + (2 < rounding + (amt & 1)))
{
amt++;
if (amt == base && power < sizeof suffixes - 1)
{
*p = suffixes[power + 1];
*--p = '0';
*--p = '.';
amt = 1;
}
}
do
*--p = '0' + (int) (amt % 10);
while ((amt /= 10) != 0);
return p;
}
/* The default block size used for output. This number may change in
the future as disks get larger. */
#ifndef DEFAULT_BLOCK_SIZE
# define DEFAULT_BLOCK_SIZE 1024
#endif
static char const *const block_size_args[] = { "human-readable", "si", 0 };
static int const block_size_types[] = { -1024, -1000 };
static strtol_error
humblock (char const *spec, int *block_size)
{
int i;
if (! spec && ! (spec = getenv ("BLOCK_SIZE")))
*block_size = getenv ("POSIXLY_CORRECT") ? 512 : DEFAULT_BLOCK_SIZE;
else if (0 <= (i = ARGMATCH (spec, block_size_args, block_size_types)))
*block_size = block_size_types[i];
else
{
char *ptr;
unsigned long val;
strtol_error e = xstrtoul (spec, &ptr, 0, &val, "eEgGkKmMpPtTyYzZ0");
if (e != LONGINT_OK)
return e;
if (*ptr)
return LONGINT_INVALID_SUFFIX_CHAR;
if ((int) val < 0 || val != (int) val)
return LONGINT_OVERFLOW;
*block_size = (int) val;
}
return LONGINT_OK;
}
void
human_block_size (char const *spec, int report_errors, int *block_size)
{
strtol_error e = humblock (spec, block_size);
if (e != LONGINT_OK && report_errors)
STRTOL_FATAL_ERROR (spec, _("block size"), e);
}

22
lib/human.h Normal file
View File

@@ -0,0 +1,22 @@
#ifndef HUMAN_H_
# define HUMAN_H_ 1
/* A conservative bound on the maximum length of a human-readable string.
The output can be the product of the largest uintmax_t and the largest int,
so add their sizes before converting to a bound on digits. */
# define LONGEST_HUMAN_READABLE ((sizeof (uintmax_t) + sizeof (int)) \
* CHAR_BIT / 3)
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
char *human_readable PARAMS ((uintmax_t, char *, int, int));
void human_block_size PARAMS ((char const *, int, int *));
#endif /* HUMAN_H_ */

View File

@@ -1,5 +1,6 @@
/* idcache.c -- map user and group IDs, cached for speed
Copyright (C) 1985, 1988, 1989, 1990 Free Software Foundation, Inc.
Copyright (C) 1985, 1988, 1989, 1990, 1997, 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
@@ -15,8 +16,8 @@
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>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
@@ -24,15 +25,16 @@
#include <pwd.h>
#include <grp.h>
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
#include <string.h>
#if STDC_HEADERS || HAVE_STRING_H
# include <string.h>
#else
#include <strings.h>
# include <strings.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifndef _POSIX_VERSION
struct passwd *getpwuid ();
struct passwd *getpwnam ();
@@ -43,6 +45,10 @@ struct group *getgrnam ();
char *xmalloc ();
char *xstrdup ();
#ifdef __DJGPP__
static char digits[] = "0123456789";
#endif
struct userid
{
union
@@ -59,16 +65,13 @@ static struct userid *user_alist;
/* The members of this list have names not in the local passwd file. */
static struct userid *nouser_alist;
/* Translate UID to a login name or a stringified number,
with cache. */
/* Translate UID to a login name, with cache, or NULL if unresolved. */
char *
getuser (uid)
uid_t uid;
getuser (uid_t uid)
{
register struct userid *tail;
struct passwd *pwent;
char usernum_string[20];
for (tail = user_alist; tail; tail = tail->next)
if (tail->id.u == uid)
@@ -77,13 +80,7 @@ getuser (uid)
pwent = getpwuid (uid);
tail = (struct userid *) xmalloc (sizeof (struct userid));
tail->id.u = uid;
if (pwent == 0)
{
sprintf (usernum_string, "%u", (unsigned) uid);
tail->name = xstrdup (usernum_string);
}
else
tail->name = xstrdup (pwent->pw_name);
tail->name = pwent ? xstrdup (pwent->pw_name) : NULL;
/* Add to the head of the list, so most recently used is first. */
tail->next = user_alist;
@@ -97,8 +94,7 @@ getuser (uid)
so we don't keep looking them up.) */
uid_t *
getuidbyname (user)
char *user;
getuidbyname (const char *user)
{
register struct userid *tail;
struct passwd *pwent;
@@ -114,6 +110,15 @@ getuidbyname (user)
return 0;
pwent = getpwnam (user);
#ifdef __DJGPP__
/* We need to pretend to be the user USER, to make
pwd functions know about an arbitrary user name. */
if (!pwent && strspn (user, digits) < strlen (user))
{
setenv ("USER", user, 1);
pwent = getpwnam (user); /* now it will succeed */
}
#endif
tail = (struct userid *) xmalloc (sizeof (struct userid));
tail->name = xstrdup (user);
@@ -136,16 +141,13 @@ getuidbyname (user)
static struct userid *group_alist;
static struct userid *nogroup_alist;
/* Translate GID to a group name or a stringified number,
with cache. */
/* Translate GID to a group name, with cache, or NULL if unresolved. */
char *
getgroup (gid)
gid_t gid;
getgroup (gid_t gid)
{
register struct userid *tail;
struct group *grent;
char groupnum_string[20];
for (tail = group_alist; tail; tail = tail->next)
if (tail->id.g == gid)
@@ -154,13 +156,7 @@ getgroup (gid)
grent = getgrgid (gid);
tail = (struct userid *) xmalloc (sizeof (struct userid));
tail->id.g = gid;
if (grent == 0)
{
sprintf (groupnum_string, "%u", (unsigned int) gid);
tail->name = xstrdup (groupnum_string);
}
else
tail->name = xstrdup (grent->gr_name);
tail->name = grent ? xstrdup (grent->gr_name) : NULL;
/* Add to the head of the list, so most recently used is first. */
tail->next = group_alist;
@@ -168,14 +164,13 @@ getgroup (gid)
return tail->name;
}
/* Translate GROUP to a UID, with cache.
/* Translate GROUP to a GID, with cache.
Return NULL if there is no such group.
(We also cache which group names have no group entry,
so we don't keep looking them up.) */
gid_t *
getgidbyname (group)
char *group;
getgidbyname (const char *group)
{
register struct userid *tail;
struct group *grent;
@@ -191,6 +186,15 @@ getgidbyname (group)
return 0;
grent = getgrnam (group);
#ifdef __DJGPP__
/* We need to pretend to belong to group GROUP, to make
grp functions know about any arbitrary group name. */
if (!grent && strspn (group, digits) < strlen (group))
{
setenv ("GROUP", group, 1);
grent = getgrnam (group); /* now it will succeed */
}
#endif
tail = (struct userid *) xmalloc (sizeof (struct userid));
tail->name = xstrdup (group);

View File

@@ -1,5 +1,5 @@
/* isdir.c -- determine whether a directory exists
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 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
@@ -15,27 +15,26 @@
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>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#ifdef STAT_MACROS_BROKEN
#undef S_ISDIR
#endif /* STAT_MACROS_BROKEN. */
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#if !defined S_ISDIR && defined S_IFDIR
# define S_ISDIR(Mode) (((Mode) & S_IFMT) == S_IFDIR)
#endif
/* If PATH is an existing directory or symbolic link to a directory,
return nonzero, else 0. */
int
isdir (path)
char *path;
isdir (const char *path)
{
struct stat stats;

49
lib/lchown.c Normal file
View File

@@ -0,0 +1,49 @@
/* Provide a stub lchown function for systems that lack it.
Copyright (C) 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
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 */
#include <config.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#include "lchown.h"
/* Declare chown to avoid a warning. Don't include unistd.h,
because it may have a conflicting prototype for lchown. */
int chown ();
/* Work just like chown, except when FILE is a symbolic link.
In that case, set errno to ENOSYS and return -1. */
int
lchown (const char *file, uid_t uid, gid_t gid)
{
struct stat stats;
if (lstat (file, &stats) == 0 && S_ISLNK (stats.st_mode))
{
errno = ENOSYS;
return -1;
}
return chown (file, uid, gid);
}

9
lib/lchown.h Normal file
View File

@@ -0,0 +1,9 @@
/* Some systems don't have ENOSYS. */
#ifndef ENOSYS
# ifdef ENOTSUP
# define ENOSYS ENOTSUP
# else
/* Some systems don't have ENOTSUP either. */
# define ENOSYS ENOMSG
# endif
#endif

View File

@@ -1,5 +1,5 @@
/* linebuffer.c -- read arbitrarily long lines
Copyright (C) 1986, 1991 Free Software Foundation, Inc.
Copyright (C) 1986, 1991, 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
@@ -12,11 +12,15 @@
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., 675 Mass Ave, Cambridge, MA 02139, USA. */
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 Richard Stallman. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include "linebuffer.h"
@@ -27,8 +31,7 @@ void free ();
/* Initialize linebuffer LINEBUFFER for use. */
void
initbuffer (linebuffer)
struct linebuffer *linebuffer;
initbuffer (struct linebuffer *linebuffer)
{
linebuffer->length = 0;
linebuffer->size = 200;
@@ -37,19 +40,18 @@ initbuffer (linebuffer)
/* Read an arbitrarily long line of text from STREAM into LINEBUFFER.
Remove any newline. Does not null terminate.
Return LINEBUFFER, except at end of file return 0. */
Return zero upon error or upon end of file.
Otherwise, return LINEBUFFER. */
struct linebuffer *
readline (linebuffer, stream)
struct linebuffer *linebuffer;
FILE *stream;
readline (struct linebuffer *linebuffer, FILE *stream)
{
int c;
char *buffer = linebuffer->buffer;
char *p = linebuffer->buffer;
char *end = buffer + linebuffer->size; /* Sentinel. */
if (feof (stream))
if (feof (stream) || ferror (stream))
{
linebuffer->length = 0;
return 0;
@@ -83,8 +85,7 @@ readline (linebuffer, stream)
/* Free linebuffer LINEBUFFER and its data, all allocated with malloc. */
void
freebuffer (linebuffer)
struct linebuffer *linebuffer;
freebuffer (struct linebuffer *linebuffer)
{
free (linebuffer->buffer);
free (linebuffer);

View File

@@ -1,5 +1,5 @@
/* linebuffer.h -- declarations for reading arbitrarily long lines
Copyright (C) 1986, 1991 Free Software Foundation, Inc.
Copyright (C) 1986, 1991, 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
@@ -14,7 +14,10 @@
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 !defined LINEBUFFER_H
# define LINEBUFFER_H
/* A `struct linebuffer' holds a line of text. */
struct linebuffer
@@ -24,12 +27,13 @@ struct linebuffer
char *buffer;
};
#undef PARAMS
#if defined (__STDC__) && __STDC__
# define PARAMS(Args) Args
#else
# define PARAMS(Args) ()
#endif
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
/* Initialize linebuffer LINEBUFFER for use. */
void initbuffer PARAMS ((struct linebuffer *linebuffer));
@@ -42,3 +46,5 @@ struct linebuffer *readline PARAMS ((struct linebuffer *linebuffer,
/* Free linebuffer LINEBUFFER and its data, all allocated with malloc. */
void freebuffer PARAMS ((struct linebuffer *));
#endif /* LINEBUFFER_H */

View File

@@ -1,5 +1,5 @@
/* Utility to accept --help and --version options as unobtrusively as possible.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 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
@@ -17,13 +17,22 @@
/* Written by Jim Meyering. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include <getopt.h>
#include "closeout.h"
#include "long-options.h"
#include "version-etc.h"
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
static struct option const long_options[] =
{
@@ -36,13 +45,13 @@ static struct option const long_options[] =
Be careful not to gobble up `--'. */
void
parse_long_options (argc, argv, command_name, package, version, usage)
int argc;
char **argv;
const char *command_name;
const char *package;
const char *version;
void (*usage)();
parse_long_options (int argc,
char **argv,
const char *command_name,
const char *package,
const char *version,
const char *authors,
void (*usage_func)())
{
int c;
int saved_opterr;
@@ -53,15 +62,17 @@ parse_long_options (argc, argv, command_name, package, version, usage)
opterr = 0;
if (argc == 2
&& (c = getopt_long (argc, argv, "+", long_options, (int *) 0)) != EOF)
&& (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1)
{
switch (c)
{
case 'h':
(*usage) (0);
(*usage_func) (0);
case 'v':
printf ("%s (%s) %s\n", command_name, package, version);
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

@@ -1,5 +1,5 @@
/* long-options.h -- declaration for --help- and --version-handling function.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 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
@@ -17,15 +17,19 @@
/* Written by Jim Meyering. */
#undef PARAMS
#if defined (__STDC__) && __STDC__
# define PARAMS(Args) Args
#else
# define PARAMS(Args) ()
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
void
parse_long_options PARAMS ((int _argc, char **_argv,
parse_long_options PARAMS ((int _argc,
char **_argv,
const char *_command_name,
const char *_package,
const char *_version, void (*_usage) (int)));
const char *_version,
const char *_authors,
void (*_usage) (int)));

View File

@@ -1,5 +1,5 @@
/* makepath.c -- Ensure that a directory path exists.
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 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
@@ -28,7 +28,7 @@
# include <alloca.h>
# else
# ifdef _AIX
#pragma alloca
# pragma alloca
# else
char *alloca ();
# endif
@@ -71,14 +71,110 @@ extern int errno;
# endif
#endif
#ifndef S_IWUSR
# define S_IWUSR 0200
#endif
#ifndef S_IXUSR
# define S_IXUSR 0100
#endif
#define WX_USR (S_IWUSR | S_IXUSR)
#if HAVE_LOCALE_H
# include <locale.h>
#endif
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define _(Text) Text
#endif
#ifdef __MSDOS__
typedef int uid_t;
typedef int gid_t;
#endif
#include "save-cwd.h"
#include "makepath.h"
#include "error.h"
void error ();
void strip_trailing_slashes ();
#define CLEANUP_CWD \
do \
{ \
/* We're done operating on basename_dir. \
Restore working directory. */ \
if (do_chdir) \
{ \
int _fail = restore_cwd (&cwd, NULL, NULL); \
free_cwd (&cwd); \
if (_fail) \
return 1; \
} \
} \
while (0)
#define CLEANUP \
do \
{ \
umask (oldmask); \
CLEANUP_CWD; \
} \
while (0)
/* Attempt to create directory DIR (aka DIRPATH) with the specified MODE.
If CREATED_DIR_P is non-NULL, set *CREATED_DIR_P to non-zero if this
function creates DIR and to zero otherwise. Give a diagnostic and
return non-zero if DIR cannot be created or cannot be determined to
exist already. Use DIRPATH in any diagnostic, not DIR.
Note that if DIR already exists, this function will return zero
(indicating success) and will set *CREATED_DIR_P to zero. */
static int
make_dir (const char *dir, const char *dirpath, mode_t mode, int *created_dir_p)
{
int fail = 0;
int created_dir;
created_dir = (mkdir (dir, mode) == 0);
if (!created_dir)
{
struct stat stats;
/* The mkdir and stat calls below may appear to be reversed.
They are not. It is important to call mkdir first and then to
call stat (to distinguish the three cases) only if mkdir fails.
The alternative to this approach is to `stat' each directory,
then to call mkdir if it doesn't exist. But if some other process
were to create the directory between the stat & mkdir, the mkdir
would fail with EEXIST. */
if (stat (dir, &stats))
{
error (0, errno, _("cannot create directory `%s'"), dirpath);
fail = 1;
}
else if (!S_ISDIR (stats.st_mode))
{
error (0, 0, _("`%s' exists but is not a directory"), dirpath);
fail = 1;
}
else
{
/* DIR (aka DIRPATH) already exists and is a directory. */
}
}
if (created_dir_p)
*created_dir_p = created_dir;
return fail;
}
/* Ensure that the directory ARGPATH exists.
Remove any trailing slashes from ARGPATH before calling this function.
@@ -98,7 +194,6 @@ void error ();
Return 0 if ARGPATH exists as a directory with the proper
ownership and permissions when done, otherwise 1. */
#if __STDC__
int
make_path (const char *argpath,
int mode,
@@ -107,30 +202,11 @@ make_path (const char *argpath,
gid_t group,
int preserve_existing,
const char *verbose_fmt_string)
#else
int
make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
verbose_fmt_string)
const char *argpath;
int mode;
int parent_mode;
uid_t owner;
gid_t group;
int preserve_existing;
const char *verbose_fmt_string;
#endif
{
char *dirpath; /* A copy we can scribble NULs on. */
struct stat stats;
int retval = 0;
int oldmask = umask (0);
/* FIXME: move this alloca and strcpy into the if-block.
Set dirpath to argpath in the else-block. */
dirpath = (char *) alloca (strlen (argpath) + 1);
strcpy (dirpath, argpath);
if (stat (dirpath, &stats))
if (stat (argpath, &stats))
{
char *slash;
int tmp_mode; /* Initial perms for leading dirs. */
@@ -141,12 +217,24 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
struct ptr_list *next;
};
struct ptr_list *p, *leading_dirs = NULL;
int do_chdir; /* Whether to chdir before each mkdir. */
struct saved_cwd cwd;
char *basename_dir;
char *dirpath;
/* Temporarily relax umask in case it's overly restrictive. */
int oldmask = umask (0);
/* Make a copy of ARGPATH that we can scribble NULs on. */
dirpath = (char *) alloca (strlen (argpath) + 1);
strcpy (dirpath, argpath);
strip_trailing_slashes (dirpath);
/* If leading directories shouldn't be writable or executable,
or should have set[ug]id or sticky bits set and we are setting
their owners, we need to fix their permissions after making them. */
if (((parent_mode & 0300) != 0300)
|| (owner != (uid_t) -1 && group != (gid_t) -1
if (((parent_mode & WX_USR) != WX_USR)
|| ((owner != (uid_t) -1 || group != (gid_t) -1)
&& (parent_mode & 07000) != 0))
{
tmp_mode = 0700;
@@ -158,49 +246,82 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
re_protect = 0;
}
/* If we can record the current working directory, we may be able
to do the chdir optimization. */
do_chdir = !save_cwd (&cwd);
/* If we've saved the cwd and DIRPATH is an absolute pathname,
we must chdir to `/' in order to enable the chdir optimization.
So if chdir ("/") fails, turn off the optimization. */
if (do_chdir && *dirpath == '/' && chdir ("/") < 0)
do_chdir = 0;
slash = dirpath;
/* Skip over leading slashes. */
while (*slash == '/')
slash++;
while ((slash = strchr (slash, '/')))
while (1)
{
int newly_created_dir;
int fail;
/* slash points to the leftmost unprocessed component of dirpath. */
basename_dir = slash;
slash = strchr (slash, '/');
if (slash == NULL)
break;
/* If we're *not* doing chdir before each mkdir, then we have to refer
to the target using the full (multi-component) directory name. */
if (!do_chdir)
basename_dir = dirpath;
*slash = '\0';
if (stat (dirpath, &stats))
fail = make_dir (basename_dir, dirpath, tmp_mode, &newly_created_dir);
if (fail)
{
if (mkdir (dirpath, tmp_mode))
CLEANUP;
return 1;
}
if (newly_created_dir)
{
if (verbose_fmt_string)
fprintf (stderr, verbose_fmt_string, dirpath);
if ((owner != (uid_t) -1 || group != (gid_t) -1)
&& chown (basename_dir, owner, group)
#if defined(AFS) && defined (EPERM)
&& errno != EPERM
#endif
)
{
error (0, errno, "cannot create directory `%s'", dirpath);
umask (oldmask);
error (0, errno, "%s", dirpath);
CLEANUP;
return 1;
}
else
{
if (verbose_fmt_string != NULL)
error (0, 0, verbose_fmt_string, dirpath);
if (owner != (uid_t) -1 && group != (gid_t) -1
&& chown (dirpath, owner, group)
#if defined(AFS) && defined (EPERM)
&& errno != EPERM
#endif
)
{
error (0, errno, "%s", dirpath);
retval = 1;
}
if (re_protect)
{
struct ptr_list *new = (struct ptr_list *)
alloca (sizeof (struct ptr_list));
new->dirname_end = slash;
new->next = leading_dirs;
leading_dirs = new;
}
if (re_protect)
{
struct ptr_list *new = (struct ptr_list *)
alloca (sizeof (struct ptr_list));
new->dirname_end = slash;
new->next = leading_dirs;
leading_dirs = new;
}
}
else if (!S_ISDIR (stats.st_mode))
/* If we were able to save the initial working directory,
then we can use chdir to change into each directory before
creating an entry in that directory. This avoids making
stat and mkdir process O(n^2) file name components. */
if (do_chdir && chdir (basename_dir) < 0)
{
error (0, 0, "`%s' exists but is not a directory", dirpath);
umask (oldmask);
error (0, errno, _("cannot chdir to directory, %s"), dirpath);
CLEANUP;
return 1;
}
@@ -212,40 +333,45 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
slash++;
}
if (!do_chdir)
basename_dir = dirpath;
/* We're done making leading directories.
Create the final component of the path. */
/* The path could end in "/." or contain "/..", so test
if we really have to create the directory. */
if (stat (dirpath, &stats) && mkdir (dirpath, mode))
if (make_dir (basename_dir, dirpath, mode, NULL))
{
error (0, errno, "cannot create directory `%s'", dirpath);
umask (oldmask);
CLEANUP;
return 1;
}
/* Done creating directories. Restore original umask. */
umask (oldmask);
if (verbose_fmt_string != NULL)
error (0, 0, verbose_fmt_string, dirpath);
if (owner != (uid_t) -1 && group != (gid_t) -1)
{
if (chown (dirpath, owner, group)
if (chown (basename_dir, owner, group)
#ifdef AFS
&& errno != EPERM
#endif
)
{
error (0, errno, "%s", dirpath);
error (0, errno, _("cannot chown %s"), dirpath);
retval = 1;
}
/* chown may have turned off some permission bits we wanted. */
if ((mode & 07000) != 0 && chmod (dirpath, mode))
if ((mode & 07000) != 0 && chmod (basename_dir, mode))
{
error (0, errno, "%s", dirpath);
error (0, errno, _("cannot chmod %s"), dirpath);
retval = 1;
}
}
CLEANUP_CWD;
/* If the mode for leading directories didn't include owner "wx"
privileges, we have to reset their protections to the correct
value. */
@@ -263,10 +389,11 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
{
/* We get here if the entire path already exists. */
const char *dirpath = argpath;
if (!S_ISDIR (stats.st_mode))
{
error (0, 0, "`%s' exists but is not a directory", dirpath);
umask (oldmask);
error (0, 0, _("`%s' exists but is not a directory"), dirpath);
return 1;
}
@@ -278,7 +405,7 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
On System V, users can give away files with chown and then not
be able to chmod them. So don't give files away. */
if (owner != (uid_t) -1 && group != (gid_t) -1
if ((owner != (uid_t) -1 || group != (gid_t) -1)
&& chown (dirpath, owner, group)
#ifdef AFS
&& errno != EPERM
@@ -296,6 +423,5 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
}
}
umask (oldmask);
return retval;
}

View File

@@ -1,15 +1,16 @@
# undef __P
#if __STDC__
# define __P(Args) Args
#else
# define __P(Args) ()
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
int
make_path __P ((const char *_argpath,
int _mode,
int _parent_mode,
uid_t _owner,
gid_t _group,
int _preserve_existing,
const char *_verbose_fmt_string));
make_path PARAMS ((const char *_argpath,
int _mode,
int _parent_mode,
uid_t _owner,
gid_t _group,
int _preserve_existing,
const char *_verbose_fmt_string));

38
lib/malloc.c Normal file
View File

@@ -0,0 +1,38 @@
/* Work around bug on some systems where malloc (0) fails.
Copyright (C) 1997, 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. */
/* written by Jim Meyering */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#undef malloc
#include <sys/types.h>
char *malloc ();
/* Allocate an N-byte block of memory from the heap.
If N is zero, allocate a 1-byte block. */
char *
rpl_malloc (size_t n)
{
if (n == 0)
n = 1;
return malloc (n);
}

View File

@@ -1,5 +1,5 @@
/* Case-insensitive buffer comparator.
Copyright (C) 1996 Free Software Foundation, Inc.
Copyright (C) 1996, 1997 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,21 +25,23 @@
#include <ctype.h>
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
#define IN_CTYPE_DOMAIN(c) 1
# define IN_CTYPE_DOMAIN(c) 1
#else
#define IN_CTYPE_DOMAIN(c) isascii(c)
# define IN_CTYPE_DOMAIN(c) isascii(c)
#endif
#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c))
#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c))
#if _LIBC || STDC_HEADERS
# define TOLOWER(c) tolower (c)
# define TOUPPER(c) toupper (c)
#else
# define TOLOWER(c) (ISUPPER (c) ? tolower (c) : (c))
# define TOUPPER(c) (ISLOWER (c) ? toupper (c) : (c))
#endif
#include "memcasecmp.h"
/* Like memcmp, but ignore differences in case. */
/* Like memcmp, but ignore differences in case.
Convert to upper case (not lower) before comparing so that
join -i works with sort -f. */
int
memcasecmp (vs1, vs2, n)
@@ -54,8 +56,8 @@ memcasecmp (vs1, vs2, n)
{
unsigned char u1 = *s1++;
unsigned char u2 = *s2++;
if (TOLOWER (u1) != TOLOWER (u2))
return TOLOWER (u1) - TOLOWER (u2);
if (TOUPPER (u1) != TOUPPER (u2))
return TOUPPER (u1) - TOUPPER (u2);
}
return 0;
}

View File

@@ -1,8 +1,9 @@
#undef PARAMS
#if defined (__STDC__) && __STDC__
# define PARAMS(Args) Args
#else
# define PARAMS(Args) ()
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
int

View File

@@ -1,5 +1,5 @@
/* Copyright (C) 1991, 1993 Free Software Foundation, Inc.
Based on strlen implemention by Torbjorn Granlund (tege@sics.se),
/* Copyright (C) 1991, 1993, 1997 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),

View File

@@ -1,72 +1,83 @@
/* Copyright (C) 1991, 1993, 1995 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1993, 1995, 1997, 1998 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
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"
# include "config.h"
#endif
#undef __ptr_t
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
#define __ptr_t void *
#if defined __cplusplus || (defined __STDC__ && __STDC__)
# define __ptr_t void *
#else /* Not C++ or ANSI C. */
#undef const
#define const
#define __ptr_t char *
# undef const
# define const
# define __ptr_t char *
#endif /* C++ or ANSI C. */
#if defined (HAVE_STRING_H) || defined (_LIBC)
#include <string.h>
#ifndef __P
# if defined __GNUC__ || (defined __STDC__ && __STDC__)
# define __P(args) args
# else
# define __P(args) ()
# endif /* GCC. */
#endif /* Not __P. */
#if defined HAVE_STRING_H || defined _LIBC
# include <string.h>
#endif
#undef memcmp
#ifdef _LIBC
#include <memcopy.h>
# include <memcopy.h>
#else /* Not in the GNU C library. */
#include <sys/types.h>
# include <sys/types.h>
/* Type to use for aligned memory operations.
This should normally be the biggest type supported by a single load
and store. Must be an unsigned type. */
#define op_t unsigned long int
#define OPSIZ (sizeof(op_t))
# define op_t unsigned long int
# define OPSIZ (sizeof(op_t))
/* Threshold value for when to enter the unrolled loops. */
#define OP_T_THRES 16
# define OP_T_THRES 16
/* Type to use for unaligned operations. */
typedef unsigned char byte;
#ifndef WORDS_BIGENDIAN
#define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
#else
#define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
#endif
# ifndef WORDS_BIGENDIAN
# define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
# else
# define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
# endif
#endif /* In the GNU C library. */
#ifdef WORDS_BIGENDIAN
#define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
# define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
#else
#define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
# define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
#endif
/* BE VERY CAREFUL IF YOU CHANGE THIS CODE! */
@@ -86,12 +97,14 @@ typedef unsigned char byte;
/* memcmp_bytes -- Compare A and B bytewise in the byte order of the machine.
A and B are known to be different.
This is needed only on little-endian machines. */
#ifdef __GNUC__
static int memcmp_bytes __P((op_t, op_t));
# ifdef __GNUC__
__inline
#endif
# endif
static int
memcmp_bytes (a, b)
op_t a, b;
memcmp_bytes (long unsigned int a, long unsigned int b)
{
long int srcp1 = (long int) &a;
long int srcp2 = (long int) &b;
@@ -109,6 +122,8 @@ memcmp_bytes (a, b)
}
#endif
static int memcmp_common_alignment __P((long, long, size_t));
/* memcmp_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN `op_t'
objects (not LEN bytes!). Both SRCP1 and SRCP2 should be aligned for
memory operations on `op_t's. */
@@ -116,16 +131,14 @@ memcmp_bytes (a, b)
__inline
#endif
static int
memcmp_common_alignment (srcp1, srcp2, len)
long int srcp1;
long int srcp2;
size_t len;
memcmp_common_alignment (long int srcp1, long int srcp2, size_t len)
{
op_t a0, a1;
op_t b0, b1;
switch (len % 4)
{
default: /* Avoid warning about uninitialized local variables. */
case 2:
a0 = ((op_t *) srcp1)[0];
b0 = ((op_t *) srcp2)[0];
@@ -196,6 +209,8 @@ memcmp_common_alignment (srcp1, srcp2, len)
return 0;
}
static int memcmp_not_common_alignment __P((long, long, size_t));
/* memcmp_not_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN
`op_t' objects (not LEN bytes!). SRCP2 should be aligned for memory
operations on `op_t', but SRCP1 *should be unaligned*. */
@@ -203,10 +218,7 @@ memcmp_common_alignment (srcp1, srcp2, len)
__inline
#endif
static int
memcmp_not_common_alignment (srcp1, srcp2, len)
long int srcp1;
long int srcp2;
size_t len;
memcmp_not_common_alignment (long int srcp1, long int srcp2, size_t len)
{
op_t a0, a1, a2, a3;
op_t b0, b1, b2, b3;
@@ -225,6 +237,7 @@ memcmp_not_common_alignment (srcp1, srcp2, len)
switch (len % 4)
{
default: /* Avoid warning about uninitialized local variables. */
case 2:
a1 = ((op_t *) srcp1)[0];
a2 = ((op_t *) srcp1)[1];
@@ -305,10 +318,7 @@ memcmp_not_common_alignment (srcp1, srcp2, len)
}
int
memcmp (s1, s2, len)
const __ptr_t s1;
const __ptr_t s2;
size_t len;
rpl_memcmp (const void *s1, const void *s2, size_t len)
{
op_t a0;
op_t b0;
@@ -366,8 +376,6 @@ memcmp (s1, s2, len)
}
#ifdef weak_alias
#undef bcmp
# undef bcmp
weak_alias (memcmp, bcmp)
#endif

View File

@@ -1,11 +1,29 @@
/* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined
if the source overlaps with the destination.
Return DESTADDR. */
/* Copyright (C) 1995, 1997 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 <meyering@na-net.ornl.gov>. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined
if the source overlaps with the destination.
Return DESTADDR. */
char *
memcpy (destaddr, srcaddr, len)
char *destaddr;

View File

@@ -16,10 +16,7 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
char *
memset (str, c, len)
char *str;
int c;
unsigned len;
memset (char *str, int c, unsigned int len)
{
register char *st = str;

View File

@@ -1,5 +1,5 @@
/* BSD compatible make directory function for System V
Copyright (C) 1988, 1990 Free Software Foundation, Inc.
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
@@ -48,11 +48,10 @@ extern int errno;
subroutine didn't return EEXIST. It does now. */
int
mkdir (dpath, dmode)
char *dpath;
int dmode;
mkdir (const char *dpath, int dmode)
{
int cpid, status;
pid_t cpid;
int status;
struct stat statbuf;
if (stat (dpath, &statbuf) == 0)
@@ -86,7 +85,7 @@ mkdir (dpath, dmode)
while (wait (&status) != cpid)
/* Do nothing. */ ;
if (status & 0xFFFF)
if (status)
{
/* /bin/mkdir failed. */
errno = EIO;

View File

@@ -1,79 +1,91 @@
/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
/* Convert a `struct tm' to a time_t value.
Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Eggert (eggert@twinsun.com).
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.
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.
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,
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 General Public License for more details.
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 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 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. */
/* Define this to have a standalone program to test this implementation of
mktime. */
/* #define DEBUG 1 */
#ifdef HAVE_CONFIG_H
#include <config.h>
# include <config.h>
#endif
#ifdef _LIBC
# define HAVE_LIMITS_H 1
# define STDC_HEADERS 1
#endif
/* Assume that leap seconds are possible, unless told otherwise.
If the host has a `zic' command with a `-L leapsecondfilename' option,
then it supports leap seconds; otherwise it probably doesn't. */
#ifndef LEAP_SECONDS_POSSIBLE
#define LEAP_SECONDS_POSSIBLE 1
# define LEAP_SECONDS_POSSIBLE 1
#endif
#include <sys/types.h> /* Some systems define `time_t' here. */
#include <time.h>
#if __STDC__ || __GNU_LIBRARY__ || STDC_HEADERS
#include <limits.h>
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#if DEBUG
#include <stdio.h>
#if __STDC__ || __GNU_LIBRARY__ || STDC_HEADERS
#include <stdlib.h>
#endif
# include <stdio.h>
# if STDC_HEADERS
# include <stdlib.h>
# endif
/* Make it work even if the system's libc has its own mktime routine. */
#define mktime my_mktime
# define mktime my_mktime
#endif /* DEBUG */
#ifndef __P
#if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
#define __P(args) args
#else
#define __P(args) ()
#endif /* GCC. */
# if defined __GNUC__ || (defined __STDC__ && __STDC__)
# define __P(args) args
# else
# define __P(args) ()
# endif /* GCC. */
#endif /* Not __P. */
#ifndef CHAR_BIT
#define CHAR_BIT 8
# 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 INT_MIN
#define INT_MIN (~0 << (sizeof (int) * CHAR_BIT - 1))
# define INT_MIN TYPE_MINIMUM (int)
#endif
#ifndef INT_MAX
#define INT_MAX (~0 - INT_MIN)
# define INT_MAX TYPE_MAXIMUM (int)
#endif
#ifndef TIME_T_MIN
#define TIME_T_MIN (0 < (time_t) -1 ? (time_t) 0 \
: ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1))
# define TIME_T_MIN TYPE_MINIMUM (time_t)
#endif
#ifndef TIME_T_MAX
#define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN)
# define TIME_T_MAX TYPE_MAXIMUM (time_t)
#endif
#define TM_YEAR_BASE 1900
@@ -82,7 +94,7 @@
#ifndef __isleap
/* Nonzero if YEAR is a leap year (every 4 years,
except every 100th isn't, and every 400th is). */
#define __isleap(year) \
# define __isleap(year) \
((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
#endif
@@ -95,23 +107,15 @@ const unsigned short int __mon_yday[2][13] =
{ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
};
static time_t ydhms_tm_diff __P ((int, int, int, int, int, const struct tm *));
time_t __mktime_internal __P ((struct tm *,
struct tm *(*) (const time_t *, struct tm *),
time_t *));
#if ! HAVE_LOCALTIME_R && ! defined (localtime_r)
#ifdef _LIBC
#define localtime_r __localtime_r
# define my_mktime_localtime_r __localtime_r
#else
/* Approximate localtime_r as best we can in its absence. */
#define localtime_r my_localtime_r
static struct tm *localtime_r __P ((const time_t *, struct tm *));
/* If we're a mktime substitute in a GNU program, then prefer
localtime to localtime_r, since many localtime_r implementations
are buggy. */
static struct tm *
localtime_r (t, tp)
const time_t *t;
struct tm *tp;
my_mktime_localtime_r (const time_t *t, struct tm *tp)
{
struct tm *l = localtime (t);
if (! l)
@@ -120,60 +124,107 @@ localtime_r (t, tp)
return tp;
}
#endif /* ! _LIBC */
#endif /* ! HAVE_LOCALTIME_R && ! defined (localtime_r) */
/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP),
measured in seconds, ignoring leap seconds.
YEAR uses the same numbering as TM->tm_year.
All values are in range, except possibly YEAR.
If TP is null, return a nonzero value.
If overflow occurs, yield the low order bits of the correct answer. */
static time_t
ydhms_tm_diff (year, yday, hour, min, sec, tp)
int year, yday, hour, min, sec;
const struct tm *tp;
ydhms_tm_diff (int year, int yday, int hour, int min, int sec,
const struct tm *tp)
{
time_t ay = year + (time_t) (TM_YEAR_BASE - 1);
time_t by = tp->tm_year + (time_t) (TM_YEAR_BASE - 1);
time_t intervening_leap_days =
(ay/4 - by/4) - (ay/100 - by/100) + (ay/400 - by/400);
time_t years = ay - by;
time_t days = (365 * years + intervening_leap_days
+ (yday - tp->tm_yday));
return (60 * (60 * (24 * days + (hour - tp->tm_hour))
+ (min - tp->tm_min))
+ (sec - tp->tm_sec));
if (!tp)
return 1;
else
{
/* Compute intervening leap days correctly even if year is negative.
Take care to avoid int overflow. time_t overflow is OK, since
only the low order bits of the correct time_t answer are needed.
Don't convert to time_t until after all divisions are done, since
time_t might be unsigned. */
int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3);
int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3);
int a100 = a4 / 25 - (a4 % 25 < 0);
int b100 = b4 / 25 - (b4 % 25 < 0);
int a400 = a100 >> 2;
int b400 = b100 >> 2;
int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
time_t years = year - (time_t) tp->tm_year;
time_t days = (365 * years + intervening_leap_days
+ (yday - tp->tm_yday));
return (60 * (60 * (24 * days + (hour - tp->tm_hour))
+ (min - tp->tm_min))
+ (sec - tp->tm_sec));
}
}
/* Convert *TP to a time_t value. */
time_t
mktime (tp)
struct tm *tp;
/* Use CONVERT to convert *T to a broken down time in *TP.
If *T is out of range for conversion, adjust it so that
it is the nearest in-range value and then convert that. */
static struct tm *
ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
time_t *t, struct tm *tp)
{
static time_t localtime_offset;
return __mktime_internal (tp, localtime_r, &localtime_offset);
struct tm *r;
if (! (r = (*convert) (t, tp)) && *t)
{
time_t bad = *t;
time_t ok = 0;
struct tm tm;
/* BAD is a known unconvertible time_t, and OK is a known good one.
Use binary search to narrow the range between BAD and OK until
they differ by 1. */
while (bad != ok + (bad < 0 ? -1 : 1))
{
time_t mid = *t = (bad < 0
? bad + ((ok - bad) >> 1)
: ok + ((bad - ok) >> 1));
if ((r = (*convert) (t, tp)))
{
tm = *r;
ok = mid;
}
else
bad = mid;
}
if (!r && ok)
{
/* The last conversion attempt failed;
revert to the most recent successful attempt. */
*t = ok;
*tp = tm;
r = tp;
}
}
return r;
}
/* Convert *TP to a time_t value, inverting
the monotonic and mostly-unit-linear conversion function CONVERT.
Use *OFFSET to keep track of a guess at the offset of the result,
compared to what the result would be for UTC without leap seconds.
If *OFFSET's guess is correct, only one CONVERT call is needed. */
time_t
__mktime_internal (tp, convert, offset)
struct tm *tp;
struct tm *(*convert) __P ((const time_t *, struct tm *));
time_t *offset;
__mktime_internal (struct tm *tp,
struct tm *(*convert) (const time_t *, struct tm *),
time_t *offset)
{
time_t t, dt, t0;
time_t t, dt, t0, t1, t2;
struct tm tm;
/* The maximum number of probes (calls to CONVERT) should be enough
to handle any combinations of time zone rule changes, solar time,
and leap seconds. Posix.1 prohibits leap seconds, but some hosts
have them anyway. */
int remaining_probes = 4;
leap seconds, and oscillations around a spring-forward gap.
POSIX.1 prohibits leap seconds, but some hosts have them anyway. */
int remaining_probes = 6;
/* Time requested. Copy it in case CONVERT modifies *TP; this can
occur if TP is localtime's returned value and CONVERT is localtime. */
@@ -202,10 +253,10 @@ __mktime_internal (tp, convert, offset)
[mon_remainder + 12 * negative_mon_remainder])
+ mday - 1);
int sec_requested = sec;
#if LEAP_SECONDS_POSSIBLE
/* Handle out-of-range seconds specially,
since ydhms_tm_diff assumes every minute has 60 seconds. */
int sec_requested = sec;
if (sec < 0)
sec = 0;
if (59 < sec)
@@ -219,35 +270,52 @@ __mktime_internal (tp, convert, offset)
tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm);
for (t = t0 + *offset;
(dt = ydhms_tm_diff (year, yday, hour, min, sec, (*convert) (&t, &tm)));
t += dt)
if (--remaining_probes == 0)
for (t = t1 = t2 = t0 + *offset;
(dt = ydhms_tm_diff (year, yday, hour, min, sec,
ranged_convert (convert, &t, &tm)));
t1 = t2, t2 = t, t += dt)
if (t == t1 && t != t2
&& (isdst < 0 || tm.tm_isdst < 0
|| (isdst != 0) != (tm.tm_isdst != 0)))
/* We can't possibly find a match, as we are oscillating
between two values. The requested time probably falls
within a spring-forward gap of size DT. Follow the common
practice in this case, which is to return a time that is DT
away from the requested time, preferring a time whose
tm_isdst differs from the requested value. In practice,
this is more useful than returning -1. */
break;
else if (--remaining_probes == 0)
return -1;
/* Check whether tm.tm_isdst has the requested value, if any. */
if (0 <= isdst && 0 <= tm.tm_isdst)
/* If we have a match, check whether tm.tm_isdst has the requested
value, if any. */
if (dt == 0 && isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst)
{
int dst_diff = (isdst != 0) - (tm.tm_isdst != 0);
if (dst_diff)
/* tm.tm_isdst has the wrong value. Look for a neighboring
time with the right value, and use its UTC offset.
Heuristic: probe the previous three calendar quarters (approximately),
looking for the desired isdst. This isn't perfect,
but it's good enough in practice. */
int quarter = 7889238; /* seconds per average 1/4 Gregorian year */
int i;
/* If we're too close to the time_t limit, look in future quarters. */
if (t < TIME_T_MIN + 3 * quarter)
quarter = -quarter;
for (i = 1; i <= 3; i++)
{
/* Move two hours in the direction indicated by the disagreement,
probe some more, and switch to a new time if found.
The largest known fallback due to daylight savings is two hours:
once, in Newfoundland, 1988-10-30 02:00 -> 00:00. */
time_t ot = t - 2 * 60 * 60 * dst_diff;
while (--remaining_probes != 0)
time_t ot = t - i * quarter;
struct tm otm;
ranged_convert (convert, &ot, &otm);
if (otm.tm_isdst == isdst)
{
struct tm otm;
if (! (dt = ydhms_tm_diff (year, yday, hour, min, sec,
(*convert) (&ot, &otm))))
{
t = ot;
tm = otm;
break;
}
if ((ot += dt) == t)
break; /* Avoid a redundant probe. */
/* We found the desired tm_isdst.
Extrapolate back to the desired time. */
t = ot + ydhms_tm_diff (year, yday, hour, min, sec, &otm);
ranged_convert (convert, &t, &tm);
break;
}
}
}
@@ -260,7 +328,8 @@ __mktime_internal (tp, convert, offset)
/* Adjust time to reflect the tm_sec requested, not the normalized value.
Also, repair any damage from a false match due to a leap second. */
t += sec_requested - sec + (sec == 0 && tm.tm_sec == 60);
(*convert) (&t, &tm);
if (! (*convert) (&t, &tm))
return -1;
}
#endif
@@ -276,7 +345,15 @@ __mktime_internal (tp, convert, offset)
double dday = 366 * dyear + mday;
double dsec = 60 * (60 * (24 * dday + hour) + min) + sec_requested;
if (TIME_T_MAX / 3 - TIME_T_MIN / 3 < (dsec < 0 ? - dsec : dsec))
/* On Irix4.0.5 cc, dividing TIME_T_MIN by 3 does not produce
correct results, ie., it erroneously gives a positive value
of 715827882. Setting a variable first then doing math on it
seems to work. (ghazi@caip.rutgers.edu) */
const time_t time_t_max = TIME_T_MAX;
const time_t time_t_min = TIME_T_MIN;
if (time_t_max / 3 - time_t_min / 3 < (dsec < 0 ? - dsec : dsec))
return -1;
}
@@ -284,6 +361,24 @@ __mktime_internal (tp, convert, offset)
return t;
}
static time_t localtime_offset;
/* Convert *TP to a time_t value. */
time_t
mktime (tp)
struct tm *tp;
{
#ifdef _LIBC
/* POSIX.1 8.1.1 requires that whenever mktime() is called, the
time zone names contained in the external variable `tzname' shall
be set as if the tzset() function had been called. */
__tzset ();
#endif
return __mktime_internal (tp, my_mktime_localtime_r, &localtime_offset);
}
#ifdef weak_alias
weak_alias (mktime, timelocal)
#endif
@@ -310,25 +405,28 @@ static void
print_tm (tp)
struct tm *tp;
{
printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d",
tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday,
tp->tm_hour, tp->tm_min, tp->tm_sec,
tp->tm_yday, tp->tm_wday, tp->tm_isdst);
if (tp)
printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d",
tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday,
tp->tm_hour, tp->tm_min, tp->tm_sec,
tp->tm_yday, tp->tm_wday, tp->tm_isdst);
else
printf ("0");
}
static int
check_result (tk, tmk, tl, tml)
check_result (tk, tmk, tl, lt)
time_t tk;
struct tm tmk;
time_t tl;
struct tm tml;
struct tm *lt;
{
if (tk != tl || not_equal_tm (&tmk, &tml))
if (tk != tl || !lt || not_equal_tm (&tmk, lt))
{
printf ("mktime (");
print_tm (&tmk);
printf (")\nyields (");
print_tm (&tml);
print_tm (lt);
printf (") == %ld, should be %ld\n", (long) tl, (long) tk);
return 1;
}
@@ -343,6 +441,7 @@ main (argc, argv)
{
int status = 0;
struct tm tm, tmk, tml;
struct tm *lt;
time_t tk, tl;
char trailer;
@@ -359,11 +458,16 @@ main (argc, argv)
tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]);
tmk = tm;
tl = mktime (&tmk);
tml = *localtime (&tl);
lt = localtime (&tl);
if (lt)
{
tml = *lt;
lt = &tml;
}
printf ("mktime returns %ld == ", (long) tl);
print_tm (&tmk);
printf ("\n");
status = check_result (tl, tmk, tl, tml);
status = check_result (tl, tmk, tl, lt);
}
else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0))
{
@@ -374,19 +478,35 @@ main (argc, argv)
if (argc == 4)
for (tl = from; tl <= to; tl += by)
{
tml = *localtime (&tl);
tmk = tml;
tk = mktime (&tmk);
status |= check_result (tk, tmk, tl, tml);
lt = localtime (&tl);
if (lt)
{
tmk = tml = *lt;
tk = mktime (&tmk);
status |= check_result (tk, tmk, tl, tml);
}
else
{
printf ("localtime (%ld) yields 0\n", (long) tl);
status = 1;
}
}
else
for (tl = from; tl <= to; tl += by)
{
/* Null benchmark. */
tml = *localtime (&tl);
tmk = tml;
tk = tl;
status |= check_result (tk, tmk, tl, tml);
lt = localtime (&tl);
if (lt)
{
tmk = tml = *lt;
tk = tl;
status |= check_result (tk, tmk, tl, tml);
}
else
{
printf ("localtime (%ld) yields 0\n", (long) tl);
status = 1;
}
}
}
else
@@ -403,6 +523,6 @@ main (argc, argv)
/*
Local Variables:
compile-command: "gcc -DDEBUG=1 -Wall -O -g mktime.c -o mktime"
compile-command: "gcc -DDEBUG -DHAVE_LIMITS_H -DSTDC_HEADERS -Wall -W -O -g mktime.c -o mktime"
End:
*/

View File

@@ -1,5 +1,5 @@
/* modechange.c -- file mode manipulation
Copyright (C) 1989, 1990 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
@@ -55,7 +55,58 @@ char *malloc ();
#define isodigit(c) ((c) >= '0' && (c) <= '7')
static int oatoi ();
/* Return a positive integer containing the value of the ASCII
octal number S. If S is not an octal number, return -1. */
static int
oatoi (const char *s)
{
register int i;
if (*s == 0)
return -1;
for (i = 0; isodigit (*s); ++s)
i = i * 8 + *s - '0';
if (*s)
return -1;
return i;
}
/* Create a mode_change entry with the specified `=ddd'-style
mode change operation, where NEW_MODE is `ddd'. Return the
new entry, or NULL upon failure. */
static struct mode_change *
make_node_op_equals (int new_mode)
{
struct mode_change *p;
p = talloc (struct mode_change);
if (p == NULL)
return p;
p->next = NULL;
p->op = '=';
p->flags = 0;
p->value = new_mode;
p->affected = 07777; /* Affect all permissions. */
return p;
}
/* Append entry E to the end of the link list with the specified
HEAD and TAIL. */
static void
mode_append_entry (struct mode_change **head,
struct mode_change **tail,
struct mode_change *e)
{
if (*head == NULL)
*head = *tail = e;
else
{
(*tail)->next = e;
*tail = e;
}
}
/* Return a linked list of file mode change operations created from
MODE_STRING, an ASCII string that contains either an octal number
@@ -71,46 +122,47 @@ static int oatoi ();
return MODE_MEMORY_EXHAUSTED if there is insufficient memory. */
struct mode_change *
mode_compile (mode_string, masked_ops)
const char *mode_string;
unsigned masked_ops;
mode_compile (const char *mode_string, unsigned int masked_ops)
{
struct mode_change *head; /* First element of the linked list. */
struct mode_change *change; /* An element of the linked list. */
struct mode_change *tail; /* An element of the linked list. */
int i; /* General purpose temporary. */
int umask_value; /* The umask value (surprise). */
unsigned short affected_bits; /* Which bits in the mode are operated on. */
unsigned short affected_masked; /* `affected_bits' modified by umask. */
unsigned ops_to_mask; /* Operators to actually use umask on. */
head = NULL;
#ifdef lint
tail = NULL;
#endif
i = oatoi (mode_string);
if (i >= 0)
{
struct mode_change *p;
if (i > 07777)
return MODE_INVALID;
head = talloc (struct mode_change);
if (head == NULL)
p = make_node_op_equals (i);
if (p == NULL)
return MODE_MEMORY_EXHAUSTED;
head->next = NULL;
head->op = '=';
head->flags = 0;
head->value = i;
head->affected = 07777; /* Affect all permissions. */
mode_append_entry (&head, &tail, p);
return head;
}
umask_value = umask (0);
umask (umask_value); /* Restore the old value. */
head = NULL;
#ifdef lint
change = NULL;
#endif
--mode_string;
/* One loop iteration for each "ugoa...=+-rwxXstugo...[=+-rwxXstugo...]". */
do
{
/* Which bits in the mode are operated on. */
unsigned short affected_bits = 0;
/* `affected_bits' modified by umask. */
unsigned short affected_masked;
/* Operators to actually use umask on. */
unsigned ops_to_mask = 0;
int who_specified_p;
affected_bits = 0;
ops_to_mask = 0;
/* Turn on all the bits in `affected_bits' for each group given. */
@@ -136,37 +188,39 @@ mode_compile (mode_string, masked_ops)
no_more_affected:
/* If none specified, affect all bits, except perhaps those
set in the umask. */
if (affected_bits == 0)
if (affected_bits)
who_specified_p = 1;
else
{
who_specified_p = 0;
affected_bits = 07777;
ops_to_mask = masked_ops;
}
while (*mode_string == '=' || *mode_string == '+' || *mode_string == '-')
{
/* Add the element to the tail of the list, so the operations
are performed in the correct order. */
if (head == NULL)
struct mode_change *change = talloc (struct mode_change);
if (change == NULL)
{
head = talloc (struct mode_change);
if (head == NULL)
return MODE_MEMORY_EXHAUSTED;
change = head;
}
else
{
change->next = talloc (struct mode_change);
if (change->next == NULL)
{
mode_free (change);
return MODE_MEMORY_EXHAUSTED;
}
change = change->next;
mode_free (head);
return MODE_MEMORY_EXHAUSTED;
}
change->next = NULL;
change->op = *mode_string; /* One of "=+-". */
affected_masked = affected_bits;
/* Per the Single Unix Spec, if `who' is not specified and the
`=' operator is used, then clear all the bits first. */
if (!who_specified_p &&
ops_to_mask & (*mode_string == '=' ? MODE_MASK_EQUALS : 0))
{
struct mode_change *p = make_node_op_equals (0);
if (p == NULL)
return MODE_MEMORY_EXHAUSTED;
mode_append_entry (&head, &tail, p);
}
if (ops_to_mask & (*mode_string == '=' ? MODE_MASK_EQUALS
: *mode_string == '+' ? MODE_MASK_PLUS
: MODE_MASK_MINUS))
@@ -175,6 +229,10 @@ mode_compile (mode_string, masked_ops)
change->value = 0;
change->flags = 0;
/* Add the element to the tail of the list, so the operations
are performed in the correct order. */
mode_append_entry (&head, &tail, change);
/* Set `value' according to the bits set in `affected_masked'. */
for (++mode_string;; ++mode_string)
switch (*mode_string)
@@ -236,15 +294,39 @@ invalid:
return MODE_INVALID;
}
/* Return a file mode change operation that sets permissions to match those
of REF_FILE. Return MODE_BAD_REFERENCE if REF_FILE can't be accessed. */
struct mode_change *
mode_create_from_ref (const char *ref_file)
{
struct mode_change *change; /* the only change element */
struct stat ref_stats;
if (stat (ref_file, &ref_stats))
return MODE_BAD_REFERENCE;
change = talloc (struct mode_change);
if (change == NULL)
return MODE_MEMORY_EXHAUSTED;
change->op = '=';
change->flags = 0;
change->affected = 07777;
change->value = ref_stats.st_mode;
change->next = NULL;
return change;
}
/* Return file mode OLDMODE, adjusted as indicated by the list of change
operations CHANGES. If OLDMODE is a directory, the type `X'
change affects it even if no execute bits were set in OLDMODE.
The returned value has the S_IFMT bits cleared. */
unsigned short
mode_adjust (oldmode, changes)
unsigned oldmode;
const struct mode_change *changes;
mode_adjust (unsigned int oldmode, const struct mode_change *changes)
{
unsigned short newmode; /* The adjusted mode and one operand. */
unsigned short value; /* The other operand. */
@@ -309,8 +391,7 @@ mode_adjust (oldmode, changes)
CHANGES. */
void
mode_free (changes)
register struct mode_change *changes;
mode_free (register struct mode_change *changes)
{
register struct mode_change *next;
@@ -321,21 +402,3 @@ mode_free (changes)
changes = next;
}
}
/* Return a positive integer containing the value of the ASCII
octal number S. If S is not an octal number, return -1. */
static int
oatoi (s)
char *s;
{
register int i;
if (*s == 0)
return -1;
for (i = 0; isodigit (*s); ++s)
i = i * 8 + *s - '0';
if (*s)
return -1;
return i;
}

View File

@@ -1,5 +1,5 @@
/* modechange.h -- definitions for file mode manipulation
Copyright (C) 1989, 1990 Free Software Foundation, Inc.
Copyright (C) 1989, 1990, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,14 +17,17 @@
/* Masks for the `flags' field in a `struct mode_change'. */
#if ! defined MODECHANGE_H_
# define MODECHANGE_H_
/* Affect the execute bits only if at least one execute bit is set already,
or if the file is a directory. */
#define MODE_X_IF_ANY_X 01
# define MODE_X_IF_ANY_X 01
/* If set, copy some existing permissions for u, g, or o onto the other two.
Which of u, g, or o is copied is determined by which bits are set in the
`value' field. */
#define MODE_COPY_EXISTING 02
# define MODE_COPY_EXISTING 02
struct mode_change
{
@@ -36,22 +39,27 @@ struct mode_change
};
/* Masks for mode_compile argument. */
#define MODE_MASK_EQUALS 1
#define MODE_MASK_PLUS 2
#define MODE_MASK_MINUS 4
# define MODE_MASK_EQUALS 1
# define MODE_MASK_PLUS 2
# define MODE_MASK_MINUS 4
# define MODE_MASK_ALL (MODE_MASK_EQUALS | MODE_MASK_PLUS | MODE_MASK_MINUS)
/* Error return values for mode_compile. */
#define MODE_INVALID (struct mode_change *) 0
#define MODE_MEMORY_EXHAUSTED (struct mode_change *) 1
# define MODE_INVALID (struct mode_change *) 0
# define MODE_MEMORY_EXHAUSTED (struct mode_change *) 1
# define MODE_BAD_REFERENCE (struct mode_change *) 2
#ifndef __P
# if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
# define __P(Args) Args
# else
# define __P(Args) ()
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
#endif
struct mode_change *mode_compile __P ((const char *, unsigned));
unsigned short mode_adjust __P ((unsigned, const struct mode_change *));
void mode_free __P ((struct mode_change *));
struct mode_change *mode_compile PARAMS ((const char *, unsigned));
struct mode_change *mode_create_from_ref PARAMS ((const char *));
unsigned short mode_adjust PARAMS ((unsigned, const struct mode_change *));
void mode_free PARAMS ((struct mode_change *));
#endif

View File

@@ -1,5 +1,5 @@
/* mountlist.c -- return a list of mounted filesystems
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1997, 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
@@ -15,8 +15,8 @@
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>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
@@ -24,89 +24,115 @@
#include "mountlist.h"
#ifdef STDC_HEADERS
#include <stdlib.h>
# include <stdlib.h>
#else
void free ();
#endif
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
#include <string.h>
# include <string.h>
#else
#include <strings.h>
# include <strings.h>
#endif
#ifndef strstr
char *strstr ();
#endif
char *xmalloc ();
char *xrealloc ();
char *xstrdup ();
void error ();
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#if HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#if defined (MOUNTED_GETFSSTAT) /* __alpha running OSF_1 */
# include <sys/mount.h>
# include <sys/fs_types.h>
# include <sys/mount.h>
# include <sys/fs_types.h>
#endif /* MOUNTED_GETFSSTAT */
#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
#include <mntent.h>
#if !defined(MOUNTED)
# include <mntent.h>
# if !defined(MOUNTED)
# if defined(MNT_MNTTAB) /* HP-UX. */
# define MOUNTED MNT_MNTTAB
# define MOUNTED MNT_MNTTAB
# endif
# if defined(MNTTABNAME) /* Dynix. */
# define MOUNTED MNTTABNAME
# define MOUNTED MNTTABNAME
# endif
#endif
# endif
#endif
#ifdef MOUNTED_GETMNTINFO /* 4.4BSD. */
#include <sys/mount.h>
# include <sys/mount.h>
#endif
#ifdef MOUNTED_GETMNT /* Ultrix. */
#include <sys/mount.h>
#include <sys/fs_types.h>
# include <sys/mount.h>
# include <sys/fs_types.h>
#endif
#ifdef MOUNTED_FREAD /* SVR2. */
#include <mnttab.h>
# include <mnttab.h>
#endif
#ifdef MOUNTED_FREAD_FSTYP /* SVR3. */
#include <mnttab.h>
#include <sys/fstyp.h>
#include <sys/statfs.h>
# include <mnttab.h>
# include <sys/fstyp.h>
# include <sys/statfs.h>
#endif
#ifdef MOUNTED_LISTMNTENT
#include <mntent.h>
# include <mntent.h>
#endif
#ifdef MOUNTED_GETMNTENT2 /* SVR4. */
#include <sys/mnttab.h>
# include <sys/mnttab.h>
#endif
#ifdef MOUNTED_VMOUNT /* AIX. */
#include <fshelp.h>
#include <sys/vfs.h>
# include <fshelp.h>
# include <sys/vfs.h>
#endif
#ifdef DOLPHIN
/* So special that it's not worth putting this in autoconf. */
#undef MOUNTED_FREAD_FSTYP
#define MOUNTED_GETMNTTBL
# undef MOUNTED_FREAD_FSTYP
# define MOUNTED_GETMNTTBL
#endif
#if HAVE_SYS_MNTENT_H
/* This is to get MNTOPT_IGNORE on e.g. SVR4. */
# include <sys/mntent.h>
#endif
#if defined (MNTOPT_IGNORE) && defined (HAVE_HASMNTOPT)
# define MNT_IGNORE(M) hasmntopt ((M), MNTOPT_IGNORE)
#else
# define MNT_IGNORE(M) 0
#endif
#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
/* Return the value of the hexadecimal number represented by CP.
No prefix (like '0x') or suffix (like 'h') is expected to be
part of CP. */
/* FIXME: this can overflow */
static int
xatoi (cp)
char *cp;
xatoi (char *cp)
{
int val;
@@ -127,107 +153,120 @@ xatoi (cp)
}
#endif /* MOUNTED_GETMNTENT1. */
#if defined (MOUNTED_GETMNTINFO) && !defined (__NetBSD__)
#if MOUNTED_GETMNTINFO
# if ! HAVE_F_FSTYPENAME_IN_STATFS
static char *
fstype_to_string (t)
short t;
fstype_to_string (short t)
{
switch (t)
{
#ifdef MOUNT_PC
# ifdef MOUNT_PC
case MOUNT_PC:
return "pc";
#endif
#ifdef MOUNT_MFS
# endif
# ifdef MOUNT_MFS
case MOUNT_MFS:
return "mfs";
#endif
#ifdef MOUNT_LO
# endif
# ifdef MOUNT_LO
case MOUNT_LO:
return "lo";
#endif
#ifdef MOUNT_TFS
# endif
# ifdef MOUNT_TFS
case MOUNT_TFS:
return "tfs";
#endif
#ifdef MOUNT_TMP
# endif
# ifdef MOUNT_TMP
case MOUNT_TMP:
return "tmp";
#endif
#ifdef MOUNT_UFS
# endif
# ifdef MOUNT_UFS
case MOUNT_UFS:
return "ufs" ;
#endif
#ifdef MOUNT_NFS
# endif
# ifdef MOUNT_NFS
case MOUNT_NFS:
return "nfs" ;
#endif
#ifdef MOUNT_MSDOS
# endif
# ifdef MOUNT_MSDOS
case MOUNT_MSDOS:
return "msdos" ;
#endif
#ifdef MOUNT_LFS
# endif
# ifdef MOUNT_LFS
case MOUNT_LFS:
return "lfs" ;
#endif
#ifdef MOUNT_LOFS
# endif
# ifdef MOUNT_LOFS
case MOUNT_LOFS:
return "lofs" ;
#endif
#ifdef MOUNT_FDESC
# endif
# ifdef MOUNT_FDESC
case MOUNT_FDESC:
return "fdesc" ;
#endif
#ifdef MOUNT_PORTAL
# endif
# ifdef MOUNT_PORTAL
case MOUNT_PORTAL:
return "portal" ;
#endif
#ifdef MOUNT_NULL
# endif
# ifdef MOUNT_NULL
case MOUNT_NULL:
return "null" ;
#endif
#ifdef MOUNT_UMAP
# endif
# ifdef MOUNT_UMAP
case MOUNT_UMAP:
return "umap" ;
#endif
#ifdef MOUNT_KERNFS
# endif
# ifdef MOUNT_KERNFS
case MOUNT_KERNFS:
return "kernfs" ;
#endif
#ifdef MOUNT_PROCFS
# endif
# ifdef MOUNT_PROCFS
case MOUNT_PROCFS:
return "procfs" ;
#endif
#ifdef MOUNT_AFS
# endif
# ifdef MOUNT_AFS
case MOUNT_AFS:
return "afs" ;
#endif
#ifdef MOUNT_CD9660
# endif
# ifdef MOUNT_CD9660
case MOUNT_CD9660:
return "cd9660" ;
#endif
#ifdef MOUNT_UNION
# endif
# ifdef MOUNT_UNION
case MOUNT_UNION:
return "union" ;
#endif
#ifdef MOUNT_DEVFS
# endif
# ifdef MOUNT_DEVFS
case MOUNT_DEVFS:
return "devfs" ;
#endif
#ifdef MOUNT_EXT2FS
# endif
# ifdef MOUNT_EXT2FS
case MOUNT_EXT2FS:
return "ext2fs" ;
#endif
# endif
default:
return "?";
}
}
# endif /* ! HAVE_F_FSTYPENAME_IN_STATFS */
/* __NetBSD__ || BSD_NET2 || __OpenBSD__ */
static char *
fsp_to_string (const struct statfs *fsp)
{
# if defined HAVE_F_FSTYPENAME_IN_STATFS
return fsp->f_fstypename;
# else
return fstype_to_string (fsp->f_type);
# endif
}
#endif /* MOUNTED_GETMNTINFO */
#ifdef MOUNTED_VMOUNT /* AIX. */
static char *
fstype_to_string (t)
int t;
fstype_to_string (int t)
{
struct vfs_ent *e;
@@ -242,22 +281,14 @@ fstype_to_string (t)
/* Return a list of the currently mounted filesystems, or NULL on error.
Add each entry to the tail of the list so that they stay in order.
If NEED_FS_TYPE is nonzero, ensure that the filesystem type fields in
the returned list are valid. Otherwise, they might not be.
If ALL_FS is zero, do not return entries for filesystems that
are automounter (dummy) entries. */
the returned list are valid. Otherwise, they might not be. */
struct mount_entry *
read_filesystem_list (need_fs_type, all_fs)
int need_fs_type, all_fs;
read_filesystem_list (int need_fs_type)
{
struct mount_entry *mount_list;
struct mount_entry *me;
struct mount_entry *mtail;
/* Start the list off with a dummy entry. */
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_next = NULL;
mount_list = mtail = me;
struct mount_entry **mtail = &mount_list;
#ifdef MOUNTED_LISTMNTENT
{
@@ -272,18 +303,17 @@ read_filesystem_list (need_fs_type, all_fs)
if(listmntent(&mntlist, KMTAB, NULL, NULL) < 0)
return NULL;
p = mntlist;
while(p){
for (p = mntlist; p; p = p->next) {
mnt = p->ment;
me = (struct mount_entry*) xmalloc(sizeof (struct mount_entry));
me->me_devname = xstrdup(mnt->mnt_fsname);
me->me_mountdir = xstrdup(mnt->mnt_dir);
me->me_type = xstrdup(mnt->mnt_type);
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
me->me_dev = -1;
me->me_next = NULL;
mtail->me_next = me;
mtail = me;
p = p->next;
*mtail = me;
mtail = &me->me_next;
}
freemntlist(mntlist);
}
@@ -302,14 +332,12 @@ read_filesystem_list (need_fs_type, all_fs)
while ((mnt = getmntent (fp)))
{
if (!all_fs && (!strcmp (mnt->mnt_type, "ignore")
|| !strcmp (mnt->mnt_type, "auto")))
continue;
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (mnt->mnt_fsname);
me->me_mountdir = xstrdup (mnt->mnt_dir);
me->me_type = xstrdup (mnt->mnt_type);
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
devopt = strstr (mnt->mnt_opts, "dev=");
if (devopt)
{
@@ -320,15 +348,14 @@ read_filesystem_list (need_fs_type, all_fs)
}
else
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_next = NULL;
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
*mtail = me;
mtail = &me->me_next;
}
if (endmntent (fp) == 0)
return NULL;
goto free_then_fail;
}
#endif /* MOUNTED_GETMNTENT1. */
@@ -340,23 +367,21 @@ read_filesystem_list (need_fs_type, all_fs)
entries = getmntinfo (&fsp, MNT_NOWAIT);
if (entries < 0)
return NULL;
while (entries-- > 0)
for (; entries-- > 0; fsp++)
{
char *fs_type = fsp_to_string (fsp);
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (fsp->f_mntfromname);
me->me_mountdir = xstrdup (fsp->f_mntonname);
#ifdef __NetBSD__
me->me_type = xstrdup (fsp->f_fstypename);
#else
me->me_type = fstype_to_string (fsp->f_type);
#endif
me->me_type = fs_type;
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_next = NULL;
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
fsp++;
*mtail = me;
mtail = &me->me_next;
}
}
#endif /* MOUNTED_GETMNTINFO */
@@ -367,22 +392,24 @@ read_filesystem_list (need_fs_type, all_fs)
int val;
struct fs_data fsd;
while ((val = getmnt (&offset, &fsd, sizeof (fsd), NOSTAT_MANY,
(char *) 0)) > 0)
while (errno = 0,
0 < (val = getmnt (&offset, &fsd, sizeof (fsd), NOSTAT_MANY,
(char *) 0)))
{
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (fsd.fd_req.devname);
me->me_mountdir = xstrdup (fsd.fd_req.path);
me->me_type = gt_names[fsd.fd_req.fstype];
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
me->me_dev = fsd.fd_req.dev;
me->me_next = NULL;
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
*mtail = me;
mtail = &me->me_next;
}
if (val < 0)
return NULL;
goto free_then_fail;
}
#endif /* MOUNTED_GETMNT. */
@@ -411,12 +438,13 @@ read_filesystem_list (need_fs_type, all_fs)
me->me_devname = xstrdup (stats[counter].f_mntfromname);
me->me_mountdir = xstrdup (stats[counter].f_mntonname);
me->me_type = mnt_names[stats[counter].f_type];
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_next = NULL;
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
*mtail = me;
mtail = &me->me_next;
}
free (stats);
@@ -436,17 +464,17 @@ read_filesystem_list (need_fs_type, all_fs)
while (fread (&mnt, sizeof mnt, 1, fp) > 0)
{
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
#ifdef GETFSTYP /* SVR3. */
# ifdef GETFSTYP /* SVR3. */
me->me_devname = xstrdup (mnt.mt_dev);
#else
# else
me->me_devname = xmalloc (strlen (mnt.mt_dev) + 6);
strcpy (me->me_devname, "/dev/");
strcpy (me->me_devname + 5, mnt.mt_dev);
#endif
# endif
me->me_mountdir = xstrdup (mnt.mt_filsys);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_type = "";
#ifdef GETFSTYP /* SVR3. */
# ifdef GETFSTYP /* SVR3. */
if (need_fs_type)
{
struct statfs fsd;
@@ -456,16 +484,25 @@ read_filesystem_list (need_fs_type, all_fs)
&& sysfs (GETFSTYP, fsd.f_fstyp, typebuf) != -1)
me->me_type = xstrdup (typebuf);
}
#endif
me->me_next = NULL;
# endif
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
*mtail = me;
mtail = &me->me_next;
}
if (ferror (fp))
{
int saved_errno = errno;
fclose (fp);
errno = saved_errno;
goto free_then_fail;
}
if (fclose (fp) == EOF)
return NULL;
goto free_then_fail;
}
#endif /* MOUNTED_FREAD || MOUNTED_FREAD_FSTYP. */
@@ -478,12 +515,13 @@ read_filesystem_list (need_fs_type, all_fs)
me->me_devname = xstrdup ( (*ent)->mt_resource);
me->me_mountdir = xstrdup( (*ent)->mt_directory);
me->me_type = xstrdup ((*ent)->mt_fstype);
me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_next = NULL;
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
*mtail = me;
mtail = &me->me_next;
}
endmnttbl();
}
@@ -495,29 +533,69 @@ read_filesystem_list (need_fs_type, all_fs)
char *table = MNTTAB;
FILE *fp;
int ret;
int lockfd = -1;
# if defined F_RDLCK && defined F_SETLKW
/* MNTTAB_LOCK is a macro name of our own invention; it's not present in
e.g. Solaris 2.6. If the SVR4 folks ever define a macro
for this file name, we should use their macro name instead.
(Why not just lock MNTTAB directly? We don't know.) */
# ifndef MNTTAB_LOCK
# define MNTTAB_LOCK "/etc/.mnttab.lock"
# endif
lockfd = open (MNTTAB_LOCK, O_RDONLY);
if (0 <= lockfd)
{
struct flock flock;
flock.l_type = F_RDLCK;
flock.l_whence = SEEK_SET;
flock.l_start = 0;
flock.l_len = 0;
while (fcntl (lockfd, F_SETLKW, &flock) == -1)
if (errno != EINTR)
{
int saved_errno = errno;
close (lockfd);
errno = saved_errno;
return NULL;
}
}
else if (errno != ENOENT)
return NULL;
# endif
errno = 0;
fp = fopen (table, "r");
if (fp == NULL)
return NULL;
while ((ret = getmntent (fp, &mnt)) == 0)
ret = errno;
else
{
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (mnt.mnt_special);
me->me_mountdir = xstrdup (mnt.mnt_mountp);
me->me_type = xstrdup (mnt.mnt_fstype);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_next = NULL;
while ((ret = getmntent (fp, &mnt)) == 0)
{
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (mnt.mnt_special);
me->me_mountdir = xstrdup (mnt.mnt_mountp);
me->me_type = xstrdup (mnt.mnt_fstype);
me->me_dummy = MNT_IGNORE (&mnt) != 0;
me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
/* Add to the linked list. */
*mtail = me;
mtail = &me->me_next;
}
ret = fclose (fp) == EOF ? errno : 0 < ret ? 0 : -1;
}
if (ret > 0)
return NULL;
if (fclose (fp) == EOF)
return NULL;
if (0 <= lockfd && close (lockfd) != 0)
ret = errno;
if (0 <= ret)
{
errno = ret;
goto free_then_fail;
}
}
#endif /* MOUNTED_GETMNTENT2. */
@@ -543,6 +621,7 @@ read_filesystem_list (need_fs_type, all_fs)
{
char *host, *path;
me->me_remote = 1;
/* Prepend the remote pathname. */
host = thisent + vmp->vmt_data[VMT_HOSTNAME].vmt_off;
path = thisent + vmp->vmt_data[VMT_OBJECT].vmt_off;
@@ -553,25 +632,43 @@ read_filesystem_list (need_fs_type, all_fs)
}
else
{
me->me_remote = 0;
me->me_devname = xstrdup (thisent +
vmp->vmt_data[VMT_OBJECT].vmt_off);
}
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);
me->me_dev = (dev_t) -1; /* vmt_fsid might be the info we want. */
me->me_next = NULL;
/* Add to the linked list. */
mtail->me_next = me;
mtail = me;
*mtail = me;
mtail = &me->me_next;
}
free (entries);
}
#endif /* MOUNTED_VMOUNT. */
/* Free the dummy head. */
me = mount_list;
mount_list = mount_list->me_next;
free (me);
*mtail = NULL;
return mount_list;
free_then_fail:
{
int saved_errno = errno;
*mtail = NULL;
while (mount_list)
{
me = mount_list->me_next;
free (mount_list->me_devname);
free (mount_list->me_mountdir);
/* FIXME: me_type is not always malloced. */
free (mount_list);
mount_list = me;
}
errno = saved_errno;
return NULL;
}
}

View File

@@ -1,5 +1,5 @@
/* mountlist.h -- declarations for list of mounted filesystems
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 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
@@ -22,11 +22,26 @@ struct mount_entry
char *me_mountdir; /* Mount point directory pathname. */
char *me_type; /* "nfs", "4.2", etc. */
dev_t me_dev; /* Device number of me_mountdir. */
unsigned int me_dummy : 1; /* Nonzero for dummy filesystems. */
unsigned int me_remote : 1; /* Nonzero for remote fileystems. */
struct mount_entry *me_next;
};
#if __STDC__
struct mount_entry *read_filesystem_list (int need_fs_type, int all_fs);
#else
struct mount_entry *read_filesystem_list ();
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
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"))
#endif
#ifndef ME_REMOTE
# define ME_REMOTE(fs_name, fs_type) (strchr (fs_name, ':') != 0)
#endif

View File

@@ -1,19 +1,23 @@
/* obstack.c - subroutines used implicitly by object stack macros
Copyright (C) 1988,89,90,91,92,93,94,96 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 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.
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.
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.
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. */
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 "obstack.h"
@@ -52,7 +56,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Determine default alignment. */
struct fooalign {char x; double d;};
#define DEFAULT_ALIGNMENT \
((PTR_INT_TYPE) ((char *)&((struct fooalign *) 0)->d - (char *)0))
((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. */
@@ -67,6 +71,28 @@ union fooround {long x; double d;};
#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
`print_and_abort'. */
#if defined (__STDC__) && __STDC__
static void print_and_abort (void);
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
#else
static void print_and_abort ();
void (*obstack_alloc_failed_handler) () = print_and_abort;
#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
int obstack_exit_failure = EXIT_FAILURE;
/* The non-GNU-C macros copy the obstack into this global variable
to avoid multiple evaluation. */
@@ -78,6 +104,20 @@ 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) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
#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) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
@@ -90,6 +130,7 @@ struct obstack *_obstack;
else \
(*(void (*) ()) (h)->freefun) ((old_chunk)); \
} while (0)
#endif
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
@@ -106,10 +147,15 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
struct obstack *h;
int size;
int alignment;
#if defined (__STDC__) && __STDC__
POINTER (*chunkfun) (long);
void (*freefun) (void *);
#else
POINTER (*chunkfun) ();
void (*freefun) ();
#endif
{
register struct _obstack_chunk* chunk; /* points to new chunk */
register struct _obstack_chunk *chunk; /* points to new chunk */
if (alignment == 0)
alignment = DEFAULT_ALIGNMENT;
@@ -130,25 +176,27 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
size = 4096 - extra;
}
#if defined (__STDC__) && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
#endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->use_extra_arg = 0;
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
if (!chunk)
{
h->alloc_failed = 1;
return 0;
}
h->alloc_failed = 0;
(*obstack_alloc_failed_handler) ();
h->next_free = h->object_base = chunk->contents;
h->chunk_limit = chunk->limit
= (char *) chunk + h->chunk_size;
chunk->prev = 0;
/* The initial chunk now contains no empty object. */
h->maybe_empty_object = 0;
h->alloc_failed = 0;
return 1;
}
@@ -157,11 +205,16 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
struct obstack *h;
int size;
int alignment;
#if defined (__STDC__) && __STDC__
POINTER (*chunkfun) (POINTER, long);
void (*freefun) (POINTER, POINTER);
#else
POINTER (*chunkfun) ();
void (*freefun) ();
#endif
POINTER arg;
{
register struct _obstack_chunk* chunk; /* points to new chunk */
register struct _obstack_chunk *chunk; /* points to new chunk */
if (alignment == 0)
alignment = DEFAULT_ALIGNMENT;
@@ -182,8 +235,13 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
size = 4096 - extra;
}
#if defined(__STDC__) && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
#endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->extra_arg = arg;
@@ -191,17 +249,14 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
if (!chunk)
{
h->alloc_failed = 1;
return 0;
}
h->alloc_failed = 0;
(*obstack_alloc_failed_handler) ();
h->next_free = h->object_base = chunk->contents;
h->chunk_limit = chunk->limit
= (char *) chunk + h->chunk_size;
chunk->prev = 0;
/* The initial chunk now contains no empty object. */
h->maybe_empty_object = 0;
h->alloc_failed = 0;
return 1;
}
@@ -216,8 +271,8 @@ _obstack_newchunk (h, length)
struct obstack *h;
int length;
{
register struct _obstack_chunk* old_chunk = h->chunk;
register struct _obstack_chunk* new_chunk;
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;
@@ -231,11 +286,7 @@ _obstack_newchunk (h, length)
/* Allocate and initialize the new chunk. */
new_chunk = CALL_CHUNKFUN (h, new_size);
if (!new_chunk)
{
h->alloc_failed = 1;
return;
}
h->alloc_failed = 0;
(*obstack_alloc_failed_handler) ();
h->chunk = new_chunk;
new_chunk->prev = old_chunk;
new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
@@ -290,14 +341,14 @@ _obstack_allocated_p (h, obj)
struct obstack *h;
POINTER obj;
{
register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk* plp; /* point to previous chunk if any */
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk *plp; /* point to previous chunk if any */
lp = (h)->chunk;
/* We use >= rather than > since the object cannot be exactly at
the beginning of the chunk but might be an empty object exactly
at the end of an adjacent chunk. */
while (lp != 0 && ((POINTER)lp >= obj || (POINTER)(lp)->limit < obj))
at the end of an adjacent chunk. */
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
{
plp = lp->prev;
lp = plp;
@@ -318,14 +369,14 @@ _obstack_free (h, obj)
struct obstack *h;
POINTER obj;
{
register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk* plp; /* point to previous chunk if any */
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk *plp; /* point to previous chunk if any */
lp = h->chunk;
/* We use >= because there cannot be an object at the beginning of a chunk.
But there can be an empty object at that address
at the end of another chunk. */
while (lp != 0 && ((POINTER)lp >= obj || (POINTER)(lp)->limit < obj))
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
{
plp = lp->prev;
CALL_FREEFUN (h, lp);
@@ -336,7 +387,7 @@ _obstack_free (h, obj)
}
if (lp)
{
h->object_base = h->next_free = (char *)(obj);
h->object_base = h->next_free = (char *) (obj);
h->chunk_limit = lp->limit;
h->chunk = lp;
}
@@ -352,14 +403,14 @@ obstack_free (h, obj)
struct obstack *h;
POINTER obj;
{
register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk* plp; /* point to previous chunk if any */
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk *plp; /* point to previous chunk if any */
lp = h->chunk;
/* We use >= because there cannot be an object at the beginning of a chunk.
But there can be an empty object at that address
at the end of another chunk. */
while (lp != 0 && ((POINTER)lp >= obj || (POINTER)(lp)->limit < obj))
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
{
plp = lp->prev;
CALL_FREEFUN (h, lp);
@@ -370,7 +421,7 @@ obstack_free (h, obj)
}
if (lp)
{
h->object_base = h->next_free = (char *)(obj);
h->object_base = h->next_free = (char *) (obj);
h->chunk_limit = lp->limit;
h->chunk = lp;
}
@@ -379,6 +430,39 @@ obstack_free (h, obj)
abort ();
}
int
_obstack_memory_used (h)
struct obstack *h;
{
register struct _obstack_chunk* lp;
register int nbytes = 0;
for (lp = h->chunk; lp != 0; lp = lp->prev)
{
nbytes += lp->limit - (char *) lp;
}
return nbytes;
}
/* Define the error handler. */
#ifndef _
# ifdef HAVE_LIBINTL_H
# include <libintl.h>
# ifndef _
# define _(Str) gettext (Str)
# endif
# else
# define _(Str) (Str)
# endif
#endif
static void
print_and_abort ()
{
fputs (_("memory exhausted\n"), stderr);
exit (obstack_exit_failure);
}
#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. */
@@ -417,6 +501,13 @@ int (obstack_room) (obstack)
return obstack_room (obstack);
}
int (obstack_make_room) (obstack, length)
struct obstack *obstack;
int length;
{
return obstack_make_room (obstack, length);
}
void (obstack_grow) (obstack, pointer, length)
struct obstack *obstack;
POINTER pointer;

View File

@@ -1,19 +1,25 @@
/* obstack.h - object stack macros
Copyright (C) 1988,89,90,91,92,93,94,96 Free Software Foundation, Inc.
Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
the C library, however. The master source lives in /gd/gnu/lib.
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.
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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
This 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. */
/* Summary:
@@ -100,28 +106,23 @@ Summary:
/* Don't do the contents of this file more than once. */
#ifndef __OBSTACK_H__
#define __OBSTACK_H__
#ifndef _OBSTACK_H
#define _OBSTACK_H 1
#ifdef HAVE_CONFIG_H
# include <config.h>
#ifdef __cplusplus
extern "C" {
#endif
#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy)
# define bcopy(from, to, len) memcpy ((to), (from), (len))
#endif
/* We use subtraction of (char *)0 instead of casting to int
/* We use subtraction of (char *) 0 instead of casting to int
because on word-addressable machines a simple cast to int
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
@@ -141,18 +142,23 @@ Summary:
#include <stddef.h>
#endif
#include <sys/types.h>
#ifndef HAVE_PTRDIFF_T
# define ptrdiff_t off_t
#endif
#if defined (__STDC__) && __STDC__
#define PTR_INT_TYPE ptrdiff_t
#else
#define PTR_INT_TYPE long
#endif
#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
#endif
struct _obstack_chunk /* Lives at front of each chunk. */
{
char *limit; /* 1 past end of this chunk */
@@ -163,7 +169,7 @@ struct _obstack_chunk /* Lives at front of each chunk. */
struct obstack /* control current object in current chunk */
{
long chunk_size; /* preferred size to allocate chunks in */
struct _obstack_chunk* chunk; /* address of current struct obstack_chunk */
struct _obstack_chunk *chunk; /* address of current struct obstack_chunk */
char *object_base; /* address of object we are building */
char *next_free; /* where to add next char to current object */
char *chunk_limit; /* address of char after current chunk */
@@ -175,7 +181,7 @@ struct obstack /* control current object in current chunk */
but having prototypes here quiets -Wstrict-prototypes. */
struct _obstack_chunk *(*chunkfun) (void *, long);
void (*freefun) (void *, struct _obstack_chunk *);
void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
#else
struct _obstack_chunk *(*chunkfun) (); /* User's fcn to allocate a chunk. */
void (*freefun) (); /* User's function to free a chunk. */
@@ -186,7 +192,9 @@ struct obstack /* control current object in current chunk */
chunk contains a zero-length object. This
prevents freeing the chunk if we allocate
a bigger chunk to replace it. */
unsigned alloc_failed:1; /* chunk alloc func returned 0 */
unsigned alloc_failed:1; /* No longer used, as we now call the failed
handler on error, but retained for binary
compatibility. */
};
/* Declare the external functions we use; they are in obstack.c. */
@@ -199,11 +207,13 @@ extern int _obstack_begin (struct obstack *, int, int,
extern int _obstack_begin_1 (struct obstack *, int, int,
void *(*) (void *, long),
void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
#else
extern void _obstack_newchunk ();
extern void _obstack_free ();
extern int _obstack_begin ();
extern int _obstack_begin_1 ();
extern int _obstack_memory_used ();
#endif
#if defined (__STDC__) && __STDC__
@@ -234,6 +244,7 @@ void * obstack_finish (struct obstack *obstack);
int obstack_object_size (struct obstack *obstack);
int obstack_room (struct obstack *obstack);
void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
@@ -243,17 +254,30 @@ void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
int obstack_memory_used (struct obstack *obstack);
#endif /* __STDC__ */
/* Non-ANSI C cannot really support alternative functions for these macros,
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__
extern void (*obstack_alloc_failed_handler) (void);
#else
extern void (*obstack_alloc_failed_handler) ();
#endif
/* Exit value used when `print_and_abort' is used. */
extern int obstack_exit_failure;
/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
because a new chunk might be needed to hold the final size. */
#define obstack_base(h) ((h)->alloc_failed ? 0 : (h)->object_base)
#define obstack_base(h) ((h)->object_base)
/* Size for allocating ordinary chunks. */
@@ -261,7 +285,7 @@ int obstack_chunk_size (struct obstack *obstack);
/* Pointer to next byte not yet allocated in current chunk. */
#define obstack_next_free(h) ((h)->alloc_failed ? 0 : (h)->next_free)
#define obstack_next_free(h) ((h)->next_free)
/* Mask specifying low bits that should be clear in address of an object. */
@@ -273,25 +297,26 @@ int obstack_chunk_size (struct obstack *obstack);
#define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
#define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun), (arg))
(void *(*) (void *, long)) (chunkfun), \
(void (*) (void *, void *)) (freefun), (arg))
#define obstack_chunkfun(h, newchunkfun) \
((h) -> chunkfun = (struct _obstack_chunk *(*)(long)) (newchunkfun))
((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
#define obstack_freefun(h, newfreefun) \
((h) -> freefun = (void (*)(void *)) (newfreefun))
((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
#else
@@ -322,6 +347,8 @@ int obstack_chunk_size (struct obstack *obstack);
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
#define obstack_memory_used(h) _obstack_memory_used (h)
#if defined (__GNUC__) && defined (__STDC__) && __STDC__
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
@@ -339,7 +366,6 @@ int obstack_chunk_size (struct obstack *obstack);
#define obstack_object_size(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
__o->alloc_failed ? 0 : \
(unsigned) (__o->next_free - __o->object_base); })
#define obstack_room(OBSTACK) \
@@ -347,17 +373,27 @@ int obstack_chunk_size (struct obstack *obstack);
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->chunk_limit - __o->next_free); })
#define obstack_make_room(OBSTACK,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
(void) 0; })
#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) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->next_free + __len > __o->chunk_limit) \
_obstack_newchunk (__o, __len); \
if (!__o->alloc_failed) \
{ \
bcopy ((char *) (where), __o->next_free, __len); \
__o->next_free += __len; \
} \
_obstack_memcpy (__o->next_free, (char *) (where), __len); \
__o->next_free += __len; \
(void) 0; })
#define obstack_grow0(OBSTACK,where,length) \
@@ -366,12 +402,9 @@ __extension__ \
int __len = (length); \
if (__o->next_free + __len + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, __len + 1); \
if (!__o->alloc_failed) \
{ \
bcopy ((char *) (where), __o->next_free, __len); \
__o->next_free += __len; \
*(__o->next_free)++ = 0; \
} \
_obstack_memcpy (__o->next_free, (char *) (where), __len); \
__o->next_free += __len; \
*(__o->next_free)++ = 0; \
(void) 0; })
#define obstack_1grow(OBSTACK,datum) \
@@ -379,8 +412,7 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, 1); \
if (!__o->alloc_failed) \
*(__o->next_free)++ = (datum); \
*(__o->next_free)++ = (datum); \
(void) 0; })
/* These assume that the obstack alignment is good enough for pointers or ints,
@@ -392,8 +424,7 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (void *)); \
if (!__o->alloc_failed) \
*((void **)__o->next_free)++ = ((void *)datum); \
*((void **)__o->next_free)++ = ((void *)datum); \
(void) 0; })
#define obstack_int_grow(OBSTACK,datum) \
@@ -401,12 +432,11 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (int)); \
if (!__o->alloc_failed) \
*((int *)__o->next_free)++ = ((int)datum); \
*((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) \
__extension__ \
@@ -414,8 +444,7 @@ __extension__ \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
if (!__o->alloc_failed) \
__o->next_free += __len; \
__o->next_free += __len; \
(void) 0; })
#define obstack_alloc(OBSTACK,length) \
@@ -442,21 +471,16 @@ __extension__ \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
void *value; \
if (__o1->alloc_failed) \
value = 0; \
else \
{ \
value = (void *) __o1->object_base; \
if (__o1->next_free == value) \
__o1->maybe_empty_object = 1; \
__o1->next_free \
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
& ~ (__o1->alignment_mask)); \
if (__o1->next_free - (char *)__o1->chunk \
> __o1->chunk_limit - (char *)__o1->chunk) \
__o1->next_free = __o1->chunk_limit; \
__o1->object_base = __o1->next_free; \
} \
value = (void *) __o1->object_base; \
if (__o1->next_free == value) \
__o1->maybe_empty_object = 1; \
__o1->next_free \
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
& ~ (__o1->alignment_mask)); \
if (__o1->next_free - (char *)__o1->chunk \
> __o1->chunk_limit - (char *)__o1->chunk) \
__o1->next_free = __o1->chunk_limit; \
__o1->object_base = __o1->next_free; \
value; })
#define obstack_free(OBSTACK, OBJ) \
@@ -470,61 +494,63 @@ __extension__ \
#else /* not __GNUC__ or not __STDC__ */
#define obstack_object_size(h) \
(unsigned) ((h)->alloc_failed ? 0 : (h)->next_free - (h)->object_base)
(unsigned) ((h)->next_free - (h)->object_base)
#define obstack_room(h) \
(unsigned) ((h)->chunk_limit - (h)->next_free)
#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)
so that we can avoid having void expressions
in the arms of the conditional expression.
Casting the third operand to void was tried before,
but some compilers won't accept it. */
#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) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
((h)->alloc_failed ? 0 : \
(bcopy ((char *) (where), (h)->next_free, (h)->temp), \
(h)->next_free += (h)->temp)))
_obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
(h)->next_free += (h)->temp)
#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), \
((h)->alloc_failed ? 0 : \
(bcopy ((char *) (where), (h)->next_free, (h)->temp), \
_obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
(h)->next_free += (h)->temp, \
*((h)->next_free)++ = 0)))
*((h)->next_free)++ = 0)
#define obstack_1grow(h,datum) \
( (((h)->next_free + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), 1), 0) : 0), \
((h)->alloc_failed ? 0 : \
(*((h)->next_free)++ = (datum))))
(*((h)->next_free)++ = (datum)))
#define obstack_ptr_grow(h,datum) \
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
((h)->alloc_failed ? 0 : \
(*((char **)(((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *)datum))))
(*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
#define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
((h)->alloc_failed ? 0 : \
(*((int *)(((h)->next_free+=sizeof(int))-sizeof(int))) = ((int)datum))))
(*((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) \
( (h)->temp = (length), \
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
((h)->alloc_failed ? 0 : \
((h)->next_free += (h)->temp)))
((h)->next_free += (h)->temp))
#define obstack_alloc(h,length) \
(obstack_blank ((h), (length)), obstack_finish ((h)))
@@ -536,30 +562,29 @@ __extension__ \
(obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
#define obstack_finish(h) \
( (h)->alloc_failed ? 0 : \
(((h)->next_free == (h)->object_base \
( ((h)->next_free == (h)->object_base \
? (((h)->maybe_empty_object = 1), 0) \
: 0), \
(h)->temp = __PTR_TO_INT ((h)->object_base), \
(h)->next_free \
= __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask) \
& ~ ((h)->alignment_mask)), \
(((h)->next_free - (char *)(h)->chunk \
> (h)->chunk_limit - (char *)(h)->chunk) \
(((h)->next_free - (char *) (h)->chunk \
> (h)->chunk_limit - (char *) (h)->chunk) \
? ((h)->next_free = (h)->chunk_limit) : 0), \
(h)->object_base = (h)->next_free, \
__INT_TO_PTR ((h)->temp)))
__INT_TO_PTR ((h)->temp))
#if defined (__STDC__) && __STDC__
#define obstack_free(h,obj) \
( (h)->temp = (char *)(obj) - (char *) (h)->chunk, \
( (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) \
( (h)->temp = (char *)(obj) - (char *) (h)->chunk, \
( (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) \
@@ -568,4 +593,8 @@ __extension__ \
#endif /* not __GNUC__ or not __STDC__ */
#endif /* not __OBSTACK_H__ */
#ifdef __cplusplus
} /* C++ */
#endif
#endif /* obstack.h */

View File

@@ -1,5 +1,5 @@
/* path-concat.c -- concatenate two arbitrary pathnames
Copyright (C) 1996 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 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
@@ -17,12 +17,21 @@
/* Written by Jim Meyering. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifndef HAVE_MEMPCPY
# define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
#endif
#include <stdio.h>
#if HAVE_STRING_H
# include <string.h>
#endif
#include <sys/types.h>
char *malloc ();
char *stpcpy ();
/* Concatenate two pathname components, DIR and BASE, in newly-allocated
storage and return the result. Return 0 if out of memory. Add a slash
@@ -33,29 +42,28 @@ char *stpcpy ();
BASE in the returned concatenation. */
char *
path_concat (dir, base, base_in_result)
const char *dir;
const char *base;
char **base_in_result;
path_concat (const char *dir, const char *base, char **base_in_result)
{
char *p;
char *p_concat;
size_t base_len = strlen (base);
size_t dir_len = strlen (dir);
p_concat = malloc (strlen (dir) + strlen (base) + 2);
p_concat = malloc (dir_len + base_len + 2);
if (!p_concat)
return 0;
p = stpcpy (p_concat, dir);
p = mempcpy (p_concat, dir, dir_len);
if (*(p - 1) == '/' && *base == '/')
--p;
else if (*(p - 1) != '/' && *base != '/')
p = stpcpy (p, "/");
*p++ = '/';
if (base_in_result)
*base_in_result = p;
stpcpy (p, base);
memcpy (p, base, base_len + 1);
return p_concat;
}

View File

@@ -1,9 +1,15 @@
#if __STDC__
# undef __P
# define __P(args) args
#else
# define __P(args) ()
#endif
#if ! defined PATH_CONCAT_H_
# define PATH_CONCAT_H_
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
char *
path_concat __P ((const char *dir, const char *base, char **base_in_result));
path_concat PARAMS ((const char *dir, const char *base, char **base_in_result));
#endif

File diff suppressed because it is too large Load Diff

24
lib/posixtm.h Normal file
View File

@@ -0,0 +1,24 @@
#ifndef POSIXTM_H_
# define POSIXTM_H_
/* POSIX Date Syntax flags. */
# define PDS_LEADING_YEAR 1
# define PDS_TRAILING_YEAR 2
# define PDS_CENTURY 4
# define PDS_SECONDS 8
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
time_t
posixtime PARAMS ((const char *s, unsigned int syntax_bits));
struct tm *
posixtm PARAMS ((const char *s, unsigned int syntax_bits));
#endif

View File

@@ -1,242 +0,0 @@
/* Parse dates for touch.
Copyright (C) 1989, 1990, 1991 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 Kingdon and David MacKenzie. */
%{
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
/* The following block of alloca-related preprocessor directives is here
solely to allow compilation by non GNU-C compilers of the C parser
produced from this file by old versions of bison. Newer versions of
bison include a block similar to this one in bison.simple. */
#ifdef __GNUC__
#define alloca __builtin_alloca
#else
#ifdef HAVE_ALLOCA_H
#include <alloca.h>
#else
#ifdef _AIX
#pragma alloca
#else
void *alloca ();
#endif
#endif
#endif
#include <stdio.h>
#include <sys/types.h>
#ifdef TM_IN_SYS_TIME
#include <sys/time.h>
#else
#include <time.h>
#endif
/* Some old versions of bison generate parsers that use bcopy.
That loses on systems that don't provide the function, so we have
to redefine it here. */
#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy)
#define bcopy(from, to, len) memcpy ((to), (from), (len))
#endif
#define YYDEBUG 1
/* Lexical analyzer's current scan position in the input string. */
static char *curpos;
/* The return value. */
static struct tm t;
time_t mktime ();
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
yacc generated parsers in the same program. Note that these are only
the variables produced by yacc. If other parser generators (bison,
byacc, etc) produce additional global names that conflict at link time,
then those parser generators need to be fixed instead of adding those
names to this list. */
#define yymaxdepth pt_maxdepth
#define yyparse pt_parse
#define yylex pt_lex
#define yyerror pt_error
#define yylval pt_lval
#define yychar pt_char
#define yydebug pt_debug
#define yypact pt_pact
#define yyr1 pt_r1
#define yyr2 pt_r2
#define yydef pt_def
#define yychk pt_chk
#define yypgo pt_pgo
#define yyact pt_act
#define yyexca pt_exca
#define yyerrflag pt_errflag
#define yynerrs pt_nerrs
#define yyps pt_ps
#define yypv pt_pv
#define yys pt_s
#define yy_yys pt_yys
#define yystate pt_state
#define yytmp pt_tmp
#define yyv pt_v
#define yy_yyv pt_yyv
#define yyval pt_val
#define yylloc pt_lloc
#define yyreds pt_reds /* With YYDEBUG defined */
#define yytoks pt_toks /* With YYDEBUG defined */
#define yylhs pt_yylhs
#define yylen pt_yylen
#define yydefred pt_yydefred
#define yydgoto pt_yydgoto
#define yysindex pt_yysindex
#define yyrindex pt_yyrindex
#define yygindex pt_yygindex
#define yytable pt_yytable
#define yycheck pt_yycheck
static int yylex ();
static int yyerror ();
%}
%token DIGIT
%%
date :
digitpair /* month */
digitpair /* day */
digitpair /* hours */
digitpair /* minutes */
year
seconds {
if ($1 >= 1 && $1 <= 12)
t.tm_mon = $1 - 1;
else {
YYABORT;
}
if ($2 >= 1 && $2 <= 31)
t.tm_mday = $2;
else {
YYABORT;
}
if ($3 >= 0 && $3 <= 23)
t.tm_hour = $3;
else {
YYABORT;
}
if ($4 >= 0 && $4 <= 59)
t.tm_min = $4;
else {
YYABORT;
}
}
year : digitpair {
t.tm_year = $1;
/* Deduce the century based on the year.
See POSIX.2 section 4.63.3. */
if ($1 <= 68)
t.tm_year += 100;
}
| digitpair digitpair {
t.tm_year = $1 * 100 + $2;
if (t.tm_year < 1900) {
YYABORT;
} else
t.tm_year -= 1900;
}
| /* empty */ {
time_t now;
struct tm *tmp;
/* Use current year. */
time (&now);
tmp = localtime (&now);
t.tm_year = tmp->tm_year;
}
;
seconds : /* empty */ {
t.tm_sec = 0;
}
| '.' digitpair {
if ($2 >= 0 && $2 <= 61)
t.tm_sec = $2;
else {
YYABORT;
}
}
;
digitpair : DIGIT DIGIT {
$$ = $1 * 10 + $2;
}
;
%%
static int
yylex ()
{
char ch = *curpos++;
if (ch >= '0' && ch <= '9')
{
yylval = ch - '0';
return DIGIT;
}
else if (ch == '.' || ch == 0)
return ch;
else
return '?'; /* Cause an error. */
}
static int
yyerror ()
{
return 0;
}
/* Parse a POSIX-style date and return it, or (time_t)-1 for an error. */
time_t
posixtime (s)
char *s;
{
curpos = s;
/* Let mktime decide whether it is daylight savings time. */
t.tm_isdst = -1;
if (yyparse ())
return (time_t)-1;
else
return mktime (&t);
}
/* Parse a POSIX-style date and return it, or NULL for an error. */
struct tm *
posixtm (s)
char *s;
{
if (posixtime (s) == -1)
return NULL;
return &t;
}

View File

@@ -1,36 +1,37 @@
/* Copyright (C) 1991, 1994 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1994, 1997, 1998 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. */
#include <errno.h>
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Define-away any (possibly conflicting) prototype of putenv.
Many systems omit the `const' attribute on the argument. */
#define putenv _sys_putenv
#include <sys/types.h>
/* Don't include stdlib.h because some (e.g., Solaris 2.7) declare putenv
with a non-const argument. That would conflict with the declaration of
rpl_putenv below (due to the #define putenv rpl_putenv from config.h). */
char *malloc ();
void free ();
#if defined (__GNU_LIBRARY__) || defined (HAVE_STDLIB_H)
# include <stdlib.h>
#endif
#if defined (__GNU_LIBRARY__) || defined (HAVE_STRING_H)
# include <string.h>
#endif
@@ -38,8 +39,6 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# include <unistd.h>
#endif
#undef putenv
#if !defined (__GNU_LIBRARY__) && !defined (HAVE_STRCHR)
# define strchr index
#endif
@@ -53,11 +52,14 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
extern char **environ;
#endif
#ifndef NULL
# define NULL 0
#endif
/* Put STRING, which is of the form "NAME=VALUE", in the environment. */
int
putenv (string)
const char *string;
rpl_putenv (const char *string)
{
const char *const name_end = strchr (string, '=');
register size_t size;

367
lib/quotearg.c Normal file
View File

@@ -0,0 +1,367 @@
/* quotearg.c - quote arguments for output
Copyright (C) 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
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <eggert@twinsun.com> */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <quotearg.h>
#include <xalloc.h>
#include <ctype.h>
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define ISASCII(c) 1
#else
# define ISASCII(c) isascii (c)
#endif
#ifdef isgraph
# define ISGRAPH(c) (ISASCII (c) && isgraph (c))
#else
# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c))
#endif
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
# define CHAR_BIT 8
#endif
#ifndef UCHAR_MAX
# define UCHAR_MAX ((unsigned char) -1)
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#if HAVE_STRING_H
# include <string.h>
#endif
#define INT_BITS (sizeof (int) * CHAR_BIT)
struct quoting_options
{
/* Basic quoting style. */
enum quoting_style style;
/* Quote the chararacters 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))];
};
/* Names of quoting styles. */
char const *const quoting_style_args[] =
{
"literal",
"shell",
"shell-always",
"c",
"escape",
0
};
/* Correspondances to quoting style names. */
enum quoting_style const quoting_style_vals[] =
{
literal_quoting_style,
shell_quoting_style,
shell_always_quoting_style,
c_quoting_style,
escape_quoting_style
};
/* The default quoting options. */
static struct quoting_options default_quoting_options;
/* Allocate a new set of quoting options, with contents initially identical
to O if O is not null, or to the default if O is null.
It is the caller's responsibility to free the result. */
struct quoting_options *
clone_quoting_options (struct quoting_options *o)
{
struct quoting_options *p
= (struct quoting_options *) xmalloc (sizeof (struct quoting_options));
*p = *(o ? o : &default_quoting_options);
return p;
}
/* Get the value of O's quoting style. If O is null, use the default. */
enum quoting_style
get_quoting_style (struct quoting_options *o)
{
return (o ? o : &default_quoting_options)->style;
}
/* In O (or in the default if O is null),
set the value of the quoting style to S. */
void
set_quoting_style (struct quoting_options *o, enum quoting_style s)
{
(o ? o : &default_quoting_options)->style = s;
}
/* In O (or in the default if O is null),
set the value of the quoting options for character C to I.
Return the old value. Currently, the only values defined for I are
0 (the default) and 1 (which means to quote the character even if
it would not otherwise be quoted). */
int
set_char_quoting (struct quoting_options *o, char c, int i)
{
unsigned char uc = c;
int *p = (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS;
int shift = uc % INT_BITS;
int r = (*p >> shift) & 1;
*p ^= ((i & 1) ^ r) << shift;
return r;
}
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
argument ARG (of size ARGSIZE), using O to control quoting.
If O is null, use the default.
Terminate the output with a null character, and return the written
size of the output, not counting the terminating null.
If BUFFERSIZE is too small to store the output string, return the
value that would have been returned had BUFFERSIZE been large enough.
If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */
size_t
quotearg_buffer (char *buffer, size_t buffersize,
char const *arg, size_t argsize,
struct quoting_options const *o)
{
unsigned char c;
size_t i;
size_t len;
int quote_mark;
struct quoting_options const *p = o ? o : &default_quoting_options;
enum quoting_style quoting_style = p->style;
#define STORE(c) \
do \
{ \
if (len < buffersize) \
buffer[len] = (c); \
len++; \
} \
while (0)
switch (quoting_style)
{
case shell_quoting_style:
if (! (argsize == (size_t) -1 ? arg[0] == '\0' : argsize == 0))
{
switch (arg[0])
{
case '#': case '~':
break;
default:
len = 0;
for (i = 0; ; i++)
{
if (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize)
goto done;
c = arg[i];
switch (c)
{
case '\t': case '\n': case ' ':
case '!': /* special in csh */
case '"': case '$': case '&': case '\'':
case '(': case ')': case '*': case ';':
case '<': case '>': case '?': case '[': case '\\':
case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */
case '`': case '|':
goto needs_quoting;
}
if (p->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS)))
goto needs_quoting;
STORE (c);
}
needs_quoting:;
break;
}
}
/* Fall through. */
case shell_always_quoting_style:
quote_mark = '\'';
break;
case c_quoting_style:
quote_mark = '"';
break;
default:
quote_mark = 0;
break;
}
len = 0;
if (quote_mark)
STORE (quote_mark);
for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++)
{
c = arg[i];
switch (quoting_style)
{
case literal_quoting_style:
break;
case shell_quoting_style:
case shell_always_quoting_style:
if (c == '\'')
{
STORE ('\'');
STORE ('\\');
STORE ('\'');
}
break;
case c_quoting_style:
case escape_quoting_style:
switch (c)
{
case '?': /* Do not generate trigraphs. */
case '\\': goto store_escape;
/* Not all C compilers know what \a means. */
case 7 : c = 'a'; goto store_escape;
case '\b': c = 'b'; goto store_escape;
case '\f': c = 'f'; goto store_escape;
case '\n': c = 'n'; goto store_escape;
case '\r': c = 'r'; goto store_escape;
case '\t': c = 't'; goto store_escape;
case '\v': c = 'v'; goto store_escape;
case '"':
if (quoting_style == c_quoting_style)
goto store_escape;
break;
default:
if (!ISGRAPH (c))
{
STORE ('\\');
STORE ('0' + (c >> 6));
STORE ('0' + ((c >> 3) & 7));
c = '0' + (c & 7);
goto store_c;
}
break;
}
if (! (p->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS))))
goto store_c;
store_escape:
STORE ('\\');
}
store_c:
STORE (c);
}
if (quote_mark)
STORE (quote_mark);
done:
if (len < buffersize)
buffer[len] = '\0';
return len;
}
/* Use storage slot N to return a quoted version of the string ARG.
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'
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
{
size_t size;
char *val;
} *slotvec;
if (nslots <= n)
{
int n1 = n + 1;
size_t s = n1 * sizeof (struct slotvec);
if (! (0 < n1 && n1 == s / sizeof (struct slotvec)))
abort ();
slotvec = (struct slotvec *) xrealloc (slotvec, s);
memset (slotvec + nslots, 0, (n1 - nslots) * sizeof (struct slotvec));
nslots = n;
}
{
size_t size = slotvec[n].size;
char *val = slotvec[n].val;
size_t qsize = quotearg_buffer (val, size, arg, (size_t) -1, options);
if (size <= qsize)
{
slotvec[n].size = size = qsize + 1;
slotvec[n].val = val = xrealloc (val, size);
quotearg_buffer (val, size, arg, (size_t) -1, options);
}
return val;
}
}
char *
quotearg_n (unsigned int n, char const *arg)
{
return quotearg_n_options (n, arg, &default_quoting_options);
}
char *
quotearg (char const *arg)
{
return quotearg_n (0, arg);
}
char *
quotearg_char (char const *arg, char ch)
{
struct quoting_options options;
options = default_quoting_options;
set_char_quoting (&options, ch, 1);
return quotearg_n_options (0, arg, &options);
}
char *
quotearg_colon (char const *arg)
{
return quotearg_char (arg, ':');
}

100
lib/quotearg.h Normal file
View File

@@ -0,0 +1,100 @@
/* quotearg.h - quote arguments for output
Copyright (C) 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
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <eggert@twinsun.com> */
/* Basic quoting styles. */
enum quoting_style
{
literal_quoting_style, /* --quoting-style=literal */
shell_quoting_style, /* --quoting-style=shell */
shell_always_quoting_style, /* --quoting-style=shell-always */
c_quoting_style, /* --quoting-style=c */
escape_quoting_style /* --quoting-style=escape */
};
/* For now, --quoting-style=literal is the default, but
this is planned to change to --quoting-style=shell in the future. */
#ifndef DEFAULT_QUOTING_STYLE
# define DEFAULT_QUOTING_STYLE literal_quoting_style
#endif
/* Names of quoting styles and their corresponding values. */
extern char const *const quoting_style_args[];
extern enum quoting_style const quoting_style_vals[];
struct quoting_options;
#ifndef PARAMS
# if defined PROTOTYPES || defined __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
/* The functions listed below set and use a hidden variable
that contains the default quoting style options. */
/* Allocate a new set of quoting options, with contents initially identical
to O if O is not null, or to the default if O is null.
It is the caller's responsibility to free the result. */
struct quoting_options *clone_quoting_options
PARAMS ((struct quoting_options *o));
/* Get the value of O's quoting style. If O is null, use the default. */
enum quoting_style get_quoting_style PARAMS ((struct quoting_options *o));
/* In O (or in the default if O is null),
set the value of the quoting style to S. */
void set_quoting_style PARAMS ((struct quoting_options *o,
enum quoting_style s));
/* In O (or in the default if O is null),
set the value of the quoting options for character C to I.
Return the old value. Currently, the only values defined for I are
0 (the default) and 1 (which means to quote the character even if
it would not otherwise be quoted). */
int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i));
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
argument ARG (of size ARGSIZE), using O to control quoting.
If O is null, use the default.
Terminate the output with a null character, and return the written
size of the output, not counting the terminating null.
If BUFFERSIZE is too small to store the output string, return the
value that would have been returned had BUFFERSIZE been large enough.
If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */
size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize,
char const *arg, size_t argsize,
struct quoting_options const *o));
/* Use storage slot N to return a quoted version of the string ARG.
Use the default quoting options.
The returned value points to static storage that can be
reused by the next call to this function with the same value of N.
N must be nonnegative. */
char *quotearg_n PARAMS ((unsigned int n, char const *arg));
/* Equivalent to quotearg_n (0, ARG). */
char *quotearg PARAMS ((char const *arg));
/* Like quotearg (ARG), except also quote any instances of CH. */
char *quotearg_char PARAMS ((char const *arg, char ch));
/* Equivalent to quotearg_char (ARG, ':'). */
char *quotearg_colon PARAMS ((char const *arg));

View File

@@ -1,5 +1,5 @@
/* readtokens.c -- Functions for reading tokens from an input stream.
Copyright (C) 1990-1991 Jim Meyering.
Copyright (C) 1990-1991, 1999 Jim Meyering.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -77,11 +77,10 @@ init_tokenbuffer (tokenbuffer)
and on files that aren't newline-terminated. */
long
readtoken (stream, delim, n_delim, tokenbuffer)
FILE *stream;
const char *delim;
int n_delim;
token_buffer *tokenbuffer;
readtoken (FILE *stream,
const char *delim,
int n_delim,
token_buffer *tokenbuffer)
{
char *p;
int c, i, n;
@@ -164,14 +163,12 @@ readtoken (stream, delim, n_delim, tokenbuffer)
%%% realloc() of `tokens' just before returning? */
int
readtokens (stream, projected_n_tokens, delim, n_delim,
tokens_out, token_lengths)
FILE *stream;
int projected_n_tokens;
const char *delim;
int n_delim;
char ***tokens_out;
long **token_lengths;
readtokens (FILE *stream,
int projected_n_tokens,
const char *delim,
int n_delim,
char ***tokens_out,
long **token_lengths)
{
token_buffer tb, *token = &tb;
int token_length;

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