ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/ptytty.h
Revision: 1.8
Committed: Tue Jan 17 10:59:32 2006 UTC (18 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.7: +28 -13 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #ifndef PTYTTY_H
2 #define PTYTTY_H
3
4 #include "feature.h"
5
6 #if defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT)
7 # if defined(PTYS_ARE_GETPT) || defined(PTYS_ARE_POSIX) || defined(PTYS_ARE_PTMX)
8 # define NO_SETOWNER_TTYDEV 1
9 # endif
10 #endif
11 #if defined(__CYGWIN32__)
12 # define NO_SETOWNER_TTYDEV 1
13 #endif
14
15 #if UTMP_SUPPORT
16 # if !defined(RXVT_UTMPX_FILE) || !defined(HAVE_STRUCT_UTMPX)
17 # undef HAVE_UTMPX_H
18 # undef HAVE_STRUCT_UTMPX
19 # endif
20 # if !defined(RXVT_UTMP_FILE) || !defined(HAVE_STRUCT_UTMP)
21 # undef HAVE_UTMP_H
22 # undef HAVE_STRUCT_UTMP
23 # endif
24
25 # ifdef HAVE_UTMPX_H
26 # include <utmpx.h>
27 # endif
28 # ifdef HAVE_UTMP_H
29 # include <utmp.h>
30 # endif
31
32 # if ! defined(HAVE_STRUCT_UTMPX) && ! defined(HAVE_STRUCT_UTMP)
33 # error cannot build with utmp support - no utmp or utmpx struct found
34 # endif
35
36 # ifdef HAVE_LASTLOG_H
37 # include <lastlog.h>
38 # endif
39
40 # include <pwd.h>
41
42 # ifdef RXVT_UTMP_SYSV
43 # ifndef USER_PROCESS
44 # define USER_PROCESS 7
45 # endif
46 # ifndef DEAD_PROCESS
47 # define DEAD_PROCESS 8
48 # endif
49 # endif
50
51 # ifdef __QNX__
52 # include <sys/utsname.h>
53 # define ut_name ut_user
54 # endif
55
56 #endif
57
58 enum rxvt_privaction { IGNORE = 'i', SAVE = 's', RESTORE = 'r' };
59
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
84 #ifndef RESET_TTY_TO_COMMON_DEFAULTS
85 struct stat savestat; /* original status of our tty */
86 #endif
87 #ifndef NO_SETOWNER_TTYDEV
88 void privileges (rxvt_privaction action);
89 bool saved;
90 #endif
91 public:
92
93 rxvt_ptytty_unix ();
94 ~rxvt_ptytty_unix ();
95
96 #if UTMP_SUPPORT
97 int utmp_pos;
98 int cmd_pid;
99 bool login_shell;
100
101 #ifdef HAVE_STRUCT_UTMP
102 struct utmp ut;
103 #endif
104 #ifdef HAVE_STRUCT_UTMPX
105 struct utmpx utx;
106 #endif
107 #if (defined(HAVE_STRUCT_UTMP) && defined(HAVE_UTMP_PID)) || defined(HAVE_STRUCT_UTMPX)
108 char ut_id[5];
109 #endif
110
111 bool get ();
112 void put ();
113
114 void login (int cmd_pid, bool login_shell, const char *hostname);
115 void logout ();
116 #endif
117 };
118
119 #endif
120