X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fxheader.c;h=11b725e06622c082a0255a2fbf5c8cd3419c39cd;hb=173d3229e3d4c7973cd8dba9c0113e023e7e13c6;hp=5676dcabfb5ee11c933b2e73260eb4b7d47be841;hpb=7aed52718f1b2e031450af0e2468006bd78ccfcd;p=chaz%2Ftar diff --git a/src/xheader.c b/src/xheader.c index 5676dca..11b725e 100644 --- a/src/xheader.c +++ b/src/xheader.c @@ -225,7 +225,7 @@ xheader_set_option (char *string) to the result of the basename utility on the translated file name. %p The process ID of the pax process. - %n The value of the 3rd argument. + %n The value of the 3rd argument. %% A '%' character. */ char * @@ -331,7 +331,7 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n) } free (dirp); - + /* Do not allow it to end in a slash */ while (q > buf && ISSLASH (q[-1])) q--; @@ -508,7 +508,7 @@ decode_record (char **ptr, ERROR ((0, 0, _("Extended header length is out of allowed range"))); return false; } - + if (len_max < len) { int len_len = len_lim - p; @@ -647,12 +647,10 @@ void 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'; @@ -956,7 +954,7 @@ decode_time (struct timespec *ts, char const *arg, char const *keyword) return true; } - + static void code_num (uintmax_t value, char const *keyword, struct xheader *xhdr) @@ -1094,9 +1092,10 @@ ctime_decoder (struct tar_stat_info *st, 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); + struct timespec const *mtime = data; + code_time (mtime ? *mtime : st->mtime, keyword, xhdr); } static void @@ -1380,8 +1379,8 @@ static void volume_size_coder (struct tar_stat_info const *st, char const *keyword, struct xheader *xhdr, void const *data) { - off_t v = *(off_t*)data; - code_num (v, keyword, xhdr); + off_t const *v = data; + code_num (*v, keyword, xhdr); } static void @@ -1399,8 +1398,8 @@ static void volume_offset_coder (struct tar_stat_info const *st, char const *keyword, struct xheader *xhdr, void const *data) { - off_t v = *(off_t*)data; - code_num (v, keyword, xhdr); + off_t const *v = data; + code_num (*v, keyword, xhdr); } static void @@ -1439,12 +1438,12 @@ sparse_major_decoder (struct tar_stat_info *st, if (decode_num (&u, arg, TYPE_MAXIMUM (unsigned), keyword)) st->sparse_major = u; } - + static void sparse_minor_coder (struct tar_stat_info const *st, char const *keyword, struct xheader *xhdr, void const *data) { - code_num (st->sparse_minor, keyword, xhdr); + code_num (st->sparse_minor, keyword, xhdr); } static void @@ -1457,7 +1456,7 @@ sparse_minor_decoder (struct tar_stat_info *st, if (decode_num (&u, arg, TYPE_MAXIMUM (unsigned), keyword)) st->sparse_minor = u; } - + struct xhdr_tab const xhdr_tab[] = { { "atime", atime_coder, atime_decoder, false }, { "comment", dummy_coder, dummy_decoder, false },