Example #1
0
Reader *tokenize(char *line) {
    GRegex *regex;
    GMatchInfo *matchInfo;
    GError *err = NULL;

    Reader *reader = reader_new();

    regex = g_regex_new ("[\\s ,]*(~@|[\\[\\]{}()'`~@]|\"(?:[\\\\].|[^\\\\\"])*\"|;.*|[^\\s \\[\\]{}()'\"`~@,;]*)", 0, 0, &err);   
    g_regex_match (regex, line, 0, &matchInfo);

    if (err != NULL) {
        fprintf(stderr, "Tokenize error: %s\n", err->message);
        return NULL;
    }
    
    while (g_match_info_matches(matchInfo)) {
        gchar *result = g_match_info_fetch(matchInfo, 1);
        if (result[0] != '\0' && result[0] != ';') {
            reader_append(reader, result);
        }
        g_match_info_next(matchInfo, &err);
    }
    g_match_info_free(matchInfo);
    g_regex_unref(regex);
    if (reader->array->len == 0) {
        reader_free(reader);
        return NULL;
    } else {
        return reader;
    }
}
Example #2
0
static struct log *_log_new(struct db *db, uint64_t log_number,
			    struct dir *log_dir, struct dir *index_dir)
{
	struct reader *reader = reader_new(db, log_dir, log_filename(log_number));
	if (reader == NULL) {
		return NULL;
	}

	struct log *log = malloc(sizeof(struct log));
	memset(log, 0, sizeof(struct log));
	log->db = db;
	log->log_dir = log_dir;
	log->index_dir = index_dir;
	log->log_number = log_number;
	log->reader = reader;
	return log;
}