SCPreferencesInternal.h [plain text]
#ifndef _SCPREFERENCESINTERNAL_H
#define _SCPREFERENCESINTERNAL_H
#include <dispatch/dispatch.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <os/log.h>
#include <os/state_private.h>
#include <CoreFoundation/CoreFoundation.h>
#include <CoreFoundation/CFRuntime.h>
#ifndef SC_LOG_HANDLE
#define SC_LOG_HANDLE __log_SCPreferences
#endif // SC_LOG_HANDLE
#include <SystemConfiguration/SystemConfiguration.h>
#include <SystemConfiguration/SCValidation.h>
#include <SystemConfiguration/SCPrivate.h>
#include <SystemConfiguration/SCPreferences.h>
#include <SystemConfiguration/SCDynamicStore.h>
#define PREFS_DEFAULT_DIR_PATH_RELATIVE "Library/Preferences/SystemConfiguration"
#define PREFS_DEFAULT_DIR_RELATIVE CFSTR(PREFS_DEFAULT_DIR_PATH_RELATIVE "/")
#define PREFS_DEFAULT_DIR_PATH "/" PREFS_DEFAULT_DIR_PATH_RELATIVE
#define PREFS_DEFAULT_DIR CFSTR(PREFS_DEFAULT_DIR_PATH)
#define PREFS_DEFAULT_CONFIG_PLIST "preferences.plist"
#define PREFS_DEFAULT_CONFIG CFSTR(PREFS_DEFAULT_CONFIG_PLIST)
#define PREFS_DEFAULT_DIR_OLD CFSTR("/var/db/SystemConfiguration")
#define PREFS_DEFAULT_CONFIG_OLD CFSTR("preferences.xml")
#define PREFS_DEFAULT_USER_DIR CFSTR("Library/Preferences")
#define INTERFACES_DEFAULT_CONFIG_PLIST "NetworkInterfaces.plist"
#define INTERFACES_DEFAULT_CONFIG CFSTR(INTERFACES_DEFAULT_CONFIG_PLIST)
#define INTERFACES CFSTR("Interfaces")
typedef struct {
CFRuntimeBase cfBase;
pthread_mutex_t lock;
CFStringRef name;
CFStringRef prefsID;
CFDictionaryRef options;
char *path;
char *newPath;
Boolean locked;
int lockFD;
char *lockPath;
struct timeval lockTime;
CFDataRef signature;
SCDynamicStoreRef session;
SCDynamicStoreRef sessionNoO_EXLOCK;
int sessionRefcnt;
CFStringRef sessionKeyLock;
CFStringRef sessionKeyCommit;
CFStringRef sessionKeyApply;
Boolean scheduled;
CFRunLoopSourceRef rls;
SCPreferencesCallBack rlsFunction;
SCPreferencesContext rlsContext;
CFMutableArrayRef rlList;
dispatch_queue_t dispatchQueue;
CFMutableDictionaryRef prefs;
SCPreferencesRef parent; CFMutableDictionaryRef companions;
Boolean accessed;
Boolean changed;
Boolean isRoot;
uint32_t nc_flags;
CFDataRef authorizationData;
mach_port_t helper_port;
} SCPreferencesPrivate, *SCPreferencesPrivateRef;
typedef struct {
int64_t st_dev;
uint64_t st_ino;
uint64_t tv_sec;
uint64_t tv_nsec;
off_t st_size;
} SCPSignatureData, *SCPSignatureDataRef;
__BEGIN_DECLS
static __inline__ CFTypeRef
isA_SCPreferences(CFTypeRef obj)
{
return (isA_CFType(obj, SCPreferencesGetTypeID()));
}
os_log_t
__log_SCPreferences (void);
Boolean
__SCPreferencesCreate_helper (SCPreferencesRef prefs);
void
__SCPreferencesAccess (SCPreferencesRef prefs);
void
__SCPreferencesAddSessionKeys (SCPreferencesRef prefs);
Boolean
__SCPreferencesAddSession (SCPreferencesRef prefs);
Boolean
__SCPreferencesIsEmpty (SCPreferencesRef prefs);
void
__SCPreferencesRemoveSession (SCPreferencesRef prefs);
void
__SCPreferencesUpdateLockedState (SCPreferencesRef prefs,
Boolean locked);
CF_RETURNS_RETAINED
CFDataRef
__SCPSignatureFromStatbuf (const struct stat *statBuf);
char *
__SCPreferencesPath (CFAllocatorRef allocator,
CFStringRef prefsID,
Boolean useNewPrefs);
off_t
__SCPreferencesPrefsSize (SCPreferencesRef prefs);
CF_RETURNS_RETAINED
CFStringRef
_SCPNotificationKey (CFAllocatorRef allocator,
CFStringRef prefsID,
int keyType);
uint32_t
__SCPreferencesGetNetworkConfigurationFlags
(SCPreferencesRef prefs);
void
__SCPreferencesSetNetworkConfigurationFlags
(SCPreferencesRef prefs,
uint32_t nc_flags);
Boolean
__SCPreferencesUsingDefaultPrefs (SCPreferencesRef prefs);
__END_DECLS
#endif