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