diff options
| author | Arslaan Pathan <[email protected]> | 2026-07-04 12:07:35 +1200 |
|---|---|---|
| committer | Arslaan Pathan <[email protected]> | 2026-07-04 12:07:35 +1200 |
| commit | 2f6b9f48320438787bf452d693fde81d2d31bebf (patch) | |
| tree | fe55b4362296ce580d36926b2bfbaaa665e38c0a /src/libmbpk.c | |
| parent | 92ada1294f0381b29b41aaef4471c0f4585ae5e4 (diff) | |
| download | mbpk-main.tar.xz mbpk-main.zip | |
!
Diffstat (limited to 'src/libmbpk.c')
| -rw-r--r-- | src/libmbpk.c | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/src/libmbpk.c b/src/libmbpk.c index 8b21c60..8cf6f70 100644 --- a/src/libmbpk.c +++ b/src/libmbpk.c @@ -232,6 +232,7 @@ int mbpk_update_repositories(void) { /* Declarations */ struct stat st; int i; + int j; mbpk_repository *repo; CURL *curl; CURLcode result; @@ -240,10 +241,12 @@ int mbpk_update_repositories(void) { char *repo_dir; char *pkg_ini_url; char *pkg_dir; + char *pkg_ini_path; size_t dir_len; size_t repo_ini_path_len; size_t pkg_ini_url_len; size_t pkg_dir_len; + size_t pkg_ini_path_len; FILE *fp; struct curl_memory chunk; @@ -347,7 +350,7 @@ int mbpk_update_repositories(void) { } sprintf(pkg_dir, "%s/pkg", repo_dir); - if (stat(pkg_dir, &st) == -1) { + if (stat(pkg_dir, &st) == 0) { printf("[libmbpk debug] removing old pkg directory for %s\n", repo->name); if (rm_rf(pkg_dir) != 0) { free(pkg_dir); @@ -355,8 +358,14 @@ int mbpk_update_repositories(void) { return MBPK_REPO_FAIL; } } + printf("[libmbpk debug] creating new pkg directory for %s\n", repo->name); + if (mkdir(pkg_dir, 0755) == -1) { + free(pkg_dir); + free(repo_dir); + return MBPK_REPO_FAIL; + } - for (i = 0; repo->packages[i] != NULL; i++) { + for (j = 0; repo->packages[j] != NULL; j++) { chunk.memory = malloc(1); if (!chunk.memory) { free(pkg_dir); @@ -364,16 +373,16 @@ int mbpk_update_repositories(void) { return MBPK_OUT_OF_MEMORY; } chunk.size = 0; /* oh fuck, thats why this didnt work - i was overwriting broken shit */ - printf(" %s\n", repo->packages[i]); + printf(" %s\n", repo->packages[j]); curl = curl_easy_init(); if (curl) { - pkg_ini_url_len = strlen(repo->url) + 1 + strlen("pkg") + 1 + strlen(repo->packages[i]) + strlen(".ini") + 1; + pkg_ini_url_len = strlen(repo->url) + 1 + strlen("pkg") + 1 + strlen(repo->packages[j]) + strlen(".ini") + 1; pkg_ini_url = malloc(pkg_ini_url_len); if (!pkg_ini_url) { free(repo_dir); return MBPK_OUT_OF_MEMORY; } - sprintf(pkg_ini_url, "%s/pkg/%s.ini", repo->url, repo->packages[i]); + sprintf(pkg_ini_url, "%s/pkg/%s.ini", repo->url, repo->packages[j]); curl_easy_setopt(curl, CURLOPT_URL, pkg_ini_url); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); /* follow redirects */ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_memory_write_calback); @@ -402,10 +411,31 @@ int mbpk_update_repositories(void) { return MBPK_CURL_INIT_FAIL; } + pkg_ini_path_len = strlen(pkg_dir) + 1 + strlen(repo->packages[j]) + strlen(".ini") + 1; + pkg_ini_path = malloc(pkg_ini_path_len); + if (!pkg_ini_path) { + free(chunk.memory); + free(pkg_dir); + free(repo_dir); + return MBPK_OUT_OF_MEMORY; + } + sprintf(pkg_ini_path, "%s/%s.ini", pkg_dir, repo->packages[j]); + + fp = fopen(pkg_ini_path, "w"); + if (!fp) { + free(pkg_ini_path); + free(pkg_dir); + free(repo_dir); + free(chunk.memory); + return MBPK_REPO_FAIL; + } + fwrite(chunk.memory, 1, chunk.size, fp); + fclose(fp); + free(chunk.memory); - free(pkg_dir); - free(repo_dir); } + free(pkg_dir); + free(repo_dir); } return MBPK_OK; |
