Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / comerr / et_name.c
1 /*
2  * Copyright 1987 by MIT Student Information Processing Board
3  *
4  * For copyright info, see mit-sipb-cr.h.
5  */
6
7 #include "error_table.h"
8 #include "mit-sipb-cr.h"
9 #include "internal.h"
10
11 #ifndef lint
12 static const char copyright[] =
13     "Copyright 1987,1988 by Student Information Processing Board, Massachusetts Institute of Technology";
14 #endif
15
16 static const char char_set[] =
17         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
18
19 static char buf[6];
20
21 const char * error_table_name(num)
22     int num;
23 {
24     int ch;
25     int i;
26     char *p;
27
28     extern char *lcstring();
29
30     /* num = aa aaa abb bbb bcc ccc cdd ddd d?? ??? ??? */
31     p = buf;
32     num >>= ERRCODE_RANGE;
33     /* num = ?? ??? ??? aaa aaa bbb bbb ccc ccc ddd ddd */
34     num &= 077777777;
35     /* num = 00 000 000 aaa aaa bbb bbb ccc ccc ddd ddd */
36     for (i = 4; i >= 0; i--) {
37         ch = (num >> BITS_PER_CHAR * i) & ((1 << BITS_PER_CHAR) - 1);
38         if (ch != 0)
39             *p++ = char_set[ch-1];
40     }
41     *p = '\0';
42     return(lcstring (buf, buf, sizeof(buf)));
43 }