76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Copyright 1987, 1988, 1989 by MIT Student Information Processing
 | |
|  * Board
 | |
|  *
 | |
|  * Permission to use, copy, modify, and distribute this software and
 | |
|  * its documentation for any purpose is hereby granted, provided that
 | |
|  * the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
 | |
|  * advertising or publicity pertaining to distribution of the software
 | |
|  * without specific, written prior permission.  M.I.T. and the
 | |
|  * M.I.T. S.I.P.B. make no representations about the suitability of
 | |
|  * this software for any purpose.  It is provided "as is" without
 | |
|  * express or implied warranty.
 | |
|  */
 | |
| 
 | |
| #include "config.h"
 | |
| #include <stdio.h>
 | |
| 
 | |
| #include "et/com_err.h"
 | |
| #include "ss_internal.h"
 | |
| 
 | |
| #include <stdarg.h>
 | |
| 
 | |
| char *ss_name(int sci_idx)
 | |
| {
 | |
|     register char *ret_val;
 | |
|     register ss_data *infop;
 | |
| 
 | |
|     infop = ss_info(sci_idx);
 | |
|     if (infop->current_request == (char const *)NULL) {
 | |
| 	ret_val = malloc((unsigned)
 | |
| 			 (strlen(infop->subsystem_name)+1)
 | |
| 			 * sizeof(char));
 | |
| 	if (ret_val == (char *)NULL)
 | |
| 	    return((char *)NULL);
 | |
| 	strcpy(ret_val, infop->subsystem_name);
 | |
| 	return(ret_val);
 | |
|     }
 | |
|     else {
 | |
| 	register char *cp;
 | |
| 	register char const *cp1;
 | |
| 	ret_val = malloc((unsigned)sizeof(char) *
 | |
| 			 (strlen(infop->subsystem_name)+
 | |
| 			  strlen(infop->current_request)+
 | |
| 			  4));
 | |
| 	cp = ret_val;
 | |
| 	cp1 = infop->subsystem_name;
 | |
| 	while (*cp1)
 | |
| 	    *cp++ = *cp1++;
 | |
| 	*cp++ = ' ';
 | |
| 	*cp++ = '(';
 | |
| 	cp1 = infop->current_request;
 | |
| 	while (*cp1)
 | |
| 	    *cp++ = *cp1++;
 | |
| 	*cp++ = ')';
 | |
| 	*cp = '\0';
 | |
| 	return(ret_val);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void ss_error (int sci_idx, long code, const char * fmt, ...)
 | |
| {
 | |
|     register char *whoami;
 | |
|     va_list pvar;
 | |
| 
 | |
|     va_start (pvar, fmt);
 | |
|     whoami = ss_name (sci_idx);
 | |
|     com_err_va (whoami, code, fmt, pvar);
 | |
|     free (whoami);
 | |
|     va_end(pvar);
 | |
| }
 | |
| 
 | |
| void ss_perror(int sci_idx, long code, char const *msg) /* for compatibility */
 | |
| {
 | |
|     ss_error (sci_idx, code, "%s", msg);
 | |
| }
 |