From 43fe2820f5a928d75bdf605255efd1907cd01485 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 20 Apr 2014 20:23:53 +1000 Subject: Added LumbrJack (logging) and Runnr (Lua function / script runner). --- LumbrJack/LumbrJack.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++ LumbrJack/LumbrJack.h | 38 ++++++++++++++++++++++++ LumbrJack/build.lua | 21 +++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 LumbrJack/LumbrJack.c create mode 100644 LumbrJack/LumbrJack.h create mode 100755 LumbrJack/build.lua (limited to 'LumbrJack') diff --git a/LumbrJack/LumbrJack.c b/LumbrJack/LumbrJack.c new file mode 100644 index 0000000..9760766 --- /dev/null +++ b/LumbrJack/LumbrJack.c @@ -0,0 +1,82 @@ +/* LumbrJack - a logging library that wraps Eina logging. + +*/ + + +#include "LumbrJack.h" + + +static char dateTime[DATE_TIME_LEN]; + +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) +{ + FILE *f = data; + char dt[DATE_TIME_LEN + 1]; + char fileTab[256], funcTab[256]; + + getDateTime(NULL, dt, NULL); + dt[19] = '\0'; + if (12 > strlen(file)) + snprintf(fileTab, sizeof(fileTab), "%s\t\t", file); + else + snprintf(fileTab, sizeof(fileTab), "%s\t", file); + snprintf(funcTab, sizeof(funcTab), "\t%s", fnc); + fprintf(f, "%s ", dt); + if (f == stderr) + eina_log_print_cb_stderr(d, level, fileTab, funcTab, line, fmt, data, args); + else if (f == stdout) + eina_log_print_cb_stdout(d, level, fileTab, funcTab, line, fmt, data, args); + fflush(f); +} + +int loggingStartup(char *name, int logDom) +{ + if (logDom < 0) + { + logDom = eina_log_domain_register(name, NULL); + if (logDom < 0) + { + EINA_LOG_CRIT("could not register log domain '%s'", name); + return 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); + + // Shut up the excess debugging shit from EFL. + eina_log_domain_level_set("eo", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("eldbus", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("eet", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("ecore", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("ecore_audio", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("ecore_input_evas", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("ecore_input_evas", EINA_LOG_LEVEL_WARN); + eina_log_domain_level_set("ecore_system_upower", EINA_LOG_LEVEL_WARN); + + return logDom; +} + +char *getDateTime(struct tm **nowOut, char *dateOut, time_t *timeOut) +{ + struct tm *newTime; + time_t szClock; + char *date = dateTime; + + // Get time in seconds + time(&szClock); + // Convert time to struct tm form + newTime = localtime(&szClock); + + if (nowOut) + *nowOut = newTime; + if (dateOut) + date = dateOut; + if (timeOut) + *timeOut = szClock; + + // format + strftime(date, DATE_TIME_LEN, "%d/%m/%Y %H:%M:%S\r", newTime); + return (dateTime); +} diff --git a/LumbrJack/LumbrJack.h b/LumbrJack/LumbrJack.h new file mode 100644 index 0000000..4a3290c --- /dev/null +++ b/LumbrJack/LumbrJack.h @@ -0,0 +1,38 @@ + +#include +#include + +#include + + +#define PC(...) EINA_LOG_DOM_CRIT(ourGlobals->logDom, __VA_ARGS__) +#define PE(...) EINA_LOG_DOM_ERR(ourGlobals->logDom, __VA_ARGS__) +#define PW(...) EINA_LOG_DOM_WARN(ourGlobals->logDom, __VA_ARGS__) +#define PD(...) EINA_LOG_DOM_DBG(ourGlobals->logDom, __VA_ARGS__) +#define PI(...) EINA_LOG_DOM_INFO(ourGlobals->logDom, __VA_ARGS__) + +#define PCm(...) EINA_LOG_DOM_CRIT(ourGlobals.logDom, __VA_ARGS__) +#define PEm(...) EINA_LOG_DOM_ERR(ourGlobals.logDom, __VA_ARGS__) +#define PWm(...) EINA_LOG_DOM_WARN(ourGlobals.logDom, __VA_ARGS__) +#define PDm(...) EINA_LOG_DOM_DBG(ourGlobals.logDom, __VA_ARGS__) +#define PIm(...) EINA_LOG_DOM_INFO(ourGlobals.logDom, __VA_ARGS__) + +#define D() PD("DEBUG") + + +// "01:03:52 01-01-1973\n\0" +#define DATE_TIME_LEN 21 + + +#ifndef FALSE +// NEVER change this +typedef enum +{ + FALSE = 0, + TRUE = 1 +} boolean; +#endif + + +int loggingStartup(char *name, int logDom); +char *getDateTime(struct tm **nowOut, char *dateOut, time_t *tiemOut); diff --git a/LumbrJack/build.lua b/LumbrJack/build.lua new file mode 100755 index 0000000..3181bef --- /dev/null +++ b/LumbrJack/build.lua @@ -0,0 +1,21 @@ +#!/usr/bin/env lua + +local dir = ... + +if 'nil' == type(dir) then + local build, err = loadfile('../build.lua') + if build then + setfenv(build, getfenv(2)) + build('') + else + print("ERROR - " .. err) + end + dir = workingDir +end + +LDFLAGS = '-L ' .. dir .. ' ' .. LDFLAGS + +removeFiles(dir, {'LumbrJack.o', 'libLumbrJack.so'}) + +runCommand('C libraries', dir, 'gcc ' .. CFLAGS .. ' -fPIC -c LumbrJack.c') +runCommand(nil, dir, 'gcc ' .. CFLAGS .. ' -shared -Wl,-soname,libLumbrJack.so -o libLumbrJack.so LumbrJack.o') -- cgit v1.1