github.com/iDigitalFlame/xmt@v0.5.4/device/local/plan9_no_crypt.go (about) 1 //go:build plan9 && !crypt 2 // +build plan9,!crypt 3 4 // Copyright (C) 2020 - 2023 iDigitalFlame 5 // 6 // This program is free software: you can redistribute it and/or modify 7 // it under the terms of the GNU General Public License as published by 8 // the Free Software Foundation, either version 3 of the License, or 9 // any later version. 10 // 11 // This program is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 // 16 // You should have received a copy of the GNU General Public License 17 // along with this program. If not, see <https://www.gnu.org/licenses/>. 18 // 19 20 package local 21 22 import ( 23 "os/exec" 24 25 "github.com/iDigitalFlame/xmt/data" 26 ) 27 28 func sysID() []byte { 29 if b, err := data.ReadFile("/etc/hostid"); err == nil { 30 return b 31 } 32 o, _ := exec.Command("kenv", "-q", "smbios.system.uuid").CombinedOutput() 33 return o 34 } 35 func version() string { 36 var ( 37 ok bool 38 b, n, v string 39 ) 40 if m := release(); len(m) > 0 { 41 b = m["ID"] 42 if n, ok = m["PRETTY_NAME"]; !ok { 43 n = m["NAME"] 44 } 45 if v, ok = m["VERSION_ID"]; !ok { 46 v = m["VERSION"] 47 } 48 } 49 if len(v) == 0 { 50 v = "plan9" 51 } 52 switch { 53 case len(n) == 0 && len(b) == 0 && len(v) == 0: 54 return "plan9" 55 case len(n) == 0 && len(b) > 0 && len(v) > 0: 56 return "plan9 (" + v + ", " + b + ")" 57 case len(n) == 0 && len(b) == 0 && len(v) > 0: 58 return "plan9 (" + v + ")" 59 case len(n) == 0 && len(b) > 0 && len(v) == 0: 60 return "plan9 (" + b + ")" 61 case len(n) > 0 && len(b) > 0 && len(v) > 0: 62 return n + " (" + v + ", " + b + ")" 63 case len(n) > 0 && len(b) == 0 && len(v) > 0: 64 return n + " (" + v + ")" 65 case len(n) > 0 && len(b) > 0 && len(v) == 0: 66 return n + " (" + b + ")" 67 } 68 return "plan9" 69 }