From: Stefan E. <se...@us...> - 2002-04-26 18:26:41
|
Update of /cvsroot/blob/blob/src/blob In directory usw-pr-cvs1:/tmp/cvs-serv3418 Modified Files: system3.c Log Message: - test command for tar archive library. Will eventually go into libcommands.a Index: system3.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/system3.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- system3.c 24 Apr 2002 14:34:26 -0000 1.12 +++ system3.c 26 Apr 2002 18:26:38 -0000 1.13 @@ -48,6 +48,7 @@ #include <blob/sa1111.h> #include <blob/pcmcia.h> #include <blob/ide.h> +#include <blob/tar.h> /********************************************************************** * defines @@ -435,6 +436,62 @@ serial_write('\n'); } } + +int tar_cmd( int argc, char *argv[] ) +{ + int ret = 0; + u32 start = 0; + u32 dest = 0; + tar_arch_t my_arch; + struct mem arch_adr; + + tar_dbg_set( 100 ); + + if ( argc<3 ) ERR( -EINVAL ); + + ret = strtou32(argv[2], &start); + if ( ret < 0 ) ERR( -EINVAL ); + + arch_adr.start = (unsigned char *)start; + ret = tar_init( &my_arch, mem_block_get, mem_block_reset, &arch_adr ); + if ( ret ) { + printf( "tar_init: %d\n", ret ); + goto DONE; + } + + switch (argv[1][0]) { + case 't': + case 'T': + ret = tar_tell( &my_arch ); + if ( ret ) { + printf( "tar_tell: %d\n", ret ); + goto DONE; + } + break; + case 'x': + case 'X': + if ( argc<4 ) ERR( -EINVAL ); + + ret = strtou32(argv[4], &dest); + if ( ret < 0 ) ERR( -EINVAL ); + + _DBG( "dest=%p\n", (unsigned char *)dest ); + _DBG( "filename=%s\n", argv[3] ); + + ret = tar_xtract( &my_arch, argv[3], (unsigned char *)dest ); + if ( ret ) { + printf( "tar_xtract: %d\n", ret ); + goto DONE; + } + dumpmem( dest, 0x200 ); + break; + } + +DONE: + return ret; +} +static char tar_help[] = "tar [t|x] src [filename dest]\n"; +__commandlist(tar_cmd, "tar", tar_help); /***************************************************************** * manually reference flash and download commands until they |