aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libraries/LumbrJack.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2014-05-20 23:34:25 +1000
committerDavid Walter Seikel2014-05-20 23:34:25 +1000
commit909fd6e2c4369020707782e20656069fbb3030d1 (patch)
tree15590f94950be42916fff1b3ba00124bce157751 /src/libraries/LumbrJack.c
parentThe results of a session with valgrind. (diff)
downloadSledjHamr-909fd6e2c4369020707782e20656069fbb3030d1.zip
SledjHamr-909fd6e2c4369020707782e20656069fbb3030d1.tar.gz
SledjHamr-909fd6e2c4369020707782e20656069fbb3030d1.tar.bz2
SledjHamr-909fd6e2c4369020707782e20656069fbb3030d1.tar.xz
Found a way to deal with the PACKAGE_* stuff outside of Elm. It's undocumented.
Diffstat (limited to 'src/libraries/LumbrJack.c')
-rw-r--r--src/libraries/LumbrJack.c81
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
9static char dateTime[DATE_TIME_LEN]; 10static char dateTime[DATE_TIME_LEN];
11static Eina_Prefix *prefix = NULL;
10 12
11static 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
14int 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
66const char *prefix_get() {return eina_prefix_get(prefix);}
67const char *prefix_bin_get() {return eina_prefix_bin_get(prefix);}
68const char *prefix_data_get() {return eina_prefix_data_get(prefix);}
69const char *prefix_lib_get() {return eina_prefix_lib_get(prefix);}
70const char *prefix_locale_get() {return eina_prefix_locale_get(prefix);}
71
72void 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
82static 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
32int loggingStartup(char *name, int logDom) 103int 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