# File lib/facter/util/processor.rb, line 214
  def self.enum_cpuinfo
    processor_num = -1
    processor_list = []
    cpuinfo = "/proc/cpuinfo"

    if File.exists?(cpuinfo)
      model = Facter.value(:architecture)
      case model
      when "x86_64", "amd64", "i386", "x86", /parisc/, "hppa", "ia64"
        File.readlines(cpuinfo).each do |l|
          if l =~ /processor\s+:\s+(\d+)/
            processor_num = $1.to_i
          elsif l =~ /model name\s+:\s+(.*)\s*$/
            processor_list[processor_num] = $1 unless processor_num == -1
            processor_num = -1
          elsif l =~ /processor\s+(\d+):\s+(.*)/
            processor_num = $1.to_i
            processor_list[processor_num] = $2 unless processor_num == -1
          end
        end

      when "ppc64", "ppc64le"
        File.readlines(cpuinfo).each do |l|
          if l =~ /processor\s+:\s+(\d+)/
            processor_num = $1.to_i
          elsif l =~ /cpu\s+:\s+(.*)\s*$/
            processor_list[processor_num] = $1 unless processor_num == -1
            processor_num = -1
          end
        end

      when /arm/
        File.readlines(cpuinfo).each do |l|
          if l =~ /Processor\s+:\s+(.+)/
            processor_num += 1
            processor_list[processor_num] = $1.chomp
          elsif l =~ /processor\s+:\s+(\d+)\s*$/
            proc_num = $1.to_i
            if proc_num != 0
              processor_num += 1
              processor_list[processor_num] = processor_list[processor_num-1]
            end
          end
        end

      when /sparc/
        File.readlines(cpuinfo).each do |l|
          if l =~ /cpu\s+:\s+(.*)\s*$/
            processor_num += 1
            processor_list[processor_num] = $1
          end
        end
      end
    end
    processor_list
  end