diff options
| author | dacctal <dacctal@symlinx.net> | 2026-05-24 10:23:38 +0000 |
|---|---|---|
| committer | dacctal <dacctal@symlinx.net> | 2026-05-24 10:23:38 +0000 |
| commit | aa0d78815004ae6b0c4a42b0e024f5c4ef555ae2 (patch) | |
| tree | 62f97b4c5acfdb98003568466f878fbd3d6b9dfb /src/vars.c | |
| parent | 83d471f2c1d1b1fa6be51f41e4f1c36ab19d7094 (diff) | |
c rewrite
Diffstat (limited to 'src/vars.c')
| -rw-r--r-- | src/vars.c | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/vars.c b/src/vars.c new file mode 100644 index 0000000..0568e57 --- /dev/null +++ b/src/vars.c @@ -0,0 +1,181 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdbool.h> +#include <unistd.h> +#include <sys/stat.h> +#include <errno.h> + +#include "vars.h" + +bool is_symlink_install = false; +bool is_verbose = false; +bool config_exists = false; + +char home_dir[MAX_PATH_LEN] = {0}; + +char root_config[MAX_PATH_LEN] = "/etc/pkgit/init.lua"; +bool is_root_config = false; +char config_dir[MAX_PATH_LEN] = {0}; +char config_file[MAX_PATH_LEN] = {0}; +char repo_file[MAX_PATH_LEN] = {0}; + +char bin[MAX_PATH_LEN] = {0}; +char lib[MAX_PATH_LEN] = {0}; +char inc[MAX_PATH_LEN] = {0}; +char pkgblds[MAX_PATH_LEN] = {0}; + +char *install_directories[5] = {NULL}; + +Map cached_install_directories = {0}; +Repo cached_repos[MAX_REPOS]; +size_t cached_repos_count = 0; +Map cached_build_systems = {0}; + +char home_config_buf[MAX_PATH_LEN] = {0}; +char* home_config() { + snprintf(home_config_buf, MAX_PATH_LEN, "%s/.config/pkgit/init.lua", home_dir); + return home_config_buf; +} + +const char* get_install_dir(const char *key) { + for (size_t i = 0; i < cached_install_directories.size; i++) { + if (strcmp(cached_install_directories.items[i].key, key) == 0) { + return cached_install_directories.items[i].value; + } + } + return ""; +} + +const char *version = "gizmodic pkgit v67.67.67 (non-pregtal edition)"; //changed from "0.0.0" muhahahah + +const char *red = "\e[0;31m"; +const char *green = "\e[0;32m"; +const char *yellow = "\e[0;33m"; +const char *blue = "\e[0;34m"; +const char *magenta = "\e[0;35m"; +const char *cyan = "\e[0;36m"; +const char *gray = "\e[0;37m"; +const char *bright_red = "\e[0;91m"; +const char *bright_green = "\e[0;92m"; +const char *bright_yellow = "\e[0;93m"; +const char *bright_blue = "\e[0;94m"; +const char *bright_magenta = "\e[0;95m"; +const char *bright_cyan = "\e[0;96m"; +const char *bright_gray = "\e[0;97m"; +const char *bold_red = "\e[1;31m"; +const char *bold_green = "\e[1;32m"; +const char *bold_yellow = "\e[1;33m"; +const char *bold_blue = "\e[1;34m"; +const char *bold_magenta = "\e[1;35m"; +const char *bold_cyan = "\e[1;36m"; +const char *bold_gray = "\e[1;37m"; +const char *bold_white = "\e[1;38m"; +const char *bold_bright_red = "\e[1;91m"; +const char *bold_bright_green = "\e[1;92m"; +const char *bold_bright_yellow = "\e[1;93m"; +const char *bold_bright_blue = "\e[1;94m"; +const char *bold_bright_magenta = "\e[1;95m"; +const char *bold_bright_cyan = "\e[1;96m"; +const char *bold_bright_gray = "\e[1;97m"; +const char *italic = "\e[3m"; +const char *color_reset = "\e[0m"; + +const char *print_pkgit; +const char *print_skipped; +const char *print_warning; +const char *print_error; + +int mkdir_p(const char *path) { + char tmp[MAX_PATH_LEN]; + char *p = NULL; + size_t len; + + snprintf(tmp, sizeof(tmp), "%s", path); + len = strlen(tmp); + if (tmp[len - 1] == '/') { + tmp[len - 1] = 0; + } + + for (p = tmp + 1; *p; p++) { + if (*p == '/') { + *p = 0; + if (mkdir(tmp, 0755) != 0 && errno != EEXIST) { + return -1; + } + *p = '/'; + } + } + + if (mkdir(tmp, 0755) != 0 && errno != EEXIST) { + return -1; + } + + return 0; +} + +bool file_exists(const char *path) { + struct stat buffer; + return (stat(path, &buffer) == 0); +} + +bool is_directory(const char *path) { + struct stat statbuf; + if (stat(path, &statbuf) != 0) { + return false; + } + return S_ISDIR(statbuf.st_mode); +} + +void init_vars() { + char *home = getenv("HOME"); + if (home) { + snprintf(home_dir, MAX_PATH_LEN, "%s", home); + } else { + snprintf(home_dir, MAX_PATH_LEN, "/root"); + } + + is_root_config = file_exists(root_config); + + if (is_root_config) { + snprintf(config_dir, MAX_PATH_LEN, "/etc/pkgit"); + } else { + snprintf(config_dir, MAX_PATH_LEN, "%s/.config/pkgit", home_dir); + } + + snprintf(config_file, MAX_PATH_LEN, "%s/init.lua", config_dir); + snprintf(repo_file, MAX_PATH_LEN, "%s/repos.lua", config_dir); + + config_exists = file_exists(root_config) || file_exists(home_config()); + + snprintf(bin, MAX_PATH_LEN, "%s/.local/bin", home_dir); + snprintf(lib, MAX_PATH_LEN, "%s/.local/lib", home_dir); + snprintf(inc, MAX_PATH_LEN, "%s/.local/include", home_dir); + snprintf(pkgblds, MAX_PATH_LEN, "%s/.local/share/pkgit", home_dir); + + install_directories[0] = config_dir; + install_directories[1] = bin; + install_directories[2] = lib; + install_directories[3] = inc; + install_directories[4] = pkgblds; + + static char print_pkgit_buf[256]; + snprintf(print_pkgit_buf, sizeof(print_pkgit_buf), "%s[%s%s%s]\t%s", + bold_yellow, bold_magenta, "pkgit", bold_yellow, color_reset); + print_pkgit = print_pkgit_buf; + + static char print_skipped_buf[256]; + snprintf(print_skipped_buf, sizeof(print_skipped_buf), "%s%s[SKIP]\t%s", + print_pkgit, blue, color_reset); + print_skipped = print_skipped_buf; + + static char print_warning_buf[256]; + snprintf(print_warning_buf, sizeof(print_warning_buf), "%s%s[WARN]\t%s", + print_pkgit, yellow, color_reset); + print_warning = print_warning_buf; + + static char print_error_buf[256]; + snprintf(print_error_buf, sizeof(print_error_buf), "%s%s[ERROR]\t%s", + print_pkgit, red, color_reset); + print_error = print_error_buf; +} |
