/*
- * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2004, 2010 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
#include "scutil.h"
#include "session.h"
-#include "notify.h"
+#include "notifications.h"
+
+static void
+reconnected(SCDynamicStoreRef store, void *info)
+{
+ SCPrint(TRUE, stdout, CFSTR("SCDynamicStore server restarted, session reconnected\n"));
+ return;
+}
+
+
+__private_extern__
void
do_open(int argc, char **argv)
{
CFRelease(watchedPatterns);
}
- store = SCDynamicStoreCreate(NULL, CFSTR("scutil"), storeCallback, NULL);
- if (!store) {
+ if (argc < 1) {
+ store = SCDynamicStoreCreate(NULL, CFSTR("scutil"), storeCallback, NULL);
+ } else {
+ CFMutableDictionaryRef options;
+
+ options = CFDictionaryCreateMutable(NULL,
+ 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFDictionarySetValue(options, kSCDynamicStoreUseSessionKeys, kCFBooleanTrue);
+ store = SCDynamicStoreCreateWithOptions(NULL,
+ CFSTR("scutil"),
+ options,
+ storeCallback,
+ NULL);
+ CFRelease(options);
+ }
+ if (store == NULL) {
SCPrint(TRUE, stdout, CFSTR(" %s\n"), SCErrorString(SCError()));
return;
}
+ (void) SCDynamicStoreSetDisconnectCallBack(store, reconnected);
+
watchedKeys = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
watchedPatterns = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
}
+__private_extern__
void
do_close(int argc, char **argv)
{
- if (notifyRls) {
- CFRunLoopRemoveSource(CFRunLoopGetCurrent(), notifyRls, kCFRunLoopDefaultMode);
- CFRelease(notifyRls);
+ if (notifyRls != NULL) {
+ if (doDispatch) {
+ (void) SCDynamicStoreSetDispatchQueue(store, NULL);
+ } else {
+ CFRunLoopSourceInvalidate(notifyRls);
+ CFRelease(notifyRls);
+ }
notifyRls = NULL;
}
- if (notifyRl) {
+ if (notifyRl != NULL) {
CFRunLoopStop(notifyRl);
notifyRl = NULL;
}
- if (store) {
+ if (store != NULL) {
CFRelease(store);
store = NULL;
CFRelease(watchedKeys);
}
+__private_extern__
void
do_lock(int argc, char **argv)
{
}
+__private_extern__
void
do_unlock(int argc, char **argv)
{