diff options
| author | dacctal <donotcontactmevia@email.invalid> | 2026-06-28 07:11:50 +0000 |
|---|---|---|
| committer | dacctal <donotcontactmevia@email.invalid> | 2026-06-28 07:11:50 +0000 |
| commit | 52d941ec2ea645dd922c9c7930bdfa687907adac (patch) | |
| tree | 915550172e9724d8037c49f0967e774701654f02 | |
| parent | 18cdc70abbebc2e8206945e6b170cf9f627da284 (diff) | |
formatted code according to new guidelines
| -rw-r--r-- | src/fetch_git.c | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/src/fetch_git.c b/src/fetch_git.c index 3184cca..296cdb7 100644 --- a/src/fetch_git.c +++ b/src/fetch_git.c @@ -38,7 +38,7 @@ int fetch_git(Pkg pkg) { close(nullfd); } } - const char *argv[10]; + const char *argv[12]; int i = 0; argv[i++] = "git"; argv[i++] = "-c"; @@ -49,6 +49,8 @@ int fetch_git(Pkg pkg) { argv[i++] = pkg.ver; } argv[i++] = "--recursive"; + argv[i++] = "--depth"; + argv[i++] = "1"; argv[i++] = pkg.url; argv[i++] = pkg.src; argv[i] = NULL; @@ -59,10 +61,43 @@ int fetch_git(Pkg pkg) { int status; waitpid(pid, &status, 0); int result = WIFEXITED(status) ? WEXITSTATUS(status) : -1; - if (result != 0) printf( - "%s git clone failed: %d\n", - print_warning, result - ); + if (result != 0) { + pid_t pid = fork(); + if (pid == 0) { + if (!is_verbose) { + int nullfd = open("/dev/null", O_WRONLY); + if (nullfd >= 0) { + dup2(nullfd, STDOUT_FILENO); + dup2(nullfd, STDERR_FILENO); + close(nullfd); + } + } + const char *argv[12]; + int i = 0; + argv[i++] = "git"; + argv[i++] = "-c"; + argv[i++] = "advice.detachedHead=false"; + argv[i++] = "clone"; + if (strcmp(pkg.ver, "HEAD") != 0) { + argv[i++] = "--branch"; + argv[i++] = pkg.ver; + } + argv[i++] = "--recursive"; + argv[i++] = pkg.url; + argv[i++] = pkg.src; + argv[i] = NULL; + execvp("git", (char *const *)argv); + _exit(127); + } + + int status; + waitpid(pid, &status, 0); + result = WIFEXITED(status) ? WEXITSTATUS(status) : -1; + if (result != 0) printf( + "%s git clone failed: %d\n", + print_warning, result + ); + } return result; }
\ No newline at end of file |
