#define _XOPEN_SOURCE 700 #include "repo.h" #include "dirent.h" #include "limits.h" #include "malloc.h" #include "stdio.h" int repo_check_package(pow_repo **repos, size_t repo_count, const char *query) { if (!repos) { printf("no repos defined in your config, please define them\n"); return 1; } DIR *dp; struct dirent *ep; for (size_t i = 0; i < repo_count; i++) { char *package_path = malloc(PATH_MAX); if (!package_path) { printf("failed to allocate package_path, sizeof %zu\n", PATH_MAX); return 1; } int written = snprintf(package_path, PATH_MAX, "%s/%s", repos[i]->path, query); if (written >= PATH_MAX) { printf("something went seriously wrong. the path for the package %s is " "too long?\n", query); free(package_path); return 1; } dp = opendir(package_path); free(package_path); if (!dp) { continue; } printf("found package %s in repo %s\n", query, repos[i]->path); closedir(dp); } return 0; }