return(-errno); 
return err; 
int xterm_open(int input, int output, int primary, void *d,		      char **dev_out){	struct xterm_chan *data = d;	unsigned long stack;	int pid, fd, new, err;	char title[256], file[] = "/tmp/xterm-pipeXXXXXX";	char *argv[] = { terminal_emulator, title_switch, title, exec_switch, 			 "/usr/lib/uml/port-helper", "-uml-socket",			 file, NULL };	if(os_access(argv[4], OS_ACC_X_OK) < 0)		argv[4] = "port-helper";	/* Check that DISPLAY is set, this doesn't guarantee the xterm	 * will work but w/o it we can be pretty sure it won't. */	if (!getenv("DISPLAY")) {		printk("xterm_open: $DISPLAY not set.\n");		return -ENODEV;	}	fd = mkstemp(file);	if(fd < 0){		printk("xterm_open : mkstemp failed, errno = %d\n", errno);		return(-errno);	}	if(unlink(file)){		printk("xterm_open : unlink failed, errno = %d\n", errno);		return(-errno);	}	os_close_file(fd);	fd = os_create_unix_socket(file, sizeof(file), 1);	if(fd < 0){		printk("xterm_open : create_unix_socket failed, errno = %d\n", 		       -fd);		return(fd);	}	sprintf(title, data->title, data->device);	stack = data->stack;	pid = run_helper(NULL, NULL, argv, &stack);	if(pid < 0){		printk("xterm_open : run_helper failed, errno = %d\n", -pid);		return(pid);	}	if(data->stack == 0) free_stack(stack, 0);	if (data->direct_rcv) {		new = os_rcv_fd(fd, &data->helper_pid);	} else {		err = os_set_fd_block(fd, 0);		if(err < 0){			printk("xterm_open : failed to set descriptor "			       "non-blocking, err = %d\n", -err);			return(err);		}		new = xterm_fd(fd, &data->helper_pid);	}	if(new < 0){		printk("xterm_open : os_rcv_fd failed, err = %d\n", -new);		goto out;	}	CATCH_EINTR(err = tcgetattr(new, &data->tt));	if(err){		new = err;		goto out;	}	if(data->raw){		err = raw(new);		if(err){			new = err;			goto out;		}	}	data->pid = pid;	*dev_out = NULL; out:	unlink(file);	return(new);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b4fd310e163477236a241580b3b8c29aee65f4cc/xterm.c/buggy/arch/um/drivers/xterm.c