#ifndef __DSUtils_h__
#define __DSUtils_h__ 1
#include <sys/types.h>
#include <DirectoryServiceCore/PrivateTypes.h>
#include <CoreFoundation/CoreFoundation.h>
#define kDSLDAPPrefsDirPath "/Library/Preferences/DirectoryService"
#define kDSLDAPPrefsFilePath kDSLDAPPrefsDirPath "/DSLDAPv3PlugInConfig"
#define kDSLDAPPrefsTempFilePath kDSLDAPPrefsDirPath "/DSLDAPv3PlugInConfig.plist.XXXXXXXXXX"
#define kDSNodeEvent "com.apple.DirectoryService.node.event"
__BEGIN_DECLS
tDataBufferPtr dsDataBufferAllocatePriv ( UInt32 inBufferSize );
tDirStatus dsDataBufferDeallocatePriv ( tDataBufferPtr inDataBufferPtr );
tDataListPtr dsDataListAllocatePriv ( void );
tDirStatus dsDataListDeallocatePriv ( tDataListPtr inDataList );
char* dsGetPathFromListPriv ( tDataListPtr inDataList, const char *inDelimiter );
tDataListPtr dsBuildFromPathPriv ( const char *inPathCString, const char *inPathSeparatorCString );
tDataListPtr dsBuildListFromStringsPriv ( const char *in1stCString, ... );
tDirStatus dsAppendStringToListAllocPriv ( tDataList *inOutDataList, const char *inCString );
tDataNodePtr dsAllocListNodeFromStringPriv ( const char *inString );
tDataNodePtr dsGetThisNodePriv ( tDataNode *inFirsNode, const UInt32 inIndex );
tDataNodePtr dsGetLastNodePriv ( tDataNode *inFirsNode );
tDirStatus dsAppendStringToListPriv ( tDataList *inDataList, const char *inCString );
tDirStatus dsDeleteLastNodePriv ( tDataList *inDataList );
UInt32 dsDataListGetNodeCountPriv ( tDataList *inDataList );
UInt32 dsGetDataLengthPriv ( tDataList *inDataList );
tDirStatus dsDataListGetNodePriv ( tDataList *inDataList, UInt32 inNodeIndex, tDataNodePtr *outDataListNode );
char* dsDataListGetNodeStringPriv ( tDataListPtr inDataList, UInt32 inNodeIndex );
tDirStatus dsDataListGetNodeAllocPriv ( const tDataList *inDataList, const UInt32 inNodeIndex, tDataNode **outDataNode );
tDataListPtr dsAuthBufferGetDataListAllocPriv ( tDataBufferPtr inAuthBuff );
tDirStatus dsAuthBufferGetDataListPriv ( tDataBufferPtr inAuthBuff, tDataListPtr inOutDataList );
char* dsCStrFromCharacters ( const char *inChars, size_t inLen );
void BinaryToHexConversion ( const unsigned char *inBinary, UInt32 inLength, char *outHexStr );
void HexToBinaryConversion ( const char *inHexStr, UInt32 *outLength, unsigned char *outBinary );
double dsTimestamp ( void );
tDirStatus dsGetAuthMethodEnumValue ( tDataNode *inData, UInt32 *outAuthMethod );
const char* dsGetPatternMatchName ( tDirPatternMatch inPatternMatchEnum );
CFArrayRef dsConvertAuthBufferToCFArray ( tDataBufferPtr inAuthBuff );
CFArrayRef dsConvertDataListToCFArray ( tDataList *inDataList );
tDataListPtr dsConvertCFArrayToDataList ( CFArrayRef inArray );
char* dsGetNameForProcessID ( pid_t inPID );
CFMutableDictionaryRef dsCreateEventLogDict ( CFStringRef inEventType, const char *inUser, CFDictionaryRef inDetails );
int dsCreatePrefsDirectory ( void );
CFStringRef dsCreatePrefsFilename ( const char *inFileNameBase );
void dsPostNodeEvent ( void );
CFArrayRef dsCopyKerberosServiceList ( void );
void *dsRetainObject ( void *object, volatile int32_t *refcount );
bool dsReleaseObject ( void *object, volatile int32_t *refcount, bool bFree );
tDirStatus dsGetRecordReferenceInfoInternal ( tRecordReference recordRef, tRecordEntryPtr *recordEntry );
bool dsIsRecordDisabledInternal ( tRecordReference recordRef );
__END_DECLS
#endif