diff options
| author | Jack Nagel | 2013-11-26 20:23:19 -0600 |
|---|---|---|
| committer | Jack Nagel | 2013-11-26 20:23:19 -0600 |
| commit | 83d567710005b47fcc19679df6a1cb6651e756da (patch) | |
| tree | c7237fd60b492a4b7cccd41c7ef47a70c3771f49 /Library | |
| parent | 5ce8f7a3a494e1d8e812369301fd4c4a05a7d9b7 (diff) | |
| download | homebrew-83d567710005b47fcc19679df6a1cb6651e756da.tar.bz2 | |
Cache calls to sysctl_bool at the source
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/os/mac/hardware.rb | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/Library/Homebrew/os/mac/hardware.rb b/Library/Homebrew/os/mac/hardware.rb index 4cd8eb775..dec4126a6 100644 --- a/Library/Homebrew/os/mac/hardware.rb +++ b/Library/Homebrew/os/mac/hardware.rb @@ -104,36 +104,39 @@ module MacCPUs end def altivec? - @altivec ||= sysctl_bool('hw.optional.altivec') + sysctl_bool('hw.optional.altivec') end def avx? - @avx ||= sysctl_bool('hw.optional.avx1_0') + sysctl_bool('hw.optional.avx1_0') end def sse3? - @sse3 ||= sysctl_bool('hw.optional.sse3') + sysctl_bool('hw.optional.sse3') end def ssse3? - @ssse3 ||= sysctl_bool('hw.optional.supplementalsse3') + sysctl_bool('hw.optional.supplementalsse3') end def sse4? - @sse4 ||= sysctl_bool('hw.optional.sse4_1') + sysctl_bool('hw.optional.sse4_1') end def sse4_2? - @sse4 ||= sysctl_bool('hw.optional.sse4_2') + sysctl_bool('hw.optional.sse4_2') end protected def sysctl_bool(property) - result = nil - IO.popen("/usr/sbin/sysctl -n #{property} 2>/dev/null") do |f| - result = f.gets.to_i # should be 0 or 1 + (@properties ||= {}).fetch(property) do + result = nil + IO.popen("/usr/sbin/sysctl -n '#{property}' 2>/dev/null") do |f| + result = f.gets.to_i # should be 0 or 1 + end + # sysctl call succeded and printed 1 + @properties[property] = $?.success? && result == 1 end - $?.success? && result == 1 # sysctl call succeded and printed 1 end end |
