Delete a file
# File lib/fusefs.rb, line 153 def can_delete?(path) return false unless Process.uid == FuseFS.reader_uid base, rest = split_path(path) case when base.nil? false when rest.nil? @files.has_key?(base) when ! @subdirs.has_key?(base) false else @subdirs[base].can_delete?(rest) end end
Make a new directory
# File lib/fusefs.rb, line 183 def can_mkdir?(path) return false unless Process.uid == FuseFS.reader_uid base, rest = split_path(path) case when base.nil? false when rest.nil? ! (@subdirs.has_key?(base) || @files.has_key?(base)) when ! @subdirs.has_key?(base) false else @subdirs[base].can_mkdir?(rest) end end
Delete an existing directory.
# File lib/fusefs.rb, line 214 def can_rmdir?(path) return false unless Process.uid == FuseFS.reader_uid base, rest = split_path(path) case when base.nil? false when rest.nil? @subdirs.has_key?(base) when ! @subdirs.has_key?(base) false else @subdirs[base].can_rmdir?(rest) end end
Write to a file
# File lib/fusefs.rb, line 124 def can_write?(path) return false unless Process.uid == FuseFS.reader_uid base, rest = split_path(path) case when base.nil? true when rest.nil? true when ! @subdirs.has_key?(base) false else @subdirs[base].can_write?(rest) end end
Contents of directory.
# File lib/fusefs.rb, line 49 def contents(path) base, rest = split_path(path) case when base.nil? (@files.keys + @subdirs.keys).sort.uniq when ! @subdirs.has_key?(base) nil when rest.nil? @subdirs[base].contents('/') else @subdirs[base].contents(rest) end end
# File lib/fusefs.rb, line 167 def delete(path) base, rest = split_path(path) case when base.nil? nil when rest.nil? # Delete it. @files.delete(base) when ! @subdirs.has_key?(base) nil else @subdirs[base].delete(rest) end end
File types
# File lib/fusefs.rb, line 64 def directory?(path) base, rest = split_path(path) case when base.nil? true when ! @subdirs.has_key?(base) false when rest.nil? true else @subdirs[base].directory?(rest) end end
# File lib/fusefs.rb, line 77 def file?(path) base, rest = split_path(path) case when base.nil? false when rest.nil? @files.has_key?(base) when ! @subdirs.has_key?(base) false else @subdirs[base].file?(rest) end end
# File lib/fusefs.rb, line 197 def mkdir(path,dir=nil) base, rest = split_path(path) case when base.nil? false when rest.nil? dir ||= MetaDir.new @subdirs[base] = dir true when ! @subdirs.has_key?(base) false else @subdirs[base].mkdir(rest,dir) end end
File Reading
# File lib/fusefs.rb, line 92 def read_file(path) base, rest = split_path(path) case when base.nil? nil when rest.nil? @files[base].to_s when ! @subdirs.has_key?(base) nil else @subdirs[base].read_file(rest) end end
# File lib/fusefs.rb, line 228 def rmdir(path) base, rest = split_path(path) dir ||= MetaDir.new case when base.nil? false when rest.nil? @subdirs.delete(base) true when ! @subdirs.has_key?(base) false else @subdirs[base].rmdir(rest,dir) end end
File sizing
# File lib/fusefs.rb, line 107 def size(path) base, rest = split_path(path) case when base.nil? 0 when rest.nil? obj = @files[base] obj.respond_to?(:size) ? obj.size : 0 when ! @subdirs.has_key?(base) 0 else dir = @subdirs[base] dir.respond_to?(:size) ? dir.size(rest) : 0 end end
# File lib/fusefs.rb, line 138 def write_to(path,file) base, rest = split_path(path) case when base.nil? false when rest.nil? @files[base] = file when ! @subdirs.has_key?(base) false else @subdirs[base].write_to(rest,file) end end
# File lib/fusefs.rb, line 43 def initialize @subdirs = Hash.new(nil) @files = Hash.new(nil) end