]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Windows: remove alternative main()
authorAmos Jeffries <squid3@treenet.co.nz>
Fri, 3 Oct 2014 13:34:52 +0000 (06:34 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 3 Oct 2014 13:34:52 +0000 (06:34 -0700)
As a side effect this causes Windows builds to use the wrapper function
for handling exceptions.

src/WinSvc.cc
src/WinSvc.h
src/main.cc

index e0d92ed5f6947b01778dfbc630144175479a4d5a..a98481bb1b34b9be0278ebde655eca1c0b05e110 100644 (file)
@@ -891,7 +891,7 @@ WIN32_sendSignal(int WIN32_signal)
     CloseServiceHandle(schSCManager);
 }
 
-int main(int argc, char **argv)
+int WIN32_StartService(int argc, char **argv)
 {
     SERVICE_TABLE_ENTRY DispatchTable[] = {
         {NULL, SquidWinSvcMain},
@@ -900,35 +900,26 @@ int main(int argc, char **argv)
     char *c;
     char stderr_path[256];
 
-    SetErrorMode(SEM_NOGPFAULTERRORBOX);
-    if ((argc == 2) && strstr(argv[1], _WIN_SQUID_SERVICE_OPTION)) {
-        strcpy(stderr_path, argv[0]);
-        strcat(stderr_path,".log");
-        freopen(stderr_path, "w", stderr);
-        setmode(fileno(stderr), O_TEXT);
-        WIN32_run_mode = _WIN_SQUID_RUN_MODE_SERVICE;
+    strcpy(stderr_path, argv[0]);
+    strcat(stderr_path,".log");
+    freopen(stderr_path, "w", stderr);
+    setmode(fileno(stderr), O_TEXT);
+    WIN32_run_mode = _WIN_SQUID_RUN_MODE_SERVICE;
 
-        if (!(c=strchr(argv[1],':'))) {
-            fprintf(stderr, "Bad Service Parameter: %s\n", argv[1]);
-            return 1;
-        }
-
-        service_name = SBuf(c+1);
-        const char *service = service_name.c_str();
-        DispatchTable[0].lpServiceName = const_cast<char*>(service);
-        strcat(REGKEY, service);
-        keys[4] = const_cast<char*>(service);
+    if (!(c=strchr(argv[1],':'))) {
+        fprintf(stderr, "Bad Service Parameter: %s\n", argv[1]);
+        return 1;
+    }
 
-        if (!StartServiceCtrlDispatcher(DispatchTable)) {
-            fprintf(stderr, "StartServiceCtrlDispatcher error = %ld\n",
-                    GetLastError());
-            return 1;
-        }
-    } else {
-        WIN32_run_mode = _WIN_SQUID_RUN_MODE_INTERACTIVE;
-        opt_no_daemon = 1;
+    service_name = SBuf(c+1);
+    const char *service = service_name.c_str();
+    DispatchTable[0].lpServiceName = const_cast<char*>(service);
+    strcat(REGKEY, service);
+    keys[4] = const_cast<char*>(service);
 
-        return SquidMain(argc, argv);
+    if (!StartServiceCtrlDispatcher(DispatchTable)) {
+        fprintf(stderr, "StartServiceCtrlDispatcher error = %ld\n", GetLastError());
+        return 1;
     }
 
     return 0;
index dd652401361f4bae75e3e9f403561a51bf2ce1b5..abfee52e198db4456af0a023228a66811fa19c16 100644 (file)
 #define WINSVC_H_
 
 #if _SQUID_WINDOWS_
+int WIN32_StartService(int, char **);
 int WIN32_Subsystem_Init(int *, char ***);
 void WIN32_sendSignal(int);
 void WIN32_SetServiceCommandLine(void);
 void WIN32_InstallService(void);
 void WIN32_RemoveService(void);
-int SquidMain(int, char **);
 #else /* _SQUID_WINDOWS_ */
 inline int WIN32_Subsystem_Init(int *foo, char ***bar) {return 0; } /* NOP */
 inline void WIN32_sendSignal(int foo) { return; } /* NOP */
index 152900196a278717eca7f70e365387466d658fd4..1dd25a4af8d470a015781265389b272685f5f146 100644 (file)
@@ -1209,19 +1209,29 @@ int SquidMain(int argc, char **argv);
 static int SquidMainSafe(int argc, char **argv);
 
 #if USE_WIN32_SERVICE
-/* When USE_WIN32_SERVICE is defined, the main function is placed in win32.cc */
+/* Entry point for Windows services */
 extern "C" void WINAPI
 SquidWinSvcMain(int argc, char **argv)
 {
     SquidMainSafe(argc, argv);
 }
-#else
+#endif
+
 int
 main(int argc, char **argv)
 {
+#if USE_WIN32_SERVICE
+    SetErrorMode(SEM_NOGPFAULTERRORBOX);
+    if ((argc == 2) && strstr(argv[1], _WIN_SQUID_SERVICE_OPTION))
+        return WIN32_StartService(argc, argv);
+    else {
+        WIN32_run_mode = _WIN_SQUID_RUN_MODE_INTERACTIVE;
+        opt_no_daemon = 1;
+    }
+#endif
+
     return SquidMainSafe(argc, argv);
 }
-#endif
 
 static int
 SquidMainSafe(int argc, char **argv)