aboutsummaryrefslogtreecommitdiff
path: root/src/libmbpk.c
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-07-04 12:07:35 +1200
committerArslaan Pathan <[email protected]>2026-07-04 12:07:35 +1200
commit2f6b9f48320438787bf452d693fde81d2d31bebf (patch)
treefe55b4362296ce580d36926b2bfbaaa665e38c0a /src/libmbpk.c
parent92ada1294f0381b29b41aaef4471c0f4585ae5e4 (diff)
downloadmbpk-main.tar.xz
mbpk-main.zip
Finish off mbpk_update_repositoriesHEADmain
!
Diffstat (limited to 'src/libmbpk.c')
-rw-r--r--src/libmbpk.c44
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;