Blob Blame History Raw
From a68e9c005933a2d8d0f3264bdb68161263cd3933 Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@gmail.com>
Date: Mon, 15 Sep 2014 19:15:19 +0000
Subject: [PATCH 09/16] virt-what.in: verify files exists before grepping them

Don't grep linux-specific files (e.g. /proc/cpuinfo) unless they exist.
This avoids extraneous errors on BSD/Hurd systems which don't have these
files.
---
 virt-what.in | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/virt-what.in b/virt-what.in
index 5ae1ccb..6e9aef1 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -33,6 +33,10 @@ skip_qemu_kvm=false
 
 VERSION="@VERSION@"
 
+have_cpuinfo() {
+    test -e "${root}/proc/cpuinfo"
+}
+
 fail() {
     echo "virt-what: $1" >&2
     exit 1
@@ -152,7 +156,8 @@ if [ -e "${root}/proc/1/environ" ] &&
 fi
 
 # Check for Linux-VServer
-if cat "${root}/proc/self/status" | grep -q "VxID: [0-9]*"; then
+if test -e "${root}/proc/self/status" \
+   && cat "${root}/proc/self/status" | grep -q "VxID: [0-9]*"; then
     echo linux_vserver
     if grep -q "VxID: 0$" "${root}/proc/self/status"; then
         echo linux_vserver-host
@@ -163,12 +168,13 @@ fi
 
 # Check for UML.
 # Added by Laurent LĂ©onard.
-if grep -q 'UML' "${root}/proc/cpuinfo"; then
+if have_cpuinfo && grep -q 'UML' "${root}/proc/cpuinfo"; then
     echo uml
 fi
 
 # Check for IBM PowerVM Lx86 Linux/x86 emulator.
-if grep -q '^vendor_id.*PowerVM Lx86' "${root}/proc/cpuinfo"; then
+if have_cpuinfo && grep -q '^vendor_id.*PowerVM Lx86' "${root}/proc/cpuinfo"
+then
     echo powervm_lx86
 fi
 
@@ -179,7 +185,7 @@ if echo "$dmi" | grep -q 'Manufacturer.*HITACHI' &&
 fi
 
 # Check for IBM SystemZ.
-if grep -q '^vendor_id.*IBM/S390' "${root}/proc/cpuinfo"; then
+if have_cpuinfo && grep -q '^vendor_id.*IBM/S390' "${root}/proc/cpuinfo"; then
     echo ibm_systemz
     if [ -f "${root}/proc/sysinfo" ]; then
         if grep -q 'VM.*Control Program.*z/VM' "${root}/proc/sysinfo"; then
-- 
2.3.1