Add header block.
Rename all the functions, types and enums in the API to be consistent. Types are now of the form "sg_mem_stats"; functions of the form "sg_get_mem_stats"; enums of the form "SG_PROCESS_STATE_RUNNING". (The old get_proc_snapshot follows the usual calling convention now.) Make internal functions static where possible. Rename non-static internal functions to have an sg_ prefix so they don't collide with those from other libraries. In particular, strlcpy and strlcat are now called sg_strlcpy and sg_strlcat and are always included. Fix saidar and statgrab to use the new API.
Fix the strict-aliasing problem in a clean, sensible way that actually works. As a bonus, we now get a "value computed is not used" warning from GCC if we don't check the return value of VECTOR_RESIZE. (This is dubiously a bonus when it's being resized to 0, but it's not going to hurt to check even then -- we might support destructors failing in the future.)
Fix the strict-aliasing warnings. This is even uglier than the previous code, since it pushes a test for a sentinel value into the VECTOR_RESIZE macro. I'm pretty certain that the pointer-to-static-used-as-sentinel is my own invention. I'm not entirely convinced that it's a good idea, but I can't see anything technically wrong with it...
Deal with vectors as char ** rather than void **, so we can do pointer arithmetic without Sun cc complaining.
Add a macro for declaring static vectors too.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.