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;
|
file_t *f;
|
||||||
xmlNode *x_name = b_node->children;
|
xmlNode *x_name = b_node->children;
|
||||||
xmlNode *x_sum = x_name->next;
|
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)
|
if (strcmp(f->hash_str, (char*) x_sum->content) != 0)
|
||||||
{
|
{
|
||||||
e->type = MD5SUM_VERIFY_FAIL;
|
e->type = MD5SUM_VERIFY_FAIL;
|
||||||
@ -253,7 +253,7 @@ edit(exception_t *e)
|
|||||||
strcat(fullpath, x_group_type);
|
strcat(fullpath, x_group_type);
|
||||||
strcat(fullpath, "/");
|
strcat(fullpath, "/");
|
||||||
strcat(fullpath, x_path);
|
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);
|
replace_text(f, x_before, x_after, x_type, e);
|
||||||
file_close(f);
|
file_close(f);
|
||||||
}
|
}
|
||||||
|
34
src/file_t.c
34
src/file_t.c
@ -7,7 +7,6 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
#include "file_t.h"
|
#include "file_t.h"
|
||||||
|
|
||||||
@ -28,38 +27,27 @@ get_size_by_fd(int fd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
GString *abspath = g_string_new (NULL);
|
char *path;
|
||||||
if (env != NULL)
|
switch (FILEPATH) {
|
||||||
{
|
case FILEPATH_ABSOLUTE: {
|
||||||
char *envpath;
|
path = (char*) filename; break;
|
||||||
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
|
case FILEPATH_RELATIVE: path = (char*) filename; break;
|
||||||
{
|
|
||||||
abspath = filename;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Checks if the file path can be opened. */
|
/* 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->type = NO_FILE;
|
||||||
e->msg = abspath;
|
e->msg = path;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
file_t *f;
|
file_t *f;
|
||||||
f = malloc(sizeof(file_t*));
|
f = malloc(sizeof(file_t*));
|
||||||
f->name = (char*) abspath;
|
f->name = (char*) path;
|
||||||
f->hash = NULL;
|
f->hash = NULL;
|
||||||
f->hash_str = NULL;
|
f->hash_str = NULL;
|
||||||
return f;
|
return f;
|
||||||
@ -68,9 +56,7 @@ file_init(const char *filename, exception_t *e, const char *env)
|
|||||||
void
|
void
|
||||||
file_close(file_t *f)
|
file_close(file_t *f)
|
||||||
{
|
{
|
||||||
free(f->name);
|
if (f->hash_str != NULL) free(f->hash_str);
|
||||||
free(f->hash);
|
|
||||||
free(f->hash_str);
|
|
||||||
free(f);
|
free(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
#include "exception_t.h"
|
#include "exception_t.h"
|
||||||
|
|
||||||
|
typedef enum filepath_t {
|
||||||
|
FILEPATH_ABSOLUTE,
|
||||||
|
FILEPATH_RELATIVE
|
||||||
|
} filepath_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper to file
|
* Wrapper to file
|
||||||
*/
|
*/
|
||||||
@ -20,7 +25,7 @@ typedef struct file_t {
|
|||||||
* @return Pointer to file_t
|
* @return Pointer to file_t
|
||||||
*/
|
*/
|
||||||
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
|
* Destroy file_t
|
||||||
|
@ -6,9 +6,9 @@ START_TEST(test_file_init)
|
|||||||
{
|
{
|
||||||
file_t *f;
|
file_t *f;
|
||||||
exception_t *e = NULL;
|
exception_t *e = NULL;
|
||||||
f = file_init ("samples/1.txt", e, NULL);
|
f = file_init ("samples/1.txt", FILEPATH_RELATIVE, e);
|
||||||
ck_assert_ptr_ne (f, NULL);
|
ck_assert_ptr_nonnull (f);
|
||||||
ck_assert_ptr_eq (e, NULL);
|
ck_assert_ptr_null (e);
|
||||||
file_close (f);
|
file_close (f);
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
@ -17,11 +17,11 @@ START_TEST(test_file_md5)
|
|||||||
{
|
{
|
||||||
file_t *f;
|
file_t *f;
|
||||||
exception_t *e = NULL;
|
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);
|
file_md5_gen (f, e);
|
||||||
ck_assert_ptr_eq (e, NULL);
|
ck_assert_ptr_null (e);
|
||||||
file_md5_str (f, 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");
|
ck_assert_str_eq (f->hash_str, "492ff087b26577237c576e7ad409064e");
|
||||||
file_close (f);
|
file_close (f);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user