impl::stream_redirect_fd::stream_redirect_fd(const int fd) { atf_error_t err = atf_process_stream_init_redirect_fd(&m_sb, fd); if (atf_is_error(err)) throw_atf_error(err); m_inited = true; }
ATF_TC_BODY (stream_init_redirect_fd, tc) { atf_process_stream_t sb; RE (atf_process_stream_init_redirect_fd (&sb, 1)); ATF_CHECK_EQ (atf_process_stream_type (&sb), atf_process_stream_type_redirect_fd); atf_process_stream_fini (&sb); }
static void redirect_fd_stream_init (void *v) { struct redirect_fd_stream *s = v; switch (s->m_base.m_type) { case stdout_type: s->m_fd = open ("stdout", O_WRONLY | O_CREAT | O_TRUNC, 0644); break; case stderr_type: s->m_fd = open ("stderr", O_WRONLY | O_CREAT | O_TRUNC, 0644); break; default: UNREACHABLE; } ATF_REQUIRE (s->m_fd != -1); s->m_base.m_sb_ptr = &s->m_base.m_sb; RE (atf_process_stream_init_redirect_fd (&s->m_base.m_sb, s->m_fd)); }