ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/CCSFinger/CCSFinger.cpp
(Generate patch)

Comparing CCSFinger/CCSFinger.cpp (file contents):
Revision 594 by douglas, 2005-11-27T17:04:53-08:00 vs.
Revision 595 by douglas, 2005-11-27T17:57:41-08:00

# Line 7 | Line 7
7   #include <windows.h>
8   #include <tchar.h>
9  
10 < /*LPTSTR name;
10 > #include <iostream>
11 >
12 > LPTSTR name;
13   SERVICE_STATUS status;
14   SERVICE_STATUS_HANDLE handle;
15 < HANDLE stop;*/
15 > HANDLE stop;
16   WSADATA data;
17  
18 < /*void WINAPI FingerMain(DWORD argc, LPTSTR *argv);
19 < void WINAPI FingerControl(DWORD control);*/
18 > void WINAPI FingerMain(DWORD argc, LPTSTR *argv);
19 > void WINAPI FingerControl(DWORD control);
20  
21   int _tmain(int argc, TCHAR *argv[])
22   {
23 <        /*SERVICE_TABLE_ENTRY entry[] = { { TEXT("CCS Finger Daemon"), LPSERVICE_MAIN_FUNCTION(FingerMain) }, { NULL, NULL } };
23 >        SERVICE_TABLE_ENTRY entry[] = { { TEXT("CCS Finger Daemon"), LPSERVICE_MAIN_FUNCTION(FingerMain) }, { NULL, NULL } };
24  
25          if (!StartServiceCtrlDispatcher(entry))
26          {
# Line 27 | Line 29 | int _tmain(int argc, TCHAR *argv[])
29                  switch (error)
30                  {
31                  case ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
32 <                        std::cerr << "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT" << std::endl;
31 <
32 <                        break;
32 >                        goto go;
33  
34                  case ERROR_INVALID_DATA:
35                          std::cerr << "ERROR_INVALID_DATA" << std::endl;
# Line 49 | Line 49 | int _tmain(int argc, TCHAR *argv[])
49          }
50  
51          return 0;
52 +
53 + go:
54 +        std::cout << "Here!" << std::endl;
55 +
56 +        return 0;
57   }
58  
59   void WINAPI FingerMain(DWORD argc, LPTSTR *argv)
# Line 57 | Line 62 | void WINAPI FingerMain(DWORD argc, LPTST
62          handle = RegisterServiceCtrlHandler(name, LPHANDLER_FUNCTION(FingerControl));
63          stop = CreateEvent(NULL, TRUE, FALSE, NULL);
64  
65 <        //*/
65 >        //
66  
67          WSAStartup(MAKEWORD(2, 0), &data);
68  
69          //
70  
71 <        /*status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
71 >        status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
72          status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
73          status.dwServiceSpecificExitCode = 0;
74          status.dwCurrentState = SERVICE_RUNNING;
# Line 71 | Line 76 | void WINAPI FingerMain(DWORD argc, LPTST
76          status.dwCheckPoint = 0;
77          status.dwWaitHint = 0;
78  
79 <        SetServiceStatus(handle, &status);*/
79 >        SetServiceStatus(handle, &status);
80  
81 <        SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
81 >        SOCKET sock(socket(PF_INET, SOCK_STREAM, IPPROTO_TCP));
82          SOCKADDR_IN service;
83          
84          service.sin_family = AF_INET;
# Line 83 | Line 88 | void WINAPI FingerMain(DWORD argc, LPTST
88          bind(sock, (SOCKADDR *)(&service), sizeof (service));
89          listen(sock, SOMAXCONN);
90  
91 <        //while(/*WaitForSingleObject(stop, 1000) != WAIT_OBJECT_0*/ /*&&*/)
91 >        while(WaitForSingleObject(stop, 1000) != WAIT_OBJECT_0 /*&&*/)
92          {
93                  //
94          }
# Line 92 | Line 97 | void WINAPI FingerMain(DWORD argc, LPTST
97  
98          WSACleanup();
99  
100 <        /*status.dwCurrentState = SERVICE_STOPPED;
100 >        status.dwCurrentState = SERVICE_STOPPED;
101          status.dwWin32ExitCode = NO_ERROR;
102          status.dwCheckPoint = 0;
103          status.dwWaitHint = 0;
# Line 116 | Line 121 | void WINAPI FingerControl(DWORD control)
121                  break;
122          }
123  
124 <        SetServiceStatus(handle, &status);*/
120 <
121 <        return 0;
124 >        SetServiceStatus(handle, &status);
125   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines