Exemple #1
0
static void freeFiletriggers(/*@only@*/ miRE matches_any,
		int nft, /*@only@*/ struct filetrigger * list)
	/*@modifies matches_any, list @*/
{
    int i;

    matches_any = mireFree(matches_any);
    for (i = 0; i < nft; i++) {
	list[i].mire = mireFree(list[i].mire);
	list[i].name = _free(list[i].name);
    }
    list = _free(list);
}
Exemple #2
0
static rpmRC tagValidate(Spec spec, rpmTag tag, const char * value)
	/*@*/
{
    const char * tagN = tagName(tag);
    const char * pattern = rpmExpand("%{?pattern_", tagN, "}", NULL);
    rpmRC ec = RPMRC_OK;

    if (pattern && *pattern) {
	miRE mire;
	int xx;

	mire = mireNew(RPMMIRE_REGEX, tag);
	xx = mireSetCOptions(mire, RPMMIRE_REGEX, 0, 0, NULL);
	if (!xx)
	    xx = mireRegcomp(mire, pattern);
	if (!xx)
	    xx = mireRegexec(mire, value, strlen(value));
	if (!xx)
	    ec = RPMRC_OK;
	else {
	    rpmlog(RPMLOG_ERR, _("line %d: invalid tag value(\"%s\") %s: %s\n"),
		    spec->lineNum, pattern, tagN, spec->line);
	    ec = RPMRC_FAIL;
	}

	mire = mireFree(mire);
    }

    pattern = _free(pattern);

    return ec;
}
Exemple #3
0
static void compileFiletriggersRegexp(/*@only@*/ char * raw, miRE mire)
	/*@modifies raw, mire @*/
{
    static int options = REG_NOSUB | REG_EXTENDED | REG_NEWLINE;
    int xx;

    xx = mireSetCOptions(mire, RPMMIRE_REGEX, 0, options, NULL);

    if (mireRegcomp(mire, raw) != 0) {
	rpmlog(RPMLOG_ERR, "failed to compile filetrigger filter: %s\n", raw);
	mire = mireFree(mire);
    }
    raw = _free(raw);
}
Exemple #4
0
poptContext
rpmcliFini(poptContext optCon)
	/*@globals keyids @*/
	/*@modifies keyids @*/
{
/*@-nestedextern@*/
    extern rpmioPool _rpmjsPool;
    extern rpmioPool _rpmrubyPool;
    extern rpmioPool _headerPool;
    extern rpmioPool _rpmmiPool;
    extern rpmioPool _dbiPool;
    extern rpmioPool _rpmdbPool;
    extern rpmioPool _rpmrepoPool;
    extern rpmioPool _rpmwfPool;
    extern const char * evr_tuple_order;
    extern const char * evr_tuple_match;
    extern miRE evr_tuple_mire;
/*@=nestedextern@*/

/*@-mods@*/
    evr_tuple_order = _free(evr_tuple_order);
    evr_tuple_match = _free(evr_tuple_match);
    evr_tuple_mire = mireFree(evr_tuple_mire);

/*@-onlyunqglobaltrans@*/
    /* Realease (and dereference) embedded interpreter global objects first. */
    _rpmjsI = rpmjsFree(_rpmjsI);
    _rpmjsPool = rpmioFreePool(_rpmjsPool);
    _rpmrubyI = rpmrubyFree(_rpmrubyI);
    _rpmrubyPool = rpmioFreePool(_rpmrubyPool);

    _rpmgiPool = rpmioFreePool(_rpmgiPool);
    _rpmmiPool = rpmioFreePool(_rpmmiPool);

    _psmPool = rpmioFreePool(_psmPool);
    _rpmtsiPool = rpmioFreePool(_rpmtsiPool);

    _rpmtsPool = rpmioFreePool(_rpmtsPool);
    _rpmtePool = rpmioFreePool(_rpmtePool);
    _rpmpsPool = rpmioFreePool(_rpmpsPool);

    _rpmfcPool = rpmioFreePool(_rpmfcPool);

    rpmnsClean();

    _rpmdsPool = rpmioFreePool(_rpmdsPool);
    _rpmfiPool = rpmioFreePool(_rpmfiPool);

    _rpmwfPool = rpmioFreePool(_rpmwfPool);
    _rpmdbPool = rpmioFreePool(_rpmdbPool);
    _rpmrepoPool = rpmioFreePool(_rpmrepoPool);
    _dbiPool = rpmioFreePool(_dbiPool);
    _headerPool = rpmioFreePool(_headerPool);
/*@=onlyunqglobaltrans@*/
/*@=mods@*/

    /* XXX this should be done in the rpmioClean() wrapper. */
    /* keeps memory leak checkers quiet */
    rpmFreeMacros(NULL);
/*@i@*/	rpmFreeMacros(rpmCLIMacroContext);

    rpmFreeRpmrc();	/* XXX mireFreeAll(platpat) before rpmioFreePool. */

    rpmFreeFilesystems();
/*@i@*/	rpmcliTargets = _free(rpmcliTargets);

    keyids = _free(keyids);

    tagClean(NULL);	/* Free header tag indices. */

    rpmioClean();	/* XXX rpmioFreePool()'s after everything else. */

    optCon = poptFreeContext(optCon);

#if defined(HAVE_MCHECK_H) && defined(HAVE_MTRACE)
    /*@-noeffect@*/
    muntrace();   /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */
    /*@=noeffect@*/
#endif

/*@-globstate@*/
    return NULL;
/*@=globstate@*/
}