components/tmux/patches/client.c.patch
author Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
Wed, 13 Aug 2014 07:40:46 -0700
branchs11-update
changeset 3263 8766b70c7f00
parent 2787 f6f36f8682b5
permissions -rw-r--r--
19385782 Upgrade OpenSSL version to 1.0.1i 19385643 problem in LIBRARY/OPENSSL 19385653 problem in LIBRARY/OPENSSL 19385660 problem in LIBRARY/OPENSSL 19385675 problem in LIBRARY/OPENSSL 19385678 problem in LIBRARY/OPENSSL 19385688 problem in LIBRARY/OPENSSL 19385699 problem in LIBRARY/OPENSSL 19385708 problem in LIBRARY/OPENSSL 19385718 problem in LIBRARY/OPENSSL
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2787
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     1
In-House Patch. Submitted to upstream, but not accepted yet.
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     2
Check for flock(), which is available on BSD and not on Solaris. 
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     3
Instead use fnctl() on Solaris. Also check if cfmakeraw(), which
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     4
is not available on Solaris, so manually change the termios 
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     5
structure, the same way cfmakeraw does.
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     6
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     7
--- tmux-1.8/client.c.orig	2013-08-13 12:42:26.447337127 -0700
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     8
+++ tmux-1.8/client.c	2013-08-13 12:44:09.044164126 -0700
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
     9
@@ -74,16 +74,30 @@
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    10
 client_get_lock(char *lockfile)
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    11
 {
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    12
 	int lockfd;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    13
+#ifdef F_SETLK
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    14
+        struct flock lock;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    15
+#endif
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    16
 
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    17
 	if ((lockfd = open(lockfile, O_WRONLY|O_CREAT, 0600)) == -1)
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    18
 		fatal("open failed");
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    19
 
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    20
+#ifdef F_SETLK
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    21
+        if (fcntl(lockfd, F_SETLK, &lock) == -1 && errno == EAGAIN) {
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    22
+		while (fcntl(lockfd, F_SETLKW, &lock) == -1 && errno == EINTR)
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    23
+			/* nothing */;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    24
+		close(lockfd);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    25
+		return(-1);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    26
+	}
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    27
+#elif LOCK_EX
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    28
 	if (flock(lockfd, LOCK_EX|LOCK_NB) == -1 && errno == EWOULDBLOCK) {
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    29
 		while (flock(lockfd, LOCK_EX) == -1 && errno == EINTR)
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    30
 			/* nothing */;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    31
 		close(lockfd);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    32
 		return (-1);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    33
 	}
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    34
+#else
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    35
+#error  "You need locking support."
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    36
+#endif
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    37
 
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    38
 	return (lockfd);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    39
 }
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    40
@@ -244,7 +258,15 @@
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    41
 			    strerror(errno));
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    42
 			return (1);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    43
 		}
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    44
-		cfmakeraw(&tio);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    45
+#ifdef HAVE_CFMAKERAW
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    46
+                cfmakeraw(&tio);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    47
+#else
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    48
+		tio.c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    49
+		tio.c_oflag &= ~OPOST;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    50
+		tio.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    51
+		tio.c_cflag &= ~(CSIZE|PARENB);
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    52
+	     	tio.c_cflag |= CS8;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    53
+#endif
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    54
 		tio.c_iflag = ICRNL|IXANY;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    55
 		tio.c_oflag = OPOST|ONLCR;
f6f36f8682b5 17195662 tmux required for solaris
mahmood.ali@oracle.com <mahmood.ali@oracle.com>
parents:
diff changeset
    56
 #ifdef NOKERNINFO