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:
|
||||
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 $@ $?
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" },
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user