xref: /illumos-gate/usr/src/lib/krb5/ss/error.c (revision c464e8d1c46f2eb4848495bcfccd020b8481787d)
1 /*
2  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 /*
7  * Copyright 1987, 1988, 1989 by MIT Student Information Processing
8  * Board
9  *
10  * For copyright information, see copyright.h.
11  */
12 
13 #include <stdio.h>
14 
15 #include "copyright.h"
16 #include "com_err.h"
17 #include "ss_internal.h"
18 
19 char * ss_name(sci_idx)
20     int sci_idx;
21 {
22     register char *ret_val;
23     register ss_data *infop;
24 
25     infop = ss_info(sci_idx);
26     if (infop->current_request == (char const *)NULL) {
27 	ret_val = malloc((unsigned)
28 			 (strlen(infop->subsystem_name)+1)
29 			 * sizeof(char));
30 	if (ret_val == (char *)NULL)
31 	    return((char *)NULL);
32 	strcpy(ret_val, infop->subsystem_name);
33 	return(ret_val);
34     }
35     else {
36 	register char *cp;
37 	register char const *cp1;
38 	ret_val = malloc((unsigned)sizeof(char) *
39 			 (strlen(infop->subsystem_name)+
40 			  strlen(infop->current_request)+
41 			  4));
42 	cp = ret_val;
43 	cp1 = infop->subsystem_name;
44 	while (*cp1)
45 	    *cp++ = *cp1++;
46 	*cp++ = ' ';
47 	*cp++ = '(';
48 	cp1 = infop->current_request;
49 	while (*cp1)
50 	    *cp++ = *cp1++;
51 	*cp++ = ')';
52 	*cp = '\0';
53 	return(ret_val);
54     }
55 }
56 
57 void ss_error (int sci_idx, long code, const char * fmt, ...)
58 {
59     register char *whoami;
60     va_list pvar;
61     va_start (pvar, fmt);
62     whoami = ss_name (sci_idx);
63     com_err_va (whoami, code, fmt, pvar);
64     free (whoami);
65     va_end(pvar);
66 }
67 
68 void ss_perror (sci_idx, code, msg) /* for compatibility */
69     int sci_idx;
70     long code;
71     char const *msg;
72 {
73     ss_error (sci_idx, code, "%s", msg);
74 }
75