param = strtok(NULL, " ");
param = xstrtok(mode, " ", &pos);
struct modeparam* mode_getparam(struct modeparam *mp, char *modestr, unsigned int tok) {    char *mode, *param;    unsigned int i = 0, t = 0, s = 0, len;        if((mp == NULL) || (blankstr(modestr)))        return NULL;        if(!tok)        tok++;        mp->set = 0;    mp->mode = 0;    clearstr(mp->param, MAX_LEN);        len = strlen(modestr);    mode = (char*)callocm(len+1, sizeof(char));    if(mode == NULL)        return NULL;            strcpy(mode, modestr);        strtok(mode, " ");    for(i = 0;i < len;i++) {        if(modestr[i] == ' ') {            break;        }        if(modestr[i] == '+') {            s = 1;        }        else if(modestr[i] == '-') {            s = 0;        }        else if(mode_ischparamode(modestr[i])) {            param = strtok(NULL, " ");            if(++t == tok) {                mp->set = s;                mp->mode = modestr[i];                if(param != NULL)                    xstrcpy(mp->param, param, MAX_LEN);                freem(mode);                return mp;            }        }    }        freem(mode);    return NULL;}