Prefer off_t to uintmax_t for continued_file_*

* src/buffer.c (continued_file_size, continued_file_offset):
Now off_t, not uintmax_t.  All uses changed.
* src/common.h (UINTMAX_FROM_HEADER):
* src/list.c (uintmax_from_header):
Remove; unused.
* src/list.c (simple_print_header):
* src/xheader.c (volume_size_decoder, volume_offset_decoder):
Treat offset as off_t, not uintmax_t.
This commit is contained in:
Paul Eggert
2024-11-01 09:40:36 -07:00
parent c0ef66da92
commit d68c37b640
4 changed files with 16 additions and 25 deletions

View File

@@ -97,8 +97,8 @@ static void (*flush_read_ptr) (void);
char *volume_label;
char *continued_file_name;
uintmax_t continued_file_size;
uintmax_t continued_file_offset;
off_t continued_file_size;
off_t continued_file_offset;
static int volno = 1; /* which volume of a multi-volume tape we're
@@ -1523,9 +1523,9 @@ try_new_volume (void)
tar_stat_destroy (&dummy);
ASSIGN_STRING_N (&continued_file_name, current_header->header.name);
continued_file_size =
UINTMAX_FROM_HEADER (current_header->header.size);
OFF_FROM_HEADER (current_header->header.size);
continued_file_offset =
UINTMAX_FROM_HEADER (current_header->oldgnu_header.offset);
OFF_FROM_HEADER (current_header->oldgnu_header.offset);
break;
default:
@@ -1559,25 +1559,25 @@ try_new_volume (void)
}
}
uintmax_t s;
off_t s;
if (ckd_add (&s, continued_file_size, continued_file_offset)
|| s != bufmap_head->sizetotal)
{
paxwarn (0, _("%s is the wrong size (%jd != %ju + %ju)"),
paxwarn (0, _("%s is the wrong size (%jd != %jd + %jd)"),
quote (continued_file_name),
intmax (bufmap_head->sizetotal),
uintmax (continued_file_size),
uintmax (continued_file_offset));
intmax (continued_file_size),
intmax (continued_file_offset));
return false;
}
if (bufmap_head->sizetotal - bufmap_head->sizeleft
!= continued_file_offset)
{
paxwarn (0, _("This volume is out of sequence (%jd - %jd != %ju)"),
paxwarn (0, _("This volume is out of sequence (%jd - %jd != %jd)"),
intmax (bufmap_head->sizetotal),
intmax (bufmap_head->sizeleft),
uintmax (continued_file_offset));
intmax (continued_file_offset));
return false;
}
}

View File

@@ -433,8 +433,8 @@ extern FILE *stdlis;
extern bool write_archive_to_stdout;
extern char *volume_label;
extern char *continued_file_name;
extern uintmax_t continued_file_size;
extern uintmax_t continued_file_offset;
extern off_t continued_file_size;
extern off_t continued_file_offset;
extern off_t records_written;
extern union block *record_start;
extern union block *record_end;
@@ -606,10 +606,7 @@ void transform_stat_info (int typeflag, struct tar_stat_info *stat_info);
char const *tartime (struct timespec t, bool full_time);
#define OFF_FROM_HEADER(where) off_from_header (where, sizeof (where))
#define UINTMAX_FROM_HEADER(where) uintmax_from_header (where, sizeof (where))
off_t off_from_header (const char *buf, idx_t size);
uintmax_t uintmax_from_header (const char *buf, idx_t size);
void list_archive (void);
void test_archive_label (void);

View File

@@ -1003,12 +1003,6 @@ uid_from_header (const char *p, idx_t s)
false, false);
}
uintmax_t
uintmax_from_header (const char *p, idx_t s)
{
return from_header (p, s, "uintmax_t", 0, UINTMAX_MAX, false, false);
}
/* Return a printable representation of T. The result points to
static storage that can be reused in the next call to this
@@ -1294,8 +1288,8 @@ simple_print_header (struct tar_stat_info *st, union block *blk,
break;
case GNUTYPE_MULTIVOL:
fprintf (stdlis, _("--Continued at byte %ju--\n"),
UINTMAX_FROM_HEADER (blk->oldgnu_header.offset));
fprintf (stdlis, _("--Continued at byte %jd--\n"),
intmax (OFF_FROM_HEADER (blk->oldgnu_header.offset)));
break;
}
}

View File

@@ -1530,7 +1530,7 @@ volume_size_decoder (MAYBE_UNUSED struct tar_stat_info *st,
char const *arg, MAYBE_UNUSED idx_t size)
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (uintmax_t), keyword))
if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), keyword))
continued_file_size = u;
}
@@ -1550,7 +1550,7 @@ volume_offset_decoder (MAYBE_UNUSED struct tar_stat_info *st,
char const *arg, MAYBE_UNUSED idx_t size)
{
uintmax_t u;
if (decode_num (&u, arg, TYPE_MAXIMUM (uintmax_t), keyword))
if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), keyword))
continued_file_offset = u;
}