static void print_membership(tOptions * pOpts, tOptDesc * pOD) { char const * pz; uintptr_t val = 1; printf(zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME, (int)(uintptr_t)(pOD->optCookie)); pOD->optCookie = (void*)(uintptr_t)~0UL; (*(pOD->pOptProc))(OPTPROC_RETURN_VALNAME, pOD); /* * We are building the typeset list. The list returned starts with * 'none + ' for use by option saving stuff. We must ignore that. */ pz = pOD->optArg.argString + 7; while (*pz != NUL) { printf("typeset -x -i %s_", pOD->pz_NAME); while (IS_PLUS_N_SPACE_CHAR(*pz)) pz++; for (;;) { int ch = *(pz++); if (IS_LOWER_CASE_CHAR(ch)) fputc(toupper(ch), stdout); else if (IS_UPPER_CASE_CHAR(ch)) fputc(ch, stdout); else if (IS_PLUS_N_SPACE_CHAR(ch)) goto name_done; else if (ch == NUL) { pz--; goto name_done; } else fputc('_', stdout); } name_done:; printf("=%1$lu # 0x%1$lX\n", (unsigned long)val); val <<= 1; } AGFREE(pOD->optArg.argString); pOD->optArg.argString = NULL; pOD->fOptState &= ~OPTST_ALLOC_ARG; }
static void print_membership(tOptions * pOpts, tOptDesc * pOD) { char const * svstr = pOD->optArg.argString; char const * pz; uintptr_t val = 1; printf(zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME, (int)(uintptr_t)(pOD->optCookie)); pOD->optCookie = VOIDP(~0UL); (*(pOD->pOptProc))(OPTPROC_RETURN_VALNAME, pOD); pz = pOD->optArg.argString; while (*pz != NUL) { printf("readonly %s_", pOD->pz_NAME); pz = SPN_PLUS_N_SPACE_CHARS(pz); for (;;) { int ch = *(pz++); if (IS_LOWER_CASE_CHAR(ch)) fputc(toupper(ch), stdout); else if (IS_UPPER_CASE_CHAR(ch)) fputc(ch, stdout); else if (IS_PLUS_N_SPACE_CHAR(ch)) goto name_done; else if (ch == NUL) { pz--; goto name_done; } else fputc('_', stdout); } name_done:; printf(SHOW_VAL_FMT, (unsigned long)val); val <<= 1; } AGFREE(pOD->optArg.argString); pOD->optArg.argString = svstr; }