Jim Meyering [Sun, 20 Jul 2003 15:45:29 +0000 (15:45 +0000)]
(write_counts): Add a comment.
(wc): Rename `file' parameter.
Set new local, `file', to be the file name, or (when it's NULL)
_("standard output") so that all uses of `file' use the proper value.
Use STREQ, not strcmp.
Jim Meyering [Sun, 20 Jul 2003 15:24:21 +0000 (15:24 +0000)]
wc count field widths now are heuristically adjusted depending
on the input size, if known. If only one count is printed, it
is guaranteed to be printed without leading spaces.
Previously, wc did not align the count fields if
POSIXLY_CORRECT was set, but POSIX did not actually require
this undesirable behavior, so it has been removed.
Jim Meyering [Sun, 20 Jul 2003 15:22:25 +0000 (15:22 +0000)]
(number_width): New var.
(posixly_correct): Remove.
(struct fstatus): New struct.
(write_counts): Output fields of width number_width.
Do not worry about POSIXLY_CORRECT.
Use null file, not empty-string file, to denote stdin,
since "" is a valid file name on some hosts.
(wc, wc_file): New arg fstatus. Use it to avoid invoking fstat
if possible.
(wc): Avoid problems if end_pos - current_pos overflows.
Do not print odd message if stdin has a read error.
(get_input_fstatus, compute_number_width): New functions.
(main): Use them to implement the new behavior.
Ignore POSIXLY_CORRECT.
Jim Meyering [Sat, 19 Jul 2003 11:19:12 +0000 (11:19 +0000)]
Use `id -u' to see if we're running as root,
rather than trying go write to an write-protected file.
When running as root, ensure $NON_ROOT_USERNAME is valid.
When running as root with `require-non-root', ensure that `.'
is writable by $NON_ROOT_USERNAME, then reinvoke $0 set-user-ID
to $NON_ROOT_USERNAME. If `.' is not writable, then skip the test.
Jim Meyering [Sat, 19 Jul 2003 08:08:56 +0000 (08:08 +0000)]
Likewise. Include "closeout.h" right after config.h,
to test that it can stand by itself. Include "exitfail.h".
Clients should set exit_failure instead.
(EXIT_FAILURE): Remove; no longer needed. Do not include <stdlib.h>.
Jim Meyering [Fri, 18 Jul 2003 08:38:43 +0000 (08:38 +0000)]
(usage): Don't call close_stdout here.
(main): Use close_stdout via atexit.
Now `su --version > /dev/full' fails, as it should.
Somehow, the change of 2000-05-07 that purports to fix this
was not checked in.
Jim Meyering [Fri, 18 Jul 2003 07:50:39 +0000 (07:50 +0000)]
(expr invocation): Exit status is 2 if the
expression is syntactically invalid, 3 if there is some other error.
This change is for conformance to POSIX.
Jim Meyering [Fri, 18 Jul 2003 07:22:38 +0000 (07:22 +0000)]
Include "exitfail.h", "quotearg.h".
(EXPR_INVALID, EXPR_ERROR): New constants.
(nomoreargs, null, toarith, nextarg): Return bool, not int.
(syntax_error): New function, exiting with status 2. Use it
insteading of printing "syntax error" ourselves.
(main): Initialize exit_failure to EXPR_ERROR.
Exit with EXPR_INVALID on syntax error (too few arguments).
(nextarg): Use strcmp, not strcoll; strcoll might return
an undesirable 0, or might fail.
(docolon, eval4, eval3): Exit with status 3 on invalid argument type
or other such error.
(eval2): Report an error if strcoll fails in a string comparison.
Jim Meyering [Wed, 16 Jul 2003 19:54:13 +0000 (19:54 +0000)]
This script would have caught at least two recent bugs: those in [ and kill.
Revive this script.
It wasn't doing anything useful, since $all_programs wasn't being
defined by the invoking Makefile.am.
Reflect that nohup is no longer a script, so don't exclude it.
Add framework to handle the programs added since it was last run:
kill, stat, unlink, [, link, readlink.
Fix path-related problems deriving from the move of this script
from src/ to its present location.