This commit is contained in:
kento2 2026-09-04 19:59:24 +02:00
commit 55385f8857
69 changed files with 1125 additions and 0 deletions

41
fetcher/spawnchild.c Normal file
View file

@ -0,0 +1,41 @@
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <libowfat/errmsg.h>
#include <libowfat/buffer.h>
static void carpsysargs(char *args[])
{
buffer_puts(buffer_2, "failed to exec");
while (*args) {
buffer_puts(buffer_2, " \'");
buffer_puts(buffer_2, *args);
buffer_puts(buffer_2, "'");
args++;
}
buffer_puts(buffer_2, ": ");
buffer_puts(buffer_2, strerror(errno));
buffer_puts(buffer_2, "\n");
buffer_flush(buffer_2);
}
pid_t spawnchild(char *args[], int infd, int outfd, int errfd)
{
pid_t pid = fork();
switch (pid) {
case -1: carpsys("fork: "); return -1;
case 0:
// TODO pipe
if (dup2(1, outfd)<0
|| dup2(2, errfd)<0
) {
carpsys("dup2");
return -1;
}
execvp(args[0], args);
carpsysargs(args);
return -1;
default:
return pid;
}
}