doctor: rewrite Volume class to fix issue with google update engine

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
This commit is contained in:
Tim Oram 2012-06-22 02:30:00 -02:30 committed by Adam Vandenberg
parent 0d2e26fc58
commit 3147dd134a

View File

@ -3,25 +3,37 @@ require 'cmd/missing'
class Volumes
def initialize
@volumes = []
raw_mounts=`/sbin/mount`
raw_mounts.split("\n").each do |line|
case line
when /^(.+) on (\S+) \(/
@volumes << [$1, $2]
end
end
# Sort volumes by longest path prefix first
@volumes.sort! {|a,b| b[1].length <=> a[1].length}
@volumes = get_mounts
end
def which path
@volumes.each_index do |i|
vol = @volumes[i]
return i if vol[1].start_with? path.to_s
vols = get_mounts path
# no volume found
if vols.empty?
return -1
end
return -1
vol_index = @volumes.index(vols[0])
# volume not found in volume list
if vol_index.nil?
return -1
end
return vol_index
end
def get_mounts path=nil
vols = []
# get the volume of path, if path is nil returns all volumes
raw_df = `/bin/df -P #{path}`
raw_df.split("\n").each do |line|
case line
# regex matches: /dev/disk0s2 489562928 440803616 48247312 91% /
when /^(.*)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]{1,3}\%)\s+(.*)/
vols << $6
end
end
return vols
end
end