/* Copyright 1999-2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef SERVICE_H #define SERVICE_H #ifdef WIN32 /* BIG RED WARNING: exit() is mapped to allow us to capture the exit * status. This header must only be included from modules linked into * the ApacheCore.dll - since it's a horrible behavior to exit() from * any module outside the main() block, and we -will- assume it's a * fatal error. No dynamically linked module will ever be able to find * the real_exit_code, and _will_ GP fault if it tries this macro. */ #define exit(status) ((exit)((real_exit_code==2) ? (real_exit_code = (status)) \ : ((real_exit_code = 0), (status)))) extern int real_exit_code; void hold_console_open_on_error(void); int service_main(int (*main_fn)(int, char **), int argc, char **argv); int service95_main(int (*main_fn)(int, char **), int argc, char **argv, char *display_name); void service_set_status(int status); void service_cd(); char *get_service_name(char *display_name); char *get_display_name(char *service_name); BOOL isProcessService(); BOOL isValidService(char *display_name); void InstallService(pool *p, char *display_name, int argc, char **argv, int reconfig); void RemoveService(char *display_name); int send_signal_to_service(char *display_name, char *sig, int argc, char **argv); BOOL isWindowsNT(void); void ap_start_console_monitor(void); void ap_start_child_console(int is_child_of_service); #endif /* WIN32 */ #endif /* SERVICE_H */