adding returns after perror() calls; usage now returns status 2, like bash built-ins
for consistency, bind failure also returns errno as exit code