static int rpm_undefine(lua_State *L) /*@globals rpmGlobalMacroContext, internalState @*/ /*@modifies L, rpmGlobalMacroContext, internalState @*/ { const char *str = luaL_checkstring(L, 1); (void) rpmUndefineMacro(NULL, str); return 0; }
static void rpmcliAllArgCallback(poptContext con, /*@unused@*/ enum poptCallbackReason reason, const struct poptOption * opt, const char * arg, /*@unused@*/ const void * data) /*@globals pgpDigVSFlags, rpmcliTargets, rpmcliQueryFlags, rpmCLIMacroContext, rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies con, pgpDigVSFlags, rpmcliTargets, rpmcliQueryFlags, rpmCLIMacroContext, rpmGlobalMacroContext, fileSystem, internalState @*/ { /* XXX avoid accidental collisions with POPT_BIT_SET for flags */ if (opt->arg == NULL) switch (opt->val) { case POPT_PREDEFINE: (void) rpmDefineMacro(NULL, arg, RMIL_CMDLINE); break; case 'D': { char *s, *t; /* XXX Convert '-' in macro name to underscore, skip leading %. */ s = t = xstrdup(arg); while (*t && !xisspace(*t)) { if (*t == '-') *t = '_'; t++; } t = s; if (*t == '%') t++; rpmcliConfigured(); /*@-type@*/ /* XXX adding macro to global context isn't Right Thing Todo. */ (void) rpmDefineMacro(NULL, t, RMIL_CMDLINE); (void) rpmDefineMacro(rpmCLIMacroContext, t, RMIL_CMDLINE); /*@=type@*/ s = _free(s); } break; case POPT_UNDEFINE: { char *s, *t; /* XXX Convert '-' in macro name to underscore, skip leading %. */ s = t = xstrdup(arg); while (*t && !xisspace(*t)) { if (*t == '-') *t = '_'; t++; } t = s; if (*t == '%') t++; /*@-type@*/ rpmcliConfigured(); (void) rpmUndefineMacro(NULL, t); (void) rpmUndefineMacro(rpmCLIMacroContext, t); /*@=type@*/ s = _free(s); } break; case 'E': assert(arg != NULL); rpmcliConfigured(); { const char * val = rpmcliEvalSlurp(arg); size_t val_len = fwrite(val, strlen(val), 1, stdout); if (val_len > 0 && val[val_len - 1] != '\n') fprintf(stdout, "\n"); val = _free(val); } break; case POPT_SHOWVERSION: printVersion(stdout); /*@i@*/ con = rpmcliFini(con); exit(EXIT_SUCCESS); /*@notreached@*/ break; case POPT_SHOWRC: rpmcliConfigured(); (void) rpmShowRC(stdout); /*@i@*/ con = rpmcliFini(con); exit(EXIT_SUCCESS); /*@notreached@*/ break; case POPT_QUERYTAGS: rpmDisplayQueryTags(NULL, NULL, NULL); /*@i@*/ con = rpmcliFini(con); exit(EXIT_SUCCESS); /*@notreached@*/ break; case RPMCLI_POPT_NODIGEST: rpmcliQueryFlags |= VERIFY_DIGEST; pgpDigVSFlags |= _RPMVSF_NODIGESTS; break; case RPMCLI_POPT_NOSIGNATURE: rpmcliQueryFlags |= VERIFY_SIGNATURE; pgpDigVSFlags |= _RPMVSF_NOSIGNATURES; break; case RPMCLI_POPT_NOHDRCHK: rpmcliQueryFlags |= VERIFY_HDRCHK; pgpDigVSFlags |= RPMVSF_NOHDRCHK; break; case RPMCLI_POPT_TARGETPLATFORM: if (rpmcliTargets == NULL) rpmcliTargets = xstrdup(arg); else { /*@-modobserver @*/ char * t = (char *) rpmcliTargets; size_t nb = strlen(t) + (sizeof(",")-1) + strlen(arg) + 1; /*@i@*/ t = xrealloc(t, nb); (void) stpcpy( stpcpy(t, ","), arg); rpmcliTargets = t; /*@=modobserver @*/ } break; } }