diff options
| author | Garrett Wollman <wollman@FreeBSD.org> | 1995-01-14 22:23:41 +0000 |
|---|---|---|
| committer | Garrett Wollman <wollman@FreeBSD.org> | 1995-01-14 22:23:41 +0000 |
| commit | af4d8ead38cac8e7026de67ff7ba3b744623c279 (patch) | |
| tree | 77542679c39d3d1f555f94fe8f357cc9d8a36be7 /lib/libcom_err/error_message.c | |
| parent | e7f8d55240ec1c16dd7d3c836c9922e4bb26b3ce (diff) | |
Notes
Diffstat (limited to 'lib/libcom_err/error_message.c')
| -rw-r--r-- | lib/libcom_err/error_message.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/libcom_err/error_message.c b/lib/libcom_err/error_message.c new file mode 100644 index 000000000000..99dab1e582c8 --- /dev/null +++ b/lib/libcom_err/error_message.c @@ -0,0 +1,71 @@ +/* + * $Header: error_message.c,v 1.2 89/01/25 09:08:57 shanzer Exp $ + * $Source: /paris/source/4.3/athena.lib/et.new/RCS/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 <stdio.h> +#include "error_table.h" +#include "mit-sipb-copyright.h" +#include "internal.h" + +static const char rcsid[] = + "$Header: error_message.c,v 1.2 89/01/25 09:08:57 shanzer 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"; + +static char buffer[25]; + +struct et_list * _et_list = (struct et_list *) NULL; + +const char * error_message (code) +long code; +{ + int offset; + struct et_list *et; + int table_num; + int started = 0; + char *cp; + + offset = code & ((1<<ERRCODE_RANGE)-1); + table_num = code - offset; + if (!table_num) { + if (offset < sys_nerr) + return(sys_errlist[offset]); + else + goto oops; + } + 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) + goto oops; + return(et->table->msgs[offset]); + } + } +oops: + strcpy (buffer, "Unknown code "); + if (table_num) { + strcat (buffer, error_table_name (table_num)); + strcat (buffer, " "); + } + for (cp = buffer; *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(buffer); +} |
