Why not have a standard macro for this?
#define STR_STRLEN_PAIR(STR) \
STR, (sizeof (STR) - 1)
Then these cases become either:
{ STR_STRLEN_PAIR("debug") }, /* 'd' */
{ NULL, 0 }, /* 'e' */
{ NULL, 0 }, /* 'f' */
{ STR_STRLEN_PAIR("gnu.linkonce.wi.") }, /* 'g' */
{ NULL, 0 }, /* 'h' */
{ NULL, 0 }, /* 'i' */
{ NULL, 0 }, /* 'j' */
If you want to keep looking at the string for NULLness,
or ...:
{ STR_STRLEN_PAIR("debug") }, /* 'd' */
{ STR_STRLEN_PAIR("") }, /* 'd' */
{ STR_STRLEN_PAIR("") }, /* 'e' */
{ STR_STRLEN_PAIR("") }, /* 'f' */
{ STR_STRLEN_PAIR("gnu.linkonce.wi.") }, /* 'g' */
{ STR_STRLEN_PAIR("") }, /* 'h' */
{ STR_STRLEN_PAIR("") }, /* 'i' */
{ STR_STRLEN_PAIR("") }, /* 'j' */
... if you just look at the len.
Just a thought, I am not suggesting to go all over
the code base to adapt to something like this, but we
could make new code use something like this.