From f7237d88bcfbede42da49000f846a913a1fc1fd5 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Fri, 12 May 2023 12:41:13 -0400 Subject: ustar: Provide devmajor and devminor in listing --- (limited to 'src/ustar.c') 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 */ } -- cgit v0.9.1