- generate_random_string(name);
- join_paths(yaffs_test_dir,name,path);
- add_to_buffer(&message_buffer,"trying to open file: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
- append_to_buffer(&message_buffer,path,MESSAGE_LEVEL_BASIC_TASKS,PRINT);
- output=yaffs_open(path,O_CREAT | O_TRUNC| O_RDWR, S_IREAD | S_IWRITE);
- yaffs_check_for_errors(output, &message_buffer,"failed to open file","opened file");
+ add_to_buffer(&message_buffer,"number of opened handles: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ append_int_to_buffer(&message_buffer,open_handles_array.number_of_open_handles,MESSAGE_LEVEL_BASIC_TASKS,PRINT);
+ if (open_handles_array.number_of_open_handles<MAX_NUMBER_OF_OPENED_HANDLES)
+ {
+ generate_random_string(name);
+ join_paths(yaffs_test_dir,name,path);
+ add_to_buffer(&message_buffer,"trying to open file: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ append_to_buffer(&message_buffer,path,MESSAGE_LEVEL_BASIC_TASKS,PRINT);
+ if (yaffs_access(path,0)==0){
+ stat_file(path);
+ }
+ else {
+ add_to_buffer(&message_buffer,"file does not exists, creating file",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ }
+
+ output=yaffs_open(path,O_CREAT | O_TRUNC| O_RDWR, S_IREAD | S_IWRITE);
+ x=0;
+ for (x=0;open_handles_array.handle[x]!=-3 && x<MAX_NUMBER_OF_OPENED_HANDLES;x++){
+ //x=rand() % (MAX_NUMBER_OF_OPENED_HANDLES-1);
+ }
+
+ add_to_buffer(&message_buffer,"handle array id ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ append_int_to_buffer(&message_buffer,x,MESSAGE_LEVEL_BASIC_TASKS,PRINT);
+
+ //for (x=0;handle_pointers[x]!=NULL;x++){}
+ open_handles_array.handle[x]=output;
+ open_handles_array.path[x][0]='\0';
+ strcat(open_handles_array.path[x],path);
+ add_to_buffer(&message_buffer,"yaffs handle: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ append_int_to_buffer(&message_buffer,output,MESSAGE_LEVEL_BASIC_TASKS,PRINT);
+ add_to_buffer(&message_buffer,"stored handle: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+
+ //yaffs_open will return a null pointer if it cannot open a file. check for errors will not work.
+ yaffs_check_for_errors(output, &message_buffer,"failed to open file","opened file");
+
+ open_handles_array.number_of_open_handles++;
+ }
+ else{ /*run out of space on the handle pointer array*/
+ /*make space*/
+ while (open_handles_array.handle[x]==-3){
+ x=rand() % (MAX_NUMBER_OF_OPENED_HANDLES-1);
+ }
+ add_to_buffer(&message_buffer,"trying to close file: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ append_to_buffer(&message_buffer,open_handles_array.path[x],MESSAGE_LEVEL_BASIC_TASKS,PRINT);
+ add_to_buffer(&message_buffer,"file handle: ",MESSAGE_LEVEL_BASIC_TASKS,NPRINT);
+ append_int_to_buffer(&message_buffer,open_handles_array.handle[x],MESSAGE_LEVEL_BASIC_TASKS,PRINT);
+
+ stat_file(open_handles_array.path[x]);
+
+ output=yaffs_close(open_handles_array.handle[x]);
+
+ if (output==-1) yaffs_check_for_errors(output, &message_buffer,"failed to close file","closed file");
+ else {
+ yaffs_check_for_errors(output, &message_buffer,"failed to close file","closed file");
+ open_handles_array.handle[x]=-3;
+ open_handles_array.path[x][0]='\0';
+ open_handles_array.number_of_open_handles--;
+ }
+ }