From 597a930ec3a39c1a70cafcea59f08e75c26d94b3 Mon Sep 17 00:00:00 2001 From: Timothy Manning Date: Mon, 11 Oct 2010 14:51:25 +1300 Subject: [PATCH] yaffs Creating a python file which will read current directories into yaffs file system Signed-off-by: Timothy Manning --- direct/python/copy_files_into_yaffs_fs.py | 161 ++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 direct/python/copy_files_into_yaffs_fs.py diff --git a/direct/python/copy_files_into_yaffs_fs.py b/direct/python/copy_files_into_yaffs_fs.py new file mode 100644 index 0000000..d592380 --- /dev/null +++ b/direct/python/copy_files_into_yaffs_fs.py @@ -0,0 +1,161 @@ +import os +from yaffsfs import * + +yaffs_StartUp() +yaffs_mount("/yaffs2/") +absolute_path = os.path.abspath(os.path.curdir) +print "absolute path:", absolute_path +#cwd = os.getcwd() +#print cwd +dir_in_snapshot=[] +files_in_snapshot=[] +symlinks_in_snapshot=[] +unknown_in_snapshot=[] +is_mount_in_snapshot=[] +#def scandir(path): +# global dir_in_snapshot +# global files_in_snapshot +# global symlinks_in_snapshot +# global unknown_in_snapshot +#path=raw_input("path") +#print "does this path exist?", os.path.exists(path) +#dir_snapshot=os.listdir(path) +#print dir_snapshot +def is_dir_hidden(dir): + slash_id=[] + for i in range(0, len(dir)): + if dir[i]=="/": + slash_id.append(i) + #print "dir", dir + #print "slash_id", slash_id + if dir[slash_id[len(slash_id)-1]+1]==".": + return True + else : + return False + +def scan_dir(path): + global files_in_snapshot + global symlinks_in_snapshot + global search_hidden_directories + dir_in_current_dir=[] + if os.path.exists(path)==False: + print "error#############################" + print "path:", path, " doesnot exist" + return 0 + dir_snapshot=os.listdir(path) + for i in range(0, len(dir_snapshot)): + #print os.path.isdir(dir_snapshot[i]) + #print os.path.isfile(dir_snapshot[i]) + #print os.path.islink(dir_snapshot[i]) + current_snapshot=os.path.join(path, dir_snapshot[i]) + #print "current snapshot:", current_snapshot + isDir=os.path.isdir(current_snapshot) + isFile=os.path.isfile(current_snapshot) + isLink=os.path.islink(current_snapshot) + isMount=os.path.ismount(current_snapshot) + #print dir_snapshot[i] + if isDir: + if search_hidden_directories==True or is_dir_hidden(current_snapshot) ==False : + stat=os.stat(current_snapshot) +# st_mode ##mode of the folder read/write ect + dir_in_snapshot.append({"path":current_snapshot, "mode":stat.st_mode}) + dir_in_current_dir.append(current_snapshot) + else : + print "file is hidden so it is ingored", current_snapshot + elif isFile: + stat=os.stat(current_snapshot) +# stat.st_ino ##inode number +# st_nlink ##number of hard links to this file +# st_size ##size of file + files_in_snapshot.append({"path":current_snapshot, "inode": stat.st_ino, "size":stat.st_size, "num_of_hardlinks":stat.st_nlink, "mode":stat.st_mode}) + elif isLink: + symlinks_in_snapshot.append(current_snapshot) + elif isMount: + is_mount_in_snapshot.append(current_snapshot) + else: + unknown_in_snapshot.append(current_snapshot) + + for i in range(0, len(dir_in_current_dir)): + scan_dir(dir_in_current_dir[i]) + +def print_scanned_dir_list(): + global files_in_snapshot + global symlinks_in_snapshot + print "scanned dir" + + + for i in range(0, len(files_in_snapshot)): + if files_in_snapshot[i]["num_of_hardlinks"]>1: + print "inode",files_in_snapshot[i]["inode"],"size",files_in_snapshot[i]["size"],"path:", files_in_snapshot[i]["path"], " num of hard links", files_in_snapshot[i]["num_of_hardlinks"] + + else : + print "inode",files_in_snapshot[i]["inode"],"size",files_in_snapshot[i]["size"],"path:", files_in_snapshot[i]["path"] +# current_open_file=open(files_in_snapshot[i], "r") +# #current_open_file.f.read(3) +# lines_in_file=current_open_file.readlines() +# #use for loop to write code into yaffs file +# print "number of line of code:", len(lines_in_file) +# print current_open_file + for i in range(0, len(symlinks_in_snapshot)): + print "symlinks in snapshot:", symlinks_in_snapshot[i] + for i in range(0, len(dir_in_snapshot)): + print "directories in snapshot:", dir_in_snapshot[i] + for i in range(0, len(unknown_in_snapshot)): + print "unknown objects in snapshot:", unknown_in_snapshot[i] + +def copy_scanned_files_into_yaffs(): + global files_in_snapshot + global symlinks_in_snapshot + global path + print"making directories in yaffs" + + for i in range(0, len(dir_in_snapshot)): + path2=dir_in_snapshot[i]["path"][len(path):] + print"path2", path2 + dir_path="/yaffs2"+path2 + output=yaffs_mkdir(dir_path,dir_in_snapshot[i]["mode"] ) + print"copied", dir_path, " output", output + print "mode" ,dir_in_snapshot[i]["mode"] + print "copying scanned files into yaffs" + + + for i in range(0, len(files_in_snapshot)): + if files_in_snapshot[i]["num_of_hardlinks"]>1: + print "inode",files_in_snapshot[i]["inode"],"size",files_in_snapshot[i]["size"],"path:", files_in_snapshot[i]["path"], " num of hard links", files_in_snapshot[i]["num_of_hardlinks"] + + else : + file_path=files_in_snapshot[i]["path"][len(path):] + current_handle=yaffs_open("yaffs2/"+file_path, 66, files_in_snapshot[i]["mode"]) + output=yaffs_close(current_handle) + print "created a file", files_in_snapshot[i]["path"][len(path):], " ", output + print "inode",files_in_snapshot[i]["inode"],"size",files_in_snapshot[i]["size"],"path:", files_in_snapshot[i]["path"] + +# current_open_file=open(files_in_snapshot[i], "r") +# #current_open_file.f.read(3) +# lines_in_file=current_open_file.readlines() +# #use for loop to write code into yaffs file +# print "number of line of code:", len(lines_in_file) +# print current_open_file + for i in range(0, len(symlinks_in_snapshot)): + print "symlinks in snapshot:", symlinks_in_snapshot[i] + for i in range(0, len(dir_in_snapshot)): + print "directories in snapshot:", dir_in_snapshot[i] + for i in range(0, len(unknown_in_snapshot)): + print "unknown objects in snapshot:", unknown_in_snapshot[i] + + +#path=raw_input("path") +path="/home/timothy/work/yaffs/git/yaffs2" +#path="/home/timothy" + +#x=raw_input("search hidden files and directories?[y/n]") +x="n" +if x=="y" or x=="yes": + search_hidden_directories=True +else : + search_hidden_directories=False +scan_dir(path) +copy_scanned_files_into_yaffs() +#print_scanned_dir_list() + +print"unmounting yaffs:", yaffs_unmount("yaffs2/") -- 2.30.2