As for "da": dstring append. Thus, dasprintf is "sprintf to a dstring, but append it to what's already there". If you mean dag_t, that's "directed acyclic graph".
And the code itself: heh, close. Not linked lists, but sets. The sets are implemented via a bit array (but that's a private implementation detail


C's for-loops would have to be one of my favorite features of C. Any initializer, any test, any iterator. Using functions like I did in that code means I can change how sets are implemented and not worry about any code that uses them.
Alloca: hmm, well, I can think of a time: you're deep in the quake renderer somewhere and need a little bit of (variable sized) data. Since you're in a few loops deep, you don't want to use malloc (and friends). Hunk_TempAlloc is out of the question for some reason (does any engine other than QF have that one? I don't remember if I wrote it). alloca is your friend here: grab a chunk off the stack (very fast operation: two instructions on x86: sub esp,X; mov var,esp), work on the data, return from the function without worrying about freeing the code (exact same cost as having not used alloca: mov esp,ebp). Look in QF's libs/video/renderer/gl/gl_sky_clip.c for an example: very inner-loop. Or libs/video/renderer/r_light.c
For tool code: generally better to not use alloca. Image loaders: if you're in an inner-loop, you're doing it wrong
