Changeset 326
- Timestamp:
- 07/18/06 18:05:47 (4 years ago)
- Files:
-
- 1 modified
-
gtk-osx/trunk/scripts/gtk-osx/ktrace.rb (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
gtk-osx/trunk/scripts/gtk-osx/ktrace.rb
r321 r326 6 6 attr_reader :tracefile 7 7 8 def initialize(tracefile = 'ktrace.out') 8 @@helper_dir = Pathname.new(__FILE__) + '../../../kdump-parse' 9 def self.helper_dir=(dir) 10 @@helper_dir = dir 11 end 12 13 def initialize(tracefile = 'ktrace.out', origdir = nil) 9 14 @tracefile = tracefile 10 @origdir = Dir.pwd15 @origdir = origdir || Dir.pwd 11 16 end 12 17 … … 18 23 19 24 # Get the files that were written to. 20 # Not the prettiest implementation, but the previous one was far too slow.21 25 def write_paths 22 26 return @files if defined? @files 27 catch :no_helper do 28 c_write_paths 29 return @files 30 end 31 ruby_write_paths 32 return @files 33 end 34 35 def get_helper 36 return @@helper if defined? @@helper 23 37 38 dir = Pathname.new(@@helper_dir) 39 program = 'kdump-parse' 40 41 # Search for an existing executable 42 [dir, Pathname.new(__FILE__).parent].each do |d| 43 file = d + program 44 return (@@helper = file) if file.executable? 45 end 46 47 # Try building it 48 makefile = dir + 'Makefile' 49 if dir.directory? && dir.writable? && makefile.exist? 50 system("(cd #{dir.shellquote} && make #{program})") 51 file = dir + program 52 return (@@helper = file) if file.executable? 53 end 54 55 # Give up 56 throw :no_helper 57 end 58 59 # Use an external helper, for SPEED 60 def c_write_paths 61 helper = get_helper 62 IO.popen("#{helper.shellquote} #{@tracefile.shellquote} " + 63 "#{@origdir.shellquote}", 'r') do |pipe| 64 @files = pipe.readlines.map { |s| Pathname.new(s.chomp) } 65 end 66 end 67 68 # Pure-ruby implementation 69 def ruby_write_paths 24 70 dest_idx = { 'open' => 0, 'symlink' => 0, 'link' => 1, 'chdir' => 0, 25 71 'rename' => 1 } … … 67 113 end 68 114 69 return@files = files.keys115 @files = files.keys 70 116 end 71 117 end
