1 /* $Header: errmsg.c,v 2.3 87/05/12 11:46:32 ed Exp $ */
2
3 /* $Log: errmsg.c,v $
4 * Revision 2.3 87/05/12 11:46:32 ed
5 * Change to use FilingSubset1_defs.h, new AuthenticationError problems.
6 *
7 * Revision 2.2 87/03/07 14:44:42 jqj
8 * set problem correctly. Cardinal != Enum on most UNIX systems
9 *
10 * Revision 2.1 86/06/02 07:10:30 jqj
11 * print more information on unspecifiedError
12 *
13 * Revision 2.0 85/11/21 07:22:44 jqj
14 * 4.3BSD standard release
15 *
16 * Revision 1.1 85/11/20 14:19:04 jqj
17 * Initial revision
18 *
19 */
20 #include "FilingSubset1_defs.h"
21
FilingErrMsg(Code,Message)22 FilingErrMsg(Code, Message)
23 int Code;
24 char *Message;
25 {
26 static char *errmsgs[] = {
27 "AttributeTypeError",
28 "AttributeValueError",
29 "ControlTypeError",
30 "ControlValueError",
31 "ScopeTypeError",
32 "ScopeValueError",
33 "AccessError",
34 "AuthenticationError",
35 "ConnectionError",
36 "HandleError",
37 "InsertionError",
38 "ServiceError",
39 "SessionError",
40 "SpaceError",
41 "TransferError",
42 "UndefinedError",
43 "RangeError" };
44 static char *argproblems[] = {
45 "illegal",
46 "disallowed",
47 "unreasonable",
48 "unimplemented",
49 "duplicated",
50 "missing" };
51 static char *accessproblems[] = {
52 "accessRightsInsufficient",
53 "accessRightsIndeterminate",
54 "fileChanged",
55 "fileDamaged",
56 "fileInUse",
57 "fileNotFound",
58 "fileOpen" };
59 static char *connectionproblems[] = {
60 "noRoute",
61 "noResponse",
62 "transmissionHardware",
63 "transportTimeout",
64 "tooManyLocalConnections",
65 "tooManyRemoteConnections",
66 "missingCourier",
67 "missingProgram",
68 "missingProcedure",
69 "protocolMismatch",
70 "parameterInconsistency",
71 "invalidMessage",
72 "returnTimedOut",
73 "otherCallProblem" };
74 static char* handleproblems[] = {
75 "invalid",
76 "nullDisallowed",
77 "directoryRequired" };
78 static char *insertionproblems[] = {
79 "positionUnavailable",
80 "fileNotUnique",
81 "loopInHierarchy" };
82 static char *serviceproblems[] = {
83 "cannotAuthenticate",
84 "serviceFull",
85 "serviceUnavailable",
86 "sessionInUse" };
87 static char *sessionproblems[] = {
88 "tokenInvalid",
89 "serviceAlreadySet" };
90 static char *spaceproblems[] = {
91 "allocationExceeded",
92 "attributeAreadFull",
93 "mediumFull" };
94 static char *transferproblems[] = {
95 "aborted",
96 "checksumIncorrect",
97 "formatIncorrect",
98 "noRendevous",
99 "wrongDirection" };
100 static char *authenticationproblems[] = {
101 "primaryCredentialsInvalid",
102 "verifierInvalid",
103 "verifierExpired",
104 "verifierReused",
105 "primaryCredentialsExpired",
106 "inappropriatePrimaryCredentials",
107 "secondaryCredentialsRequired",
108 "secondaryCredentialsTypeInvalid",
109 "secondaryCredentialsValueInvalid" };
110 static char *rejectproblem[] = {
111 "noSuchProgramNumber",
112 "noSuchVersionNumber",
113 "noSuchProcedureValue",
114 "invalidArgument" };
115 char *msg, *problemstr;
116 int problem;
117 char tempbuf[40];
118
119 if (Code < 1000) {
120 if (Message != (char *) 0)
121 printf("ERROR: %s\n", Message);
122 return;
123 }
124
125 msg = "";
126 problem = 0;
127 if (Code-ERROR_OFFSET >= 0 && Code-ERROR_OFFSET <= 16) {
128 msg = errmsgs[Code-ERROR_OFFSET];
129 }
130 switch (Code) {
131 case AttributeTypeError:
132 case AttributeValueError:
133 case ControlTypeError:
134 case ControlValueError:
135 case ScopeTypeError:
136 case ScopeValueError:
137 /* the following fails because "type" is defined as "Filing4_type". Argh!!
138 /* problem = (int) (((ScopeTypeErrorArgs *) Message)->problem);
139 /* (void)sprintf(tempbuf,"problem: %s; type: %d",
140 /* argproblems[problem],
141 /* ((ScopeTypeErrorArgs *) Message)->type);
142 /* problemstr = tempbuf;
143 /* break;
144 */
145 case RangeError:
146 problem = (int) (((RangeErrorArgs *) Message)->problem);
147 problemstr = argproblems[problem];
148 break;
149 case AccessError:
150 problem = (int) (((AccessErrorArgs *) Message)->problem);
151 problemstr = accessproblems[problem];
152 break;
153 case AuthenticationError:
154 problem = (int) (((AuthenticationErrorArgs *) Message)->problem);
155 problemstr = authenticationproblems[problem];
156 break;
157 case ConnectionError:
158 problem = (int) (((ConnectionErrorArgs *) Message)->problem);
159 problemstr = connectionproblems[problem];
160 break;
161 case HandleError:
162 problem = (int) (((HandleErrorArgs *) Message)->problem);
163 problemstr = handleproblems[problem];
164 break;
165 case InsertionError:
166 problem = (int) (((InsertionErrorArgs *) Message)->problem);
167 problemstr = insertionproblems[problem];
168 break;
169 case ServiceError:
170 problem = (int) (((ServiceErrorArgs *) Message)->problem);
171 problemstr = serviceproblems[problem];
172 break;
173 case SessionError:
174 problem = (int) (((SessionErrorArgs *) Message)->problem);
175 problemstr = sessionproblems[problem];
176 break;
177 case SpaceError:
178 problem = (int) (((SpaceErrorArgs *) Message)->problem);
179 problemstr = spaceproblems[problem];
180 break;
181 case TransferError:
182 problem = (int) (((TransferErrorArgs *) Message)->problem);
183 problemstr = transferproblems[problem];
184 break;
185 case UndefinedError:
186 problem = (int) (((UndefinedErrorArgs *) Message)->problem);
187 problemstr = tempbuf;
188 sprintf(problemstr,"number %d",problem);
189 break;
190 case REJECT_ERROR:
191 msg = "Courier REJECT";
192 problem = (int) (((rejectionDetails *) Message)->designator);
193 if (problem <= 3)
194 problemstr = rejectproblem[problem];
195 else {
196 problemstr = tempbuf;
197 sprintf(problemstr,"unspecifiedError (%d)", problem);
198 }
199 break;
200 case PROTOCOL_VIOLATION:
201 problemstr = "Courier protocol violation";
202 break;
203 default:
204 problemstr = tempbuf;
205 sprintf(problemstr,"unexpected error number %d", Code);
206 break;
207 }
208 printf("ERROR: %s, %s\n", msg, problemstr);
209 }
210