Diff for /libraries/liblutil/ntservice.c between versions 1.5 and 1.5.2.3

version 1.5, 1999/07/21 18:54:23 version 1.5.2.3, 2000/06/13 17:57:25
Line 1 Line 1
 /* ntservice.c */  /* $OpenLDAP: pkg/ldap/libraries/liblutil/ntservice.c,v 1.18 2000/06/07 03:17:30 kurt Exp $ */
   /*
    * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
    * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
    */
   
   /*
    * NT Service manager utilities for OpenLDAP services
    *      these should NOT be slapd specific, but are
    */
   
 #include "portable.h"  #include "portable.h"
   
   #ifdef HAVE_NT_SERVICE_MANAGER
   
 #include <ac/stdlib.h>  #include <ac/stdlib.h>
 #include <ac/string.h>  #include <ac/string.h>
   
Line 9 Line 21
 #include <windows.h>  #include <windows.h>
 #include <winsvc.h>  #include <winsvc.h>
   
 #include "ldap.h"  #include <ldap.h>
   
 #define ldap_debug slap_debug  #define ldap_debug slap_debug
 extern int slap_debug;  extern int slap_debug;
Line 36  ldap_pvt_thread_t  start_status_tid, sto Line 48  ldap_pvt_thread_t  start_status_tid, sto
   
 void (*stopfunc)(int);  void (*stopfunc)(int);
   
 /* in nt_err.c */  static char *GetLastErrorString( void );
 char *GetLastErrorString( void );  
   
 int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)  int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszDisplayName,
                   LPCTSTR lpszBinaryPathName, BOOL auto_start)
 {  {
         HKEY            hKey;          HKEY            hKey;
         DWORD           dwValue, dwDisposition;          DWORD           dwValue, dwDisposition;
Line 51  int srv_install(LPCTSTR lpszServiceName, Line 63  int srv_install(LPCTSTR lpszServiceName,
                 if ((schService = CreateService(                   if ((schService = CreateService( 
                                                         schSCManager,                                                           schSCManager, 
                                                         lpszServiceName,                                                           lpszServiceName, 
                                                         TEXT("OpenLDAP Directory Service"),                                                           lpszDisplayName, 
                                                         SC_MANAGER_CREATE_SERVICE,                                                           SERVICE_ALL_ACCESS, 
                                                         SERVICE_WIN32_OWN_PROCESS,                                                           SERVICE_WIN32_OWN_PROCESS, 
                                                         SERVICE_DEMAND_START,                                                           auto_start ? SERVICE_AUTO_START : SERVICE_DEMAND_START, 
                                                         SERVICE_ERROR_NORMAL,                                                           SERVICE_ERROR_NORMAL, 
                                                         lpszBinaryPathName,                                                           lpszBinaryPathName, 
                                                         NULL, NULL, NULL, NULL, NULL)) != NULL)                                                          NULL, NULL, NULL, NULL, NULL)) != NULL)
Line 71  int srv_install(LPCTSTR lpszServiceName, Line 83  int srv_install(LPCTSTR lpszServiceName,
                                 "REG_SZ", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,                                   "REG_SZ", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, 
                                 &dwDisposition) != ERROR_SUCCESS)                                  &dwDisposition) != ERROR_SUCCESS)
                         {                          {
                                 fprintf( stderr, "RegCreateKeyEx() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                                  fprintf( stderr, "RegCreateKeyEx() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                 RegCloseKey(hKey);                                  RegCloseKey(hKey);
                                 return(0);                                  return(0);
                         }                          }
                         if ( RegSetValueEx(hKey, "EventMessageFile", 0, REG_EXPAND_SZ, lpszBinaryPathName, strlen(lpszBinaryPathName) + 1) != ERROR_SUCCESS)                          if ( RegSetValueEx(hKey, "EventMessageFile", 0, REG_EXPAND_SZ, lpszBinaryPathName, strlen(lpszBinaryPathName) + 1) != ERROR_SUCCESS)
                         {                          {
                                 fprintf( stderr, "RegSetValueEx(EventMessageFile) failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                                  fprintf( stderr, "RegSetValueEx(EventMessageFile) failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                 RegCloseKey(hKey);                                  RegCloseKey(hKey);
                                 return(0);                                  return(0);
                         }                          }
Line 85  int srv_install(LPCTSTR lpszServiceName, Line 97  int srv_install(LPCTSTR lpszServiceName,
                         dwValue = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;                          dwValue = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;
                         if ( RegSetValueEx(hKey, "TypesSupported", 0, REG_DWORD, (LPBYTE) &dwValue, sizeof(DWORD)) != ERROR_SUCCESS)                           if ( RegSetValueEx(hKey, "TypesSupported", 0, REG_DWORD, (LPBYTE) &dwValue, sizeof(DWORD)) != ERROR_SUCCESS) 
                         {                          {
                                 fprintf( stderr, "RegCreateKeyEx(TypesSupported) failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                                  fprintf( stderr, "RegCreateKeyEx(TypesSupported) failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                 RegCloseKey(hKey);                                  RegCloseKey(hKey);
                                 return(0);                                  return(0);
                         }                          }
Line 94  int srv_install(LPCTSTR lpszServiceName, Line 106  int srv_install(LPCTSTR lpszServiceName,
                 }                  }
                 else                  else
                 {                  {
                         fprintf( stderr, "CreateService() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                          fprintf( stderr, "CreateService() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                         CloseServiceHandle(schSCManager);                          CloseServiceHandle(schSCManager);
                         return(0);                          return(0);
                 }                  }
         }          }
         else          else
                 fprintf( stderr, "OpenSCManager() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                  fprintf( stderr, "OpenSCManager() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
         return(0);          return(0);
 }  }
   
Line 120  int srv_remove(LPCTSTR lpszServiceName, Line 132  int srv_remove(LPCTSTR lpszServiceName,
                                 CloseServiceHandle(schSCManager);                                  CloseServiceHandle(schSCManager);
                                 return(1);                                  return(1);
                         } else {                          } else {
                                 fprintf( stderr, "DeleteService() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                                  fprintf( stderr, "DeleteService() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                                 fprintf( stderr, "The %s service has not been removed.\n", lpszBinaryPathName);                                  fprintf( stderr, "The %s service has not been removed.\n", lpszBinaryPathName);
                                 CloseServiceHandle(schService);                                  CloseServiceHandle(schService);
                                 CloseServiceHandle(schSCManager);                                  CloseServiceHandle(schSCManager);
                                 return(0);                                  return(0);
                         }                          }
                 } else {                  } else {
                         fprintf( stderr, "OpenService() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                          fprintf( stderr, "OpenService() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
                         CloseServiceHandle(schSCManager);                          CloseServiceHandle(schSCManager);
                         return(0);                          return(0);
                 }                  }
         }          }
         else          else
                 fprintf( stderr, "OpenSCManager() failed. GetLastError=%d (%s)\n", GetLastError(), GetLastErrorString() );                  fprintf( stderr, "OpenSCManager() failed. GetLastError=%lu (%s)\n", GetLastError(), GetLastErrorString() );
         return(0);          return(0);
 }  }
   
Line 286  void *getRegParam( char *svc, char *valu Line 298  void *getRegParam( char *svc, char *valu
         DWORD valLen = sizeof( vValue );          DWORD valLen = sizeof( vValue );
   
         if ( svc != NULL )          if ( svc != NULL )
                 sprintf ( path, "SOFTWARE\\OpenLDAP\\%s\\Parameters", svc );                  sprintf ( path, "SOFTWARE\\%s", svc );
         else          else
                 strcpy (path, "SOFTWARE\\OpenLDAP\\Parameters" );                  strcpy (path, "SOFTWARE\\OpenLDAP\\Parameters" );
                   
Line 325  void LogSlapdStartedEvent( char *svc, in Line 337  void LogSlapdStartedEvent( char *svc, in
   
         Inserts[i] = (char *)malloc( 20 );          Inserts[i] = (char *)malloc( 20 );
         itoa( slap_debug, Inserts[i++], 10 );          itoa( slap_debug, Inserts[i++], 10 );
         Inserts[i++] = ldap_pvt_strdup( configfile );          Inserts[i++] = strdup( configfile );
         Inserts[i++] = ldap_pvt_strdup( urls );          Inserts[i++] = strdup( urls ? urls : "ldap:///" );
         Inserts[i++] = ldap_pvt_strdup( is_NT_Service ? "svc" : "cmd" );          Inserts[i++] = strdup( is_NT_Service ? "svc" : "cmd" );
   
         ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,          ReportEvent( hEventLog, EVENTLOG_INFORMATION_TYPE, 0,
                 MSG_SLAPD_STARTED, NULL, i, 0, Inserts, NULL );                  MSG_SLAPD_STARTED, NULL, i, 0, (LPCSTR *) Inserts, NULL );
   
         for ( j = 0; j < i; j++ )          for ( j = 0; j < i; j++ )
                 ldap_memfree( Inserts[j] );                  ldap_memfree( Inserts[j] );
Line 420  void ReportSlapdShutdownComplete(  ) Line 432  void ReportSlapdShutdownComplete(  )
                 SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);                  SetServiceStatus(hSLAPDServiceStatus, &SLAPDServiceStatus);
         }          }
 }  }
   
   static char *GetErrorString( int err )
   {
           static char msgBuf[1024];
   
           FormatMessage(
                   FORMAT_MESSAGE_FROM_SYSTEM,
                   NULL,
                   err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                   msgBuf, 1024, NULL );
   
           return msgBuf;
   }
   
   static char *GetLastErrorString( void )
   {
           return GetErrorString( GetLastError() );
   }
   #endif

Removed from v.1.5  
changed lines
  Added in v.1.5.2.3


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org