Paul Eggert [Wed, 17 Nov 2004 03:41:16 +0000 (03:41 +0000)]
Include <limits.h>, for PATH_MAX.
(xgetcwd): Set errno correctly when failing.
Work around Solaris 9 bug: getcwd sets errno==ERANGE even though
the failure is actually due to a PATH_MAX problem.
Paul Eggert [Wed, 17 Nov 2004 01:02:47 +0000 (01:02 +0000)]
(_getopt_initialize, _getopt_internal_r, _getopt_internal):
New arg POSIXLY_CORRECT. All callers changed.
(getopt): Argv is now char * const *, as per standard.
(_getopt_internal_r, _getopt_internal): Argv is now char **,
not char *__getopt_argv_const *.
Paul Eggert [Tue, 16 Nov 2004 20:29:58 +0000 (20:29 +0000)]
(General output formatting): -x doesn't have
an operand.
(Formatting the file names): Warn that even with -N unprintable
chars are still printed as '?' some times.
(rm invocation): Reword rm -d to note that it's sometimes useful
on non-directories.
(logname invocation, users invocation, who invocation):
The utmp and wtmp file names vary from system to system.
Paul Eggert [Tue, 16 Nov 2004 07:46:08 +0000 (07:46 +0000)]
(C_ASCII, C_EBCDIC, C_IBM, C_BLOCK, C_UNBLOCK,
C_LCASE, C_UCASE, C_SWAB, C_NOERROR, C_NOTRUNC, C_SYNC, C_TWOBUFS,
C_NOCREAT, C_EXCL, C_FDATASYNC, C_FSYNC): Now constants, not
macros.
(STATUS_NOXFER, statuses): New constants.
(usage, print_stats, scanargs): Add support for status=noxfer.
(usage): Update status output to match new behavior.
(print_stats): Always output complete byte count.
Put space between numbers and units, as SI requires.
Use ngettext so that i18n can use plurals for "byte" and "second".
Don't multiply by 1e-9 (inexact); divide by 1e9 (which is exact).
(iflag_error_msgid, oflag_error_msgid): Remove; replace uses by
the string.
Paul Eggert [Mon, 15 Nov 2004 06:49:59 +0000 (06:49 +0000)]
Include "human.h".
(w_bytes, start_time): New vars.
(usage): Document new I/O statistics output
(print_stats): Output new I/O statistics.
(cleanup): Do statistics after closing stdin and stdout, so that
the times are more accurate.
(write_output, dd_copy): Count output bytes.
(main): Get initial value of clock.
Jim Meyering [Sun, 14 Nov 2004 08:56:53 +0000 (08:56 +0000)]
(usage): Put the description of `[-n] STRING'
on two lines, one for `-n STRING' and one for `STRING' so that
help2man properly escapes the `-'. Otherwise, the hyphen is
rendered inappropriately in UTF-8 locales.
Jim Meyering [Sun, 14 Nov 2004 00:20:01 +0000 (00:20 +0000)]
(close_stdout): Don't fail just because stdout was
closed initially, since some programs don't write to stdout in the
normal course of operation (other than --version and --help), and
we don't want this function to make e.g. `cp 1 2 >&-' fail.
But do fail if it was closed and someone has tried to write to it.
E.g., printf 'foo' >&-
Paul Eggert [Sat, 13 Nov 2004 04:45:58 +0000 (04:45 +0000)]
(zaptemp): Warn if a temporary file is not removed.
Prune unnecessary accesses to volatile locations, and take some
code out of the critical section that didn't need to be in it.
Paul Eggert [Sat, 13 Nov 2004 00:50:56 +0000 (00:50 +0000)]
Avoid O(N**2) behavior when there are many temporary files.
(temptail): New variable, so that we can easily append to list.
(create_temp_file): Create new files at end of list, so that
searching the list has O(N**NMERGE) behavior instead of O(N**2).
(zaptemp): Update temptail if needed.
(mergefps, merge): Accept new arg that counts temp files, and keep it
up to date as we create and remove temporaries. This is for
efficiency, so that we don't call zaptemp so often.
All callers changed.
(sort): Don't create array in reverse order, since the list of
temporaries is now in the correct order.
(zaptemp): Protect against race condition: if 'sort' is
interrupted in the middle of zaptemp, it might unlink the
temporary file twice, and the second time this happens the file
might already have been created by some other process.
(create_temp_file): Use offsetof for clarity.
(die): Move it up earlier, to clean up the code a bit.
Paul Eggert [Fri, 12 Nov 2004 19:35:54 +0000 (19:35 +0000)]
(strtoumax): Declare if not declared.
(skip_to_page, first_page_number, last_page_number, page_number,
first_last_page, print_header):
Use uintmax_t for page numbers.
(first_last_page): Remove unnecessary forward declaration.
Do not modify arg (it is now a const pointer).
Return a true if successful, false (without print a diagnostic)
otherwise.
(main): If +XXX does not specify a valid page range, treat it
as a file name. This follows the response to Open Group XCU ERN 41
<http://www.opengroup.org/sophocles/show_mail.tpl?source=L&listname=austin-group-l&id=7717>,
which says the behavior is allowed.
(skip_to_page): When starting page number exceeds page count,
print both numbers in the diagnostic.
(print_header): Detect page number overflow.