3 static Eina_Prefix *pfx = NULL;
5 static const char *_prefix_path_data = NULL;
6 static unsigned int _prefix_path_data_len = 0;
8 /* externally accessible functions */
10 e_prefix_determine(char *argv0)
14 pfx = eina_prefix_new(argv0, e_prefix_determine,
15 "E", "enlightenment", "AUTHORS",
22 _prefix_path_data = eina_prefix_data_get(pfx);
23 _prefix_path_data_len= strlen(_prefix_path_data);
25 INF("=================================");
26 INF("Enlightenment relocation handling");
27 INF("=================================");
28 INF("PREFIX: %s", eina_prefix_get(pfx));
29 INF("BINDIR: %s", eina_prefix_bin_get(pfx));
30 INF("LIBDIR: %s", eina_prefix_lib_get(pfx));
31 INF("DATADIR: %s", eina_prefix_data_get(pfx));
32 INF("LOCALE: %s", eina_prefix_locale_get(pfx));
33 INF("=================================");
35 printf("=================================\n");
36 printf("Enlightenment relocation handling\n");
37 printf("=================================\n");
38 printf("PREFIX: %s\n", eina_prefix_get(pfx));
39 printf("BINDIR: %s\n", eina_prefix_bin_get(pfx));
40 printf("LIBDIR: %s\n", eina_prefix_lib_get(pfx));
41 printf("DATADIR: %s\n", eina_prefix_data_get(pfx));
42 printf("LOCALE: %s\n", eina_prefix_locale_get(pfx));
43 printf("=================================\n");
45 e_util_env_set("E_PREFIX", eina_prefix_get(pfx));
46 e_util_env_set("E_BIN_DIR", eina_prefix_bin_get(pfx));
47 e_util_env_set("E_LIB_DIR", eina_prefix_lib_get(pfx));
48 e_util_env_set("E_DATA_DIR", eina_prefix_data_get(pfx));
49 e_util_env_set("E_LOCALE_DIR", eina_prefix_locale_get(pfx));
54 e_prefix_shutdown(void)
57 _prefix_path_data = NULL;
58 _prefix_path_data_len = 0;
59 eina_prefix_free(pfx);
64 e_prefix_fallback(void)
71 return eina_prefix_get(pfx);
75 e_prefix_locale_get(void)
77 return eina_prefix_locale_get(pfx);
81 e_prefix_bin_get(void)
83 return eina_prefix_bin_get(pfx);
87 e_prefix_data_get(void)
89 return eina_prefix_data_get(pfx);
93 e_prefix_lib_get(void)
95 return eina_prefix_lib_get(pfx);
99 e_prefix_data_concat_len(char *dst, size_t size, const char *path, size_t path_len)
101 return eina_str_join_len(dst, size, '/', _prefix_path_data, _prefix_path_data_len, path, path_len);
105 e_prefix_data_concat(char *dst, size_t size, const char *path)
107 return e_prefix_data_concat_len(dst, size, path, strlen(path));
111 e_prefix_data_snprintf(char *dst, size_t size, const char *fmt, ...)
118 off = _prefix_path_data_len + 1;
119 if (size < _prefix_path_data_len + 2)
123 memcpy(dst, _prefix_path_data, size - 1);
124 dst[size - 1] = '\0';
126 ret = off + vsnprintf(dst + off, size - off, fmt, ap);
131 memcpy(dst, _prefix_path_data, _prefix_path_data_len);
132 dst[_prefix_path_data_len] = '/';
134 ret = off + vsnprintf(dst + off, size - off, fmt, ap);