X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftimothy_tests%2Fdev%2Ferror_handler.c;h=1dd272918e27ddfc0e31a371e52518e7f119762b;hp=3474d0168bee73a428cad8466993e6558dc56466;hb=c883969be5fbee680417b7a310ed29f8e738c869;hpb=86231ed7a8ebecf2e4821f9b426262045f941591 diff --git a/direct/timothy_tests/dev/error_handler.c b/direct/timothy_tests/dev/error_handler.c index 3474d01..1dd2729 100644 --- a/direct/timothy_tests/dev/error_handler.c +++ b/direct/timothy_tests/dev/error_handler.c @@ -16,21 +16,69 @@ */ #include "error_handler.h" -void yaffs_check_for_errors(char output, buffer *message_buffer,char error_message[],char success_message[]) + +typedef struct error_codes_template { + int code; + char * text; +}error_entry; + +const error_entry error_list[] = { + { ENOMEM , "ENOMEM" }, + { EBUSY , "EBUSY"}, + { ENODEV , "ENODEV"}, + { EINVAL , "EINVAL"}, + { EBADF , "EBADF"}, + { EACCES , "EACCES"}, + { EXDEV , "EXDEV" }, + { ENOENT , "ENOENT"}, + { ENOSPC , "ENOSPC"}, + { ERANGE , "ERANGE"}, + { ENODATA, "ENODATA"}, + { ENOTEMPTY, "ENOTEMPTY"}, + { ENAMETOOLONG,"ENAMETOOLONG"}, + { ENOMEM , "ENOMEM"}, + { EEXIST , "EEXIST"}, + { ENOTDIR , "ENOTDIR"}, + { EISDIR , "EISDIR"}, + { 0, NULL } +}; + +const char * error_to_str(int err) { - char dummy='0'; + error_entry *e = error_list; + if (err < 0) + err = -err; + while(e->code && e->text){ + if(err == e->code) + return e->text; + e++; + } + return "Unknown error code"; +} + +void yaffs_check_for_errors(char output, buffer *message_buffer,char error_message[],char success_message[]){ + char dummy[10]; + unsigned int x=0; + int yaffs_error=-1; + char error_found=0; if (output==-1) { add_to_buffer(message_buffer, "\nerror##########",MESSAGE_LEVEL_ERROR,PRINT); add_to_buffer(message_buffer, error_message,MESSAGE_LEVEL_ERROR,PRINT); - add_to_buffer(message_buffer, "error_code: ",MESSAGE_LEVEL_ERROR,PRINT); - if (MESSAGE_LEVEL_ERROR<=DEBUG_LEVEL) printf("%d\n\n\n",yaffs_get_error()); /*cannot yet add int types to buffer. this is a quick fix*/ - scanf("%c",dummy); + add_to_buffer(message_buffer, "error_code: ",MESSAGE_LEVEL_ERROR,NPRINT); + yaffs_error=yaffs_get_error(); + append_int_to_buffer(message_buffer, yaffs_error,MESSAGE_LEVEL_ERROR,PRINT); + + add_to_buffer(message_buffer, error_to_str(yaffs_error),MESSAGE_LEVEL_ERROR,NPRINT); + append_to_buffer(message_buffer, "\n\n",MESSAGE_LEVEL_ERROR,PRINT); + quit_program(); + //scanf("%c",dummy); /*this line causes a segmentation fault. Need a better way of waiting for a key press*/ //print_buffer(message_buffer,PRINT_ALL); } else{ add_to_buffer(message_buffer, success_message,MESSAGE_LEVEL_BASIC_TASKS,PRINT); - } - + } } + +