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