File: 050-Makefile.patch

package info (click to toggle)
dbishell 0.8.9-7
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 828 kB
  • ctags: 1,423
  • sloc: perl: 13,353; makefile: 138; sh: 15
file content (52 lines) | stat: -rw-r--r-- 3,248 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
--- Makefile	2005-03-24 16:19:34.187973102 +0000
+++ Makefile	2005-03-24 16:20:26.349215003 +0000
@@ -40,21 +40,42 @@
 	@echo
 	@echo "Looking for supported readline implementation"
 	@$(PERL) -MTerm::ReadLine \
+		 -MPOSIX          \
                  -MFcntl          \
                  -e 'if ( !-t(STDOUT) && -c("/dev/ptmx") )'          \
                  -e '{'                                              \
                  -e '  require "sys/ioctl.ph";'                      \
-                 -e '  my $$ptn = 0;'                                \
-                 -e '  my $$unl = 0;'                                \
+                 -e '  my $$ptn = pack(L => 0);'                     \
+                 -e '  my $$unl = pack(L => 0);'                     \
                  -e '  sysopen(PTMX, "/dev/ptmx", O_RDWR|O_NDELAY);' \
-                 -e '  ioctl(PTMX, TIOCSPTLCK, $$unl);'              \
-                 -e '  ioctl(PTMX, TIOCGPTN, $$ptn);'                \
+		 -e '  ioctl(PTMX, TIOCSPTLCK(), $$unl)'             \
+		 -e '    || warn("TIOCSPTLCK: $$!\n");'              \
+                 -e '  if( $$! == POSIX::EINVAL() )'                 \
+                 -e '  {'                                            \
+	         -e '    warn("EINVAL: kludging ioctls\n");         '\
+                 -e '    ioctl(PTMX, 0x40045431, $$unl)||die("SPTLCK:$$!\n");'\
+                 -e '    ioctl(PTMX, 0x80045430, $$ptn)||die("GPTN  :$$!\n");'\
+                 -e '    warn( "ioctl() calls succeeded: ", ' \
+                 -e '          unpack(L => $$ptn), "/"    , ' \
+		 -e '          unpack(L => $$unl), "\n"   );' \
+                 -e '  }'                                            \
+                 -e '  else { ioctl(PTMX, TIOCGPTN(), $$ptn) }'      \
+		 -e '  $$ptn = unpack(L => $$ptn);'                  \
                  -e '  sysopen(TTY, "/dev/pts/".$$ptn, O_RDWR)'      \
-                 -e '    ||die("i", $$!, "\n");'                     \
+                 -e '    ||die("/dev/pts/$$ptn: ", $$!, "\n");'      \
+                 -e '  warn( "TTY /dev/pts/$$ptn opened\n");'        \
+		 -e '  my $$tws; '                                   \
+		 -e '  ioctl(TTY, TIOCGWINSZ(), $$tws)'              \
+                 -e '    ||die("TIOCGWINSZ() failed: $$!\n");'       \
+		 -e '  warn("TIOCGWINSZ succeeded\n");'              \
+		 -e '  open( STDIN , "<&TTY"); '                     \
+		 -e '  open( STDOUT, ">&TTY"); '                     \
                  -e '}'                                              \
                  -e 'else { *TTY = *STDIN }'                         \
-                 -e '$$x = Term::ReadLine->new("X", *TTY, *TTY)->ReadLine();' \
-                 -e 'print(STDOUT "readline == $$x\n");'             \
+                 -e 'warn("*TTY is", (-t(TTY) ? "" : " not"), " a pty\n" );' \
+		 -e 'warn("fd of TTY is: ",fileno(TTY),"\n");'       \
+                 -e '$$x = Term::ReadLine->new("X", *TTY, *TTY)->ReadLine();'\
+                 -e 'print(STDERR "readline == $$x\n");'             \
                  -e '$$x =~ /^Term::ReadLine::(?:Gnu|Perl)$$/'       \
                  -e '  || die("Must have Term::ReadLine::(Gnu|Perl)\n");'