Compare commits

...

9 Commits

4 changed files with 75 additions and 15003 deletions

3
bootstrap Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
exec autoreconf --verbose --install --force

14948
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -201,7 +201,7 @@ easycsv_init_errormsg(const char *fp,
csv->start = clock(); csv->start = clock();
#endif #endif
easycsv *csv = malloc(sizeof *csv); easycsv *csv = malloc(sizeof(easycsv));
csv->mode = mode; csv->mode = mode;
csv->_priv = _easycsv_priv_init(fp, mode, error); csv->_priv = _easycsv_priv_init(fp, mode, error);
@ -687,23 +687,36 @@ _easycsv_priv_init(const char *fp,
const EASYCSV_MODE mode, const EASYCSV_MODE mode,
const EASYCSV_ERRORMSG error) const EASYCSV_ERRORMSG error)
{ {
_easycsv *_priv = malloc(sizeof *_priv); _easycsv *_priv = malloc(sizeof(_easycsv));
memset(_priv, 0, sizeof(*_priv)); // set all members to NULL or 0
_priv->file = NULL;
_priv->temp = NULL;
_priv->fp = NULL;
_priv->tmpfp = NULL;
_priv->rows = 0;
_priv->cols = 0;
#ifdef EASYCSV_DEBUG
_priv->start = 0;
#endif
_priv->error = error; _priv->error = error;
/* Open file according to mode */ /* Open file according to mode */
switch (mode) { switch (mode) {
case EASYCSV_R: case EASYCSV_R: {
case EASYCSV_W: {
_priv->file = fopen(fp, "r"); _priv->file = fopen(fp, "r");
break; break;
} }
case EASYCSV_W: {
_priv->file = fopen(fp, "w");
break;
}
default: { default: {
_easycsv_printerror(_priv, EASYCSV_UNKNOWNIOMODE); _easycsv_printerror(_priv, EASYCSV_UNKNOWNIOMODE);
_easycsv_priv_free(_priv); _easycsv_priv_free(_priv);
return NULL; return NULL;
} }
}
if (_priv->file == NULL) if (_priv->file == NULL)
{ {
@ -717,24 +730,21 @@ _easycsv_priv_init(const char *fp,
/* Allocate memory for char* */ /* Allocate memory for char* */
_priv->fp = malloc(stfp + 1); // + 1 for null _priv->fp = malloc(stfp + 1); // + 1 for null
strncpy(_priv->fp, fp, stfp); strcpy(_priv->fp, fp);
/* Calculate rows and cols if file exists */ /* Calculate rows and cols if file exists */
if (access(_priv->fp, F_OK) == 0) { if (access(_priv->fp, F_OK) == 0) {
_priv->rows = _easycsv_rows(_priv, mode); _priv->rows = _easycsv_rows(_priv, mode);
_priv->cols = _easycsv_columns(_priv, mode); _priv->cols = _easycsv_columns(_priv, mode);
} }
else {
_priv->rows = 0;
_priv->cols = 0;
}
if (mode == EASYCSV_W) { if (mode == EASYCSV_W) {
/* csv->tmpfp = malloc(16 + stfp + 1); */ /* csv->tmpfp = malloc(16 + stfp + 1); */
/* strncpy(csv->tmpfp, prefix, 16); */ /* strncpy(csv->tmpfp, prefix, 16); */
/* strncat(csv->tmpfp, fp, stfp); */ /* strncat(csv->tmpfp, fp, stfp); */
do { do {
/* Write to temporary file */ /* Write to temporary file */
unsigned int i = 1; unsigned int i = 1;
@ -784,8 +794,7 @@ _easycsv_priv_init(const char *fp,
*/ */
} }
}
return _priv; return _priv;
} }
@ -892,7 +901,7 @@ _easycsv_columns(_easycsv *_priv,
3. if >1 column, n commas = n+1 columns 3. if >1 column, n commas = n+1 columns
*/ */
unsigned int col = 1; int col = 1;
char c; char c;
while ((c = fgetc(_priv->file)) != '\n') { while ((c = fgetc(_priv->file)) != '\n') {

View File

@ -4,28 +4,59 @@
static const char SAMPLE1_PATH[] = "samples/1.csv"; static const char SAMPLE1_PATH[] = "samples/1.csv";
static const char SAMPLE2_PATH[] = "samples/2.csv"; static const char SAMPLE2_PATH[] = "samples/2.csv";
START_TEST(test_easycsv_init_read) START_TEST(test_easycsv_init_read_1)
{ {
easycsv *csv = NULL; easycsv *csv = NULL;
csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R); csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R);
ck_assert_ptr_nonnull(csv); ck_assert_ptr_nonnull(csv);
easycsv_free(csv); easycsv_free(csv);
}
START_TEST(test_easycsv_init_read_2)
{
easycsv *csv = NULL;
csv = easycsv_init(SAMPLE2_PATH, EASYCSV_R); csv = easycsv_init(SAMPLE2_PATH, EASYCSV_R);
ck_assert_ptr_nonnull(csv); ck_assert_ptr_null(csv);
easycsv_free(csv); easycsv_free(csv);
} }
START_TEST(test_easycsv_init_write) START_TEST(test_easycsv_init_write_1)
{ {
easycsv *csv = NULL; easycsv *csv = NULL;
csv = easycsv_init(SAMPLE1_PATH, EASYCSV_W); csv = easycsv_init(SAMPLE1_PATH, EASYCSV_W);
ck_assert_ptr_nonnull(csv); ck_assert_ptr_nonnull(csv);
easycsv_free(csv); easycsv_free(csv);
}
START_TEST(test_easycsv_init_write_2)
{
easycsv *csv = NULL;
csv = easycsv_init(SAMPLE2_PATH, EASYCSV_W); csv = easycsv_init(SAMPLE2_PATH, EASYCSV_W);
ck_assert_ptr_nonnull(csv); ck_assert_ptr_nonnull(csv);
easycsv_free(csv); easycsv_free(csv);
} }
Suite*
easycsv_constructor_suite(void)
{
Suite *s;
TCase *tc_read, *tc_write;
s = suite_create ("constructor");
tc_read = tcase_create ("read mode");
tc_write = tcase_create ("write mode");
tcase_add_test(tc_read, test_easycsv_init_read_1);
tcase_add_test(tc_read, test_easycsv_init_read_2);
tcase_add_test(tc_write, test_easycsv_init_write_1);
tcase_add_test(tc_write, test_easycsv_init_write_2);
suite_add_tcase(s, tc_read);
//suite_add_tcase(s, tc_write);
return s;
}
START_TEST(test_easycsv_printcolumns) START_TEST(test_easycsv_printcolumns)
{ {
easycsv *csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R); easycsv *csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R);
@ -50,46 +81,24 @@ START_TEST(test_easycsv_readcolumnvalue)
easycsv_free(csv); easycsv_free(csv);
} }
Suite*
easycsv_constructor_suite(void)
{
Suite *s;
TCase *tc_init;
s = suite_create ("constructor");
tc_init = tcase_create ("basic constructor");
tcase_add_test(tc_init, test_easycsv_init_read);
tcase_add_test(tc_init, test_easycsv_init_write);
suite_add_tcase(s, tc_init);
return s;
}
Suite*
easycsv_print_suite(void)
{
Suite *s;
TCase *tc_col, *tc_row;
s = suite_create ("print");
tc_col = tcase_create ("columns");
tc_row = tcase_create ("rows");
tcase_add_test(tc_col, test_easycsv_printcolumns);
tcase_add_test(tc_row, test_easycsv_printrows);
suite_add_tcase(s, tc_col);
suite_add_tcase(s, tc_row);
return s;
}
Suite* Suite*
easycsv_read_suite(void) easycsv_read_suite(void)
{ {
Suite *s; Suite *s;
TCase *tc_readcolumnvalue; TCase *tc_readcolumnvalue, *tc_col, *tc_row;
s = suite_create ("read"); s = suite_create ("read");
tc_readcolumnvalue = tcase_create ("readcolumnvalue"); tc_readcolumnvalue = tcase_create ("readcolumnvalue");
tcase_add_test(tc_readcolumnvalue, test_easycsv_readcolumnvalue); tcase_add_test(tc_readcolumnvalue, test_easycsv_readcolumnvalue);
tc_col = tcase_create ("columns");
tcase_add_test(tc_col, test_easycsv_printcolumns);
tc_row = tcase_create ("rows");
tcase_add_test(tc_row, test_easycsv_printrows);
suite_add_tcase(s, tc_readcolumnvalue);
suite_add_tcase(s, tc_col);
suite_add_tcase(s, tc_row);
return s; return s;
} }
@ -101,7 +110,6 @@ main(void)
SRunner *sr; SRunner *sr;
sr = srunner_create(easycsv_constructor_suite()); sr = srunner_create(easycsv_constructor_suite());
srunner_add_suite(sr, easycsv_print_suite());
srunner_add_suite(sr, easycsv_read_suite()); srunner_add_suite(sr, easycsv_read_suite());
srunner_run_all(sr, CK_VERBOSE); srunner_run_all(sr, CK_VERBOSE);