int check_channel_match(char *tmp, char *channel) { char *p, *q, *chan = NULL; int wmatch = 0; if (!tmp || !channel) return 0; if (*channel == '*' && (strlen(channel)==1)) return 1; q = chan = alloca(strlen(tmp)+1); strcpy(chan, tmp); while ((p = next_in_comma_list(chan, &chan))) { if (!p || !*p) break; if (*p == '!' && wild_match(p+1, channel)) { wmatch = 0; break; } if (!my_stricmp(p, channel)) { wmatch = strlen(channel); break; } else if ((wmatch = wild_match(p, channel))) break; } return wmatch; }
unsigned long ircop_str_to_flags(unsigned org_flags, char *str) { unsigned long flag = org_flags; int neg = 0; char *ptr; int i, j; while ((ptr = next_in_comma_list(str, &str))) { if (!ptr || !*ptr) return flag; switch(*ptr) { case '-': neg = IGNORE_DONT; ptr++; break; default: neg = 0; } upper(ptr); if (!strcmp(ptr, all)) { switch(neg) { case IGNORE_DONT: flag &= (~-1); break; default: flag = -1; break; } } if (!strcmp(ptr, none)) return 0; for (i = 0, j = 1; opflags[i]; i++, j <<= 1 ) { if (!strcmp(ptr, opflags[i])) { switch(neg) { case IGNORE_DONT: flag &= (~j); break; default: flag |= j; break; } break; } } } return flag; }
unsigned long convert_str_to_flags(char *str) { char *p; register int i; register unsigned long j; unsigned long flags = 0; int done; if (!str || !*str) return 0; if (!my_strnicmp("FRIEND", str, 6)) flags = ADD_FRIEND; else if (!my_strnicmp("MASTER", str, 6)) flags = ADD_MASTER; else if (!my_strnicmp("OWNER", str, 5)) flags = ADD_OWNER; while ((p = next_in_comma_list(str, &str))) { if (!*p) break; upper(p); done = 0; for (i = 0, j = 1; strflags[i]; i++, j <<= 1 ) { if (!strcmp(p, strflags[i])) { flags |= j; done = 1; break; } } if (!done) { for (i = 0, j = PROT_REOP; protflags[i]; i++, j <<= 1) { if (!strcmp(p, protflags[i])) { flags |= j; break; } } } } return flags; }
int parse_mangle (const char *value, int nvalue, char **rv) { char *str1, *str2; char *copy; char *nv = NULL; if (rv) *rv = NULL; if (!value) return 0; copy = LOCAL_COPY(value); while ((str1 = new_next_arg(copy, ©))) { while (*str1 && (str2 = next_in_comma_list(str1, &str1))) { if (!my_strnicmp(str2, "ALL_OFF", 4)) nvalue |= STRIP_ALL_OFF; else if (!my_strnicmp(str2, "-ALL_OFF", 5)) nvalue &= ~(STRIP_ALL_OFF); else if (!my_strnicmp(str2, "ALL", 3)) nvalue = (0x7FFFFFFF ^ (MANGLE_ESCAPES) ^ (STRIP_OTHER) ^ (STRIP_UNPRINTABLE)); else if (!my_strnicmp(str2, "-ALL", 4)) nvalue = 0; else if (!my_strnicmp(str2, "ALT_CHAR", 3)) nvalue |= STRIP_ALT_CHAR; else if (!my_strnicmp(str2, "-ALT_CHAR", 4)) nvalue &= ~(STRIP_ALT_CHAR); else if (!my_strnicmp(str2, "ANSI", 2)) nvalue |= NORMALIZE; else if (!my_strnicmp(str2, "-ANSI", 3)) nvalue &= ~(NORMALIZE); else if (!my_strnicmp(str2, "BLINK", 2)) nvalue |= STRIP_BLINK; else if (!my_strnicmp(str2, "-BLINK", 3)) nvalue &= ~(STRIP_BLINK); else if (!my_strnicmp(str2, "BOLD", 2)) nvalue |= STRIP_BOLD; else if (!my_strnicmp(str2, "-BOLD", 3)) nvalue &= ~(STRIP_BOLD); else if (!my_strnicmp(str2, "COLOR", 1)) nvalue |= STRIP_COLOR; else if (!my_strnicmp(str2, "-COLOR", 2)) nvalue &= ~(STRIP_COLOR); else if (!my_strnicmp(str2, "ESCAPE", 1)) nvalue |= MANGLE_ESCAPES; else if (!my_strnicmp(str2, "-ESCAPE", 2)) nvalue &= ~(MANGLE_ESCAPES); else if (!my_strnicmp(str2, "ND_SPACE", 2)) nvalue |= STRIP_ND_SPACE; else if (!my_strnicmp(str2, "-ND_SPACE", 3)) nvalue &= ~(STRIP_ND_SPACE); else if (!my_strnicmp(str2, "NORMALIZE", 3)) nvalue |= NORMALIZE; else if (!my_strnicmp(str2, "-NORMALIZE", 4)) nvalue &= ~(NORMALIZE); else if (!my_strnicmp(str2, "NONE", 2)) nvalue = 0; else if (!my_strnicmp(str2, "OTHER", 2)) nvalue |= STRIP_OTHER; else if (!my_strnicmp(str2, "-OTHER", 3)) nvalue &= ~(STRIP_OTHER); else if (!my_strnicmp(str2, "REVERSE", 2)) nvalue |= STRIP_REVERSE; else if (!my_strnicmp(str2, "-REVERSE", 3)) nvalue &= ~(STRIP_REVERSE); else if (!my_strnicmp(str2, "UNDERLINE", 3)) nvalue |= STRIP_UNDERLINE; else if (!my_strnicmp(str2, "-UNDERLINE", 4)) nvalue &= ~(STRIP_UNDERLINE); else if (!my_strnicmp(str2, "UNPRINTABLE", 3)) nvalue |= STRIP_UNPRINTABLE; else if (!my_strnicmp(str2, "-UNPRINTABLE", 4)) nvalue &= ~(STRIP_UNPRINTABLE); } } if (rv) { if (nvalue & MANGLE_ESCAPES) malloc_strcat_wordlist(&nv, space, "ESCAPE"); if (nvalue & NORMALIZE) malloc_strcat_wordlist(&nv, space, "NORMALIZE"); if (nvalue & STRIP_COLOR) malloc_strcat_wordlist(&nv, space, "COLOR"); if (nvalue & STRIP_REVERSE) malloc_strcat_wordlist(&nv, space, "REVERSE"); if (nvalue & STRIP_UNDERLINE) malloc_strcat_wordlist(&nv, space, "UNDERLINE"); if (nvalue & STRIP_BOLD) malloc_strcat_wordlist(&nv, space, "BOLD"); if (nvalue & STRIP_BLINK) malloc_strcat_wordlist(&nv, space, "BLINK"); if (nvalue & STRIP_ALT_CHAR) malloc_strcat_wordlist(&nv, space, "ALT_CHAR"); if (nvalue & STRIP_ND_SPACE) malloc_strcat_wordlist(&nv, space, "ND_SPACE"); if (nvalue & STRIP_ALL_OFF) malloc_strcat_wordlist(&nv, space, "ALL_OFF"); if (nvalue & STRIP_UNPRINTABLE) malloc_strcat_wordlist(&nv, space, "UNPRINTABLE"); if (nvalue & STRIP_OTHER) malloc_strcat_wordlist(&nv, space, "OTHER"); *rv = nv; } return nvalue; }
int parse_mangle (char *value, int nvalue, char **rv) { char *str1, *str2; char *copy; char *nv = NULL; if (rv) *rv = NULL; if (!value) return 0; copy = LOCAL_COPY(value); while ((str1 = new_next_arg(copy, ©))) { while (*str1 && (str2 = next_in_comma_list(str1, &str1))) { if (!my_strnicmp(str2, "ALL_OFF", 4)) nvalue |= STRIP_ALL_OFF; else if (!my_strnicmp(str2, "-ALL_OFF", 5)) nvalue &= ~(STRIP_ALL_OFF); else if (!my_strnicmp(str2, "ALL", 3)) nvalue = (0x7FFFFFFF - (MANGLE_ESCAPES)); else if (!my_strnicmp(str2, "-ALL", 4)) nvalue = 0; else if (!my_strnicmp(str2, "ANSI", 2)) nvalue |= MANGLE_ANSI_CODES; else if (!my_strnicmp(str2, "-ANSI", 3)) nvalue &= ~(MANGLE_ANSI_CODES); else if (!my_strnicmp(str2, "BLINK", 2)) nvalue |= STRIP_BLINK; else if (!my_strnicmp(str2, "-BLINK", 3)) nvalue &= ~(STRIP_BLINK); else if (!my_strnicmp(str2, "BOLD", 2)) nvalue |= STRIP_BOLD; else if (!my_strnicmp(str2, "-BOLD", 3)) nvalue &= ~(STRIP_BOLD); else if (!my_strnicmp(str2, "COLOR", 1)) nvalue |= STRIP_COLOR; else if (!my_strnicmp(str2, "-COLOR", 2)) nvalue &= ~(STRIP_COLOR); else if (!my_strnicmp(str2, "ESCAPE", 1)) nvalue |= MANGLE_ESCAPES; else if (!my_strnicmp(str2, "-ESCAPE", 2)) nvalue &= ~(MANGLE_ESCAPES); else if (!my_strnicmp(str2, "ND_SPACE", 2)) nvalue |= STRIP_ND_SPACE; else if (!my_strnicmp(str2, "-ND_SPACE", 3)) nvalue &= ~(STRIP_ND_SPACE); else if (!my_strnicmp(str2, "NONE", 2)) nvalue = 0; else if (!my_strnicmp(str2, "REVERSE", 2)) nvalue |= STRIP_REVERSE; else if (!my_strnicmp(str2, "-REVERSE", 3)) nvalue &= ~(STRIP_REVERSE); else if (!my_strnicmp(str2, "ROM_CHAR", 2)) nvalue |= STRIP_ROM_CHAR; else if (!my_strnicmp(str2, "-ROM_CHAR", 3)) nvalue &= ~(STRIP_ROM_CHAR); else if (!my_strnicmp(str2, "UNDERLINE", 1)) nvalue |= STRIP_UNDERLINE; else if (!my_strnicmp(str2, "-UNDERLINE", 2)) nvalue &= ~(STRIP_UNDERLINE); } } if (rv) { if (nvalue & MANGLE_ESCAPES) m_s3cat(&nv, comma, "ESCAPE"); if (nvalue & MANGLE_ANSI_CODES) m_s3cat(&nv, comma, "ANSI"); if (nvalue & STRIP_COLOR) m_s3cat(&nv, comma, "COLOR"); if (nvalue & STRIP_REVERSE) m_s3cat(&nv, comma, "REVERSE"); if (nvalue & STRIP_UNDERLINE) m_s3cat(&nv, comma, "UNDERLINE"); if (nvalue & STRIP_BOLD) m_s3cat(&nv, comma, "BOLD"); if (nvalue & STRIP_BLINK) m_s3cat(&nv, comma, "BLINK"); if (nvalue & STRIP_ROM_CHAR) m_s3cat(&nv, comma, "ROM_CHAR"); if (nvalue & STRIP_ND_SPACE) m_s3cat(&nv, comma, "ND_SPACE"); if (nvalue & STRIP_ALL_OFF) m_s3cat(&nv, comma, "ALL_OFF"); *rv = nv; } return nvalue; }
int parse_debug(char *value, int nvalue, char **rv) { char *str1, *str2; char *copy; char *nv = NULL; if (rv) *rv = NULL; if (!value) return 0; copy = alloca(strlen(value) + 1); strcpy(copy, value); while ((str1 = new_next_arg(copy, ©))) { while (*str1 && (str2 = next_in_comma_list(str1, &str1))) { if (!my_strnicmp(str2, "ALL", 3)) nvalue = (0x7F - (DEBUG_TCL)); else if (!my_strnicmp(str2, "-ALL", 4)) nvalue = 0; else if (!my_strnicmp(str2, "COMMANDS", 4)) nvalue |= DEBUG_COMMANDS; else if (!my_strnicmp(str2, "-COMMANDS", 4)) nvalue &= ~(DEBUG_COMMANDS); else if (!my_strnicmp(str2, "EXPANSIONS", 4)) nvalue |= DEBUG_EXPANSIONS; else if (!my_strnicmp(str2, "-EXPANSIONS", 4)) nvalue &= ~(DEBUG_EXPANSIONS); else if (!my_strnicmp(str2, "TCL", 3)) nvalue |= DEBUG_TCL; else if (!my_strnicmp(str2, "-TCL", 3)) nvalue &= ~(DEBUG_TCL); else if (!my_strnicmp(str2, "ALIAS", 3)) nvalue |= DEBUG_CMDALIAS; else if (!my_strnicmp(str2, "-ALIAS", 3)) nvalue &= ~(DEBUG_CMDALIAS); else if (!my_strnicmp(str2, "HOOK", 3)) nvalue |= DEBUG_HOOK; else if (!my_strnicmp(str2, "-HOOK", 3)) nvalue &= ~(DEBUG_HOOK); else if (!my_strnicmp(str2, "VARIABLES", 3)) nvalue |= DEBUG_VARIABLE; else if (!my_strnicmp(str2, "-VARIABLES", 3)) nvalue &= ~(DEBUG_VARIABLE); else if (!my_strnicmp(str2, "FUNCTIONS", 3)) nvalue |= DEBUG_FUNC; else if (!my_strnicmp(str2, "-FUNCTIONS", 3)) nvalue &= ~(DEBUG_FUNC); else if (!my_strnicmp(str2, "STRUCTURES", 3)) nvalue |= DEBUG_STRUCTURES; else if (!my_strnicmp(str2, "-STRUCTURES", 3)) nvalue &= ~(DEBUG_STRUCTURES); } } if (rv) { if (nvalue & DEBUG_COMMANDS) m_s3cat(&nv, comma, "COMMANDS"); if (nvalue & DEBUG_EXPANSIONS) m_s3cat(&nv, comma, "EXPANSIONS"); if (nvalue & DEBUG_TCL) m_s3cat(&nv, comma, "TCL"); if (nvalue & DEBUG_CMDALIAS) m_s3cat(&nv, comma, "ALIAS"); if (nvalue & DEBUG_HOOK) m_s3cat(&nv, comma, "HOOK"); if (nvalue & DEBUG_VARIABLE) m_s3cat(&nv, comma, "VARIABLES"); if (nvalue & DEBUG_FUNC) m_s3cat(&nv, comma, "FUNCTIONS"); if (nvalue & DEBUG_STRUCTURES) m_s3cat(&nv, comma, "STRUCTURES"); *rv = nv; } return nvalue; }