rem: } else if (pid == 0) {
add: } else if (pid == 0) { char *dither;
context: setWorkspaceSpecificBack(WScreen *scr, WDefaultEntry *entry, proplist_t value, 			 void *bar){    int i;    proplist_t val;    char *str;    if (scr->flags.backimage_helper_launched) {	if (PLGetNumberOfElements(value)==0) {	    SendHelperMessage(scr, 'C', 0, NULL);	    SendHelperMessage(scr, 'K', 0, NULL);	    PLRelease(value);	    return 0;	}    } else {	pid_t pid;	int filedes[2];	if (PLGetNumberOfElements(value) == 0)	    return 0;		if (pipe(filedes) < 0) {	    wsyserror("pipe() failed:can't set workspace specific background image");	    	    PLRelease(value);	    return 0;	}	pid = fork();	if (pid < 0) {	    wsyserror("fork() failed:can't set workspace specific background image");	    if (close(filedes[0]) < 0)		wsyserror("could not close pipe");	    if (close(filedes[1]) < 0)		wsyserror("could not close pipe");	} else if (pid == 0) {	    SetupEnvironment(scr);	    if (close(0) < 0)		wsyserror("could not close pipe");	    if (dup(filedes[0]) < 0) {		wsyserror("dup() failed:can't set workspace specific background image");	    }	    if (wPreferences.smooth_workspace_back)		execlp("wmsetbg", "wmsetbg", "-helper", "-S", "-d", NULL);	    else		execlp("wmsetbg", "wmsetbg", "-helper", "-d", NULL);	    wsyserror("could not execute wmsetbg");	    exit(1);	} else {	    if (fcntl(filedes[0], F_SETFD, FD_CLOEXEC) < 0) {		wsyserror("error setting close-on-exec flag");	    }	    if (fcntl(filedes[1], F_SETFD, FD_CLOEXEC) < 0) {		wsyserror("error setting close-on-exec flag");	    }	    scr->helper_fd = filedes[1];	    scr->helper_pid = pid;	    scr->flags.backimage_helper_launched = 1;	    wAddDeathHandler(pid, (WDeathHandler*)trackDeadProcess, scr);	    SendHelperMessage(scr, 'P', -1, wPreferences.pixmap_path);	}	    }    for (i = 0; i < PLGetNumberOfElements(value); i++) {	val = PLGetArrayElement(value, i);	if (val && PLIsArray(val) && PLGetNumberOfElements(val)>0) {	    str = PLGetDescription(val);	    SendHelperMessage(scr, 'S', i+1, str);	    wfree(str);	} else {	    SendHelperMessage(scr, 'U', i+1, NULL);	}    }    sleep(1);    PLRelease(value);    return 0;}