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 
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