class FuseFS::FileHandle

Attributes

contents[RW]
flags[R]
id[R]
path[R]
raw[RW]

Public Class Methods

new(path,flags) click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 14
def initialize(path,flags)
  @id = (@@fh += 1)
  @flags = flags
  @path = path
  @modified = false
  @contents = ""
  @size = 0
end

Public Instance Methods

accmode() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 54
def accmode
  flags & Fcntl::O_ACCMODE
end
append?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 70
def append?
  writing? && (flags & Fcntl::O_APPEND != 0)
end
create() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 27
def create
  @contents = ""
  @modified = true
end
flush() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 45
def flush
  @modified = false
  contents
end
modified?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 50
def modified?
  @modified
end
raw_mode() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 82
def raw_mode
  mode_str = case accmode
             when Fcntl::O_RDWR; "rw"
             when Fcntl::O_RDONLY; "r"
             when Fcntl::O_WRONLY; "w"
             end

  mode_str << "a" if append?
  return mode_str
end
rdonly?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 66
def rdonly?
  accmode == Fcntl::O_RDONLY
end
rdwr?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 58
def rdwr?
  accmode == Fcntl::O_RDWR
end
read(offset,size) click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 23
def read(offset,size)
  contents[offset,size]
end
reading?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 74
def reading?
  rdonly? || rdwr?
end
write(offset,data) click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 32
def write(offset,data)
  # TODO: why append?
  if append? || offset >= contents.length
    #ignore offset
    #TODO: should this zero fill?
    contents << data
  else
    contents[offset,data.length]=data
  end
  @modified = true
  return data.length
end
writing?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 78
def writing?
  wronly? || rdwr?
end
wronly?() click to toggle source
# File lib/fuse/rfusefs-fuse.rb, line 62
def wronly?
  accmode == Fcntl::O_WRONLY
end