.
This commit is contained in:
commit
55385f8857
69 changed files with 1125 additions and 0 deletions
41
fetcher/spawnchild.c
Normal file
41
fetcher/spawnchild.c
Normal 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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue