… | |
… | |
2 | #define PTYTTY_H |
2 | #define PTYTTY_H |
3 | |
3 | |
4 | #include "feature.h" |
4 | #include "feature.h" |
5 | |
5 | |
6 | #if defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT) |
6 | #if defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT) |
7 | # if defined(PTYS_ARE_GETPT) || defined(PTYS_ARE_PTMX) |
7 | # if defined(PTYS_ARE_GETPT) || defined(PTYS_ARE_POSIX) || defined(PTYS_ARE_PTMX) |
8 | # define NO_SETOWNER_TTYDEV 1 |
8 | # define NO_SETOWNER_TTYDEV 1 |
9 | # endif |
9 | # endif |
10 | #endif |
10 | #endif |
11 | #if defined(__CYGWIN32__) |
11 | #if defined(__CYGWIN32__) |
12 | # define NO_SETOWNER_TTYDEV 1 |
12 | # define NO_SETOWNER_TTYDEV 1 |
… | |
… | |
56 | #endif |
56 | #endif |
57 | |
57 | |
58 | enum rxvt_privaction { IGNORE = 'i', SAVE = 's', RESTORE = 'r' }; |
58 | enum rxvt_privaction { IGNORE = 'i', SAVE = 's', RESTORE = 'r' }; |
59 | |
59 | |
60 | struct rxvt_ptytty { |
60 | struct rxvt_ptytty { |
|
|
61 | int pty; // pty file descriptor; connected to rxvt |
|
|
62 | int tty; // tty file descriptor; connected to child |
|
|
63 | |
|
|
64 | virtual ~rxvt_ptytty () |
|
|
65 | { |
|
|
66 | // |
|
|
67 | } |
|
|
68 | |
|
|
69 | virtual bool get () = 0; |
|
|
70 | virtual void put () = 0; |
|
|
71 | |
|
|
72 | virtual void login (int cmd_pid, bool login_shell, const char *hostname) = 0; |
|
|
73 | virtual void logout () = 0; |
|
|
74 | |
|
|
75 | void close_tty (); |
|
|
76 | |
|
|
77 | bool make_controlling_tty (); |
|
|
78 | void set_utf8_mode (bool on); |
|
|
79 | }; |
|
|
80 | |
|
|
81 | struct rxvt_ptytty_unix : rxvt_ptytty { |
|
|
82 | char *name; |
|
|
83 | |
61 | #ifndef RESET_TTY_TO_COMMON_DEFAULTS |
84 | #ifndef RESET_TTY_TO_COMMON_DEFAULTS |
62 | struct stat savestat; /* original status of our tty */ |
85 | struct stat savestat; /* original status of our tty */ |
63 | #endif |
86 | #endif |
64 | #ifndef NO_SETOWNER_TTYDEV |
87 | #ifndef NO_SETOWNER_TTYDEV |
65 | void privileges (rxvt_privaction action); |
88 | void privileges (rxvt_privaction action); |
66 | bool saved; |
89 | bool saved; |
67 | #endif |
90 | #endif |
68 | public: |
91 | public: |
69 | int pty; // pty file descriptor; connected to rxvt |
|
|
70 | int tty; // tty file descriptor; connected to child |
|
|
71 | char *name; |
|
|
72 | |
92 | |
73 | rxvt_ptytty (); |
93 | rxvt_ptytty_unix (); |
74 | ~rxvt_ptytty (); |
94 | ~rxvt_ptytty_unix (); |
75 | |
|
|
76 | bool get (); |
|
|
77 | void put (); |
|
|
78 | |
|
|
79 | void close_tty (); |
|
|
80 | |
|
|
81 | bool make_controlling_tty (); |
|
|
82 | void set_utf8_mode (bool on); |
|
|
83 | |
95 | |
84 | #if UTMP_SUPPORT |
96 | #if UTMP_SUPPORT |
85 | int utmp_pos; |
97 | int utmp_pos; |
86 | int cmd_pid; |
98 | int cmd_pid; |
87 | bool login_shell; |
99 | bool login_shell; |
… | |
… | |
94 | #endif |
106 | #endif |
95 | #if (defined(HAVE_STRUCT_UTMP) && defined(HAVE_UTMP_PID)) || defined(HAVE_STRUCT_UTMPX) |
107 | #if (defined(HAVE_STRUCT_UTMP) && defined(HAVE_UTMP_PID)) || defined(HAVE_STRUCT_UTMPX) |
96 | char ut_id[5]; |
108 | char ut_id[5]; |
97 | #endif |
109 | #endif |
98 | |
110 | |
|
|
111 | bool get (); |
|
|
112 | void put (); |
|
|
113 | |
99 | void login (int cmd_pid, bool login_shell, const char *hostname); |
114 | void login (int cmd_pid, bool login_shell, const char *hostname); |
100 | void logout (); |
115 | void logout (); |
101 | #endif |
116 | #endif |
102 | }; |
117 | }; |
103 | |
118 | |