aboutsummaryrefslogtreecommitdiff
path: root/src/add_repo.c
blob: 049347cac5a8d4953d93f3a1f13f18e42f1acb29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#include "add_repo.h"
#include "vars.h"

void add_repo(const char *repo, const char *repo_name) {
    bool is_previous_repos = false;
    char rfile_line[1024];
    char rfile_contents[8192] = {0};

    if (file_exists(repo_file)) {
        FILE *rfile = fopen(repo_file, "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(repo_file, "w");
    if (wfile) {
        fprintf(wfile, "%srepositories.%s = { url = \"%s\" }\n", previous_repos, repo_name, repo);
        fclose(wfile);
    }

    printf("%s%sAdded %s%s\n", print_pkgit, green, repo_name, color_reset);
}