X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fpython%2Fyaffs_importer.py;h=9296df55dea4e96b567866f067fc32b8aefab049;hp=1a6937b921073af5b141860b8b94b3eb6b2cc681;hb=86e364669f775e70f32204769217ecf035508c1d;hpb=e3344eda11a9656644f9c7fe345f1283cdd46b20 diff --git a/direct/python/yaffs_importer.py b/direct/python/yaffs_importer.py index 1a6937b..9296df5 100644 --- a/direct/python/yaffs_importer.py +++ b/direct/python/yaffs_importer.py @@ -1,3 +1,16 @@ +## +## 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 Timothy Manning +## +## 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. +## + import os from yaffsfs import * import sys @@ -16,6 +29,10 @@ def check_for_yaffs_errors(output): error=yaffs_get_error() debug_message("error######################################",0) debug_message(("error code", error), 0) + error_message=ctypes.c_char_p() + error_message.value=yaffs_error_to_str(error); + print "error message", error_message.value + def debug_message(message, debug_level): """note: that debug level 0 will always be printed unless debug_level is set to -1""" @@ -72,6 +89,9 @@ def subtract_paths(path1, path2): return new_path def create_file(file): +# freespace=ctypes.c_longlong +# freespace.value=yaffs_freespace(yaffs_root_dir_path) +# print "yaffs free space:", freespace.value debug_message( "\n \n \n", 2) file_path= join_paths(yaffs_root_dir_path, file["path"][len(path):]) debug_message( ("creating file:", file_path), 2) @@ -79,7 +99,7 @@ def create_file(file): debug_message("opening file",2) # yaffs_ls(file["path"]) - ##if there is already a file in yaffs then remove the file . this is to prevent yaffs from opening a nd writing to a read only file + ##if there is already a file in yaffs then remove the file . this is to prevent yaffs from opening and writing to a read only file if yaffs_access(file_path, 0)==0:##the 0 means does it exist. debug_message ("file already exists in yaffs", 2) output=yaffs_unlink(file_path) @@ -91,6 +111,15 @@ def create_file(file): data_file=open(file["path"], "r") output=yaffs_lseek(current_handle, 0, 0) if output==-1: + ##if there is no more space in the emfile then this is where it will show up. + freespace=ctypes.c_longlong + freespace.value=yaffs_freespace(yaffs_root_dir_path) + print "yaffs free space:", freespace.value + + if freespace.value==0: + #print "yaffs free space:", yaffs_freespace(yaffs_root_dir_path) + print "yaffs is out of space exiting program" + #sys.exit() debug_message("error with yaffs lseeking", 2) check_for_yaffs_errors(output) @@ -353,7 +382,7 @@ def copy_scanned_files_into_yaffs(files_in_snapshot, dir_in_snapshot, symlinks_ debug_message( ("unknown object in snapshot:", unknown_in_snapshot[i]), 0) -def import_into_yaffs(file_path, yaffs_path="/yaffs2/", debug_level=1, copy_hidden_dir=True ,new_yaffs_trace_val=0 ): +def import_into_yaffs(file_path, yaffs_path="/yaffs2/", debug_level=1, copy_hidden_dir=True ,new_yaffs_trace_val=-1 ): # global current_debug_level # global search_hidden_directories # global yaffs_root_dir_path @@ -364,7 +393,8 @@ def import_into_yaffs(file_path, yaffs_path="/yaffs2/", debug_level=1, copy_hid # yaffs_root_dir_path=yaffs_path # path=file_path old_yaffs_trace_val=yaffs_get_trace() - yaffs_set_trace(new_yaffs_trace_val) + if new_yaffs_trace_val!=-1: + yaffs_set_trace(new_yaffs_trace_val) data=scan_dir(file_path, copy_hidden_dir) copy_scanned_files_into_yaffs(data[0], data[1], data[2], data[3],file_path, yaffs_path) @@ -373,14 +403,15 @@ def import_into_yaffs(file_path, yaffs_path="/yaffs2/", debug_level=1, copy_hid if __name__=="__main__": - yaffs_StartUp() + yaffs_start_up() yaffs_mount("/yaffs2/") - yaffs_set_trace(0) + #yaffs_set_trace(0) # absolute_path = os.path.abspath(os.path.curdir) #print "absolute path:", absolute_path current_debug_level=1 search_hidden_directories=True - yaffs_root_dir_path="/yaffs2/scanning/" + yaffs_root_dir_path="/yaffs2/" + yaffs_trace=-1 #print sys.argv path=sys.argv[1] for i in range(2, len(sys.argv)): @@ -388,13 +419,17 @@ if __name__=="__main__": current_debug_level=int( sys.argv[i+1]) if sys.argv[i]=="-ignore_hidden_directories": search_hidden_directories=False + if sys.argv[i]=="-o": + yaffs_root_dir_path=sys.argv[i+1] + if sys.argv[i]=="-yaffs_trace": + yaffs_trace=int(sys.argv[i+1]) # # # path="/home/timothy/work/yaffs/git/yaffs2" # path="/home/timothy/my_stuff/old_laptop/timothy/programming_lejos/" - import_into_yaffs(path, yaffs_root_dir_path, current_debug_level, search_hidden_directories, 0 ) + import_into_yaffs(path, yaffs_root_dir_path, current_debug_level, search_hidden_directories, yaffs_trace ) # scan_dir(path) # copy_scanned_files_into_yaffs() #print_scanned_dir_list()