]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/helpfile.c
fix another compile warning
[irc/evilnet/x3.git] / src / helpfile.c
index 37a51e1fde5e11b0ddabdcb556475266c76b212d..3abe740cbc8a205c57c82b8da1619e3b62aee305 100644 (file)
@@ -308,10 +308,18 @@ table_send(struct userNode *from, const char *to, unsigned int size, irc_send_fu
 
     if (irc_send)
         {} /* use that function */
-    else if (hi)
+    else if(IsChannelName(to)) {
+        irc_send = irc_privmsg;
+    }
+    else if (message_dest->no_notice) {
+        irc_send = irc_privmsg;
+    }
+    else if (hi) {
         irc_send = HANDLE_FLAGGED(hi, USE_PRIVMSG) ? irc_privmsg : irc_notice;
-    else
-        irc_send = IsChannelName(to) ? irc_privmsg : irc_notice;
+    }
+    else {
+        irc_send = irc_notice;
+    }
 
     /* Limit size to how much we can show at once */
     if (size > sizeof(line))
@@ -381,9 +389,13 @@ table_send(struct userNode *from, const char *to, unsigned int size, irc_send_fu
     /* Send the table. */
     for (jj=0, pos=0, reps=0; ii<table.length; ) {
         while (1) {
+            int PAD_COL_LEFT = false;
+            if(table.flags & TABLE_PAD_LEFT || str_is_number(table.contents[ii][jj]))
+                PAD_COL_LEFT = true;
             len = strlen(table.contents[ii][jj]);
             spaces = max_width[jj] - len;
-            if (table.flags & TABLE_PAD_LEFT)
+            //if (table.flags & TABLE_PAD_LEFT)
+            if(PAD_COL_LEFT)
                 while (spaces--) line[pos++] = ' ';
             memcpy(line+pos, table.contents[ii][jj], len);
             pos += len;
@@ -396,7 +408,8 @@ table_send(struct userNode *from, const char *to, unsigned int size, irc_send_fu
                     break;
                 }
             }
-            if (!(table.flags & TABLE_PAD_LEFT))
+            //if (!(table.flags & TABLE_PAD_LEFT))
+            if(!PAD_COL_LEFT)
                 while (spaces--)
                     line[pos++] = ' ';
             line[pos++] = ' ';
@@ -439,6 +452,8 @@ vsend_message(const char *dest, struct userNode *src, struct handle_info *handle
     unsigned int size, ipos, pos, length, chars_sent, use_color;
     unsigned int expand_pos, expand_ipos, newline_ipos;
     char line[MAX_LINE_SIZE];
+    struct service *service;
+    static char* trigger = NULL;
 
     if (IsChannelName(dest) || *dest == '$') {
         message_dest = NULL;
@@ -476,7 +491,10 @@ vsend_message(const char *dest, struct userNode *src, struct handle_info *handle
         size = DEFAULT_LINE_SIZE;
     switch (msg_type & 3) {
         case 0:
-            irc_send = irc_notice;
+            if(message_dest && message_dest->no_notice)
+               irc_send = irc_privmsg;
+            else
+               irc_send = irc_notice;
             break;
         case 2:
             irc_send = irc_wallchops;
@@ -494,7 +512,7 @@ vsend_message(const char *dest, struct userNode *src, struct handle_info *handle
     expand_pos = pos = 0;
     chars_sent = 0;
     while (input.list[ipos]) {
-       char ch, *value, *free_value;
+       char ch, *value = NULL, *free_value;
 
         while ((ch = input.list[ipos]) && (ch != '$') && (ch != '\n') && (pos < size)) {
            line[pos++] = ch;
@@ -579,9 +597,23 @@ vsend_message(const char *dest, struct userNode *src, struct handle_info *handle
         case 's':
             value = self->name;
             break;
+#ifdef HAVE_HELPSERV
+        case 'i':
+            value = strdup(get_helpserv_id(dest, src));
+            break;
+#endif
        case 'H':
            value = handle ? handle->handle : "Account";
            break;
+        case '!':  /* Command Char for chanserv */
+            if(!trigger)
+               trigger = calloc(sizeof(*trigger), 2);
+            if(chanserv && (service = service_find(chanserv->nick)))
+                trigger[0] = service->trigger;
+            else
+                trigger[0] = '!';
+            value = trigger;
+            break;
 #define SEND_LINE(TRUNCED) do { \
     line[pos] = 0; \
     if (pos > 0) { \