rem: if (pid < 0) syslog(LOG_ERR, "FTP spawn: fork() failed: %m");
context: int ftp_spawn(struct ip_addr *local_ip, int *local_port, struct ip_addr *remote_ip, int remote_port){  int sd = tcp_listen(local_ip, local_port, 3);  if (sd == -1) {    syslog(LOG_ERR, "FTP spawn: Can't listen: %m");    return -1;  }  pid_t pid = fork();  if (pid) {    /* Child */    if (pid < 0)      syslog(LOG_ERR, "FTP spawn: fork() failed: %m");    socket_close(sd);    return pid;  }  /* Grandchild */  void (*prev_handler)(int);  prev_handler = signal(SIGCHLD, SIG_IGN);  if (prev_handler == SIG_ERR) {    syslog(LOG_ERR, "signal() failed on ignore: %m");    exit(1);  }  prev_handler = signal(SIGUSR1, quit_handler);  if (prev_handler == SIG_ERR) {    syslog(LOG_ERR, "signal() failed for grandchild's quit handler: %m");    exit(1);  }  simple_tcp_forward(sd, remote_ip, remote_port);  syslog(LOG_ERR, "Grandchild exiting (!)");  exit(1);}