From b2f9953f31cf6dea6d3f2b00043c40f20e0b4ab2 Mon Sep 17 00:00:00 2001 From: Pradana AUMARS Date: Tue, 29 Jun 2021 22:56:55 +0200 Subject: [PATCH] Set all members to NULL or 0 manually and implement fopen under EASYCSV_W --- src/easycsv.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/easycsv.c b/src/easycsv.c index cad0889..859cc8b 100644 --- a/src/easycsv.c +++ b/src/easycsv.c @@ -688,22 +688,35 @@ _easycsv_priv_init(const char *fp, const EASYCSV_ERRORMSG error) { _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; /* Open file according to mode */ switch (mode) { - case EASYCSV_R: - case EASYCSV_W: { + case EASYCSV_R: { _priv->file = fopen(fp, "r"); break; } + case EASYCSV_W: { + _priv->file = fopen(fp, "w"); + break; + } default: { _easycsv_printerror(_priv, EASYCSV_UNKNOWNIOMODE); _easycsv_priv_free(_priv); return NULL; } + } if (_priv->file == NULL) { @@ -724,17 +737,14 @@ _easycsv_priv_init(const char *fp, _priv->rows = _easycsv_rows(_priv, mode); _priv->cols = _easycsv_columns(_priv, mode); } - else { - _priv->rows = 0; - _priv->cols = 0; - } - if (mode == EASYCSV_W) { - - /* csv->tmpfp = malloc(16 + stfp + 1); */ - /* strncpy(csv->tmpfp, prefix, 16); */ + if (mode == EASYCSV_W) { + + /* csv->tmpfp = malloc(16 + stfp + 1); */ + /* strncpy(csv->tmpfp, prefix, 16); */ + /* strncat(csv->tmpfp, fp, stfp); */ - + do { /* Write to temporary file */ unsigned int i = 1; @@ -784,8 +794,7 @@ _easycsv_priv_init(const char *fp, */ } - - } + return _priv; }