Index: ossp-pkg/cfg/cfg_syn.c RCS File: /v/ossp/cvs/ossp-pkg/cfg/cfg_syn.c,v rcsdiff -q -kk '-r1.17' '-r1.18' -u '/v/ossp/cvs/ossp-pkg/cfg/cfg_syn.c,v' 2>/dev/null --- cfg_syn.c 2004/07/17 07:37:55 1.17 +++ cfg_syn.c 2004/11/20 12:02:32 1.18 @@ -25,7 +25,7 @@ ** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ** SUCH DAMAGE. ** -** cfg_syn.c: syntax parsing +** cfg_syn.c: syntax parsing and formatting */ #include @@ -170,12 +170,14 @@ return; } +/* internal cfg_syn_export structure */ typedef struct { cfg_t *cfg; cfg_buf_t *buf; int indent; } export_t; +/* internal cfg_syn_export helper function: sprintf(3) style output formatting */ static void export_format(export_t *ctx, char *fmt, ...) { int i; @@ -201,6 +203,7 @@ return; } +/* internal cfg_syn_export helper function: indentation handling */ static void export_indent(export_t *ctx, signed int n) { if (n > 0) { @@ -219,6 +222,7 @@ } } +/* internal cfg_syn_export helper function: token output formatting */ static void export_token(export_t *ctx, const char *token) { const char *cp; @@ -264,6 +268,7 @@ return; } +/* internal cfg_syn_export helper function: recursive node processing */ static void export_node(export_t *ctx, cfg_node_t *node) { cfg_node_type_t type; @@ -274,20 +279,22 @@ if ((rc = cfg_node_get(ctx->cfg, node, CFG_NODE_ATTR_TYPE, &type)) != CFG_OK) return; if (type == CFG_NODE_TYPE_SEQ) { + /* node is a sequence */ export_format(ctx, "{\n"); export_indent(ctx, 1); cfg_node_get(ctx->cfg, node, CFG_NODE_ATTR_CHILD1, &node2); while (node2 != NULL) { - export_node(ctx, node2); + export_node(ctx, node2); /* recursion */ cfg_node_get(ctx->cfg, node2, CFG_NODE_ATTR_RBROTH, &node2); } export_indent(ctx, -1); export_format(ctx, "}"); } else if (type == CFG_NODE_TYPE_DIR) { + /* node is a directive */ cfg_node_get(ctx->cfg, node, CFG_NODE_ATTR_CHILD1, &node2); while (node2 != NULL) { - export_node(ctx, node2); + export_node(ctx, node2); /* recursion */ cfg_node_get(ctx->cfg, node2, CFG_NODE_ATTR_RBROTH, &node2); if (node2 != NULL) export_format(ctx, " "); @@ -298,6 +305,7 @@ export_format(ctx, "\n"); } else if (type == CFG_NODE_TYPE_ARG) { + /* node is a token */ cfg_node_get(ctx->cfg, node, CFG_NODE_ATTR_TOKEN, &token); if (token != NULL) export_token(ctx, token); @@ -307,6 +315,7 @@ return; } +/* export configuration node tree into textual OSSP cfg syntax */ cfg_rc_t cfg_syn_export( cfg_t *cfg, cfg_node_t *node, @@ -348,18 +357,20 @@ return CFG_OK; } +/* internal cfg_syn_destroy helper function: recursive node destruction */ static cfg_rc_t cfg_syn_destroy_node(cfg_t *cfg, cfg_node_t *node) { if (node == NULL) return CFG_ERR_ARG; if (node->child1 != NULL) - cfg_syn_destroy_node(cfg, node->child1); + cfg_syn_destroy_node(cfg, node->child1); /* recursion */ if (node->rbroth != NULL) - cfg_syn_destroy_node(cfg, node->rbroth); + cfg_syn_destroy_node(cfg, node->rbroth); /* recursion */ cfg_node_destroy(cfg, node); return CFG_OK; } +/* destroy syntax node tree */ cfg_rc_t cfg_syn_destroy(cfg_t *cfg, cfg_node_t *node) { if (node == NULL) Index: ossp-pkg/cfg/cfg_syn.h RCS File: /v/ossp/cvs/ossp-pkg/cfg/cfg_syn.h,v rcsdiff -q -kk '-r1.6' '-r1.7' -u '/v/ossp/cvs/ossp-pkg/cfg/cfg_syn.h,v' 2>/dev/null --- cfg_syn.h 2004/07/17 07:37:55 1.6 +++ cfg_syn.h 2004/11/20 12:02:32 1.7 @@ -25,7 +25,7 @@ ** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ** SUCH DAMAGE. ** -** cfg_syn.h: syntax parsing header +** cfg_syn.h: syntax parsing and formatting header */ #ifndef __CFG_SYN_H__