diff --git a/racket/src/rktio/Makefile.in b/racket/src/rktio/Makefile.in index 9bc9802a41..096115d8f7 100644 --- a/racket/src/rktio/Makefile.in +++ b/racket/src/rktio/Makefile.in @@ -38,12 +38,9 @@ librktio.@LTA@: $(OBJS) demo: rktio_demo ./rktio_demo $(ARGS) -rktio_demo: librktio.@LTA@ demo.@LTO@ demo_fifo +rktio_demo: librktio.@LTA@ demo.@LTO@ $(RKTLINKER) -o rktio_demo $(CFLAGS) $(LDFLAGS) demo.@LTO@ librktio.@LTA@ $(LIBS) -demo_fifo: - mkfifo demo_fifo - rktio_fs.@LTO@: $(srcdir)/rktio_fs.c $(RKTIO_HEADERS) $(CC) $(CFLAGS) -I$(srcdir) -I. -o rktio_fs.@LTO@ -c $(srcdir)/rktio_fs.c diff --git a/racket/src/rktio/demo.c b/racket/src/rktio/demo.c index 69a556f512..54d7b43781 100644 --- a/racket/src/rktio/demo.c +++ b/racket/src/rktio/demo.c @@ -620,26 +620,39 @@ int main(int argc, char **argv) /* Pipes, non-blocking operations, and more long-term poll sets */ - fd = rktio_open(rktio, "demo_fifo", RKTIO_OPEN_READ); - check_valid(fd); - check_valid(!rktio_poll_read_ready(rktio, fd)); - fd2 = rktio_open(rktio, "demo_fifo", RKTIO_OPEN_WRITE | RKTIO_OPEN_CAN_EXIST); - check_valid(fd2); - check_valid(!rktio_poll_read_ready(rktio, fd)); + if (verbose) + printf("pipe\n"); - check_read_write_pair(rktio, fd, fd2, 1); - - /* Open pipe ends again: */ - fd2 = rktio_open(rktio, "demo_fifo", RKTIO_OPEN_WRITE | RKTIO_OPEN_CAN_EXIST); - check_valid(fd2); - check_fill_write(rktio, fd2, NULL, 0); - - fd = rktio_open(rktio, "demo_fifo", RKTIO_OPEN_READ); - check_valid(fd); - check_drain_read(rktio, fd2, 0); + { + rktio_fd_t **pipe_fds; - check_valid(rktio_close(rktio, fd)); - check_valid(rktio_close(rktio, fd2)); + pipe_fds = rktio_make_pipe(rktio, 0); + check_valid(pipe_fds); + + fd = pipe_fds[0]; + check_valid(fd); + check_valid(!rktio_poll_read_ready(rktio, fd)); + fd2 = pipe_fds[1]; + check_valid(fd2); + check_valid(!rktio_poll_read_ready(rktio, fd)); + + free(pipe_fds); + + check_read_write_pair(rktio, fd, fd2, 1); + + /* Open pipe ends again: */ + pipe_fds = rktio_make_pipe(rktio, 0); + check_valid(pipe_fds); + fd = pipe_fds[0]; + fd2 = pipe_fds[1]; + free(pipe_fds); + + check_fill_write(rktio, fd2, NULL, 0); + check_drain_read(rktio, fd, 0); + + check_valid(rktio_close(rktio, fd)); + check_valid(rktio_close(rktio, fd2)); + } /* Networking */