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