1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/*
* $Header: /mit/zephyr/repository/zephyr/lib/et/error_message.c,v 1.3 1995/06/30 22:01:49 ghudson Exp $
* $Source: /mit/zephyr/repository/zephyr/lib/et/error_message.c,v $
* $Locker: $
*
* Copyright 1987 by the Student Information Processing Board
* of the Massachusetts Institute of Technology
*
* For copyright info, see "mit-sipb-copyright.h".
*/
#include <sysdep.h>
#include "error_table.h"
#include "mit-sipb-copyright.h"
#include "com_err.h"
static const char rcsid[] =
"$Header: /mit/zephyr/repository/zephyr/lib/et/error_message.c,v 1.3 1995/06/30 22:01:49 ghudson Exp $";
static const char copyright[] =
"Copyright 1986, 1987, 1988 by the Student Information Processing Board\nand the department of Information Systems\nof the Massachusetts Institute of Technology";
char *error_table_name_r __P((int, char *));
struct et_list * _et_list = (struct et_list *) NULL;
const char * error_message (code)
long code;
{
static char buf[COM_ERR_BUF_LEN];
return(error_message_r(code, buf));
}
const char * error_message_r (code, buf)
long code;
char *buf;
{
int offset;
struct et_list *et;
int table_num;
int started = 0;
char *cp, namebuf[6];
offset = code & ((1<<ERRCODE_RANGE)-1);
table_num = code - offset;
if (!table_num)
return strerror(offset);
for (et = _et_list; et; et = et->next) {
if (et->table->base == table_num) {
/* This is the right table */
if (et->table->n_msgs <= offset)
break;
return(et->table->msgs[offset]);
}
}
strcpy (buf, "Unknown code ");
if (table_num) {
strcat (buf, error_table_name_r (table_num, namebuf));
strcat (buf, " ");
}
for (cp = buf; *cp; cp++)
;
if (offset >= 100) {
*cp++ = '0' + offset / 100;
offset %= 100;
started++;
}
if (started || offset >= 10) {
*cp++ = '0' + offset / 10;
offset %= 10;
}
*cp++ = '0' + offset;
*cp = '\0';
return(buf);
}
|