xref: /plan9/sys/src/cmd/webfs/util.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier #include <bio.h>
4*9a747e4fSDavid du Colombier #include <ndb.h>
5*9a747e4fSDavid du Colombier #include <fcall.h>
6*9a747e4fSDavid du Colombier #include <thread.h>
7*9a747e4fSDavid du Colombier #include <9p.h>
8*9a747e4fSDavid du Colombier #include <ctype.h>
9*9a747e4fSDavid du Colombier #include "dat.h"
10*9a747e4fSDavid du Colombier #include "fns.h"
11*9a747e4fSDavid du Colombier 
12*9a747e4fSDavid du Colombier void*
erealloc(void * a,uint n)13*9a747e4fSDavid du Colombier erealloc(void *a, uint n)
14*9a747e4fSDavid du Colombier {
15*9a747e4fSDavid du Colombier 	a = realloc(a, n);
16*9a747e4fSDavid du Colombier 	if(a == nil)
17*9a747e4fSDavid du Colombier 		sysfatal("realloc %d: out of memory", n);
18*9a747e4fSDavid du Colombier 	setrealloctag(a, getcallerpc(&a));
19*9a747e4fSDavid du Colombier 	return a;
20*9a747e4fSDavid du Colombier }
21*9a747e4fSDavid du Colombier 
22*9a747e4fSDavid du Colombier void*
emalloc(uint n)23*9a747e4fSDavid du Colombier emalloc(uint n)
24*9a747e4fSDavid du Colombier {
25*9a747e4fSDavid du Colombier 	void *a;
26*9a747e4fSDavid du Colombier 
27*9a747e4fSDavid du Colombier 	a = mallocz(n, 1);
28*9a747e4fSDavid du Colombier 	if(a == nil)
29*9a747e4fSDavid du Colombier 		sysfatal("malloc %d: out of memory", n);
30*9a747e4fSDavid du Colombier 	setmalloctag(a, getcallerpc(&n));
31*9a747e4fSDavid du Colombier 	return a;
32*9a747e4fSDavid du Colombier }
33*9a747e4fSDavid du Colombier 
34*9a747e4fSDavid du Colombier char*
estrdup(char * s)35*9a747e4fSDavid du Colombier estrdup(char *s)
36*9a747e4fSDavid du Colombier {
37*9a747e4fSDavid du Colombier 	s = strdup(s);
38*9a747e4fSDavid du Colombier 	if(s == nil)
39*9a747e4fSDavid du Colombier 		sysfatal("strdup: out of memory");
40*9a747e4fSDavid du Colombier 	setmalloctag(s, getcallerpc(&s));
41*9a747e4fSDavid du Colombier 	return s;
42*9a747e4fSDavid du Colombier }
43*9a747e4fSDavid du Colombier 
44*9a747e4fSDavid du Colombier char*
estredup(char * s,char * e)45*9a747e4fSDavid du Colombier estredup(char *s, char *e)
46*9a747e4fSDavid du Colombier {
47*9a747e4fSDavid du Colombier 	char *t;
48*9a747e4fSDavid du Colombier 
49*9a747e4fSDavid du Colombier 	t = emalloc(e-s+1);
50*9a747e4fSDavid du Colombier 	memmove(t, s, e-s);
51*9a747e4fSDavid du Colombier 	t[e-s] = '\0';
52*9a747e4fSDavid du Colombier 	setmalloctag(t, getcallerpc(&s));
53*9a747e4fSDavid du Colombier 	return t;
54*9a747e4fSDavid du Colombier }
55*9a747e4fSDavid du Colombier 
56*9a747e4fSDavid du Colombier char*
estrmanydup(char * s,...)57*9a747e4fSDavid du Colombier estrmanydup(char *s, ...)
58*9a747e4fSDavid du Colombier {
59*9a747e4fSDavid du Colombier 	char *p, *t;
60*9a747e4fSDavid du Colombier 	int len;
61*9a747e4fSDavid du Colombier 	va_list arg;
62*9a747e4fSDavid du Colombier 
63*9a747e4fSDavid du Colombier 	len = strlen(s);
64*9a747e4fSDavid du Colombier 	va_start(arg, s);
65*9a747e4fSDavid du Colombier 	while((p = va_arg(arg, char*)) != nil)
66*9a747e4fSDavid du Colombier 		len += strlen(p);
67*9a747e4fSDavid du Colombier 	len++;
68*9a747e4fSDavid du Colombier 
69*9a747e4fSDavid du Colombier 	t = emalloc(len);
70*9a747e4fSDavid du Colombier 	strcpy(t, s);
71*9a747e4fSDavid du Colombier 	va_start(arg, s);
72*9a747e4fSDavid du Colombier 	while((p = va_arg(arg, char*)) != nil)
73*9a747e4fSDavid du Colombier 		strcat(t, p);
74*9a747e4fSDavid du Colombier 	return t;
75*9a747e4fSDavid du Colombier }
76*9a747e4fSDavid du Colombier 
77*9a747e4fSDavid du Colombier char*
strlower(char * s)78*9a747e4fSDavid du Colombier strlower(char *s)
79*9a747e4fSDavid du Colombier {
80*9a747e4fSDavid du Colombier 	char *t;
81*9a747e4fSDavid du Colombier 
82*9a747e4fSDavid du Colombier 	for(t=s; *t; t++)
83*9a747e4fSDavid du Colombier 		if('A' <= *t && *t <= 'Z')
84*9a747e4fSDavid du Colombier 			*t += 'a'-'A';
85*9a747e4fSDavid du Colombier 	return s;
86*9a747e4fSDavid du Colombier }
87