yaffs Fixed a bug in quick tests.
[yaffs2.git] / direct / timothy_tests / dev / error_handler.c
index 3474d0168bee73a428cad8466993e6558dc56466..1dd272918e27ddfc0e31a371e52518e7f119762b 100644 (file)
  */
 #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);
-       }
-               
+       }               
 }
+
+