| 1 /* |
|
| 2 * Copyright 1987 by MIT Student Information Processing Board |
|
| 3 * |
|
| 4 * For copyright info, see mit-sipb-copyright.h. |
|
| 5 */ |
|
| 6 |
|
| 7 #include <sysdep.h> |
|
| 8 |
|
| 9 |
|
| 10 #define ERRCODE_RANGE 8 /* # of bits to shift table number */ |
|
| 11 #define BITS_PER_CHAR 6 /* # bits to shift per character in name */ |
|
| 12 |
|
| 13 |
|
| 14 static const char char_set[] = |
|
| 15 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"; |
|
| 16 |
|
| 17 /* Prototypes for -Wmissing-prototypes */ |
|
| 18 const char * error_table_name(int num); |
|
| 19 const char * error_table_name_r(int num, char *buf); |
|
| 20 |
|
| 21 const char * error_table_name_r(int num, char *buf) |
|
| 22 { |
|
| 23 int ch; |
|
| 24 int i; |
|
| 25 char *p; |
|
| 26 |
|
| 27 /* num = aa aaa abb bbb bcc ccc cdd ddd d?? ??? ??? */ |
|
| 28 p = buf; |
|
| 29 num >>= ERRCODE_RANGE; |
|
| 30 /* num = ?? ??? ??? aaa aaa bbb bbb ccc ccc ddd ddd */ |
|
| 31 num &= 077777777; |
|
| 32 /* num = 00 000 000 aaa aaa bbb bbb ccc ccc ddd ddd */ |
|
| 33 for (i = 4; i >= 0; i--) { |
|
| 34 ch = (num >> BITS_PER_CHAR * i) & ((1 << BITS_PER_CHAR) - 1); |
|
| 35 if (ch != 0) |
|
| 36 *p++ = char_set[ch-1]; |
|
| 37 } |
|
| 38 *p = '\0'; |
|
| 39 return(buf); |
|
| 40 } |
|
| 41 |
|
| 42 const char * error_table_name(int num) |
|
| 43 { |
|
| 44 static char buf[6]; |
|
| 45 |
|
| 46 return(error_table_name_r(num, buf)); |
|
| 47 } |
|
| 48 |
|