static void XmlExportVariables(Writer *writer, const char *scope) { char *filebuffer = NULL; Rlist *rp = NULL; Rlist *list = NULL; /* START XML ELEMENT -- VARIABLE*-SCOPE */ XmlAttribute scope_name_attr = { "name", scope }; XmlStartTag(writer, XMLTAG_VARSCOPE, 1, scope_name_attr); /* XML ELEMENT -- INTRO */ filebuffer = ReadTexinfoFileF("varcontexts/%s_intro.texinfo", scope); XmlTag(writer, XMLTAG_INTRO, filebuffer, 0); free(filebuffer); HashToList(GetScope(scope), &list); list = AlphaSortRListNames(list); for (rp = list; rp != NULL; rp = rp->next) { /* START XML ELEMENT -- VARIABLE */ XmlAttribute var_name_attr = { "name", ScalarValue(rp) }; XmlStartTag(writer, XMLTAG_VARIABLE, 1, var_name_attr); /* XML ELEMENT -- LONG-DESCRIPTION */ filebuffer = ReadTexinfoFileF("vars/%s_%s.texinfo", scope, ScalarValue(rp)); XmlTag(writer, XMLTAG_LONGDESCRIPTION, filebuffer, 0); free(filebuffer); /* END XML ELEMENT -- VARIABLE */ XmlEndTag(writer, XMLTAG_VARIABLE); } DeleteRlist(list); /* END XML ELEMENT -- VARIABLE-SCOPE */ XmlEndTag(writer, XMLTAG_VARSCOPE); }
static void TexinfoVariables(const char *source_dir, FILE *fout, char *scope) { char filename[CF_BUFSIZE], varname[CF_BUFSIZE]; Rlist *rp, *list = NULL; int i; char *extra_mon[] = { "listening_udp4_ports", "listening_tcp4_ports", "listening_udp6_ports", "listening_tcp6_ports", NULL }; HashToList(GetScope(scope), &list); list = AlphaSortRListNames(list); fprintf(fout, "\n\n@node Variable context %s\n@section Variable context @code{%s}\n\n", scope, scope); snprintf(filename, CF_BUFSIZE - 1, "varcontexts/%s_intro.texinfo", scope); IncludeManualFile(source_dir, fout, filename); fprintf(fout, "@menu\n"); if (strcmp(scope, "mon") != 0) { for (rp = list; rp != NULL; rp = rp->next) { fprintf(fout, "* Variable %s.%s::\n", scope, (char *) rp->item); } } else { for (i = 0; extra_mon[i] != NULL; i++) { fprintf(fout, "* Variable %s.%s::\n", "mon", extra_mon[i]); } for (i = 0; i < CF_OBSERVABLES; ++i) { if (strcmp(OBS[i][0], "spare") == 0) { break; } fprintf(fout, "* Variable mon.value_%s::\n", OBS[i][0]); fprintf(fout, "* Variable mon.av_%s::\n", OBS[i][0]); fprintf(fout, "* Variable mon.dev_%s::\n", OBS[i][0]); } } fprintf(fout, "@end menu\n"); if (strcmp(scope, "mon") != 0) { for (rp = list; rp != NULL; rp = rp->next) { fprintf(fout, "@node Variable %s.%s\n@subsection Variable %s.%s \n\n", scope, (char *) rp->item, scope, (char *) rp->item); snprintf(filename, CF_BUFSIZE - 1, "vars/%s_%s.texinfo", scope, (char *) rp->item); IncludeManualFile(source_dir, fout, filename); } } else { for (i = 0; extra_mon[i] != NULL; i++) { fprintf(fout, "\n@node Variable %s.%s\n@subsection Variable %s.%s \n\n", "mon", extra_mon[i], "mon", extra_mon[i]); fprintf(fout, "List variable containing an observational measure collected every 2.5 minutes from cf-monitord, description: port numbers that were observed to be set up to receive connections on the host concerned"); } for (i = 0; i < CF_OBSERVABLES; i++) { if (strcmp(OBS[i][0], "spare") == 0) { break; } snprintf(varname, CF_MAXVARSIZE, "value_%s", OBS[i][0]); fprintf(fout, "\n@node Variable %s.%s\n@subsection Variable %s.%s \n\n", scope, varname, scope, varname); fprintf(fout, "Observational measure collected every 2.5 minutes from cf-monitord, description: @var{%s}.", OBS[i][1]); snprintf(varname, CF_MAXVARSIZE, "av_%s", OBS[i][0]); fprintf(fout, "\n@node Variable %s.%s\n@subsection Variable %s.%s \n\n", scope, varname, scope, varname); fprintf(fout, "Observational measure collected every 2.5 minutes from cf-monitord, description: @var{%s}.", OBS[i][1]); snprintf(varname, CF_MAXVARSIZE, "dev_%s", OBS[i][0]); fprintf(fout, "\n@node Variable %s.%s\n@subsection Variable %s.%s \n\n", scope, varname, scope, varname); fprintf(fout, "Observational measure collected every 2.5 minutes from cf-monitord, description: @var{%s}.", OBS[i][1]); } } RlistDestroy(list); }