|
|
1 | // This file is part of libptytty. Do not make local modifications. |
|
|
2 | // http://software.schmorp.de/pkg/libptytty |
|
|
3 | |
1 | #ifndef PTYTTY_H |
4 | #ifndef PTYTTY_H |
2 | #define PTYTTY_H |
5 | #define PTYTTY_H |
3 | |
6 | |
4 | #include "feature.h" |
7 | #include "libptytty.h" |
|
|
8 | #include "ptytty_conf.h" |
5 | |
9 | |
6 | #if defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT) |
10 | #if defined(HAVE__GETPTY) || defined(HAVE_OPENPTY) || defined(UNIX98_PTY) |
7 | # if defined(PTYS_ARE_GETPT) || defined(PTYS_ARE_PTMX) |
|
|
8 | # define NO_SETOWNER_TTYDEV 1 |
|
|
9 | # endif |
|
|
10 | #endif |
|
|
11 | #if defined(__CYGWIN32__) |
|
|
12 | # define NO_SETOWNER_TTYDEV 1 |
11 | # define NO_SETOWNER_TTYDEV 1 |
13 | #endif |
12 | #endif |
14 | |
13 | |
15 | #if UTMP_SUPPORT |
14 | #if UTMP_SUPPORT |
16 | # if !defined(RXVT_UTMPX_FILE) || !defined(HAVE_STRUCT_UTMPX) |
15 | # if !defined(UTMPX_FILE) || !defined(HAVE_STRUCT_UTMPX) || defined(__GLIBC__) |
17 | # undef HAVE_UTMPX_H |
16 | # undef HAVE_UTMPX_H |
18 | # undef HAVE_STRUCT_UTMPX |
17 | # undef HAVE_STRUCT_UTMPX |
19 | # endif |
18 | # endif |
20 | # if !defined(RXVT_UTMP_FILE) || !defined(HAVE_STRUCT_UTMP) |
19 | # if !defined(UTMP_FILE) || !defined(HAVE_STRUCT_UTMP) |
21 | # undef HAVE_UTMP_H |
20 | # undef HAVE_UTMP_H |
22 | # undef HAVE_STRUCT_UTMP |
21 | # undef HAVE_STRUCT_UTMP |
23 | # endif |
22 | # endif |
24 | |
23 | |
25 | # ifdef HAVE_UTMPX_H |
24 | # ifdef HAVE_UTMPX_H |
… | |
… | |
37 | # include <lastlog.h> |
36 | # include <lastlog.h> |
38 | # endif |
37 | # endif |
39 | |
38 | |
40 | # include <pwd.h> |
39 | # include <pwd.h> |
41 | |
40 | |
42 | # ifdef RXVT_UTMP_SYSV |
41 | # ifdef UTMP_SYSV |
43 | # ifndef USER_PROCESS |
42 | # ifndef USER_PROCESS |
44 | # define USER_PROCESS 7 |
43 | # define USER_PROCESS 7 |
45 | # endif |
44 | # endif |
46 | # ifndef DEAD_PROCESS |
45 | # ifndef DEAD_PROCESS |
47 | # define DEAD_PROCESS 8 |
46 | # define DEAD_PROCESS 8 |
48 | # endif |
47 | # endif |
49 | # endif |
48 | # endif |
50 | |
49 | |
51 | # ifdef __QNX__ |
|
|
52 | # include <sys/utsname.h> |
|
|
53 | # define ut_name ut_user |
|
|
54 | # endif |
|
|
55 | |
|
|
56 | #endif |
50 | #endif |
57 | |
51 | |
58 | enum rxvt_privaction { IGNORE = 'i', SAVE = 's', RESTORE = 'r' }; |
52 | struct ptytty_unix : ptytty |
59 | |
53 | { |
60 | struct rxvt_ptytty { |
|
|
61 | #ifndef RESET_TTY_TO_COMMON_DEFAULTS |
|
|
62 | struct stat savestat; /* original status of our tty */ |
|
|
63 | #endif |
|
|
64 | #ifndef NO_SETOWNER_TTYDEV |
|
|
65 | void privileges (rxvt_privaction action); |
|
|
66 | bool saved; |
|
|
67 | #endif |
|
|
68 | public: |
|
|
69 | int pty; // pty file descriptor; connected to rxvt |
|
|
70 | int tty; // tty file descriptor; connected to child |
|
|
71 | char *name; |
54 | char *name; |
72 | |
55 | |
73 | rxvt_ptytty (); |
56 | public: |
74 | ~rxvt_ptytty (); |
57 | |
|
|
58 | ptytty_unix (); |
|
|
59 | ~ptytty_unix (); |
75 | |
60 | |
76 | bool get (); |
61 | bool get (); |
77 | void put (); |
62 | void put (); |
78 | |
63 | |
79 | void close_tty (); |
64 | void login (int cmd_pid, bool login_shell, const char *hostname); |
80 | |
|
|
81 | bool make_controlling_tty (); |
|
|
82 | void set_utf8_mode (bool on); |
|
|
83 | |
65 | |
84 | #if UTMP_SUPPORT |
66 | #if UTMP_SUPPORT |
85 | int utmp_pos; |
67 | int utmp_pos; |
86 | int cmd_pid; |
68 | int cmd_pid; |
87 | bool login_shell; |
69 | bool login_shell; |
… | |
… | |
94 | #endif |
76 | #endif |
95 | #if (defined(HAVE_STRUCT_UTMP) && defined(HAVE_UTMP_PID)) || defined(HAVE_STRUCT_UTMPX) |
77 | #if (defined(HAVE_STRUCT_UTMP) && defined(HAVE_UTMP_PID)) || defined(HAVE_STRUCT_UTMPX) |
96 | char ut_id[5]; |
78 | char ut_id[5]; |
97 | #endif |
79 | #endif |
98 | |
80 | |
99 | void login (int cmd_pid, bool login_shell, const char *hostname); |
|
|
100 | void logout (); |
81 | void logout (); |
101 | #endif |
82 | #endif |
102 | }; |
83 | }; |
103 | |
84 | |
104 | #endif |
85 | #endif |