X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fcore%2Flevels.c;fp=apps%2Firssi%2Fsrc%2Fcore%2Flevels.c;h=0000000000000000000000000000000000000000;hb=72c2de619079457f7a68100eb13385275a424a23;hp=0caf58b650438ea1c0ce66c9e67a851562f521cd;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;p=runtime.git diff --git a/apps/irssi/src/core/levels.c b/apps/irssi/src/core/levels.c deleted file mode 100644 index 0caf58b6..00000000 --- a/apps/irssi/src/core/levels.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - levels.c : irssi - - Copyright (C) 1999-2000 Timo Sirainen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "module.h" -#include "levels.h" - -static const char *levels[] = { - "CRAP", - "MSGS", - "PUBLICS", - "NOTICES", - "SNOTES", - "CTCPS", - "ACTIONS", - "JOINS", - "PARTS", - "QUITS", - "KICKS", - "MODES", - "TOPICS", - "WALLOPS", - "INVITES", - "NICKS", - "DCC", - "DCCMSGS", - "CLIENTNOTICES", - "CLIENTCRAP", - "CLIENTERRORS", - "HILIGHTS", - - "NOHILIGHT", - NULL -}; - -int level_get(const char *level) -{ - int n, len, match; - - if (g_strcasecmp(level, "ALL") == 0 || strcmp(level, "*") == 0) - return MSGLEVEL_ALL; - - if (g_strcasecmp(level, "NEVER") == 0) - return MSGLEVEL_NEVER; - - len = strlen(level); - if (len == 0) return 0; - - /* partial match allowed, as long as it's the only one that matches */ - match = 0; - for (n = 0; levels[n] != NULL; n++) { - if (g_strncasecmp(levels[n], level, len) == 0) { - if ((int)strlen(levels[n]) == len) { - /* full match */ - return 1L << n; - } - if (match > 0) { - /* ambiguous - abort */ - return 0; - } - match = 1L << n; - } - } - - return match; -} - -int level2bits(const char *level) -{ - char *orig, *str, *ptr; - int ret, singlelevel, negative; - - g_return_val_if_fail(level != NULL, 0); - - if (*level == '\0') - return 0; - - orig = str = g_strdup(level); - - ret = 0; - for (ptr = str; ; str++) { - if (*str == ' ') - *str++ = '\0'; - else if (*str != '\0') - continue; - - negative = *ptr == '-'; - if (*ptr == '-' || *ptr == '+') ptr++; - - singlelevel = level_get(ptr); - if (singlelevel != 0) { - ret = !negative ? (ret | singlelevel) : - (ret & ~singlelevel); - } - - while (*str == ' ') str++; - if (*str == '\0') break; - - ptr = str; - } - g_free(orig); - - return ret; -} - -char *bits2level(int bits) -{ - GString *str; - char *ret; - int n; - - if (bits == 0) - return g_strdup(""); - - if (bits == MSGLEVEL_ALL) - return g_strdup("ALL"); - - str = g_string_new(NULL); - if (bits & MSGLEVEL_NEVER) - g_string_append(str, "NEVER "); - - for (n = 0; levels[n] != NULL; n++) { - if (bits & (1L << n)) - g_string_sprintfa(str, "%s ", levels[n]); - } - if (str->len > 0) - g_string_truncate(str, str->len-1); - - ret = str->str; - g_string_free(str, FALSE); - - return ret; -} - -int combine_level(int dest, const char *src) -{ - char **list, **item, *itemname; - int itemlevel; - - g_return_val_if_fail(src != NULL, dest); - - list = g_strsplit(src, " ", -1); - for (item = list; *item != NULL; item++) { - itemname = *item + (**item == '+' || **item == '-' ? 1 : 0); - g_strup(itemname); - itemlevel = level_get(itemname); - - if (strcmp(itemname, "NONE") == 0) - dest = 0; - else if (**item == '-') - dest &= ~(itemlevel); - else - dest |= itemlevel; - } - g_strfreev(list); - - return dest; -}