I like the idea of this patch. There're two little details marked below.
> @@ -391,7 +379,7 @@ freecte(struct ctabentry *cte, int nfields)
> }
>
> static void
> -unloadentries(void)
> +unloadentries(struct ctabentry *ctab)
Shadowing variables is error prone. In this case, this will happen if the first
patch is merged, to which I oppose, given that there is nothing wrong with
queue.h macros.
> @@ -492,14 +483,6 @@ loadentries(void)
> }
>
> static void
> -reloadentries(void)
> -{
> - unloadentries();
> - if (loadentries() < 0)
> - logwarn("warning: discarding old crontab entries\n");
> -}
> -
> -static void> sighandler(int sig)
> {
> switch (sig) {
Somehow, the sysadmin should be informed that loadentries failed. Either keep
reloadentries or log the failure in main.