rem: if (!esc) { if (str[i]=='\\') { esc = True; } else if (str[i]=='.') { dot = i; break; } } else { esc = False; }
add: if (str[i]=='\\') { i++; continue; } else if (str[i]=='.') { dot = i; break; }
context: UnescapeWM_CLASS(char *str, char **name, char **class){    int i, j, k, dot;    Bool esc;    j = strlen(str);    *name = wmalloc(j);    **name = 0;    *class = wmalloc(j);    **class = 0;    /* separate string in 2 parts */    esc = False;    dot = 0;    for (i = 0; i < j; i++) {	if (!esc) {	    if (str[i]=='\\') {		esc = True;	    } else if (str[i]=='.') {		dot = i;		break;	    }	} else {	    esc = False;	}    }    /* unescape strings */    esc = False;    k = 0;    for (i = 0; i < dot; i++) {	if (!esc) {	    if (str[i]=='\\') {		esc = True;	    } else {		(*name)[k++] = str[i];	    }	} else {	    (*name)[k++] = str[i];	    esc = False;	}    }    (*name)[k] = 0;    esc = False;    k = 0;    for (i = dot+1; i<j; i++) {	if (!esc) {	    if (str[i]=='\\') {		esc = True;	    } else {		(*class)[k++] = str[i];	    }	} else {	    esc = False;	}    }    (*class)[k] = 0;        if (!*name) {	wfree(*name);	*name = NULL;    }    if (!*class) {	wfree(*class);	*class = NULL;    }}