Skip to content

Instantly share code, notes, and snippets.

@maddiesch
Created November 8, 2017 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maddiesch/12d832a169d3609d4b0cd14af53ea6ff to your computer and use it in GitHub Desktop.
Save maddiesch/12d832a169d3609d4b0cd14af53ea6ff to your computer and use it in GitHub Desktop.
internal struct SystemInfo {
let sysname: String
let nodename: String
let release: String
let version: String
let machine: String
init() {
var info: utsname = utsname()
let status = withUnsafeMutablePointer(to: &info) {
return uname($0)
}
guard status == 0 else {
self.sysname = "unknown"
self.nodename = "unknown"
self.release = "unknown"
self.version = "unknown"
self.machine = "unknown"
return
}
do {
var tmp = info.sysname
let bytes = [Int8](UnsafeBufferPointer(start: &tmp.0, count: MemoryLayout.size(ofValue: tmp)))
self.sysname = String(cString: bytes)
}
do {
var tmp = info.nodename
let bytes = [Int8](UnsafeBufferPointer(start: &tmp.0, count: MemoryLayout.size(ofValue: tmp)))
self.nodename = String(cString: bytes)
}
do {
var tmp = info.release
let bytes = [Int8](UnsafeBufferPointer(start: &tmp.0, count: MemoryLayout.size(ofValue: tmp)))
self.release = String(cString: bytes)
}
do {
var tmp = info.version
let bytes = [Int8](UnsafeBufferPointer(start: &tmp.0, count: MemoryLayout.size(ofValue: tmp)))
self.version = String(cString: bytes)
}
do {
var tmp = info.machine
let bytes = [Int8](UnsafeBufferPointer(start: &tmp.0, count: MemoryLayout.size(ofValue: tmp)))
self.machine = String(cString: bytes)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment