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