rem: if (buffer[0]!='P') {
add: if (buffer[0]!='P' && buffer[0]!='K') {
context: helperLoop(RContext *rc){    BackgroundTexture *textures[WORKSPACE_COUNT];    int maxTextures = 0;    unsigned char buffer[2048], buf[8];    int size;    int errcount = 4;    memset(textures, 0, WORKSPACE_COUNT*sizeof(BackgroundTexture*));    while (1) {	int workspace;	/* get length of message */	if (readmsg(0, buffer, 4) < 0) {	    wsyserror("error reading message from Window Maker");	    errcount--;	    if (errcount == 0) {		wfatal("quitting");		exit(1);	    }	    continue;	}	memcpy(buf, buffer, 4);	buf[4] = 0;	size = atoi(buf);	/* get message */	if (readmsg(0, buffer, size) < 0) {	    wsyserror("error reading message from Window Maker");	    errcount--;	    if (errcount == 0) {		wfatal("quitting");		exit(1);	    }	    continue;	}#ifdef DEBUG	printf("RECEIVED %s\n",buffer);#endif	if (buffer[0]!='P') {	    memcpy(buf, &buffer[1], 4);	    buf[4] = 0;	    workspace = atoi(buf);	    if (workspace < 0 || workspace >= WORKSPACE_COUNT) {		wwarning("received message with invalid workspace number %i\n",			 workspace);		continue;	    }	}	switch (buffer[0]) {	 case 'S':#ifdef DEBUG	    printf("set texture %s\n", &buffer[5]);#endif	    setupTexture(rc, textures, &maxTextures, workspace, &buffer[5]);	    break;	 case 'C':#ifdef DEBUG	    printf("change texture %i\n", workspace);#endif	    if (!textures[workspace])		changeTexture(textures[0]);	    else		changeTexture(textures[workspace]);	    break;	 case 'P':#ifdef DEBUG	    printf("change pixmappath %s\n", &buffer[1]);#endif	    if (PixmapPath)		free(PixmapPath);	    PixmapPath = wstrdup(&buffer[1]);	    break;	 case 'U':#ifdef DEBUG	    printf("unset workspace %i\n", workspace);#endif	    setupTexture(rc, textures, &maxTextures, workspace, NULL);	    break;	 case 'K':#ifdef DEBUG	    printf("exit command\n");#endif	    exit(0);	 default:	    wwarning("unknown message received");	    break;	}    }}