forked from enlightenment/efl
eina_file: add eina_file_unlink
Test Plan: split D4423 - unlink Reviewers: raster, vtorri, an.kroitor, jpeg, reutskiy.v.v, NikaWhite, cedric Reviewed By: cedric Subscribers: artem.popov, cedric, vtorri, jpeg Tags: #windows, #efl Differential Revision: https://phab.enlightenment.org/D4485 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
b04fa2ddba
commit
808fcf4dae
|
@ -97,6 +97,7 @@ ffi.cdef [[
|
||||||
Eina_File_Copy_Flags flags, Eina_File_Copy_Progress cb,
|
Eina_File_Copy_Flags flags, Eina_File_Copy_Progress cb,
|
||||||
const void *cb_data);
|
const void *cb_data);
|
||||||
Eina_File *eina_file_open(const char *name, Eina_Bool shared);
|
Eina_File *eina_file_open(const char *name, Eina_Bool shared);
|
||||||
|
Eina_Bool eina_file_unlink(const char *pathname);
|
||||||
Eina_File *eina_file_virtualize(const char *virtual_name,
|
Eina_File *eina_file_virtualize(const char *virtual_name,
|
||||||
const void *data, unsigned long long length, Eina_Bool copy);
|
const void *data, unsigned long long length, Eina_Bool copy);
|
||||||
Eina_Bool eina_file_virtual(Eina_File *file);
|
Eina_Bool eina_file_virtual(Eina_File *file);
|
||||||
|
@ -315,6 +316,11 @@ M.File = ffi.metatype("Eina_File", {
|
||||||
open = function(name, shared)
|
open = function(name, shared)
|
||||||
return eina.eina_file_open(name, shared)
|
return eina.eina_file_open(name, shared)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
unlink = function(self)
|
||||||
|
return eina.eina_file_unlink(pathname)
|
||||||
|
end,
|
||||||
|
|
||||||
virtualize = function(vname, data, length, copy)
|
virtualize = function(vname, data, length, copy)
|
||||||
return eina.eina_file_virtualize(vname, data, length,
|
return eina.eina_file_virtualize(vname, data, length,
|
||||||
copy or false)
|
copy or false)
|
||||||
|
|
|
@ -898,6 +898,16 @@ eina_file_refresh(Eina_File *file)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
eina_file_unlink(const char *pathname)
|
||||||
|
{
|
||||||
|
if ( unlink(pathname) < 0)
|
||||||
|
{
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void *
|
EAPI void *
|
||||||
eina_file_map_all(Eina_File *file, Eina_File_Populate rule)
|
eina_file_map_all(Eina_File *file, Eina_File_Populate rule)
|
||||||
{
|
{
|
||||||
|
|
|
@ -821,6 +821,30 @@ eina_file_open(const char *path, Eina_Bool shared)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
eina_file_unlink(const char *pathname)
|
||||||
|
{
|
||||||
|
char *unlink_path = eina_file_path_sanitize(pathname);
|
||||||
|
Eina_File *file = eina_hash_find(_eina_file_cache, unlink_path);
|
||||||
|
|
||||||
|
if (file)
|
||||||
|
{
|
||||||
|
if (file->handle != INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
CloseHandle(file->handle);
|
||||||
|
file->handle = INVALID_HANDLE_VALUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( unlink(unlink_path) < 0)
|
||||||
|
{
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EAPI Eina_Iterator *eina_file_xattr_get(Eina_File *file EINA_UNUSED)
|
EAPI Eina_Iterator *eina_file_xattr_get(Eina_File *file EINA_UNUSED)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -824,6 +824,45 @@ START_TEST(eina_test_file_mktemp)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
int create_file_not_empty(const char *file_name, Eina_Tmpstr **test_file_path, Eina_Bool close_file)
|
||||||
|
{
|
||||||
|
const char *data = "abcdefghijklmnopqrstuvwxyz";
|
||||||
|
int data_size = strlen(data);
|
||||||
|
int wr_size;
|
||||||
|
int fd = eina_file_mkstemp(file_name, test_file_path);
|
||||||
|
fail_if(fd <= 0);
|
||||||
|
wr_size = write(fd, data, data_size);
|
||||||
|
if(close_file == EINA_TRUE)
|
||||||
|
{
|
||||||
|
close(fd);
|
||||||
|
fd = 0;
|
||||||
|
}
|
||||||
|
fail_if(wr_size != data_size);
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(eina_test_file_unlink)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
Eina_File *file;
|
||||||
|
Eina_Tmpstr *test_file_path;
|
||||||
|
const char *tmpfile = "eina_file_test_XXXXXX";
|
||||||
|
|
||||||
|
eina_init();
|
||||||
|
|
||||||
|
/*If file was not opened as 'eina'*/
|
||||||
|
fd = create_file_not_empty(tmpfile, &test_file_path, EINA_TRUE);
|
||||||
|
fail_if( !eina_file_unlink(test_file_path) );
|
||||||
|
|
||||||
|
/*If file was opened as 'eina'*/
|
||||||
|
fd = create_file_not_empty(tmpfile, &test_file_path, EINA_TRUE);
|
||||||
|
fail_if( !eina_file_open(test_file_path, EINA_FALSE) );
|
||||||
|
fail_if( !eina_file_unlink(test_file_path) );
|
||||||
|
|
||||||
|
eina_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
void
|
void
|
||||||
eina_test_file(TCase *tc)
|
eina_test_file(TCase *tc)
|
||||||
{
|
{
|
||||||
|
@ -840,4 +879,6 @@ eina_test_file(TCase *tc)
|
||||||
tcase_add_test(tc, eina_test_file_copy);
|
tcase_add_test(tc, eina_test_file_copy);
|
||||||
tcase_add_test(tc, eina_test_file_statat);
|
tcase_add_test(tc, eina_test_file_statat);
|
||||||
tcase_add_test(tc, eina_test_file_mktemp);
|
tcase_add_test(tc, eina_test_file_mktemp);
|
||||||
|
tcase_add_test(tc, eina_test_file_unlink);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue