Example #1
0
static int __register(struct timejob *tj)
{
	struct list_iterator li;
	int i, retval;
	int insert_it;
	struct timejob *p;
	
	retval = 0;
	insert_it = 0;
	i = 0;
	list_iter_set(&li, &timejob_list);
	while ((p = list_iter_get(&li))) {
		if (p->j_ts.tv_sec > tj->j_ts.tv_sec ||
		    (p->j_ts.tv_sec == tj->j_ts.tv_sec && p->j_ts.tv_nsec > tj->j_ts.tv_nsec)) {
			insert_it = 1;
			break;
		}
		i++;
	}
	list_iter_end(&li);
	if (insert_it) {
		list_insert_at(&timejob_list, i, tj);
		if (i == 0)
			retval = 1;	/* reschedule timer */
	} else {
		list_enqueue(&timejob_list, tj);
		if (list_count(&timejob_list) == 1)
			retval = 1;	/* reschedule timer */
	}
#if 0
	printf("registered:\n");
	list_iter_set(&li, &timejob_list);
	while ((p = list_iter_get(&li))) {
		printf("%x - %d\n", p, p->j_arg_sec);
	};
	list_iter_end(&li);
#endif
	return retval;
}
Example #2
0
int db_scan(struct state *s)
{
	struct scan_state ss;

	/* init scan_state */
	ss.state = s;
	ss.year = s->rc.data_begin.year;
	ss.begin_week = WEEK_ID_BEGIN;
	ss.end_week = WEEK_ID_END;
	ss.last_week = INT_MIN;
	memset(ss.filenames, 0, DB_MAX_WEEKS_PER_YEAR);

	/* build path to sport in database file layout */
	snprintf(ss.pathbuf, DB_MAX_PATH, "%s/%s", s->rc.data_dir, s->rc.sport);
	ss.pathbuf[DB_MAX_PATH-1] = '\0';

	/* make sure the expected dir exists */
	if (access(ss.pathbuf, R_OK)) {
		fprintf(stderr, "%s: error reading dir '%s': %s\n",
			progname, ss.pathbuf, strerror(errno));
		return -1;
	}

	/* if begin year is unset, find the earliest */
	if (s->rc.data_begin.year == WEEK_ID_BEGIN) {
		ss.year = find_earliest_year(ss.pathbuf);
		if (ss.year == INT_MAX)
			return -2;
	}

	/* for each year given in the rc,
	 * build scan_state and call scan_year()
	 */
	for (; ss.year <= s->rc.data_end.year; ss.year++) {
		/* set begin week */
		if (ss.year == s->rc.data_begin.year)
			ss.begin_week = s->rc.data_begin.week;
		else
			ss.begin_week = 1;

		/* set end week */
		if (ss.year == s->rc.data_end.year)
			ss.end_week = s->rc.data_end.week;
		else
			ss.end_week = WEEK_ID_END;

		ss.last_week = INT_MIN;

		/* scan files for year */
		if (scan_year(&ss) < 0)
			return -3;
	}

	/* print scanned files */
	if (verbose) {
		struct list_iter iter;
		list_iter_begin(&s->db->game_files, &iter);
		while (!list_iter_end(&iter)) {
			fprintf(stderr, "db: %s\n",
				(char *)list_iter_data(&iter));
			list_iter_next(&iter);
		}
		fprintf(stderr, "db: %d game files\n",
			s->db->game_files.length);
	}

	return 0;
}
Example #3
0
File: rc.c Project: andybug/spreden
static void print_rc(const struct rc *rc)
{
	const char *action = "unknown";

	/*
	 * map action to string
	 * if not analyze, predict, or rank, then exit
	 */
	switch (rc->action) {
	case ACTION_ANALYZE:
		action = "analyze";
		break;
	case ACTION_PREDICT:
		action = "predict";
		break;
	case ACTION_RANK:
		action = "rank";
		break;
	default:
		return;
	}

	/* heading */
	fputs("***** run control *****\n", stderr);

	/* print action */
	fprintf(stderr, "action:       %s\n", action);

	/* print sport */
	fprintf(stderr, "sport:        %s\n", rc->sport);

	/* print data-begin week */
	fputs("data-begin:   ", stderr);
	print_week(stderr, &rc->data_begin);
	fputc('\n', stderr);

	/* print end week */
	fputs("data-end:     ", stderr);
	print_week(stderr, &rc->data_end);
	fputc('\n', stderr);

	/* print target week/range */
	fputs("target-begin: ", stderr);
	print_week(stderr, &rc->target_begin);
	fputc('\n', stderr);

	fputs("target-end:   ", stderr);
	print_week(stderr, &rc->target_end);
	fputc('\n', stderr);

	/* print algos */
	fputs("algos:        [ ", stderr);
	struct list_iter iter;
	char *algo;
	list_iter_begin(&rc->user_algorithms, &iter);
	while (!list_iter_end(&iter)) {
		algo = list_iter_data(&iter);
		fprintf(stderr, "%s ", algo);
		list_iter_next(&iter);
	}
	fputs("]\n", stderr);

	/* footer */
	fputs("***********************\n", stderr);
}