Implemeted CSV backend, add it to makefile, correct some errors in smart_records.c

This commit is contained in:
2020-07-26 11:52:14 +02:00
parent 7add1eb8e5
commit 22c5d9ea80
6 changed files with 28 additions and 20 deletions

View File

@@ -1,18 +1,16 @@
CFLAGS=-D_WITH_INTERACTIVE_TERMINAL -ggdb -Wall
CFLAGS=-D_WITH_INTERACTIVE_TERMINAL `pkg-config --cflags mysqlclient` -ggdb -Wall
LDFLAGS=`pkg-config --libs mysqlclient`
all: test
all: test mysql_backend.a
clean:
rm -f *.o mysql_backend_test
rm -f *.o *.a mysql_backend_test
test: mysql_backend_test
mysql_backend.o: mysql_backend.c
$(CC) $(CFLAGS) `pkg-config --cflags mysqlclient` -c -o $@ $?
mysql_backend.a: mysql_backend.o mysql_backend_utils.o
$(AR) -rcv $@ $?
mysql_backend_utils.o: mysql_backend_utils.c
$(CC) $(CFLAGS) `pkg-config --cflags mysqlclient` -c -o $@ $?
mysql_backend_test: mysql_backend.c mysql_backend_utils.o
mysql_backend_test: mysql_backend.c mysql_backend_utils.c
$(CC) $(CFLAGS) -D_TEST `pkg-config --cflags --libs mysqlclient` -o $@ $?

View File

@@ -79,7 +79,7 @@ int mysql_backend_write_record(void *ctx, char **error, ...)
{
mysql_backend_ctx_t *c;
char *record = NULL;
int ret=0, size=0;
int size=0;
va_list ap;
if (!ctx) {

View File

@@ -7,7 +7,7 @@
void *mysql_backend_init(char **error);
int mysql_backend_open_records_base(void *ctx, char **error, const char *uri);
int mysql_backend_write_record(void *ctx, char **error, va_list ap);
int mysql_backend_set_format(void *ctx, char **error, char *format);
int mysql_backend_set_format(void *ctx, char **error, const char *format);
int mysql_backend_close_records_base(void *ctx);
#endif

View File

@@ -122,7 +122,7 @@ failed:
return NULL;
}
#ifdef _TEST
#ifdef _TEST_URI
char *tests[7][2] = {
{ "Every info provided",
"mysql://leon:bruxelles@lafrite:1024/STOCK_PATATE.avril" },

View File

@@ -6,7 +6,7 @@
#include "smart_records_internals.h"
#ifdef _HAS_MYSQL
#include "mysql_backend.h"
#include "mysql_backend/mysql_backend.h"
#endif
#ifdef _HAS_SQLITE
@@ -18,7 +18,7 @@
#endif
#ifdef _HAS_CSV
#include "csv_backend.h"
#include "csv_backend/csv_backend.h"
#endif
@@ -42,11 +42,10 @@ int smart_records_open_base(smart_records_ctx_t *ctx, char **error, const char *
ctx->write_record = mysql_backend_write_record;
ctx->set_format = mysql_backend_set_format;
ctx->close_records_base = mysql_backend_close_records_base;
if ((ctx->backend_ctx = mysql_backend_init(error) == NULL)
if (!(ctx->backend_ctx = mysql_backend_init(error)))
goto failed;
#else
set_error_and_fails("built without support for mysql:// URIs");
goto failed;
#endif
}
@@ -66,6 +65,12 @@ int smart_records_open_base(smart_records_ctx_t *ctx, char **error, const char *
else if(!strncmp("csv://", uri, len_uri < 8 ? len_uri : 8)) {
#ifdef _HAS_CSV
ctx->backend_ctx = NULL;
ctx->write_record = csv_backend_write_record;
ctx->set_format = csv_backend_set_format;
ctx->close_records_base = csv_backend_close_records_base;
if (!(ctx->backend_ctx = csv_backend_init(error)))
goto failed;
#else
set_error_and_fails("built without suppor fort csv:// URIs");
#endif
@@ -93,3 +98,8 @@ int smart_records_write(smart_records_ctx_t *ctx, char **error, va_list ap)
{
return ctx->write_record(ctx, error, ap);
}
int main(int ac, char **av)
{
printf("coucou !\n");
}

View File

@@ -7,10 +7,10 @@
#define set_error_and_fails(x) { if (error) *error = strdup(x); goto failed; }
typedef struct smart_records_ctx_t {
void *CTX;
int (*set_format) (struct smart_records_ctx_t *ctx, char **error, const char *fmt);
int (*write_record) (struct smart_records_ctx_t *ctx, char **error, va_list ap);
int (*close_records_base) (struct smart_records_ctx_t *ctx);
void *backend_ctx;
int (*set_format) (void *ctx, char **error, const char *fmt);
int (*write_record) (void *ctx, char **error, va_list ap);
int (*close_records_base) (void *ctx);
} smart_records_ctx_t ;
#endif