418: def guess_user_home(other_user=nil)
419: this_user = other_user || opts[:user]
420: @rye_guessed_homes ||= {}
421:
422:
423: return @rye_guessed_homes[this_user] if @rye_guessed_homes.has_key?(this_user)
424:
425:
426:
427:
428:
429:
430:
431: user_defaults = {}
432: ostmp = self.ostype
433: ostmp &&= ostype.to_s
434:
435: if ostmp == "sunos"
436:
437:
438:
439:
440:
441:
442: user_defaults['HOME'] = '/export/home'
443: elsif ostmp == "darwin"
444: user_defaults['HOME'] = '/Users'
445: elsif ostmp == "windows"
446: user_defaults['HOME'] = 'C:/Documents and Settings'
447: else
448: raw = self.quietly { useradd(:D) } rescue []
449: raw = ["HOME=/home"] if raw.nil? || raw.empty?
450: raw.each do |nv|
451: n, v = nv.scan(/\A([\w_-]+?)=(.+)\z/).flatten
452: user_defaults[n] = v
453: end
454: end
455:
456: @rye_guessed_homes[this_user] = "#{user_defaults['HOME']}/#{this_user}"
457: end