/* * Copyright (C) 2023 Patrick McDermott * * This file is part of opkg-opk. * * opkg-opk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * opkg-opk is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with opkg-opk. If not, see . */ #ifndef OPKG_OPK_USTAR_H_ #define OPKG_OPK_USTAR_H_ #include #define OPKG_OPK_USTAR_RECORD_SIZE 512 #define OPKG_OPK_USTAR_NAME_MAX_LEN 257 /* prefix[155] + '/' + name[100] + '\0' */ struct opkg_opk_ustar; struct opkg_opk_ustar_member { char name[OPKG_OPK_USTAR_NAME_MAX_LEN]; uint16_t mode; int64_t size; int64_t mtime; char type; char linkname[100]; char uname [32]; char gname [32]; struct opkg_opk_ustar_member *next; }; struct opkg_opk_ustar * opkg_opk_ustar_init(struct opkg_opk_gzip *gzip); int opkg_opk_ustar_list(struct opkg_opk_ustar *ustar, struct opkg_opk_ustar_member **member); int opkg_opk_ustar_seek(struct opkg_opk_ustar *ustar, int num_keys, ...); int opkg_opk_ustar_read(struct opkg_opk_ustar *ustar, char **buffer, size_t *size); void opkg_opk_ustar_free(struct opkg_opk_ustar *ustar); #endif /* OPKG_OPK_USTAR_H_ */