Windows: roken.h ordering
[openafs.git] / src / WINNT / afssvrmgr / svc_col.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <winsock2.h>
11 #include <ws2tcpip.h>
12
13 extern "C" {
14 #include <afsconfig.h>
15 #include <afs/param.h>
16 #include <roken.h>
17 }
18
19 #include "svrmgr.h"
20 #include "svc_col.h"
21
22
23 /*
24  * SERVICE-VIEW COLUMNS _______________________________________________________
25  *
26  */
27
28 void Services_SetDefaultView (LPVIEWINFO lpvi)
29 {
30    lpvi->lvsView = FLS_VIEW_LIST;
31    lpvi->nColsAvail = nSERVICECOLUMNS;
32
33    for (size_t iCol = 0; iCol < nSERVICECOLUMNS; ++iCol)
34       {
35       lpvi->cxColumns[ iCol ]  = SERVICECOLUMNS[ iCol ].cxWidth;
36       lpvi->idsColumns[ iCol ] = SERVICECOLUMNS[ iCol ].idsColumn;
37       }
38
39    lpvi->iSort = svccolNAME;
40
41    lpvi->nColsShown = 3;
42    lpvi->aColumns[0] = (int)svccolNAME;
43    lpvi->aColumns[1] = (int)svccolSTATUS;
44    lpvi->aColumns[2] = (int)svccolDATE_STARTSTOP;
45 }
46
47
48 /*
49  * ROUTINES ___________________________________________________________________
50  *
51  */
52
53 size_t Services_GetAlertCount (LPSERVICE lpService)
54 {
55    return Alert_GetCount (lpService->GetIdentifier());
56 }
57
58
59 LPTSTR Services_GetColumnText (LPIDENT lpi, SERVICECOLUMN svccol, BOOL fShowServerName)
60 {
61    static TCHAR aszBuffer[ nSERVICECOLUMNS ][ cchRESOURCE ];
62    static size_t iBufferNext = 0;
63    LPTSTR pszBuffer = aszBuffer[ iBufferNext++ ];
64    if (iBufferNext == nSERVICECOLUMNS)
65       iBufferNext = 0;
66    *pszBuffer = TEXT('\0');
67
68    LPSERVICESTATUS lpss = NULL;
69    LPSERVICE_PREF lpsp;
70    if ((lpsp = (LPSERVICE_PREF)lpi->GetUserParam()) != NULL)
71       lpss = &lpsp->ssLast;
72
73    switch (svccol)
74       {
75       case svccolNAME:
76          if (!fShowServerName)
77             lpi->GetServiceName (pszBuffer);
78          else
79             {
80             TCHAR szNameSvr[ cchNAME ];
81             TCHAR szNameSvc[ cchNAME ];
82             lpi->GetServerName (szNameSvr);
83             lpi->GetServiceName (szNameSvc);
84             LPTSTR pszName = FormatString (IDS_SERVER_SERVICE, TEXT("%s%s"), szNameSvr, szNameSvc);
85             lstrcpy (pszBuffer, pszName);
86             FreeString (pszName);
87             }
88          break;
89
90       case svccolTYPE:
91          if (lpss)
92             {
93             if (lpss->type == SERVICETYPE_SIMPLE)
94                GetString (pszBuffer, IDS_SERVICETYPE_SIMPLE);
95             else if (lpss->type == SERVICETYPE_FS)
96                GetString (pszBuffer, IDS_SERVICETYPE_FS);
97             else
98                GetString (pszBuffer, IDS_SERVICETYPE_CRON);
99             }
100          break;
101
102       case svccolPARAMS:
103          if (lpss)
104             {
105             lstrncpy (pszBuffer, lpss->szParams, cchRESOURCE-1);
106             pszBuffer[ cchRESOURCE-1 ] = TEXT('\0');
107
108             for (LPTSTR pch = pszBuffer; *pch; ++pch)
109                {
110                if (*pch == TEXT('\r') || *pch == TEXT('\t') || *pch == TEXT('\n'))
111                   *pch = TEXT(' ');
112                }
113             }
114          break;
115
116       case svccolNOTIFIER:
117          if (lpss)
118             {
119             lstrncpy (pszBuffer, lpss->szNotifier, cchRESOURCE-1);
120             pszBuffer[ cchRESOURCE-1 ] = TEXT('\0');
121
122             for (LPTSTR pch = pszBuffer; *pch; ++pch)
123                {
124                if (*pch == TEXT('\r') || *pch == TEXT('\t') || *pch == TEXT('\n'))
125                   *pch = TEXT(' ');
126                }
127             }
128          break;
129
130       case svccolSTATUS:
131          if (lpss)
132             {
133             if (lpss->state == SERVICESTATE_RUNNING)
134                GetString (pszBuffer, IDS_SERVICESTATE_RUNNING);
135             else if (lpss->state == SERVICESTATE_STOPPING)
136                GetString (pszBuffer, IDS_SERVICESTATE_STOPPING);
137             else if (lpss->state == SERVICESTATE_STARTING)
138                GetString (pszBuffer, IDS_SERVICESTATE_STARTING);
139             else
140                GetString (pszBuffer, IDS_SERVICESTATE_STOPPED);
141             }
142          break;
143
144       case svccolDATE_START:
145          if (lpss)
146             {
147             if (!FormatTime (pszBuffer, TEXT("%s"), &lpss->timeLastStart))
148                pszBuffer[0] = TEXT('\0');
149             }
150          break;
151
152       case svccolDATE_STOP:
153          if (lpss)
154             {
155             if (!FormatTime (pszBuffer, TEXT("%s"), &lpss->timeLastStop))
156                pszBuffer[0] = TEXT('\0');
157             }
158          break;
159
160       case svccolDATE_STARTSTOP:
161          if (lpss)
162             {
163             LPSYSTEMTIME pst;
164             int ids;
165             if ((lpss->state == SERVICESTATE_RUNNING) || (lpss->state == SERVICESTATE_STARTING))
166                {
167                ids = IDS_SERVICE_STARTDATE;
168                pst = &lpss->timeLastStart;
169                }
170             else
171                {
172                ids = IDS_SERVICE_STOPDATE;
173                pst = &lpss->timeLastStop;
174                }
175
176             TCHAR szDate[ cchRESOURCE ];
177             if (FormatTime (szDate, TEXT("%s"), pst))
178                {
179                LPTSTR psz = FormatString (ids, TEXT("%s"), szDate);
180                lstrcpy (pszBuffer, psz);
181                FreeString (psz);
182                }
183             }
184          break;
185
186       case svccolDATE_FAILED:
187          if (lpss)
188             {
189             if (!FormatTime (pszBuffer, TEXT("%s"), &lpss->timeLastFail))
190                pszBuffer[0] = TEXT('\0');
191             }
192          break;
193
194       case svccolLASTERROR:
195          if (lpss)
196             {
197             LPTSTR psz = FormatString (IDS_SERVICE_LASTERROR, TEXT("%ld"), lpss->dwErrLast);
198             lstrcpy (pszBuffer, psz);
199             FreeString (psz);
200             }
201          break;
202       }
203
204    return pszBuffer;
205 }
206