1 /*
2  *   utils.c
3  *
4  *   Oliver Fromme  <olli@fromme.com>
5  *   @(#)$Id: utils.c,v 1.3 1998/02/09 17:15:48 inof Exp $
6  */
7 
8 static const char cvsid[]
9     = "@(#)$Id: utils.c,v 1.3 1998/02/09 17:15:48 inof Exp $";
10 
11 #include <stdio.h>
12 #include <string.h>
13 #include <errno.h>
14 
15 #include "utils.h"
16 
17 char *me;
18 
out_of_memory(void)19 void out_of_memory (void)
20 {
21 	fprintf (stderr, "%s: Out of memory.\n", me);
22 	exit (1);
23 }
24 
tmalloc(size_t size)25 void *tmalloc (size_t size)
26 {
27 	void *mem;
28 
29 	if (!(mem = malloc(size)))
30 		out_of_memory();
31 	return (mem);
32 }
33 
34 #if !defined(__FreeBSD__)
strndup(const char * src,int num)35 char *strndup (const char *src, int num)
36 {
37 	char *dst;
38 
39 	if (!(dst = (char *) malloc(num+1)))
40 		return (NULL);
41 	dst[num] = '\0';
42 	return (strncpy(dst, src, num));
43 }
44 #endif
45 
justify(char * str)46 char *justify (char *str)
47 {
48 	int si = 0, di = 0, havespc = TRUE;
49 	char c;
50 
51 	if (!str)
52 		return (str);
53 	/*LINTED*/
54 	while ((c = str[si])) {
55 		if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
56 			if (havespc) {
57 				si++;
58 				continue;
59 			}
60 			else
61 				havespc = TRUE;
62 		else
63 			havespc = FALSE;
64 		str[di++] = str[si++];
65 	}
66 	if (di && havespc)
67 		di --;
68 	str[di] = '\0';
69 	return (str);
70 }
71 
serror(void)72 char *serror (void)
73 {
74 	static char buf[32];
75 	char *errstr;
76 
77 	if (!(errstr = strerror(errno))) {
78 		sprintf (buf, "Unknown error #%d.", errno);
79 		return buf;
80 	}
81 	return errstr;
82 }
83 
84 char *me;
85 
die(const char * func,const char * file)86 void die (const char *func, const char *file)
87 {
88 	fprintf (stderr, "%s: ", me);
89 	if (func)
90 		fprintf (stderr, "%s(%s): ", func, file?file:"");
91 	else if (file)
92 		fprintf (stderr, "%s: ", file);
93 	fprintf (stderr, "%s\n", serror());
94 	exit (1);
95 }
96 
utils_init(const char * argv0)97 void utils_init (const char *argv0)
98 {
99 	if (argv0)
100 		(me = strrchr(argv0, '/')) ? me++ : (me = (char *) argv0);
101 	else
102 		me = "";
103 }
104 
105 /* EOF */
106