Line data Source code
1 : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : #pragma once 3 : 4 : #include <stdbool.h> 5 : 6 : #include "sd-event.h" 7 : 8 : #include "macro.h" 9 : 10 : typedef struct PTYForward PTYForward; 11 : 12 : typedef enum PTYForwardFlags { 13 : PTY_FORWARD_READ_ONLY = 1, 14 : 15 : /* Continue reading after hangup? */ 16 : PTY_FORWARD_IGNORE_VHANGUP = 2, 17 : 18 : /* Continue reading after hangup but only if we never read anything else? */ 19 : PTY_FORWARD_IGNORE_INITIAL_VHANGUP = 4, 20 : } PTYForwardFlags; 21 : 22 : typedef int (*PTYForwardHandler)(PTYForward *f, int rcode, void *userdata); 23 : 24 : int pty_forward_new(sd_event *event, int master, PTYForwardFlags flags, PTYForward **f); 25 : PTYForward *pty_forward_free(PTYForward *f); 26 : 27 : int pty_forward_get_last_char(PTYForward *f, char *ch); 28 : 29 : int pty_forward_set_ignore_vhangup(PTYForward *f, bool ignore_vhangup); 30 : bool pty_forward_get_ignore_vhangup(PTYForward *f); 31 : 32 : bool pty_forward_is_done(PTYForward *f); 33 : 34 : void pty_forward_set_handler(PTYForward *f, PTYForwardHandler handler, void *userdata); 35 : 36 : bool pty_forward_drain(PTYForward *f); 37 : 38 : int pty_forward_set_priority(PTYForward *f, int64_t priority); 39 : 40 : int pty_forward_set_width_height(PTYForward *f, unsigned width, unsigned height); 41 : 42 0 : DEFINE_TRIVIAL_CLEANUP_FUNC(PTYForward*, pty_forward_free);