Jim Meyering [Sat, 10 May 2003 14:54:23 +0000 (14:54 +0000)]
(main): Set program_name before first use.
Remove that (redundant) first use.
Don't exit successfully just because --verbose was specified.
Pass 0, not EXIT_SUCCESS, as first argument to error; when that
parameter is 0, error does not exit.
Jim Meyering [Thu, 8 May 2003 09:26:34 +0000 (09:26 +0000)]
(timespec_subtract): Don't modify the 2nd arg.
Work even if X-Y overflows when subtracting. Make explicit the
assumption that tv_nsec must be in range.
(clock_get_realtime): Remove. All callers changed to invoke gettime,
for simplicity.
(xnanosleep): Check for gettime failure every time.
Jim Meyering [Thu, 8 May 2003 06:26:00 +0000 (06:26 +0000)]
(clock_get_realtime): Use gettime.c's gettime function,
rather than an inferior, open-coded version that would fail on
AIX systems due to clock_gettime failing with errno == ENOSYS.
Jim Meyering [Tue, 6 May 2003 08:51:26 +0000 (08:51 +0000)]
(GL_FUNC_GETCWD_PATH_MAX): Check for the
declaration of getcwd *before* checking for the getcwd kernel bug.
Otherwise, configure-time `checking ...' messages would be intermixed.
Jim Meyering [Sun, 4 May 2003 08:30:01 +0000 (08:30 +0000)]
(__set_errno, LOCK, UNLOCK): Define.
(unsetenv): Update from GNU libc.
Ifdef-out this function, since the only caller
is putenv.c and that file now has its own copy.
Jim Meyering [Sun, 4 May 2003 07:10:21 +0000 (07:10 +0000)]
(HAVE_WORKING_READDIR): Define to 0 if not defined.
(IF_READDIR_NEEDS_REWINDDIR): Remove.
(remove_cwd_entries): Rewrite to avoid IF_READDIR_NEEDS_REWINDDIR,
which was a bit weird because it couldn't be emulated by a function.
Jim Meyering [Sat, 3 May 2003 15:10:13 +0000 (15:10 +0000)]
Extend head to accept --lines=-N (--bytes=-N) and to print all
but the N lines (bytes) at the end of the file.
Include full-write.h, full-read.h, inttostr.h, quote.h.
Use quote() in diagnostics, rather than literal `' marks.
(copy_fd, elide_tail_bytes_pipe, elide_tail_bytes_file):
New functions.
(elide_tail_lines_pipe, elide_tail_lines_file): New functions.
(head_file): Reorganize so as to call head from only one place.
(main): Likewise, for head_file.
Handle new, undocumented option, --presume-input-pipe.
Handle negative line and byte counts.
Jim Meyering [Sat, 3 May 2003 14:24:37 +0000 (14:24 +0000)]
Skip test if the file system of `.' doesn't support
sparse files -- otherwise it'd create a file of size 8GB.
This happens on Darwin6.5 with a file system of type `hfs'.
Jim Meyering [Fri, 2 May 2003 21:42:51 +0000 (21:42 +0000)]
(canonicalize_file_name) [!HAVE_RESOLVEPATH]:
A memory-allocation error could result in heap corruption. Fix it
by also updating `dest' when rpath may be changed by xrealloc.
Jim Meyering [Fri, 2 May 2003 19:52:48 +0000 (19:52 +0000)]
(usage): Don't mention obsolescent -WIDTH option.
Instead explain about `-' and standard input.
(main): Give a proper diagnostic for e.g., `fmt -c -72'.
Jim Meyering [Fri, 2 May 2003 13:01:28 +0000 (13:01 +0000)]
(GL_FUNC_READDIR): Revive dead file. Change name to
have GL_ (not jm_) prefix. Adjust cache variables similarly.
Create 500 rather than just 300 files, to exercise bug on
Darwin6.5, too.
Jim Meyering [Fri, 2 May 2003 12:53:02 +0000 (12:53 +0000)]
Work around nasty readdir bug with Darwin6.5 and hfs file system.
(IF_READDIR_NEEDS_REWINDDIR): Define.
[! HAVE_WORKING_READDIR] (remove_cwd_entries): If readdir has just
returned NULL and there has been at least one successful unlink or
rmdir call since the opendir or previous rewinddir, then call
rewinddir and reiterate the loop.
Jim Meyering [Thu, 1 May 2003 17:49:41 +0000 (17:49 +0000)]
Create 500 rather than just 300 files.
There's a bug in Darwin6.5's readdir that shows up only with
338 or more files.
Fix a bug in this test: `cd $pwd' (not to `..'), now that $tmp
has two components.
Jim Meyering [Thu, 1 May 2003 16:25:13 +0000 (16:25 +0000)]
Change type of n_units, n_bytes, n_lines to be `uintmax_t'.
(dump_remainder): Move two declarations `down' into the scope
where they are used.
(xlseek): Return the resulting offset.
(file_lines): Rename parameter, file_length, to end_pos.
(pipe_lines): Don't coerce safe_read return value to `int'.
Adapt tests accordingly.
(pipe_bytes) [struct charbuffer] (nbytes): Change type from `int'
to `unsigned int'.
Change type of `total_bytes' from `int' to `size_t',
since the former wouldn't always be wide enough.
Don't coerce safe_read return value to `int',
and adapt tests accordingly.
Now that testing for a read error no longer involves
using `tmp', handle that case *after* freeing `tmp'.
(start_bytes): Clean up.
(tail_bytes): Now that `n_bytes' may be larger than
OFF_T_MAX, test for that condition and, if it's true, don't
use lseek optimizations.
(parse_options): Don't fail just because N_UNITS is larger than
the maximum size of a file -- tail may be applied to an input
stream (e.g., a pipe) with more data than that.