From b4cf6a1a0be3b76184e2c6a4551c052d8abdaa32 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Wed, 30 Oct 2002 16:15:03 +0000 Subject: Remodeled as a test application git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2782 a1c6a512-1295-4272-9138-f99709370657 --- firmware/test/fat/main.c | 124 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 95 insertions(+), 29 deletions(-) (limited to 'firmware') diff --git a/firmware/test/fat/main.c b/firmware/test/fat/main.c index b7c93f8921..708ee454c8 100644 --- a/firmware/test/fat/main.c +++ b/firmware/test/fat/main.c @@ -12,17 +12,17 @@ extern int ata_init(char*); extern void ata_read_sectors(int, int, char*); void dbg_dump_sector(int sec); -void dbg_dump_buffer(unsigned char *buf); +void dbg_dump_buffer(unsigned char *buf, int len); void dbg_console(void); void panicf( char *fmt, ...) { va_list ap; va_start( ap, fmt ); - printf("***PANIC*** "); - vprintf( fmt, ap ); + fprintf(stderr,"***PANIC*** "); + vfprintf(stderr, fmt, ap ); va_end( ap ); - exit(0); + exit(1); } void dbg_dump_sector(int sec) @@ -31,16 +31,16 @@ void dbg_dump_sector(int sec) ata_read_sectors(sec,1,buf); DEBUGF("---< Sector %d >-----------------------------------------\n", sec); - dbg_dump_buffer(buf); + dbg_dump_buffer(buf, 512); } -void dbg_dump_buffer(unsigned char *buf) +void dbg_dump_buffer(unsigned char *buf, int len) { int i, j; unsigned char c; unsigned char ascii[33]; - for(i = 0;i < 512/16;i++) + for(i = 0;i < len/16;i++) { DEBUGF("%03x: ", i*16); for(j = 0;j < 16;j++) @@ -83,41 +83,97 @@ void dbg_dir(char* currdir) } } -void dbg_mkfile(char* name, int num) +#define CHUNKSIZE 8 + +int dbg_mkfile(char* name, int num) { - char text[1024]; + char text[8192]; int i; - int fd = open(name,O_WRONLY); + int fd; + int x=0; + + fd = open(name,O_WRONLY); if (fd<0) { DEBUGF("Failed creating file\n"); - return; + return -1; } - for (i=0; i sizeof text ? sizeof text : num; + + for (i=0; i 0 ) { - buf[rc]=0; - printf("%d: %s\n", i, buf); + buf[size] = 0; + printf("%d: %.*s\n", rc, rc, buf); } else if ( rc == 0 ) { DEBUGF("EOF\n"); @@ -126,6 +182,7 @@ void dbg_type(char* name) else { DEBUGF("Failed reading file: %d\n",rc); + break; } } close(fd); @@ -199,7 +256,7 @@ void dbg_prompt(void) DEBUGF("C:%s> ", current_directory); } -void dbg_cmd(int argc, char *argv[]) +int dbg_cmd(int argc, char *argv[]) { char* cmd = NULL; char* arg1 = NULL; @@ -223,8 +280,9 @@ void dbg_cmd(int argc, char *argv[]) " head \n" " tail \n" " mkfile \n" + " chkfile \n" ); - return; + return -1; } if (!strcasecmp(cmd, "dir")) @@ -265,11 +323,19 @@ void dbg_cmd(int argc, char *argv[]) { if (arg1) { if (arg2) - dbg_mkfile(arg1,atoi(arg2)); + return dbg_mkfile(arg1,atoi(arg2)); else - dbg_mkfile(arg1,1); + return dbg_mkfile(arg1,1); } } + + if (!strcasecmp(cmd, "chkfile")) + { + if (arg1) + return dbg_chkfile(arg1); + } + + return 0; } extern void ata_exit(void); @@ -295,7 +361,7 @@ int main(int argc, char *argv[]) rc = fat_mount(pinfo[i].start); if(rc) { DEBUGF("mount: %d",rc); - return 0; + return -1; } break; } @@ -303,14 +369,14 @@ int main(int argc, char *argv[]) if ( i==4 ) { if(fat_mount(0)) { DEBUGF("No FAT32 partition!"); - return 0; + return -1; } } - dbg_cmd(argc, argv); + rc = dbg_cmd(argc, argv); ata_exit(); - return 0; + return rc; } -- cgit v1.2.3