3 int do_print_member( lar_archive
*ar
, const char *name
)
7 if( (member
= lar_open_member(ar
, name
)) != NULL
)
9 write(fileno(stdout
), member
->data
, member
->length
);
10 lar_close_member(member
);
13 LAR_DIE("Unable to locate archive member");
18 int do_print_index( lar_archive
*ar
)
20 lar_index
*index
= ar
->index
;
22 if( ar
->has_filenames
)
26 if( index
->type
== LAR_TYPE_REGULAR
)
28 printf("%s\n", index
->filename
);
37 LAR_DIE("The archive contains no file list");
41 int do_require( const char *package
, const char *path
)
47 if( (ar
= lar_find_archive(package
, path
, 1)) != NULL
)
49 if( (mb
= lar_find_member(ar
, package
)) != NULL
)
51 write(fileno(stdout
), mb
->data
, mb
->length
);
62 int do_findfile( const char *filename
, const char *path
)
68 if( (ar
= lar_find_archive(filename
, path
, 0)) != NULL
)
70 if( (mb
= lar_open_member(ar
, filename
)) != NULL
)
72 write(fileno(stdout
), mb
->data
, mb
->length
);
83 int main( int argc
, const char* argv
[] )
88 if( argv
[1] != NULL
&& argv
[2] != NULL
)
93 if( (ar
= lar_open(argv
[2])) != NULL
)
96 stat
= do_print_member(ar
, argv
[3]);
98 stat
= do_print_index(ar
);
104 LAR_DIE("Failed to open archive");
110 stat
= do_require(argv
[2], argv
[3]);
114 stat
= do_findfile(argv
[2], argv
[3]);
123 printf("\tlar show <archive> [<member>]\n");
124 printf("\tlar require <package> [<path>]\n");
125 printf("\tlar find <filename> [<path>]\n");