Exemple #1
0
unsigned int irc_strip_ctrlcodes(char **bufp, const char *text) {
    char *buf;
    unsigned int text_len;
    
    *bufp = NULL;
    
    if(blankstr(text))
        return 0;
    
    text_len = strlen(text)+1;
    
    buf = (char*)callocm(text_len, sizeof(char*));
    if(buf == NULL)
        return 0;
    
    xstrcpy(buf, text, text_len);
    
    if(blankstr(strrtok(buf, ctrlcodes))) {
        freem(buf);
        return 0;
    }
    
    *bufp = buf;
    return strlen(buf);
}
Exemple #2
0
unsigned int istrcmp(char *string1, char *string2) {
    unsigned int i, len1, len2;
    
    if((blankstr(string1)) || (blankstr(string2)))
        return 0;
    
    len1 = strlen(string1);
    len2 = strlen(string2);
    if((len1 < 1) || (len2 < 1))
        return 0;
    
    if(len1 != len2)
        return 0;
        
    for(i = 0;;i++) {
        if(!string1[i]) {
            if(!string2[i])
                break;
            else
                return 0;
        }
        if(!string2[i])
            return 0;
        
        if(tolower(string1[i]) != tolower(string2[i]))
            return 0;
    }
    
    return 1;
}
Exemple #3
0
char* conf_replace_alias(char *str) {
    unsigned int i, x, len;
    char next, replace;
    
    if(blankstr(str))
        return str;
    
    len = strlen(str);
    for(i = 0;i < len;i++) {
        if(str[i] == '$') {
            switch(str[i+1]) {
                case 'c':
                    replace = ':';
                    break;
                
                case 's':
                    replace = ';';
                    break;
                
                default:
                    continue;
            }
            str[i] = replace;
            for(x = i+1;x < len;x++) {
                next = str[x+1];
                str[x] = next;
            }
            str[len] = 0;
            len--;
        }
    }
    
    return str;
}
Exemple #4
0
char* xstrtok(char *str, const char *tok, int *pos) {
    int i, x;
    unsigned int match = 0, move = 0;
    char start;
    
    if(blankstr(tok))
        return str;
    
    if(pos != NULL) {
        i = *pos;
        start = 0;
    }
    else {
        i = 0;
        start = 1;
    }
    
    for(x = 0;str[i];i++, x++) {
        if(str[i] == tok[match]) {
            if(!tok[++match]) {
                while(match--) {
                    move++;
                    str[i - match] = 0;
                }
                i++;
                x++;
                
                if(pos != NULL)
                    *pos = i;
                
                if(start) {
                    if(*str)
                        return str;
                    else
                        return str+move;
                }
                else {
                    if(str[i-x])
                        return str + (i-x);
                    else
                        return str + (move+i-x);
                }
            }
        }
    }
    
    if(!start)
        *pos = i;
    
    if(start) {
        return str;
    }
    else {
        if(x) {
            return str + (i - x);
        }
        else
            return NULL;
    }
}
Exemple #5
0
void SheetView::redrawCell(CellAddress addr,bool dorefresh){
	if(addr.row<scroll.row||addr.column<scroll.column||
	   addr.row>=scroll.row+LINES-1||addr.column>=scroll.column+COLS/8-1){
		return;
	}
	sheet.ensureSheetSize(addr.column+1,addr.row+1);
	int leftx;
	string dispvalue,value;
	dispvalue=sheet.getCellDisplayString(addr).fromJust();
	if(addr==cursor){
		value=sheet.getCellEditString(addr).fromJust();
		if(dispvalue.size()>8&&dispvalue!=value){
			displayStatusString(dispvalue); //inform of full display value
		}
		attron(A_REVERSE);
		leftx=min(columnToX(addr.column),COLS/8*8-(int)value.size());
	} else {
		value=sheet.getCellDisplayString(addr).fromJust();
		if(value.size()>8)value.erase(value.begin()+8,value.end());
		leftx=columnToX(addr.column);
	}
	string blankstr(max(8,(int)value.size()),' ');
	mvaddstr(rowToY(addr.row),leftx,blankstr.data());
	mvaddstr(rowToY(addr.row),leftx,value.data());
	if(addr==cursor){
		attroff(A_REVERSE);
		cursordispval=value;
	}
	if(dorefresh){
		refresh();
		move(rowToY(cursor.row),columnToX(cursor.column));
	}
}
Exemple #6
0
unsigned int user_fillmask(struct userNode *user, char *hostmask) {
    unsigned int i, x, len, len2, len3;
    
    if((user == NULL) || (blankstr(hostmask)))
        return 0;
    
    len = strlen(hostmask);
    len2 = strlen(user->nick);
    if(len2 >= len)
        return 0;
    
    for(i = len2+1, x = 0;x < (len2+MAX_USERLEN);i++, x++) {
        if(hostmask[i] == '@')
            break;
        user->user[x] = hostmask[i];
    }
    user->user[x] = 0;
    
    len3 = len2+strlen(user->user)+2;
    for(x = 0, i++;x < (len3+MAX_MASKLEN);i++, x++) {
        if(!hostmask[i])
            break;
        user->host[x] = hostmask[i];
    }
    user->host[x] = 0;
    
    xstrcpy(user->hostmask, hostmask, MAX_HOSTMASKLEN);
    
    return 1;
}
Exemple #7
0
struct userNode* user_get_handle(char *nick) {
    struct userNode *user;
    
    if(blankstr(nick))
        return NULL;
    
    for(user = user_first;user != NULL;user = user->next) {
        if(istrcmp(user->nick, nick))
            return user;
    }
    
    return NULL;
}
Exemple #8
0
char* irc_get_msg(char *buf, char *raw) {
    char *str;
    
    if(buf == NULL)
        return buf;
    
    str = strstr(raw+1, " :");
    if(blankstr(str))
        *buf = 0;
    else
        strcpy(buf, str+2);
    
    return buf;
}
Exemple #9
0
char* irc_get_servname(char *buf, char *raw) {
    char *servname;
    
    if(buf == NULL)
        return buf;
    
    if(blankstr(raw))
        return NULL;
    
    servname = (char*)callocm(256, sizeof(char));
    xstrcpy(servname, raw+1, 256);
    strcpy(buf, xstrtok(servname, " ", NULL));
    
    freem(servname);
    return buf;
}
Exemple #10
0
char* replace_alias(char *str) {
    unsigned int i, x, len;
    char next, replace;
    
    if(blankstr(str))
        return str;
    
    len = strlen(str);
    for(i = 0;i < len;i++) {
        if(str[i] == '$') {
            switch(str[i+1]) {
                case '$':
                    replace = '$';
                    break;
                    
                case 'b':
                    replace = C_BOLD;
                    break;
                
                case 'u':
                    replace = C_ULINE;
                    break;
                
                case 'c':
                    replace = C_COLOR;
                    break;
                
                case 'r':
                    replace = C_REVERSE;
                    break;
                
                default:
                    continue;
            }
            str[i] = replace;
            for(x = i+1;x < len;x++) {
                next = str[x+1];
                str[x] = next;
            }
            str[len] = 0;
            len--;
        }
    }
    
    return str;
}
Exemple #11
0
char* irc_get_netname(char *buf, char *raw) {
    char *netname, *str;
    
    if(buf == NULL)
        return buf;
    
    if(strstr(raw, "NETWORK=") == NULL) return NULL;
    
    netname = (char*)callocm(33, sizeof(char));
    str = strstr(raw, "NETWORK=");
    if(blankstr(str)) {
        *buf = 0;
        return buf;
    }
    xstrcpy(netname, str+8, 32);
    strcpy(buf, xstrtok(netname, " ", NULL));
    
    freem(netname);
    return buf;
}
Exemple #12
0
struct userNode* user_adduser(char *nick) {
    struct userNode *user;
    
    if(blankstr(nick))
        return NULL;
    
    if(user_get_handle(nick))
        return NULL;
    
    user = (struct userNode*)mallocm(sizeof(struct userNode));
    if(user == NULL)
        return NULL;
    
    init_user_struct(user);
    xstrcpy(user->nick, nick, MAX_MSGLEN);
    
    if(istrcmp(user->nick, bot.current_nick))
        me = user;
    
    LL_ADDNODE(user, user_first, user_last)
    
    user_count++;
    return user;
}
Exemple #13
0
unsigned int make_argument_array(char ***bufp, const char *str) {
    unsigned int x = 0, y = 0, z = 0, count = 0, length;
    char *temp, *backptr;
    char **argv;
    
    if(blankstr(str))
        return 0;
    
    length = strlen(str);
    
    while(str[x++] == ' ') z++;
    if(z >= length)
        return 0;
    
    for(;x < length;x++) {
        if((str[x] == ' ') && (str[x+1] != ' ') && (str[x+1] != 0))
            count++;
    }
    count++;
    
    argv = (char**)mallocm(count*sizeof(char*));
    if(argv == NULL) {
        make_warning("Couldn't allocate space needed for make_argument_array()");
        return 0;
    }
    
    temp = (char*)callocm(length+1, sizeof(char));
    if(temp == NULL) {
        freem(argv);
        return 0;
    }
    backptr = temp;
        
    xstrcpy(temp, str, length+1);
    
    temp += z;
    for(x = z, count = 0;str[x];count++) {
        if(x > z)
            x++;
        temp += y;
        for(y = 0;str[x];x++, y++) {
            if(str[x] == ' ') {
                if((str[x+1] == ' ') || (str[x+1] == 0))
                    temp[y] = 0;
                else
                    break;
            }
        }
        temp[y] = 0;
        argv[count] = (char*)callocm(strlen(temp)+1, sizeof(char));
        if(argv[count] == NULL) {
            make_warning("Couldn't allocate space needed for make_argument_array()");
            freem(argv);
            freem(temp);
            return 0;
        }
        xstrcpy(argv[count], temp, y+1);
        y++;
    }
    
    *bufp = argv;
    
    freem(backptr);
    return count;
}