author | lbatlle@npdl268.bpo.hp.com |
Thu, 09 Aug 2007 16:32:38 +0200 | |
changeset 13 | e282978c28b9 |
parent 12 | dc26a5985758 |
child 14 | 9d33b442d12c |
permissions | -rw-r--r-- |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
1 |
/* |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
2 |
* Copyright (c) 1980 Regents of the University of California. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
3 |
* All rights reserved. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
4 |
* |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
5 |
* Redistribution and use in source and binary forms, with or without |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
6 |
* modification, are permitted provided that the following conditions |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
7 |
* are met: |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
8 |
* 1. Redistributions of source code must retain the above copyright |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
9 |
* notice, this list of conditions and the following disclaimer. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
10 |
* 2. Redistributions in binary form must reproduce the above copyright |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
11 |
* notice, this list of conditions and the following disclaimer in the |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
12 |
* documentation and/or other materials provided with the distribution. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
13 |
* 3. All advertising materials mentioning features or use of this software |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
14 |
* must display the following acknowledgement: |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
15 |
* This product includes software developed by the University of |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
16 |
* California, Berkeley and its contributors. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
17 |
* 4. Neither the name of the University nor the names of its contributors |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
18 |
* may be used to endorse or promote products derived from this software |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
19 |
* without specific prior written permission. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
20 |
* |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
21 |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
22 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
23 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
24 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
25 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
26 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
27 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
28 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
29 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
30 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
31 |
* SUCH DAMAGE. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
32 |
*/ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
33 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
34 |
/* |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
35 |
* 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
36 |
* - added Native Language Support |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
37 |
* |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
38 |
* 2000-07-30 Per Andreas Buer <per@linpro.no> - added "q"-option |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
39 |
*/ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
40 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
41 |
/* |
6 | 42 |
* tcpscript - Modified from 'script' - 2007 Lluis Batlle i Rossell |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
43 |
*/ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
44 |
#include <stdio.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
45 |
#include <stdlib.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
46 |
#include <sys/types.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
47 |
#include <sys/stat.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
48 |
#include <termios.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
49 |
#include <sys/ioctl.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
50 |
#include <sys/time.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
51 |
#include <sys/signal.h> |
1 | 52 |
#include <sys/socket.h> |
53 |
#include <netinet/in.h> |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
54 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
55 |
#ifdef __linux__ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
56 |
#include <unistd.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
57 |
#include <string.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
58 |
#endif |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
59 |
|
1 | 60 |
#define HAVE_openpty |
61 |
#define _PATH_BSHELL "/bin/sh" |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
62 |
#ifdef HAVE_openpty |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
63 |
#include <pty.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
64 |
#endif |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
65 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
66 |
void finish(int); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
67 |
void done(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
68 |
void fail(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
69 |
void resize(int); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
70 |
void fixtty(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
71 |
void getmaster(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
72 |
void getslave(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
73 |
void doinput(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
74 |
void dooutput(void); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
75 |
void doshell(void); |
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
76 |
void resize_clients(void); |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
77 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
78 |
char *shell; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
79 |
int master; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
80 |
int slave; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
81 |
int child; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
82 |
int subchild; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
83 |
char *fname; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
84 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
85 |
struct termios tt; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
86 |
struct winsize win; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
87 |
int lb; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
88 |
int l; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
89 |
#ifndef HAVE_openpty |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
90 |
char line[] = "/dev/ptyXX"; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
91 |
#endif |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
92 |
char *cflg = NULL; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
93 |
int qflg = 0; |
1 | 94 |
int tcp_port = 4000; |
3 | 95 |
int limit_conns = 1; |
1 | 96 |
|
97 |
enum { |
|
98 |
MAXCONNS = 10 |
|
99 |
}; |
|
5 | 100 |
static int accept_socket; |
12 | 101 |
const char version[] = "0.2"; |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
102 |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
103 |
int conns[MAXCONNS]; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
104 |
int nconns = 0; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
105 |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
106 |
static char *progname; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
107 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
108 |
static void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
109 |
die_if_link(char *fn) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
110 |
struct stat s; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
111 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
112 |
if (lstat(fn, &s) == 0 && (S_ISLNK(s.st_mode) || s.st_nlink > 1)) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
113 |
fprintf(stderr, |
1 | 114 |
"Warning: `%s' is a link.\n" |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
115 |
"Use `%s [options] %s' if you really " |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
116 |
"want to use it.\n" |
1 | 117 |
"Script not started.\n", |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
118 |
fn, progname, fn); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
119 |
exit(1); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
120 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
121 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
122 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
123 |
/* |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
124 |
* script -t prints time delays as floating point numbers |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
125 |
* The example program (scriptreplay) that we provide to handle this |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
126 |
* timing output is a perl script, and does not handle numbers in |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
127 |
* locale format (not even when "use locale;" is added). |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
128 |
* So, since these numbers are not for human consumption, it seems |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
129 |
* easiest to set LC_NUMERIC here. |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
130 |
*/ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
131 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
132 |
int |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
133 |
main(int argc, char **argv) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
134 |
extern int optind; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
135 |
char *p; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
136 |
int ch; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
137 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
138 |
progname = argv[0]; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
139 |
if ((p = strrchr(progname, '/')) != NULL) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
140 |
progname = p+1; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
141 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
142 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
143 |
if (argc == 2) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
144 |
if (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version")) { |
6 | 145 |
printf("%s %s, modification of 'script' by %s\n", |
146 |
progname, version, |
|
147 |
"Lluis Batlle i Rossell 2007"); |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
148 |
return 0; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
149 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
150 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
151 |
|
3 | 152 |
while ((ch = getopt(argc, argv, "c:qp:l:")) != -1) |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
153 |
switch((char)ch) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
154 |
case 'c': |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
155 |
cflg = optarg; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
156 |
break; |
1 | 157 |
case 'p': |
158 |
tcp_port = atoi(optarg); |
|
159 |
break; |
|
3 | 160 |
case 'l': |
161 |
limit_conns = atoi(optarg); |
|
162 |
break; |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
163 |
case 'q': |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
164 |
qflg++; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
165 |
break; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
166 |
case '?': |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
167 |
default: |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
168 |
fprintf(stderr, |
9 | 169 |
"usage: tcpscript [-l nconns] [-p port] [-q] [-t] \n"); |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
170 |
exit(1); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
171 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
172 |
argc -= optind; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
173 |
argv += optind; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
174 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
175 |
shell = getenv("SHELL"); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
176 |
if (shell == NULL) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
177 |
shell = _PATH_BSHELL; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
178 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
179 |
getmaster(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
180 |
fixtty(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
181 |
|
5 | 182 |
accept_socket = listen_tcp(); |
183 |
||
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
184 |
(void) signal(SIGCHLD, finish); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
185 |
child = fork(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
186 |
if (child < 0) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
187 |
perror("fork"); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
188 |
fail(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
189 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
190 |
if (child == 0) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
191 |
subchild = child = fork(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
192 |
if (child < 0) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
193 |
perror("fork"); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
194 |
fail(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
195 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
196 |
if (child) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
197 |
dooutput(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
198 |
else |
5 | 199 |
{ |
200 |
close(accept_socket); |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
201 |
doshell(); |
5 | 202 |
} |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
203 |
} else |
5 | 204 |
{ |
205 |
close(accept_socket); |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
206 |
(void) signal(SIGWINCH, resize); |
5 | 207 |
} |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
208 |
doinput(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
209 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
210 |
return 0; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
211 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
212 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
213 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
214 |
doinput() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
215 |
register int cc; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
216 |
char ibuf[BUFSIZ]; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
217 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
218 |
while ((cc = read(0, ibuf, BUFSIZ)) > 0) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
219 |
(void) write(master, ibuf, cc); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
220 |
done(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
221 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
222 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
223 |
#include <sys/wait.h> |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
224 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
225 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
226 |
finish(int dummy) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
227 |
int status; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
228 |
register int pid; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
229 |
register int die = 0; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
230 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
231 |
while ((pid = wait3(&status, WNOHANG, 0)) > 0) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
232 |
if (pid == child) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
233 |
die = 1; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
234 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
235 |
if (die) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
236 |
done(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
237 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
238 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
239 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
240 |
resize(int dummy) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
241 |
/* transmit window change information to the child */ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
242 |
(void) ioctl(0, TIOCGWINSZ, (char *)&win); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
243 |
(void) ioctl(slave, TIOCSWINSZ, (char *)&win); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
244 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
245 |
kill(child, SIGWINCH); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
246 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
247 |
|
1 | 248 |
void fatal() |
249 |
{ |
|
5 | 250 |
done(); |
1 | 251 |
exit(-1); |
252 |
} |
|
253 |
||
3 | 254 |
int set_reusable(int s) |
255 |
{ |
|
256 |
int boolean = 1; |
|
257 |
int res; |
|
258 |
||
259 |
res = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &boolean, sizeof(boolean)); |
|
260 |
if (res != 0) |
|
261 |
perror("Setsockopt REUSE failed"), fatal(); |
|
262 |
} |
|
263 |
||
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
264 |
void sig_resize_clients(int x) |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
265 |
{ |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
266 |
resize_clients(); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
267 |
} |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
268 |
|
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
269 |
void resize_clients() |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
270 |
{ |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
271 |
int rows, cols; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
272 |
char tmp[100]; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
273 |
int i; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
274 |
int len; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
275 |
|
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
276 |
/* Get rows and cols from our connection to the terminal: fd 1 */ |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
277 |
(void) ioctl(0, TIOCGWINSZ, (char *)&win); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
278 |
rows = win.ws_row; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
279 |
cols = win.ws_col; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
280 |
|
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
281 |
/* Prepare the xterm resize string */ |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
282 |
snprintf(tmp, 100, "\033[8;%i;%it\n", rows, cols, rows, cols); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
283 |
len = strlen(tmp); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
284 |
for (i = 0; i < nconns; ++i) |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
285 |
{ |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
286 |
send(conns[i], tmp, len, 0); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
287 |
} |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
288 |
} |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
289 |
|
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
290 |
void send_noecho(int fd) |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
291 |
{ |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
292 |
char seq[] = { 255 /*IAC*/, 251 /*WILL*/, 1 /*ECHO*/ }; |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
293 |
send(fd, seq, sizeof seq, 0); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
294 |
} |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
295 |
|
1 | 296 |
int listen_tcp() |
297 |
{ |
|
298 |
int s; |
|
299 |
struct sockaddr_in addr; |
|
300 |
int res; |
|
301 |
||
302 |
s = socket(PF_INET, SOCK_STREAM, 0); |
|
303 |
if (s == -1) |
|
304 |
perror("Failed socket()"), fatal(); |
|
305 |
||
3 | 306 |
set_reusable(s); |
307 |
||
1 | 308 |
addr.sin_family = AF_INET; |
309 |
addr.sin_port = htons(tcp_port); |
|
310 |
addr.sin_addr.s_addr = INADDR_ANY; |
|
311 |
res = bind(s, (struct sockaddr *) &addr, sizeof(addr)); |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
312 |
if (res != 0) |
1 | 313 |
perror("Failed bind()"), fatal(); |
314 |
||
315 |
res = listen(s, 1); |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
316 |
if (res != 0) |
1 | 317 |
perror("Failed listen()"), fatal(); |
318 |
||
2 | 319 |
if (!qflg) |
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
320 |
printf("Listening on port %i\r\n", tcp_port); |
1 | 321 |
return s; |
322 |
} |
|
323 |
||
324 |
void remove_element(int index, int *array, int total) |
|
325 |
{ |
|
326 |
int i; |
|
327 |
for (i = index; i < (total - 1); ++i) |
|
328 |
array[i] = array[i+1]; |
|
329 |
} |
|
330 |
||
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
331 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
332 |
dooutput() { |
1 | 333 |
int cc; |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
334 |
char obuf[BUFSIZ]; |
1 | 335 |
int accept_socket; |
336 |
int i; |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
337 |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
338 |
/* (void) close(0); lets use it in resize*/ |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
339 |
#ifdef HAVE_openpty |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
340 |
(void) close(slave); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
341 |
#endif |
1 | 342 |
fd_set read_set; |
343 |
fd_set should_read_set; |
|
344 |
fd_set tcp_set; |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
345 |
|
1 | 346 |
FD_ZERO(&should_read_set); |
347 |
FD_SET(accept_socket, &should_read_set); |
|
348 |
FD_SET(master, &should_read_set); |
|
349 |
nconns = 0; |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
350 |
(void) signal(SIGWINCH, sig_resize_clients); |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
351 |
for (;;) { |
1 | 352 |
int max; |
353 |
read_set = should_read_set; |
|
354 |
||
355 |
/* Calculate max fd */ |
|
356 |
max = accept_socket; |
|
357 |
if (master > max) |
|
358 |
max = master; |
|
359 |
for (i = 0; i < nconns; ++i) |
|
360 |
if (conns[i] > max) |
|
361 |
max = conns[i]; |
|
362 |
||
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
363 |
i = select(max + 1, &read_set, 0, 0, 0); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
364 |
if (i == -1) |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
365 |
continue; |
1 | 366 |
|
367 |
if (FD_ISSET(master, &read_set)) |
|
368 |
{ |
|
369 |
cc = read(master, obuf, sizeof (obuf)); |
|
370 |
if (cc <= 0) |
|
371 |
break; |
|
372 |
/* Write to the terminal output */ |
|
373 |
(void) write(1, obuf, cc); |
|
374 |
/* Broadcast messages */ |
|
375 |
for (i = 0; i < nconns; ++i) |
|
376 |
(void) write(conns[i], obuf, cc); |
|
377 |
} |
|
378 |
for (i = 0; i < nconns; ++i) |
|
379 |
{ |
|
380 |
if (FD_ISSET(conns[i], &read_set)) |
|
381 |
{ |
|
382 |
int size; |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
383 |
size = recv(conns[i], obuf, sizeof(obuf), 0); |
1 | 384 |
if (size == 0) |
385 |
{ |
|
386 |
close(conns[i]); |
|
387 |
FD_CLR(conns[i], &should_read_set); |
|
388 |
remove_element(i, conns, nconns); |
|
389 |
nconns--; |
|
390 |
} |
|
391 |
} |
|
392 |
} |
|
393 |
if (FD_ISSET(accept_socket, &read_set)) |
|
394 |
{ |
|
395 |
int s; |
|
396 |
s = accept(accept_socket, 0, 0); |
|
397 |
if (s == -1) |
|
398 |
{ |
|
399 |
perror("accept() failed"); |
|
400 |
break; |
|
401 |
} |
|
3 | 402 |
if (nconns < (MAXCONNS - 1) && nconns < limit_conns) |
1 | 403 |
{ |
404 |
FD_SET(s, &should_read_set); |
|
405 |
conns[nconns] = s; |
|
406 |
nconns++; |
|
10
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
407 |
send_noecho(s); |
c3156fd18d14
Added xterm resize strings and nulifies echo on telnet clients.
lbatlle@npdl268.bpo.hp.com
parents:
9
diff
changeset
|
408 |
resize_clients(); |
1 | 409 |
} else |
410 |
close(s); |
|
411 |
} |
|
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
412 |
} |
1 | 413 |
|
414 |
close(accept_socket); |
|
415 |
for (i = 0; i < nconns; ++i) |
|
416 |
close(conns[i]); |
|
417 |
||
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
418 |
done(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
419 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
420 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
421 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
422 |
doshell() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
423 |
char *shname; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
424 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
425 |
#if 0 |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
426 |
int t; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
427 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
428 |
t = open(_PATH_TTY, O_RDWR); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
429 |
if (t >= 0) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
430 |
(void) ioctl(t, TIOCNOTTY, (char *)0); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
431 |
(void) close(t); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
432 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
433 |
#endif |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
434 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
435 |
getslave(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
436 |
(void) close(master); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
437 |
(void) dup2(slave, 0); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
438 |
(void) dup2(slave, 1); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
439 |
(void) dup2(slave, 2); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
440 |
(void) close(slave); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
441 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
442 |
shname = strrchr(shell, '/'); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
443 |
if (shname) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
444 |
shname++; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
445 |
else |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
446 |
shname = shell; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
447 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
448 |
if (cflg) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
449 |
execl(shell, shname, "-c", cflg, 0); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
450 |
else |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
451 |
execl(shell, shname, "-i", 0); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
452 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
453 |
perror(shell); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
454 |
fail(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
455 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
456 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
457 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
458 |
fixtty() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
459 |
struct termios rtt; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
460 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
461 |
rtt = tt; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
462 |
cfmakeraw(&rtt); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
463 |
rtt.c_lflag &= ~ECHO; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
464 |
(void) tcsetattr(0, TCSAFLUSH, &rtt); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
465 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
466 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
467 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
468 |
fail() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
469 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
470 |
(void) kill(0, SIGTERM); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
471 |
done(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
472 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
473 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
474 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
475 |
done() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
476 |
time_t tvec; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
477 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
478 |
if (subchild) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
479 |
(void) close(master); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
480 |
} else { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
481 |
(void) tcsetattr(0, TCSAFLUSH, &tt); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
482 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
483 |
exit(0); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
484 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
485 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
486 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
487 |
getmaster() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
488 |
#ifdef HAVE_openpty |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
489 |
(void) tcgetattr(0, &tt); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
490 |
(void) ioctl(0, TIOCGWINSZ, (char *)&win); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
491 |
if (openpty(&master, &slave, NULL, &tt, &win) < 0) { |
1 | 492 |
fprintf(stderr, "openpty failed\n"); |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
493 |
fail(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
494 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
495 |
#else |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
496 |
char *pty, *bank, *cp; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
497 |
struct stat stb; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
498 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
499 |
pty = &line[strlen("/dev/ptyp")]; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
500 |
for (bank = "pqrs"; *bank; bank++) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
501 |
line[strlen("/dev/pty")] = *bank; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
502 |
*pty = '0'; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
503 |
if (stat(line, &stb) < 0) |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
504 |
break; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
505 |
for (cp = "0123456789abcdef"; *cp; cp++) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
506 |
*pty = *cp; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
507 |
master = open(line, O_RDWR); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
508 |
if (master >= 0) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
509 |
char *tp = &line[strlen("/dev/")]; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
510 |
int ok; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
511 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
512 |
/* verify slave side is usable */ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
513 |
*tp = 't'; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
514 |
ok = access(line, R_OK|W_OK) == 0; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
515 |
*tp = 'p'; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
516 |
if (ok) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
517 |
(void) tcgetattr(0, &tt); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
518 |
(void) ioctl(0, TIOCGWINSZ, |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
519 |
(char *)&win); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
520 |
return; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
521 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
522 |
(void) close(master); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
523 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
524 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
525 |
} |
1 | 526 |
fprintf(stderr, "Out of pty's\n"); |
0
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
527 |
fail(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
528 |
#endif /* not HAVE_openpty */ |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
529 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
530 |
|
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
531 |
void |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
532 |
getslave() { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
533 |
#ifndef HAVE_openpty |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
534 |
line[strlen("/dev/")] = 't'; |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
535 |
slave = open(line, O_RDWR); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
536 |
if (slave < 0) { |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
537 |
perror(line); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
538 |
fail(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
539 |
} |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
540 |
(void) tcsetattr(slave, TCSAFLUSH, &tt); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
541 |
(void) ioctl(slave, TIOCSWINSZ, (char *)&win); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
542 |
#endif |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
543 |
(void) setsid(); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
544 |
(void) ioctl(slave, TIOCSCTTY, 0); |
f7f7567e7bef
Initial import of script.c from util-linux-2.12r (gentoo)
viric@llimona
parents:
diff
changeset
|
545 |
} |