10Sstevel@tonic-gate /* 2*2881Smp153739 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 3*2881Smp153739 * Use is subject to license terms. 40Sstevel@tonic-gate */ 50Sstevel@tonic-gate 60Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 70Sstevel@tonic-gate 80Sstevel@tonic-gate /* 90Sstevel@tonic-gate * Copyright 1987, 1988, 1989 by MIT Student Information Processing 100Sstevel@tonic-gate * Board 110Sstevel@tonic-gate * 120Sstevel@tonic-gate * For copyright information, see copyright.h. 130Sstevel@tonic-gate */ 140Sstevel@tonic-gate 150Sstevel@tonic-gate #include <stdio.h> 160Sstevel@tonic-gate 170Sstevel@tonic-gate #include "copyright.h" 180Sstevel@tonic-gate #include "com_err.h" 190Sstevel@tonic-gate #include "ss_internal.h" 200Sstevel@tonic-gate 210Sstevel@tonic-gate char * ss_name(sci_idx) 220Sstevel@tonic-gate int sci_idx; 230Sstevel@tonic-gate { 240Sstevel@tonic-gate register char *ret_val; 250Sstevel@tonic-gate register ss_data *infop; 260Sstevel@tonic-gate 270Sstevel@tonic-gate infop = ss_info(sci_idx); 280Sstevel@tonic-gate if (infop->current_request == (char const *)NULL) { 290Sstevel@tonic-gate ret_val = malloc((unsigned) 300Sstevel@tonic-gate (strlen(infop->subsystem_name)+1) 310Sstevel@tonic-gate * sizeof(char)); 320Sstevel@tonic-gate if (ret_val == (char *)NULL) 330Sstevel@tonic-gate return((char *)NULL); 340Sstevel@tonic-gate strcpy(ret_val, infop->subsystem_name); 350Sstevel@tonic-gate return(ret_val); 360Sstevel@tonic-gate } 370Sstevel@tonic-gate else { 380Sstevel@tonic-gate register char *cp; 390Sstevel@tonic-gate register char const *cp1; 400Sstevel@tonic-gate ret_val = malloc((unsigned)sizeof(char) * 410Sstevel@tonic-gate (strlen(infop->subsystem_name)+ 420Sstevel@tonic-gate strlen(infop->current_request)+ 430Sstevel@tonic-gate 4)); 440Sstevel@tonic-gate cp = ret_val; 450Sstevel@tonic-gate cp1 = infop->subsystem_name; 460Sstevel@tonic-gate while (*cp1) 470Sstevel@tonic-gate *cp++ = *cp1++; 480Sstevel@tonic-gate *cp++ = ' '; 490Sstevel@tonic-gate *cp++ = '('; 500Sstevel@tonic-gate cp1 = infop->current_request; 510Sstevel@tonic-gate while (*cp1) 520Sstevel@tonic-gate *cp++ = *cp1++; 530Sstevel@tonic-gate *cp++ = ')'; 540Sstevel@tonic-gate *cp = '\0'; 550Sstevel@tonic-gate return(ret_val); 560Sstevel@tonic-gate } 570Sstevel@tonic-gate } 580Sstevel@tonic-gate 590Sstevel@tonic-gate void ss_error (int sci_idx, long code, const char * fmt, ...) 600Sstevel@tonic-gate { 610Sstevel@tonic-gate register char *whoami; 620Sstevel@tonic-gate va_list pvar; 630Sstevel@tonic-gate va_start (pvar, fmt); 640Sstevel@tonic-gate whoami = ss_name (sci_idx); 650Sstevel@tonic-gate com_err_va (whoami, code, fmt, pvar); 660Sstevel@tonic-gate free (whoami); 670Sstevel@tonic-gate va_end(pvar); 680Sstevel@tonic-gate } 690Sstevel@tonic-gate 700Sstevel@tonic-gate void ss_perror (sci_idx, code, msg) /* for compatibility */ 710Sstevel@tonic-gate int sci_idx; 720Sstevel@tonic-gate long code; 730Sstevel@tonic-gate char const *msg; 740Sstevel@tonic-gate { 750Sstevel@tonic-gate ss_error (sci_idx, code, "%s", msg); 760Sstevel@tonic-gate } 77