1 #include <netccitt/x25err.h> 2 3 extern int errno, sys_nerr; 4 extern char *sys_errlist[]; 5 6 char * 7 x25err(who) 8 char *who; 9 { 10 register char *ep, *bp; 11 static char buf[80]; 12 13 switch(errno) { 14 case EXRESET: 15 ep = "Call reset"; 16 break; 17 18 case EXROUT: 19 ep = "Reset - out of order"; 20 break; 21 22 case EXRRPE: 23 ep = "Reset - remote procedure error"; 24 break; 25 26 case EXRLPE: 27 ep = "Reset - local procedure error"; 28 break; 29 30 case EXRNCG: 31 ep = "Reset - network congestion"; 32 break; 33 34 case EXCLEAR: 35 ep = "Clear - remote directive"; 36 break; 37 38 case EXCBUSY: 39 ep = "Clear - number is busy"; 40 break; 41 42 case EXCOUT: 43 ep = "Clear - out of order"; 44 break; 45 46 case EXCRPE: 47 ep = "Clear - remote procedure error"; 48 break; 49 50 case EXCRRC: 51 ep = "Clear - collect call refused"; 52 break; 53 54 case EXCINV: 55 ep = "Clear - invalid call"; 56 break; 57 58 case EXCAB: 59 ep = "Clear - access barred"; 60 break; 61 62 case EXCLPE: 63 ep = "Clear - local procedure error"; 64 break; 65 66 case EXCNCG: 67 ep = "Clear - network congestion"; 68 break; 69 70 case EXCNOB: 71 ep = "Clear - not obtainable"; 72 break; 73 74 default: 75 ep = errno >= 0 && errno < sys_nerr ? 76 sys_errlist[errno] : "Unknown error"; 77 } 78 bp = buf; 79 if (who) { 80 while (bp < buf+sizeof (buf)-2-1 && (*bp++ = *who++)); 81 bp[-1] = ':'; 82 *bp++ = ' '; 83 } 84 while (bp < buf+sizeof (buf)-1 && (*bp++ = *ep++)); 85 *bp++ = '\0'; 86 return (buf); 87 } 88