]> andersk Git - moira.git/blob - util/et/error_message.c
Command line printer manipulation client, and build goo.
[moira.git] / util / et / error_message.c
1 /*
2  * $Header$
3  * $Source$
4  * $Locker$
5  *
6  * Copyright 1987 by the Student Information Processing Board
7  * of the Massachusetts Institute of Technology
8  *
9  * For copyright info, see "mit-sipb-copyright.h".
10  */
11
12 #include <stdio.h>
13 #include <string.h>
14 #include "error_table.h"
15 #include "mit-sipb-copyright.h"
16
17 static const char rcsid[] = "$Id$";
18 static const char copyright[] =
19     "Copyright 1986, 1987, 1988 by the Student Information Processing Board\nand the department of Information Systems\nof the Massachusetts Institute of Technology";
20
21 static char buffer[25];
22
23 struct et_list *_et_list = NULL;
24
25 const char *error_message(long code)
26 {
27     int offset;
28     struct et_list *et;
29     int table_num;
30     int started = 0;
31     char *cp;
32
33     offset = code & ((1<<ERRCODE_RANGE)-1);
34     table_num = code - offset;
35     if (!table_num)
36         return strerror(offset);
37     for (et = _et_list; et; et = et->next) {
38         if (et->table->base == table_num) {
39             /* This is the right table */
40             if (et->table->n_msgs <= offset)
41                 goto oops;
42             return(et->table->msgs[offset]);
43         }
44     }
45 oops:
46     strcpy (buffer, "Unknown code ");
47     if (table_num) {
48         strcat (buffer, error_table_name (table_num));
49         strcat (buffer, " ");
50     }
51     for (cp = buffer; *cp; cp++)
52         ;
53     if (offset >= 100) {
54         *cp++ = '0' + offset / 100;
55         offset %= 100;
56         started++;
57     }
58     if (started || offset >= 10) {
59         *cp++ = '0' + offset / 10;
60         offset %= 10;
61     }
62     *cp++ = '0' + offset;
63     *cp = '\0';
64     return(buffer);
65 }
This page took 0.0385 seconds and 5 git commands to generate.