コード例 #1
0
static void
dumpCompliances(int modc, SmiModule **modv, int flags, char *output)
{
    int     i;
    FILE    *f = stdout;

    if (output) {
        f = fopen(output, "w");
        if (!f) {
            fprintf(stderr, "smidump: cannot open %s for writing: ", output);
            perror(NULL);
            exit(1);
        }
    }

    for (i = 0; i < modc; i++) {
        if (! (flags & SMIDUMP_FLAG_SILENT)) {
            fprintf(f, "# %s compliances (generated by smidump "
                    SMI_VERSION_STRING ")\n\n", modv[i]->name);
        }
        fprintCompliances(f, modv[i]);
    }

    if (fflush(f) || ferror(f)) {
        perror("smidump: write error");
        exit(1);
    }

    if (output) {
        fclose(f);
    }
}
コード例 #2
0
ファイル: dump-xml.c プロジェクト: pan0007/libsmi
static void dumpXml(int modc, SmiModule **modv, int flags, char *output)
{
    int  i;
    FILE *f = stdout;

    if (output) {
	f = fopen(output, "w");
	if (!f) {
	    fprintf(stderr, "smidump: cannot open %s for writing: ", output);
	    perror(NULL);
	    exit(1);
	}
    }

    for (i = 0; i < modc; i++) {
	
	fprint(f, "<?xml version=\"1.0\"?>\n");
	if (!disabledoctype) {
	    fprint(f, "<!DOCTYPE smi SYSTEM \"http://www.ibr.cs.tu-bs.de/projects/nmrg/smi.dtd\">\n");
	}
	fprint(f, "\n");
	fprint(f, "<!-- This module has been generated by smidump "
	       SMI_VERSION_STRING ". Do not edit. -->\n");
	fprint(f, "\n");

	if (!disableschema) {
	    fprint(f, "<smi xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
	    fprint(f, "     xsi:noNamespaceSchemaLocation=\"http://www.ibr.cs.tu-bs.de/projects/nmrg/smi.xsd\">\n");
	} else {
	    fprint(f, "<smi>\n");
	}
	
	fprintModule(f, modv[i]);
	fprintImports(f, modv[i]);
	fprintTypedefs(f, modv[i]);
	fprintNodes(f, modv[i]);
	fprintNotifications(f, modv[i]);
	fprintGroups(f, modv[i]);
	fprintCompliances(f, modv[i]);
	
	fprint(f, "</smi>\n");
    }
    
    if (fflush(f) || ferror(f)) {
	perror("smidump: write error");
	exit(1);
    }

    if (output) {
	fclose(f);
    }
}
コード例 #3
0
static void dumpSming(int modc, SmiModule **modv, int flags, char *output)
{
    SmiModule   *smiModule;
    SmiNode	*smiNode;
    int		i;
    FILE	*f = stdout;

    silent = (flags & SMIDUMP_FLAG_SILENT);

    if (output) {
	f = fopen(output, "w");
	if (!f) {
	    fprintf(stderr, "smidump: cannot open %s for writing: ", output);
	    perror(NULL);
	    exit(1);
	}
    }

    for (i = 0; i < modc; i++) {

	smiModule = modv[i];
    
	fprint(f, "//\n");
	fprint(f, "// This module has been generated by smidump "
	       SMI_VERSION_STRING ". Do not edit.\n");
	fprint(f, "//\n");
	fprint(f, "module %s ", smiModule->name);
	fprint(f, "{\n");
	fprint(f, "\n");
	
	fprintImports(f, smiModule);
	
	if (! silent) {
	    fprint(f, "//\n// MODULE META INFORMATION\n//\n\n");
	}
	fprintSegment(f, INDENT, "organization", INDENTVALUE);
	fprint(f, "\n");
	fprintMultilineString(f, INDENT, smiModule->organization);
	fprint(f, ";\n\n");
	fprintSegment(f, INDENT, "contact", INDENTVALUE);
	fprint(f, "\n");
	fprintMultilineString(f, INDENT, smiModule->contactinfo);
	fprint(f, ";\n\n");
	fprintSegment(f, INDENT, "description", INDENTVALUE);
	fprint(f, "\n");
	fprintMultilineString(f, INDENT, smiModule->description);
	fprint(f, ";\n\n");
	if (smiModule->reference) {
	    fprintSegment(f, INDENT, "reference", INDENTVALUE);
	    fprint(f, "\n");
	    fprintMultilineString(f, INDENT, smiModule->reference);
	    fprint(f, ";\n\n");
	}
	
	fprintRevisions(f, smiModule);
	
	smiNode = smiGetModuleIdentityNode(smiModule);
	if (smiNode) {
	    fprintSegment(f, INDENT, "identity", INDENTVALUE);
	    fprint(f, "%s;\n\n", smiNode->name);
	}
	
	fprintTypedefs(f, smiModule);
	fprintObjects(f, smiModule);
	fprintNotifications(f, smiModule);
	fprintGroups(f, smiModule);
	fprintCompliances(f, smiModule);
	
	fprint(f, "}; // end of module %s.\n", smiModule->name);
    }
    
    if (fflush(f) || ferror(f)) {
	perror("smidump: write error");
	exit(1);
    }

    if (output) {
	fclose(f);
    }
}