et_name.c revision 65f0aab98b20b5994a726ab90d355248bcddfffd
1d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton/*
2d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * Copyright 1987 by MIT Student Information Processing Board
3d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton *
4d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * Permission to use, copy, modify, and distribute this software and
5d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * its documentation for any purpose is hereby granted, provided that
6d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
7d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * advertising or publicity pertaining to distribution of the software
8d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * without specific, written prior permission.  M.I.T. and the
9d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * M.I.T. S.I.P.B. make no representations about the suitability of
10d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * this software for any purpose.  It is provided "as is" without
11d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton * express or implied warranty.
12d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton */
13d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton
14d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton#include "com_err.h"
15d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton#include "error_table.h"
16d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton#include "internal.h"
17d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton
18d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Claytonstatic const char char_set[] =
19d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
20d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton
21d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Claytonstatic char buf[6];
22d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton
23d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Claytonconst char * error_table_name(num)
24d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    errcode_t num;
25d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton{
26d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    int ch;
27d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    int i;
28d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    char *p;
29d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton
30d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    /* num = aa aaa abb bbb bcc ccc cdd ddd d?? ??? ??? */
31d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    p = buf;
32d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    num >>= ERRCODE_RANGE;
33d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    /* num = ?? ??? ??? aaa aaa bbb bbb ccc ccc ddd ddd */
34d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    num &= 077777777L;
35d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    /* num = 00 000 000 aaa aaa bbb bbb ccc ccc ddd ddd */
36d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    for (i = 4; i >= 0; i--) {
37d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton	ch = (int)((num >> BITS_PER_CHAR * i) & ((1 << BITS_PER_CHAR) - 1));
38d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton	if (ch != 0)
39d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton	    *p++ = char_set[ch-1];
40d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    }
41d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    *p = '\0';
42d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton    return(buf);
43d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton}
44d84cc042a09c9aa7f89f8b032ba3a346a25d9447Greg Clayton