Don't rely on nonstandard bsd_signal() function, instead
require that the platform has sigaction(). This is 2001,
after all. This may resolve some potential portability
problems.
Log a message if memory allocation fails, instead of dying silently.
Clean up the main dispatch loop.
Use <sysexits.h> for exit codes, if it exists.
Reformat tftpd.c to match the other files.