aboutsummaryrefslogtreecommitdiff
path: root/src/add_repo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/add_repo.c')
-rw-r--r--src/add_repo.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/add_repo.c b/src/add_repo.c
new file mode 100644
index 0000000..1c41f3b
--- /dev/null
+++ b/src/add_repo.c
@@ -0,0 +1,56 @@
+/*
+
+ pkgit - package it!
+
+ Copyright (C) 2026 dacctal
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include "add_repo.h"
+
+#include "files.h"
+#include "globs.h"
+
+void add_repo(package_t *pkg) {
+ bool is_previous_repos = false;
+ char rfile_line[1024];
+ char rfile_contents[8192] = {0};
+
+ if (file_exists(cfg.repos.data)) {
+ FILE *rfile = fopen(cfg.repos.data, "r");
+ if (rfile) {
+ while (fgets(rfile_line, sizeof(rfile_line), rfile)) {
+ strcat(rfile_contents, rfile_line);
+ }
+ fclose(rfile);
+ is_previous_repos = true;
+ }
+ }
+
+ char *previous_repos = is_previous_repos ? rfile_contents : "";
+
+ FILE *wfile = fopen(cfg.repos.data, "w");
+ if (wfile) {
+ fprintf(wfile,
+ "%srepositories[\"%s\"] = { url = \"%s\" }\n",
+ previous_repos, pkg->name.data, pkg->url.data
+ );
+ fclose(wfile);
+ }
+}