summaryrefslogtreecommitdiffstats
path: root/src/ustar.c
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2023-05-12 12:41:13 (EDT)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2023-05-12 12:41:13 (EDT)
commitf7237d88bcfbede42da49000f846a913a1fc1fd5 (patch)
tree282ecb36a2cc58dbcb45a734185c767dbdd001e8 /src/ustar.c
parent2768add93eed4c287ed89f5cbad1af790d938c6e (diff)
ustar: Provide devmajor and devminor in listing
Diffstat (limited to 'src/ustar.c')
-rw-r--r--src/ustar.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/ustar.c b/src/ustar.c
index 669596e..8a0a43c 100644
--- a/src/ustar.c
+++ b/src/ustar.c
@@ -178,7 +178,8 @@ opkg_opk_ustar_list(struct opkg_opk_ustar *ustar,
return OPKG_OPK_ERROR;
}
- /* Set name, mode, size, mtime, type, linkname, uname, and gname. */
+ /* Set name, mode, size, mtime, type, linkname, uname, gname, devmajor,
+ * and devminor. */
if (ustar->header.prefix[0] != '\0') {
sprintf((*member)->name, "%s/%s",
ustar->header.prefix, ustar->header.name);
@@ -237,6 +238,18 @@ opkg_opk_ustar_list(struct opkg_opk_ustar *ustar,
sizeof((*member)->uname));
strncpy((*member)->gname, ustar->header.gname,
sizeof((*member)->gname));
+ (*member)->devmajor = strtol(ustar->header.devmajor, &end,
+ OPKG_OPK_USTAR_NUM_BASE_);
+ if (*end != '\0') {
+ free(*member);
+ return OPKG_OPK_ERROR;
+ }
+ (*member)->devminor = strtol(ustar->header.devminor, &end,
+ OPKG_OPK_USTAR_NUM_BASE_);
+ if (*end != '\0') {
+ free(*member);
+ return OPKG_OPK_ERROR;
+ }
return OPKG_OPK_OK; /* Possibly more members in archive */
}