changeset 970:1ebd2e7ea395

Merge with myself
author Mikael Berthe <mikael@lilotux.net>
date Sat, 30 Sep 2006 13:40:48 +0200
parents abfe3ca42c35 (current diff) d3bfa9e9d88c (diff)
children 7c119669968c
files
diffstat 9 files changed, 122 insertions(+), 87 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/commands.c	Sat Sep 30 13:40:48 2006 +0200
@@ -33,6 +33,15 @@
 #include "settings.h"
 #include "events.h"
 
+#define IMSTATUS_AWAY           "away"
+#define IMSTATUS_ONLINE         "online"
+#define IMSTATUS_OFFLINE        "offline"
+#define IMSTATUS_FREE4CHAT      "free"
+#define IMSTATUS_INVISIBLE      "invisible"
+#define IMSTATUS_AVAILABLE      "avail"
+#define IMSTATUS_NOTAVAILABLE   "notavail"
+#define IMSTATUS_DONOTDISTURB   "dnd"
+
 // Commands callbacks
 static void do_roster(char *arg);
 static void do_status(char *arg);
@@ -221,8 +230,8 @@
   const gchar *value;
   char *newline = line;
 
-  // Ignore leading '/'
-  for (p1 = line ; *p1 == '/' ; p1++)
+  // Ignore leading COMMAND_CHAR
+  for (p1 = line ; *p1 == COMMAND_CHAR ; p1++)
     ;
   // Locate the end of the word
   for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++)
@@ -235,7 +244,7 @@
   if (value) {
     // There is an alias to expand
     newline = g_new(char, strlen(value)+strlen(p2)+2);
-    *newline = '/';
+    *newline = COMMAND_CHAR;
     strcpy(newline+1, value);
     strcat(newline, p2);
   }
@@ -253,8 +262,8 @@
   char *com;
   GSList *sl_com;
 
-  // Ignore leading '/'
-  for (p1 = command ; *p1 == '/' ; p1++)
+  // Ignore leading COMMAND_CHAR
+  for (p1 = command ; *p1 == COMMAND_CHAR ; p1++)
     ;
   // Locate the end of the command
   for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++)
@@ -338,12 +347,14 @@
     *p = 0;
 
   // Command "quit"?
-  if ((!strncasecmp(xpline, "/quit", 5)) && (scr_get_multimode() != 2) )
+  if ((scr_get_multimode() != 2)
+      && (!strncasecmp(xpline, mkcmdstr("quit"), strlen(mkcmdstr("quit")))))
     if (!xpline[5] || xpline[5] == ' ')
       return 255;
 
   // If verbatim multi-line mode, we check if another /msay command is typed
-  if ((scr_get_multimode() == 2) && (strncasecmp(xpline, "/msay ", 6))) {
+  if ((scr_get_multimode() == 2)
+      && (strncasecmp(xpline, mkcmdstr("msay "), strlen(mkcmdstr("msay "))))) {
     // It isn't an /msay command
     scr_append_multiline(xpline);
     g_free(xpline);
@@ -397,7 +408,7 @@
     return 0;
   }
 
-  if (*line != '/') {
+  if (*line != COMMAND_CHAR) {
     // This isn't a command
     if (scr_get_multimode())
       scr_append_multiline(line);
@@ -416,57 +427,73 @@
 
 static void do_roster(char *arg)
 {
-  if (!strcasecmp(arg, "top")) {
+  char **paramlst;
+  char *subcmd;
+
+  paramlst = split_arg(arg, 2, 1); // subcmd, arg
+  subcmd = *paramlst;
+  arg = *(paramlst+1);
+
+  if (!subcmd || !*subcmd) {
+    scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
+    free_arg_lst(paramlst);
+    return;
+  }
+
+  if (!strcasecmp(subcmd, "top")) {
     scr_RosterTop();
     update_roster = TRUE;
-  } else if (!strcasecmp(arg, "bottom")) {
+  } else if (!strcasecmp(subcmd, "bottom")) {
     scr_RosterBottom();
     update_roster = TRUE;
-  } else if (!strcasecmp(arg, "hide")) {
+  } else if (!strcasecmp(subcmd, "hide")) {
     scr_RosterVisibility(0);
-  } else if (!strcasecmp(arg, "show")) {
+  } else if (!strcasecmp(subcmd, "show")) {
     scr_RosterVisibility(1);
-  } else if (!strcasecmp(arg, "toggle")) {
+  } else if (!strcasecmp(subcmd, "toggle")) {
     scr_RosterVisibility(-1);
-  } else if (!strcasecmp(arg, "hide_offline")) {
+  } else if (!strcasecmp(subcmd, "hide_offline")) {
     buddylist_set_hide_offline_buddies(TRUE);
     if (current_buddy)
       buddylist_build();
     update_roster = TRUE;
-  } else if (!strcasecmp(arg, "show_offline")) {
+  } else if (!strcasecmp(subcmd, "show_offline")) {
     buddylist_set_hide_offline_buddies(FALSE);
     buddylist_build();
     update_roster = TRUE;
-  } else if (!strcasecmp(arg, "toggle_offline")) {
+  } else if (!strcasecmp(subcmd, "toggle_offline")) {
     buddylist_set_hide_offline_buddies(-1);
     buddylist_build();
     update_roster = TRUE;
-  } else if (!strcasecmp(arg, "unread_first")) {
+  } else if (!strcasecmp(subcmd, "unread_first")) {
     scr_RosterUnreadMessage(0);
-  } else if (!strcasecmp(arg, "unread_next")) {
+  } else if (!strcasecmp(subcmd, "unread_next")) {
     scr_RosterUnreadMessage(1);
-  } else if (!strcasecmp(arg, "alternate")) {
+  } else if (!strcasecmp(subcmd, "alternate")) {
     scr_RosterJumpAlternate();
-  } else if (!strncasecmp(arg, "search", 6)) {
-    char *string = arg+6;
+  } else if (!strncasecmp(subcmd, "search", 6)) {
+    char *string = subcmd+6;
     if (*string && (*string != ' ')) {
       scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
+      free_arg_lst(paramlst);
       return;
     }
     while (*string == ' ')
       string++;
     if (!*string) {
       scr_LogPrint(LPRINT_NORMAL, "What name or JID are you looking for?");
+      free_arg_lst(paramlst);
       return;
     }
     scr_RosterSearch(string);
     update_roster = TRUE;
-  } else if (!strcasecmp(arg, "up")) {
+  } else if (!strcasecmp(subcmd, "up")) {
     scr_RosterUp();
-  } else if (!strcasecmp(arg, "down")) {
+  } else if (!strcasecmp(subcmd, "down")) {
     scr_RosterDown();
   } else
     scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
+  free_arg_lst(paramlst);
 }
 
 //  setstatus(recipient, arg)
@@ -494,14 +521,14 @@
     return;
   }
 
-  if      (!strcasecmp(status, "offline"))   st = offline;
-  else if (!strcasecmp(status, "online"))    st = available;
-  else if (!strcasecmp(status, "avail"))     st = available;
-  else if (!strcasecmp(status, "away"))      st = away;
-  else if (!strcasecmp(status, "invisible")) st = invisible;
-  else if (!strcasecmp(status, "dnd"))       st = dontdisturb;
-  else if (!strcasecmp(status, "notavail"))  st = notavail;
-  else if (!strcasecmp(status, "free"))      st = freeforchat;
+  if      (!strcasecmp(status, IMSTATUS_OFFLINE))       st = offline;
+  else if (!strcasecmp(status, IMSTATUS_ONLINE))        st = available;
+  else if (!strcasecmp(status, IMSTATUS_AVAILABLE))     st = available;
+  else if (!strcasecmp(status, IMSTATUS_AWAY))          st = away;
+  else if (!strcasecmp(status, IMSTATUS_INVISIBLE))     st = invisible;
+  else if (!strcasecmp(status, IMSTATUS_DONOTDISTURB))  st = dontdisturb;
+  else if (!strcasecmp(status, IMSTATUS_NOTAVAILABLE))  st = notavail;
+  else if (!strcasecmp(status, IMSTATUS_FREE4CHAT))     st = freeforchat;
   else {
     scr_LogPrint(LPRINT_NORMAL, "Unrecognized status!");
     free_arg_lst(paramlst);
@@ -804,8 +831,8 @@
     scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
     scr_LogPrint(LPRINT_NORMAL, "Please read the manual before using "
                  "the /msay command.");
-    scr_LogPrint(LPRINT_NORMAL, "(Use \"/msay begin\" to enter "
-                 "multi-line mode...)");
+    scr_LogPrint(LPRINT_NORMAL, "(Use \"%s begin\" to enter "
+                 "multi-line mode...)", mkcmdstr("msay"));
     free_arg_lst(paramlst);
     return;
   }
@@ -841,10 +868,11 @@
 
     scr_LogPrint(LPRINT_NORMAL, "Entered %smulti-line message mode.",
                  verbat ? "VERBATIM " : "");
-    scr_LogPrint(LPRINT_NORMAL, "Select a buddy and use \"/msay send\" "
-                 "when your message is ready.");
+    scr_LogPrint(LPRINT_NORMAL, "Select a buddy and use \"%s send\" "
+                 "when your message is ready.", mkcmdstr("msay"));
     if (verbat)
-      scr_LogPrint(LPRINT_NORMAL, "Use \"/msay abort\" to abort this mode.");
+      scr_LogPrint(LPRINT_NORMAL, "Use \"%s abort\" to abort this mode.",
+                   mkcmdstr("msay"));
     g_free(subj_utf8);
     return;
   } else if (strcasecmp(subcmd, "send") && strcasecmp(subcmd, "send_to")) {
@@ -856,7 +884,7 @@
 
   if (!scr_get_multimode()) {
     scr_LogPrint(LPRINT_NORMAL, "No message to send.  "
-                 "Use \"/msay begin\" first.");
+                 "Use \"%s begin\" first.", mkcmdstr("msay"));
     return;
   }
 
@@ -1050,7 +1078,7 @@
   free_arg_lst(paramlst);
 }
 
-static void do_clear(char *arg)    // Alias for "/buffer clear"
+static void do_clear(char *arg)    // Alias for "buffer clear"
 {
   do_buffer("clear");
 }
@@ -1842,7 +1870,7 @@
 
   arg = to_utf8(arg);
   // Set the topic
-  msg = g_strdup_printf("/me has set the topic to: %s", arg);
+  msg = g_strdup_printf("%s has set the topic to: %s", mkcmdstr("me"), arg);
   jb_send_msg(buddy_getjid(bud), msg, ROSTER_TYPE_ROOM, arg);
   g_free(arg);
   g_free(msg);
--- a/mcabber/src/compl.h	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/compl.h	Sat Sep 30 13:40:48 2006 +0200
@@ -3,23 +3,23 @@
 
 #include <glib.h>
 
-#define COMPL_CMD         (1<<0)
-#define COMPL_JID         (1<<2)
-#define COMPL_URLJID      (1<<3)  // Not implemented yet
-#define COMPL_NAME        (1<<4)  // Not implemented yet
-#define COMPL_STATUS      (1<<5)
-#define COMPL_FILENAME    (1<<6)  // Not implemented yet
-#define COMPL_ROSTER      (1<<7)
-#define COMPL_BUFFER      (1<<8)
-#define COMPL_GROUP       (1<<9)
-#define COMPL_GROUPNAME   (1<<10)
-#define COMPL_MULTILINE   (1<<11)
-#define COMPL_ROOM        (1<<12)
-#define COMPL_RESOURCE    (1<<13)
-#define COMPL_AUTH        (1<<14)
-#define COMPL_REQUEST     (1<<15)
-#define COMPL_EVENTS      (1<<16)
-#define COMPL_EVENTSID    (1<<17)
+#define COMPL_CMD         (1U<<0)
+#define COMPL_JID         (1U<<1)
+#define COMPL_URLJID      (1U<<2)   // Not implemented yet
+#define COMPL_NAME        (1U<<3)   // Not implemented yet
+#define COMPL_STATUS      (1U<<4)
+#define COMPL_FILENAME    (1U<<5)   // Not implemented yet
+#define COMPL_ROSTER      (1U<<6)
+#define COMPL_BUFFER      (1U<<7)
+#define COMPL_GROUP       (1U<<8)
+#define COMPL_GROUPNAME   (1U<<9)
+#define COMPL_MULTILINE   (1U<<10)
+#define COMPL_ROOM        (1U<<11)
+#define COMPL_RESOURCE    (1U<<12)
+#define COMPL_AUTH        (1U<<13)
+#define COMPL_REQUEST     (1U<<14)
+#define COMPL_EVENTS      (1U<<15)
+#define COMPL_EVENTSID    (1U<<16)
 
 void    compl_add_category_word(guint, const char *command);
 void    compl_del_category_word(guint categ, const char *word);
--- a/mcabber/src/hooks.c	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/hooks.c	Sat Sep 30 13:40:48 2006 +0200
@@ -57,10 +57,10 @@
       bmsg = g_strdup_printf("<%s> %s", resname, msg);
     }
     wmsg = bmsg;
-    if (!strncmp(msg, "/me ", 4))
+    if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me "))))
       wmsg = mmsg = g_strdup_printf("*%s %s", resname, msg+4);
   } else {
-    if (!strncmp(msg, "/me ", 4))
+    if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me "))))
       wmsg = mmsg = g_strdup_printf("*%s %s", jid, msg+4);
     else
       wmsg = (char*) msg;
@@ -92,7 +92,7 @@
         wmsg = bmsg = g_strdup(msg);
       } else {
         wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", resname, msg);
-        if (!strncmp(msg, "/me ", 4))
+        if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me "))))
           wmsg = mmsg = g_strdup_printf("PRIV#*%s %s", resname, msg+4);
       }
     } else {
@@ -174,7 +174,7 @@
     wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg);
   } else {
     wmsg = (char*)msg;
-    if (!strncmp(msg, "/me ", 4)) {
+    if (!strncmp(msg, mkcmdstr("me "), strlen(mkcmdstr("me ")))) {
       const char *myid = settings_opt_get("username");
       if (myid)
         wmsg = mmsg = g_strdup_printf("*%s %s", settings_opt_get("username"),
--- a/mcabber/src/jab_iq.c	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/jab_iq.c	Sat Sep 30 13:40:48 2006 +0200
@@ -136,7 +136,7 @@
     // could be freed.
     p = g_slist_next(p);
 
-    if ((!i->ts_expire && now_t > i->ts_create + IQS_MAX_TIMEOUT) ||
+    if ((!i->ts_expire && now_t > i->ts_create + (time_t)IQS_MAX_TIMEOUT) ||
         (i->ts_expire && now_t > i->ts_expire)) {
       iqs_callback(i->id, NULL, IQS_CONTEXT_TIMEOUT);
     }
--- a/mcabber/src/jab_priv.h	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/jab_priv.h	Sat Sep 30 13:40:48 2006 +0200
@@ -21,12 +21,12 @@
 };
 
 
-#define IQS_DEFAULT_TIMEOUT 90
-#define IQS_MAX_TIMEOUT     600
+#define IQS_DEFAULT_TIMEOUT 90U
+#define IQS_MAX_TIMEOUT     600U
 
-#define IQS_CONTEXT_RESULT  0   /* Normal result should be zero */
-#define IQS_CONTEXT_TIMEOUT 1
-#define IQS_CONTEXT_ERROR   2
+#define IQS_CONTEXT_RESULT  0U  /* Normal result should be zero */
+#define IQS_CONTEXT_TIMEOUT 1U
+#define IQS_CONTEXT_ERROR   2U
 
 extern enum enum_jstate jstate;
 
--- a/mcabber/src/roster.h	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/roster.h	Sat Sep 30 13:40:48 2006 +0200
@@ -41,10 +41,10 @@
 enum subscr {
   sub_none    = 0,
   sub_pending = 1,
-  sub_to      = 1 << 2,
-  sub_from    = 1 << 3,
+  sub_to      = 1 << 1,
+  sub_from    = 1 << 2,
   sub_both    = sub_to|sub_from,
-  sub_remove  = 1 << 4
+  sub_remove  = 1 << 3
 };
 
 enum findwhat {
@@ -61,17 +61,17 @@
 };
 
 // Roster_type is a set of flags, so values should be 2^n
-#define ROSTER_TYPE_USER    1
-#define ROSTER_TYPE_GROUP   2
-#define ROSTER_TYPE_AGENT   4
-#define ROSTER_TYPE_ROOM    8
-#define ROSTER_TYPE_SPECIAL 16
+#define ROSTER_TYPE_USER    1U
+#define ROSTER_TYPE_GROUP   (1U<<1)
+#define ROSTER_TYPE_AGENT   (1U<<2)
+#define ROSTER_TYPE_ROOM    (1U<<3)
+#define ROSTER_TYPE_SPECIAL (1U<<4)
 
 // Flags:
-#define ROSTER_FLAG_MSG     1   // Message not read
-#define ROSTER_FLAG_HIDE    2   // Group hidden (or buddy window closed)
-#define ROSTER_FLAG_LOCK    4   // Node should not be removed from buddylist
-// ROSTER_FLAG_LOCAL   8   // Buddy not on server's roster  (??)
+#define ROSTER_FLAG_MSG     1U      // Message not read
+#define ROSTER_FLAG_HIDE    (1U<<1) // Group hidden (or buddy window closed)
+#define ROSTER_FLAG_LOCK    (1U<<2) // Node should not be removed from buddylist
+// ROSTER_FLAG_LOCAL   (1U<<3) // Buddy not on server's roster  (??)
 
 extern GList *buddylist;
 extern GList *current_buddy;
--- a/mcabber/src/screen.c	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/screen.c	Sat Sep 30 13:40:48 2006 +0200
@@ -305,7 +305,6 @@
   intrflush(stdscr, FALSE);
   start_color();
   use_default_colors();
-  Curses = TRUE;
 
   ParseColors();
 
@@ -317,6 +316,7 @@
   inputLine[0] = 0;
   ptr_inputline = inputLine;
 
+  Curses = TRUE;
   return;
 }
 
@@ -2064,7 +2064,7 @@
   int quote = FALSE;
 
   // Not a command?
-  if ((ptr_inputline == inputLine) || (inputLine[0] != '/')) {
+  if ((ptr_inputline == inputLine) || (inputLine[0] != COMMAND_CHAR)) {
     if (!current_buddy) return -2;
     if (buddy_gettype(BUDDATA(current_buddy)) == ROSTER_TYPE_ROOM) {
       *p_row = inputLine;
@@ -2253,7 +2253,7 @@
 {
   if (!Curses) return;
   // Leave multi-line mode
-  process_command("/msay abort");
+  process_command(mkcmdstr("msay abort"));
   // Same as Ctrl-g, now
   scr_cancel_current_completion();
   scr_end_current_completion();
@@ -2444,7 +2444,7 @@
   if (boundcmd) {
     gchar *cmd, *boundcmd_locale;
     boundcmd_locale = from_utf8(boundcmd);
-    cmd = g_strdup_printf("/%s", boundcmd_locale);
+    cmd = g_strdup_printf(mkcmdstr("%s"), boundcmd_locale);
     scr_CheckAutoAway(TRUE);
     if (process_command(cmd))
       return 255; // Quit
--- a/mcabber/src/settings.c	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/settings.c	Sat Sep 30 13:40:48 2006 +0200
@@ -136,16 +136,18 @@
 
     if ((strchr(line, '=') != NULL)) {
       // Only accept the set, alias and bind commands
-      if (strncmp(line, "set ", 4) &&
-          strncmp(line, "bind ", 5) &&
-          strncmp(line, "alias ", 6)) {
+      if (strncmp(line, "set ", strlen("set ")) &&
+          strncmp(line, "bind ", strlen("bind ")) &&
+          strncmp(line, "alias ", strlen("alias "))) {
         scr_LogPrint(LPRINT_LOGNORM,
                      "Error in configuration file (l. %d): bad command", ln);
         err++;
         continue;
       }
-      *(--line) = '/';        // Set the leading '/' to build a command line
-      process_command(line);  // Process the command
+      // Set the leading COMMAND_CHAR to build a command line
+      // and process the command
+      *(--line) = COMMAND_CHAR;
+      process_command(line);
     } else {
       scr_LogPrint(LPRINT_LOGNORM,
                    "Error in configuration file (l. %d): no assignment", ln);
--- a/mcabber/src/settings.h	Sat Sep 30 13:32:58 2006 +0200
+++ b/mcabber/src/settings.h	Sat Sep 30 13:40:48 2006 +0200
@@ -15,9 +15,14 @@
 #define SETTINGS_TYPE_ALIAS     2
 #define SETTINGS_TYPE_BINDING   3
 
+#define COMMAND_CHAR    '/'
+#define COMMAND_CHARSTR "/"
+
 #define settings_opt_get(k)     settings_get(SETTINGS_TYPE_OPTION, k)
 #define settings_opt_get_int(k) settings_get_int(SETTINGS_TYPE_OPTION, k)
 
+#define mkcmdstr(cmd) COMMAND_CHARSTR cmd
+
 int     cfg_read_file(char *filename);
 guint   parse_assigment(gchar *assignment,
                         const gchar **pkey, const gchar **pval);