xref: /original-bsd/contrib/usr.x25/lib/x25err.c (revision e1db577d)
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