diff options
author | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2023-04-17 11:10:10 (EDT) |
---|---|---|
committer | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2023-04-17 11:22:07 (EDT) |
commit | deecdb9aa40e64b62ad594a97cc5d941a27a576e (patch) | |
tree | 7da38b3e02470ea84a92f351dcdd4c1ef0fc7e90 /src | |
parent | 0f96542e7c0f0555b2b2ef7ac52c574a616fa7b2 (diff) |
ustar, main: Show size of member files
Also fix integer type (maximum file size is 8^12-1 = 68719476735).
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/ustar.c | 3 | ||||
-rw-r--r-- | src/ustar.h | 5 |
3 files changed, 7 insertions, 3 deletions
@@ -152,7 +152,7 @@ _opkg_opk_main_list_members(struct opkg_opk_ustar *ustar) int ret; while ((ret = opkg_opk_ustar_list(ustar, &member)) == OPKG_OPK_OK) { - puts(member.name); + printf("%11d %s\n", member.size, member.name); } if (ret == OPKG_OPK_ERROR) { fputs("Error: Failed to list data files\n", stderr); diff --git a/src/ustar.c b/src/ustar.c index d728cf5..a4395f4 100644 --- a/src/ustar.c +++ b/src/ustar.c @@ -50,7 +50,7 @@ struct _opkg_opk_ustar_header { struct opkg_opk_ustar { struct opkg_opk_gzip *gzip; - int32_t data_size_remaining; + int64_t data_size_remaining; unsigned char read_record[OPKG_OPK_USTAR_RECORD_SIZE]; }; @@ -118,6 +118,7 @@ opkg_opk_ustar_list(struct opkg_opk_ustar *ustar, memcpy(member->name, header.name, sizeof(header.name)); member->name[sizeof(header.name)] = '\0'; } + member->size = ustar->data_size_remaining; while (ustar->data_size_remaining > 0) { if (opkg_opk_ustar_read(ustar, NULL, NULL) == OPKG_OPK_ERROR) { diff --git a/src/ustar.h b/src/ustar.h index de782b8..4015639 100644 --- a/src/ustar.h +++ b/src/ustar.h @@ -20,6 +20,8 @@ #ifndef OPKG_OPK_USTAR_H_ #define OPKG_OPK_USTAR_H_ +#include <stdint.h> + #define OPKG_OPK_USTAR_RECORD_SIZE 512 #define OPKG_OPK_USTAR_NAME_MAX_LEN 257 /* prefix[155] + '/' + name[100] + '\0' */ @@ -27,7 +29,8 @@ struct opkg_opk_ustar; struct opkg_opk_ustar_member { - char name[OPKG_OPK_USTAR_NAME_MAX_LEN]; + char name[OPKG_OPK_USTAR_NAME_MAX_LEN]; + int64_t size; }; struct opkg_opk_ustar * |