A few bug fixes:

ftpd.c/main
The code for forking ftpd as a server background process left nothing open
on fd 2, meaning stderr could be most anything (such as the network stream).
Fix inside #ifndef never.

ftpd.c/main
When the child process is forked after accept, SIGCHLD wants to be ignored,
to keep it from interrupting system calls (connect, usually).  Last time I
tried using ftp with monet, the same problem appeared with the monet server.
Fix inside #ifndef never.

ftp.c/sendrequest
ftp.c/recvrequest
There was no check for an error on the network fd during or after a transfer.
Fix inside #ifndef noneterr.

cmds.c/setpeer
If there is an argv[2], it is supposed to set the port, but the code
attempted to take the port from argv[1], producing a confusing error message.
Fix inside #ifndef never.

Some things known not to be fixed:

The ABOR command is not handled correctly.

The 4.1c rename system call is simulated in compat.c with "/bin/mv".