Fix possible null ptr dereference
[yaffs2.git] / direct / dtest.c
index 3679b25b86b357f34ef0b3ff5f1fd653cde3f734..8edd85f68883a0e163dfcd38436f5f95db98be13 100644 (file)
@@ -1347,6 +1347,49 @@ void lookup_test(const char *mountpt)
        
 }
 
+void link_test(const char *mountpt)
+{
+       int i;
+       int h;
+       char a[100];
+       char b[100];
+       char c[100];
+       
+       int  f0;
+       int f1;
+       int f2;
+       int f3;
+       sprintf(a,"%s/aaa",mountpt);
+       sprintf(b,"%s/bbb",mountpt);
+       sprintf(c,"%s/ccc",mountpt);
+       
+       yaffs_StartUp();
+       
+       yaffs_mount(mountpt);
+       
+       
+       h = yaffs_open(a, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
+       for(i = 0; i < 100; i++)
+               yaffs_write(h,a,100);
+       
+       yaffs_close(h);
+       
+       yaffs_unlink(b);
+       yaffs_unlink(c);
+       yaffs_link(a,b);
+       yaffs_link(a,c);
+       yaffs_unlink(b);
+       yaffs_unlink(c);
+       yaffs_unlink(a);
+       
+       
+       yaffs_unmount(mountpt);
+       yaffs_mount(mountpt);
+       
+       printf("link test done\n");     
+       
+}
+
 void freespace_test(const char *mountpt)
 {
        int i;
@@ -1388,6 +1431,56 @@ void freespace_test(const char *mountpt)
        printf("%d\n%d\n%d\n%d\n",f0, f1,f2,f3);
        
        
+}
+
+void simple_rw_test(const char *mountpt)
+{
+       int i;
+       int h;
+       char a[100];
+       
+       int x;
+       int result;
+
+       sprintf(a,"%s/aaa",mountpt);
+       
+       yaffs_StartUp();
+       
+       yaffs_mount(mountpt);
+       
+       yaffs_unlink(a);
+       
+       h = yaffs_open(a,O_CREAT| O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
+       
+       for(i = 100000;i < 200000; i++){
+               result = yaffs_write(h,&i,sizeof(i));
+               
+               if(result != 4)
+               {
+                       printf("write error\n");
+                       exit(1);
+               }
+       }
+       
+       //yaffs_close(h);
+       
+       // h = yaffs_open(a,O_RDWR, S_IREAD | S_IWRITE);
+       
+       
+       yaffs_lseek(h,0,SEEK_SET);
+       
+       for(i = 100000; i < 200000; i++){
+               result = yaffs_read(h,&x,sizeof(x));
+               
+               if(result != 4 || x != i){
+                       printf("read error %d %x %x\n",i,result,x);
+               }
+       }
+       
+       printf("Simple rw test passed\n");
+       
+       
+       
 }
 
 
@@ -1573,10 +1666,14 @@ int main(int argc, char *argv[])
        
        //long_test_on_path("/ram2k");
        // long_test_on_path("/flash");
-       //fill_disk_test("/flash");
+       //simple_rw_test("/flash/flash");
+       //fill_disk_test("/flash/flash");
        // rename_over_test("/flash");
        //lookup_test("/flash");
-       freespace_test("/flash");
+       //freespace_test("/flash/flash");
+       
+       link_test("/flash/flash");
+