tadd vtlognames - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 52006c82447f374388721bc8eeadd5d463cb95b2 | |
parent 6a4599d779d306a292f2437f99b5d7df6a41b313 | |
Author: rsc <devnull@localhost> | |
Date: Thu, 12 May 2005 14:03:57 +0000 | |
add vtlognames | |
Diffstat: | |
M src/libventi/log.c | 35 +++++++++++++++++++++++++++++… | |
1 file changed, 35 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/src/libventi/log.c b/src/libventi/log.c | |
t@@ -30,6 +30,41 @@ hash(char *s) | |
return h; | |
} | |
+char** | |
+vtlognames(int *pn) | |
+{ | |
+ int i, nname, size; | |
+ VtLog *l; | |
+ char **s, *a, *e; | |
+ | |
+ qlock(&vl.lk); | |
+ size = 0; | |
+ nname = 0; | |
+ for(i=0; i<nelem(vl.hash); i++) | |
+ for(l=vl.hash[i]; l; l=l->next){ | |
+ nname++; | |
+ size += strlen(l->name)+1; | |
+ } | |
+ | |
+ s = vtmalloc(nname*sizeof(char*)+size); | |
+ a = (char*)(s+nname); | |
+ e = (char*)s+nname*sizeof(char*)+size; | |
+ | |
+ size = 0; | |
+ nname = 0; | |
+ for(i=0; i<nelem(vl.hash); i++) | |
+ for(l=vl.hash[i]; l; l=l->next){ | |
+ strcpy(a, l->name); | |
+ s[nname++] = a; | |
+ a += strlen(a)+1; | |
+ } | |
+ *pn = nname; | |
+ assert(a == e); | |
+ qunlock(&vl.lk); | |
+ | |
+ return s; | |
+} | |
+ | |
VtLog* | |
vtlogopen(char *name, uint size) | |
{ |