Beispiel #1
0
int main()
{
	draw_init();
	draw_set_canvas(canv, (void *)buff);
	if(w_connect(&priv_fd, &ifd, &ofd))
		return -1;

	poll_fd = open("/dev/poll/0", 0);
	pipe_in = open("/dev/pipe/0", 0);
	pipe_out = open("/dev/pipe/0", 0);
	poll_set_event(poll_fd, pipe_out, POLL_TYPE_READ);
	if(fork() == 0)
	{
		dup2(pipe_in, 0);
		dup2(pipe_out, 1);
		dup2(pipe_out, 2);
		_exit(execl("/bin/sh", "*sh*", NULL));
	}

	w_send_wcreate(ofd, 0, 0, 0, C*FW, (R+1)*FH, "WTerm");
	w_wait_reply(ifd, &hwnd, &shm_key);
	shm_at(shm_key, buff, SHM_RW);
	printf("hwnd: %x\n",hwnd);
	poll_set_event(poll_fd, ifd, POLL_TYPE_READ);

	draw_title();
	term_init();
	main_loop();

	w_disconnect(priv_fd, ifd, ofd);
	shm_dt(shm_key, buff);
	printf("exit with exit code 0\n");
	return 0;
}
Beispiel #2
0
int shmdt(const void *addr) {
  int ret = shm_dt(addr);
  errno = ret<0?-ret:0;
  return ret<0?-1:0;
}