コード例 #1
0
static int test_str(struct event_format *event,
		    struct filter_arg *arg, struct pevent_record *record)
{
	const char *val;

	if (arg->str.field == &comm)
		val = get_comm(event, record);
	else
		val = get_field_str(arg, record);

	switch (arg->str.type) {
	case FILTER_CMP_MATCH:
		return strcmp(val, arg->str.val) == 0;

	case FILTER_CMP_NOT_MATCH:
		return strcmp(val, arg->str.val) != 0;

	case FILTER_CMP_REGEX:
		/* Returns zero on match */
		return !regexec(&arg->str.reg, val, 0, NULL, 0);

	case FILTER_CMP_NOT_REGEX:
		return regexec(&arg->str.reg, val, 0, NULL, 0);

	default:
		/* ?? */
		return 0;
	}
}
コード例 #2
0
ファイル: conf.cpp プロジェクト: Oppen/einstein
char* table_iter_get_str(HTableIterator iterator, int *err)
{
    if ((! iterator) || (! iterator->cur_field))
    {
        if (err) *err = 1;
        return NULL;
    }

    return get_field_str(iterator->cur_field, err);
}
コード例 #3
0
ファイル: conf.cpp プロジェクト: Oppen/einstein
char* table_iter_get_strs(HTableIterator iterator, int *err)
{
    if ((! iterator) || (! iterator->cur_field))
    {
        if (err) *err = 1;
        return NULL;
    }

    if (iterator->stat_buf)
        free(iterator->stat_buf);
    iterator->stat_buf = get_field_str(iterator->cur_field, err);
    return iterator->stat_buf;
}
コード例 #4
0
ファイル: conf.cpp プロジェクト: Oppen/einstein
char* table_get_str(HTable table, char *field, char *dflt, int *err)
{
    SField *f;
    char *s = NULL;
    int e;

    if ((f = find_field(table, field)) && (s = get_field_str(f, &e)) && !e)
    {
        if (err) *err = 0;
        return strdup(s);
    }

    if (err)
        *err = f? e : 1;

    if (s)
        free(s);

    return dflt? strdup(dflt) : NULL;
}
コード例 #5
0
ファイル: conf.cpp プロジェクト: Oppen/einstein
char* table_get_strs(HTable table, char *field, char *dflt, int *err)
{
    SField *f;
    char *s;
    int e;

    if (table && table->stat_buf)
    {
        free(table->stat_buf);
        table->stat_buf = NULL;
    }

    if (table && (f = find_field(table, field)) &&
            (s = get_field_str(f, &e)))
       table->stat_buf = s;

    if (! table || ! f || e) s = dflt;

    if (err) *err = (table && f)? e : 1;

    return s;
}