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