OSDN Git Service

Code drop from //branches/cupcake/...@124589
[android-x86/external-e2fsprogs.git] / lib / et / et_name.c
1 /*
2  * Copyright 1987 by MIT Student Information Processing Board
3  *
4  * Permission to use, copy, modify, and distribute this software and
5  * its documentation for any purpose is hereby granted, provided that
6  * the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
7  * advertising or publicity pertaining to distribution of the software
8  * without specific, written prior permission.  M.I.T. and the
9  * M.I.T. S.I.P.B. make no representations about the suitability of
10  * this software for any purpose.  It is provided "as is" without
11  * express or implied warranty.
12  */
13
14 #include "com_err.h"
15 #include "error_table.h"
16 #include "internal.h"
17
18 static const char char_set[] =
19         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
20
21 static char buf[6];
22
23 const char * error_table_name(num)
24     errcode_t num;
25 {
26     int ch;
27     int i;
28     char *p;
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 &= 077777777L;
35     /* num = 00 000 000 aaa aaa bbb bbb ccc ccc ddd ddd */
36     for (i = 4; i >= 0; i--) {
37         ch = (int)((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(buf);
43 }