Implemeted CSV backend, add it to makefile, correct some errors in smart_records.c
This commit is contained in:
@@ -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:
|
clean:
|
||||||
rm -f *.o mysql_backend_test
|
rm -f *.o *.a mysql_backend_test
|
||||||
|
|
||||||
test: mysql_backend_test
|
test: mysql_backend_test
|
||||||
|
|
||||||
mysql_backend.o: mysql_backend.c
|
mysql_backend.a: mysql_backend.o mysql_backend_utils.o
|
||||||
$(CC) $(CFLAGS) `pkg-config --cflags mysqlclient` -c -o $@ $?
|
$(AR) -rcv $@ $?
|
||||||
|
|
||||||
mysql_backend_utils.o: mysql_backend_utils.c
|
mysql_backend_test: mysql_backend.c mysql_backend_utils.c
|
||||||
$(CC) $(CFLAGS) `pkg-config --cflags mysqlclient` -c -o $@ $?
|
|
||||||
|
|
||||||
mysql_backend_test: mysql_backend.c mysql_backend_utils.o
|
|
||||||
$(CC) $(CFLAGS) -D_TEST `pkg-config --cflags --libs mysqlclient` -o $@ $?
|
$(CC) $(CFLAGS) -D_TEST `pkg-config --cflags --libs mysqlclient` -o $@ $?
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ int mysql_backend_write_record(void *ctx, char **error, ...)
|
|||||||
{
|
{
|
||||||
mysql_backend_ctx_t *c;
|
mysql_backend_ctx_t *c;
|
||||||
char *record = NULL;
|
char *record = NULL;
|
||||||
int ret=0, size=0;
|
int size=0;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
if (!ctx) {
|
if (!ctx) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
void *mysql_backend_init(char **error);
|
void *mysql_backend_init(char **error);
|
||||||
int mysql_backend_open_records_base(void *ctx, char **error, const char *uri);
|
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_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);
|
int mysql_backend_close_records_base(void *ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ failed:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _TEST
|
#ifdef _TEST_URI
|
||||||
char *tests[7][2] = {
|
char *tests[7][2] = {
|
||||||
{ "Every info provided",
|
{ "Every info provided",
|
||||||
"mysql://leon:bruxelles@lafrite:1024/STOCK_PATATE.avril" },
|
"mysql://leon:bruxelles@lafrite:1024/STOCK_PATATE.avril" },
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#include "smart_records_internals.h"
|
#include "smart_records_internals.h"
|
||||||
|
|
||||||
#ifdef _HAS_MYSQL
|
#ifdef _HAS_MYSQL
|
||||||
#include "mysql_backend.h"
|
#include "mysql_backend/mysql_backend.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _HAS_SQLITE
|
#ifdef _HAS_SQLITE
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _HAS_CSV
|
#ifdef _HAS_CSV
|
||||||
#include "csv_backend.h"
|
#include "csv_backend/csv_backend.h"
|
||||||
#endif
|
#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->write_record = mysql_backend_write_record;
|
||||||
ctx->set_format = mysql_backend_set_format;
|
ctx->set_format = mysql_backend_set_format;
|
||||||
ctx->close_records_base = mysql_backend_close_records_base;
|
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;
|
goto failed;
|
||||||
#else
|
#else
|
||||||
set_error_and_fails("built without support for mysql:// URIs");
|
set_error_and_fails("built without support for mysql:// URIs");
|
||||||
goto failed;
|
|
||||||
#endif
|
#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)) {
|
else if(!strncmp("csv://", uri, len_uri < 8 ? len_uri : 8)) {
|
||||||
#ifdef _HAS_CSV
|
#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
|
#else
|
||||||
set_error_and_fails("built without suppor fort csv:// URIs");
|
set_error_and_fails("built without suppor fort csv:// URIs");
|
||||||
#endif
|
#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);
|
return ctx->write_record(ctx, error, ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int main(int ac, char **av)
|
||||||
|
{
|
||||||
|
printf("coucou !\n");
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
#define set_error_and_fails(x) { if (error) *error = strdup(x); goto failed; }
|
#define set_error_and_fails(x) { if (error) *error = strdup(x); goto failed; }
|
||||||
|
|
||||||
typedef struct smart_records_ctx_t {
|
typedef struct smart_records_ctx_t {
|
||||||
void *CTX;
|
void *backend_ctx;
|
||||||
int (*set_format) (struct smart_records_ctx_t *ctx, char **error, const char *fmt);
|
int (*set_format) (void *ctx, char **error, const char *fmt);
|
||||||
int (*write_record) (struct smart_records_ctx_t *ctx, char **error, va_list ap);
|
int (*write_record) (void *ctx, char **error, va_list ap);
|
||||||
int (*close_records_base) (struct smart_records_ctx_t *ctx);
|
int (*close_records_base) (void *ctx);
|
||||||
} smart_records_ctx_t ;
|
} smart_records_ctx_t ;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user