efl/src/lib/efl/interfaces/efl_file.c

63 lines
1.2 KiB
C

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Efl.h>
typedef struct _Efl_File_Data Efl_File_Data;
struct _Efl_File_Data
{
Efl_Image_Load_Error error;
};
static Eina_Bool
_efl_file_file_set(Eo *obj, Efl_File_Data *pd, const char *file, const char *key)
{
char *tmp = NULL;
Eina_File *f = NULL;
Eina_Bool r = EINA_FALSE;
pd->error = EFL_IMAGE_LOAD_ERROR_DOES_NOT_EXIST;
tmp = (char*)(file);
if (tmp)
{
tmp = eina_vpath_resolve(tmp);
}
if (tmp)
{
f = eina_file_open(tmp, EINA_FALSE);
if (!f) goto on_error;
}
pd->error = EFL_IMAGE_LOAD_ERROR_NONE;
r = efl_file_mmap_set(obj, f, key);
if (f) eina_file_close(f);
on_error:
free(tmp);
return r;
}
static void
_efl_file_file_get(const Eo *obj, Efl_File_Data *pd EINA_UNUSED, const char **file, const char **key)
{
const Eina_File *f = NULL;
efl_file_mmap_get(obj, &f, key);
if (f && file) *file = eina_file_filename_get(f);
else if (file) *file = NULL;
}
static Efl_Image_Load_Error
_efl_file_load_error_get(const Eo *obj EINA_UNUSED, Efl_File_Data *pd)
{
return pd->error;
}
#include "interfaces/efl_file.eo.c"