105: def getconfig
106: output = zonecfg :info
107:
108: name = nil
109: current = nil
110: hash = {}
111: output.split("\n").each do |line|
112: case line
113: when /^(\S+):\s*$/
114: name = $1
115: current = nil
116: when /^(\S+):\s*(.+)$/
117: hash[$1.intern] = $2
118: when /^\s+(\S+):\s*(.+)$/
119: if name
120: hash[name] = [] unless hash.include? name
121:
122: unless current
123: current = {}
124: hash[name] << current
125: end
126: current[$1.intern] = $2
127: else
128: err "Ignoring '#{line}'"
129: end
130: else
131: debug "Ignoring zone output '#{line}'"
132: end
133: end
134:
135: hash
136: end