summaryrefslogtreecommitdiffstats
path: root/ldap/libraries/libutil/ntreg.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/libraries/libutil/ntreg.c')
-rw-r--r--ldap/libraries/libutil/ntreg.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/ldap/libraries/libutil/ntreg.c b/ldap/libraries/libutil/ntreg.c
new file mode 100644
index 00000000..53313075
--- /dev/null
+++ b/ldap/libraries/libutil/ntreg.c
@@ -0,0 +1,105 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+
+#ifdef _WIN32
+
+#include <windows.h>
+#include <stdio.h>
+#include "ldap.h"
+
+int SlapdGetRegSZ( LPTSTR lpszRegKey, LPSTR lpszValueName, LPTSTR lpszValue )
+{
+ HKEY hKey;
+ DWORD dwType, dwNumBytes;
+ LONG lResult;
+
+ /* Open the registry, get the required key handle. */
+ lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, lpszRegKey,
+ 0L, KEY_QUERY_VALUE, &hKey );
+ if (lResult == ERROR_SUCCESS)
+ {
+ dwNumBytes = sizeof( DWORD );
+ lResult = RegQueryValueEx( hKey, lpszValueName, 0,
+ &dwType, NULL, &dwNumBytes );
+ if( lResult == ERROR_SUCCESS )
+ {
+ RegQueryValueEx( hKey, lpszValueName, 0, &dwType,
+ (LPBYTE)lpszValue, &dwNumBytes );
+ *(lpszValue+dwNumBytes) = 0;
+
+ /* Close the Registry. */
+ RegCloseKey(hKey);
+ return 0;
+ }
+ else
+ {
+ /* No config file location stored in the Registry. */
+ RegCloseKey(hKey);
+ return 1;
+ }
+ }
+ else
+ {
+ return 1;
+ }
+} /* SlapdGetRegSZ */
+
+
+int SlapdSetRegSZ( LPTSTR lpszKey, LPSTR lpszValueName, LPTSTR lpszValue )
+{
+ HKEY hKey;
+ LONG lResult;
+
+ /* Open the registry, get a handle to the desired key. */
+ lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, lpszKey, 0,
+ KEY_ALL_ACCESS, &hKey );
+ if (lResult == ERROR_SUCCESS)
+ {
+ /* Set the value to the value-name at the key location. */
+ RegSetValueEx( hKey, lpszValueName, 0, REG_SZ,
+ (CONST BYTE*)lpszValue, strlen(lpszValue) );
+
+ /* Close the registry */
+ RegCloseKey(hKey);
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+} /* SlapdSetRegSZ */
+
+/* converts '/' chars to '\' */
+void
+unixtodospath(char *szText)
+{
+ if(szText)
+ {
+ while(*szText)
+ {
+ if( *szText == '/' )
+ *szText = '\\';
+ szText++;
+ }
+ }
+}
+
+/* converts '\' chars to '/' */
+void
+dostounixpath(char *szText)
+{
+ if(szText)
+ {
+ while(*szText)
+ {
+ if( *szText == '\\' )
+ *szText = '/';
+ szText++;
+ }
+ }
+}
+
+#endif /* _WIN32 */