static void connect_stream_init (void *v) { struct connect_stream *s = v; int src_fd; switch (s->m_base.m_type) { case stdout_type: src_fd = STDOUT_FILENO; s->m_fd = open ("stdout", O_WRONLY | O_CREAT | O_TRUNC, 0644); break; case stderr_type: src_fd = STDERR_FILENO; s->m_fd = open ("stderr", O_WRONLY | O_CREAT | O_TRUNC, 0644); break; default: UNREACHABLE; src_fd = -1; } ATF_REQUIRE (s->m_fd != -1); s->m_base.m_sb_ptr = &s->m_base.m_sb; RE (atf_process_stream_init_connect (&s->m_base.m_sb, src_fd, s->m_fd)); }
impl::stream_connect::stream_connect(const int src_fd, const int tgt_fd) { atf_error_t err = atf_process_stream_init_connect(&m_sb, src_fd, tgt_fd); if (atf_is_error(err)) throw_atf_error(err); m_inited = true; }
ATF_TC_BODY (stream_init_connect, tc) { atf_process_stream_t sb; RE (atf_process_stream_init_connect (&sb, 1, 2)); ATF_CHECK_EQ (atf_process_stream_type (&sb), atf_process_stream_type_connect); atf_process_stream_fini (&sb); }