error.c revision a6ce1349539f866334ef3d5758bc2ee44a454acd
1/*
2 * Copyright 1987, 1988, 1989 by MIT Student Information Processing
3 * Board
4 *
5 * Permission to use, copy, modify, and distribute this software and
6 * its documentation for any purpose is hereby granted, provided that
7 * the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
8 * advertising or publicity pertaining to distribution of the software
9 * without specific, written prior permission.  M.I.T. and the
10 * M.I.T. S.I.P.B. make no representations about the suitability of
11 * this software for any purpose.  It is provided "as is" without
12 * express or implied warranty.
13 */
14
15#include <stdio.h>
16
17#include <com_err.h>
18#include "ss_internal.h"
19
20#include <stdarg.h>
21
22char * ss_name(sci_idx)
23    int sci_idx;
24{
25    register char *ret_val;
26    register ss_data *infop;
27
28    infop = ss_info(sci_idx);
29    if (infop->current_request == (char const *)NULL) {
30	ret_val = malloc((unsigned)
31			 (strlen(infop->subsystem_name)+1)
32			 * sizeof(char));
33	if (ret_val == (char *)NULL)
34	    return((char *)NULL);
35	strcpy(ret_val, infop->subsystem_name);
36	return(ret_val);
37    }
38    else {
39	register char *cp;
40	register char const *cp1;
41	ret_val = malloc((unsigned)sizeof(char) *
42			 (strlen(infop->subsystem_name)+
43			  strlen(infop->current_request)+
44			  4));
45	cp = ret_val;
46	cp1 = infop->subsystem_name;
47	while (*cp1)
48	    *cp++ = *cp1++;
49	*cp++ = ' ';
50	*cp++ = '(';
51	cp1 = infop->current_request;
52	while (*cp1)
53	    *cp++ = *cp1++;
54	*cp++ = ')';
55	*cp = '\0';
56	return(ret_val);
57    }
58}
59
60void ss_error (int sci_idx, long code, const char * fmt, ...)
61{
62    register char *whoami;
63    va_list pvar;
64
65    va_start (pvar, fmt);
66    whoami = ss_name (sci_idx);
67    com_err_va (whoami, code, fmt, pvar);
68    free (whoami);
69    va_end(pvar);
70}
71
72void ss_perror (sci_idx, code, msg) /* for compatibility */
73    int sci_idx;
74    long code;
75    char const *msg;
76{
77    ss_error (sci_idx, code, "%s", msg);
78}
79