maybe it's just me but i really dislike an abort() in eina (and generally in any library) if there is an error, it should fail nicely
vincent On Thu, Feb 22, 2018 at 10:40 AM, Marcel Hollerbach <[email protected]> wrote: > Hello, > > i sadly discovered on a system that autotools does not understand that there > is a new eina header. > You might run into issues where eina_vpath.h is not installed correctly on > your system, to fix this just run ./configure again, then it will work. > > Greetings, > bu5hm4n > > > On 02/22/2018 09:35 AM, Marcel Hollerbach wrote: >> >> bu5hm4n pushed a commit to branch master. >> >> >> http://git.enlightenment.org/core/efl.git/commit/?id=8c7ba8c3a31ec671ccd6d7d30682dbd631d69a62 >> >> commit 8c7ba8c3a31ec671ccd6d7d30682dbd631d69a62 >> Author: Marcel Hollerbach <[email protected]> >> Date: Sun Feb 18 21:58:57 2018 +0100 >> >> lets delete efl_vpath >> Its not used anymore. >> ref T5314 >> --- >> src/Makefile_Efl.am | 9 - >> src/lib/efl/Efl.h | 6 - >> src/lib/efl/interfaces/efl_interfaces_main.c | 2 - >> src/lib/efl/interfaces/efl_vpath.eo | 31 -- >> src/lib/efl/interfaces/efl_vpath_core.c | 436 >> -------------------------- >> src/lib/efl/interfaces/efl_vpath_core.eo | 33 -- >> src/lib/efl/interfaces/efl_vpath_file.c | 74 ----- >> src/lib/efl/interfaces/efl_vpath_file.eo | 55 ---- >> src/lib/efl/interfaces/efl_vpath_file_core.c | 66 ---- >> src/lib/efl/interfaces/efl_vpath_file_core.eo | 14 - >> src/lib/efl/interfaces/efl_vpath_manager.c | 88 ------ >> src/lib/efl/interfaces/efl_vpath_manager.eo | 30 -- >> 12 files changed, 844 deletions(-) >> >> diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am >> index 01b98ddfde..f98f554362 100644 >> --- a/src/Makefile_Efl.am >> +++ b/src/Makefile_Efl.am >> @@ -54,11 +54,6 @@ efl_eolian_files = \ >> lib/efl/interfaces/efl_pack_layout.eo \ >> lib/efl/interfaces/efl_pack_linear.eo \ >> lib/efl/interfaces/efl_pack_table.eo \ >> - lib/efl/interfaces/efl_vpath.eo \ >> - lib/efl/interfaces/efl_vpath_manager.eo \ >> - lib/efl/interfaces/efl_vpath_file.eo \ >> - lib/efl/interfaces/efl_vpath_core.eo \ >> - lib/efl/interfaces/efl_vpath_file_core.eo \ >> lib/efl/interfaces/efl_ui_base.eo \ >> lib/efl/interfaces/efl_ui_direction.eo \ >> lib/efl/interfaces/efl_ui_drag.eo \ >> @@ -122,10 +117,6 @@ lib/efl/interfaces/efl_interfaces_main.c \ >> lib/efl/interfaces/efl_model_common.c \ >> lib/efl/interfaces/efl_gfx_path.c \ >> lib/efl/interfaces/efl_gfx_shape.c \ >> -lib/efl/interfaces/efl_vpath_file.c \ >> -lib/efl/interfaces/efl_vpath_manager.c \ >> -lib/efl/interfaces/efl_vpath_core.c \ >> -lib/efl/interfaces/efl_vpath_file_core.c \ >> lib/efl/interfaces/efl_input_device.c \ >> lib/efl/interfaces/efl_io_closer.c \ >> lib/efl/interfaces/efl_io_positioner.c \ >> diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h >> index ed7405ced8..2399c9c30b 100644 >> --- a/src/lib/efl/Efl.h >> +++ b/src/lib/efl/Efl.h >> @@ -62,12 +62,6 @@ typedef struct _Efl_Text_Annotate_Annotation >> Efl_Text_Annotate_Annotation; >> #include <Efl_Model_Common.h> >> -#include "interfaces/efl_vpath_file.eo.h" >> -#include "interfaces/efl_vpath.eo.h" >> -#include "interfaces/efl_vpath_core.eo.h" >> -#include "interfaces/efl_vpath_manager.eo.h" >> -#include "interfaces/efl_vpath_file_core.eo.h" >> - >> /* Data types */ >> #include "interfaces/efl_gfx_types.eot.h" >> #include "interfaces/efl_ui_types.eot.h" >> diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c >> b/src/lib/efl/interfaces/efl_interfaces_main.c >> index d9b87634a6..cb1738e52b 100644 >> --- a/src/lib/efl/interfaces/efl_interfaces_main.c >> +++ b/src/lib/efl/interfaces/efl_interfaces_main.c >> @@ -46,8 +46,6 @@ >> #include "interfaces/efl_canvas.eo.c" >> #include "interfaces/efl_canvas_pointer.eo.c" >> -#include "interfaces/efl_vpath.eo.c" >> - >> #include "interfaces/efl_screen.eo.c" >> /* Packing & containers */ >> diff --git a/src/lib/efl/interfaces/efl_vpath.eo >> b/src/lib/efl/interfaces/efl_vpath.eo >> deleted file mode 100644 >> index ca97f1b090..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath.eo >> +++ /dev/null >> @@ -1,31 +0,0 @@ >> -interface Efl.Vpath >> -{ >> - [[ VPath is the EFL "Virtual Path" system that maps paths and >> downloads >> - >> - You can provide virtual paths common in unix shells like: >> - "~/file.jpg" >> - "~username/file.png" >> - And also other extended paths like: >> - "(:cache:)/file.png" >> - "(:videos:)/file.mp4" >> - ... >> - And in future: >> - "file:///blah.jpg" >> - "http://blah.com/file.jpg" >> - "https://blahblah.com/file.jpg" >> - "ssh://blahblah.com:~/file.jpg" >> - ... >> - >> - @since 1.18 >> - ]] >> - eo_prefix: efl_vpath; >> - methods { >> - fetch { >> - [[ Fetch a new Vpath File object from the Vpath system ]] >> - params { >> - path: string; [[ The input virtual file path to fetch ]] >> - } >> - return: Efl.Vpath.File @owned; [[ An object representing the >> file ]] >> - } >> - } >> -} >> diff --git a/src/lib/efl/interfaces/efl_vpath_core.c >> b/src/lib/efl/interfaces/efl_vpath_core.c >> deleted file mode 100644 >> index d6b136374d..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_core.c >> +++ /dev/null >> @@ -1,436 +0,0 @@ >> -#include "config.h" >> -#include "Efl.h" >> - >> -#ifdef HAVE_GETPWENT >> -# include <sys/types.h> >> -# include <pwd.h> >> -#endif >> - >> -#include <sys/stat.h> >> -#include <sys/types.h> >> -#include <fcntl.h> >> -#include <sys/stat.h> >> -#include <unistd.h> >> - >> -#define MY_CLASS EFL_VPATH_CORE_CLASS >> - >> -typedef struct _Efl_Vpath_Core_Data Efl_Vpath_Core_Data; >> - >> -struct _Efl_Vpath_Core_Data >> -{ >> - Eina_Spinlock lock; >> - Eina_Hash *meta; >> -}; >> - >> -static Efl_Vpath_Core *vpath_core = NULL; >> - >> -EOLIAN static Efl_Object * >> -_efl_vpath_core_efl_object_constructor(Eo *obj, Efl_Vpath_Core_Data *pd) >> -{ >> - char buf[PATH_MAX], bufhome[PATH_MAX]; >> - const char *home, *s; >> - >> - if (vpath_core) return NULL; >> - obj = efl_constructor(efl_super(obj, MY_CLASS)); >> - pd->meta = eina_hash_string_superfast_new >> - ((Eina_Free_Cb)eina_stringshare_del); >> - eina_spinlock_new(&(pd->lock)); >> - >> - vpath_core = obj; >> - >> - // $HOME / ~/ etc. >> - home = eina_environment_home_get(); >> - if (!home) >> - { >> - /* Windows does not have getuid(), but home can't be NULL */ >> -#ifdef HAVE_GETEUID >> - uid_t uid = geteuid(); >> - struct stat st; >> - >> - snprintf(bufhome, sizeof(bufhome), "/tmp/%i", (int)uid); >> - if (mkdir(bufhome, S_IRUSR | S_IWUSR | S_IXUSR) < 0) >> - { >> - if (errno != EEXIST) >> - { >> - if (stat("/tmp", &st) == 0) home = "/tmp"; >> - else home = "/"; >> - } >> - } >> - if (stat(bufhome, &st) == 0) home = bufhome; >> - else >> - { >> - if (stat("/tmp", &st) == 0) home = "/tmp"; >> - else home = "/"; >> - } >> -#else >> - home = "/"; >> -#endif >> - } >> - efl_vpath_core_meta_set(obj, "home", home); >> - // tmp dir - system wide >> - s = eina_environment_tmp_get(); >> - efl_vpath_core_meta_set(obj, "tmp", s); >> - >> -# if defined(HAVE_GETUID) && defined(HAVE_GETEUID) >> -# define ENV_HOME_SET(_env, _dir, _meta) \ >> - if ((getuid() != geteuid()) || (!(s = getenv(_env)))) { \ >> - snprintf(buf, sizeof(buf), "%s/"_dir, home); s = buf; \ >> - } efl_vpath_core_meta_set(obj, _meta, s); >> -#else >> -# define ENV_HOME_SET(_env, _dir, _meta) \ >> - if (!(s = getenv(_env))) { \ >> - snprintf(buf, sizeof(buf), "%s/"_dir, home); s = buf; \ >> - } efl_vpath_core_meta_set(obj, _meta, s); >> -#endif >> - // $XDG_DATA_HOME defines the base directory relative to which user >> - // specific data files should be stored. If $XDG_DATA_HOME is either >> - // not set or empty, a default equal to $HOME/.local/share should be >> - // used. >> - ENV_HOME_SET("XDG_DATA_HOME", ".local/share", "data"); >> - // $XDG_CONFIG_HOME defines the base directory relative to which user >> - // specific configuration files should be stored. If >> $XDG_CONFIG_HOME >> - // is either not set or empty, a default equal to $HOME/.config >> should >> - // be used. >> - ENV_HOME_SET("XDG_CONFIG_HOME", ".config", "config"); >> - // $XDG_CACHE_HOME defines the base directory relative to which >> - // user specific non-essential data files should be stored. If >> - // $XDG_CACHE_HOME is either not set or empty, a default equal to >> - // $HOME/.cache should be used. >> - ENV_HOME_SET("XDG_CACHE_HOME", ".cache", "cache"); >> - // $XDG_RUNTIME_DIR defines the base directory relative to which >> - // user-specific non-essential runtime files and other file objects >> - // (such as sockets, named pipes, ...) should be stored. The >> - // directory MUST be owned by the user, and he MUST be the only one >> - // having read and write access to it. Its Unix access mode MUST >> - // be 0700. >> -#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) >> - if ((getuid() != geteuid()) || (!(s = getenv("XDG_RUNTIME_DIR")))) >> -#else >> - if (!(s = getenv("XDG_RUNTIME_DIR"))) >> -#endif >> - { >> - struct stat st; >> - uid_t uid; >> - >> -#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) >> - uid = getuid(); >> - if (setuid(geteuid()) != 0) >> - { >> - fprintf(stderr, >> - "FATAL: Cannot setuid - errno=%i\n", >> - errno); >> - abort(); >> - } >> -#endif >> - // fallback - make ~/.run >> - snprintf(buf, sizeof(buf), "%s/.run", home); >> - if (mkdir(buf, S_IRUSR | S_IWUSR | S_IXUSR) == 0) s = buf; >> - else >> - { >> - if (errno == EEXIST) >> - { >> - if (stat(buf, &st) == 0) >> - { >> - // some sanity checks - but not for security >> - if (!(st.st_mode & S_IFDIR)) >> - { >> - // fatal - exists but is not a dir >> - fprintf(stderr, >> - "FATAL: run dir '%s' exists but not a >> dir\n", >> - buf); >> - abort(); >> - } >> -#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) >> - if (st.st_uid != geteuid()) >> - { >> - // fatal - run dir doesn't belong to user >> - fprintf(stderr, >> - "FATAL: run dir '%s' not owned by uid >> %i\n", >> - buf, (int)geteuid()); >> - abort(); >> - } >> -#endif >> - // we're ok >> - s = buf; >> - } >> - else >> - { >> - // fatal - we cant create our run dir in ~/ >> - fprintf(stderr, >> - "FATAL: Cannot verify run dir '%s' >> errno=%i\n", >> - buf, errno); >> - abort(); >> - } >> - } >> - else >> - { >> - // fatal - we cant create our run dir in ~/ >> - fprintf(stderr, >> - "FATAL: Cannot create run dir '%s' - >> errno=%i\n", >> - buf, errno); >> - abort(); >> - } >> - } >> -#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) >> - if (setreuid(uid, geteuid()) != 0) >> - { >> - fprintf(stderr, >> - "FATAL: Cannot setreuid - errno=%i\n", >> - errno); >> - abort(); >> - }; >> -#endif >> - } >> - if (!s) s = (char *)efl_vpath_core_meta_get(obj, "tmp"); >> - efl_vpath_core_meta_set(obj, "run", s); >> - // https://www.freedesktop.org/wiki/Software/xdg-user-dirs/ >> - // https://wiki.archlinux.org/index.php/Xdg_user_directories >> - // ^^^^ we don't handle: >> - // /etc/xdg/user-dirs.conf >> - // /etc/xdg/user-dirs.defaults >> - // (:config:)/user-dirs.conf >> - // (:config:)/user-dirs.defaults >> - >> - // $XDG_DESKTOP_DIR="$HOME/Desktop" >> - ENV_HOME_SET("XDG_DESKTOP_DIR", "Desktop", "desktop"); >> - // $XDG_DOCUMENTS_DIR="$HOME/Documents" >> - ENV_HOME_SET("XDG_DOCUMENTS_DIR", "Documents", "documents"); >> - // $XDG_DOWNLOAD_DIR="$HOME/Downloads" >> - ENV_HOME_SET("XDG_DOWNLOAD_DIR", "Downloads", "downloads"); >> - // $XDG_MUSIC_DIR="$HOME/Music" >> - ENV_HOME_SET("XDG_MUSIC_DIR", "Music", "music"); >> - // $XDG_PICTURES_DIR="$HOME/Pictures" >> - ENV_HOME_SET("XDG_PICTURES_DIR", "Pictures", "pictures"); >> - // $XDG_PUBLICSHARE_DIR="$HOME/Public" >> - ENV_HOME_SET("XDG_PUBLIC_DIR", "Public", "public"); >> - // $XDG_TEMPLATES_DIR="$HOME/.Templates" >> - ENV_HOME_SET("XDG_TEMPLATES_DIR", ".Templates", "templates"); >> - // $XDG_VIDEOS_DIR="$HOME/Videos" >> - ENV_HOME_SET("XDG_VIDEOS_DIR", "Videos", "videos"); >> - >> - // Add ~/Applications for user-installed apps >> - ENV_HOME_SET("E_APPS_DIR", "Applications", "apps"); >> - >> - // XXX: do the below ... later >> - // >> - // FHS FOR APP: >> - // app.dir = PREFIX >> - // app.bin = PREFIX/bin >> - // app.lib = PREFIX/lib >> - // app.data = PREFIX/share/APPNAME >> - // app.locale = PREFIX/share/locale >> - // >> - // XXX: figure out how to merge these with XDG/FHS? >> - // Tizen: >> - // App Dir Structure: >> - // bin Executable binary pathOwner: Read >> - // lib Library pathOwner: Read >> - // data Used to store private data of an application. >> - // res Used to read resource files that are delivered with >> the application package. >> - // shared Parent directory of the data, res, and trusted >> sub-directories. Files in this directory cannot be delivered with the >> application package.Owner: Read >> - // shared/data Used to share data with other applications. >> - // shared/res Used to share resources with other applications. The >> resource files are delivered with the application package. >> - // shared/trusted Used to share data with family of trusted >> applications. The family applications signed with the same certificate can >> access data in the shared/trusted directory. >> - // >> - // XXX: figure out how to merge these with XDG? >> - // Media/...vvv >> - // Images Used for Image data.Read and Write >> - // Sounds Used for Sound data. >> - // Videos Used for Video data. >> - // Cameras Used for Camera pictures. >> - // Downloads Used for Downloaded data. >> - // Music Used for Music data. >> - // Documents Used for Documents. >> - // Others Used for other types. >> - // System Ringtones Used for System default ringtones.Read >> - // >> - // $TZ_SYS_HOME=/home >> - // $TZ_SYS_DB=/var/db >> - // $TZ_SYS_CONFIG=/var/kdb >> - // $TZ_SYS_CONFIG_VOLATILE=/run/kdb >> - // $TZ_SYS_APP=/usr/apps >> - // $TZ_SYS_DESKTOP_APP=/usr/share/applications >> - // >> - // $TS_USER_DB=<user_homeid>/.tizen/db >> - // $TZ_USER_CONFIG=<user_home_dir>/.tizen/kdb >> - // $TZ_USER_APP=<user_home_dir>/.tizen/apps >> - // $TZ_USER_DESKTOP_APP=<user_home_dir>/.tizen/desktop >> - // $TZ_USER_DOCUMENTS=<user_home_dir>/Documents >> - // $TZ_USER_PICTURES=<user_home_dir>/Pictures >> - // $TZ_USER_VIDEOS=<user_home_dir>/Videos >> - // $TZ_USER_MUSIC=<user_home_dir>/Music >> - // $TZ_USER_DOWNLOADS=<user_home_dir>/Downloads >> - // $TZ_USER_PUBLIC=<user_home_dir>/Public >> - return obj; >> -} >> - >> -EOLIAN static void >> -_efl_vpath_core_efl_object_destructor(Eo *obj, Efl_Vpath_Core_Data *pd) >> -{ >> - eina_hash_free(pd->meta); >> - pd->meta = NULL; >> - eina_spinlock_free(&(pd->lock)); >> - if (vpath_core == obj) vpath_core = NULL; >> - efl_destructor(efl_super(obj, MY_CLASS)); >> -} >> - >> -EOLIAN static Efl_Vpath_Core * >> -_efl_vpath_core_core_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED) >> -{ >> - // no locks here as we expect efl to init this early in main "thread" >> - if (!vpath_core) vpath_core = efl_add(EFL_VPATH_CORE_CLASS, NULL); >> - return vpath_core; >> -} >> - >> -EOLIAN static const char * >> -_efl_vpath_core_meta_get(Eo *obj EINA_UNUSED, Efl_Vpath_Core_Data *pd, >> const char *key) >> -{ >> - const char *meta; >> - >> - if (!key) return NULL; >> - eina_spinlock_take(&(pd->lock)); >> - meta = eina_hash_find(pd->meta, key); >> - eina_spinlock_release(&(pd->lock)); >> - return meta; >> -} >> - >> -EOLIAN static void >> -_efl_vpath_core_meta_set(Eo *obj EINA_UNUSED, Efl_Vpath_Core_Data *pd, >> const char *key, const char *path) >> -{ >> - if (!key) return; >> - eina_spinlock_take(&(pd->lock)); >> - if (path) eina_hash_add(pd->meta, key, eina_stringshare_add(path)); >> - else eina_hash_del(pd->meta, key, NULL); >> - eina_spinlock_release(&(pd->lock)); >> -} >> - >> -EOLIAN static Efl_Vpath_File * >> -_efl_vpath_core_efl_vpath_fetch(Eo *obj, Efl_Vpath_Core_Data *pd >> EINA_UNUSED, const char *path) >> -{ >> - Efl_Vpath_File_Core *file; >> - >> - file = efl_add(EFL_VPATH_FILE_CORE_CLASS, obj); >> - efl_vpath_file_path_set(file, path); >> - // XXX: implement parse of path then look up in hash if not just >> create >> - // object where path and result are the same and return that with >> - // path set and result set to resolved path - return obj handler calls >> - // "do" on object to get the result inside fetched or failed callback. >> - // if it's a url then we need a new classs that overrides the do and >> - // begins a fetch and on finish calls the event cb or when wait is >> called >> - if (path) >> - { >> - /* FIXME: not working for WIndows */ >> - // /* <- full path >> - if (path[0] == '/') >> - { >> - efl_vpath_file_result_set(file, path); >> - return file; >> - } >> - // .* >> - if (path[0] == '.') >> - { >> - // .[/]* <- current dir relative >> - if ((path[1] == '/') || (path[1] == 0)) >> - { >> - efl_vpath_file_result_set(file, path); >> - return file; >> - } >> - // ..[/]* <- parent dir relative >> - if ((path[1] == '.') && ((path[2] == '/') || (path[2] == >> 0))) >> - { >> - efl_vpath_file_result_set(file, path); >> - return file; >> - } >> - } >> - // ~* ... >> - if (path[0] == '~') >> - { >> - // ~/ <- home directory >> - if (path[1] == '/') >> - { >> - char buf[PATH_MAX]; >> - const char *home = efl_vpath_core_meta_get(obj, >> "home"); >> - >> - if (home) >> - { >> - snprintf(buf, sizeof(buf), "%s%s", home, path + >> 1); >> - efl_vpath_file_result_set(file, buf); >> - return file; >> - } >> - } >> -#ifdef HAVE_GETPWENT >> - // ~username/ <- homedir of user "username" >> - else >> - { >> - const char *p; >> - struct passwd pwent, *pwent2 = NULL; >> - char *name, buf[PATH_MAX], pwbuf[8129]; >> - >> - for (p = path + 1; *p; p++) >> - { >> - if (*p =='/') break; >> - } >> - name = alloca(p - path); >> - strncpy(name, path + 1, p - path - 1); >> - name[p - path - 1] = 0; >> - if (!getpwnam_r(name, &pwent, pwbuf, sizeof(pwbuf), >> &pwent2)) >> - { >> - if ((pwent2) && (pwent.pw_dir)) >> - { >> - snprintf(buf, sizeof(buf), "%s%s", >> pwent.pw_dir, p); >> - efl_vpath_file_result_set(file, buf); >> - return file; >> - } >> - } >> - } >> -#endif /* HAVE_GETPWENT */ >> - } >> - // (:xxx:)/* ... <- meta hash table >> - if ((path[0] == '(') && (path[1] == ':')) >> - { >> - const char *p, *meta; >> - char *name, buf[PATH_MAX]; >> - Eina_Bool found = EINA_FALSE; >> - >> - for (p = path + 2; *p; p++) >> - { >> - if ((p[0] ==':') && (p[1] == ')') && (p[2] == '/')) >> - { >> - found = EINA_TRUE; >> - break; >> - } >> - } >> - if (found) >> - { >> - name = alloca(p - path); >> - strncpy(name, path + 2, p - path - 2); >> - name[p - path - 2] = 0; >> - eina_spinlock_take(&(pd->lock)); >> - meta = eina_hash_find(pd->meta, name); >> - eina_spinlock_release(&(pd->lock)); >> - if (meta) >> - { >> - snprintf(buf, sizeof(buf), "%s%s", meta, p + 2); >> - efl_vpath_file_result_set(file, buf); >> - return file; >> - } >> - } >> - } >> - // XXX: handle file:// urls locally... >> - // XXX: if its a remote url or zip file etc. where we need to >> - // keep tmp file around then we need to set keep to true >> - // efl_vpath_file_keept_set(file, EINA_TRUE); >> - >> - // file:/// <- local file path uri >> - // file://localhost/ <- local file path uri >> - // file://hostname/ <- remove file path uri >> - // XXX: %c4,%17,%fe etc. are bytes escaped >> - // http://www.ietf.org/rfc/rfc2396.txt >> - // http://www.ietf.org/rfc/rfc1738.txt >> - // http://equinox-project.org/spec/file-uri-spec.txt >> - // http://en.wikipedia.org/wiki/File_URI_scheme >> - } >> - return file; >> -} >> - >> -#include "interfaces/efl_vpath_core.eo.c" >> diff --git a/src/lib/efl/interfaces/efl_vpath_core.eo >> b/src/lib/efl/interfaces/efl_vpath_core.eo >> deleted file mode 100644 >> index 0e238a02a9..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_core.eo >> +++ /dev/null >> @@ -1,33 +0,0 @@ >> -class Efl.Vpath.Core (Efl.Object, Efl.Vpath) >> -{ >> - [[ Core EFL implementation of a Vpath system >> - >> - @since 1.18 >> - ]] >> - eo_prefix: efl_vpath_core; >> - methods { >> - core_get @class { >> - [[ This gets the global EFL Core Vpath class - only 1 - >> singleton ]] >> - return: Efl.Vpath.Core; [[ Get the singleton core vpath ]] >> - } >> - meta_set { >> - [[ A Meta key is a mapping from a virtual path to a real one ]] >> - params { >> - key: string; [[ The magic path key being looked up ]] >> - path: string; [[ The real path the key maps to ]] >> - } >> - } >> - meta_get { >> - [[ This returns the real path set for a Meta key, or NULL if not >> ]] >> - params { >> - key: string; [[ The magic path key being looked up ]] >> - } >> - return: string; [[Real file path]] >> - } >> - } >> - implements { >> - Efl.Object.constructor; >> - Efl.Object.destructor; >> - Efl.Vpath.fetch; >> - } >> -} >> diff --git a/src/lib/efl/interfaces/efl_vpath_file.c >> b/src/lib/efl/interfaces/efl_vpath_file.c >> deleted file mode 100644 >> index 3e098828ed..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_file.c >> +++ /dev/null >> @@ -1,74 +0,0 @@ >> -#include "config.h" >> -#include "Efl.h" >> - >> -#define MY_CLASS EFL_VPATH_FILE_CLASS >> - >> -typedef struct _Efl_Vpath_File_Data Efl_Vpath_File_Data; >> - >> -struct _Efl_Vpath_File_Data >> -{ >> - const char *path; >> - const char *result; >> - Eina_Bool called : 1; >> - Eina_Bool keep : 1; >> -}; >> - >> -EOLIAN static void >> -_efl_vpath_file_path_set(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd, >> const char *path) >> -{ >> - eina_stringshare_replace(&(pd->path), path); >> -} >> - >> -EOLIAN static const char * >> -_efl_vpath_file_path_get(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd) >> -{ >> - return pd->path; >> -} >> - >> -EOLIAN static void >> -_efl_vpath_file_result_set(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd, >> const char *path) >> -{ >> - eina_stringshare_replace(&(pd->result), path); >> -} >> - >> -EOLIAN static const char * >> -_efl_vpath_file_result_get(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd) >> -{ >> - return pd->result; >> -} >> - >> -EOLIAN static void >> -_efl_vpath_file_keep_set(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd, >> Eina_Bool keep) >> -{ >> - pd->keep = keep; >> -} >> - >> -EOLIAN static Eina_Bool >> -_efl_vpath_file_keep_get(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd) >> -{ >> - return pd->keep; >> -} >> - >> -EOLIAN static Eina_Bool >> -_efl_vpath_file_do(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd) >> -{ >> - if (pd->called) return EINA_FALSE; >> - pd->called = EINA_TRUE; >> - efl_event_callback_call(obj, EFL_VPATH_FILE_EVENT_FETCHED, NULL); >> - return EINA_TRUE; >> -} >> - >> -EOLIAN static void >> -_efl_vpath_file_wait(Eo *obj EINA_UNUSED, Efl_Vpath_File_Data *pd >> EINA_UNUSED) >> -{ >> - if (!pd->called) >> - { >> - pd->called = EINA_TRUE; >> - if (pd->result) >> - efl_event_callback_call(obj, EFL_VPATH_FILE_EVENT_FETCHED, >> NULL); >> - else >> - efl_event_callback_call(obj, EFL_VPATH_FILE_EVENT_FAILED, >> NULL); >> - } >> -} >> - >> -#include "interfaces/efl_vpath_file.eo.c" >> diff --git a/src/lib/efl/interfaces/efl_vpath_file.eo >> b/src/lib/efl/interfaces/efl_vpath_file.eo >> deleted file mode 100644 >> index 1568a3ea9c..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_file.eo >> +++ /dev/null >> @@ -1,55 +0,0 @@ >> -class Efl.Vpath.File (Efl.Object) >> -{ >> - [[ VPath File is an actual representation of a downloaded/mapped vpath >> file >> - >> - Keep this object around for as long as you need to use the file as >> it >> - may have been downloaded and kept as a local temporary file and >> - deletion may remove it. >> - >> - When you have a Vpath File object for the first time, call the do() >> - method on it to actually begin/do the mapping. From here the >> - fetched or failed event callbacks will be called, inside of which >> or >> - afterwards you can fetch the resulting local file path by getting >> the >> - result property. >> - >> - @since 1.18 >> - ]] >> - eo_prefix: efl_vpath_file; >> - methods { >> - @property path { >> - [[ The original source path provided to lookup/fetch from ]] >> - set {} >> - get {} >> - values { >> - path: string; [[ The input virtual path to a file ]] >> - } >> - } >> - @property result { >> - [[ The resulting real local file path to open/read ]] >> - set {} >> - get {} >> - values { >> - path: string; [[ The resulting destination file ]] >> - } >> - } >> - @property keep { >> - [[ If this object has to be kept for the usage of the result ]] >> - set {} >> - get {} >> - values { >> - keep: bool; [[ If the object neerds tobe kept around ]] >> - } >> - } >> - do { >> - [[ Actually begin the resolving here - emit event now or do later >> ]] >> - return: bool; [[ Result callback already called ]] >> - } >> - wait { >> - [[ If not fetched yet, wait until it is and call result cb ]] >> - } >> - } >> - events { >> - fetched; [[ File successfully mapped/fetched ]] >> - failed; [[ File fetch or mapping failed ]] >> - } >> -} >> diff --git a/src/lib/efl/interfaces/efl_vpath_file_core.c >> b/src/lib/efl/interfaces/efl_vpath_file_core.c >> deleted file mode 100644 >> index e0328e7fb9..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_file_core.c >> +++ /dev/null >> @@ -1,66 +0,0 @@ >> -#include "config.h" >> -#include "Efl.h" >> - >> -#define MY_CLASS EFL_VPATH_FILE_CORE_CLASS >> - >> -typedef struct _Efl_Vpath_File_Core_Data Efl_Vpath_File_Core_Data; >> - >> -struct _Efl_Vpath_File_Core_Data >> -{ >> - int dummy; >> -}; >> - >> -EOLIAN static Efl_Object * >> -_efl_vpath_file_core_efl_object_constructor(Eo *obj, >> Efl_Vpath_File_Core_Data *pd) >> -{ >> - obj = efl_constructor(efl_super(obj, MY_CLASS)); >> - pd->dummy = 0; >> - return obj; >> -} >> - >> -EOLIAN static void >> -_efl_vpath_file_core_efl_object_destructor(Eo *obj, >> Efl_Vpath_File_Core_Data *pd) >> -{ >> - pd->dummy = 0; >> - efl_destructor(efl_super(obj, MY_CLASS)); >> -} >> - >> -EOLIAN static Eina_Bool >> -_efl_vpath_file_core_efl_vpath_file_do(Eo *obj, Efl_Vpath_File_Core_Data >> *pd) >> -{ >> - const char *path; >> - >> - if (efl_vpath_file_result_get(obj)) >> - return efl_vpath_file_do(efl_super(obj, MY_CLASS)); >> - // vpath core didn't find a match, so it'ss likely a protocol like >> - // http:// etc. etc. so deal with that here >> - path = efl_vpath_file_path_get(obj); >> - if (path) >> - { >> - if ((!strncasecmp(path, "http://", 7)) || >> - (!strncasecmp(path, "https://", 8))) >> - { >> - // XXX: handle urls --- need a loop object >> - } >> - } >> - // ... >> - pd->dummy = 0; >> - >> - // not a magic path - just set result to path >> - efl_vpath_file_result_set(obj, efl_vpath_file_path_get(obj)); >> - return efl_vpath_file_do(efl_super(obj, MY_CLASS)); >> -} >> - >> -EOLIAN static void >> -_efl_vpath_file_core_efl_vpath_file_wait(Eo *obj, >> Efl_Vpath_File_Core_Data *pd) >> -{ >> - if (efl_vpath_file_result_get(obj)) >> - { >> - efl_vpath_file_do(efl_super(obj, MY_CLASS)); >> - return; >> - } >> - pd->dummy = 0; >> - // XXX: not found yet, so do what is necessary >> -} >> - >> -#include "interfaces/efl_vpath_file_core.eo.c" >> diff --git a/src/lib/efl/interfaces/efl_vpath_file_core.eo >> b/src/lib/efl/interfaces/efl_vpath_file_core.eo >> deleted file mode 100644 >> index 6a627f032e..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_file_core.eo >> +++ /dev/null >> @@ -1,14 +0,0 @@ >> -class Efl.Vpath.File.Core (Efl.Vpath.File) >> -{ >> - [[ Core EFL implementation of a Vpath File >> - >> - @since 1.18 >> - ]] >> - eo_prefix: efl_vpath_file_core; >> - implements { >> - Efl.Object.constructor; >> - Efl.Object.destructor; >> - Efl.Vpath.File.do; >> - Efl.Vpath.File.wait; >> - } >> -} >> diff --git a/src/lib/efl/interfaces/efl_vpath_manager.c >> b/src/lib/efl/interfaces/efl_vpath_manager.c >> deleted file mode 100644 >> index cae265c187..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_manager.c >> +++ /dev/null >> @@ -1,88 +0,0 @@ >> -#include "config.h" >> -#include "Efl.h" >> - >> -#define MY_CLASS EFL_VPATH_MANAGER_CLASS >> - >> -typedef struct _Efl_Vpath_Manager_Data Efl_Vpath_Manager_Data; >> -typedef struct _Efl_Vpath_Manager_Entry Efl_Vpath_Manager_Entry; >> - >> -struct _Efl_Vpath_Manager_Data >> -{ >> - Eina_List *list; >> -}; >> - >> -struct _Efl_Vpath_Manager_Entry >> -{ >> - Efl_Vpath *vpath; >> - int priority; >> -}; >> - >> -static Efl_Vpath_Manager_Data vpath_manager = >> -{ >> - NULL >> -}; >> - >> -EOLIAN static Efl_Vpath_File * >> -_efl_vpath_manager_fetch(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const >> char *path) >> -{ >> - Efl_Vpath_Manager_Entry *entry; >> - Eina_List *l; >> - Efl_Vpath_File *file; >> - >> - EINA_LIST_FOREACH(vpath_manager.list, l, entry) >> - { >> - file = efl_vpath_fetch(entry->vpath, path); >> - if (file) return file; >> - } >> - file = efl_add(EFL_VPATH_FILE_CLASS, NULL); >> - if (file) >> - { >> - efl_vpath_file_path_set(file, path); >> - efl_vpath_file_result_set(file, path); >> - } >> - return file; >> -} >> - >> -static int >> -_register_sort_cb(Efl_Vpath_Manager_Entry *e1, Efl_Vpath_Manager_Entry >> *e2) >> -{ >> - // sort higher numbers first in list >> - return (e2->priority - e1->priority); >> -} >> - >> -static void >> -_cb_vpath_del(void *data, const Efl_Event *event) >> -{ >> - efl_vpath_manager_unregister(EFL_VPATH_MANAGER_CLASS, event->object); >> - efl_event_callback_del(event->object, EFL_EVENT_DEL, _cb_vpath_del, >> data); >> -} >> - >> -EOLIAN static void >> -_efl_vpath_manager_register(Eo *obj, void *pd EINA_UNUSED, int priority, >> Efl_Vpath *vpath) >> -{ >> - Efl_Vpath_Manager_Entry *entry = >> malloc(sizeof(Efl_Vpath_Manager_Entry)); >> - entry->vpath = vpath; >> - entry->priority = priority; >> - efl_event_callback_add(vpath, EFL_EVENT_DEL, _cb_vpath_del, obj); >> - vpath_manager.list = eina_list_sorted_insert >> - (vpath_manager.list, EINA_COMPARE_CB(_register_sort_cb), entry); >> -} >> - >> -EOLIAN static void >> -_efl_vpath_manager_unregister(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, >> Efl_Vpath *vpath) >> -{ >> - Efl_Vpath_Manager_Entry *entry; >> - Eina_List *l; >> - >> - EINA_LIST_FOREACH(vpath_manager.list, l, entry) >> - { >> - if (entry->vpath == vpath) >> - { >> - vpath_manager.list = >> eina_list_remove_list(vpath_manager.list, l); >> - free(entry); >> - return; >> - } >> - } >> -} >> - >> -#include "interfaces/efl_vpath_manager.eo.c" >> diff --git a/src/lib/efl/interfaces/efl_vpath_manager.eo >> b/src/lib/efl/interfaces/efl_vpath_manager.eo >> deleted file mode 100644 >> index e2d301634b..0000000000 >> --- a/src/lib/efl/interfaces/efl_vpath_manager.eo >> +++ /dev/null >> @@ -1,30 +0,0 @@ >> -class Efl.Vpath.Manager (Efl.Object) >> -{ >> - [[ Vpath Manager manages multiple VPath objects that remap/download >> - >> - @since 1.18 >> - ]] >> - eo_prefix: efl_vpath_manager; >> - methods { >> - fetch @class { >> - [[ This class function fetches a Vpath File given an input path >> ]] >> - params { >> - path: string; [[ The input virtual file path to fetch ]] >> - } >> - return: Efl.Vpath.File @owned; [[ An object representing the >> file ]] >> - } >> - register @class { >> - [[Register a vpath with the manager ]] >> - params { >> - priority: int; [[ Search order - higher values tried first ]] >> - vpath: Efl.Vpath @nonull; [[ A Vpath implementation object ]] >> - } >> - } >> - unregister @class { >> - [[ Unregister a vpath from the manager ]] >> - params { >> - vpath: Efl.Vpath @nonull; [[ A Vpath implementation object ]] >> - } >> - } >> - } >> -} >> > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
