From 36a9415469571fa972b6ff9004401aee393d28ad Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 6 Apr 2009 02:35:34 +0000 Subject: contrib: add "lar" - initial work on lua archive format --- contrib/lar/cli.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 contrib/lar/cli.c (limited to 'contrib/lar/cli.c') diff --git a/contrib/lar/cli.c b/contrib/lar/cli.c new file mode 100644 index 0000000000..026150e79e --- /dev/null +++ b/contrib/lar/cli.c @@ -0,0 +1,61 @@ +#include "lar.h" + +int do_print_member( lar_archive *ar, const char *name ) +{ + lar_member *member; + + if( (member = lar_open_member(ar, name)) != NULL ) + { + write(fileno(stdout), member->data, member->length); + lar_close_member(member); + } + else + LAR_DIE("Unable to locate archive member"); + + return 0; +} + +int do_print_index( lar_archive *ar ) +{ + lar_index *index = ar->index; + LAR_FNAME(filename); + + while(index) + { + lar_get_filename(ar, index, filename); + printf("%s\n", filename); + index = index->next; + } + + return 0; +} + +int main( int argc, const char* argv[] ) +{ + lar_archive *ar; + + if( argv[1] != NULL ) + { + if( (ar = lar_open(argv[1])) != NULL ) + { + if( argv[2] ) + return do_print_member(ar, argv[2]); + else + return do_print_index(ar); + + lar_close(ar); + } + else + { + LAR_DIE("Failed to open archive"); + } + } + else + { + printf("Usage: lar []\n"); + return 1; + } + + return 0; +} + -- cgit v1.2.3