# File lib/rye/box.rb, line 418
418:     def guess_user_home(other_user=nil)
419:       this_user = other_user || opts[:user]
420:       @rye_guessed_homes ||= {}
421:       
422:       # A simple cache. 
423:       return @rye_guessed_homes[this_user] if @rye_guessed_homes.has_key?(this_user)
424:       
425:       # Some junk to determine where user home directories are by default.
426:       # We're relying on the command "useradd -D" so this may not work on
427:       # different Linuxen and definitely won't work on Windows.
428:       # This code will be abstracted out once I find a decent home for it.
429:       # /etc/default/useradd, HOME=/home OR useradd -D
430:       # /etc/adduser.config, DHOME=/home OR ??
431:       user_defaults = {}
432:       ostmp = self.ostype
433:       ostmp &&= ostype.to_s
434:       
435:       if ostmp == "sunos"
436:         #nv.scan(/([\w_-]+?)=(.+?)\s/).each do |n, v|
437:         #  n = 'HOME' if n == 'basedir'
438:         #  user_defaults[n.upcase] = v.strip
439:         #end
440:         # In Solaris, useradd -D says the default home path is /home
441:         # but that directory is not writable. See: http://bit.ly/IJDD0
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