/* osx_bootstrap_ok:
* Check if the current bootstrap context is privilege. If it's not, we can't
* use NSApplication, and instead have to go directly to main.
* Returns 1 if ok, 0 if not.
*/
int osx_bootstrap_ok(void)
{
static int _ok = -1;
mach_port_t bp;
kern_return_t ret;
CFMachPortRef cfport;
/* If have tested once, just return that answer */
if (_ok >= 0)
return _ok;
cfport = CFMachPortCreate(NULL, NULL, NULL, NULL);
task_get_bootstrap_port(mach_task_self(), &bp);
ret = bootstrap_register(bp, "bootstrap-ok-test", CFMachPortGetPort(cfport));
CFRelease(cfport);
_ok = (ret == KERN_SUCCESS) ? 1 : 0;
return _ok;
}