Both commands need to check the same proper syntax (common code).
A stopped jobs can be continued by sending the SIGCONT signal.
For fg, to make a process the foreground process means that the shell must now wait for it.
You should wait for the foreground process here (and also from the eval function) by calling waitfg()