Example #1
0
static INT64_T do_search(int argc, char **argv)
{
	CHIRP_SEARCH *S;
	int flags = 0;
	if (argc == 4 && *argv[1] == '-') {
		if (strchr(argv[1], 'i'))
			flags |= CHIRP_SEARCH_INCLUDEROOT;
		if (strchr(argv[1], 'm'))
			flags |= CHIRP_SEARCH_METADATA;
		if (strchr(argv[1], 's'))
			flags |= CHIRP_SEARCH_STOPATFIRST;
	}

	if (argc == 4)
		S = chirp_reli_opensearch(current_host, argv[2], argv[3], flags, stoptime);
	else
		S = chirp_reli_opensearch(current_host, argv[1], argv[2], flags, stoptime);
	struct chirp_searchent *res;

	while((res = chirp_client_readsearch(S)) != NULL) {
		if(res->err) {
			printf("%s error on %s: %s\n", strerrsource(res->errsource), res->path, strerror(res->err));
			continue;
		}

		printf("%-30s", res->path);

		if(flags & CHIRP_SEARCH_METADATA)
			printf("\t" INT64_FORMAT "\t" INT64_FORMAT "\n", res->info.cst_size, res->info.cst_ino);
		else
			printf("\n");
	}

	chirp_client_closesearch(S);
	return 0;
}
Example #2
0
int main( int argc, char *argv[] )
{
	const char *paths = NULL;
	const char *pattern;
	int flags = 0;
	signed char c;

		while((c = getopt(argc, argv, "+smi")) > -1) {
				switch (c) {
					case 's':
				flags |= PFS_SEARCH_STOPATFIRST;
				break;
					case 'i':
				flags |= PFS_SEARCH_INCLUDEROOT;
				break;
					case 'm':
				flags |= PFS_SEARCH_METADATA;
				break;
		}
	}

	if (argc-optind == 1) {
		paths = ".";
		pattern = argv[optind];
	} else if (argc-optind == 2) {
		paths = argv[optind];
		pattern = argv[optind+1];
	} else {
		printf("use: parrot_search [options] [path] <pattern>\n");
		exit(EXIT_FAILURE);
	}

	SEARCH *s = parrot_opensearch(paths, pattern, flags);
	if (!s) {
		fprintf(stdout, "could not search: %s\n", strerror(errno));
		exit(EXIT_FAILURE);
	}
	struct searchent *res;
	int i = 0;

	while ((res = parrot_readsearch(s)) != NULL) {

		if (res->err) {
			printf("%s error on %s: %s\n", strerrsource(res->errsource), res->path, strerror(res->err));
			continue;
		}

		i++;
		printf("%-30s", res->path);

		if (flags & PFS_SEARCH_METADATA)
			printf("\t%-10ld\t%-10ld\n", (long)res->info->st_size, (long)res->info->st_ino);
		else
			printf("\n");
	}

	if (i==0) printf("no results\n");

	parrot_closesearch(s);

	return 0;
}