Jim Meyering [Sat, 22 Sep 2001 08:27:27 +0000 (08:27 +0000)]
Mostly clean-up (modulo the better diagnostic).
(copy_internal): Rename parameter, move_mode, to
command_line_arg, and adjust caller. Now, move_mode is a local
that is derived from command_line_arg.
Factor some involved code to produce something slightly more readable.
Use x->move_mode, not move_mode in determining which diagnostic
to give (`backing up %s would destroy source; %s not moved').
Jim Meyering [Thu, 20 Sep 2001 14:46:55 +0000 (14:46 +0000)]
(strtoimax): Guard declaration with
`#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'.
The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0)
have their own, conflicting declaration of strtoimax in sys/inttypes.h.
(strtoumax): Likewise, for completeness (it wasn't necessary).
Jim Meyering [Thu, 20 Sep 2001 08:44:12 +0000 (08:44 +0000)]
(MAX_ADDRESS_LENGTH, pseudo_offset, format_address,
n_bytes_to_skip, skip, format_address_none,
format_address_std, format_address_paren,
format_address_label, write_block, parse_old_offset, dump,
dump_strings, main):
Use uintmax_t, not off_t, for file addresses, so that we can
handle multiple large files even if the sum of their sizes
exceeds off_t limits.
(print_s_char, print_char, print_s_short, print_short,
print_int, print_long, print_long_long, print_float,
print_double, print_long_double, dump_hexl_mode_trailer,
print_named_ascii, print_ascii, decode_one_format):
Use size_t, not off_t, for in-memory byte counts.
(end_offset): New var.
(dump, dump_strings): Use it.
(main): Set it, but check for overflow while doing so.
(skip): Report an error if an in-range lseek fails on a
regular file, as something's seriously wrong. Check for
negative regular file sizes (possible with some broken NFS
implementations).
(parse_old_offset): Now all offsets are valid, so return a
success boolean and take a pointer to an offset as an argument.
All callers changed.
(dump_strings): Check for overflow when computing end_offset -
string_min.
(main): Remove OFF_T_MAX checks that are no longer needed.
Don't bother assigning through temporary when there's no size
limit to check.
Jim Meyering [Wed, 19 Sep 2001 10:19:19 +0000 (10:19 +0000)]
When --read-bytes=N (-N N) is used, disable input buffering in
the standard I/O library. Otherwise, od would read more input
than requested. This could have caused problems when reading
from pipes, character devices, and open file descriptors inherited
from a parent process.
* src/od.c (open_next_file): New function, factored out of...
(skip): Adapt to use open_next_file.
(read_char): Likewise.
(read_block): Likewise.
(main): Likewise.
(dump): Fix an off-by-one error that could have made od fail to
report a read error when reading from a named file (not stdin).
(check_and_close): Account for the fact that in_stream may now be NULL.
(usage): Correct descriptions of -j and -N options.
Patch by Ian Bruce.
Jim Meyering [Mon, 17 Sep 2001 10:24:20 +0000 (10:24 +0000)]
(HAVE_LONG_LONG): Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned.
(strtoimax): Use sizeof (long), not sizeof strtol (ptr, endptr, base),
to work around bug in IBM C compiler.
Jim Meyering [Sun, 16 Sep 2001 09:28:34 +0000 (09:28 +0000)]
(digest_check): On systems for which setmode actually
does something, arrange to read the file containing checksum strings
in text mode. Based on a patch from Chris Faylor.
Jim Meyering [Sat, 15 Sep 2001 17:07:24 +0000 (17:07 +0000)]
(EISDIR): Define to 0, if not already defined.
(touch): Give a better diagnostic for e.g., `touch /' by non-root.
Based on a patch from Michael Stone.
Reported by Jeff Sheinberg as Debian bug #101677.
Jim Meyering [Sat, 15 Sep 2001 11:38:36 +0000 (11:38 +0000)]
Accept new option: --reply={yes,no,query}
Include argmatch.h.
(enum) [REPLY_OPTION]: Define.
(usage): Describe new option.
Split long usage string into smaller pieces.
(main): Handle new option.
Jim Meyering [Wed, 12 Sep 2001 09:07:35 +0000 (09:07 +0000)]
The command `echo a|./fmt -2147483647' would cause fmt to segfault.
(fmt_paragraph): Test for sentinal directly, rather than
doing arithmetic with it's potentially large (INT_MAX) length.