yaffs direct: Add more tests for valid paths.
[yaffs2.git] / direct / python / examples.py
index 6b40080..155e770 100644 (file)
@@ -1,3 +1,17 @@
+##
+## YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+##
+## Copyright (C) 2002-2010 Aleph One Ltd.
+##   for Toby Churchill Ltd and Brightstar Engineering
+##
+## Created by Charles Manning <charles@aleph1.co.uk>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2 as
+## published by the Free Software Foundation.
+##
+
+
 from yaffsfs import *
 
 def yaffs_ls(dname):
@@ -17,23 +31,69 @@ def yaffs_ls(dname):
 
             if isFile :
                 print "File ",se.d_ino, hex(perms), st.st_size, fullname
-            if isDir :
+            elif isDir :
                 print "Dir  ",se.d_ino, hex(perms), fullname
                 yaffs_ls(fullname)
-                
+            else :
+               print "Other (",hex(st.st_mode),") ",se.d_ino, hex(perms), fullname
+
             sep = yaffs_readdir(dc)
+        yaffs_closedir(dc)
+        return 0
     else:
         print "Could not open directory"
         return -1
 
+def yaffs_mkfile(fname,fsize):
+    fd = yaffs_open(fname,66, 0666)
+    if fd >= 0:
+        b = create_string_buffer("",1024)
+        totalwrite=0
+        while fsize > 0:
+            thiswrite = 1024 if fsize > 1024 else fsize
+            result = yaffs_write(fd,b,thiswrite)
+            totalwrite += result
+            fsize -= result
+            if result != thiswrite:
+                fsize= 0
+
+        return totalwrite
+    else :
+        return -1
+
+def yaffs_link_test(dir):
+    fnamea = dir + '/aaa'
+    fnameb = dir + '/bbb'
+    yaffs_unlink(fnamea)
+    fd = yaffs_open(fnamea,66,0666)
+    yaffs_link(fnamea,fnameb)
+    yaffs_ls(dir)
+    yaffs_unlink(fnamea)
+    yaffs_ls(dir)
+    yaffs_unlink(fnameb)
 
+def yaffs_o_excl_test(dir):
+    fname = dir + '/aaa'
+    yaffs_unlink(fname)
+    fd = yaffs_open(fname, 66, 0666)
+    yaffs_close(fd)
+    print "Created ", fname, " result ", fd
+    fdx = yaffs_open(fname, 0301, 0666)
+    print "Attempt to create with O_EXCL existing file returned ", fdx
+    yaffs_unlink(fname)
+    fdx = yaffs_open(fname, 0301, 0666)
+    print "Attempt to create with O_EXCL non-existing file returned ", fdx
+
+    
 root = "/yaffs2"
 
-yaffs_StartUp()
+yaffs_start_up()
 yaffs_mount(root)
 
 yaffs_mkdir(root+"/dd",0666)
 
-yaffs_open(root+"/dd/111",66,0666)
+h = yaffs_open(root+"/dd/111",66,0666)
+yaffs_close(h)
 
 yaffs_ls(root)
+