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, 4 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.7: +28 -13 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #ifndef PTYTTY_H
2     #define PTYTTY_H
3    
4 root 1.4 #include "feature.h"
5    
6     #if defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT)
7 ayin 1.7 # if defined(PTYS_ARE_GETPT) || defined(PTYS_ARE_POSIX) || defined(PTYS_ARE_PTMX)
8 root 1.4 # define NO_SETOWNER_TTYDEV 1
9     # endif
10     #endif
11 root 1.5 #if defined(__CYGWIN32__)
12 root 1.4 # define NO_SETOWNER_TTYDEV 1
13     #endif
14 root 1.1
15 root 1.6 #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 root 1.1 enum rxvt_privaction { IGNORE = 'i', SAVE = 's', RESTORE = 'r' };
59    
60     struct rxvt_ptytty {
61 root 1.8 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 root 1.1 #ifndef RESET_TTY_TO_COMMON_DEFAULTS
85     struct stat savestat; /* original status of our tty */
86     #endif
87 root 1.4 #ifndef NO_SETOWNER_TTYDEV
88 root 1.1 void privileges (rxvt_privaction action);
89 root 1.4 bool saved;
90     #endif
91 root 1.1 public:
92    
93 root 1.8 rxvt_ptytty_unix ();
94     ~rxvt_ptytty_unix ();
95 root 1.6
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 root 1.8 bool get ();
112     void put ();
113    
114 root 1.6 void login (int cmd_pid, bool login_shell, const char *hostname);
115     void logout ();
116     #endif
117 root 1.1 };
118    
119     #endif
120