diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-04-15 14:18:16 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-04-15 14:18:16 +0200 |
commit | b74e490629a75cb8c2cb798f0feadc2eb4dc5471 (patch) | |
tree | ff2e333d1939c9d326eea1da4dd26346ecfeb9db | |
parent | 58e43a4c40f56a463a475bec5ef915612fc5ed8c (diff) |
ar: stop using static data
function old new delta
static.ar_long_names 4 - -4
static.ar_long_name_size 4 - -4
get_header_ar 546 532 -14
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/1 up/down: 0/-22) Total: -22 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | archival/libarchive/get_header_ar.c | 18 | ||||
-rw-r--r-- | include/bb_archive.h | 4 |
2 files changed, 11 insertions, 11 deletions
diff --git a/archival/libarchive/get_header_ar.c b/archival/libarchive/get_header_ar.c index a97970630..adcde46d5 100644 --- a/archival/libarchive/get_header_ar.c +++ b/archival/libarchive/get_header_ar.c @@ -34,10 +34,6 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle) char raw[60]; struct ar_header formatted; } ar; -#if ENABLE_FEATURE_AR_LONG_FILENAMES - static char *ar_long_names; - static unsigned ar_long_name_size; -#endif /* dont use xread as we want to handle the error ourself */ if (read(archive_handle->src_fd, ar.raw, 60) != 60) { @@ -81,10 +77,10 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle) * stores long filename for multiple entries, they are stored * in static variable long_names for use in future entries */ - ar_long_name_size = size; - free(ar_long_names); - ar_long_names = xzalloc(size + 1); - xread(archive_handle->src_fd, ar_long_names, size); + archive_handle->ar__long_name_size = size; + free(archive_handle->ar__long_names); + archive_handle->ar__long_names = xzalloc(size + 1); + xread(archive_handle->src_fd, archive_handle->ar__long_names, size); archive_handle->offset += size; /* Return next header */ return get_header_ar(archive_handle); @@ -107,13 +103,13 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle) unsigned long_offset; /* The number after the '/' indicates the offset in the ar data section - * (saved in ar_long_names) that contains the real filename */ + * (saved in ar__long_names) that contains the real filename */ long_offset = read_num(&ar.formatted.name[1], 10, sizeof(ar.formatted.name) - 1); - if (long_offset >= ar_long_name_size) { + if (long_offset >= archive_handle->ar__long_name_size) { bb_error_msg_and_die("can't resolve long filename"); } - typed->name = xstrdup(ar_long_names + long_offset); + typed->name = xstrdup(archive_handle->ar__long_names + long_offset); } else #endif { diff --git a/include/bb_archive.h b/include/bb_archive.h index b437f1920..0252488bf 100644 --- a/include/bb_archive.h +++ b/include/bb_archive.h @@ -116,6 +116,10 @@ typedef struct archive_handle_t { #if ENABLE_FEATURE_AR_CREATE const char *ar__name; struct archive_handle_t *ar__out; +# if ENABLE_FEATURE_AR_LONG_FILENAMES + char *ar__long_names; + unsigned ar__long_name_size; +# endif #endif } archive_handle_t; /* bits in ah_flags */ |