From 909fd6e2c4369020707782e20656069fbb3030d1 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Tue, 20 May 2014 23:34:25 +1000 Subject: Found a way to deal with the PACKAGE_* stuff outside of Elm. It's undocumented. --- src/libraries/LumbrJack.c | 81 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 77 insertions(+), 4 deletions(-) (limited to 'src/libraries/LumbrJack.c') 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 @@ #include "LumbrJack.h" +#include static char dateTime[DATE_TIME_LEN]; +static Eina_Prefix *prefix = NULL; -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) + +int HamrTime(char *argv0, void *main, int logDom) +{ + Eina_Array *path; + char *env, name[PATH_MAX], cwd[PATH_MAX], temp[PATH_MAX * 2]; + int i, len = strlen(argv0); + + if (!eina_init()) + { + printf("Can't load eina library, nothing else will work!\n"); + exit(0); + } + + // Coz eina_file_split splits the string in place, instead of making a copy first. + snprintf(temp, sizeof(temp), "%s", argv0); + path = eina_file_split(temp); + snprintf(name, sizeof(name), "%s", (char *) eina_array_data_get(path, eina_array_count(path) - 1)); + logDom = loggingStartup(name, logDom); + eina_array_free(path); + + temp[len] = 0; + cwd[len] = 0; + for (i = 0; i < len; i++) + { + temp[i] = toupper(name[i]); + cwd[i] = tolower(name[i]); + } + + if (!(prefix = eina_prefix_new(argv0, main, temp, cwd, "checkme.txt", PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_LOCALE_DIR))) + { + PC("Can't find application prefix!"); + } + + PD("%s is installed in %s", name, eina_prefix_get(prefix)); + PD("The binaries are in %s", eina_prefix_bin_get(prefix)); + PD("The data files are in %s", eina_prefix_data_get(prefix)); + PD("The libraries are in %s", eina_prefix_lib_get(prefix)); + PD("The locale files are in %s", eina_prefix_locale_get(prefix)); + + getcwd(cwd, PATH_MAX); + env = getenv("LUA_CPATH"); + if (!env) env = ""; + sprintf(temp, "%s;%s/lib?.so;%s/?.so;%s/?.so", env, eina_prefix_lib_get(prefix), eina_prefix_lib_get(prefix), cwd); + setenv("LUA_CPATH", temp, 1); + + env = getenv("LUA_PATH"); + if (!env) env = ""; + sprintf(temp, "%s;%s/?.lua;%s/?.lua", env, eina_prefix_lib_get(prefix), cwd); + setenv("LUA_PATH", temp, 1); + + return logDom; +} + +const char *prefix_get() {return eina_prefix_get(prefix);} +const char *prefix_bin_get() {return eina_prefix_bin_get(prefix);} +const char *prefix_data_get() {return eina_prefix_data_get(prefix);} +const char *prefix_lib_get() {return eina_prefix_lib_get(prefix);} +const char *prefix_locale_get() {return eina_prefix_locale_get(prefix);} + +void pantsOff(int logDom) +{ + if (logDom >= 0) + eina_log_domain_unregister(logDom); + + eina_prefix_free(prefix); + + eina_shutdown(); +} + +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) { FILE *f = data; 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 int loggingStartup(char *name, int logDom) { + eina_log_threads_enable(); + if (logDom < 0) { - logDom = eina_log_domain_register(name, NULL); + logDom = eina_log_domain_register(name, EINA_COLOR_ORANGE); if (logDom < 0) { EINA_LOG_CRIT("could not register log domain '%s'", name); @@ -42,7 +115,7 @@ int loggingStartup(char *name, int logDom) } eina_log_level_set(EINA_LOG_LEVEL_DBG); eina_log_domain_level_set(name, EINA_LOG_LEVEL_DBG); - eina_log_print_cb_set(_ggg_log_print_cb, stderr); + eina_log_print_cb_set(_logPrint, stderr); // Shut up the excess debugging shit from EFL. eina_log_domain_level_set("eo", EINA_LOG_LEVEL_WARN); @@ -83,7 +156,7 @@ char *getDateTime(struct tm **nowOut, char *dateOut, time_t *timeOut) *timeOut = szClock; // format - strftime(date, DATE_TIME_LEN, "%d/%m/%Y %H:%M:%S\r", newTime); + strftime(date, DATE_TIME_LEN, "%Y-%m-%d %H:%M:%S\r", newTime); return (dateTime); } -- cgit v1.1