diff --git a/src/mustach-dhcpd-pools.c b/src/mustach-dhcpd-pools.c index 142394a..f88cc0e 100644 --- a/src/mustach-dhcpd-pools.c +++ b/src/mustach-dhcpd-pools.c @@ -54,6 +54,7 @@ struct expl { struct range_t *range_p; struct shared_network_t *shnet_p; + struct output_helper_t oh; int current; }; @@ -73,7 +74,6 @@ static int must_put_range(void *closure, const char *name, int escape __attribute__ ((unused)), FILE *file) { struct expl *e = closure; - struct output_helper_t oh; if (!strcmp(name, "location")) { fprintf(file, "%s", e->range_p->shared_net->name); @@ -100,25 +100,24 @@ static int must_put_range(void *closure, const char *name, int escape fprintf(file, "%g", e->range_p->touched); return 0; } - range_output_helper(&oh, e->range_p); if (!strcmp(name, "defined")) { - fprintf(file, "%g", oh.range_size); + fprintf(file, "%g", e->oh.range_size); return 0; } if (!strcmp(name, "free")) { - fprintf(file, "%g", oh.range_size - e->range_p->count); + fprintf(file, "%g", e->oh.range_size - e->range_p->count); return 0; } if (!strcmp(name, "percent")) { - fprintf(file, "%g", oh.percent); + fprintf(file, "%g", e->oh.percent); return 0; } if (!strcmp(name, "touch_count")) { - fprintf(file, "%g", oh.tc); + fprintf(file, "%g", e->oh.tc); return 0; } if (!strcmp(name, "touch_percent")) { - fprintf(file, "%g", oh.tcp); + fprintf(file, "%g", e->oh.tcp); return 0; } if (config.backups_found == 1) { @@ -127,12 +126,12 @@ static int must_put_range(void *closure, const char *name, int escape return 0; } if (!strcmp(name, "backup_percent")) { - fprintf(file, "%g", oh.bup); + fprintf(file, "%g", e->oh.bup); return 0; } } if (!strcmp(name, "status")) { - fprintf(file, "%d", oh.status); + fprintf(file, "%d", e->oh.status); return 0; } return 0; @@ -142,7 +141,6 @@ static int must_put_shnet(void *closure, const char *name, int escape __attribute__ ((unused)), FILE *file) { struct expl *e = closure; - struct output_helper_t oh; if (!strcmp(name, "location")) { fprintf(file, "%s", e->shnet_p->name); @@ -160,21 +158,20 @@ static int must_put_shnet(void *closure, const char *name, int escape fprintf(file, "%g", e->shnet_p->touched); return 0; } - shnet_output_helper(&oh, e->shnet_p); if (!strcmp(name, "free")) { fprintf(file, "%g", e->shnet_p->available - e->shnet_p->used); return 0; } if (!strcmp(name, "percent")) { - fprintf(file, "%g", oh.percent); + fprintf(file, "%g", e->oh.percent); return 0; } if (!strcmp(name, "touch_count")) { - fprintf(file, "%g", oh.tc); + fprintf(file, "%g", e->oh.tc); return 0; } if (!strcmp(name, "touch_percent")) { - fprintf(file, "%g", oh.tcp); + fprintf(file, "%g", e->oh.tcp); return 0; } if (config.backups_found == 1) { @@ -183,12 +180,12 @@ static int must_put_shnet(void *closure, const char *name, int escape return 0; } if (!strcmp(name, "backup_percent")) { - fprintf(file, "%g", oh.bup); + fprintf(file, "%g", e->oh.bup); return 0; } } if (!strcmp(name, "status")) { - fprintf(file, "%d", oh.status); + fprintf(file, "%d", e->oh.status); return 0; } return 0; @@ -197,30 +194,28 @@ static int must_put_shnet(void *closure, const char *name, int escape static int must_next_range(void *closure) { struct expl *e = closure; - struct output_helper_t oh; do { e->range_p++; e->current--; if (e->current <= 0) return 0; - range_output_helper(&oh, e->range_p); - } while (config.skip_ok && oh.status == STATUS_OK); + range_output_helper(&e->oh, e->range_p); + } while (config.skip_ok && e->oh.status == STATUS_OK); return 1; } static int must_next_shnet(void *closure) { struct expl *e = closure; - struct output_helper_t oh; do { e->shnet_p++; e->current--; if (e->current <= 0) return 0; - shnet_output_helper(&oh, e->shnet_p); - } while (config.skip_ok && oh.status == STATUS_OK); + shnet_output_helper(&e->oh, e->shnet_p); + } while (config.skip_ok && e->oh.status == STATUS_OK); return 1; } @@ -248,6 +243,7 @@ static int must_enter(void *closure, const char *name) itf.put = must_put_shnet; itf.next = must_next_shnet; e->shnet_p = shared_networks; + shnet_output_helper(&e->oh, e->shnet_p); e->current = 1; return 1; }