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 */
|