xref: /csrg-svn/usr.bin/gcore/util.c (revision 54086)
1*54086Smccanne /*-
2*54086Smccanne  * Copyright (c) 1992 Regents of the University of California.
3*54086Smccanne  * All rights reserved.
4*54086Smccanne  *
5*54086Smccanne  * This software was developed by the Computer Systems Engineering group
6*54086Smccanne  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7*54086Smccanne  * contributed to Berkeley.
8*54086Smccanne  *
9*54086Smccanne  * %sccs.include.redist.c%
10*54086Smccanne  */
11*54086Smccanne 
12*54086Smccanne #include <stdio.h>
13*54086Smccanne #ifdef __STDC__
14*54086Smccanne #include <stdlib.h>
15*54086Smccanne #endif
16*54086Smccanne #include <sys/types.h>
17*54086Smccanne #include <sys/time.h>
18*54086Smccanne #include <ctype.h>
19*54086Smccanne #include <varargs.h>
20*54086Smccanne #include <sys/file.h>
21*54086Smccanne #include <sys/stat.h>
22*54086Smccanne 
23*54086Smccanne static char *program_name;
24*54086Smccanne 
25*54086Smccanne static char *
stripdir(s)26*54086Smccanne stripdir(s)
27*54086Smccanne 	register char *s;
28*54086Smccanne {
29*54086Smccanne 	register char *cp;
30*54086Smccanne 	char *rindex();
31*54086Smccanne 
32*54086Smccanne 	cp = rindex(s, '/');
33*54086Smccanne 	return (cp != 0) ? cp + 1 : s;
34*54086Smccanne }
35*54086Smccanne 
setprog(cp)36*54086Smccanne setprog(cp)
37*54086Smccanne 	char *cp;
38*54086Smccanne {
39*54086Smccanne 	program_name = stripdir(cp);
40*54086Smccanne }
41*54086Smccanne 
42*54086Smccanne void
usage()43*54086Smccanne usage()
44*54086Smccanne {
45*54086Smccanne 	fprintf(stderr, "usage: %s [ -c core ] executable pid\n",
46*54086Smccanne 		program_name);
47*54086Smccanne 	exit(1);
48*54086Smccanne }
49*54086Smccanne 
50*54086Smccanne /* VARARGS */
51*54086Smccanne void
error(va_alist)52*54086Smccanne error(va_alist)
53*54086Smccanne 	va_dcl
54*54086Smccanne {
55*54086Smccanne 	register char *cp;
56*54086Smccanne 	va_list ap;
57*54086Smccanne 
58*54086Smccanne 	(void)fprintf(stderr, "%s: ", stripdir(program_name));
59*54086Smccanne 
60*54086Smccanne 	va_start(ap);
61*54086Smccanne 	cp = va_arg(ap, char *);
62*54086Smccanne 	(void)vfprintf(stderr, cp, ap);
63*54086Smccanne 	va_end(ap);
64*54086Smccanne 	if (*cp) {
65*54086Smccanne 		cp += strlen(cp);
66*54086Smccanne 		if (cp[-1] != '\n')
67*54086Smccanne 			(void)fputc('\n', stderr);
68*54086Smccanne 	}
69*54086Smccanne 	exit(1);
70*54086Smccanne 	/* NOTREACHED */
71*54086Smccanne }
72*54086Smccanne 
73*54086Smccanne /* VARARGS */
74*54086Smccanne void
warning(va_alist)75*54086Smccanne warning(va_alist)
76*54086Smccanne 	va_dcl
77*54086Smccanne {
78*54086Smccanne 	register char *cp;
79*54086Smccanne 	va_list ap;
80*54086Smccanne 
81*54086Smccanne 	(void)fprintf(stderr, "%s: warning: ", stripdir(program_name));
82*54086Smccanne 
83*54086Smccanne 	va_start(ap);
84*54086Smccanne 	cp = va_arg(ap, char *);
85*54086Smccanne 	(void)vfprintf(stderr, cp, ap);
86*54086Smccanne 	va_end(ap);
87*54086Smccanne 	if (*cp) {
88*54086Smccanne 		cp += strlen(cp);
89*54086Smccanne 		if (cp[-1] != '\n')
90*54086Smccanne 			(void)fputc('\n', stderr);
91*54086Smccanne 	}
92*54086Smccanne }
93