33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/rmtools/fs/io.rb', line 33
def write(df, value='', pos=0)
RMTools::prepare_write df, value do
if pos == 0
File.open(df, File::CREAT|File::WRONLY|File::APPEND) {|f| f << value}
else
if pos < 0
if !File.file?(df)
raise IndexError, "file #{df} does not exist, can't write from position #{pos}"
elsif (size = File.size(df)) < -pos
raise IndexError, "file #{df} is shorter than #{(-pos).bytes}, can't write from position #{pos}"
end
pos = size - pos
end
File.open(df, File::CREAT|File::WRONLY) {|f| f.pos = pos; f << value}
end
end
end
|