Jim Meyering [Fri, 28 Sep 2001 19:34:31 +0000 (19:34 +0000)]
(strtol): Do not declare if HAVE_DECL_STRTOL.
(strtoul): Do not declare if HAVE_DECL_STRTOUL.
(strtoimax, strtoumax): Do not declare if already defined as a macro.
Jim Meyering [Sun, 23 Sep 2001 14:24:23 +0000 (14:24 +0000)]
(jm_LIST_MOUNTED_FILESYSTEMS): In the outer getmntent if-block, don't
die if neither of the getmntent tests succeeds. Instead, just fall
through and continue with the remaianing tests.
Jim Meyering [Sun, 23 Sep 2001 09:19:42 +0000 (09:19 +0000)]
(jm_LIST_MOUNTED_FILESYSTEMS): Add a compile-test
instead of the mere test for existence of mntent.h. The latter
would get a false-positive on AIX 3.4 systems.
Jim Meyering [Sun, 23 Sep 2001 08:56:11 +0000 (08:56 +0000)]
Remove useless parentheses in #if directives.
(MOUNTED) [!defined MOUNTED]: Define to _PATH_MOUNTED, for when
the deprecated MOUNTED symbol is no longer defined in mntent.h.
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.