#include "lib/lib.h"
#include "lib/mainloop.h"
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
sh_time_t now;
uns main_shutdown;
-static clist main_timer_list, main_file_list, main_hook_list, main_process_list;
+clist main_timer_list, main_file_list, main_hook_list, main_process_list;
static uns main_file_cnt;
static uns main_poll_table_obsolete, main_poll_table_size;
static struct pollfd *main_poll_table;
}
void
-file_read(struct main_file *fi, byte *buf, uns len)
+file_read(struct main_file *fi, void *buf, uns len)
{
ASSERT(fi->n.next);
if (len)
}
void
-file_write(struct main_file *fi, byte *buf, uns len)
+file_write(struct main_file *fi, void *buf, uns len)
{
ASSERT(fi->n.next);
if (len)
process_add(struct main_process *mp)
{
ASSERT(!mp->n.next);
+ ASSERT(mp->handler);
clist_add_tail(&main_process_list, &mp->n);
if (!main_sigchld_set_up)
{
int
process_fork(struct main_process *mp)
{
+ ASSERT(!mp->pid);
pid_t pid = fork();
if (pid < 0)
- return -1;
+ {
+ DBG("MAIN: Fork failed");
+ mp->status = -1;
+ format_exit_status(mp->status_msg, -1);
+ mp->handler(mp);
+ return 1;
+ }
else if (!pid)
return 0;
else
{
pr->status = stat;
process_del(pr);
+ format_exit_status(pr->status_msg, pr->status);
DBG("MAIN: Calling process exit handler");
pr->handler(pr);
break;