summaryrefslogtreecommitdiff
path: root/network/w3m/patches/w3m-0.5.2-gpm_fix-1.patch
blob: 74c645d3482976393beea1eee537c18d83a9c0b0 (plain)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
diff -urN w3m-0.5.2/configure.ac w3m-0.5.2.fixed/configure.ac
--- w3m-0.5.2/configure.ac	2004-04-29 00:19:25.000000000 +0600
+++ w3m-0.5.2.fixed/configure.ac	2005-09-24 16:39:11.000000000 +0600
@@ -97,6 +97,7 @@
  AC_SUBST(USE_W3M)
  AC_CHECK_LIB(gpm, Gpm_Open, [AC_DEFINE(USE_GPM)
    		W3M_LIBS="$W3M_LIBS -lgpm"])
+ AC_CHECK_LIB(gpm, Gpm_Wgetch, AC_DEFINE(HAVE_GPM_WGETCH))
  AC_SUBST(USE_SYSMOUSE)
  AC_TRY_CPP([#include <machine/console.h>
    MOUSE_GETINFO], [AC_DEFINE(USE_SYSMOUSE)])
diff -urN w3m-0.5.2/gpm-libcurses.c w3m-0.5.2.fixed/gpm-libcurses.c
--- w3m-0.5.2/gpm-libcurses.c	1970-01-01 05:00:00.000000000 +0500
+++ w3m-0.5.2.fixed/gpm-libcurses.c	2005-09-24 18:18:30.000000000 +0600
@@ -0,0 +1,84 @@
+/*
+ * libcurses.c - client library - curses level (gpm-Linux)
+ *
+ * Copied from GPM by Alexander E. Patrakov
+ * Copyright 1994,1995   rubini@linux.it (Alessandro Rubini)
+ * Copyright 2002        nico@schottelius.org (Nico Schottelius)
+ * 
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ ********/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>        /* select(); */
+#include <sys/time.h>      /* timeval */
+#include <sys/types.h>     /* socket() */
+
+#include "config.h"
+#if defined(USE_GPM) && !defined(HAVE_GPM_WGETCH)
+
+extern int getch();
+
+#include <gpm.h>
+#include <errno.h>
+
+#define SELECT_TIME 86400 /* one day */
+
+int Gpm_Wgetch(void * dummy)
+{
+fd_set selSet;
+int max, flag, result;
+int fd=STDIN_FILENO;
+static Gpm_Event ev;
+
+  if (!gpm_flag || gpm_fd==-1) return getch();
+  if (gpm_morekeys) return (*gpm_handler)(&ev,gpm_data);
+  gpm_hflag=0;
+
+  max = (gpm_fd>fd) ? gpm_fd : fd;
+
+/*...................................................................*/
+  if (gpm_fd>=0)                                            /* linux */
+    while(1)
+      {
+      if (gpm_visiblepointer) GPM_DRAWPOINTER(&ev);
+      do
+	{
+	FD_ZERO(&selSet);
+	FD_SET(fd,&selSet);
+	FD_SET(gpm_fd,&selSet);
+	gpm_timeout.tv_sec=SELECT_TIME;
+	errno = 0;
+	flag=select(max+1,&selSet,(fd_set *)NULL,(fd_set *)NULL,&gpm_timeout);
+	}
+      while (!flag);
+
+      if (flag==-1)
+	continue;
+
+      if (FD_ISSET(fd,&selSet))
+	return getch();
+      
+      if (Gpm_GetEvent(&ev) && gpm_handler
+	  && (result=(*gpm_handler)(&ev,gpm_data)))
+	{
+	gpm_hflag=1;
+	return result;
+	}
+      }
+  return 0;
+}
+#endif
+
diff -urN w3m-0.5.2/Makefile.in w3m-0.5.2.fixed/Makefile.in
--- w3m-0.5.2/Makefile.in	2004-04-26 23:04:48.000000000 +0600
+++ w3m-0.5.2.fixed/Makefile.in	2005-09-24 16:48:54.000000000 +0600
@@ -85,11 +85,11 @@
 SRCS=main.c file.c buffer.c display.c etc.c search.c linein.c table.c local.c \
 	form.c map.c frame.c rc.c menu.c mailcap.c image.c \
 	symbol.c entity.c terms.c url.c ftp.c mimehead.c regex.c news.c \
-	func.c cookie.c history.c backend.c $(KEYBIND_SRC)
+	func.c cookie.c history.c backend.c gpm-libcurses.c $(KEYBIND_SRC)
 OBJS=main.o file.o buffer.o display.o etc.o search.o linein.o table.o local.o\
 	form.o map.o frame.o rc.o menu.o mailcap.o image.o \
 	symbol.o entity.o terms.o url.o ftp.o mimehead.o regex.o news.o \
-	func.o cookie.o history.o backend.o $(KEYBIND_OBJ)
+	func.o cookie.o history.o backend.o gpm-libcurses.o $(KEYBIND_OBJ)
 LSRCS=anchor.c parsetagx.c tagtable.c istream.c
 LOBJS=anchor.o parsetagx.o tagtable.o istream.o
 LLOBJS=version.o
diff -urN w3m-0.5.2/config.h.in w3m-0.5.2.fixed/config.h.in
--- w3m-0.5.2/config.h.in	2004-04-04 22:47:20.000000000 +0600
+++ w3m-0.5.2.fixed/config.h.in	2005-09-24 16:50:43.000000000 +0600
@@ -231,3 +231,4 @@
 #define INFLATE_NAME "inflate"
 
+#undef HAVE_GPM_WGETCH
 #endif /* CONFIG_H_SEEN */