case 'f':
if (st)
{
- base = base_name (st->orig_file_name);
+ base = last_component (st->orig_file_name);
len += strlen (base) - 2;
}
break;
xheader_read (union block *p, size_t size)
{
size_t j = 0;
- size_t nblocks;
free (extended_header.buffer);
size += BLOCKSIZE;
extended_header.size = size;
- nblocks = (size + BLOCKSIZE - 1) / BLOCKSIZE;
extended_header.buffer = xmalloc (size + 1);
extended_header.buffer[size] = '\0';
if (size != p)
{
ERROR ((0, 0,
- _("Generated keyword/value pair is too long (keyword=%s, length=%s"),
+ _("Generated keyword/value pair is too long (keyword=%s, length=%s)"),
keyword, nbuf));
obstack_free (extended_header.stk, obstack_finish (extended_header.stk));
return false;
static void
mtime_coder (struct tar_stat_info const *st, char const *keyword,
- struct xheader *xhdr, void const *data __attribute__ ((unused)))
+ struct xheader *xhdr, void const *data)
{
- code_time (st->mtime, keyword, xhdr);
+ const struct timespec mtime = data ? *(struct timespec *) data : st->mtime;
+ code_time (mtime, keyword, xhdr);
}
static void