aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
Diffstat (limited to 'archival')
-rw-r--r--archival/gzip.c14
-rw-r--r--archival/rpm.c43
2 files changed, 23 insertions, 34 deletions
diff --git a/archival/gzip.c b/archival/gzip.c
index 0962a00a7..37fefbf6a 100644
--- a/archival/gzip.c
+++ b/archival/gzip.c
@@ -263,15 +263,14 @@ DECLARE(ush, tab_prefix, 1L << BITS);
263static int foreground; /* set if program run in foreground */ 263static int foreground; /* set if program run in foreground */
264static int method = DEFLATED; /* compression method */ 264static int method = DEFLATED; /* compression method */
265static int exit_code = OK; /* program exit code */ 265static int exit_code = OK; /* program exit code */
266static int part_nb; /* number of parts in .gz file */
267static long time_stamp; /* original time stamp (modification time) */ 266static long time_stamp; /* original time stamp (modification time) */
268static long ifile_size; /* input file size, -1 for devices (debug only) */
269static char z_suffix[MAX_SUFFIX + 1]; /* default suffix (can be set with --suffix) */ 267static char z_suffix[MAX_SUFFIX + 1]; /* default suffix (can be set with --suffix) */
270static int z_len; /* strlen(z_suffix) */
271 268
272static int ifd; /* input file descriptor */ 269static int ifd; /* input file descriptor */
273static int ofd; /* output file descriptor */ 270static int ofd; /* output file descriptor */
271#ifdef DEBUG
274static unsigned insize; /* valid bytes in inbuf */ 272static unsigned insize; /* valid bytes in inbuf */
273#endif
275static unsigned outcnt; /* bytes in output buffer */ 274static unsigned outcnt; /* bytes in output buffer */
276 275
277static uint32_t *crc_32_tab; 276static uint32_t *crc_32_tab;
@@ -302,7 +301,9 @@ static void abort_gzip(int ATTRIBUTE_UNUSED ignored)
302static void clear_bufs(void) 301static void clear_bufs(void)
303{ 302{
304 outcnt = 0; 303 outcnt = 0;
304#ifdef DEBUG
305 insize = 0; 305 insize = 0;
306#endif
306 bytes_in = 0L; 307 bytes_in = 0L;
307} 308}
308 309
@@ -1177,7 +1178,6 @@ int gzip_main(int argc, char **argv)
1177#endif 1178#endif
1178 1179
1179 strncpy(z_suffix, Z_SUFFIX, sizeof(z_suffix) - 1); 1180 strncpy(z_suffix, Z_SUFFIX, sizeof(z_suffix) - 1);
1180 z_len = strlen(z_suffix);
1181 1181
1182 /* Allocate all global buffers (for DYN_ALLOC option) */ 1182 /* Allocate all global buffers (for DYN_ALLOC option) */
1183 ALLOC(uch, inbuf, INBUFSIZ + INBUF_EXTRA); 1183 ALLOC(uch, inbuf, INBUFSIZ + INBUF_EXTRA);
@@ -1188,13 +1188,11 @@ int gzip_main(int argc, char **argv)
1188 1188
1189 /* Initialise the CRC32 table */ 1189 /* Initialise the CRC32 table */
1190 crc_32_tab = crc32_filltable(0); 1190 crc_32_tab = crc32_filltable(0);
1191 1191
1192 clear_bufs(); 1192 clear_bufs();
1193 part_nb = 0;
1194 1193
1195 if (optind == argc) { 1194 if (optind == argc) {
1196 time_stamp = 0; 1195 time_stamp = 0;
1197 ifile_size = -1L;
1198 zip(STDIN_FILENO, STDOUT_FILENO); 1196 zip(STDIN_FILENO, STDOUT_FILENO);
1199 } else { 1197 } else {
1200 int i; 1198 int i;
@@ -1205,7 +1203,6 @@ int gzip_main(int argc, char **argv)
1205 clear_bufs(); 1203 clear_bufs();
1206 if (strcmp(argv[i], "-") == 0) { 1204 if (strcmp(argv[i], "-") == 0) {
1207 time_stamp = 0; 1205 time_stamp = 0;
1208 ifile_size = -1L;
1209 inFileNum = STDIN_FILENO; 1206 inFileNum = STDIN_FILENO;
1210 outFileNum = STDOUT_FILENO; 1207 outFileNum = STDOUT_FILENO;
1211 } else { 1208 } else {
@@ -1213,7 +1210,6 @@ int gzip_main(int argc, char **argv)
1213 if (fstat(inFileNum, &statBuf) < 0) 1210 if (fstat(inFileNum, &statBuf) < 0)
1214 bb_perror_msg_and_die("%s", argv[i]); 1211 bb_perror_msg_and_die("%s", argv[i]);
1215 time_stamp = statBuf.st_ctime; 1212 time_stamp = statBuf.st_ctime;
1216 ifile_size = statBuf.st_size;
1217 1213
1218 if (!tostdout) { 1214 if (!tostdout) {
1219 path = xmalloc(strlen(argv[i]) + 4); 1215 path = xmalloc(strlen(argv[i]) + 4);
diff --git a/archival/rpm.c b/archival/rpm.c
index 7b27c0250..d399e0ea2 100644
--- a/archival/rpm.c
+++ b/archival/rpm.c
@@ -70,17 +70,15 @@ static void *map;
70static rpm_index **mytags; 70static rpm_index **mytags;
71static int tagcount; 71static int tagcount;
72 72
73void extract_cpio_gz(int fd); 73static void extract_cpio_gz(int fd);
74rpm_index **rpm_gettags(int fd, int *num_tags); 74static rpm_index **rpm_gettags(int fd, int *num_tags);
75int bsearch_rpmtag(const void *key, const void *item); 75static int bsearch_rpmtag(const void *key, const void *item);
76char *rpm_getstring(int tag, int itemindex); 76static char *rpm_getstring(int tag, int itemindex);
77int rpm_getint(int tag, int itemindex); 77static int rpm_getint(int tag, int itemindex);
78int rpm_getcount(int tag); 78static int rpm_getcount(int tag);
79void exec_script(int progtag, int datatag, char *prefix); 79static void fileaction_dobackup(char *filename, int fileref);
80void fileaction_dobackup(char *filename, int fileref); 80static void fileaction_setowngrp(char *filename, int fileref);
81void fileaction_setowngrp(char *filename, int fileref); 81static void loop_through_files(int filetag, void (*fileaction)(char *filename, int fileref));
82void fileaction_list(char *filename, int itemno);
83void loop_through_files(int filetag, void (*fileaction)(char *filename, int fileref));
84 82
85int rpm_main(int argc, char **argv) 83int rpm_main(int argc, char **argv)
86{ 84{
@@ -169,7 +167,7 @@ int rpm_main(int argc, char **argv)
169 return 0; 167 return 0;
170} 168}
171 169
172void extract_cpio_gz(int fd) { 170static void extract_cpio_gz(int fd) {
173 archive_handle_t *archive_handle; 171 archive_handle_t *archive_handle;
174 unsigned char magic[2]; 172 unsigned char magic[2];
175 173
@@ -196,7 +194,7 @@ void extract_cpio_gz(int fd) {
196} 194}
197 195
198 196
199rpm_index **rpm_gettags(int fd, int *num_tags) 197static rpm_index **rpm_gettags(int fd, int *num_tags)
200{ 198{
201 rpm_index **tags = xzalloc(200 * sizeof(struct rpmtag *)); /* We should never need mode than 200, and realloc later */ 199 rpm_index **tags = xzalloc(200 * sizeof(struct rpmtag *)); /* We should never need mode than 200, and realloc later */
202 int pass, tagindex = 0; 200 int pass, tagindex = 0;
@@ -235,14 +233,14 @@ rpm_index **rpm_gettags(int fd, int *num_tags)
235 return tags; /* All done, leave the file at the start of the gzipped cpio archive */ 233 return tags; /* All done, leave the file at the start of the gzipped cpio archive */
236} 234}
237 235
238int bsearch_rpmtag(const void *key, const void *item) 236static int bsearch_rpmtag(const void *key, const void *item)
239{ 237{
240 int *tag = (int *)key; 238 int *tag = (int *)key;
241 rpm_index **tmp = (rpm_index **) item; 239 rpm_index **tmp = (rpm_index **) item;
242 return (*tag - tmp[0]->tag); 240 return (*tag - tmp[0]->tag);
243} 241}
244 242
245int rpm_getcount(int tag) 243static int rpm_getcount(int tag)
246{ 244{
247 rpm_index **found; 245 rpm_index **found;
248 found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); 246 found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
@@ -250,7 +248,7 @@ int rpm_getcount(int tag)
250 else return found[0]->count; 248 else return found[0]->count;
251} 249}
252 250
253char *rpm_getstring(int tag, int itemindex) 251static char *rpm_getstring(int tag, int itemindex)
254{ 252{
255 rpm_index **found; 253 rpm_index **found;
256 found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); 254 found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag);
@@ -263,7 +261,7 @@ char *rpm_getstring(int tag, int itemindex)
263 } else return NULL; 261 } else return NULL;
264} 262}
265 263
266int rpm_getint(int tag, int itemindex) 264static int rpm_getint(int tag, int itemindex)
267{ 265{
268 rpm_index **found; 266 rpm_index **found;
269 int n, *tmpint; 267 int n, *tmpint;
@@ -284,7 +282,7 @@ int rpm_getint(int tag, int itemindex)
284 } else return -1; 282 } else return -1;
285} 283}
286 284
287void fileaction_dobackup(char *filename, int fileref) 285static void fileaction_dobackup(char *filename, int fileref)
288{ 286{
289 struct stat oldfile; 287 struct stat oldfile;
290 int stat_res; 288 int stat_res;
@@ -301,7 +299,7 @@ void fileaction_dobackup(char *filename, int fileref)
301 } 299 }
302} 300}
303 301
304void fileaction_setowngrp(char *filename, int fileref) 302static void fileaction_setowngrp(char *filename, int fileref)
305{ 303{
306 int uid, gid; 304 int uid, gid;
307 uid = bb_xgetpwnam(rpm_getstring(RPMTAG_FILEUSERNAME, fileref)); 305 uid = bb_xgetpwnam(rpm_getstring(RPMTAG_FILEUSERNAME, fileref));
@@ -309,12 +307,7 @@ void fileaction_setowngrp(char *filename, int fileref)
309 chown (filename, uid, gid); 307 chown (filename, uid, gid);
310} 308}
311 309
312void fileaction_list(char *filename, int ATTRIBUTE_UNUSED fileref) 310static void loop_through_files(int filetag, void (*fileaction)(char *filename, int fileref))
313{
314 printf("%s\n", filename);
315}
316
317void loop_through_files(int filetag, void (*fileaction)(char *filename, int fileref))
318{ 311{
319 int count = 0; 312 int count = 0;
320 while (rpm_getstring(filetag, count)) { 313 while (rpm_getstring(filetag, count)) {