tadd vtlognames - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 52006c82447f374388721bc8eeadd5d463cb95b2 (DIR) parent 6a4599d779d306a292f2437f99b5d7df6a41b313 (HTM) 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(-) --- (DIR) 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) {