X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Ftools.c;h=daedcd095ae19d28097f8814c1ef7fc362b7e433;hb=92892abf0475e067732465fe018ebead6485dd62;hp=2cb1065fa8458b33b2235200e3269f79a1e48558;hpb=727b8a503f88131d92025bc43e3803d4a7c2aa00;p=NeonServV5.git diff --git a/src/tools.c b/src/tools.c index 2cb1065..daedcd0 100644 --- a/src/tools.c +++ b/src/tools.c @@ -1,4 +1,4 @@ -/* tools.c - NeonServ v5.3 +/* tools.c - NeonServ v5.6 * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -204,7 +204,7 @@ char **table_end(struct Table *table) { if(table->contents[row][col][i] == '\002') j++; else if(table->contents[row][col][i] == '\003') { j++; - for(k = 1; k < 2; k++) { + for(k = 1; k <= 2; k++) { if(isdigit(table->contents[row][col][i+k])) j++; else @@ -212,7 +212,8 @@ char **table_end(struct Table *table) { } } } - } + } else if(table->col_flags[col] & TABLE_FLAG_COL_SKIP_NULL) + continue; i -= j; if(col < table->width-1) { for(;i < table->maxwidth[col]; i++) { @@ -416,6 +417,8 @@ void flushModeBuffer(struct ModeBuffer *modeBuf) { modeStr[modePos++] = modeBuf->addModes[i]; if(modeBuf->addModesParams[i]) { paramPos += sprintf(paramStr + paramPos, " %s", modeBuf->addModesParams[i]); + free(modeBuf->addModesParams[i]); + modeBuf->addModesParams[i] = NULL; } } modeBuf->addCount = 0; @@ -426,6 +429,8 @@ void flushModeBuffer(struct ModeBuffer *modeBuf) { modeStr[modePos++] = modeBuf->delModes[i]; if(modeBuf->delModesParams[i]) { paramPos += sprintf(paramStr + paramPos, " %s", modeBuf->delModesParams[i]); + free(modeBuf->delModesParams[i]); + modeBuf->delModesParams[i] = NULL; } } modeBuf->delCount = 0; @@ -517,7 +522,7 @@ int isFakeHost(char *host) { char *p1, *p2 = host; //find the last dot to identify if the hostmask is a fake host - while((p1 = strstr(p2, "."))) { + while((p1 = strchr(p2, '.'))) { p2 = p1 + 1; } //TLD database: http://www.iana.org/domains/root/db/