Implement the generate() operator
Implement the generate() operator as part of dhcp-eval. generate() is similar to execute() in that it executes an external program. However, unlike execute(), generate() is a data expression: it reads up to 1024 bytes from the standard output of the resulting child process and makes them available as a C string. It can therefore be combined with substring(), concat() and other similar operators for maximum flexibility. Like execute(), generate() can be disabled through ./configure --disable-generate.
It is roughly the same code as the patch submitted two years ago on the former bugtracker, except it was split in separate commits, thus making it much easier to review. Additionally, exec_read() now prevents child processes from turning into zombie processes and the configure script was regenerated.