about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-08-23 00:41:22 +0100
committerJames Booth <boothj5@gmail.com>2012-08-23 00:41:22 +0100
commit33bb82b4aa88a0936fc8084a8f51d8a50872ef9e (patch)
treef900ae3521070a13197f837e99fa0333b564abae
parentb3f60232783f5f51fad7d0749f48e51b399113c8 (diff)
downloadprofani-tty-33bb82b4aa88a0936fc8084a8f51d8a50872ef9e.tar.gz
Moved input processing to profanity.c
-rw-r--r--src/command.c135
-rw-r--r--src/command.h3
-rw-r--r--src/profanity.c43
3 files changed, 90 insertions, 91 deletions
diff --git a/src/command.c b/src/command.c
index 442e37b4..93eec545 100644
--- a/src/command.c
+++ b/src/command.c
@@ -51,8 +51,6 @@ struct cmd_t {
 };
 
 static struct cmd_t * _cmd_get_command(const char * const command);
-static gboolean _handle_command(const char * const command, 
-    const char * const inp);
 static void _update_presence(const jabber_presence_t presence, 
     const char * const show, const char * const inp);
 static gboolean
@@ -81,7 +79,6 @@ static gboolean _cmd_online(const char * const inp, struct cmd_help_t help);
 static gboolean _cmd_dnd(const char * const inp, struct cmd_help_t help);
 static gboolean _cmd_chat(const char * const inp, struct cmd_help_t help);
 static gboolean _cmd_xa(const char * const inp, struct cmd_help_t help);
-static gboolean _cmd_default(const char * const inp);
 
 /*
  * The commands are broken down into three groups:
@@ -337,45 +334,6 @@ static struct cmd_t status_commands[] =
     
 static PAutocomplete commands_ac;
 
-/* 
- * Take a line of input and process it, return TRUE if profanity is to 
- * continue, FALSE otherwise
- */
-gboolean
-process_input(char *inp)
-{
-    log_msg(PROF_LEVEL_DEBUG, PROF, "Input recieved: %s", inp);
-    gboolean result = FALSE;
-    g_strstrip(inp);
-    
-    // add line to history if something typed
-    if (strlen(inp) > 0) {
-        history_append(inp);
-    }
-
-    // just carry on if no input
-    if (strlen(inp) == 0) {
-        result = TRUE;
-
-    // habdle command if input starts with a '/'
-    } else if (inp[0] == '/') {
-        char inp_cpy[strlen(inp) + 1];
-        strcpy(inp_cpy, inp);
-        char *command = strtok(inp_cpy, " ");
-        result = _handle_command(command, inp);
-
-    // call a default handler if input didn't start with '/'
-    } else {
-        result = _cmd_default(inp);
-    }
-
-    inp_clear();
-    reset_search_attempts();
-    win_page_off();
-
-    return result;
-}
-
 /*
  * Initialise command autocompleter and history
  */
@@ -455,47 +413,34 @@ cmd_get_status_help(void)
     return result;
 }
 
-static struct cmd_t *
-_cmd_get_command(const char * const command)
-{
-    unsigned int i;
-    for (i = 0; i < ARRAY_SIZE(main_commands); i++) {
-        struct cmd_t *pcmd = main_commands+i;
-        if (strcmp(pcmd->cmd, command) == 0) {
-            return pcmd;
-        }
-    }
-
-    for (i = 0; i < ARRAY_SIZE(setting_commands); i++) {
-        struct cmd_t *pcmd = setting_commands+i;
-        if (strcmp(pcmd->cmd, command) == 0) {
-            return pcmd;
-        }
-    }
-
-    for (i = 0; i < ARRAY_SIZE(status_commands); i++) {
-        struct cmd_t *pcmd = status_commands+i;
-        if (strcmp(pcmd->cmd, command) == 0) {
-            return pcmd;
-        }
-    }
-
-    return NULL;
-}
-
-
-static gboolean
-_handle_command(const char * const command, const char * const inp)
+gboolean
+cmd_execute(const char * const command, const char * const inp)
 {
     struct cmd_t *cmd = _cmd_get_command(command);
     
     if (cmd != NULL) {
         return (cmd->func(inp, cmd->help));
     } else {
-        return _cmd_default(inp);
+        return cmd_execute_default(inp);
     }
 }
 
+gboolean
+cmd_execute_default(const char * const inp)
+{
+    if (win_in_chat()) {
+        char *recipient = win_get_recipient();
+        jabber_send(inp, recipient);
+        win_show_outgoing_msg("me", recipient, inp);
+        free(recipient);
+    } else {
+        cons_bad_command(inp);
+    }
+
+    return TRUE;
+}
+
+
 static gboolean
 _cmd_connect(const char * const inp, struct cmd_help_t help)
 {
@@ -783,21 +728,6 @@ _cmd_xa(const char * const inp, struct cmd_help_t help)
     return TRUE;
 }
 
-static gboolean
-_cmd_default(const char * const inp)
-{
-    if (win_in_chat()) {
-        char *recipient = win_get_recipient();
-        jabber_send(inp, recipient);
-        win_show_outgoing_msg("me", recipient, inp);
-        free(recipient);
-    } else {
-        cons_bad_command(inp);
-    }
-
-    return TRUE;
-}
-
 static void
 _update_presence(const jabber_presence_t presence, 
     const char * const show, const char * const inp)
@@ -867,3 +797,30 @@ _cmd_set_boolean_preference(const char * const inp, struct cmd_help_t help,
     return TRUE;
 }
 
+static struct cmd_t *
+_cmd_get_command(const char * const command)
+{
+    unsigned int i;
+    for (i = 0; i < ARRAY_SIZE(main_commands); i++) {
+        struct cmd_t *pcmd = main_commands+i;
+        if (strcmp(pcmd->cmd, command) == 0) {
+            return pcmd;
+        }
+    }
+
+    for (i = 0; i < ARRAY_SIZE(setting_commands); i++) {
+        struct cmd_t *pcmd = setting_commands+i;
+        if (strcmp(pcmd->cmd, command) == 0) {
+            return pcmd;
+        }
+    }
+
+    for (i = 0; i < ARRAY_SIZE(status_commands); i++) {
+        struct cmd_t *pcmd = status_commands+i;
+        if (strcmp(pcmd->cmd, command) == 0) {
+            return pcmd;
+        }
+    }
+
+    return NULL;
+}
diff --git a/src/command.h b/src/command.h
index 5967a053..7c5c6eb3 100644
--- a/src/command.h
+++ b/src/command.h
@@ -31,9 +31,10 @@ struct cmd_help_t {
 };
 
 void cmd_init(void);
-gboolean process_input(char *inp);
 char * cmd_complete(char *inp);
 void cmd_reset_completer(void);
+gboolean cmd_execute(const char * const command, const char * const inp);
+gboolean cmd_execute_default(const char * const inp);
 
 // command help
 GSList * cmd_get_basic_help(void);
diff --git a/src/profanity.c b/src/profanity.c
index 9834ef74..5663454e 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -30,6 +30,7 @@
 #include "profanity.h"
 #include "log.h"
 #include "chat_log.h"
+#include "history.h"
 #include "ui.h"
 #include "jabber.h"
 #include "command.h"
@@ -38,6 +39,7 @@
 #include "tinyurl.h"
 
 static log_level_t _get_log_level(char *log_level);
+gboolean _process_input(char *inp);
 static void _profanity_shutdown(void);
 
 void
@@ -67,7 +69,7 @@ profanity_run(void)
         }
 
         inp[size++] = '\0';
-        cmd_result = process_input(inp);
+        cmd_result = _process_input(inp);
     }
 
 }
@@ -113,3 +115,42 @@ _get_log_level(char *log_level)
         return PROF_LEVEL_ERROR;
     }
 }
+
+/* 
+ * Take a line of input and process it, return TRUE if profanity is to 
+ * continue, FALSE otherwise
+ */
+gboolean
+_process_input(char *inp)
+{
+    log_msg(PROF_LEVEL_DEBUG, PROF, "Input recieved: %s", inp);
+    gboolean result = FALSE;
+    g_strstrip(inp);
+    
+    // add line to history if something typed
+    if (strlen(inp) > 0) {
+        history_append(inp);
+    }
+
+    // just carry on if no input
+    if (strlen(inp) == 0) {
+        result = TRUE;
+
+    // habdle command if input starts with a '/'
+    } else if (inp[0] == '/') {
+        char inp_cpy[strlen(inp) + 1];
+        strcpy(inp_cpy, inp);
+        char *command = strtok(inp_cpy, " ");
+        result = cmd_execute(command, inp);
+
+    // call a default handler if input didn't start with '/'
+    } else {
+        result = cmd_execute_default(inp);
+    }
+
+    inp_clear();
+    reset_search_attempts();
+    win_page_off();
+
+    return result;
+}