contrib/lar: small fixes in cli.c
[project/luci.git] / contrib / lar / cli.c
1 #include "lar.h"
2
3 int do_print_member( lar_archive *ar, const char *name )
4 {
5         lar_member *member;
6
7         if( (member = lar_open_member(ar, name)) != NULL )
8         {
9                 write(fileno(stdout), member->data, member->length);
10                 lar_close_member(member);
11         }
12         else
13                 LAR_DIE("Unable to locate archive member");
14
15         return 0;
16 }
17
18 int do_print_index( lar_archive *ar )
19 {
20         lar_index *index = ar->index;
21         LAR_FNAME(filename);
22
23         while(index)
24         {
25                 lar_get_filename(ar, index, filename);
26                 printf("%s\n", filename);
27                 index = index->next;
28         }
29
30         return 0;       
31 }
32
33 int main( int argc, const char* argv[] )
34 {
35         lar_archive *ar;
36         int stat = 0;
37
38         if( argv[1] != NULL )
39         {
40                 if( (ar = lar_open(argv[1])) != NULL )
41                 {
42                         if( argv[2] )
43                                 stat = do_print_member(ar, argv[2]);
44                         else
45                                 stat = do_print_index(ar);
46
47                         lar_close(ar);
48                         return stat;
49                 }
50                 else
51                 {
52                         LAR_DIE("Failed to open archive");
53                 }
54         }
55         else
56         {
57                 printf("Usage: lar <archive> [<member>]\n");
58                 return 1;
59         }
60
61         return 0;
62 }
63