ii-1.4-joinuser.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       ii-1.4-joinuser.diff (2213B)
       ---
            1 diff -r d93eaacde742 ii.c
            2 --- a/ii.c        Fri Jun 25 10:55:05 2010 +0200
            3 +++ b/ii.c        Tue Jul 13 09:29:23 2010 -0700
            4 @@ -105,6 +105,7 @@
            5          return open(infile, O_RDONLY | O_NONBLOCK, 0);
            6  }
            7  
            8 +static void print_out(char *channel, char *buf); // needs to be declared
            9  static void add_channel(char *name) {
           10          Channel *c;
           11          int fd;
           12 @@ -130,6 +131,12 @@
           13          }
           14          c->fd = fd;
           15          c->name = strdup(name);
           16 +
           17 +        if(name[0] && !((name[0]=='#')||(name[0]=='&')||(name[0]=='+')||(name[0]=='!'))) {
           18 +                char msg[128];
           19 +                snprintf(msg, sizeof(msg), "-!- %s has joined %s", nick, name);
           20 +                print_out(name, msg);
           21 +        }
           22  }
           23  
           24  static void rm_channel(Channel *c) {
           25 @@ -210,6 +217,7 @@
           26          if(channel) snprintf(server, sizeof(server), "-!- %s", channel);
           27          if(strstr(buf, server)) channel="";
           28          create_filepath(outfile, sizeof(outfile), channel, "out");
           29 +        if(channel && channel[0]) add_channel(channel);
           30          if(!(out = fopen(outfile, "a"))) return;
           31  
           32          strftime(buft, sizeof(buft), "%F %R", localtime(&t));
           33 @@ -237,17 +245,14 @@
           34                  case 'j':
           35                          p = strchr(&buf[3], ' ');
           36                          if(p) *p = 0;
           37 +                        add_channel(&buf[3]);
           38                          if((buf[3]=='#')||(buf[3]=='&')||(buf[3]=='+')||(buf[3]=='!')){
           39                                  if(p) snprintf(message, PIPE_BUF, "JOIN %s %s\r\n", &buf[3], p + 1); /* password protected channel */
           40                                  else snprintf(message, PIPE_BUF, "JOIN %s\r\n", &buf[3]);
           41 -                                add_channel(&buf[3]);
           42                          }
           43 -                        else {
           44 -                                if(p){
           45 -                                        add_channel(&buf[3]);
           46 -                                        proc_channels_privmsg(&buf[3], p + 1);
           47 -                                        return;
           48 -                                }
           49 +                        else if(p) {
           50 +                                proc_channels_privmsg(&buf[3], p + 1);
           51 +                                return;
           52                          }
           53                          break;
           54                  case 't':
           55 @@ -357,6 +362,8 @@
           56                  argv[TOK_CHAN] = argv[TOK_TEXT];
           57                  snprintf(message, PIPE_BUF, "-!- %s(%s) has joined %s", argv[TOK_NICKSRV], argv[TOK_USER], argv[TOK_TEXT]);
           58          } else if(!strncmp("PART", argv[TOK_CMD], 5)) {
           59 +                if (!strcmp(nick, argv[TOK_NICKSRV]))
           60 +                        return;
           61                  snprintf(message, PIPE_BUF, "-!- %s(%s) has left %s", argv[TOK_NICKSRV], argv[TOK_USER], argv[TOK_CHAN]);
           62          } else if(!strncmp("MODE", argv[TOK_CMD], 5))
           63                  snprintf(message, PIPE_BUF, "-!- %s changed mode/%s -> %s %s", argv[TOK_NICKSRV], argv[TOK_CMD + 1] ? argv[TOK_CMD + 1] : "" , argv[TOK_CMD + 2]? argv[TOK_CMD + 2] : "", argv[TOK_CMD + 3] ? argv[TOK_CMD + 3] : "");