/* * Copyright (c) 2016 MariaDB Corporation Ab * * Use of this software is governed by the Business Source License included * in the LICENSE.TXT file and at www.mariadb.com/bsl11. * * Change Date: 2020-01-01 * * On the date above, in accordance with the Business Source License, use * of this software will be governed by version 2 or later of the General * Public License. */ #include #include #include #include #include #include #include #include int main(int argc, char** argv) { unsigned int psize; GWBUF* qbuff; char *tok; char readbuff[4092]; FILE* infile; FILE* outfile; if (argc != 3) { printf("Usage: canonizer \n"); return 1; } if (!utils_init()) { printf("Utils library init failed.\n"); return 1; } set_libdir(strdup("../../qc_sqlite/")); set_datadir(strdup("/tmp")); set_langdir(strdup(".")); set_process_datadir(strdup("/tmp")); qc_setup("qc_sqlite", QC_SQL_MODE_DEFAULT, NULL); qc_process_init(QC_INIT_BOTH); infile = fopen(argv[1], "rb"); outfile = fopen(argv[2], "wb"); if (infile == NULL || outfile == NULL) { printf("Opening files failed.\n"); return 1; } while (!feof(infile) && fgets(readbuff, 4092, infile)) { char* nl = strchr(readbuff, '\n'); if (nl) { *nl = '\0'; } if (strlen(readbuff) > 0) { psize = strlen(readbuff) + 1; qbuff = gwbuf_alloc(psize + 4); *(qbuff->sbuf->data + 0) = (unsigned char) psize; *(qbuff->sbuf->data + 1) = (unsigned char) (psize >> 8); *(qbuff->sbuf->data + 2) = (unsigned char) (psize >> 16); *(qbuff->sbuf->data + 3) = 0x00; *(qbuff->sbuf->data + 4) = 0x03; memcpy(qbuff->start + 5, readbuff, psize - 1); tok = qc_get_canonical(qbuff); fprintf(outfile, "%s\n", tok); free(tok); gwbuf_free(qbuff); } } fclose(infile); fclose(outfile); qc_process_end(QC_INIT_BOTH); return 0; }