diff options
Diffstat (limited to 'src/libraries/LumbrJack.c')
-rw-r--r-- | src/libraries/LumbrJack.c | 81 |
1 files changed, 77 insertions, 4 deletions
diff --git a/src/libraries/LumbrJack.c b/src/libraries/LumbrJack.c index 8d08622..56d4c50 100644 --- a/src/libraries/LumbrJack.c +++ b/src/libraries/LumbrJack.c | |||
@@ -4,11 +4,82 @@ | |||
4 | 4 | ||
5 | 5 | ||
6 | #include "LumbrJack.h" | 6 | #include "LumbrJack.h" |
7 | #include <unistd.h> | ||
7 | 8 | ||
8 | 9 | ||
9 | static char dateTime[DATE_TIME_LEN]; | 10 | static char dateTime[DATE_TIME_LEN]; |
11 | static Eina_Prefix *prefix = NULL; | ||
10 | 12 | ||
11 | static void _ggg_log_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args) | 13 | |
14 | int HamrTime(char *argv0, void *main, int logDom) | ||
15 | { | ||
16 | Eina_Array *path; | ||
17 | char *env, name[PATH_MAX], cwd[PATH_MAX], temp[PATH_MAX * 2]; | ||
18 | int i, len = strlen(argv0); | ||
19 | |||
20 | if (!eina_init()) | ||
21 | { | ||
22 | printf("Can't load eina library, nothing else will work!\n"); | ||
23 | exit(0); | ||
24 | } | ||
25 | |||
26 | // Coz eina_file_split splits the string in place, instead of making a copy first. | ||
27 | snprintf(temp, sizeof(temp), "%s", argv0); | ||
28 | path = eina_file_split(temp); | ||
29 | snprintf(name, sizeof(name), "%s", (char *) eina_array_data_get(path, eina_array_count(path) - 1)); | ||
30 | logDom = loggingStartup(name, logDom); | ||
31 | eina_array_free(path); | ||
32 | |||
33 | temp[len] = 0; | ||
34 | cwd[len] = 0; | ||
35 | for (i = 0; i < len; i++) | ||
36 | { | ||
37 | temp[i] = toupper(name[i]); | ||
38 | cwd[i] = tolower(name[i]); | ||
39 | } | ||
40 | |||
41 | if (!(prefix = eina_prefix_new(argv0, main, temp, cwd, "checkme.txt", PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_LOCALE_DIR))) | ||
42 | { | ||
43 | PC("Can't find application prefix!"); | ||
44 | } | ||
45 | |||
46 | PD("%s is installed in %s", name, eina_prefix_get(prefix)); | ||
47 | PD("The binaries are in %s", eina_prefix_bin_get(prefix)); | ||
48 | PD("The data files are in %s", eina_prefix_data_get(prefix)); | ||
49 | PD("The libraries are in %s", eina_prefix_lib_get(prefix)); | ||
50 | PD("The locale files are in %s", eina_prefix_locale_get(prefix)); | ||
51 | |||
52 | getcwd(cwd, PATH_MAX); | ||
53 | env = getenv("LUA_CPATH"); | ||
54 | if (!env) env = ""; | ||
55 | sprintf(temp, "%s;%s/lib?.so;%s/?.so;%s/?.so", env, eina_prefix_lib_get(prefix), eina_prefix_lib_get(prefix), cwd); | ||
56 | setenv("LUA_CPATH", temp, 1); | ||
57 | |||
58 | env = getenv("LUA_PATH"); | ||
59 | if (!env) env = ""; | ||
60 | sprintf(temp, "%s;%s/?.lua;%s/?.lua", env, eina_prefix_lib_get(prefix), cwd); | ||
61 | setenv("LUA_PATH", temp, 1); | ||
62 | |||
63 | return logDom; | ||
64 | } | ||
65 | |||
66 | const char *prefix_get() {return eina_prefix_get(prefix);} | ||
67 | const char *prefix_bin_get() {return eina_prefix_bin_get(prefix);} | ||
68 | const char *prefix_data_get() {return eina_prefix_data_get(prefix);} | ||
69 | const char *prefix_lib_get() {return eina_prefix_lib_get(prefix);} | ||
70 | const char *prefix_locale_get() {return eina_prefix_locale_get(prefix);} | ||
71 | |||
72 | void pantsOff(int logDom) | ||
73 | { | ||
74 | if (logDom >= 0) | ||
75 | eina_log_domain_unregister(logDom); | ||
76 | |||
77 | eina_prefix_free(prefix); | ||
78 | |||
79 | eina_shutdown(); | ||
80 | } | ||
81 | |||
82 | static void _logPrint(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args) | ||
12 | { | 83 | { |
13 | FILE *f = data; | 84 | FILE *f = data; |
14 | char dt[DATE_TIME_LEN + 1]; | 85 | char dt[DATE_TIME_LEN + 1]; |
@@ -31,9 +102,11 @@ static void _ggg_log_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, co | |||
31 | 102 | ||
32 | int loggingStartup(char *name, int logDom) | 103 | int loggingStartup(char *name, int logDom) |
33 | { | 104 | { |
105 | eina_log_threads_enable(); | ||
106 | |||
34 | if (logDom < 0) | 107 | if (logDom < 0) |
35 | { | 108 | { |
36 | logDom = eina_log_domain_register(name, NULL); | 109 | logDom = eina_log_domain_register(name, EINA_COLOR_ORANGE); |
37 | if (logDom < 0) | 110 | if (logDom < 0) |
38 | { | 111 | { |
39 | EINA_LOG_CRIT("could not register log domain '%s'", name); | 112 | EINA_LOG_CRIT("could not register log domain '%s'", name); |
@@ -42,7 +115,7 @@ int loggingStartup(char *name, int logDom) | |||
42 | } | 115 | } |
43 | eina_log_level_set(EINA_LOG_LEVEL_DBG); | 116 | eina_log_level_set(EINA_LOG_LEVEL_DBG); |
44 | eina_log_domain_level_set(name, EINA_LOG_LEVEL_DBG); | 117 | eina_log_domain_level_set(name, EINA_LOG_LEVEL_DBG); |
45 | eina_log_print_cb_set(_ggg_log_print_cb, stderr); | 118 | eina_log_print_cb_set(_logPrint, stderr); |
46 | 119 | ||
47 | // Shut up the excess debugging shit from EFL. | 120 | // Shut up the excess debugging shit from EFL. |
48 | eina_log_domain_level_set("eo", EINA_LOG_LEVEL_WARN); | 121 | eina_log_domain_level_set("eo", EINA_LOG_LEVEL_WARN); |
@@ -83,7 +156,7 @@ char *getDateTime(struct tm **nowOut, char *dateOut, time_t *timeOut) | |||
83 | *timeOut = szClock; | 156 | *timeOut = szClock; |
84 | 157 | ||
85 | // format | 158 | // format |
86 | strftime(date, DATE_TIME_LEN, "%d/%m/%Y %H:%M:%S\r", newTime); | 159 | strftime(date, DATE_TIME_LEN, "%Y-%m-%d %H:%M:%S\r", newTime); |
87 | return (dateTime); | 160 | return (dateTime); |
88 | } | 161 | } |
89 | 162 | ||