s3:services_db: untanlge assignments from check in read_init_file().
[amitay/samba.git] / source3 / services / svc_rcinit.c
index b7684b951c1c398e8994e9bd3b176c669e13edb9..199e5f12ce1b87142cb50462972cbf6f8353d017 100644 (file)
@@ -1,34 +1,35 @@
-/* 
+/*
  *  Unix SMB/CIFS implementation.
  *  Service Control API Implementation
  *  Copyright (C) Gerald Carter                   2005.
- *  
+ *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "includes.h"
+#include "services/services.h"
 
 /*********************************************************************
 *********************************************************************/
 
-static WERROR rcinit_stop( const char *service, SERVICE_STATUS *status )
+static WERROR rcinit_stop( const char *service, struct SERVICE_STATUS *status )
 {
        char *command = NULL;
        int ret, fd;
 
        if (asprintf(&command, "%s/%s/%s stop",
-                               get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+                               get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
                return WERR_NOMEM;
        }
 
@@ -44,9 +45,11 @@ static WERROR rcinit_stop( const char *service, SERVICE_STATUS *status )
        SAFE_FREE(command);
 
        ZERO_STRUCTP( status );
-       status->type = 0x0020;
-       status->state = (ret == 0 ) ? 0x0001 : 0x0004;
-       status->controls_accepted = 0x0005;
+
+       status->type                    = SERVICE_TYPE_WIN32_SHARE_PROCESS;
+       status->state                   = (ret == 0 ) ? SVCCTL_STOPPED : SVCCTL_RUNNING;
+       status->controls_accepted       = SVCCTL_ACCEPT_STOP |
+                                         SVCCTL_ACCEPT_SHUTDOWN;
 
        return ( ret == 0 ) ? WERR_OK : WERR_ACCESS_DENIED;
 }
@@ -60,7 +63,7 @@ static WERROR rcinit_start( const char *service )
        int ret, fd;
 
        if (asprintf(&command, "%s/%s/%s start",
-                               get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+                               get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
                return WERR_NOMEM;
        }
 
@@ -81,13 +84,13 @@ static WERROR rcinit_start( const char *service )
 /*********************************************************************
 *********************************************************************/
 
-static WERROR rcinit_status( const char *service, SERVICE_STATUS *status )
+static WERROR rcinit_status( const char *service, struct SERVICE_STATUS *status )
 {
        char *command = NULL;
        int ret, fd;
 
        if (asprintf(&command, "%s/%s/%s status",
-                               get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+                               get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
                return WERR_NOMEM;
        }
 
@@ -105,9 +108,11 @@ static WERROR rcinit_status( const char *service, SERVICE_STATUS *status )
        SAFE_FREE(command);
 
        ZERO_STRUCTP( status );
-       status->type = 0x0020;
-       status->state = (ret == 0 ) ? 0x0004 : 0x0001;
-       status->controls_accepted = 0x0005;
+
+       status->type                    = SERVICE_TYPE_WIN32_SHARE_PROCESS;
+       status->state                   = (ret == 0 ) ? SVCCTL_RUNNING : SVCCTL_STOPPED;
+       status->controls_accepted       = SVCCTL_ACCEPT_STOP |
+                                         SVCCTL_ACCEPT_SHUTDOWN;
 
        return WERR_OK;
 }