diff options
| -rw-r--r-- | include/find.h | 2 | ||||
| -rw-r--r-- | src/cla_parse.c | 2 | ||||
| -rw-r--r-- | src/find.c | 25 | ||||
| -rw-r--r-- | src/list_pkgs.c | 23 |
4 files changed, 30 insertions, 22 deletions
diff --git a/include/find.h b/include/find.h index a4bcefd..da5258f 100644 --- a/include/find.h +++ b/include/find.h @@ -1,4 +1,4 @@ #ifndef FIND #define FIND -void find(); +void find(const char* arg); #endif diff --git a/src/cla_parse.c b/src/cla_parse.c index 6bac273..f9e759b 100644 --- a/src/cla_parse.c +++ b/src/cla_parse.c @@ -81,7 +81,7 @@ void cla_parse(int argc, char **argv) { COMMAND("update", "u", { update_all(); }); COMMAND("declare", "d", { declare(); }); COMMAND("list", "l", { list_pkgs(); }); - COMMAND("find", "f", { find(); }); + COMMAND("find", "f", { find(argv[i + 1]); }); COMMAND("--version", "-v", { printf("%s\n", version); }); COMMAND("--help", "-h", { help(); }); COMMAND("--check", "-c", { resolve_deps(); return; }); @@ -1,23 +1,20 @@ -#include <dirent.h> #include <stdio.h> #include <string.h> -#include <sys/stat.h> +#include "list_pkgs.h" #include "lua_state.h" -#include "vars.h" -void find() { - char* src_code = map_get(&cached_install_directories, "src"); - struct dirent* dirent_ptr; - DIR* dir_ptr = opendir(src_code); - - if (dir_ptr == NULL) { - fprintf(stderr, "%scould not open %s\n", print_pkgit, src_code); +void find(const char* arg) { + init_lua_state(); + cache_repos(); + if (!arg) { + for (size_t i = 0; i < cached_repos_count; i++) { + printf("%s\n", cached_repos[i].source_key); + } return; } - - while ((dirent_ptr = readdir(dir_ptr)) != NULL) { - if (strcmp(dirent_ptr->d_name, "..") == 0 || strcmp(dirent_ptr->d_name, ".") == 0) { continue; } - printf("%s\n", dirent_ptr->d_name); + for (size_t i = 0; i < cached_repos_count; i++) { + if (!strstr(cached_repos[i].source_key, arg)) continue; + printf("%s\n", cached_repos[i].source_key); } } diff --git a/src/list_pkgs.c b/src/list_pkgs.c index 5ac293a..5d6fcce 100644 --- a/src/list_pkgs.c +++ b/src/list_pkgs.c @@ -1,12 +1,23 @@ +#include <dirent.h> #include <stdio.h> +#include <string.h> +#include <sys/stat.h> -#include "list_pkgs.h" #include "lua_state.h" +#include "vars.h" void list_pkgs() { - init_lua_state(); - cache_repos(); - for (size_t i = 0; i < cached_repos_count; i++) { - printf("%s\n", cached_repos[i].source_key); - } + char* src_code = map_get(&cached_install_directories, "src"); + struct dirent* dirent_ptr; + DIR* dir_ptr = opendir(src_code); + + if (dir_ptr == NULL) { + fprintf(stderr, "%scould not open %s\n", print_pkgit, src_code); + return; + } + + while ((dirent_ptr = readdir(dir_ptr)) != NULL) { + if (strcmp(dirent_ptr->d_name, "..") == 0 || strcmp(dirent_ptr->d_name, ".") == 0) { continue; } + printf("%s\n", dirent_ptr->d_name); + } }
\ No newline at end of file |
