Silence most of the msvc warnings
[reactos.git] / reactos / services / tcpsvcs / tcpsvcs.c
index 1787f0a..809cc05 100644 (file)
@@ -13,9 +13,8 @@
  */
 /*
  * TODO:
- * - Start tcpsvcs as a service.
- * - write debugging function and print all dbg info via that.
- * - change 'temp' to something meaningfull
+ * - fix bug when terminating chargen server
+ * - log info in the event logger (when it's implemented)
  */
 
 
@@ -53,7 +52,7 @@ Services[NUM_SERVICES] =
 
 
 int
-main(int argc, char *argv[])
+main(void)
 {
     SERVICE_TABLE_ENTRY ServiceTable[] =
     {
@@ -75,24 +74,25 @@ main(int argc, char *argv[])
 VOID WINAPI
 ServiceMain(DWORD argc, LPTSTR argv[])
 {
-    TCHAR LogFilePath[MAX_PATH];
+       TCHAR LogFilePath[MAX_PATH];
 
     if(! GetSystemDirectory(LogFilePath, MAX_PATH))
         return;
 
     _tcscat(LogFilePath, LogFileName);
 
-       hLogFile = fopen(LogFilePath, _T("w"));
+       hLogFile = fopen(LogFilePath, _T("a+"));
     if (hLogFile == NULL)
     {
         TCHAR buf[50];
 
-        _stprintf(buf, _T("Could not open log file: %s"), LogFilePath);
+        _stprintf(buf, _T("Could not open log file: %s\n"), LogFilePath);
         MessageBox(NULL, buf, NULL, MB_OK);
         return;
     }
 
-    LogEvent(_T("Entering ServiceMain"), 0, FALSE);
+
+    LogEvent(_T("Entering ServiceMain\n"), 0, FALSE);
 
     hServStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
     hServStatus.dwCurrentState = SERVICE_START_PENDING;
@@ -107,9 +107,9 @@ ServiceMain(DWORD argc, LPTSTR argv[])
     if (hSStat == 0)
         LogEvent(_T("Failed to register service\n"), -1, TRUE);
 
-       LogEvent(_T("Control handler registered successfully"), 0, FALSE);
+       LogEvent(_T("Control handler registered successfully\n"), 0, FALSE);
        SetServiceStatus (hSStat, &hServStatus);
-       LogEvent(_T("Service status set to SERVICE_START_PENDING"), 0, FALSE);
+       LogEvent(_T("Service status set to SERVICE_START_PENDING\n"), 0, FALSE);
 
     if (CreateServers() != 0)
     {
@@ -119,13 +119,15 @@ ServiceMain(DWORD argc, LPTSTR argv[])
         return;
     }
 
-       LogEvent(_T("Service threads shut down. Set SERVICE_STOPPED status"), 0, FALSE);
+       LogEvent(_T("Service threads shut down. Set SERVICE_STOPPED status\n"), 0, FALSE);
        /*  We will only return here when the ServiceSpecific function
                completes, indicating system shutdown. */
        UpdateStatus (SERVICE_STOPPED, 0);
-       LogEvent(_T("Service status set to SERVICE_STOPPED"), 0, FALSE);
-       LogEvent(_T("Leaving ServiceMain"), 0, FALSE);
-       fclose(hLogFile);  /*  Clean up everything, in general */
+       LogEvent(_T("Service status set to SERVICE_STOPPED\n"), 0, FALSE);
+       LogEvent(_T("Leaving ServiceMain\n"), 0, FALSE);
+       
+       fclose(hLogFile);
+
        return;
 
 }
@@ -137,14 +139,17 @@ ServerCtrlHandler(DWORD Control)
     {
         case SERVICE_CONTROL_SHUTDOWN: /* fall through */
         case SERVICE_CONTROL_STOP:
-            bShutDown = TRUE;
+                       LogEvent(_T("stopping service\n"), 0, FALSE);
+            InterlockedExchange((LONG *)&bShutDown, TRUE);
             UpdateStatus(SERVICE_STOP_PENDING, -1);
             break;
-        case SERVICE_CONTROL_PAUSE:
-            bPause = TRUE;
+        case SERVICE_CONTROL_PAUSE: /* not yet implemented */
+                       LogEvent(_T("pausing service\n"), 0, FALSE);
+            InterlockedExchange((LONG *)&bPause, TRUE);
             break;
         case SERVICE_CONTROL_CONTINUE:
-            bPause = FALSE;
+                       LogEvent(_T("continuing service\n"), 0, FALSE);
+            InterlockedExchange((LONG *)&bPause, FALSE);
             break;
         case SERVICE_CONTROL_INTERROGATE:
             break;
@@ -169,7 +174,7 @@ void UpdateStatus (int NewStatus, int Check)
         hServStatus.dwCurrentState = NewStatus;
 
        if (! SetServiceStatus (hSStat, &hServStatus))
-               LogEvent(_T("Cannot set service status"), -1, TRUE);
+               LogEvent(_T("Cannot set service status\n"), -1, TRUE);
 
        return;
 }
@@ -180,7 +185,7 @@ CreateServers()
     DWORD dwThreadId[NUM_SERVICES];
     HANDLE hThread[NUM_SERVICES];
        WSADATA wsaData;
-       TCHAR buf[256]; // temp for holding LogEvent text
+       TCHAR buf[256];
     INT i;
     DWORD RetVal;
 
@@ -240,17 +245,17 @@ CreateServers()
 }
 
 
-/*     LogEvent is similar to the ReportError function used elsewhere
-       For a service, however, we ReportEvent rather than write to standard
-       error. Eventually, this function should go into the utility
-       library.  */
+/*     This is a temperary log system until our eventlog is in place  */
+
 VOID
-LogEvent (LPCTSTR UserMessage, DWORD ExitCode, BOOL PrintErrorMsg)
+LogEvent (LPCTSTR UserMessage, INT ExitCode, BOOL PrintErrorMsg)
 {
        DWORD eMsgLen, ErrNum = GetLastError ();
        LPTSTR lpvSysMsg;
        TCHAR MessageBuffer[512];
 
+
+
        if (PrintErrorMsg)
     {
                eMsgLen = FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
@@ -258,13 +263,13 @@ LogEvent (LPCTSTR UserMessage, DWORD ExitCode, BOOL PrintErrorMsg)
                        ErrNum, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
                        (LPTSTR)&lpvSysMsg, 0, NULL);
 
-               _stprintf(MessageBuffer, _T("\n%s %s ErrNum = %lu. ExitCode = %lu."),
+               _stprintf(MessageBuffer, _T("%s %s ErrNum = %lu. ExitCode = %d."),
                        UserMessage, lpvSysMsg, ErrNum, ExitCode);
                HeapFree(GetProcessHeap (), 0, lpvSysMsg);
        }
     else
     {
-               _stprintf(MessageBuffer, _T("\n%s"), UserMessage);
+               _stprintf(MessageBuffer, _T("%s"), UserMessage);
        }
 
        fputs (MessageBuffer, hLogFile);