summaryrefslogtreecommitdiff
path: root/lib/ftools.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ftools.rb')
-rw-r--r--lib/ftools.rb181
1 files changed, 0 insertions, 181 deletions
diff --git a/lib/ftools.rb b/lib/ftools.rb
deleted file mode 100644
index 4047a595eb..0000000000
--- a/lib/ftools.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-class << File
-
- TOO_BIG = 1024 * 1024 * 2 # 2MB
-
- def catname from, to
- if FileTest.directory? to
- File.join to.sub(%r([/\\]$), ''), basename(from)
- else
- to
- end
- end
-
-# copy file
-
- def syscopy from, to
- to = catname(from, to)
-
- fsize = size(from)
- fsize = 1024 if fsize < 512
- fsize = TOO_BIG if fsize > TOO_BIG
-
- fmode = stat(from).mode
- tpath = to
- not_exist = !exist?(tpath)
-
- from = open(from, "r")
- from.binmode
- to = open(to, "w")
- to.binmode
-
- begin
- while true
- r = from.sysread(fsize)
- rsize = r.size
- w = 0
- while w < rsize
- t = to.syswrite(r[w, rsize - w])
- w += t
- end
- end
- rescue EOFError
- ret = true
- rescue
- ret = false
- ensure
- to.close
- from.close
- end
- chmod(fmode, tpath) if not_exist
- ret
- end
-
- def copy from, to, verbose = false
- $stderr.print from, " -> ", catname(from, to), "\n" if verbose
- syscopy from, to
- end
-
- alias cp copy
-
-# move file
-
- def move from, to, verbose = false
- to = catname(from, to)
- $stderr.print from, " -> ", to, "\n" if verbose
-
- if RUBY_PLATFORM =~ /djgpp|cygwin|mswin32/ and FileTest.file? to
- unlink to
- end
- fstat = stat(from)
- begin
- rename from, to
- rescue
- begin
- symlink File.readlink(from), to and unlink from
- rescue
- from_stat = stat(from)
- syscopy from, to and unlink from
- utime(from_stat.atime, from_stat.mtime, to)
- begin
- chown(fstat.uid, fstat.gid, to)
- rescue
- end
- end
- end
- end
-
- alias mv move
-
-# compare two files
-# true: identical
-# false: not identical
-
- def compare from, to, verbose = false
- $stderr.print from, " <=> ", to, "\n" if verbose
- fsize = size(from)
- fsize = 1024 if fsize < 512
- fsize = TOO_BIG if fsize > TOO_BIG
-
- from = open(from, "r")
- from.binmode
- to = open(to, "r")
- to.binmode
-
- ret = false
- fr = tr = ''
-
- begin
- while fr == tr
- fr = from.read(fsize)
- if fr
- tr = to.read(fr.size)
- else
- ret = to.read(fsize)
- ret = !ret || ret.length == 0
- break
- end
- end
- rescue
- ret = false
- ensure
- to.close
- from.close
- end
- ret
- end
-
- alias cmp compare
-
-# unlink files safely
-
- def safe_unlink(*files)
- verbose = if files[-1].is_a? String then false else files.pop end
- begin
- $stderr.print files.join(" "), "\n" if verbose
- chmod 0777, *files
- unlink(*files)
- rescue
-# STDERR.print "warning: Couldn't unlink #{files.join ' '}\n"
- end
- end
-
- alias rm_f safe_unlink
-
- def makedirs(*dirs)
- verbose = if dirs[-1].is_a? String then false else dirs.pop end
-# mode = if dirs[-1].is_a? Fixnum then dirs.pop else 0755 end
- mode = 0755
- for dir in dirs
- next if FileTest.directory? dir
- parent = dirname(dir)
- makedirs parent unless FileTest.directory? parent
- $stderr.print "mkdir ", dir, "\n" if verbose
- if basename(dir) != ""
- Dir.mkdir dir, mode
- end
- end
- end
-
- alias mkpath makedirs
-
- alias o_chmod chmod
-
- vsave, $VERBOSE = $VERBOSE, false
- def chmod(mode, *files)
- verbose = if files[-1].is_a? String then false else files.pop end
- $stderr.printf "chmod %04o %s\n", mode, files.join(" ") if verbose
- o_chmod mode, *files
- end
- $VERBOSE = vsave
-
- def install(from, to, mode = nil, verbose = false)
- to = catname(from, to)
- unless FileTest.exist? to and cmp from, to
- safe_unlink to if FileTest.exist? to
- cp from, to, verbose
- chmod mode, to, verbose if mode
- end
- end
-
-end
-# vi:set sw=2: