Jim Meyering [Fri, 28 Sep 2001 19:51:19 +0000 (19:51 +0000)]
Include "hash.h" and "same.h".
(struct Dest_info): Define.
(dest_info): Declare global.
(DEST_INFO_INITIAL_CAPACITY): Define.
(hash_pjw): New function.
(dest_info_hash): Likewise.
(dest_info_compare): Likewise.
(dest_info_init): Likewise.
(seen_dest): Likewise.
(record_dest): Likewise.
(copy_internal): If the destination exists, fail if it's in the set
of files that have already been created as part of this mv or cp.
(copy_internal) [move_mode]: Record the destination dev/ino/filename.
(copy_internal) [!move_mode, regular file]: Likewise.
Jim Meyering [Fri, 28 Sep 2001 19:43:17 +0000 (19:43 +0000)]
Accept new option: --reply={yes,no,query}
(enum) [REPLY_OPTION]: Define.
(usage): Describe new option.
Split long usage string into smaller pieces.
(main): Handle new option.
Jim Meyering [Fri, 28 Sep 2001 19:37:38 +0000 (19:37 +0000)]
* xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX):
Check for strtoul and strtoumax,
as those declarations are made even in the signed case.
* xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX):
Likewise, for strtol and strtoimax.
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.