CloverBootloader/CloverApp/Clover/NVRAM.swift
vectorsigma72 1d7e7327c0 Clover.app v1.13
Fixed detection of legacy firmware for CloverDaemonNew.
Detection of System Serial and OEM manufacturer informations.
Startup sound settings in the interface.
Installer inform with a sound and an alert window the installation result.
Installer now produce the installation log.
Installer is now thread safe.
The UI is modified to make room forall the new functionalities.
2020-01-01 15:42:47 +01:00

75 lines
1.9 KiB
Swift

//
// NVRAM.swift
// Clover
//
// Created by vector sigma on 30/10/2019.
// Copyright © 2019 CloverHackyColor. All rights reserved.
//
import Cocoa
// MARK: "/usr/sbin/nvram"
let nvram_cmd = "/usr/sbin/nvram"
// MARK: Get NVRAM
func getNVRAM() -> NSMutableDictionary? {
var ref: io_registry_entry_t
var masterPort = mach_port_t()
var oResult: kern_return_t
var result: kern_return_t
oResult = IOMasterPort(bootstrap_port, &masterPort)
if oResult != KERN_SUCCESS {
return nil
}
ref = IORegistryEntryFromPath(masterPort, "IODeviceTree:/options")
if ref == 0 {
return nil
}
var dict : Unmanaged<CFMutableDictionary>?
result = IORegistryEntryCreateCFProperties(ref, &dict, kCFAllocatorDefault, 0)
if result != KERN_SUCCESS {
IOObjectRelease(ref)
return nil
}
IOObjectRelease(ref)
return dict?.takeRetainedValue()
}
// MARK: set NVRAM key
func setNVRAM(key: String, stringValue: String) {
var cmd : String = "do shell script \""
cmd += "sudo \(nvram_cmd) \(key)=\(stringValue)" // sudo required otherwise wont work!
cmd += "\" with administrator privileges"
//DispatchQueue.global(qos: .background).async {
let script: NSAppleScript? = NSAppleScript(source: cmd)
var error : NSDictionary? = nil
script?.executeAndReturnError(&error)
if error != nil {
NSSound.beep()
print(error!.description)
}
//}
}
// MARK: delete NVRAM key
func deleteNVRAM(key: String) {
var cmd : String = "do shell script \""
cmd += "sudo \(nvram_cmd) -d \(key)" // sudo required otherwise wont work!
cmd += "\" with administrator privileges"
//DispatchQueue.global(qos: .background).async {
var error : NSDictionary? = nil
let script: NSAppleScript? = NSAppleScript(source: cmd)
script?.executeAndReturnError(&error)
if error != nil {
NSSound.beep()
print(error!.description)
}
//}
}