Changes in tools/mkfat.py [432f68a:cc1a727] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/mkfat.py
r432f68a rcc1a727 37 37 import xstruct 38 38 import array 39 40 exclude_names = set(['.svn', '.bzr']) 41 42 def align_up(size, alignment): 43 "Return size aligned up to alignment" 44 45 if (size % alignment == 0): 46 return size 47 48 return ((size // alignment) + 1) * alignment 39 from imgutil import * 49 40 50 41 def subtree_size(root, cluster_size, dirent_size): … … 54 45 files = 2 55 46 56 for name in os.listdir(root): 57 canon = os.path.join(root, name) 58 59 if (os.path.isfile(canon) and (not name in exclude_names)): 60 size += align_up(os.path.getsize(canon), cluster_size) 47 for item in listdir_items(root): 48 if item.is_file: 49 size += align_up(item.size, cluster_size) 61 50 files += 1 62 63 if (os.path.isdir(canon) and (not name in exclude_names)): 64 size += subtree_size(canon, cluster_size, dirent_size) 51 elif item.is_dir: 52 size += subtree_size(item.path, cluster_size, dirent_size) 65 53 files += 1 66 54 … … 72 60 return len(os.listdir(root)) 73 61 74 def write_file( path, outf, cluster_size, data_start, fat, reserved_clusters):62 def write_file(item, outf, cluster_size, data_start, fat, reserved_clusters): 75 63 "Store the contents of a file" 76 64 77 size = os.path.getsize(path)78 65 prev = -1 79 66 first = 0 80 67 81 inf = open(path, "rb") 82 rd = 0; 83 while (rd < size): 68 for data in chunks(item, cluster_size): 84 69 empty_cluster = fat.index(0) 85 70 fat[empty_cluster] = 0xffff … … 92 77 prev = empty_cluster 93 78 94 data = bytes(inf.read(cluster_size));95 79 outf.seek(data_start + (empty_cluster - reserved_clusters) * cluster_size) 96 80 outf.write(data) 97 rd += len(data) 98 inf.close() 99 100 return first, size 81 82 return first, item.size 101 83 102 84 def write_directory(directory, outf, cluster_size, data_start, fat, reserved_clusters, dirent_size, empty_cluster): … … 190 172 parts = name.split('.') 191 173 192 if (len(parts) > 0):174 if len(parts) > 0: 193 175 fname = parts[0] 194 176 else: 195 177 fname = '' 196 178 179 if len(fname) > 8: 180 sys.stdout.write("mkfat.py: error: Directory entry " + name + 181 " base name is longer than 8 characters\n") 182 sys.exit(1); 183 197 184 return (fname + ' ').upper()[0:8] 198 185 … … 201 188 parts = name.split('.') 202 189 203 if (len(parts) > 1):190 if len(parts) > 1: 204 191 ext = parts[1] 205 192 else: 206 193 ext = '' 194 195 if len(parts) > 2: 196 sys.stdout.write("mkfat.py: error: Directory entry " + name + 197 " has more than one extension\n") 198 sys.exit(1); 199 200 if len(ext) > 3: 201 sys.stdout.write("mkfat.py: error: Directory entry " + name + 202 " extension is longer than 3 characters\n") 203 sys.exit(1); 207 204 208 205 return (ext + ' ').upper()[0:3] … … 288 285 empty_cluster = 0 289 286 290 for name in os.listdir(root): 291 canon = os.path.join(root, name) 292 293 if (os.path.isfile(canon) and (not name in exclude_names)): 294 rv = write_file(canon, outf, cluster_size, data_start, fat, reserved_clusters) 295 directory.append(create_dirent(name, False, rv[0], rv[1])) 296 297 if (os.path.isdir(canon) and (not name in exclude_names)): 298 rv = recursion(False, canon, outf, cluster_size, root_start, data_start, fat, reserved_clusters, dirent_size, empty_cluster) 299 directory.append(create_dirent(name, True, rv[0], rv[1])) 287 for item in listdir_items(root): 288 if item.is_file: 289 rv = write_file(item, outf, cluster_size, data_start, fat, reserved_clusters) 290 directory.append(create_dirent(item.name, False, rv[0], rv[1])) 291 elif item.is_dir: 292 rv = recursion(False, item.path, outf, cluster_size, root_start, data_start, fat, reserved_clusters, dirent_size, empty_cluster) 293 directory.append(create_dirent(item.name, True, rv[0], rv[1])) 300 294 301 295 if (head):
Note:
See TracChangeset
for help on using the changeset viewer.