Use posix_openpt() instead of calling openpty() to allocate a PTY
and open the slave TTY, and calling unlockpt() afterwards. PR: 128941 Submitted by: ed Reported by: Gerhard Gonter <g.gonter@ieee.org>
This commit is contained in:
parent
b0ff3937f1
commit
57eda18a6c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=227466
3 changed files with 61 additions and 0 deletions
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
PORTNAME= IO-Tty
|
PORTNAME= IO-Tty
|
||||||
PORTVERSION= 1.07
|
PORTVERSION= 1.07
|
||||||
|
PORTREVISION= 1
|
||||||
CATEGORIES= devel perl5
|
CATEGORIES= devel perl5
|
||||||
MASTER_SITES= CPAN
|
MASTER_SITES= CPAN
|
||||||
PKGNAMEPREFIX= p5-
|
PKGNAMEPREFIX= p5-
|
||||||
|
|
39
devel/p5-IO-Tty/files/patch-Makefile.PL
Normal file
39
devel/p5-IO-Tty/files/patch-Makefile.PL
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
--- Makefile.PL
|
||||||
|
+++ Makefile.PL
|
||||||
|
@@ -95,16 +95,17 @@
|
||||||
|
|
||||||
|
# checking for various functions
|
||||||
|
|
||||||
|
-my %funcs = (ttyname => "",
|
||||||
|
- openpty => "-lutil",
|
||||||
|
- _getpty => "",
|
||||||
|
- strlcpy => "",
|
||||||
|
- sigaction => "",
|
||||||
|
- grantpt => "",
|
||||||
|
- unlockpt => "",
|
||||||
|
- getpt => "",
|
||||||
|
- ptsname => "",
|
||||||
|
- ptsname_r => "",
|
||||||
|
+my %funcs = (ttyname => "",
|
||||||
|
+ openpty => "-lutil",
|
||||||
|
+ _getpty => "",
|
||||||
|
+ strlcpy => "",
|
||||||
|
+ sigaction => "",
|
||||||
|
+ grantpt => "",
|
||||||
|
+ unlockpt => "",
|
||||||
|
+ getpt => "",
|
||||||
|
+ posix_openpt => "",
|
||||||
|
+ ptsname => "",
|
||||||
|
+ ptsname_r => "",
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach my $f (sort keys %funcs) {
|
||||||
|
@@ -290,7 +291,7 @@
|
||||||
|
msg => "WARNING! Neither ptsname() nor ptsname_r() could be found,\n so we cannot use a high-level interface like openpty().\n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
- defines => [qw"-DHAVE_DEV_PTMX -DHAVE_DEV_PTYM_CLONE -DHAVE_DEV_PTC -DHAVE_DEV_PTMX_BSD -DHAVE__GETPTY -DHAVE_OPENPTY -DHAVE_GETPT"],
|
||||||
|
+ defines => [qw"-DHAVE_DEV_PTMX -DHAVE_DEV_PTYM_CLONE -DHAVE_DEV_PTC -DHAVE_DEV_PTMX_BSD -DHAVE__GETPTY -DHAVE_OPENPTY -DHAVE_GETPT -DHAVE_POSIX_OPENPT"],
|
||||||
|
msg => "No high-level lib or clone device has been found, we will use BSD-style ptys.\n",
|
||||||
|
},
|
||||||
|
) {
|
21
devel/p5-IO-Tty/files/patch-Tty.xs
Normal file
21
devel/p5-IO-Tty/files/patch-Tty.xs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
--- Tty.xs
|
||||||
|
+++ Tty.xs
|
||||||
|
@@ -453,6 +453,18 @@
|
||||||
|
#if defined(HAVE_PTSNAME) || defined(HAVE_PTSNAME_R)
|
||||||
|
/* we don't need to try these if we don't have a way to get the pty names */
|
||||||
|
|
||||||
|
+#if defined(HAVE_POSIX_OPENPT)
|
||||||
|
+#if PTY_DEBUG
|
||||||
|
+ if (print_debug)
|
||||||
|
+ fprintf(stderr, "trying posix_openpt()...\n");
|
||||||
|
+#endif
|
||||||
|
+ *ptyfd = posix_openpt(O_RDWR|O_NOCTTY);
|
||||||
|
+ if (*ptyfd >= 0 && open_slave(ptyfd, ttyfd, namebuf, namebuflen))
|
||||||
|
+ break; /* got one */
|
||||||
|
+ if (PL_dowarn)
|
||||||
|
+ warn("pty_allocate(nonfatal): posix_openpt(): %.100s", strerror(errno));
|
||||||
|
+#endif /* defined(HAVE_POSIX_OPENPT) */
|
||||||
|
+
|
||||||
|
#if defined(HAVE_GETPT)
|
||||||
|
/* glibc defines this */
|
||||||
|
#if PTY_DEBUG
|
Loading…
Reference in a new issue