> > > @@ -162,6 +162,7 @@ > > > WHERE const char *ReleaseDate; > > > > > > WHERE HASH *Groups; > > > +WHERE HASH *Labels; > > > > A bit off topic, what do people think of the `WHERE` macro? To me, it > > only makes tools like cscope confused and doesn't improve readability, I > > would really love to get rid of them at some point. > > No objection. IIRC this is an old construct for supporting K&R and ANSI > in the same code. I'm not sure we need it anymore.
I think it's just a trick to declare these variables as extern but in main.c. I believe most of these globals are touched only once in init.c and then only in their respective source files. > > > > +static void label_ref_dec(char *label) > > > +{ > > > + uintptr_t count; > > > > Why uintptr_t and not int or unsigned? > > Because int and void* can't be inter-typecast on platforms where > pointers are 64-bit and ints are 32 (LP64). uintptr_t is actually the > correct standard type for an int that will be cast to pointer or vice > versa. Interesting! Thanks for the explanation.