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:
parent
4c29f89c9d
commit
8f72eabf1f
@ -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);
|
||||
}
|
||||
|
40
src/file_t.c
40
src/file_t.c
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user