]> git.sur5r.net Git - openldap/commitdiff
Cleanup slapd-specific NT service support
authorHoward Chu <hyc@openldap.org>
Mon, 3 Mar 2003 11:46:05 +0000 (11:46 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 3 Mar 2003 11:46:05 +0000 (11:46 +0000)
libraries/liblutil/ntservice.c
libraries/liblutil/slapdmsg.bin
libraries/liblutil/slapdmsg.h
libraries/liblutil/slapdmsg.mc
libraries/liblutil/slapdmsg.rc
servers/slapd/main.c
servers/slapd/nt_svc.c

index 2d761b316707df1e4f96701c808f1c9a9ec20a8d..42b3d99e76fe2833f2fa452df3ee03ad2a2c590a 100644 (file)
@@ -6,7 +6,6 @@
 
 /*
  * NT Service manager utilities for OpenLDAP services
- *     these should NOT be slapd specific, but are
  */
 
 #include "portable.h"
 
 #include <ldap.h>
 
-/*
- * The whole debug implementation is a bit of a hack.
- * We have to define this LDAP_SLAPD_V macro here since the slap.h
- * header file isn't included (and really shouldn't be).
- * TODO: re-implement debug functions so that the debug level can
- * be passed around instead of having to count on the existence of
- * ldap_debug, slap_debug, etc.
- */
-#define ldap_debug slap_debug
-LDAP_SLAPD_V (int) slap_debug;
-
 #include "ldap_log.h"
 #include "ldap_pvt_thread.h"
 
@@ -47,8 +35,8 @@ LDAP_SLAPD_V (int) slap_debug;
 
 int      is_NT_Service;        /* is this is an NT service? */
 
-SERVICE_STATUS                 SLAPDServiceStatus;
-SERVICE_STATUS_HANDLE  hSLAPDServiceStatus;
+SERVICE_STATUS                 lutil_ServiceStatus;
+SERVICE_STATUS_HANDLE  hlutil_ServiceStatus;
 
 ldap_pvt_thread_cond_t started_event,          stopped_event;
 ldap_pvt_thread_t              start_status_tid,       stop_status_tid;
@@ -57,8 +45,8 @@ void (*stopfunc)(int);
 
 static char *GetLastErrorString( void );
 
-int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszDisplayName,
-               LPCTSTR lpszBinaryPathName, BOOL auto_start)
+int lutil_srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszDisplayName,
+               LPCTSTR lpszBinaryPathName, int auto_start)
 {
        HKEY            hKey;
        DWORD           dwValue, dwDisposition;
@@ -129,7 +117,7 @@ int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszDisplayName,
 }
 
 
-int srv_remove(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
+int lutil_srv_remove(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
 {
        SC_HANDLE schSCManager, schService;
 
@@ -162,6 +150,7 @@ int srv_remove(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
 }
 
 
+#if 0 /* unused */
 DWORD
 svc_installed (LPTSTR lpszServiceName, LPTSTR lpszBinaryPathName)
 {
@@ -212,7 +201,7 @@ svc_running (LPTSTR lpszServiceName)
        CloseServiceHandle(scm);
        return(rc);
 }
-
+#endif
 
 static void *start_status_routine( void *ptr )
 {
@@ -229,27 +218,27 @@ static void *start_status_routine( void *ptr )
                                /* the object that we were waiting for has been destroyed (ABANDONED) or
                                 * signalled (TIMEOUT_0). We can assume that the startup process is
                                 * complete and tell the Service Control Manager that we are now runnng */
-                               SLAPDServiceStatus.dwCurrentState       = SERVICE_RUNNING;
-                               SLAPDServiceStatus.dwWin32ExitCode      = NO_ERROR;
-                               SLAPDServiceStatus.dwCheckPoint++;
-                               SLAPDServiceStatus.dwWaitHint           = 1000;
-                               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                               lutil_ServiceStatus.dwCurrentState      = SERVICE_RUNNING;
+                               lutil_ServiceStatus.dwWin32ExitCode     = NO_ERROR;
+                               lutil_ServiceStatus.dwCheckPoint++;
+                               lutil_ServiceStatus.dwWaitHint          = 1000;
+                               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                                done = 1;
                                break;
                        case WAIT_TIMEOUT:
                                /* We've waited for the required time, so send an update to the Service Control 
                                 * Manager saying to wait again. */
-                               SLAPDServiceStatus.dwCheckPoint++;
-                               SLAPDServiceStatus.dwWaitHint = SCM_NOTIFICATION_INTERVAL * 2;
-                               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                               lutil_ServiceStatus.dwCheckPoint++;
+                               lutil_ServiceStatus.dwWaitHint = SCM_NOTIFICATION_INTERVAL * 2;
+                               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                                break;
                        case WAIT_FAILED:
                                /* theres been some problem with WaitForSingleObject so tell the Service
                                 * Control Manager to wait 30 seconds before deploying its assasin and 
                                 * then leave the thread. */
-                               SLAPDServiceStatus.dwCheckPoint++;
-                               SLAPDServiceStatus.dwWaitHint = THIRTY_SECONDS;
-                               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                               lutil_ServiceStatus.dwCheckPoint++;
+                               lutil_ServiceStatus.dwWaitHint = THIRTY_SECONDS;
+                               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                                done = 1;
                                break;
                }
@@ -281,17 +270,17 @@ static void *stop_status_routine( void *ptr )
                        case WAIT_TIMEOUT:
                                /* We've waited for the required time, so send an update to the Service Control 
                                 * Manager saying to wait again. */
-                               SLAPDServiceStatus.dwCheckPoint++;
-                               SLAPDServiceStatus.dwWaitHint = SCM_NOTIFICATION_INTERVAL * 2;
-                               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                               lutil_ServiceStatus.dwCheckPoint++;
+                               lutil_ServiceStatus.dwWaitHint = SCM_NOTIFICATION_INTERVAL * 2;
+                               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                                break;
                        case WAIT_FAILED:
                                /* theres been some problem with WaitForSingleObject so tell the Service
                                 * Control Manager to wait 30 seconds before deploying its assasin and 
                                 * then leave the thread. */
-                               SLAPDServiceStatus.dwCheckPoint++;
-                               SLAPDServiceStatus.dwWaitHint = THIRTY_SECONDS;
-                               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                               lutil_ServiceStatus.dwCheckPoint++;
+                               lutil_ServiceStatus.dwWaitHint = THIRTY_SECONDS;
+                               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                                done = 1;
                                break;
                }
@@ -302,27 +291,26 @@ static void *stop_status_routine( void *ptr )
 
 
 
-void WINAPI SLAPDServiceCtrlHandler( IN DWORD Opcode)
+void WINAPI lutil_ServiceCtrlHandler( IN DWORD Opcode)
 {
        switch (Opcode)
        {
        case SERVICE_CONTROL_STOP:
        case SERVICE_CONTROL_SHUTDOWN:
 
-               Debug( LDAP_DEBUG_TRACE, "Service Shutdown ordered\n", 0, 0, 0 );
-               SLAPDServiceStatus.dwCurrentState       = SERVICE_STOP_PENDING;
-               SLAPDServiceStatus.dwCheckPoint++;
-               SLAPDServiceStatus.dwWaitHint           = SCM_NOTIFICATION_INTERVAL * 2;
-               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+               lutil_ServiceStatus.dwCurrentState      = SERVICE_STOP_PENDING;
+               lutil_ServiceStatus.dwCheckPoint++;
+               lutil_ServiceStatus.dwWaitHint          = SCM_NOTIFICATION_INTERVAL * 2;
+               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
 
                ldap_pvt_thread_cond_init( &stopped_event );
                if ( stopped_event == NULL )
                {
                        /* the event was not created. We will ask the service control manager for 30
                         * seconds to shutdown */
-                       SLAPDServiceStatus.dwCheckPoint++;
-                       SLAPDServiceStatus.dwWaitHint           = THIRTY_SECONDS;
-                       SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                       lutil_ServiceStatus.dwCheckPoint++;
+                       lutil_ServiceStatus.dwWaitHint          = THIRTY_SECONDS;
+                       SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                }
                else
                {
@@ -337,22 +325,22 @@ void WINAPI SLAPDServiceCtrlHandler( IN DWORD Opcode)
                                 * service stopping is proceeding. 
                                 * tell the Service Control Manager to wait another 30 seconds before deploying its
                                 * assasin.  */
-                               SLAPDServiceStatus.dwCheckPoint++;
-                               SLAPDServiceStatus.dwWaitHint = THIRTY_SECONDS;
-                               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                               lutil_ServiceStatus.dwCheckPoint++;
+                               lutil_ServiceStatus.dwWaitHint = THIRTY_SECONDS;
+                               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                        }
                }
                stopfunc( -1 );
                break;
 
        case SERVICE_CONTROL_INTERROGATE:
-               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                break;
        }
        return;
 }
 
-void *getRegParam( char *svc, char *value )
+void *lutil_getRegParam( char *svc, char *value )
 {
        HKEY hkey;
        char path[255];
@@ -367,13 +355,11 @@ void *getRegParam( char *svc, char *value )
        
        if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, path, 0, KEY_READ, &hkey ) != ERROR_SUCCESS )
        {
-               /*Debug( LDAP_DEBUG_ANY, "RegOpenKeyEx() %s\n", GetLastErrorString(), 0, 0); */
                return NULL;
        }
 
        if ( RegQueryValueEx( hkey, value, NULL, &vType, vValue, &valLen ) != ERROR_SUCCESS )
        {
-               /*Debug( LDAP_DEBUG_ANY, "RegQueryValueEx() %s\n", GetLastErrorString(), 0, 0 );*/
                RegCloseKey( hkey );
                return NULL;
        }
@@ -390,7 +376,7 @@ void *getRegParam( char *svc, char *value )
        return (void*)NULL;
 }
 
-void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *urls )
+void lutil_LogStartedEvent( char *svc, int slap_debug, char *configfile, char *urls )
 {
        char *Inserts[5];
        WORD i = 0, j;
@@ -402,10 +388,9 @@ void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *ur
        itoa( slap_debug, Inserts[i++], 10 );
        Inserts[i++] = strdup( configfile );
        Inserts[i++] = strdup( urls ? urls : "ldap:///" );
-       Inserts[i++] = strdup( is_NT_Service ? "svc" : "cmd" );
 
        ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,
-               MSG_SLAPD_STARTED, NULL, i, 0, (LPCSTR *) Inserts, NULL );
+               MSG_SVC_STARTED, NULL, i, 0, (LPCSTR *) Inserts, NULL );
 
        for ( j = 0; j < i; j++ )
                ldap_memfree( Inserts[j] );
@@ -414,34 +399,34 @@ void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *ur
 
 
 
-void LogSlapdStoppedEvent( char *svc )
+void lutil_LogStoppedEvent( char *svc )
 {
        HANDLE hEventLog;
        
        hEventLog = RegisterEventSource( NULL, svc );
        ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,
-               MSG_SLAPD_STOPPED, NULL, 0, 0, NULL, NULL );
+               MSG_SVC_STOPPED, NULL, 0, 0, NULL, NULL );
        DeregisterEventSource( hEventLog );
 }
 
 
-void CommenceStartupProcessing( LPCTSTR lpszServiceName,
+void lutil_CommenceStartupProcessing( char *lpszServiceName,
                                                           void (*stopper)(int) )
 {
-       hSLAPDServiceStatus = RegisterServiceCtrlHandler( lpszServiceName, (LPHANDLER_FUNCTION)SLAPDServiceCtrlHandler);
+       hlutil_ServiceStatus = RegisterServiceCtrlHandler( lpszServiceName, (LPHANDLER_FUNCTION)lutil_ServiceCtrlHandler);
 
        stopfunc = stopper;
 
        /* initialize the Service Status structure */
-       SLAPDServiceStatus.dwServiceType                                = SERVICE_WIN32_OWN_PROCESS;
-       SLAPDServiceStatus.dwCurrentState                               = SERVICE_START_PENDING;
-       SLAPDServiceStatus.dwControlsAccepted                   = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
-       SLAPDServiceStatus.dwWin32ExitCode                              = NO_ERROR;
-       SLAPDServiceStatus.dwServiceSpecificExitCode    = 0;
-       SLAPDServiceStatus.dwCheckPoint                                 = 1;
-       SLAPDServiceStatus.dwWaitHint                                   = SCM_NOTIFICATION_INTERVAL * 2;
+       lutil_ServiceStatus.dwServiceType                               = SERVICE_WIN32_OWN_PROCESS;
+       lutil_ServiceStatus.dwCurrentState                              = SERVICE_START_PENDING;
+       lutil_ServiceStatus.dwControlsAccepted                  = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
+       lutil_ServiceStatus.dwWin32ExitCode                             = NO_ERROR;
+       lutil_ServiceStatus.dwServiceSpecificExitCode   = 0;
+       lutil_ServiceStatus.dwCheckPoint                                        = 1;
+       lutil_ServiceStatus.dwWaitHint                                  = SCM_NOTIFICATION_INTERVAL * 2;
 
-       SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+       SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
 
        /* start up a thread to keep sending SERVICE_START_PENDING to the Service Control Manager
         * until the slapd listener is completed and listening. Only then should we send 
@@ -452,9 +437,9 @@ void CommenceStartupProcessing( LPCTSTR lpszServiceName,
                /* failed to create the event to determine when the startup process is complete so
                 * tell the Service Control Manager to wait another 30 seconds before deploying its
                 * assasin  */
-               SLAPDServiceStatus.dwCheckPoint++;
-               SLAPDServiceStatus.dwWaitHint = THIRTY_SECONDS;
-               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+               lutil_ServiceStatus.dwCheckPoint++;
+               lutil_ServiceStatus.dwWaitHint = THIRTY_SECONDS;
+               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
        }
        else
        {
@@ -469,14 +454,14 @@ void CommenceStartupProcessing( LPCTSTR lpszServiceName,
                         * service startup is proceeding. 
                         * tell the Service Control Manager to wait another 30 seconds before deploying its
                         * assasin.  */
-                       SLAPDServiceStatus.dwCheckPoint++;
-                       SLAPDServiceStatus.dwWaitHint = THIRTY_SECONDS;
-                       SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+                       lutil_ServiceStatus.dwCheckPoint++;
+                       lutil_ServiceStatus.dwWaitHint = THIRTY_SECONDS;
+                       SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
                }
        }
 }
 
-void ReportSlapdShutdownComplete(  )
+void lutil_ReportShutdownComplete(  )
 {
        if ( is_NT_Service )
        {
@@ -489,10 +474,10 @@ void ReportSlapdShutdownComplete(  )
                if (ldap_pvt_thread_join( stop_status_tid, (void *) NULL ) == -1)
                        ldap_pvt_thread_sleep( SCM_NOTIFICATION_INTERVAL / 2 );
 
-               SLAPDServiceStatus.dwCurrentState = SERVICE_STOPPED;
-               SLAPDServiceStatus.dwCheckPoint++;
-               SLAPDServiceStatus.dwWaitHint = SCM_NOTIFICATION_INTERVAL;
-               SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
+               lutil_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
+               lutil_ServiceStatus.dwCheckPoint++;
+               lutil_ServiceStatus.dwWaitHint = SCM_NOTIFICATION_INTERVAL;
+               SetServiceStatus(hlutil_ServiceStatus, &lutil_ServiceStatus);
        }
 }
 
index 89a6c4a5c19c8dae62aeae75e857b5b7164066f8..d8ca80689dfa2b7556060bff24e918c9cd0d4944 100644 (file)
Binary files a/libraries/liblutil/slapdmsg.bin and b/libraries/liblutil/slapdmsg.bin differ
index cb952be9869bf168d5aba1dfe346da12703a37a3..21a84fbae9bc70133a8ebdcfe6beceb86ab7ffd5 100644 (file)
 
 
 //
-// MessageId: MSG_SLAPD_STARTED
+// MessageId: MSG_SVC_STARTED
 //
 // MessageText:
 //
-//  OpenLDAP SLAPD service started. debuglevel=%1, conffile=%2, urls=%3, mode=%4
+//  OpenLDAP service started. debuglevel=%1, conffile=%2, urls=%3
 //
-#define MSG_SLAPD_STARTED                0x40000500L
+#define MSG_SVC_STARTED                  0x40000500L
 
 //
-// MessageId: MSG_SLAPD_STOPPED
+// MessageId: MSG_SVC_STOPPED
 //
 // MessageText:
 //
-//  OpenLDAP SLAPD service stopped.
+//  OpenLDAP service stopped.
 //
-#define MSG_SLAPD_STOPPED                0x40000501L
+#define MSG_SVC_STOPPED                  0x40000501L
 
index 694a93efb64e24ca658372aa77ffe194635224aa..53401f0f85cd7af6183b224c4988f002b4d17e08 100644 (file)
 
 MessageID=0x500
 Severity=Informational
-SymbolicName=MSG_SLAPD_STARTED
+SymbolicName=MSG_SVC_STARTED
 Facility=Application
 Language=English
-OpenLDAP SLAPD service started. debuglevel=%1, conffile=%2, urls=%3, mode=%4
+OpenLDAP service started. debuglevel=%1, conffile=%2, urls=%3
 .
 
 
 MessageID=0x501
 Severity=Informational
-SymbolicName=MSG_SLAPD_STOPPED
+SymbolicName=MSG_SVC_STOPPED
 Facility=Application
 Language=English
-OpenLDAP SLAPD service stopped.
+OpenLDAP service stopped.
 .
index 01d0d06d7e98b6db0b828d869280e43a81833ed3..f967de20ddab9480ad84ecc143e396483602bd88 100644 (file)
@@ -1,2 +1,2 @@
-LANGUAGE 0x9,0x4
+LANGUAGE 0x9,0x1
 1 11 slapdmsg.bin
index 5c4cc1fd09e99b561e2be3346c56b7914b4a5c61..3667b07a4e16f171466d467338a89559078b651d 100644 (file)
@@ -32,16 +32,10 @@ static RETSIGTYPE wait4child( int sig );
 #define MAIN_RETURN(x) return
 static struct sockaddr_in      bind_addr;
 
-/* FIXME: no externs should appear in a .c, should be in a .h instead */
-extern void CommenceStartupProcessing( LPCTSTR serverName,
-       void(*stopper)(int));
-extern void ReportSlapdShutdownComplete( void );
-extern void *getRegParam( char *svc, char *value );
-
 #define SERVICE_EXIT( e, n )   do { \
        if ( is_NT_Service ) { \
-               SLAPDServiceStatus.dwWin32ExitCode                              = (e); \
-               SLAPDServiceStatus.dwServiceSpecificExitCode    = (n); \
+               lutil_ServiceStatus.dwWin32ExitCode                             = (e); \
+               lutil_ServiceStatus.dwServiceSpecificExitCode   = (n); \
        } \
 } while ( 0 )
 
@@ -50,11 +44,6 @@ extern void *getRegParam( char *svc, char *value );
 #define MAIN_RETURN(x) return(x)
 #endif
 
-#ifdef HAVE_NT_EVENT_LOG
-void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *urls );
-void LogSlapdStoppedEvent( char *svc );
-#endif
-
 /*
  * when more than one slapd is running on one machine, each one might have
  * it's own LOCAL for syslogging and must have its own pid/args files
@@ -171,12 +160,12 @@ int main( int argc, char **argv )
 
                if ( is_NT_Service ) {
                        serverName = argv[0];
-                       CommenceStartupProcessing( serverName, slap_sig_shutdown );
+                       lutil_CommenceStartupProcessing( serverName, slap_sig_shutdown );
                        if ( strcmp(serverName, SERVICE_NAME) )
                            regService = serverName;
                }
 
-               i = (int*)getRegParam( regService, "DebugLevel" );
+               i = (int*)lutil_getRegParam( regService, "DebugLevel" );
                if ( i != NULL ) 
                {
                        slap_debug = *i;
@@ -190,7 +179,7 @@ int main( int argc, char **argv )
 #endif
                }
 
-               newUrls = (char *) getRegParam(regService, "Urls");
+               newUrls = (char *) lutil_getRegParam(regService, "Urls");
                if (newUrls)
                {
                    if (urls)
@@ -207,7 +196,7 @@ int main( int argc, char **argv )
 
                }
 
-               newConfigFile = (char*)getRegParam( regService, "ConfigFile" );
+               newConfigFile = (char*)lutil_getRegParam( regService, "ConfigFile" );
                if ( newConfigFile != NULL ) 
                {
                        configfile = newConfigFile;
@@ -574,7 +563,7 @@ int main( int argc, char **argv )
 
 #ifdef HAVE_NT_EVENT_LOG
        if (is_NT_Service)
-       LogSlapdStartedEvent( serverName, slap_debug, configfile, urls );
+       lutil_LogStartedEvent( serverName, slap_debug, configfile, urls );
 #endif
 
        rc = slapd_daemon();
@@ -602,7 +591,7 @@ destroy:
 stop:
 #ifdef HAVE_NT_EVENT_LOG
        if (is_NT_Service)
-       LogSlapdStoppedEvent( serverName );
+       lutil_LogStoppedEvent( serverName );
 #endif
 
 #ifdef NEW_LOGGING
@@ -613,7 +602,7 @@ stop:
 
 
 #ifdef HAVE_NT_SERVICE_MANAGER
-       ReportSlapdShutdownComplete();
+       lutil_ReportShutdownComplete();
 #endif
 
 #ifdef LOG_DEBUG
index 6a003567e14405ea2a0483e80d4cbd6cfd1b7eb5..ebb3a391cfc904d770ac02bb677f269fee8b79df 100644 (file)
 void WINAPI ServiceMain( DWORD argc, LPTSTR *argv );
 
 /* in ntservice.c */
-int srv_install( char* service, char * displayName, char* filename,
-                BOOL auto_start );
-int srv_remove ( char* service, char* filename );
-DWORD svc_installed (LPTSTR lpszServiceName, LPTSTR lpszBinaryPathName);
-DWORD svc_running (LPTSTR lpszServiceName);
-
 int main( int argc, LPTSTR *argv )
 {
        int             length;
@@ -30,10 +24,7 @@ int main( int argc, LPTSTR *argv )
        /*
         * Because the service was registered as SERVICE_WIN32_OWN_PROCESS,
         * the lpServiceName element of the SERVICE_TABLE_ENTRY will be
-        * ignored. Since we don't even know the name of the service at
-        * this point (since it could have been installed under a name
-        * different than SERVICE_NAME), we might as well just provide
-        * the parameter as "".
+        * ignored.
         */
 
        SERVICE_TABLE_ENTRY             DispatchTable[] = {
@@ -42,9 +33,10 @@ int main( int argc, LPTSTR *argv )
        };
 
        /*
-       // set the service's current directory to being the installation directory for the service.
-       // this way we don't have to write absolute paths in the configuration files
-       */
+        * set the service's current directory to the installation directory
+        * for the service. this way we don't have to write absolute paths
+        * in the configuration files
+        */
        GetModuleFileName( NULL, filename, sizeof( filename ) );
        fname_start = strrchr( filename, *LDAP_DIRSEP );
 
@@ -65,7 +57,7 @@ int main( int argc, LPTSTR *argv )
                                auto_start = TRUE;
 
                        strcat(filename, " service");
-                       if ( !srv_install(svcName, displayName, filename, auto_start) ) 
+                       if ( !lutil_srv_install(svcName, displayName, filename, auto_start) ) 
                        {
                                fputs( "service failed installation ...\n", stderr  );
                                return EXIT_FAILURE;
@@ -79,7 +71,7 @@ int main( int argc, LPTSTR *argv )
                        char *svcName = SERVICE_NAME;
                        if ( (argc > 2) && (argv[2] != NULL) )
                                svcName = argv[2];
-                       if ( !srv_remove(svcName, filename) ) 
+                       if ( !lutil_srv_remove(svcName, filename) ) 
                        {
                                fputs( "failed to remove the service ...\n", stderr  );
                                return EXIT_FAILURE;