def main(): global LOGGING if "-v" in sys.argv or "--verbose" in sys.argv: LOGGING = True usage = """ Lind Fuse File System. """ + Fuse.fusage lind.load_fs() gotlock = runonce.getprocesslock('lind_fuse') if gotlock == True: pass else: if gotlock: print "\n\n#########################################################" print "[Warning] Another Process (pid: " + str(gotlock) + ") already in use." print "#########################################################\n\n" else: print "[Warning] Another Process is running" server = LindFuseFS(version="%prog " + fuse.__version__, usage=usage, dash_s_do='setsingle') server.multithreaded = False # if this is true, better add some locks! server.parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="print extra information about which system" " calls are being called.") server.parser.add_option(mountopt="root", metavar="PATH", default='/', help="mirror filesystem from under PATH " "[default: %default]") server.parse(values=server, errex=1) server.main() lind.persist_metadata("lind.metadata")
def main(): usage = """ Lind Fuse File System. """ + Fuse.fusage lind.load_fs() server = LindFuseFS(version="%prog " + fuse.__version__, usage=usage, dash_s_do='setsingle') server.multithreaded = False # if this is true, better add some locks! server.parser.add_option(mountopt="root", metavar="PATH", default='/', help="mirror filesystem from under PATH [default: %default]") server.parse(values=server, errex=1) server.main() lind.persist_metadata("lind.metadata")
def fsync(self, isfsyncfile): log("fsync", self.fd, isfsyncfile) lind.persist_metadata("lind.metadata") return 0
# read the first 5 bytes (hello) assert (lind_test_server.read_syscall(myfd, 5) == 'hello') # change it to hello world! assert (lind_test_server.write_syscall(myfd, ' world') == 6) # seek to the beginning again... assert (lind_test_server.lseek_syscall(myfd, 0, SEEK_SET) == 0) # and read it all... assert (lind_test_server.read_syscall(myfd, 100) == 'hello world!') lind_test_server.close_syscall(myfd) # Now make and remove a file: myfd = lind_test_server.open_syscall(TEST2_FILENAME, \ O_CREAT | O_EXCL | O_RDWR, S_IRWXA) # write should succeed message = '================================================================================================================================' assert (lind_test_server.write_syscall(myfd, message) == len(message)) lind_test_server.close_syscall(myfd) lind_test_server.unlink_syscall(TEST2_FILENAME) lind_test_server.persist_metadata(DEFAULT_METADATA_FILENAME) # ensure the metadata exists... assert (os.access(DEFAULT_METADATA_FILENAME, os.W_OK))
def main(): lind_test_server.load_fs() inter = 0 no_args = 1 # with no arguments we go into interactive mode if len(sys.argv) == 1: inter = 1 else: # with 2 args we may want to do a copy if len(sys.argv) == 3: # if the args dont start with a '-' we want to do a copy if not ('-' == sys.argv[1][0] or '-' == sys.argv[2][0]): cp_cmd(sys.argv[1], sys.argv[2]) return # we are done now # iterate over the args in a non pythonish way # so we can jump around when we need to i = 1 while i<len(sys.argv): arg = sys.argv[i] # interactive mode specified if (arg == '-i' or arg == '-interactive'): inter = 1 # we want to copy some files so get the source and dest elif (arg == '-cp' or arg == '-copy'): no_args = 0 if (i+2 < len(sys.argv)): cp_cmd(sys.argv[i+1], sys.argv[i+2]) i += 1 # move one forward so after the loop we have moved 2 args else: print_help("cp") # we want to ls something elif (arg == '-ls'): no_args = 0 num_args = get_num_args(sys.argv[i+1:]) if num_args: ls_cmd(sys.argv[i+1:i+num_args+1]) # num_args+1 as its [inclusive:exclusive] else: ls_cmd(lind_test_server.fs_calls_context['currentworkingdirectory']) i += num_args # we want to read some files elif (arg == '-cat'): no_args = 0 num_args = get_num_args(sys.argv[i+1:]) if num_args: print num_args cat_cmd(sys.argv[i+1:i+num_args+1]) i += num_args else: print_help("cat") # we want to do an md5 sum elif (arg == '-md5' or arg == '-md5sum'): no_args = 0 num_args = get_num_args(sys.argv[i+1:]) if num_args: md5_cmd(sys.argv[i+1:i+num_args+1]) i += num_args else: print_help("md5") # we want to wipe the filesystem elif (arg == '-w' or arg == '-wipe'): no_args = 0 wipe_cmd() # we want some help! elif (arg == '-h' or arg == '-help'): no_args = 0 print_help(ALL_ARGS + " inter cmd") # next arg i += 1 # we now enter interactive mode if specified if inter: no_args = 0 print "interactive mode, type 'exit' to exit" #request user input (the command they want to type) input_value = raw_input(lind_test_server.fs_calls_context['currentworkingdirectory'] +": ") #loop until the user hits exit, prompting them to enter a command at each iteration while((not input_value == "exit")): parse_input(input_value) input_value = raw_input(lind_test_server.fs_calls_context['currentworkingdirectory'] +": ") # if we didnt find any usable args print usage if no_args: print_help(ALL_ARGS + " inter cmd") lind_test_server.persist_metadata("lind.metadata")
# read the first 5 bytes (hello) assert lind_test_server.read_syscall(myfd, 5) == "hello" # change it to hello world! assert lind_test_server.write_syscall(myfd, " world") == 6 # seek to the beginning again... assert lind_test_server.lseek_syscall(myfd, 0, SEEK_SET) == 0 # and read it all... assert lind_test_server.read_syscall(myfd, 100) == "hello world!" lind_test_server.close_syscall(myfd) # Now make and remove a file: myfd = lind_test_server.open_syscall(TEST2_FILENAME, O_CREAT | O_EXCL | O_RDWR, S_IRWXA) # write should succeed message = "================================================================================================================================" assert lind_test_server.write_syscall(myfd, message) == len(message) lind_test_server.close_syscall(myfd) lind_test_server.unlink_syscall(TEST2_FILENAME) lind_test_server.persist_metadata(DEFAULT_METADATA_FILENAME) # ensure the metadata exists... assert os.access(DEFAULT_METADATA_FILENAME, os.W_OK)