I didn't notice the exec("cat") bug, but in the version of ul that came with our system there is no "argc--, argv++;" at the end of the while loop that parses the command line options. The program could not possibly have worked without it unless there were no options.