minor changes, fix fd leak due to case insensitive channel name comparison, fix treatment of raw irc commands (thanks samurai) - ii - irc it, simple FIFO based irc client
  HTML git clone git://git.suckless.org/ii
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit e048dac3dfcdc38d9869af04a18593046908a0a5
   DIR parent 566fa01e471cbbe318640150b44fa59bfe50f9a8
  HTML Author: Nico Golde <nion@suckless.org>
       Date:   Mon, 24 Jan 2011 16:46:25 +0100
       
       minor changes, fix fd leak due to case insensitive channel name comparison, fix treatment of raw irc commands (thanks samurai)
       Diffstat:
         M CHANGES                             |       7 +++++++
         M config.mk                           |       2 +-
         M ii.c                                |      22 +++++++++++-----------
       
       3 files changed, 19 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/CHANGES b/CHANGES
       @@ -1,3 +1,10 @@
       +1.5 (2011-01-24):
       +    - fix channel name comparison in add_channel(), compare lowercase
       +      to prevent leaking file descriptors in the long run => Thanks samurai!
       +    - only handle commands ii explicitely understands and treat the rest
       +      as raw irc (only worked for raw commands in capital lettersin the past) => Thanks samurai!
       +    - minor changes
       +
        1.4 (2008-08-09):
            - fix directory traversal on servers that support SAJOIN
              NOTE: not marking as security relevant as it is only possible to
   DIR diff --git a/config.mk b/config.mk
       @@ -12,7 +12,7 @@ DESTDIR     =
        
        INCDIR      = ${PREFIX}/include
        LIBDIR      = ${PREFIX}/lib
       -VERSION     = 1.4
       +VERSION     = 1.5
        
        # includes and libs
        INCLUDES    = -I. -I${INCDIR} -I/usr/include
   DIR diff --git a/ii.c b/ii.c
       @@ -1,8 +1,7 @@
       -/*
       - * (C)opyright MMV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
       - * (C)opyright MMV-MMVII Nico Golde <nico at ngolde dot de>
       - * See LICENSE file for license details.
       - */
       +/* (C)opyright MMV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
       + * (C)opyright MMV-MMXI Nico Golde <nico at ngolde dot de>
       + * See LICENSE file for license details. */
       +
        #include <errno.h>
        #include <netdb.h>
        #include <sys/types.h>
       @@ -47,7 +46,7 @@ static void usage() {
                fprintf(stderr, "%s",
                                "ii - irc it - " VERSION "\n"
                                "(C)opyright MMV-MMVI Anselm R. Garbe\n"
       -                        "(C)opyright MMV-MMVII Nico Golde\n"
       +                        "(C)opyright MMV-MMXI Nico Golde\n"
                                "usage: ii [-i <irc dir>] [-s <host>] [-p <port>]\n"
                                "          [-n <nick>] [-k <password>] [-f <fullname>]\n");
                exit(EXIT_SUCCESS);
       @@ -82,16 +81,16 @@ static void create_dirtree(const char *dir) {
        
        static int get_filepath(char *filepath, size_t len, char *channel, char *file) {
                if(channel) {
       -                if(!snprintf(filepath, len, "%s/%s", path, striplower(channel)))
       +                if(!snprintf(filepath, len, "%s/%s", path, channel))
                                return 0;
                        create_dirtree(filepath);
       -                return snprintf(filepath, len, "%s/%s/%s", path, striplower(channel), file);
       +                return snprintf(filepath, len, "%s/%s/%s", path, channel, file);
                }
                return snprintf(filepath, len, "%s/%s", path, file);
        }
        
        static void create_filepath(char *filepath, size_t len, char *channel, char *suffix) {
       -        if(!get_filepath(filepath, len, channel, suffix)) {
       +        if(!get_filepath(filepath, len, striplower(channel), suffix)) {
                        fprintf(stderr, "%s", "ii: path to irc directory too long\n");
                        exit(EXIT_FAILURE);
                }
       @@ -105,9 +104,10 @@ static int open_channel(char *name) {
                return open(infile, O_RDONLY | O_NONBLOCK, 0);
        }
        
       -static void add_channel(char *name) {
       +static void add_channel(char *cname) {
                Channel *c;
                int fd;
       +        char *name = striplower(cname);
        
                for(c = channels; c; c = c->next)
                        if(!strcmp(name, c->name))
       @@ -234,7 +234,7 @@ static void proc_channels_input(Channel *c, char *buf) {
                        return;
                }
                message[0] = '\0';
       -        switch (buf[1]) {
       +        if(buf[2] == ' ' || buf[2] == '\0') switch (buf[1]) {
                        case 'j':
                                p = strchr(&buf[3], ' ');
                                if(p) *p = 0;