void daemon_log_cft(log_state *s, int type, const char *prefix, const struct dm_config_node *n) { struct log_line_baton b = { .s = s, .type = type, .prefix = prefix }; if (!_type_interesting(s, type)) return; (void) dm_config_write_node(n, &_log_line, &b); }
int config_write(struct dm_config_tree *cft, const char *file, int argc, char **argv) { const struct dm_config_node *cn; int r = 1; FILE *fp = NULL; if (!file) { fp = stdout; file = "stdout"; } else if (!(fp = fopen(file, "w"))) { log_sys_error("open", file); return 0; } log_verbose("Dumping configuration to %s", file); if (!argc) { if (!dm_config_write_node(cft->root, _putline_fn, fp)) { log_error("Failure while writing to %s", file); r = 0; } } else while (argc--) { if ((cn = dm_config_find_node(cft->root, *argv))) { if (!dm_config_write_node(cn, _putline_fn, fp)) { log_error("Failure while writing to %s", file); r = 0; } } else { log_error("Configuration node %s not found", *argv); r = 0; } argv++; } if (fp && dm_fclose(fp)) { stack; r = 0; } return r; }