yaffs Creating a python file which will read current directories into yaffs file...
[yaffs2.git] / direct / python / copy_files_into_yaffs_fs.py
1 import os
2 from yaffsfs import *
3
4 yaffs_StartUp()
5 yaffs_mount("/yaffs2/")
6 absolute_path = os.path.abspath(os.path.curdir)
7 print "absolute path:", absolute_path
8 #cwd = os.getcwd()
9 #print cwd
10 dir_in_snapshot=[]
11 files_in_snapshot=[]
12 symlinks_in_snapshot=[]
13 unknown_in_snapshot=[]
14 is_mount_in_snapshot=[]
15 #def scandir(path):
16 #    global dir_in_snapshot
17 #    global files_in_snapshot
18 #    global symlinks_in_snapshot
19 #    global unknown_in_snapshot
20 #path=raw_input("path")
21 #print "does this path exist?", os.path.exists(path)
22 #dir_snapshot=os.listdir(path)
23 #print  dir_snapshot
24 def is_dir_hidden(dir):
25     slash_id=[]
26     for i in range(0, len(dir)):
27         if dir[i]=="/":
28             slash_id.append(i)
29     #print "dir", dir
30     #print "slash_id", slash_id
31     if dir[slash_id[len(slash_id)-1]+1]==".":
32         return True
33     else :
34         return False
35         
36 def scan_dir(path):
37     global files_in_snapshot
38     global symlinks_in_snapshot
39     global search_hidden_directories
40     dir_in_current_dir=[]
41     if os.path.exists(path)==False:
42         print "error#############################"
43         print "path:", path, "  doesnot exist"
44         return 0
45     dir_snapshot=os.listdir(path)
46     for i in range(0, len(dir_snapshot)):
47         #print os.path.isdir(dir_snapshot[i])
48         #print os.path.isfile(dir_snapshot[i])
49         #print os.path.islink(dir_snapshot[i])
50         current_snapshot=os.path.join(path, dir_snapshot[i])
51         #print "current snapshot:", current_snapshot
52         isDir=os.path.isdir(current_snapshot)
53         isFile=os.path.isfile(current_snapshot)
54         isLink=os.path.islink(current_snapshot)
55         isMount=os.path.ismount(current_snapshot)
56         #print dir_snapshot[i]
57         if isDir:
58             if search_hidden_directories==True or is_dir_hidden(current_snapshot) ==False :
59                 stat=os.stat(current_snapshot)
60 #                st_mode ##mode of the folder read/write ect
61                 dir_in_snapshot.append({"path":current_snapshot, "mode":stat.st_mode})
62                 dir_in_current_dir.append(current_snapshot)
63             else :
64                 print "file is hidden so it is ingored", current_snapshot
65         elif isFile:
66             stat=os.stat(current_snapshot)
67 #            stat.st_ino ##inode number
68 #            st_nlink ##number of hard links to this file
69 #            st_size ##size of file
70             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})
71         elif  isLink:
72             symlinks_in_snapshot.append(current_snapshot)
73         elif isMount:
74             is_mount_in_snapshot.append(current_snapshot)
75         else:
76             unknown_in_snapshot.append(current_snapshot)
77             
78     for i in range(0, len(dir_in_current_dir)):
79         scan_dir(dir_in_current_dir[i])
80
81 def print_scanned_dir_list():
82     global files_in_snapshot
83     global symlinks_in_snapshot
84     print "scanned dir"
85
86
87     for i in range(0, len(files_in_snapshot)):
88         if files_in_snapshot[i]["num_of_hardlinks"]>1:
89             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"] 
90
91         else :
92             print "inode",files_in_snapshot[i]["inode"],"size",files_in_snapshot[i]["size"],"path:", files_in_snapshot[i]["path"]
93 #        current_open_file=open(files_in_snapshot[i], "r")
94 #        #current_open_file.f.read(3)
95 #        lines_in_file=current_open_file.readlines()
96 #        #use for loop to write code into yaffs file
97 #        print "number of line of code:", len(lines_in_file)
98 #    print current_open_file
99     for i in range(0, len(symlinks_in_snapshot)):
100         print "symlinks in snapshot:", symlinks_in_snapshot[i]
101     for i in range(0, len(dir_in_snapshot)):
102         print "directories in snapshot:", dir_in_snapshot[i]
103     for i in range(0, len(unknown_in_snapshot)):
104         print "unknown objects in snapshot:", unknown_in_snapshot[i]
105
106 def copy_scanned_files_into_yaffs():
107     global files_in_snapshot
108     global symlinks_in_snapshot
109     global path
110     print"making directories in yaffs"
111
112     for i in range(0, len(dir_in_snapshot)):
113         path2=dir_in_snapshot[i]["path"][len(path):]
114         print"path2", path2
115         dir_path="/yaffs2"+path2
116         output=yaffs_mkdir(dir_path,dir_in_snapshot[i]["mode"] )
117         print"copied", dir_path,   "  output", output
118         print "mode" ,dir_in_snapshot[i]["mode"]
119     print "copying scanned files into yaffs"
120
121
122     for i in range(0, len(files_in_snapshot)):
123         if files_in_snapshot[i]["num_of_hardlinks"]>1:
124             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"] 
125
126         else :
127             file_path=files_in_snapshot[i]["path"][len(path):]
128             current_handle=yaffs_open("yaffs2/"+file_path, 66, files_in_snapshot[i]["mode"]) 
129             output=yaffs_close(current_handle)
130             print "created a file", files_in_snapshot[i]["path"][len(path):], "  ", output
131             print "inode",files_in_snapshot[i]["inode"],"size",files_in_snapshot[i]["size"],"path:", files_in_snapshot[i]["path"]
132
133 #        current_open_file=open(files_in_snapshot[i], "r")
134 #        #current_open_file.f.read(3)
135 #        lines_in_file=current_open_file.readlines()
136 #        #use for loop to write code into yaffs file
137 #        print "number of line of code:", len(lines_in_file)
138 #    print current_open_file
139     for i in range(0, len(symlinks_in_snapshot)):
140         print "symlinks in snapshot:", symlinks_in_snapshot[i]
141     for i in range(0, len(dir_in_snapshot)):
142         print "directories in snapshot:", dir_in_snapshot[i]
143     for i in range(0, len(unknown_in_snapshot)):
144         print "unknown objects in snapshot:", unknown_in_snapshot[i]
145
146
147 #path=raw_input("path")
148 path="/home/timothy/work/yaffs/git/yaffs2"
149 #path="/home/timothy"
150
151 #x=raw_input("search hidden files and directories?[y/n]")
152 x="n"
153 if x=="y" or x=="yes":
154     search_hidden_directories=True
155 else :
156     search_hidden_directories=False
157 scan_dir(path)
158 copy_scanned_files_into_yaffs()
159 #print_scanned_dir_list()
160
161 print"unmounting yaffs:", yaffs_unmount("yaffs2/")