1*7f2fe78bSCy Schubert /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2*7f2fe78bSCy Schubert /*
3*7f2fe78bSCy Schubert * Copyright 2007 Massachusetts Institute of Technology.
4*7f2fe78bSCy Schubert * All Rights Reserved.
5*7f2fe78bSCy Schubert *
6*7f2fe78bSCy Schubert * Export of this software from the United States of America may
7*7f2fe78bSCy Schubert * require a specific license from the United States Government.
8*7f2fe78bSCy Schubert * It is the responsibility of any person or organization contemplating
9*7f2fe78bSCy Schubert * export to obtain such a license before exporting.
10*7f2fe78bSCy Schubert *
11*7f2fe78bSCy Schubert * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
12*7f2fe78bSCy Schubert * distribute this software and its documentation for any purpose and
13*7f2fe78bSCy Schubert * without fee is hereby granted, provided that the above copyright
14*7f2fe78bSCy Schubert * notice appear in all copies and that both that copyright notice and
15*7f2fe78bSCy Schubert * this permission notice appear in supporting documentation, and that
16*7f2fe78bSCy Schubert * the name of M.I.T. not be used in advertising or publicity pertaining
17*7f2fe78bSCy Schubert * to distribution of the software without specific, written prior
18*7f2fe78bSCy Schubert * permission. Furthermore if you modify this software you must label
19*7f2fe78bSCy Schubert * your software as modified software and not distribute it in such a
20*7f2fe78bSCy Schubert * fashion that it might be confused with the original M.I.T. software.
21*7f2fe78bSCy Schubert * M.I.T. makes no representations about the suitability of
22*7f2fe78bSCy Schubert * this software for any purpose. It is provided "as is" without express
23*7f2fe78bSCy Schubert * or implied warranty.
24*7f2fe78bSCy Schubert */
25*7f2fe78bSCy Schubert /*
26*7f2fe78bSCy Schubert * Copyright 1987, 1988, 1989 by MIT Student Information Processing
27*7f2fe78bSCy Schubert * Board
28*7f2fe78bSCy Schubert *
29*7f2fe78bSCy Schubert * For copyright information, see copyright.h.
30*7f2fe78bSCy Schubert */
31*7f2fe78bSCy Schubert
32*7f2fe78bSCy Schubert #include "ss_internal.h"
33*7f2fe78bSCy Schubert #include "com_err.h"
34*7f2fe78bSCy Schubert #include "copyright.h"
35*7f2fe78bSCy Schubert
ss_name(sci_idx)36*7f2fe78bSCy Schubert char * ss_name(sci_idx)
37*7f2fe78bSCy Schubert int sci_idx;
38*7f2fe78bSCy Schubert {
39*7f2fe78bSCy Schubert ss_data *infop;
40*7f2fe78bSCy Schubert
41*7f2fe78bSCy Schubert infop = ss_info(sci_idx);
42*7f2fe78bSCy Schubert if (infop->current_request == (char const *)NULL) {
43*7f2fe78bSCy Schubert return strdup(infop->subsystem_name);
44*7f2fe78bSCy Schubert } else {
45*7f2fe78bSCy Schubert char *ret_val;
46*7f2fe78bSCy Schubert if (asprintf(&ret_val, "%s (%s)",
47*7f2fe78bSCy Schubert infop->subsystem_name, infop->current_request) < 0)
48*7f2fe78bSCy Schubert return NULL;
49*7f2fe78bSCy Schubert return ret_val;
50*7f2fe78bSCy Schubert }
51*7f2fe78bSCy Schubert }
52*7f2fe78bSCy Schubert
ss_error(int sci_idx,long code,const char * fmt,...)53*7f2fe78bSCy Schubert void ss_error (int sci_idx, long code, const char * fmt, ...)
54*7f2fe78bSCy Schubert {
55*7f2fe78bSCy Schubert char *whoami;
56*7f2fe78bSCy Schubert va_list pvar;
57*7f2fe78bSCy Schubert va_start (pvar, fmt);
58*7f2fe78bSCy Schubert whoami = ss_name (sci_idx);
59*7f2fe78bSCy Schubert com_err_va (whoami, code, fmt, pvar);
60*7f2fe78bSCy Schubert free (whoami);
61*7f2fe78bSCy Schubert va_end(pvar);
62*7f2fe78bSCy Schubert }
63*7f2fe78bSCy Schubert
ss_perror(sci_idx,code,msg)64*7f2fe78bSCy Schubert void ss_perror (sci_idx, code, msg) /* for compatibility */
65*7f2fe78bSCy Schubert int sci_idx;
66*7f2fe78bSCy Schubert long code;
67*7f2fe78bSCy Schubert char const *msg;
68*7f2fe78bSCy Schubert {
69*7f2fe78bSCy Schubert ss_error (sci_idx, code, "%s", msg);
70*7f2fe78bSCy Schubert }
71