Advertisement
mmatuska

libarchive_read.c

Jan 19th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.87 KB | None | 0 0
  1. #include <archive.h>
  2. #include <archive_entry.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6. int main(int argc, char *argv[]) {
  7.     struct archive *a;
  8.     struct archive_entry *e;
  9.     int n, r;
  10.     int64_t data;
  11.     char *rbuf;
  12.  
  13.     for (n = 1; n < argc; n++) {
  14.         a = archive_read_new();
  15.         archive_read_support_filter_all(a);
  16.         archive_read_support_format_all(a);
  17.  
  18.         r = archive_read_open_filename(a, argv[n], 10240);
  19.         if (r != ARCHIVE_OK) {
  20.             printf("Couldn't read filename: %s\n", argv[n]);
  21.             archive_read_free(a);
  22.             continue;
  23.         }
  24.         while (r == ARCHIVE_OK) {
  25.             r = archive_read_next_header(a, &e);
  26.             if (r == ARCHIVE_OK) {
  27.                 data = archive_filter_bytes(a, -1);
  28.                 printf("Path: %s, Pos: %ld\n", archive_entry_pathname(e), data);
  29.                 rbuf = malloc(10240);
  30.                 while (archive_read_data(a, rbuf, 10240) > 0)
  31.                     ;
  32.                 free(rbuf);
  33.             }
  34.         }
  35.         archive_read_free(a);
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement