mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-04-26 19:35:16 +00:00
Remove defines and declarations imported from paxutils
This commit is contained in:
71
src/common.h
71
src/common.h
@@ -50,31 +50,10 @@
|
||||
# define GLOBAL extern
|
||||
#endif
|
||||
|
||||
/* Exit status for GNU tar. Let's try to keep this list as simple as
|
||||
possible. -d option strongly invites a status different for unequal
|
||||
comparison and other errors. */
|
||||
GLOBAL int exit_status;
|
||||
#define TAREXIT_SUCCESS PAXEXIT_SUCCESS
|
||||
#define TAREXIT_DIFFERS PAXEXIT_DIFFERS
|
||||
#define TAREXIT_FAILURE PAXEXIT_FAILURE
|
||||
|
||||
#define TAREXIT_SUCCESS 0
|
||||
#define TAREXIT_DIFFERS 1
|
||||
#define TAREXIT_FAILURE 2
|
||||
|
||||
/* Both WARN and ERROR write a message on stderr and continue processing,
|
||||
however ERROR manages so tar will exit unsuccessfully. FATAL_ERROR
|
||||
writes a message on stderr and aborts immediately, with another message
|
||||
line telling so. USAGE_ERROR works like FATAL_ERROR except that the
|
||||
other message line suggests trying --help. All four macros accept a
|
||||
single argument of the form ((0, errno, _("FORMAT"), Args...)). errno
|
||||
is zero when the error is not being detected by the system. */
|
||||
|
||||
#define WARN(Args) \
|
||||
error Args
|
||||
#define ERROR(Args) \
|
||||
(error Args, exit_status = TAREXIT_FAILURE)
|
||||
#define FATAL_ERROR(Args) \
|
||||
(error Args, fatal_exit ())
|
||||
#define USAGE_ERROR(Args) \
|
||||
(error Args, usage (TAREXIT_FAILURE))
|
||||
|
||||
#include "arith.h"
|
||||
#include <backupfile.h>
|
||||
@@ -88,6 +67,8 @@ GLOBAL int exit_status;
|
||||
#define obstack_chunk_free free
|
||||
#include <obstack.h>
|
||||
|
||||
#include <paxerror.h>
|
||||
|
||||
/* Log base 2 of common values. */
|
||||
#define LG_8 3
|
||||
#define LG_64 6
|
||||
@@ -444,7 +425,6 @@ void verify_volume (void);
|
||||
void extr_init (void);
|
||||
void extract_archive (void);
|
||||
void extract_finish (void);
|
||||
void fatal_exit (void) __attribute__ ((noreturn));
|
||||
|
||||
/* Module delete.c. */
|
||||
|
||||
@@ -484,9 +464,6 @@ extern size_t recent_long_link_blocks;
|
||||
|
||||
void decode_header (union block *, struct tar_stat_info *,
|
||||
enum archive_format *, int);
|
||||
#define STRINGIFY_BIGINT(i, b) \
|
||||
stringify_uintmax_t_backwards ((uintmax_t) (i), (b) + UINTMAX_STRSIZE_BOUND)
|
||||
char *stringify_uintmax_t_backwards (uintmax_t, char *);
|
||||
char const *tartime (time_t);
|
||||
|
||||
#define GID_FROM_HEADER(where) gid_from_header (where, sizeof (where))
|
||||
@@ -553,51 +530,13 @@ int deref_stat (bool, char const *, struct stat *);
|
||||
int chdir_arg (char const *);
|
||||
void chdir_do (int);
|
||||
|
||||
void decode_mode (mode_t, char *);
|
||||
|
||||
void chdir_fatal (char const *) __attribute__ ((noreturn));
|
||||
void chmod_error_details (char const *, mode_t);
|
||||
void chown_error_details (char const *, uid_t, gid_t);
|
||||
void close_error (char const *);
|
||||
void close_warn (char const *);
|
||||
void close_diag (char const *name);
|
||||
void exec_fatal (char const *) __attribute__ ((noreturn));
|
||||
void link_error (char const *, char const *);
|
||||
void mkdir_error (char const *);
|
||||
void mkfifo_error (char const *);
|
||||
void mknod_error (char const *);
|
||||
void open_error (char const *);
|
||||
void open_fatal (char const *) __attribute__ ((noreturn));
|
||||
void open_warn (char const *);
|
||||
void open_diag (char const *name);
|
||||
void read_error (char const *);
|
||||
void read_error_details (char const *, off_t, size_t);
|
||||
void read_fatal (char const *) __attribute__ ((noreturn));
|
||||
void read_fatal_details (char const *, off_t, size_t) __attribute__ ((noreturn));
|
||||
void read_warn_details (char const *, off_t, size_t);
|
||||
void read_diag_details (char const *name, off_t offset, size_t size);
|
||||
void readlink_error (char const *);
|
||||
void readlink_warn (char const *);
|
||||
void readlink_diag (char const *name);
|
||||
void savedir_error (char const *);
|
||||
void savedir_warn (char const *);
|
||||
void savedir_diag (char const *name);
|
||||
void seek_error (char const *);
|
||||
void seek_error_details (char const *, off_t);
|
||||
void seek_warn (char const *);
|
||||
void seek_warn_details (char const *, off_t);
|
||||
void seek_diag_details (char const *, off_t);
|
||||
void stat_fatal (char const *);
|
||||
void stat_error (char const *);
|
||||
void stat_warn (char const *);
|
||||
void stat_diag (char const *name);
|
||||
void symlink_error (char const *, char const *);
|
||||
void truncate_error (char const *);
|
||||
void truncate_warn (char const *);
|
||||
void unlink_error (char const *);
|
||||
void utime_error (char const *);
|
||||
void waitpid_error (char const *);
|
||||
void write_error (char const *);
|
||||
void write_error_details (char const *, size_t, size_t);
|
||||
void write_fatal (char const *) __attribute__ ((noreturn));
|
||||
void write_fatal_details (char const *, ssize_t, size_t)
|
||||
|
||||
16
src/list.c
16
src/list.c
@@ -920,18 +920,6 @@ uintmax_from_header (const char *p, size_t s)
|
||||
}
|
||||
|
||||
|
||||
/* Format O as a null-terminated decimal string into BUF _backwards_;
|
||||
return pointer to start of result. */
|
||||
char *
|
||||
stringify_uintmax_t_backwards (uintmax_t o, char *buf)
|
||||
{
|
||||
*--buf = '\0';
|
||||
do
|
||||
*--buf = '0' + (int) (o % 10);
|
||||
while ((o /= 10) != 0);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/* Return a printable representation of T. The result points to
|
||||
static storage that can be reused in the next call to this
|
||||
function, to ctime, or to asctime. */
|
||||
@@ -1092,7 +1080,7 @@ print_header (struct tar_stat_info *st, off_t block_ordinal)
|
||||
break;
|
||||
}
|
||||
|
||||
decode_mode (st->stat.st_mode, modes + 1);
|
||||
pax_decode_mode (st->stat.st_mode, modes + 1);
|
||||
|
||||
/* Time stamp. */
|
||||
|
||||
@@ -1251,7 +1239,7 @@ print_for_mkdir (char *dirname, int length, mode_t mode)
|
||||
/* File type and modes. */
|
||||
|
||||
modes[0] = 'd';
|
||||
decode_mode (mode, modes + 1);
|
||||
pax_decode_mode (mode, modes + 1);
|
||||
|
||||
if (block_number_option)
|
||||
{
|
||||
|
||||
340
src/misc.c
340
src/misc.c
@@ -24,8 +24,6 @@
|
||||
#include <save-cwd.h>
|
||||
#include <unlinkdir.h>
|
||||
|
||||
static void call_arg_fatal (char const *, char const *)
|
||||
__attribute__ ((noreturn));
|
||||
|
||||
/* Handling strings. */
|
||||
|
||||
@@ -523,105 +521,6 @@ chdir_do (int i)
|
||||
}
|
||||
}
|
||||
|
||||
/* Decode MODE from its binary form in a stat structure, and encode it
|
||||
into a 9-byte string STRING, terminated with a NUL. */
|
||||
|
||||
void
|
||||
decode_mode (mode_t mode, char *string)
|
||||
{
|
||||
*string++ = mode & S_IRUSR ? 'r' : '-';
|
||||
*string++ = mode & S_IWUSR ? 'w' : '-';
|
||||
*string++ = (mode & S_ISUID
|
||||
? (mode & S_IXUSR ? 's' : 'S')
|
||||
: (mode & S_IXUSR ? 'x' : '-'));
|
||||
*string++ = mode & S_IRGRP ? 'r' : '-';
|
||||
*string++ = mode & S_IWGRP ? 'w' : '-';
|
||||
*string++ = (mode & S_ISGID
|
||||
? (mode & S_IXGRP ? 's' : 'S')
|
||||
: (mode & S_IXGRP ? 'x' : '-'));
|
||||
*string++ = mode & S_IROTH ? 'r' : '-';
|
||||
*string++ = mode & S_IWOTH ? 'w' : '-';
|
||||
*string++ = (mode & S_ISVTX
|
||||
? (mode & S_IXOTH ? 't' : 'T')
|
||||
: (mode & S_IXOTH ? 'x' : '-'));
|
||||
*string = '\0';
|
||||
}
|
||||
|
||||
/* Report an error associated with the system call CALL and the
|
||||
optional name NAME. */
|
||||
static void
|
||||
call_arg_error (char const *call, char const *name)
|
||||
{
|
||||
int e = errno;
|
||||
/* TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
|
||||
Directly translating this to another language will not work, first because
|
||||
%s itself is not translated.
|
||||
Translate it as `%s: Function %s failed'. */
|
||||
ERROR ((0, e, _("%s: Cannot %s"), quotearg_colon (name), call));
|
||||
}
|
||||
|
||||
/* Report a fatal error associated with the system call CALL and
|
||||
the optional file name NAME. */
|
||||
static void
|
||||
call_arg_fatal (char const *call, char const *name)
|
||||
{
|
||||
int e = errno;
|
||||
/* TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
|
||||
Directly translating this to another language will not work, first because
|
||||
%s itself is not translated.
|
||||
Translate it as `%s: Function %s failed'. */
|
||||
FATAL_ERROR ((0, e, _("%s: Cannot %s"), quotearg_colon (name), call));
|
||||
}
|
||||
|
||||
/* Report a warning associated with the system call CALL and
|
||||
the optional file name NAME. */
|
||||
static void
|
||||
call_arg_warn (char const *call, char const *name)
|
||||
{
|
||||
int e = errno;
|
||||
/* TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
|
||||
Directly translating this to another language will not work, first because
|
||||
%s itself is not translated.
|
||||
Translate it as `%s: Function %s failed'. */
|
||||
WARN ((0, e, _("%s: Warning: Cannot %s"), quotearg_colon (name), call));
|
||||
}
|
||||
|
||||
void
|
||||
chdir_fatal (char const *name)
|
||||
{
|
||||
call_arg_fatal ("chdir", name);
|
||||
}
|
||||
|
||||
void
|
||||
chmod_error_details (char const *name, mode_t mode)
|
||||
{
|
||||
int e = errno;
|
||||
char buf[10];
|
||||
decode_mode (mode, buf);
|
||||
ERROR ((0, e, _("%s: Cannot change mode to %s"),
|
||||
quotearg_colon (name), buf));
|
||||
}
|
||||
|
||||
void
|
||||
chown_error_details (char const *name, uid_t uid, gid_t gid)
|
||||
{
|
||||
int e = errno;
|
||||
ERROR ((0, e, _("%s: Cannot change ownership to uid %lu, gid %lu"),
|
||||
quotearg_colon (name), (unsigned long) uid, (unsigned long) gid));
|
||||
}
|
||||
|
||||
void
|
||||
close_error (char const *name)
|
||||
{
|
||||
call_arg_error ("close", name);
|
||||
}
|
||||
|
||||
void
|
||||
close_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("close", name);
|
||||
}
|
||||
|
||||
void
|
||||
close_diag (char const *name)
|
||||
{
|
||||
@@ -631,56 +530,6 @@ close_diag (char const *name)
|
||||
close_error (name);
|
||||
}
|
||||
|
||||
void
|
||||
exec_fatal (char const *name)
|
||||
{
|
||||
call_arg_fatal ("exec", name);
|
||||
}
|
||||
|
||||
void
|
||||
link_error (char const *target, char const *source)
|
||||
{
|
||||
int e = errno;
|
||||
ERROR ((0, e, _("%s: Cannot hard link to %s"),
|
||||
quotearg_colon (source), quote_n (1, target)));
|
||||
}
|
||||
|
||||
void
|
||||
mkdir_error (char const *name)
|
||||
{
|
||||
call_arg_error ("mkdir", name);
|
||||
}
|
||||
|
||||
void
|
||||
mkfifo_error (char const *name)
|
||||
{
|
||||
call_arg_error ("mkfifo", name);
|
||||
}
|
||||
|
||||
void
|
||||
mknod_error (char const *name)
|
||||
{
|
||||
call_arg_error ("mknod", name);
|
||||
}
|
||||
|
||||
void
|
||||
open_error (char const *name)
|
||||
{
|
||||
call_arg_error ("open", name);
|
||||
}
|
||||
|
||||
void
|
||||
open_fatal (char const *name)
|
||||
{
|
||||
call_arg_fatal ("open", name);
|
||||
}
|
||||
|
||||
void
|
||||
open_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("open", name);
|
||||
}
|
||||
|
||||
void
|
||||
open_diag (char const *name)
|
||||
{
|
||||
@@ -690,38 +539,6 @@ open_diag (char const *name)
|
||||
open_error (name);
|
||||
}
|
||||
|
||||
void
|
||||
read_error (char const *name)
|
||||
{
|
||||
call_arg_error ("read", name);
|
||||
}
|
||||
|
||||
void
|
||||
read_error_details (char const *name, off_t offset, size_t size)
|
||||
{
|
||||
char buf[UINTMAX_STRSIZE_BOUND];
|
||||
int e = errno;
|
||||
ERROR ((0, e,
|
||||
ngettext ("%s: Read error at byte %s, while reading %lu byte",
|
||||
"%s: Read error at byte %s, while reading %lu bytes",
|
||||
size),
|
||||
quotearg_colon (name), STRINGIFY_BIGINT (offset, buf),
|
||||
(unsigned long) size));
|
||||
}
|
||||
|
||||
void
|
||||
read_warn_details (char const *name, off_t offset, size_t size)
|
||||
{
|
||||
char buf[UINTMAX_STRSIZE_BOUND];
|
||||
int e = errno;
|
||||
WARN ((0, e,
|
||||
ngettext ("%s: Warning: Read error at byte %s, while reading %lu byte",
|
||||
"%s: Warning: Read error at byte %s, while reading %lu bytes",
|
||||
size),
|
||||
quotearg_colon (name), STRINGIFY_BIGINT (offset, buf),
|
||||
(unsigned long) size));
|
||||
}
|
||||
|
||||
void
|
||||
read_diag_details (char const *name, off_t offset, size_t size)
|
||||
{
|
||||
@@ -731,37 +548,6 @@ read_diag_details (char const *name, off_t offset, size_t size)
|
||||
read_error_details (name, offset, size);
|
||||
}
|
||||
|
||||
void
|
||||
read_fatal (char const *name)
|
||||
{
|
||||
call_arg_fatal ("read", name);
|
||||
}
|
||||
|
||||
void
|
||||
read_fatal_details (char const *name, off_t offset, size_t size)
|
||||
{
|
||||
char buf[UINTMAX_STRSIZE_BOUND];
|
||||
int e = errno;
|
||||
FATAL_ERROR ((0, e,
|
||||
ngettext ("%s: Read error at byte %s, reading %lu byte",
|
||||
"%s: Read error at byte %s, reading %lu bytes",
|
||||
size),
|
||||
quotearg_colon (name), STRINGIFY_BIGINT (offset, buf),
|
||||
(unsigned long) size));
|
||||
}
|
||||
|
||||
void
|
||||
readlink_error (char const *name)
|
||||
{
|
||||
call_arg_error ("readlink", name);
|
||||
}
|
||||
|
||||
void
|
||||
readlink_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("readlink", name);
|
||||
}
|
||||
|
||||
void
|
||||
readlink_diag (char const *name)
|
||||
{
|
||||
@@ -771,18 +557,6 @@ readlink_diag (char const *name)
|
||||
readlink_error (name);
|
||||
}
|
||||
|
||||
void
|
||||
savedir_error (char const *name)
|
||||
{
|
||||
call_arg_error ("savedir", name);
|
||||
}
|
||||
|
||||
void
|
||||
savedir_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("savedir", name);
|
||||
}
|
||||
|
||||
void
|
||||
savedir_diag (char const *name)
|
||||
{
|
||||
@@ -792,38 +566,6 @@ savedir_diag (char const *name)
|
||||
savedir_error (name);
|
||||
}
|
||||
|
||||
void
|
||||
seek_error (char const *name)
|
||||
{
|
||||
call_arg_error ("seek", name);
|
||||
}
|
||||
|
||||
void
|
||||
seek_error_details (char const *name, off_t offset)
|
||||
{
|
||||
char buf[UINTMAX_STRSIZE_BOUND];
|
||||
int e = errno;
|
||||
ERROR ((0, e, _("%s: Cannot seek to %s"),
|
||||
quotearg_colon (name),
|
||||
STRINGIFY_BIGINT (offset, buf)));
|
||||
}
|
||||
|
||||
void
|
||||
seek_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("seek", name);
|
||||
}
|
||||
|
||||
void
|
||||
seek_warn_details (char const *name, off_t offset)
|
||||
{
|
||||
char buf[UINTMAX_STRSIZE_BOUND];
|
||||
int e = errno;
|
||||
WARN ((0, e, _("%s: Warning: Cannot seek to %s"),
|
||||
quotearg_colon (name),
|
||||
STRINGIFY_BIGINT (offset, buf)));
|
||||
}
|
||||
|
||||
void
|
||||
seek_diag_details (char const *name, off_t offset)
|
||||
{
|
||||
@@ -833,32 +575,6 @@ seek_diag_details (char const *name, off_t offset)
|
||||
seek_error_details (name, offset);
|
||||
}
|
||||
|
||||
void
|
||||
symlink_error (char const *contents, char const *name)
|
||||
{
|
||||
int e = errno;
|
||||
ERROR ((0, e, _("%s: Cannot create symlink to %s"),
|
||||
quotearg_colon (name), quote_n (1, contents)));
|
||||
}
|
||||
|
||||
void
|
||||
stat_fatal (char const *name)
|
||||
{
|
||||
call_arg_fatal ("stat", name);
|
||||
}
|
||||
|
||||
void
|
||||
stat_error (char const *name)
|
||||
{
|
||||
call_arg_error ("stat", name);
|
||||
}
|
||||
|
||||
void
|
||||
stat_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("stat", name);
|
||||
}
|
||||
|
||||
void
|
||||
stat_diag (char const *name)
|
||||
{
|
||||
@@ -868,61 +584,6 @@ stat_diag (char const *name)
|
||||
stat_error (name);
|
||||
}
|
||||
|
||||
void
|
||||
truncate_error (char const *name)
|
||||
{
|
||||
call_arg_error ("truncate", name);
|
||||
}
|
||||
|
||||
void
|
||||
truncate_warn (char const *name)
|
||||
{
|
||||
call_arg_warn ("truncate", name);
|
||||
}
|
||||
|
||||
void
|
||||
unlink_error (char const *name)
|
||||
{
|
||||
call_arg_error ("unlink", name);
|
||||
}
|
||||
|
||||
void
|
||||
utime_error (char const *name)
|
||||
{
|
||||
call_arg_error ("utime", name);
|
||||
}
|
||||
|
||||
void
|
||||
waitpid_error (char const *name)
|
||||
{
|
||||
call_arg_error ("waitpid", name);
|
||||
}
|
||||
|
||||
void
|
||||
write_error (char const *name)
|
||||
{
|
||||
call_arg_error ("write", name);
|
||||
}
|
||||
|
||||
void
|
||||
write_error_details (char const *name, size_t status, size_t size)
|
||||
{
|
||||
if (status == 0)
|
||||
write_error (name);
|
||||
else
|
||||
ERROR ((0, 0,
|
||||
ngettext ("%s: Wrote only %lu of %lu byte",
|
||||
"%s: Wrote only %lu of %lu bytes",
|
||||
size),
|
||||
name, (unsigned long int) status, (unsigned long int) size));
|
||||
}
|
||||
|
||||
void
|
||||
write_fatal (char const *name)
|
||||
{
|
||||
call_arg_fatal ("write", name);
|
||||
}
|
||||
|
||||
void
|
||||
write_fatal_details (char const *name, ssize_t status, size_t size)
|
||||
{
|
||||
@@ -930,7 +591,6 @@ write_fatal_details (char const *name, ssize_t status, size_t size)
|
||||
fatal_exit ();
|
||||
}
|
||||
|
||||
|
||||
/* Fork, aborting if unsuccessful. */
|
||||
pid_t
|
||||
xfork (void)
|
||||
|
||||
Reference in New Issue
Block a user