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 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 +#include +#include /* select(); */ +#include /* timeval */ +#include /* socket() */ + +#include "config.h" +#if defined(USE_GPM) && !defined(HAVE_GPM_WGETCH) + +extern int getch(); + +#include +#include + +#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 */