/*
- * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2005, 2009, 2011, 2015 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
- * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
- *
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
#include <SystemConfiguration/SCPrivate.h>
-#ifndef kSCPropUsersConsoleUserName
+#undef kSCPropUsersConsoleUserName
#define kSCPropUsersConsoleUserName CFSTR("Name")
-#endif
-#ifndef kSCPropUsersConsoleUserUID
+#undef kSCPropUsersConsoleUserUID
#define kSCPropUsersConsoleUserUID CFSTR("UID")
-#endif
-#ifndef kSCPropUsersConsoleUserGID
+#undef kSCPropUsersConsoleUserGID
#define kSCPropUsersConsoleUserGID CFSTR("GID")
-#endif
-#ifndef kSCPropUsersConsoleSessionInfo
+#undef kSCPropUsersConsoleSessionInfo
#define kSCPropUsersConsoleSessionInfo CFSTR("SessionInfo")
-#endif
-const CFStringRef kSCConsoleSessionID = CFSTR("kCGSSessionIDKey"); /* value is CFNumber */
-const CFStringRef kSCConsoleSessionUserName = CFSTR("kCGSSessionUserNameKey"); /* value is CFString */
-const CFStringRef kSCConsoleSessionUID = CFSTR("kCGSSessionUserIDKey"); /* value is CFNumber */
-const CFStringRef kSCConsoleSessionConsoleSet = CFSTR("kCGSSessionConsoleSetKey"); /* value is CFNumber */
-const CFStringRef kSCConsoleSessionOnConsole = CFSTR("kCGSSessionOnConsoleKey"); /* value is CFBoolean */
+// from CoreGraphics (CGSession.h)
+const CFStringRef kSCConsoleSessionUserName = CFSTR("kCGSSessionUserNameKey"); /* value is CFString */
+const CFStringRef kSCConsoleSessionUID = CFSTR("kCGSSessionUserIDKey"); /* value is CFNumber (a uid_t) */
+const CFStringRef kSCConsoleSessionConsoleSet = CFSTR("kCGSSessionConsoleSetKey"); /* value is CFNumber */
+const CFStringRef kSCConsoleSessionOnConsole = CFSTR("kCGSSessionOnConsoleKey"); /* value is CFBoolean */
+const CFStringRef kSCConsoleSessionLoginDone = CFSTR("kCGSessionLoginDoneKey"); /* value is CFBoolean */
+
+// from CoreGraphics (CGSSession.h)
+const CFStringRef kSCConsoleSessionID = CFSTR("kCGSSessionIDKey"); /* value is CFNumber */
+
+// for loginwindow
+const CFStringRef kSCConsoleSessionSystemSafeBoot = CFSTR("kCGSSessionSystemSafeBoot"); /* value is CFBoolean */
+const CFStringRef kSCConsoleSessionLoginwindowSafeLogin = CFSTR("kCGSSessionLoginwindowSafeLogin"); /* value is CFBoolean */
CFStringRef
CFStringRef consoleUser = NULL;
CFDictionaryRef dict = NULL;
CFStringRef key;
- Boolean tempSession = FALSE;
-
- if (!store) {
- store = SCDynamicStoreCreate(NULL,
- CFSTR("SCDynamicStoreCopyConsoleUser"),
- NULL,
- NULL);
- if (!store) {
- SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed"));
- return NULL;
- }
- tempSession = TRUE;
- }
key = SCDynamicStoreKeyCreateConsoleUser(NULL);
dict = SCDynamicStoreCopyValue(store, key);
done :
- if (tempSession) CFRelease(store);
if (dict) CFRelease(dict);
return consoleUser;
}
CFDictionaryRef dict = NULL;
CFArrayRef info = NULL;
CFStringRef key;
- Boolean tempSession = FALSE;
-
- if (!store) {
- store = SCDynamicStoreCreate(NULL,
- CFSTR("SCDynamicStoreCopyConsoleUser"),
- NULL,
- NULL);
- if (!store) {
- SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed"));
- return NULL;
- }
- tempSession = TRUE;
- }
key = SCDynamicStoreKeyCreateConsoleUser(NULL);
dict = SCDynamicStoreCopyValue(store, key);
info = CFDictionaryGetValue(dict, kSCPropUsersConsoleSessionInfo);
info = isA_CFArray(info);
- if (!info) {
+ if (info == NULL) {
_SCErrorSet(kSCStatusNoKey);
goto done;
}
done :
- if (tempSession) CFRelease(store);
if (dict) CFRelease(dict);
return info;
}
CFStringRef consoleUser;
CFMutableDictionaryRef dict = NULL;
CFStringRef key = SCDynamicStoreKeyCreateConsoleUser(NULL);
- CFNumberRef num;
- Boolean ok = TRUE;
- Boolean tempSession = FALSE;
-
- if (!store) {
- store = SCDynamicStoreCreate(NULL,
- CFSTR("SCDynamicStoreSetConsoleUser"),
- NULL,
- NULL);
- if (!store) {
- SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed"));
- return FALSE;
- }
- tempSession = TRUE;
- }
+ Boolean ok = FALSE;
- if (user == NULL) {
+ if ((user == NULL) && (sessions == NULL)) {
ok = SCDynamicStoreRemoveValue(store, key);
goto done;
}
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
- consoleUser = CFStringCreateWithCString(NULL, user, kCFStringEncodingMacRoman);
- CFDictionarySetValue(dict, kSCPropUsersConsoleUserName, consoleUser);
- CFRelease(consoleUser);
+ if (user != NULL) {
+ CFNumberRef num;
- num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&uid);
- CFDictionarySetValue(dict, kSCPropUsersConsoleUserUID, num);
- CFRelease(num);
+ consoleUser = CFStringCreateWithCString(NULL, user, kCFStringEncodingMacRoman);
+ CFDictionarySetValue(dict, kSCPropUsersConsoleUserName, consoleUser);
+ CFRelease(consoleUser);
- num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&gid);
- CFDictionarySetValue(dict, kSCPropUsersConsoleUserGID, num);
- CFRelease(num);
+ num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&uid);
+ CFDictionarySetValue(dict, kSCPropUsersConsoleUserUID, num);
+ CFRelease(num);
+
+ num = CFNumberCreate(NULL, kCFNumberSInt32Type, (SInt32 *)&gid);
+ CFDictionarySetValue(dict, kSCPropUsersConsoleUserGID, num);
+ CFRelease(num);
+ }
- CFDictionarySetValue(dict, kSCPropUsersConsoleSessionInfo, sessions);
+ if (sessions != NULL) {
+ CFDictionarySetValue(dict, kSCPropUsersConsoleSessionInfo, sessions);
+ }
ok = SCDynamicStoreSetValue(store, key, dict);
if (dict) CFRelease(dict);
if (key) CFRelease(key);
- if (tempSession) CFRelease(store);
return ok;
}
CFMutableDictionaryRef dict = NULL;
CFStringRef key = SCDynamicStoreKeyCreateConsoleUser(NULL);
CFNumberRef num;
- Boolean ok = TRUE;
- Boolean tempSession = FALSE;
-
- if (!store) {
- store = SCDynamicStoreCreate(NULL,
- CFSTR("SCDynamicStoreSetConsoleUser"),
- NULL,
- NULL);
- if (!store) {
- SCLog(_sc_verbose, LOG_INFO, CFSTR("SCDynamicStoreCreate() failed"));
- return FALSE;
- }
- tempSession = TRUE;
- }
+ Boolean ok = FALSE;
if (user == NULL) {
ok = SCDynamicStoreRemoveValue(store, key);
if (dict) CFRelease(dict);
if (key) CFRelease(key);
- if (tempSession) CFRelease(store);
return ok;
}