reindent-20030715
[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 <afsconfig.h>
8 #include <afs/param.h>
9 #include <afs/afsutil.h>
10
11 RCSID
12     ("$Header$");
13
14 #include "error_table.h"
15 #include "mit-sipb-cr.h"
16 #include "internal.h"
17
18 #ifndef lint
19 static const char copyright[] =
20     "Copyright 1987,1988 by Student Information Processing Board, Massachusetts Institute of Technology";
21 #endif
22
23 static const char char_set[] =
24     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
25
26 static char buf[6];
27
28 const char *
29 error_table_name(afs_int32 num)
30 {
31     int ch;
32     int i;
33     char *p;
34
35     /* num = aa aaa abb bbb bcc ccc cdd ddd d?? ??? ??? */
36     p = buf;
37     num >>= ERRCODE_RANGE;
38     /* num = ?? ??? ??? aaa aaa bbb bbb ccc ccc ddd ddd */
39     num &= 077777777;
40     /* num = 00 000 000 aaa aaa bbb bbb ccc ccc ddd ddd */
41     for (i = 4; i >= 0; i--) {
42         ch = (num >> BITS_PER_CHAR * i) & ((1 << BITS_PER_CHAR) - 1);
43         if (ch != 0)
44             *p++ = char_set[ch - 1];
45     }
46     *p = '\0';
47     return (lcstring(buf, buf, sizeof(buf)));
48 }