4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering#pragma once
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering/***
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering This file is part of systemd.
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering Copyright 2010-2013 Lennart Poettering
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering systemd is free software; you can redistribute it and/or modify it
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering under the terms of the GNU Lesser General Public License as published by
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering the Free Software Foundation; either version 2.1 of the License, or
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering (at your option) any later version.
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering systemd is distributed in the hope that it will be useful, but
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering Lesser General Public License for more details.
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering You should have received a copy of the GNU Lesser General Public License
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering***/
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
c1ff5570f4a04bb9aedea444c12dce81679224ecThomas Hindoe Paaboel Andersen#include <stdbool.h>
4ba93280223ceb5de1bcedb196c38252f334521aLennart Poettering
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart Poettering#include "sd-event.h"
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart Poettering
a8fbdf5424be099ba1b2b1ec261c02b8759d6b0cThomas Hindoe Paaboel Andersen#include "macro.h"
a8fbdf5424be099ba1b2b1ec261c02b8759d6b0cThomas Hindoe Paaboel Andersen
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart Poetteringtypedef struct PTYForward PTYForward;
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart Poettering
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poetteringtypedef enum PTYForwardFlags {
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering PTY_FORWARD_READ_ONLY = 1,
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering /* Continue reading after hangup? */
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering PTY_FORWARD_IGNORE_VHANGUP = 2,
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering /* Continue reading after hangup but only if we never read anything else? */
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering PTY_FORWARD_IGNORE_INITIAL_VHANGUP = 4,
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering} PTYForwardFlags;
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poettering
ae3dde801253b1d5f7363bb9fb06bcb230f00eb8Lennart Poetteringint pty_forward_new(sd_event *event, int master, PTYForwardFlags flags, PTYForward **f);
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart PoetteringPTYForward *pty_forward_free(PTYForward *f);
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart Poettering
0ec5543c4c0318552a4dcdd83210793347b93081Lennart Poetteringint pty_forward_get_last_char(PTYForward *f, char *ch);
0ec5543c4c0318552a4dcdd83210793347b93081Lennart Poettering
da054c3782f25b3b18243f6c76dcfcf90ba70274Lennart Poetteringint pty_forward_set_ignore_vhangup(PTYForward *f, bool ignore_vhangup);
da054c3782f25b3b18243f6c76dcfcf90ba70274Lennart Poetteringint pty_forward_get_ignore_vhangup(PTYForward *f);
9b15b7846d4de01bb5d9700a24077787e984e8abLennart Poettering
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(PTYForward*, pty_forward_free);