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