Paul Eggert [Mon, 6 Sep 2004 07:47:04 +0000 (07:47 +0000)]
(od invocation): Several changes for POSIX
and FreeBSD compatibility. Add support for XSI syntax
(POSIX 1003.1-2004). Rename -s[N] to -S N. Remove documentation
for -h. -i is now -t dI (not d2) and -l is now -t dL (not d4).
Paul Eggert [Mon, 6 Sep 2004 07:46:43 +0000 (07:46 +0000)]
Several changes for POSIX and FreeBSD compatibility.
(COMMON_SHORT_OPTIONS): Add -B, -D, -e, -F, -H, -I, -L, -O, -s, -X.
(long_options, main): --strings is now -S, not -s.
(usage): Reflect the usage changes.
(parse_old_offset): Do not issue a diagnostic on failure;
callers now do this as necessary.
(main): Support POSIX syntax. Remove unused case 0 from getopt_long.
Add support for new short options (many undocumented) for
compatibility with FreeBSD. Remove FIXME for -s; it's now
POSIX-compatible. Default format is now oS, not o2.
Paul Eggert [Fri, 3 Sep 2004 21:58:36 +0000 (21:58 +0000)]
(HAVE_STRUCT_STATXFS_F_TYPE): Fix typo that prevented
it from ever being nonzero. Reported by Pozsar Balazs in:
http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00189.html
(human_fstype): Add ramfs, squashfs, sysfs.
Reported by Pozsar Balazs in:
http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00188.html
(human_fstype): Return char const *, not char *.
Simplify internals a bit, and avoid casts.
Paul Eggert [Fri, 3 Sep 2004 08:11:34 +0000 (08:11 +0000)]
(usage): "alternated EBCDIC" -> "alternate EBCDIC".
(bit_count): Remove. All uses changed to....
(multiple_bits_set): New function.
(scanargs): Use it, and check separately for each set of
incompatible options, to improve diagnostics.
(MX): Remove.
(apply_translations): Move checks for incompatible options
to scanargs, so that they're done consistently.
Paul Eggert [Fri, 3 Sep 2004 01:35:33 +0000 (01:35 +0000)]
Output correct errno-related diagnostic on "paste" I/O errors.
(write_error, xputchar): New functions.
(paste_parallel): Use correct errno value after input error.
(paste_parallel, paste_serial): Report errno value after output error.
Paul Eggert [Thu, 2 Sep 2004 23:56:42 +0000 (23:56 +0000)]
(dummy_closed, CLOSED, dummy_endlist, ENDLIST): Remove;
it's not portable C to assume FILE is a complete type.
(paste_parallel): Use null instead of ENDLIST, and an explicit
boolean instead of CLOSED.
Paul Eggert [Tue, 24 Aug 2004 07:38:49 +0000 (07:38 +0000)]
(add_tab_stop): Renamed from add_tabstop. All uses changed.
(parse_tab_stop): Renamed from parse_tabstop. All uses changed.
(validate_tab_stop): Renamed from validate_tabstop. All uses changed.
(next_file, main): Check fclose against 0, not EOF.
(unexpand): Remove unnecessary casts.
Add another loop nesting level, for lines, so that per-line variables
are initialized cleanly.
Revamp tab checking. Check for write error immediately, rather
than just once at the end of the program.
(TAB_STOP_SENTINEL): Remove.
(tab_size): Now size_t, not uintmax_t, since we need to store
the sequences of blanks.
(max_column_width): New var.
(usage): Say "blank" where POSIX requires this.
(add_tab_stop): Calculate maximum column width.
(unexpand): Store the pending blanks, instead of merely counting them.
Follow POSIX's rules about -a requiring two blanks before a tab stop.
Get rid of internal label and goto.
Paul Eggert [Tue, 24 Aug 2004 07:38:04 +0000 (07:38 +0000)]
Revamp to resemble the new unexpand.c better.
(usage): -i does not convert tabs after non-tabs.
(add_tab_stop): Renamed from add_tabstop. All uses changed.
(parse_tab_stop): Renamed from parse_tabstop. All uses changed.
(validate_tab_stop): Renamed from validate_tabstop. All uses changed.
(next_file, main): Check fclose against 0, not EOF.
(expand): Remove unnecessary casts.
Add another loop nesting level, for lines, so that per-line variables
are initialized cleanly.
Revamp tab checking. Check for write error immediately, rather
than just once at the end of the program.
Paul Eggert [Tue, 24 Aug 2004 07:37:28 +0000 (07:37 +0000)]
Standardize on "tab stop" (the POSIX usage)
rather than "tabstop".
(unexpand invocation): Use "blank" rather than "space" when
POSIX requires "blank". Define "blank". Initial blanks are
converted even if there's just one. For -a, convert two or
more blanks only if they occur just before a tab stop.
Paul Eggert [Thu, 19 Aug 2004 20:05:52 +0000 (20:05 +0000)]
(chown invocation): Fix synopsis:
group must always be preceded by separator.
"chown : file" and "chown '' file" don't change the owner or group.
Update the explanation of what happens to the set-user-ID or
set-group-ID bits, e.g., they sometimes are not cleared if they
denote mandatory locking. Change "find"-oriented examples to use
chown -h.
Paul Eggert [Thu, 19 Aug 2004 20:04:42 +0000 (20:04 +0000)]
Don't use <alloca.h>, so that we don't use alloca on
strings on unbounded length. alloca's performance benefits aren't
that important here.
(V_STRDUP): Remove.
(parse_with_separator): New function, with most of the internals
of the old parse_user_spec. Allow user to omit both user and group,
for compatibility with FreeBSD.
Clone only the user name, not the entire spec.
Do not set *uid, *gid unless entirely successful.
Avoid memory leak in some failing cases.
Fix regression for USER.GROUP reported by Dmitry V. Levin in
<http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00102.html>
(parse_user_spec): Rewrite to use parse_with_separator.
Paul Eggert [Thu, 19 Aug 2004 20:02:46 +0000 (20:02 +0000)]
(parse_group): Return gid_t rather than storing it
through a pointer. Treat "chgrp '' file" as a no-op change,
as FreeBSD does.
(main): Set chopt.group_name to NULL if the group is the empty
string.
Paul Eggert [Wed, 11 Aug 2004 22:24:14 +0000 (22:24 +0000)]
Include <inttypes.h> and <stdint.h> if available.
(union fooround): Use uintmax_t, not long int.
The rest is a merge from libc:
[defined _LIBC]: Include <shlib-compat.h>.
(_obstack) [defined _LIBC]: Remove after 2.3.4.
Paul Eggert [Wed, 11 Aug 2004 17:19:25 +0000 (17:19 +0000)]
(copy_internal): When preserving links, unlink
a destination with link count greater than one. This is so
that commands like "cp -a" don't get confused when copying into
a destination that already contains many hard links.
Paul Eggert [Tue, 10 Aug 2004 22:08:09 +0000 (22:08 +0000)]
(die, xfopen, mergefps, first_same_file, merge):
A null file arg means standard output.
(main): "-o -" means to write to a file named "-",
not to standard output.
Paul Eggert [Tue, 10 Aug 2004 22:07:31 +0000 (22:07 +0000)]
(Common options): Clarify that "-" means
stdin/stdout only when it is an operand, not when it is an
option-argument.
(shred invocation): "shred -- -" is equivalent to "shred -",
not to "shred ./-".
(tee invocation): "tee -" means to copy (again) to stdout.
Paul Eggert [Mon, 9 Aug 2004 23:34:15 +0000 (23:34 +0000)]
(diropen): New function.
(fts_open, fts_read, fts_children, fts_safe_changedir):
Use it, so that the code works even if the directory
is writeable but not readable.