Ejemplo n.º 1
0
static int
statoverride_list(const char *const *argv)
{
	struct fileiterator *iter;
	struct filenamenode *file;
	const char *thisarg;
	struct glob_node *glob_list = NULL;
	int ret = 1;

	while ((thisarg = *argv++)) {
		char *pattern = path_cleanup(thisarg);

		glob_list_prepend(&glob_list, pattern);
	}
	if (glob_list == NULL)
		glob_list_prepend(&glob_list, m_strdup("*"));

	iter = files_db_iter_new();
	while ((file = files_db_iter_next(iter))) {
		struct glob_node *g;

		for (g = glob_list; g; g = g->next) {
			if (fnmatch(g->pattern, file->name, 0) == 0) {
				statdb_node_print(stdout, file);
				ret = 0;
				break;
			}
		}
	}
	files_db_iter_free(iter);

	glob_list_free(glob_list);

	return ret;
}
Ejemplo n.º 2
0
static int
diversion_list(const char *const *argv)
{
	struct fsys_hash_iter *iter;
	struct fsys_namenode *namenode;
	struct glob_node *glob_list = NULL;
	const char *pattern;

	while ((pattern = *argv++))
		glob_list_prepend(&glob_list, m_strdup(pattern));

	if (glob_list == NULL)
		glob_list_prepend(&glob_list, m_strdup("*"));

	iter = fsys_hash_iter_new();
	while ((namenode = fsys_hash_iter_next(iter))) {
		struct glob_node *g;
		struct fsys_diversion *contest = namenode->divert;
		struct fsys_diversion *altname;
		const char *pkgname;

		if (contest == NULL || contest->useinstead == NULL)
			continue;

		altname = contest->useinstead->divert;

		pkgname = diversion_pkg_name(contest);

		for (g = glob_list; g; g = g->next) {
			if (fnmatch(g->pattern, pkgname, 0) == 0 ||
			    fnmatch(g->pattern, contest->useinstead->name, 0) == 0 ||
			    fnmatch(g->pattern, altname->camefrom->name, 0) == 0) {
				printf("%s\n", diversion_describe(contest));
				break;
			}
		}
	}
	fsys_hash_iter_free(iter);

	glob_list_free(glob_list);

	return 0;
}