MassimilianoPinto cb57e10761 Develop merge
Develop merge
2017-06-29 15:34:22 +02:00

89 lines
2.2 KiB
C

/*
* 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 <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <maxscale/query_classifier.h>
#include <maxscale/buffer.h>
#include <maxscale/paths.h>
#include <maxscale/utils.h>
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 <input file> <output file>\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;
}