et_name.c revision a47b66ee09960a8bf00e72b431ec56d68e11a301
13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Copyright 1987 by MIT Student Information Processing Board
33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o *
43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * For copyright info, see mit-sipb-copyright.h.
53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
63839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
7a47b66ee09960a8bf00e72b431ec56d68e11a301Theodore Ts'o#include "com_err.h"
83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include "error_table.h"
93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include "mit-sipb-copyright.h"
103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include "internal.h"
113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ostatic const char char_set[] =
133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ostatic char buf[6];
163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
173839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oconst char * error_table_name(num)
18a47b66ee09960a8bf00e72b431ec56d68e11a301Theodore Ts'o    errcode_t num;
193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
203839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    int ch;
213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    int i;
223839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    char *p;
233839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    /* num = aa aaa abb bbb bcc ccc cdd ddd d?? ??? ??? */
253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    p = buf;
263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    num >>= ERRCODE_RANGE;
273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    /* num = ?? ??? ??? aaa aaa bbb bbb ccc ccc ddd ddd */
28a47b66ee09960a8bf00e72b431ec56d68e11a301Theodore Ts'o    num &= 077777777L;
293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    /* num = 00 000 000 aaa aaa bbb bbb ccc ccc ddd ddd */
303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    for (i = 4; i >= 0; i--) {
31a47b66ee09960a8bf00e72b431ec56d68e11a301Theodore Ts'o	ch = (int)((num >> BITS_PER_CHAR * i) & ((1 << BITS_PER_CHAR) - 1));
323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	if (ch != 0)
333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	    *p++ = char_set[ch-1];
343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    }
353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    *p = '\0';
363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o    return(buf);
373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
38