windows-misc-20050102
[openafs.git] / src / WINNT / afssvrcfg / validation.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 /*
11 * INCLUDES _________________________________________________________________
12 *
13 */
14 #include "afscfg.h"
15 #include "resource.h"
16 #include "validation.h"
17
18
19 /*
20  * DEFINITIONS _________________________________________________________________
21  *
22  */
23
24
25 /*
26  * PROTOTYPES _________________________________________________________________
27  *
28  */
29 static BOOL CheckAfsPartitionName(TCHAR *pszInput, int &nErrorMsgResID);
30 static BOOL CheckAfsCellName(TCHAR *pszInput, int &nErrorMsgResID);
31 static BOOL CheckAfsPassword(TCHAR *pszInput, int &nErrorMsgResID);
32 static BOOL CheckAfsUid(TCHAR *pszInput, int &nErrorMsgResID);
33 static BOOL CheckAfsServerName(TCHAR *pszInput, int &nErrorMsgResID);
34 static void ShowError(int nErrorMsgResID);
35
36
37 /*
38  * EXPORTED FUNCTIONS _________________________________________________________________
39  *
40  */
41 BOOL Validation_IsValid(TCHAR *pszInput, VALIDATION_TYPE type, BOOL bShowError)
42 {
43     BOOL bValid;
44     int nErrorMsgResID;
45
46         switch (type) {
47                 case VALID_AFS_PARTITION_NAME:  bValid = CheckAfsPartitionName(pszInput, nErrorMsgResID);
48                                         break;
49
50         case VALID_AFS_CELL_NAME:               bValid = CheckAfsCellName(pszInput, nErrorMsgResID);
51                                         break;
52
53                 case VALID_AFS_PASSWORD:                bValid = CheckAfsPassword(pszInput, nErrorMsgResID);
54                                         break;
55
56                 case VALID_AFS_UID:                             bValid = CheckAfsUid(pszInput, nErrorMsgResID);
57                                         break;
58
59                 case VALID_AFS_SERVER_NAME:             bValid = CheckAfsServerName(pszInput, nErrorMsgResID);
60                                         break;
61
62                 default:                                                nErrorMsgResID = 0;
63                                                                                 ASSERT(FALSE);
64                                                                                 return FALSE;
65         }
66
67     if (!bValid && bShowError)
68         ShowError(nErrorMsgResID);
69
70     return bValid;
71 }
72
73
74
75 /*
76  * STATIC FUNCTIONS _________________________________________________________________
77  *
78  */
79
80  /*
81   * Utility Functions _________________________________________________________________
82   *
83   */
84 static BOOL CheckAfsPartitionName(TCHAR *pszPartitionName, int &nErrorMsgResID)
85 {
86     short bIsValid;
87     afs_status_t nStatus;
88
89     char *pszName = new char[strlen("/vicpe") + lstrlen(pszPartitionName) + 1];
90     if (!pszName) {
91         ASSERT(FALSE);
92         return TRUE;
93     }
94
95     strcpy(pszName, "/vicep");
96     strcat(pszName, S2A(pszPartitionName));
97
98     int nResult = cfg_HostPartitionNameValid(pszName, &bIsValid, &nStatus);
99     ASSERT(nResult);
100
101     if (!bIsValid)
102         nErrorMsgResID = IDS_PARTITION_NAME_VALIDATION_TYPE;
103
104     delete pszName;
105
106         return bIsValid;
107 }
108
109 static BOOL CheckAfsCellName(TCHAR *pszInput, int &nErrorMsgResID)
110 {
111         nErrorMsgResID = 0;
112
113         return TRUE;
114 }
115
116 static BOOL CheckAfsPassword(TCHAR *pszInput, int &nErrorMsgResID)
117 {
118         nErrorMsgResID = 0;
119
120         return TRUE;
121 }
122
123 static BOOL CheckAfsUid(TCHAR *pszInput, int &nErrorMsgResID)
124 {
125         nErrorMsgResID = 0;
126
127         return TRUE;
128 }
129
130 static BOOL CheckAfsServerName(TCHAR *pszInput, int &nErrorMsgResID)
131 {
132         nErrorMsgResID = 0;
133
134         return TRUE;
135 }
136
137 static void ShowError(int nErrorMsgResID)
138 {
139     Message(MB_ICONSTOP | MB_OK, GetAppTitleID(), IDS_VALIDATION_ERROR_TEMPLATE, TEXT("%m%m"), nErrorMsgResID, nErrorMsgResID);
140 }