Commit Diff


commit - 6a4599d779d306a292f2437f99b5d7df6a41b313
commit + 52006c82447f374388721bc8eeadd5d463cb95b2
blob - 511a7f2a672859c2cfc0350af391b8088692edb9
blob + 02f3aa390c0d9ad9a57f2bdd2c7e26f43376f237
--- src/libventi/log.c
+++ src/libventi/log.c
@@ -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)
 {