Jim Meyering [Wed, 30 Jun 2004 22:31:43 +0000 (22:31 +0000)]
(usage, main): Output "file system" rather than "filesystem".
(long_options, usage): Rename "--filesystem" to
"--file-system". But keep the old name around, for compatibility reasons.
Jim Meyering [Wed, 30 Jun 2004 18:42:01 +0000 (18:42 +0000)]
(Common options, Target directory, cp
invocation, install invocation, mv invocation, ln invocation):
Likewise.
(link invocation): Explain how to rewrite link using ln now
that we have --no-target-directory.
(ln invocation): Explain that --no-target-directory subsumes
--no-dereference.
(unlink invocation): Modify wording to match new wording in
link invocation.
Jim Meyering [Tue, 29 Jun 2004 14:40:47 +0000 (14:40 +0000)]
Add support for 'install --target-directory', an option
that has been documented for years but not implemented (!).
(TARGET_DIRECTORY_OPTION): New var.
(long_options, main, usage): Add --target-directory.
(target_directory_operand): New function, stolen from mv.c.
(main): Use it. Check for -d and --target-directory.
Alter wording of diagnostics to match other programs.
Jim Meyering [Mon, 28 Jun 2004 18:39:28 +0000 (18:39 +0000)]
Use more-consistent rules among cp, ln, and mv when dealing with
last operands that are (or look like) directories.
* src/cp.c (target_directory_operand): New, nearly-common function,
It reports an error if the destination appears to be a directory
(e.g., because it has a trailing slash) but is not.
* src/ln.c, src/mv.c: Likewise.
* src/cp.c (do_copy): Use it.
* src/ln.c (main): Likewise.
* src/mv.c (main): Likewise.
* src/cp.c (do_copy): Don't output a usage message because of file
problems (e.g., an operand is not a directory). Use it only for
syntax. Standardize on "target %s is not a directory" for the
diagnostic.
* src/ln.c (main): Likewise.
* src/mv.c (main): Likewise.
* src/cp.c (do_copy): Remove test for trailing slash, since
target_directory_operand now does this.
* src/ln.c (main): Likewise.
* src/mv.c (movefile): Likewise.
* src/ln.c (main): Use int to count to argc, not unsigned int.
This handles negative operand counts.
* src/mv.c (main): Likewise.
* src/mv.c (do_move): Don't call hash_init; expect the caller to
do it, for consistency with cp.c and ln.c. All callers changed.
(movefile): dest_is_dir parameter is now bool, not int.
(main): Standardize on "missing destination file operand after %s"
for the diagnostic, for consistency with cp.c.
Jim Meyering [Mon, 28 Jun 2004 18:38:05 +0000 (18:38 +0000)]
Use more-consistent rules among cp, ln, and mv when dealing with
last operands that are (or look like) directories.
* src/cp.c (target_directory_operand): New, nearly-common function,
It reports an error if the destination appears to be a directory
(e.g., because it has a trailing slash) but is not.
* src/ln.c, src/mv.c: Likewise.
* src/cp.c (do_copy): Use it.
* src/ln.c (main): Likewise.
* src/mv.c (main): Likewise.
* src/cp.c (do_copy): Don't output a usage message because of file
problems (e.g., an operand is not a directory). Use it only for
syntax. Standardize on "target %s is not a directory" for the
diagnostic.
* src/ln.c (main): Likewise.
* src/mv.c (main): Likewise.
* src/cp.c (do_copy): Remove test for trailing slash, since
target_directory_operand now does this.
* src/ln.c (main): Likewise.
* src/mv.c (movefile): Likewise.
* src/cp.c (main): Reject multiple target directories.
Check whether a specified target is a directory when parsing the
options, using stat. This gives more-accurate diagnostics.
* src/ln.c (main): Likewise.
* src/ln.c (do_link): New arg dest_is_dir. All uses changed.
Don't check the destination ourself; rely on dest_is_dir.
This way we can avoid lstatting the destination in the
usual case, and in the worst case we lstat 1, not 3 times.
Don't bother to unlink unless link failed; this saves a syscall.
Remove unnecessary backup_succeeded flag;
it was identical to "dest_backup != NULL".
* src/ln.c (main): Use int to count to argc, not unsigned int.
This handles negative operand counts.
* src/mv.c (main): Likewise.
Jim Meyering [Mon, 28 Jun 2004 18:35:54 +0000 (18:35 +0000)]
Use more-consistent rules among cp, ln, and mv when dealing with
last operands that are (or look like) directories.
* src/cp.c (target_directory_operand): New, nearly-common function,
It reports an error if the destination appears to be a directory
(e.g., because it has a trailing slash) but is not.
* src/cp.c (do_copy): Use it.
* src/cp.c (do_copy): Don't assume argc is positive.
Don't bother to lstat dest, since copy() will do that for us.
Use "const" to avoid the need for cast.
* src/cp.c (do_copy): Don't output a usage message because of file
problems (e.g., an operand is not a directory). Use it only for
syntax. Standardize on "target %s is not a directory" for the
diagnostic.
* src/cp.c (do_copy): Remove test for trailing slash, since
target_directory_operand now does this.
* src/cp.c (main): Reject multiple target directories.
Check whether a specified target is a directory when parsing the
options, using stat. This gives more-accurate diagnostics.
Jim Meyering [Wed, 23 Jun 2004 15:07:00 +0000 (15:07 +0000)]
Replace all occurrences of `(exit N); exit' with
`(exit N); exit N'. Otherwise, those many tests could exit with
improper exit status when exiting via e.g., a trapped interrupt.
Thanks to a report from Bob Proulx.
Jim Meyering [Wed, 23 Jun 2004 14:48:16 +0000 (14:48 +0000)]
(idle_string, print_user): New arg boottime,
specifying the most recent boot time. All uses changed.
(idle_string) Consider a line to be "old" if it hasn't been used
since the last boot time. Watch out for overflow when computing
times, and for times in the future.
(idle_string): Record latest boot time.
Jim Meyering [Tue, 22 Jun 2004 15:00:53 +0000 (15:00 +0000)]
The 2004-06-19 fix for who and pinky was incomplete, as ctime
has undefined behavior if the year precedes -999 or follows 9999.
Since we have to stop using ctime anyway, we might as well use
strftime and fix the FIXME, and support internationalized dates.
* src/who.c: Include "hard-locale.h".
(time_format, time_format_width): New vars.
(time_string, print_line): Use them.
(main): Set them.
(time_string): Use localtime + strftime instead of
ctime, to avoid problems with years before -999 or after 9999.
* src/pinky.c: Likewise.
Jim Meyering [Tue, 22 Jun 2004 14:56:46 +0000 (14:56 +0000)]
The 2004-06-19 fix for who and pinky was incomplete, as ctime
has undefined behavior if the year precedes -999 or follows 9999.
Since we have to stop using ctime anyway, we might as well use
strftime and fix the FIXME, and support internationalized dates.
Include "hard-locale.h".
(time_format, time_format_width): New vars.
(time_string, print_line): Use them.
(main): Set them.
(time_string): Use localtime + strftime instead of
ctime, to avoid problems with years before -999 or after 9999.
Jim Meyering [Tue, 22 Jun 2004 12:50:01 +0000 (12:50 +0000)]
Fix bug: GNU 'ls' didn't count columns correctly if user or group
names contained multibyte characters where the column count
differed from the byte count. This patch also corrects
some comments.
(format_user_or_group): New function, which counts columns correctly.
(format_user, format_group): Use it.
(format_user_or_group_width): New function, which counts columns correctly.
(format_user_width, format_group_width): Use it.
Jim Meyering [Mon, 21 Jun 2004 15:03:35 +0000 (15:03 +0000)]
(main): Standardize on the diagnostics given when someone gives
too few operands ("missing operand after `xxx'") or
too many operands ("extra operand `xxx'").
Include "quote.h" and/or "error.h" if it wasn't already being included.
Jim Meyering [Mon, 21 Jun 2004 15:02:28 +0000 (15:02 +0000)]
Standardize on the diagnostics given when someone gives
too few operands ("missing operand after `xxx'") or
too many operands ("extra operand `xxx'").
Include "quote.h" and/or "error.h" if it wasn't already being included.
(do_copy): Likewise.
Jim Meyering [Mon, 21 Jun 2004 15:02:14 +0000 (15:02 +0000)]
Standardize on the diagnostics given when someone gives
too few operands ("missing operand after `xxx'") or
too many operands ("extra operand `xxx'").
Include "quote.h" and/or "error.h" if it wasn't already being included.
(add_file_name, main): Likewise.
Jim Meyering [Mon, 21 Jun 2004 15:01:54 +0000 (15:01 +0000)]
Standardize on the diagnostics given when someone gives
too few operands ("missing operand after `xxx'") or
too many operands ("extra operand `xxx'").
Include "quote.h" and/or "error.h" if it wasn't already being included.
(beyond, main): Likewise.
Jim Meyering [Sun, 20 Jun 2004 06:49:42 +0000 (06:49 +0000)]
(print_line): Don't truncate user names at 8 bytes.
Problem reported by Guido Leenders in:
http://lists.gnu.org/archive/html/bug-coreutils/2004-06/msg00056.html