Fix test check_file_t.file_init

* Add filepath_t enum key
* file_init writes path according to filepath_t
* file_init does NOT correctly write path FILEPATH_ABSOLUTE
* file_init parameters changed to include filepath_t and no longer includes "ENV" string
* file_close only now frees hash_str when non null ptr
* calibrate verify function updated to use correct file_init parameters
This commit is contained in:
Pradana Aumars 2021-05-31 22:07:06 +02:00
parent 4c29f89c9d
commit 8f72eabf1f
4 changed files with 27 additions and 36 deletions

View File

@ -192,7 +192,7 @@ verify(exception_t *e)
file_t *f;
xmlNode *x_name = b_node->children;
xmlNode *x_sum = x_name->next;
f = file_init((char*) x_name->content, e, "HOME");
f = file_init((char*) x_name->content, FILEPATH_ABSOLUTE, e);
if (strcmp(f->hash_str, (char*) x_sum->content) != 0)
{
e->type = MD5SUM_VERIFY_FAIL;
@ -253,7 +253,7 @@ edit(exception_t *e)
strcat(fullpath, x_group_type);
strcat(fullpath, "/");
strcat(fullpath, x_path);
f = file_init(&fullpath, e, "HOME");
f = file_init(&fullpath, FILEPATH_ABSOLUTE, e);
replace_text(f, x_before, x_after, x_type, e);
file_close(f);
}

View File

@ -7,7 +7,6 @@
#include <errno.h>
#include <unistd.h>
#include <limits.h>
#include <glib.h>
#include "file_t.h"
@ -28,38 +27,27 @@ get_size_by_fd(int fd)
}
file_t*
file_init(const char *filename, exception_t *e, const char *env)
file_init(const char *filename, filepath_t FILEPATH, exception_t *e)
{
GString *abspath = g_string_new (NULL);
if (env != NULL)
{
char *envpath;
size_t sizehome, sizepath;
envpath = getenv (env);
sizehome = strlen(envpath);
sizepath = strlen(filename);
abspath = malloc(sizehome + sizepath + 2);
strcpy (abspath, envpath);
strcat (abspath, "/");
strcat (abspath, filename);
abspath[sizehome + sizepath + 2] = '\0';
}
else
{
abspath = filename;
}
char *path;
switch (FILEPATH) {
case FILEPATH_ABSOLUTE: {
path = (char*) filename; break;
}
case FILEPATH_RELATIVE: path = (char*) filename; break;
}
/* Checks if the file path can be opened. */
if (open(abspath, O_RDONLY) < 0)
if (open(path, O_RDONLY) < 0)
{
e->type = NO_FILE;
e->msg = abspath;
e->msg = path;
return NULL;
}
file_t *f;
f = malloc(sizeof(file_t*));
f->name = (char*) abspath;
f->name = (char*) path;
f->hash = NULL;
f->hash_str = NULL;
return f;
@ -68,9 +56,7 @@ file_init(const char *filename, exception_t *e, const char *env)
void
file_close(file_t *f)
{
free(f->name);
free(f->hash);
free(f->hash_str);
if (f->hash_str != NULL) free(f->hash_str);
free(f);
}

View File

@ -3,6 +3,11 @@
#include "exception_t.h"
typedef enum filepath_t {
FILEPATH_ABSOLUTE,
FILEPATH_RELATIVE
} filepath_t;
/**
* Wrapper to file
*/
@ -20,7 +25,7 @@ typedef struct file_t {
* @return Pointer to file_t
*/
file_t*
file_init(const char *filename, exception_t *e, const char *env);
file_init(const char *filename, filepath_t FILEPATH, exception_t *e);
/**
* Destroy file_t

View File

@ -6,9 +6,9 @@ START_TEST(test_file_init)
{
file_t *f;
exception_t *e = NULL;
f = file_init ("samples/1.txt", e, NULL);
ck_assert_ptr_ne (f, NULL);
ck_assert_ptr_eq (e, NULL);
f = file_init ("samples/1.txt", FILEPATH_RELATIVE, e);
ck_assert_ptr_nonnull (f);
ck_assert_ptr_null (e);
file_close (f);
}
END_TEST
@ -17,11 +17,11 @@ START_TEST(test_file_md5)
{
file_t *f;
exception_t *e = NULL;
f = file_init("samples/1.txt", e, NULL);
f = file_init("samples/1.txt", FILEPATH_RELATIVE, e);
file_md5_gen (f, e);
ck_assert_ptr_eq (e, NULL);
ck_assert_ptr_null (e);
file_md5_str (f, e);
ck_assert_ptr_eq (e, NULL);
ck_assert_ptr_null (e);
ck_assert_str_eq (f->hash_str, "492ff087b26577237c576e7ad409064e");
file_close (f);
}