about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-04-13 22:20:15 +0100
committerJames Booth <boothj5@gmail.com>2014-04-13 22:20:15 +0100
commit67a109927cbb70f48198f4516c330c157bfc209a (patch)
tree53681754ec1993f0e1128d2373084a5ff09f450c /src
parentc3418a290959a6b128c6224ccd01562850ae98c0 (diff)
downloadprofani-tty-67a109927cbb70f48198f4516c330c157bfc209a.tar.gz
Added /log where command
Diffstat (limited to 'src')
-rw-r--r--src/command/command.c4
-rw-r--r--src/command/commands.c22
-rw-r--r--src/log.c9
-rw-r--r--src/log.h1
-rw-r--r--src/ui/console.c2
5 files changed, 29 insertions, 9 deletions
diff --git a/src/command/command.c b/src/command/command.c
index 240a4ad6..5175a16b 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -639,10 +639,11 @@ static struct cmd_t command_defs[] =
           NULL } } },
 
     { "/log",
-        cmd_log, parse_args, 2, 2, &cons_log_setting,
+        cmd_log, parse_args, 1, 2, &cons_log_setting,
         { "/log [property] [value]", "Manage system logging settings.",
         { "/log [property] [value]",
           "-----------------------",
+          "where   : Show the current log file location.",
           "Property may be one of:",
           "rotate  : Rotate log, accepts 'on' or 'off', defaults to 'on'.",
           "maxsize : With rotate enabled, specifies the max log size, defaults to 1048580 (1MB).",
@@ -955,6 +956,7 @@ cmd_init(void)
     autocomplete_add(log_ac, "maxsize");
     autocomplete_add(log_ac, "rotate");
     autocomplete_add(log_ac, "shared");
+    autocomplete_add(log_ac, "where");
 
     autoaway_ac = autocomplete_new();
     autocomplete_add(autoaway_ac, "mode");
diff --git a/src/command/commands.c b/src/command/commands.c
index bebf9d3c..0fc8574b 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -2287,6 +2287,10 @@ cmd_log(gchar **args, struct cmd_help_t help)
     int intval;
 
     if (strcmp(subcmd, "maxsize") == 0) {
+        if (value == NULL) {
+            cons_show("Usage: %s", help.usage);
+            return TRUE;
+        }
         if (_strtoi(value, &intval, PREFS_MIN_LOG_SIZE, INT_MAX) == 0) {
             prefs_set_max_log_size(intval);
             cons_show("Log maxinum size set to %d bytes", intval);
@@ -2298,22 +2302,24 @@ cmd_log(gchar **args, struct cmd_help_t help)
         if (value == NULL) {
             cons_show("Usage: %s", help.usage);
             return TRUE;
-        } else {
-            return _cmd_set_boolean_preference(value, help,
-                "Log rotate", PREF_LOG_ROTATE);
         }
+        return _cmd_set_boolean_preference(value, help, "Log rotate", PREF_LOG_ROTATE);
     }
 
     if (strcmp(subcmd, "shared") == 0) {
         if (value == NULL) {
             cons_show("Usage: %s", help.usage);
             return TRUE;
-        } else {
-            gboolean result = _cmd_set_boolean_preference(value, help,
-                "Shared log", PREF_LOG_SHARED);
-            log_reinit();
-            return result;
         }
+        gboolean result = _cmd_set_boolean_preference(value, help, "Shared log", PREF_LOG_SHARED);
+        log_reinit();
+        return result;
+    }
+
+    if (strcmp(subcmd, "where") == 0) {
+        char *logfile = get_log_file_location();
+        cons_show("Log file: %s", logfile);
+        return TRUE;
     }
 
     cons_show("Usage: %s", help.usage);
diff --git a/src/log.c b/src/log.c
index cb346e6c..b30c68cb 100644
--- a/src/log.c
+++ b/src/log.c
@@ -37,6 +37,7 @@
 #define PROF "prof"
 
 static FILE *logp;
+GString *mainlogfile;
 
 static GTimeZone *tz;
 static GDateTime *dt;
@@ -120,6 +121,7 @@ log_init(log_level_t filter)
     tz = g_time_zone_new_local();
     gchar *log_file = _get_main_log_file();
     logp = fopen(log_file, "a");
+    mainlogfile = g_string_new(log_file);
     free(log_file);
 }
 
@@ -130,6 +132,12 @@ log_reinit(void)
     log_init(level_filter);
 }
 
+char *
+get_log_file_location(void)
+{
+    return mainlogfile->str;
+}
+
 log_level_t
 log_get_filter(void)
 {
@@ -139,6 +147,7 @@ log_get_filter(void)
 void
 log_close(void)
 {
+    g_string_free(mainlogfile, TRUE);
     g_time_zone_unref(tz);
     if (logp != NULL) {
         fclose(logp);
diff --git a/src/log.h b/src/log.h
index 86d96392..d9cd92e1 100644
--- a/src/log.h
+++ b/src/log.h
@@ -42,6 +42,7 @@ void log_init(log_level_t filter);
 log_level_t log_get_filter(void);
 void log_close(void);
 void log_reinit(void);
+char * get_log_file_location(void);
 void log_debug(const char * const msg, ...);
 void log_info(const char * const msg, ...);
 void log_warning(const char * const msg, ...);
diff --git a/src/ui/console.c b/src/ui/console.c
index ec9130cf..d7bb1904 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -31,6 +31,7 @@
 
 #include "command/command.h"
 #include "common.h"
+#include "log.h"
 #include "roster_list.h"
 #include "config/preferences.h"
 #include "config/theme.h"
@@ -1222,6 +1223,7 @@ _cons_show_chat_prefs(void)
 static void
 _cons_log_setting(void)
 {
+    cons_show("Log file location           : %s", get_log_file_location());
     cons_show("Max log size (/log maxsize) : %d bytes", prefs_get_max_log_size());
 
     if (prefs_get_boolean(PREF_LOG_ROTATE))