diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index c2131445a1c4f16e3f7432b6edb894fa0f6226c5..8aa229b28a6e45949e1eb37796915af3fa597d07 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -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 + + vol_index = @volumes.index(vols[0]) + # volume not found in volume list + if vol_index.nil? + return -1 end + return vol_index + end - return -1 + 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