diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 2134de3d3d..6f7b3a98b2 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -187,9 +187,9 @@ def check_for_other_package_managers end def check_for_broken_symlinks + require 'keg' broken_symlinks = [] - %w[lib include sbin bin etc share].each do |d| - d = HOMEBREW_PREFIX/d + Keg::PRUNEABLE_DIRECTORIES.map { |d| HOMEBREW_PREFIX/d }.each do |d| next unless d.directory? d.find do |pn| broken_symlinks << pn if pn.symlink? and pn.readlink.expand_path.to_s =~ /^#{HOMEBREW_PREFIX}/ and not pn.exist? diff --git a/Library/Homebrew/cmd/prune.rb b/Library/Homebrew/cmd/prune.rb index 75e6026df8..394b8ad7ff 100644 --- a/Library/Homebrew/cmd/prune.rb +++ b/Library/Homebrew/cmd/prune.rb @@ -9,7 +9,7 @@ module Homebrew extend self $d = 0 dirs = [] - %w[bin sbin etc lib include share Library/LinkedKegs].map{ |d| HOMEBREW_PREFIX+d }.each do |path| + Keg::PRUNEABLE_DIRECTORIES.map{ |d| HOMEBREW_PREFIX/d }.each do |path| next unless path.directory? path.find do |path| path.extend ObserverPathnameExtension diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index ba394266c9..8bd779ecac 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -10,6 +10,8 @@ class Keg < Pathname # locale-specific directories have the form language[_territory][.codeset][@modifier] LOCALEDIR_RX = /(locale|man)\/([a-z]{2}|C|POSIX)(_[A-Z]{2})?(\.[a-zA-Z\-0-9]+(@.+)?)?/ INFOFILE_RX = %r[info/([^.].*?\.info|dir)$] + TOP_LEVEL_DIRECTORIES = %w[bin etc include lib sbin share var] + PRUNEABLE_DIRECTORIES = %w[bin etc include lib sbin share Library/LinkedKegs] # if path is a file in a keg then this will return the containing Keg object def self.for path @@ -31,7 +33,7 @@ class Keg < Pathname # of files and directories linked $n=$d=0 - %w[bin etc lib include sbin share var].map{ |d| self/d }.each do |src| + TOP_LEVEL_DIRECTORIES.map{ |d| self/d }.each do |src| next unless src.exist? src.find do |src| next if src == self