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,
|
||||
const void *cb_data);
|
||||
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,
|
||||
const void *data, unsigned long long length, Eina_Bool copy);
|
||||
Eina_Bool eina_file_virtual(Eina_File *file);
|
||||
|
@ -315,6 +316,11 @@ M.File = ffi.metatype("Eina_File", {
|
|||
open = function(name, shared)
|
||||
return eina.eina_file_open(name, shared)
|
||||
end,
|
||||
|
||||
unlink = function(self)
|
||||
return eina.eina_file_unlink(pathname)
|
||||
end,
|
||||
|
||||
virtualize = function(vname, data, length, copy)
|
||||
return eina.eina_file_virtualize(vname, data, length,
|
||||
copy or false)
|
||||
|
|
|
@ -898,6 +898,16 @@ eina_file_refresh(Eina_File *file)
|
|||
return r;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
eina_file_unlink(const char *pathname)
|
||||
{
|
||||
if ( unlink(pathname) < 0)
|
||||
{
|
||||
return EINA_FALSE;
|
||||
}
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI void *
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return NULL;
|
||||
|
|
|
@ -824,6 +824,45 @@ START_TEST(eina_test_file_mktemp)
|
|||
}
|
||||
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
|
||||
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_statat);
|
||||
tcase_add_test(tc, eina_test_file_mktemp);
|
||||
tcase_add_test(tc, eina_test_file_unlink);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue