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