Initial push
[termux-packages] / packages / tmux / tmux.patch
1 diff -u -r -N ../tmux-1.8/compat/forkpty-linux.c ./compat/forkpty-linux.c
2 --- ../tmux-1.8/compat/forkpty-linux.c 1970-01-01 01:00:00.000000000 +0100
3 +++ ./compat/forkpty-linux.c 2014-01-08 12:44:00.885192436 +0100
4 @@ -0,0 +1,63 @@
5 +#include <fcntl.h>
6 +#include <sys/ioctl.h>
7 +#include <sys/param.h>
8 +#include <sys/types.h>
9 +#include <stdlib.h>
10 +#include <termios.h>
11 +#include <unistd.h>
12 +
13 +int login_tty(int fd)
14 +{
15 + setsid();
16 + if (ioctl(fd, TIOCSCTTY, NULL) == -1) return -1;
17 + dup2(fd, 0);
18 + dup2(fd, 1);
19 + dup2(fd, 2);
20 + if (fd > 2) close(fd);
21 + return 0;
22 +}
23 +
24 +int openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp)
25 +{
26 + char buf[512];
27 + int master, slave;
28 +
29 + master = open("/dev/ptmx", O_RDWR);
30 + if (master == -1) return -1;
31 + if (grantpt(master) || unlockpt(master) || ptsname_r(master, buf, sizeof buf)) goto fail;
32 +
33 + slave = open(buf, O_RDWR | O_NOCTTY);
34 + if (slave == -1) goto fail;
35 +
36 + /* XXX Should we ignore errors here? */
37 + if (termp) tcsetattr(slave, TCSAFLUSH, termp);
38 + if (winp) ioctl(slave, TIOCSWINSZ, winp);
39 +
40 + *amaster = master;
41 + *aslave = slave;
42 + if (name != NULL) strcpy(name, buf);
43 + return 0;
44 +
45 +fail:
46 + close(master);
47 + return -1;
48 +}
49 +
50 +
51 +int forkpty(int *amaster, char *name, struct termios *termp, struct winsize *winp)
52 +{
53 + int master, slave, pid;
54 + if (openpty(&master, &slave, name, termp, winp) == -1) return -1;
55 + switch (pid = fork()) {
56 + case -1:
57 + return -1;
58 + case 0:
59 + close(master);
60 + if (login_tty (slave)) _exit (1);
61 + return 0;
62 + default:
63 + *amaster = master;
64 + close (slave);
65 + return pid;
66 + }
67 +}
68 diff -u -r -N ../tmux-1.8/compat/imsg-buffer.c ./compat/imsg-buffer.c
69 --- ../tmux-1.8/compat/imsg-buffer.c 2013-02-10 17:20:15.000000000 +0100
70 +++ ./compat/imsg-buffer.c 2014-01-08 12:33:53.721206934 +0100
71 @@ -28,6 +28,10 @@
72
73 #include "tmux.h"
74
75 +#ifndef IOV_MAX
76 +# define IOV_MAX 1024
77 +#endif
78 +
79 int ibuf_realloc(struct ibuf *, size_t);
80 void ibuf_enqueue(struct msgbuf *, struct ibuf *);
81 void ibuf_dequeue(struct msgbuf *, struct ibuf *);