use gnu99 mode

This standard allows for-loop initial declarations, but also includes
the definitions of things like PATH_MAX, sigprocmask and setenv, in
contrast to the strict c99 mode.

Moreover, this is the default mode of clang, and soon to be (?) GCC.
use for-loop initial declarations

As allowed by the C99 standard.
block: do not update time stamp on click

As a user may want to trigger a different action on click, do not update
the time stamp when a click occurs, because it will delay the next
scheduled update.
block: better error handling

Do not print the first stdout line on error;
Close pipe read end on any error;
Simplify the mark_as_failed() function by omitting the status argument;
Prefer the standard error message (from errno) when possible;
Print an error message in case of waitpid error.
block: catch block error stream

Pipe stderr when forking a block command, in order to dump any error
message.