static int fromPlain2(const char *inStr, const char *inPath, const char *outFilename, DFError **error)
{
    char *outExtension = DFPathExtension(outFilename);
    int isDocx = DFStringEqualsCI(outExtension,"docx");
    int ok = 0;

    if (!isDocx) {
        DFErrorFormat(error,"%s: Unknown extension",outFilename);
        goto end;
    }

    DFStorage *storage = NULL;

    storage = Word_fromPlain(inStr,inPath,error);
    if (storage == NULL)
        goto end;

    ok = DFZip(outFilename,storage,error);
    DFStorageRelease(storage);

    return ok;
end:
    free(outExtension);
    return ok;
}
Exemple #2
0
static int runCommand(int argc, const char **argv, DFError **dferr)
{
    if ((argc == 3) && !strcmp(argv[1],"-pp")) {
        return prettyPrintFile(argv[2],dferr);
    }
    else if ((argc == 4) && !strcmp(argv[1],"-fp")) {
        return fromPlain(argv[2],argv[3],dferr);
    }
    else if ((argc == 3) && !strcmp(argv[1],"-normalize")) {
        return normalizeFile(argv[2],dferr);
    }
    else if ((argc >= 2) && !strcmp(argv[1],"-bdt")) {
        BDT_Test(argc-2,&argv[2]);
        return 1;
    }
    else if ((argc == 3) && !strcmp(argv[1],"-css")) {
        return testCSS(argv[2],dferr);
    }
    else if ((argc == 3) && !strcmp(argv[1],"-parsehtml")) {
        return parseHTMLFile(argv[2],dferr);
    }
    else if ((argc == 3) && !strcmp(argv[1],"-tplist")) {
        return textPackageList(argv[2],dferr);
    }
    else if ((argc == 4) && !strcmp(argv[1],"-tpget")) {
        return textPackageGet(argv[2],argv[3],dferr);
    }
    else if ((argc == 4) && !strcmp(argv[1],"-diff")) {
        return diffFiles(argv[2],argv[3],dferr);
    }
    else if ((argc == 3) && !strcmp(argv[1],"-parsecontent")) {
        parseContent(argv[2]);
        return 1;
    }
    else if ((argc >= 2) && !strcmp(argv[1],"-btos")) {
        const char *inFilename = (argc >= 3) ? argv[2] : NULL;
        const char *outFilename = (argc >= 4) ? argv[3] : NULL;
        return btosFile(inFilename,outFilename,dferr);
    }
    else if ((argc >= 2) && !strcmp(argv[1],"-stob")) {
        const char *inFilename = (argc >= 3) ? argv[2] : NULL;
        const char *outFilename = (argc >= 4) ? argv[3] : NULL;
        return stobFile(inFilename,outFilename,dferr);
    }
    else if ((argc == 3) && (!strcmp(argv[1],"-css-escape"))) {
        return escapeCSSIdent(argv[2],dferr);
    }
    else if ((argc == 3) && (!strcmp(argv[1],"-css-unescape"))) {
        return unescapeCSSIdent(argv[2],dferr);
    }
#ifdef __APPLE__
    else if ((argc == 2) && (!strcmp(argv[1],"-test-unicode"))) {
        return testUnicode();
    }
    else if ((argc == 2) && (!strcmp(argv[1],"-test-strings"))) {
        return testStrings();
    }
    else if ((argc == 2) && (!strcmp(argv[1],"-test-path"))) {
        testPathFunctions();
        return 1;
    }
#endif
    else if ((argc == 4) && !strcmp(argv[1],"-zip")) {
        DFStorage *storage = DFStorageNewFilesystem(argv[3],DFFileFormatUnknown);
        int r = DFZip(argv[2],storage,dferr);
        DFStorageRelease(storage);
        return r;
    }
    else if ((argc == 4) && !strcmp(argv[1],"-unzip")) {
        DFStorage *storage = DFStorageNewFilesystem(argv[3],DFFileFormatUnknown);
        int r = DFUnzip(argv[2],storage,dferr);
        DFStorageRelease(storage);
        return r;
    }
    else {
               ////////////////////////////////////////////////////////////////////////////////
        printf("Usage:\n"
               "\n"
              "dfutil -pp filename\n"
              "    Print a plain text version of a .docx or .odt file to standard output\n"
              "\n"
              "dfutil -fp infilename outfilename\n"
              "    Create a .docx or .odt file based on a plain text representation. If\n"
              "    infilename is -, read from standard input.\n"
              "\n"
              "dfutil -normalize filename\n"
              "    Normalize a HTML file\n"
              "\n"
              "dfutil -parsecontent string\n"
              "    Parse a value as if it were given as a CSS 'content' property, and print parts\n"
              "\n"
              "dfutil -btos [infilename] [outfilename]\n"
              "    Convert binary data to string\n"
              "\n"
              "dfutil -stob [infilename] [outfilename]\n"
              "    Convert string to binary data\n"
              "\n"
              "dfutil -css-escape [infilename]\n"
              "    Escape CSS class name\n"
              "\n"
              "dfutil -css-unescape [infilename]\n"
              "    Unescape CSS class name\n"
              "\n"
               "dfutil -zip zipFilename sourceDir\n"
               "    Create a zip file\n"
               "\n"
               "dfutil -unzip zipFilename destDir\n"
               "    Extract a zip file\n"
               "\n"
              "dfutil input.html output.docx\n"
              "dfutil input.html output.odt\n"
              "dfutil input.docx output.html\n"
              "dfutil input.docx output.html\n"
              "    Convert to/from .docx or .odt and .html\n");
        return 1;
    }
}