xref: /aosp_15_r20/external/e2fsprogs/lib/ss/error.c (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
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