diff --git a/www-client/links/links-2.15.recipe b/www-client/links/links-2.15.recipe deleted file mode 100644 index 3b8e14df4..000000000 --- a/www-client/links/links-2.15.recipe +++ /dev/null @@ -1,88 +0,0 @@ -SUMMARY="A graphics and text mode web browser" -DESCRIPTION="Links is a multi-platform web browser you can run in Terminal." -HOMEPAGE="http://links.twibright.com/" -COPYRIGHT="1999-2013 Mikulas Patocka - 2000-2011 Petr Kulhavy, Karel Kulhavy, Martin Pergel" -LICENSE="GNU GPL v2" -REVISION="1" -SOURCE_URI="http://links.twibright.com/download/links-$portVersion.tar.gz" -CHECKSUM_SHA256="677f594b58dc532e63913cd61b85cc1aa6f0385e333b88766eb3415b41b3a375" -PATCHES="links-$portVersion.patchset" - -ARCHITECTURES="?x86_gcc2 ?x86 x86_64" - -PROVIDES=" - links = $portVersion - cmd:links = $portVersion - " -REQUIRES=" - haiku - lib:libbrotlicommon - lib:libbz2 - lib:libcrypto - lib:libgomp - lib:libjpeg - lib:liblzma - lib:libpng16 - lib:libssl - lib:libtiff - lib:libz - " - -BUILD_REQUIRES=" - haiku_devel - devel:libbrotlicommon - devel:libbz2 - devel:libcrypto -# devel:libGL - devel:libglu - devel:libjpeg - devel:liblzma - devel:libpng16 - devel:libssl - devel:libtiff - devel:libz >= 1.2.8 - " -BUILD_PREREQUIRES=" - cmd:aclocal - cmd:autoconf - cmd:gcc - cmd:ld - cmd:libtool - cmd:make - cmd:pkg_config - " - -defineDebugInfoPackage links \ - "$binDir"/links - -BUILD() -{ - STDCPPLIBS=-lstdc++ - if [ "$effectiveTargetArchitecture" = x86_gcc2 ]; then - STDCPPLIBS=-lstdc++.r4 - fi - - export CPPFLAGS="-fpermissive" - - aclocal - automake --add-missing - autoheader - automake - autoconf - runConfigure ./configure \ - --without-x \ - --enable-graphics - make STDCPPLIBS=$STDCPPLIBS -} - -INSTALL() -{ - make install - addAppDeskbarSymlink $binDir/links Links -} - -TEST() -{ - make check -} diff --git a/www-client/links/links-2.19.recipe b/www-client/links/links-2.19.recipe index acbd057de..960247a14 100644 --- a/www-client/links/links-2.19.recipe +++ b/www-client/links/links-2.19.recipe @@ -4,13 +4,13 @@ HOMEPAGE="http://links.twibright.com/" COPYRIGHT="1999-2019 Mikulas Patocka 2000-2011 Petr Kulhavy, Karel Kulhavy, Martin Pergel" LICENSE="GNU GPL v2" -REVISION="1" +REVISION="2" SOURCE_URI="http://links.twibright.com/download/links-$portVersion.tar.gz" CHECKSUM_SHA256="37299f804f22c945bf63e22a7bc4418bbb8144b410c0ced70b82ebe6f9e3c82b" PATCHES="links-$portVersion.patchset" ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64" -SECONDARY_ARCHITECTURES="?x86" +SECONDARY_ARCHITECTURES="x86" commandSuffix=$secondaryArchSuffix commandBinDir=$binDir diff --git a/www-client/links/links-2.3pre2.recipe b/www-client/links/links-2.3pre2.recipe deleted file mode 100644 index f53523195..000000000 --- a/www-client/links/links-2.3pre2.recipe +++ /dev/null @@ -1,64 +0,0 @@ -SUMMARY="A graphics and text mode web browser" -DESCRIPTION="Links is a multi-platform web browser you can run in Terminal." -HOMEPAGE="http://links.twibright.com/" -COPYRIGHT="1999 - 2011 Mikulas Patocka - 2000 - 2011 Petr Kulhavy, Karel Kulhavy, Martin Pergel" -LICENSE="GNU GPL v2" -REVISION="1" -SOURCE_URI="http://links.twibright.com/download/links-2.3pre2.tar.gz" -CHECKSUM_SHA256="a9c6b8d9e783dc0caaa32f5acf1e3163a5d41b2ba395c93af8587b325b51bac0" -PATCHES="links-2.3pre2.patch" - -ARCHITECTURES="?x86_gcc2 ?x86 ?x86_64" -SECONDARY_ARCHITECTURES="?x86_gcc2 ?x86" - -PROVIDES=" - links$secondaryArchSuffix = $portVersion - cmd:links$secondaryArchSuffix = $portVersion - " -REQUIRES=" - haiku$secondaryArchSuffix - openssl >= 1.0.0 - lib:libjpeg$secondaryArchSuffix - lib:libpng$secondaryArchSuffix -# lib:libtiff$secondaryArchSuffix - lib:libz$secondaryArchSuffix - " - -BUILD_REQUIRES=" - haiku${secondaryArchSuffix}_devel - openssl_devel >= 1.0.0 -# devel:libGL$secondaryArchSuffix - devel:libglu$secondaryArchSuffix - devel:libjpeg$secondaryArchSuffix - devel:libpng$secondaryArchSuffix -# devel:libtiff$secondaryArchSuffix - devel:libz$secondaryArchSuffix >= 1.2.8 - " -BUILD_PREREQUIRES=" - cmd:aclocal - cmd:autoconf - cmd:gcc$secondaryArchSuffix - cmd:ld$secondaryArchSuffix - cmd:libtool - cmd:make - cmd:pkg_config$secondaryArchSuffix - " - -BUILD() -{ - autoconf - runConfigure ./configure \ - --without-x \ - --enable-utf-8 \ - --enable-graphics - rc links-beos.rdef - make - xres -o links links-beos.rsrc - mimeset links -} - -INSTALL() -{ - make install -} diff --git a/www-client/links/links-2.8.recipe b/www-client/links/links-2.8.recipe deleted file mode 100644 index 980834c05..000000000 --- a/www-client/links/links-2.8.recipe +++ /dev/null @@ -1,75 +0,0 @@ -SUMMARY="A graphics and text mode web browser" -DESCRIPTION="Links is a multi-platform web browser you can run in Terminal." -HOMEPAGE="http://links.twibright.com/" -COPYRIGHT="1999-2013 Mikulas Patocka - 2000-2011 Petr Kulhavy, Karel Kulhavy, Martin Pergel" -LICENSE="GNU GPL v2" -REVISION="4" -SOURCE_URI="http://links.twibright.com/download/links-$portVersion.tar.gz" -CHECKSUM_SHA256="5070a759af7f107ca4f9572833b8f086cd9f7c21ef5e1fce8482a2883a743c7a" -PATCHES="links-$portVersion.patch" - -ARCHITECTURES="x86_gcc2 x86 x86_64" - -PROVIDES=" - links = $portVersion - cmd:links = $portVersion - " -REQUIRES=" - haiku - lib:libcrypto - lib:libjpeg - lib:libpng16 - lib:libssl -# lib:libtiff - lib:libz - " - -BUILD_REQUIRES=" - haiku_devel - devel:libcrypto -# devel:libGL - devel:libglu - devel:libjpeg - devel:libpng16 - devel:libssl -# devel:libtiff - devel:libz >= 1.2.8 - " -BUILD_PREREQUIRES=" - cmd:aclocal - cmd:autoconf - cmd:gcc - cmd:ld - cmd:libtool - cmd:make - cmd:pkg_config - " - -BUILD() -{ - STDCPPLIBS=-lstdc++ - if [ "$effectiveTargetArchitecture" = x86_gcc2 ]; then - STDCPPLIBS=-lstdc++.r4 - fi - aclocal - automake --add-missing - autoheader - automake - autoconf - runConfigure ./configure \ - --without-x \ - --enable-graphics - make STDCPPLIBS=$STDCPPLIBS -} - -INSTALL() -{ - make install - addAppDeskbarSymlink $binDir/links Links -} - -TEST() -{ - make check -} diff --git a/www-client/links/patches/links-2.15.patchset b/www-client/links/patches/links-2.15.patchset deleted file mode 100644 index a86c2bc38..000000000 --- a/www-client/links/patches/links-2.15.patchset +++ /dev/null @@ -1,1440 +0,0 @@ -From 44e3ea63ba59013cd233d256a50421963e62bc61 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= -Date: Sat, 31 Mar 2018 20:57:19 +0200 -Subject: [PATCH] Applied patchset - ---- - Makefile.am | 19 +- - acconfig.h | 3 + - beos.c | 2 +- - cfg.h | 4 +- - configure.in | 39 ++- - drivers.c | 6 + - haiku.cpp | 892 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - links-haiku.rdef | 125 ++++++++ - os_dep.c | 37 ++- - os_dep.h | 23 +- - os_depx.h | 7 + - 11 files changed, 1142 insertions(+), 15 deletions(-) - create mode 100644 haiku.cpp - create mode 100644 links-haiku.rdef - -diff --git a/Makefile.am b/Makefile.am -index 9860794..15f1fd5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -4,7 +4,7 @@ - - man_MANS=links.1 - --EXTRA_DIST=$(man_MANS) atheos.cpp BRAILLE_HOWTO KEYS SITES descrip.mms *.opt PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* certs/[!C]* intl/[!C]* suffix/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_extensions-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/japanese-medium-roman-sans-mono/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png pkg-config.m4 *.xpm *.ico *.rc mk-release-os2 mk-release-win mk-dos mk-dos83.cmd links.wis *.nsi -+EXTRA_DIST=$(man_MANS) atheos.cpp haiku.cpp BRAILLE_HOWTO KEYS SITES descrip.mms *.opt PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* certs/[!C]* intl/[!C]* suffix/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_extensions-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/japanese-medium-roman-sans-mono/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png pkg-config.m4 *.xpm *.ico *.rc mk-release-os2 mk-release-win mk-dos mk-dos83.cmd links.wis *.nsi - # parser/gen parser/javascr.l parser/javascript.y - - bin_PROGRAMS=links -@@ -14,6 +14,17 @@ links_LDADD=atheos.o - else - endif - -+if HAIKU_GR -+links_LDADD=haiku.o -lbe $(STDCPPLIBS) -+EXTRA_links_DEPENDENCIES=links-haiku.rsrc -+# automake will not let us touch the binary after link -+# and install will not copy the attributes anyway... so do it after install -+install-exec-hook: -+ xres -o $(DESTDIR)$(bindir)/links$(EXEEXT) links-haiku.rsrc -+ mimeset $(DESTDIR)$(bindir)/links$(EXEEXT) -+else -+endif -+ - links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c dos.c drivers.c error.c file.c finger.c fn_impl.c font_inc.c framebuf.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc - # builtin.c context.c ipret.c javascr.c javascript.c md5.c md5hl.c ns.c pomocny.c regexp.c md5.h ns.h struct.h tree.h typy.h ipret.h javascript.h builtin.h builtin_keys.h - -@@ -30,6 +41,12 @@ CXXFLAGS=@CXXFLAGS@ - atheos.o: $(srcdir)/atheos.cpp - $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $(srcdir)/atheos.cpp - -+haiku.o: haiku.cpp -+ $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -o $@ -c $< -+ -+links-haiku.rsrc: links-haiku.rdef -+ rc -o $@ $< -+ - datadir = $(prefix)/@DATADIRNAME@ - LIBS = @LIBS@ - -diff --git a/acconfig.h b/acconfig.h -index 8abf49c..ddaf8b2 100644 ---- a/acconfig.h -+++ b/acconfig.h -@@ -208,6 +208,9 @@ - /* */ - #undef GRDRV_ATHEOS - -+/* */ -+#undef GRDRV_HAIKU -+ - /* */ - #undef GRDRV_GRX - -diff --git a/beos.c b/beos.c -index dedc9a0..c39d144 100644 ---- a/beos.c -+++ b/beos.c -@@ -3,7 +3,7 @@ - * This file is a part of the Links program, released under GPL - */ - --#if defined(__BEOS__) || defined(__HAIKU__) -+#if defined(__BEOS__) - - #include "com-defs.h" - -diff --git a/cfg.h b/cfg.h -index 6889fff..2b683d4 100644 ---- a/cfg.h -+++ b/cfg.h -@@ -69,9 +69,9 @@ - #define volatile - #endif - --#if defined(HAVE_RESTRICT) -+#if defined(HAVE_RESTRICT) && !defined(__cplusplus) - #define my_restrict restrict --#elif defined(HAVE___RESTRICT) -+#elif defined(HAVE___RESTRICT) && !defined(__cplusplus) - #define my_restrict __restrict - #else - #define my_restrict -diff --git a/configure.in b/configure.in -index fd4c837..bca4ffb 100644 ---- a/configure.in -+++ b/configure.in -@@ -18,7 +18,7 @@ export CFLAGS - export LDFLAGS - export LIBS - --AM_CONFIG_HEADER(config.h) -+AC_CONFIG_HEADER(config.h) - - dnl Checks for programs. - AC_PROG_CC -@@ -551,10 +551,10 @@ fi - - AC_CHECK_FUNC(socket, cf_result=yes, cf_result=no) - if test "$cf_result" = no; then -- AC_CHECK_LIB(socket, socket) -- if test "$ac_cv_lib_socket_socket" = no; then -- AC_CHECK_LIB(network, socket) -- if test "$ac_cv_lib_network_socket" = no; then -+ AC_CHECK_LIB(network, socket) -+ if test "$ac_cv_lib_network_socket" = no; then -+ AC_CHECK_LIB(socket, socket) -+ if test "$ac_cv_lib_socket_socket" = no; then - AC_CHECK_LIB(watt, socket) - if test "$ac_cv_lib_watt_socket" = no; then - AC_ERROR([socket function not present]) -@@ -714,6 +714,7 @@ if test "$ac_cv_have_beginthread" = yes; then - AC_DEFINE(HAVE_BEGINTHREAD) - fi - AC_CHECK_HEADERS(atheos/threads.h) -+AC_CHECK_HEADERS(kernel/OS.h) - AC_HAVE_FUNCS(spawn_thread resume_thread) - - AC_HAVE_FUNCS(MouOpen _read_kbd) -@@ -906,6 +907,7 @@ fi - - - cf_have_atheos=no -+cf_have_haiku=no - - if test "$cf_use_graphics" != no; then - AC_DEFINE(G) -@@ -955,6 +957,7 @@ dnl AC_ARG_WITH(sdl, [ --without-sdl compile without SDL graphics dri - AC_ARG_WITH(pmshell, [ --without-pmshell compile without PMShell graphics driver],[if test "$withval" = no; then disable_pmshell=yes; else disable_pmshell=no; fi]) - AC_ARG_WITH(windows, [ --without-windows compile without Windows graphics driver],[if test "$withval" = no; then disable_windows=yes; else disable_windows=no; fi]) - AC_ARG_WITH(atheos, [ --without-atheos compile without Atheos graphics driver],[if test "$withval" = no; then disable_atheos=yes; else disable_atheos; fi]) -+AC_ARG_WITH(haiku, [ --without-haiku compile without Haiku/BeOS graphics driver],[if test "$withval" = no; then disable_haiku=yes; else disable_haiku=no; fi]) - AC_ARG_WITH(grx, [ --without-grx compile without DOS GRX graphics driver],[if test "$withval" = no; then disable_grx=yes; else disable_grx; fi]) - - drivers="" -@@ -1180,6 +1183,31 @@ if test "$disable_atheos" != yes; then - fi - fi - -+if test "$disable_haiku" != yes ; then -+ old_ext="$ac_ext" -+ ac_ext=cpp -+ AC_CHECK_HEADERS(interface/View.h) -+ AC_CHECK_HEADERS(interface/Window.h) -+ AC_CHECK_HEADERS(interface/Screen.h) -+ AC_CHECK_HEADERS(interface/Bitmap.h) -+ AC_CHECK_HEADERS(support/Locker.h) -+ AC_CHECK_HEADERS(app/Application.h) -+ ac_ext="$old_ext" -+ -+ if test "$ac_cv_header_kernel_OS_h" = yes && -+ test "$ac_cv_header_interface_View_h" = yes && -+ test "$ac_cv_header_interface_Window_h" = yes && -+ test "$ac_cv_header_interface_Screen_h" = yes && -+ test "$ac_cv_header_interface_Bitmap_h" = yes && -+ test "$ac_cv_header_support_Locker_h" = yes && -+ test "$ac_cv_header_app_Application_h" = yes; then -+ AC_PROG_CXX -+ AC_DEFINE(GRDRV_HAIKU) -+ drivers="$drivers HAIKU" -+ cf_have_haiku=yes -+ fi -+fi -+ - if test "$disable_grx" != yes -a "$ac_cv_have_djgpp" = yes; then - LIBS_X="$LIBS" - AC_CHECK_HEADERS(grx20.h) -@@ -1308,6 +1336,7 @@ fi - - - AM_CONDITIONAL(ATHEOS_GR, test "$cf_have_atheos" = yes) -+AM_CONDITIONAL(HAIKU_GR, test "$cf_have_haiku" = yes) - - test "$ac_cv_have_emx" = yes && LDFLAGS="$LDFLAGS -Zexe" - -diff --git a/drivers.c b/drivers.c -index 8141bd3..c897490 100644 ---- a/drivers.c -+++ b/drivers.c -@@ -31,6 +31,9 @@ extern struct graphics_driver pmshell_driver; - #ifdef GRDRV_ATHEOS - extern struct graphics_driver atheos_driver; - #endif -+#ifdef GRDRV_HAIKU -+extern struct graphics_driver haiku_driver; -+#endif - #ifdef GRDRV_GRX - extern struct graphics_driver grx_driver; - #endif -@@ -51,6 +54,9 @@ static struct graphics_driver *graphics_drivers[] = { - #ifdef GRDRV_ATHEOS - &atheos_driver, - #endif -+#ifdef GRDRV_HAIKU -+ &haiku_driver, -+#endif - #ifndef SPAD - #ifdef GRDRV_X - &x_driver, -diff --git a/haiku.cpp b/haiku.cpp -new file mode 100644 -index 0000000..744797f ---- /dev/null -+++ b/haiku.cpp -@@ -0,0 +1,892 @@ -+/* haiku.cpp -+ * (c) 2007 François Revol -+ * This file is a part of the Links program, released under GPL -+ */ -+ -+#if defined __BEOS__ || defined __HAIKU__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* -+ * GUI code -+ */ -+ -+/* -+ * TODO: -+ * - BeOS doesn't handle BView::DrawBitmap() with RGB24, and links doesn't seem to handle RGB32, -+ * so the colorspace is forced into 16bpp for now. -+ * - more paste handling ? -+ * - more DnD (maybe check if in menu or not and prepend "g" ?) -+ * - handle DnD of Net+ bookmarks -+ */ -+ -+#include "cfg.h" -+ -+#ifdef GRDRV_HAIKU -+ -+extern "C" { -+#include "links.h" -+} -+#undef B_ENTER -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+//#define DBG(l...) fprintf(stderr, l); -+#define DBG(l...) {} -+ -+/* -+#ifdef debug -+#undef debug -+#endif -+#define debug(x) -+#define fprintf(x, y) -+*/ -+ -+extern "C" struct graphics_driver haiku_driver; -+ -+class LinksApplication : public BApplication { -+ public: -+ LinksApplication():BApplication("application/x-vnd.links"){} -+ virtual void RefsReceived(BMessage *message); -+ virtual bool QuitRequested(); -+}; -+ -+class LinksView; -+ -+class LinksWindow : public BWindow { -+ public: -+ LinksWindow(BRect r); -+ ~LinksWindow(); -+ virtual void FrameResized(float width, float height); -+ virtual bool QuitRequested(); -+ int resized; -+ LinksView *view; -+}; -+ -+class LinksView : public BView { -+ public: -+ LinksView(LinksWindow *w); -+ ~LinksView(); -+ virtual void Draw(BRect r); -+ virtual void MouseDown(BPoint p); -+ virtual void MouseUp(BPoint p); -+ virtual void MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg); -+ virtual void KeyDown(const char *s, int32 numBytes); -+ virtual void MessageReceived(BMessage *msg); -+ LinksWindow *win; -+ struct graphics_device *dev; -+ void d_flush(); -+ int flushing; -+ int last_x, last_y; -+}; -+ -+#define lv(dev) ((LinksView *)(dev)->driver_data) -+ -+#define lock_dev(dev) do { if (!lv(dev)->win->Lock()) return; } while (0) -+#define lock_dev0(dev) do { if (!lv(dev)->win->Lock()) return 0; } while (0) -+#define unlock_dev(dev) do { lv(dev)->win->Unlock(); } while (0) -+ -+void be_get_size(struct graphics_device *dev); -+ -+#define detach_message(dev) \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ } -+ -+#define pipe_message(dev) \ -+ if (current) { \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } -+ -+#define detach_and_pipe_message(dev) do { \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } \ -+} while (0) -+ -+LinksApplication *be_links_app; -+BLocker *be_lock = NULL; -+ -+int msg_pipe[2]; -+ -+thread_id be_app_thread_id; -+ -+#define rpipe (msg_pipe[0]) -+#define wpipe (msg_pipe[1]) -+ -+#define small_color (sizeof(rgb_color) <= sizeof(long)) -+#define get_color32(c, rgb) rgb_color c((rgb_color){(rgb >> 16) & 255, (rgb >> 8) & 255, rgb & 255, 255}) -+ -+color_space be_cs_desktop, be_cs_bmp; -+ -+int be_x_size, be_y_size; -+ -+int be_win_x_size, be_win_y_size; -+int be_win_x_pos, be_win_y_pos; -+ -+static BMessage *initial_refs_msg; -+ -+void LinksApplication::RefsReceived(BMessage *message) -+{ -+ entry_ref ref; -+ //if (!IsLaunching()) -+ // return; -+ BMessenger msgr(WindowAt(0)); -+ BMessage *m = new BMessage(*message); -+ m->AddSpecifier("View", (int32)0); -+ //m->what = B_SIMPLE_DATA; -+ if (msgr.IsValid()) { -+ msgr.SendMessage(m); -+ } else -+ initial_refs_msg = m; -+} -+ -+bool LinksApplication::QuitRequested() -+{ -+ BApplication::QuitRequested(); -+ //printf("qc: %ld\n", CountWindows()); -+ return true; -+} -+ -+LinksWindow::LinksWindow(BRect r):BWindow(r, "Links", B_DOCUMENT_WINDOW, 0) -+{ -+ DBG("LINKSWINDOW\n"); -+ resized = 0; -+ view = NULL; -+} -+ -+LinksWindow::~LinksWindow() -+{ -+ view = NULL; -+ DBG("~LINKSWINDOW\n"); -+} -+ -+void LinksWindow::FrameResized(float width, float height) -+{ -+ resized = 1; -+} -+ -+bool LinksWindow::QuitRequested() -+{ -+ detach_and_pipe_message(view->dev); -+ return false; -+} -+ -+void do_flush(void *p_dev) -+{ -+ struct graphics_device *dev = (struct graphics_device *)p_dev; -+ LinksView *v = lv(dev); -+ v->win->Lock(); -+ v->win->Flush(); -+ v->win->Unlock(); -+ v->flushing = 0; -+} -+ -+LinksView::LinksView(LinksWindow *w):BView(w->Bounds(), "Links", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_NAVIGABLE) -+{ -+ DBG("LINKSVIEW\n"); -+ (win = w)->AddChild(this); -+ SetViewColor(B_TRANSPARENT_32_BIT); -+ MakeFocus(); -+ w->view = this; -+ flushing = 0; -+ last_x = last_y = 0; -+} -+ -+LinksView::~LinksView() -+{ -+ win->view = NULL; -+ DBG("~LINKSVIEW\n"); -+} -+ -+void LinksView::d_flush() -+{ -+ if (flushing) return; -+ register_bottom_half(do_flush, this->dev); -+ flushing = 1; -+} -+ -+#undef select -+ -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t) -+{ -+ int v; -+ v = select(n, r, w, e, t); -+ check_bottom_halves(); -+ return v; -+} -+ -+void be_paste_string(struct graphics_device *dev, const char *str) -+{ -+ unsigned char *s = (unsigned char *)str; -+ int c, i; -+ while (s && *s) { -+ GET_UTF_8(s, c); -+ if (dev) dev->keyboard_handler(dev, c, 0); -+ } -+} -+ -+void be_get_event(void *dummy) -+{ -+ BMessage *msg; -+ LinksView *view = NULL; -+ LinksWindow *win = NULL; -+ struct graphics_device *dev; -+ read(rpipe, &msg, sizeof(msg)); -+ DBG("GETE\n"); -+ if (!msg) -+ return; -+ if (msg->FindPointer("linksdev", (void **)&dev) < B_OK) -+ return; -+ if (dev) { -+ view = lv(dev); -+ if (view) -+ win = dynamic_cast(view->Window()); -+ } -+ switch (msg->what) { -+ case B_QUIT_REQUESTED: -+ if (dev) -+ dev->keyboard_handler(dev, KBD_CTRL_C, 0); -+ break; -+ case _UPDATE_: -+ { -+ BRect r; -+ if (msg->FindRect("updateRect", &r) < B_OK) -+ return; -+ struct rect rr; -+ rr.x1 = (int)r.left; -+ rr.x2 = (int)r.right + 1; -+ rr.y1 = (int)r.top; -+ rr.y2 = (int)r.bottom + 1; -+ /*DBG("paint: %d %d %d %d\n", rr.x1, rr.x2, rr.y1, rr.y2);*/ -+ if (dev) { -+ if (!win->resized) dev->redraw_handler(dev, &rr); -+ else { -+ be_get_size(dev); -+ win->resized = 0; -+ dev->resize_handler(dev); -+ } -+ } -+ check_bottom_halves(); -+ } -+ break; -+ case B_MOUSE_DOWN: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = B_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = B_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = B_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = B_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = B_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = B_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = B_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, B_DOWN | btn); -+ } -+ break; -+ case B_MOUSE_UP: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = B_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & ~B_PRIMARY_MOUSE_BUTTON == 0) -+ btn = B_LEFT; -+ else if (buttons & ~B_SECONDARY_MOUSE_BUTTON == 0) -+ btn = B_RIGHT; -+ else if (buttons & ~B_TERTIARY_MOUSE_BUTTON == 0) -+ btn = B_MIDDLE; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 1) == 0) -+ btn = B_FOURTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 2) == 0) -+ btn = B_FIFTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 3) == 0) -+ btn = B_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, B_UP | btn); -+ } -+ break; -+ case B_MOUSE_MOVED: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = B_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = B_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = B_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = B_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = B_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = B_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = B_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, !buttons ? B_MOVE : B_DRAG | btn); -+ } -+ break; -+ case B_KEY_DOWN: -+ { -+ int32 modifiers; -+ int32 numBytes; -+ const char *bytes; -+ int c; -+ int mods = 0; -+ if (msg->FindInt32("modifiers", &modifiers) != B_OK) -+ return; -+ if (msg->FindString("bytes", &bytes) != B_OK) -+ return; -+ unsigned char buf[4] = { 0, 0, 0, 0 }; -+ unsigned char *ss; -+ if (modifiers & (B_LEFT_CONTROL_KEY | B_RIGHT_CONTROL_KEY | B_LEFT_COMMAND_KEY | B_RIGHT_COMMAND_KEY)) { -+ int32 raw; -+ if (msg->FindInt32("raw_char", &raw) != B_OK) -+ return; -+ buf[0] = (unsigned char)raw; -+ ss = buf; -+ } else -+ ss = (unsigned char *)bytes; -+ -+ GET_UTF_8(ss, c); -+ switch (c) { -+ case B_BACKSPACE: c = KBD_BS; break; -+ case B_ENTER: c = KBD_ENTER; break; -+ case B_SPACE: c = ' '; break; -+ case B_TAB: c = KBD_TAB; break; -+ case B_ESCAPE: c = KBD_ESC; break; -+ case B_LEFT_ARROW: c = KBD_LEFT; break; -+ case B_RIGHT_ARROW: c = KBD_RIGHT; break; -+ case B_UP_ARROW: c = KBD_UP; break; -+ case B_DOWN_ARROW: c = KBD_DOWN; break; -+ case B_INSERT: c = KBD_INS; break; -+ case B_DELETE: c = KBD_DEL; break; -+ case B_HOME: c = KBD_HOME; break; -+ case B_END: c = KBD_END; break; -+ case B_PAGE_UP: c = KBD_PAGE_UP; break; -+ case B_PAGE_DOWN: c = KBD_PAGE_DOWN; break; -+ default: if (c < 32) c = 0; -+ else modifiers &= ~(B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY); -+ break; -+ } -+ if (modifiers & (B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY)) -+ mods |= KBD_SHIFT; -+ if (modifiers & (B_LEFT_CONTROL_KEY|B_RIGHT_CONTROL_KEY)) -+ mods |= KBD_CTRL; -+ if (modifiers & (B_LEFT_COMMAND_KEY|B_RIGHT_COMMAND_KEY)) -+ mods |= KBD_ALT; -+ if (c) if (dev) dev->keyboard_handler(dev, c, mods); -+ } -+ break; -+ case B_MOUSE_WHEEL_CHANGED: -+ { -+ float delta_x, delta_y; -+ if (msg->FindFloat("be:wheel_delta_x", &delta_x) != B_OK) -+ delta_x = 0; -+ if (msg->FindFloat("be:wheel_delta_y", &delta_y) != B_OK) -+ delta_y = 0; -+ if (delta_y) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, B_MOVE | (delta_y > 0 ? B_WHEELDOWN : B_WHEELUP)); -+ if (delta_x) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, B_MOVE | (delta_x < 0 ? B_WHEELLEFT : B_WHEELRIGHT)); -+ } -+ break; -+ case B_PASTE: -+ if (be_clipboard->Lock()) { -+ BMessage *data = be_clipboard->Data(); -+ if (data) { -+ const char *text_plain; -+ ssize_t len; -+ //data->PrintToStream(); -+ if (data->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ be_clipboard->Unlock(); -+ } -+ break; -+ case B_REFS_RECEIVED: -+ if (dev) -+ be_paste_string(dev, "\033\ng"); -+ /* FALLTHROUGH */ -+ case B_SIMPLE_DATA: -+ { -+ /* something got dropped */ -+ entry_ref ref; -+ const char *text_plain; -+ ssize_t len; -+ //msg->PrintToStream(); -+ /* try find a file path to paste */ -+ if (msg->FindRef("refs", &ref) == B_OK) { -+ BPath path(&ref); -+ if (path.InitCheck() == B_OK) { -+ BFile f(path.Path(), B_READ_ONLY); -+ BString url; -+ if (f.InitCheck() == B_OK && f.ReadAttrString("META:url", &url) >= B_OK) { -+ be_paste_string(dev, url.String()); -+ } else -+ be_paste_string(dev, path.Path()); -+ } -+ } else if (msg->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ break; -+ default: -+ msg->PrintToStream(); -+ break; -+ } -+ delete msg; -+} -+ -+void be_get_size(struct graphics_device *dev) -+{ -+ BRect r; -+ lock_dev(dev); -+ r = lv(dev)->Bounds(); -+ unlock_dev(dev); -+ dev->size.x1 = dev->size.y1 = 0; -+ dev->size.x2 = (int)r.Width() + 1; -+ dev->size.y2 = (int)r.Height() + 1; -+} -+ -+void LinksView::Draw(BRect r) -+{ -+ detach_message(dev); -+ current->AddRect("updateRect", r); -+ pipe_message(dev); -+} -+ -+ -+void LinksView::MouseDown(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseUp(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MessageReceived(BMessage *msg) -+{ -+ switch (msg->what) { -+ case B_REFS_RECEIVED: -+ case B_MOUSE_WHEEL_CHANGED: -+ case B_PASTE: -+ case B_SIMPLE_DATA: -+ detach_and_pipe_message(dev); -+ break; -+ default: -+ BView::MessageReceived(msg); -+ } -+} -+ -+void LinksView::KeyDown(const char *s, int32 numBytes) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+unsigned char *be_get_driver_param(void) -+{ -+ return NULL; -+} -+ -+int32 be_app_thread(void *p) -+{ -+ be_links_app->Lock(); -+ be_links_app->Run(); -+ delete be_links_app; -+ return 0; -+} -+ -+unsigned char *be_init_driver(unsigned char *param, unsigned char *display) -+{ -+ be_links_app = new LinksApplication(); -+ if (!be_links_app) { -+ return stracpy((unsigned char *)"Unable to allocate Application object.\n"); -+ } -+ if (c_pipe(msg_pipe)) { -+ delete be_links_app; -+ return stracpy((unsigned char *)"Could not create pipe.\n"); -+ } -+ fcntl(rpipe, F_SETFL, O_NONBLOCK); -+ fcntl(wpipe, F_SETFL, O_NONBLOCK); -+ set_handlers(rpipe, be_get_event, NULL, NULL); -+ be_app_thread_id = spawn_thread(be_app_thread, "links_app", B_NORMAL_PRIORITY, NULL); -+ resume_thread(be_app_thread_id); -+ be_links_app->Unlock(); -+ be_cs_desktop = B_NO_COLOR_SPACE; -+ be_x_size = 640; -+ be_y_size = 480; -+ BScreen d; -+ if (d.IsValid()) { -+ be_cs_desktop = d.ColorSpace(); -+ be_x_size = (int)d.Frame().Width() + 1; -+ be_y_size = (int)d.Frame().Height() + 1; -+ } -+ be_win_y_size = be_y_size * 9 / 10; -+ be_win_x_size = be_win_y_size; -+ /* -+ DBG("%d %d\n", be_x_size, be_y_size); -+ DBG("%d %d\n", be_win_x_size, be_win_y_size); -+ */ -+ be_win_y_pos = (be_y_size - be_win_y_size) / 2; -+ be_win_x_pos = be_x_size - be_win_x_size - be_win_y_pos; -+ if (/*be_cs_desktop == B_RGB32 ||*/ be_cs_desktop == B_RGB24 || be_cs_desktop == B_RGB16 || be_cs_desktop == B_RGB15) -+ be_cs_bmp = be_cs_desktop; -+ else if (be_cs_desktop == B_RGB32 || be_cs_desktop == B_RGBA32) be_cs_bmp = B_RGB24; -+ else be_cs_bmp = B_RGB15; -+ be_cs_bmp = B_RGB16; // XXX: DEBUG -+ switch (be_cs_bmp) { -+ case B_RGB24: -+ haiku_driver.depth = 0xc3; -+ break; -+ case B_RGB16: -+ haiku_driver.depth = 0x82; -+ break; -+ case B_RGB15: -+ haiku_driver.depth = 0x7a; -+ break; -+ default: -+ internal("unknown depth"); -+ } -+ return NULL; -+} -+ -+void be_shutdown_driver() -+{ -+ status_t ret; -+ //debug((unsigned char *)"D"); -+ close(rpipe); -+ close(wpipe); -+ set_handlers(rpipe, NULL, NULL, NULL); -+ //debug((unsigned char *)"DD"); -+ be_links_app->PostMessage(B_QUIT_REQUESTED); -+ //debug((unsigned char *)"E"); -+ wait_for_thread(be_app_thread_id, &ret); -+ //debug((unsigned char *)"F"); -+} -+ -+struct graphics_device *be_init_device() -+{ -+ LinksView *view; -+ LinksWindow *win; -+ struct graphics_device *dev = (struct graphics_device *)mem_calloc(sizeof(struct graphics_device)); -+ if (!dev) return NULL; -+ //dev->drv = &haiku_driver; -+ //debug((unsigned char *)"1"); -+ win = new LinksWindow(BRect(be_win_x_pos, be_win_y_pos, be_win_x_pos + be_win_x_size, be_win_y_pos + be_win_y_size)); -+ //debug((unsigned char *)"2"); -+ if (!win) { -+ mem_free(dev); -+ return NULL; -+ } -+ //debug((unsigned char *)"3"); -+ view = new LinksView(win); -+ if (!view) { -+ delete win; -+ mem_free(dev); -+ return NULL; -+ } -+ view->dev = dev; -+ dev->driver_data = view; -+ be_get_size(dev); -+ memcpy(&dev->clip, &dev->size, sizeof(struct rect)); -+ //debug((unsigned char *)"4"); -+ win->Show(); -+ win->Lock(); -+ view->MakeFocus(); -+ win->Unlock(); -+ //debug((unsigned char *)"5"); -+ if (initial_refs_msg) { -+ BMessenger msgr(win); -+ if (msgr.IsValid()) { -+ msgr.SendMessage(initial_refs_msg); -+ initial_refs_msg = NULL; -+ } -+ } -+ return dev; -+} -+ -+void be_shutdown_device(struct graphics_device *dev) -+{ -+ LinksWindow *win = lv(dev)->win; -+ unregister_bottom_half(do_flush, dev); -+ lv(dev)->dev = NULL; -+ win->PostMessage(B_QUIT_REQUESTED); -+ mem_free(dev); -+} -+ -+void be_set_title(struct graphics_device *dev, unsigned char *title) -+{ -+ LinksWindow *win = lv(dev)->win; -+ lock_dev(dev); -+ win->SetTitle((const char *)title); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+/* -+int be_get_filled_bitmap(struct bitmap *bmp, long color) -+{ -+ internal((unsigned char *)"nedopsano"); -+ return 0; -+} -+*/ -+ -+int be_get_empty_bitmap(struct bitmap *bmp) -+{ -+ DBG("bmp\n"); -+//DBG("bmp (%d, %d) cs %08x\n", bmp->x, bmp->y, be_cs_bmp); -+ BRect r(0, 0, bmp->x - 1, bmp->y - 1); -+ BBitmap *b = new BBitmap(r, /*B_RGB32*/be_cs_bmp); -+ if (!b) { -+ bmp->data = NULL; -+DBG("%s: error 1\n", __FUNCTION__); -+ return 0; -+ } -+ if (!b->IsValid()) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 2\n", __FUNCTION__); -+ return 0; -+ } -+ if (b->LockBits() < B_OK) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 3\n", __FUNCTION__); -+ return 0; -+ } -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ bmp->flags = b; -+//DBG("bmp: data %p, skip %d, flags %p\n", bmp->data, bmp->skip, bmp->flags); -+ return 0; -+} -+ -+void be_register_bitmap(struct bitmap *bmp) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void *be_prepare_strip(struct bitmap *bmp, int top, int lines) -+{ -+ DBG("preps\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ if (b->LockBits() < B_OK) -+ return NULL; -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ return ((char *)bmp->data) + bmp->skip * top; -+} -+ -+void be_commit_strip(struct bitmap *bmp, int top, int lines) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void be_unregister_bitmap(struct bitmap *bmp) -+{ -+ DBG("unb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ delete b; -+} -+ -+void be_draw_bitmap(struct graphics_device *dev, struct bitmap *bmp, int x, int y) -+{ -+ DBG("drawb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ lock_dev(dev); -+ lv(dev)->DrawBitmap(b, b->Bounds(), BRect(x, y, x + bmp->x - 1, y + bmp->y - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+/* -+void be_draw_bitmaps(struct graphics_device *dev, struct bitmap **bmp, int n, int x, int y) -+{ -+ LinksView *lvv = lv(dev); -+ lock_dev(dev); -+ while (n--) { -+ BBitmap *b = (BBitmap *)(*bmp)->flags; -+ lvv->DrawBitmap(b, b->Bounds(), BRect(x, y, x + (*bmp)->x, y + (*bmp)->y)); -+ x += (*bmp)->x; -+ bmp++; -+ } -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+*/ -+ -+long be_get_color(int rgb) -+{ -+ if (small_color) { -+ get_color32(c, rgb); -+ return *(long *)(void *)&c; -+ } else return rgb & 0xffffff; -+} -+ -+void be_fill_area(struct graphics_device *dev, int x1, int y1, int x2, int y2, long color) -+{ -+ DBG("fill\n"); -+ if (x1 >= x2 || y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->FillRect(BRect(x1, y1, x2 - 1, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_hline(struct graphics_device *dev, int x1, int y, int x2, long color) -+{ -+ DBG("hline\n"); -+ if (x1 >= x2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x1, y), BPoint(x2 - 1, y)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_vline(struct graphics_device *dev, int x, int y1, int y2, long color) -+{ -+ DBG("vline\n"); -+ if (y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x, y1), BPoint(x, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+int be_hscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("hscroll\n"); -+ if (dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.x1 - dev->clip.x2) return 1; -+ if (sc >= dev->clip.x2 - dev->clip.x1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - sc - 1, dev->clip.y2 - 1), BRect(dev->clip.x1 + sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1 - sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 + sc - 1, dev->clip.y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+int be_vscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("vscroll\n"); -+ if (!sc || dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.y1 - dev->clip.y2) return 1; -+ if (sc >= dev->clip.y2 - dev->clip.y1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - sc - 1), BRect(dev->clip.x1, dev->clip.y1 + sc, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1 - sc, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 + sc - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+void be_set_clip_area(struct graphics_device *dev, struct rect *r) -+{ -+ DBG("setc\n"); -+ memcpy(&dev->clip, r, sizeof(struct rect)); -+ lock_dev(dev); -+ BRegion clip(BRect(r->x1, r->y1, r->x2 - 1, r->y2 - 1)); -+ lv(dev)->ConstrainClippingRegion(&clip); -+ unlock_dev(dev); -+} -+ -+struct graphics_driver haiku_driver = { -+ (unsigned char *)"haiku", -+ be_init_driver, -+ be_init_device, -+ be_shutdown_device, -+ be_shutdown_driver, -+ NULL, -+ NULL, -+ be_get_driver_param, -+ NULL, -+ NULL, -+ NULL, -+ be_get_empty_bitmap, -+ be_register_bitmap, -+ be_prepare_strip, -+ be_commit_strip, -+ be_unregister_bitmap, -+ be_draw_bitmap, -+ be_get_color, -+ be_fill_area, -+ be_draw_hline, -+ be_draw_vline, -+ be_hscroll, -+ be_vscroll, -+ be_set_clip_area, -+ dummy_block, -+ dummy_unblock, -+ be_set_title, -+ NULL, /* exec */ -+ NULL, /* set_clipboard_text */ -+ NULL, /* get_clipboard_text */ -+ 0, /* depth */ -+ 0, 0, /* size */ -+ 0, /* flags */ -+ 0, /* codepage */ -+ NULL, /* shell */ -+}; -+ -+#endif /* GRDRV_HAIKU */ -+ -+#endif -diff --git a/links-haiku.rdef b/links-haiku.rdef -new file mode 100644 -index 0000000..b18b11c ---- /dev/null -+++ b/links-haiku.rdef -@@ -0,0 +1,125 @@ -+/* -+** links-haiku.rdef -+** -+** Automatically generated by BResourceParser on -+** Thursday, December 13, 2007 at 23:46:45. -+** -+*/ -+ -+resource(1, "BEOS:APP_FLAGS") (#'APPF') $"01000000"; -+ -+resource(1, "BEOS:APP_VERSION") #'APPV' array { -+ $"02000000010000000000000000000000210000006C696E6B7320322E31707265" -+ $"3333000000000000000000000000000000000000000000000000000000000000" -+ $"00000000000000000000000000000000000000004C696E6B732062726F777365" -+ $"7220322E31707265333300000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000" -+}; -+ -+resource(101, "BEOS:L:STD_ICON") #'ICON' array { -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2B2B2B2B2B2B2B2B2B2B2B2C0000363434343434343434343434343434" -+ $"2A2A2A3200000000000000000000000000363434343434343434343434343434" -+ $"2A2A2A2FF1313200000000000131310000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A30000000002B2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2C2C2C2C2C2C2C30000000002C2C2D0000373636363636363636363636363636" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"2222222222222226000000002222230000151A1A1A1A1A1A1A1A1A1A1A1A1A1A" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F1501113F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0E00133F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0500163F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F1A0000193F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F0C00001B3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F190000001E3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F1A030000013F3F3F3F3F" -+ $"20202020202020270000000023202200001A3F1E170C00000000043F3F3F3F3F" -+ $"2020202628292900000000000029290000040300000000000000063F3F3F3F3F" -+ $"20202027292929292929292929292900000203030303030303030B3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+}; -+ -+resource(101, "BEOS:M:STD_ICON") #'MICN' array { -+ $"2A2A2A2A2A2A2A303A34343434343434" -+ $"2A2C3030303030F73A34343434343434" -+ $"2A2B2D300000EB323A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"303030310000F1333D3A3A3A3A3A3A3A" -+ $"2626262700002629050D0D0D0D0D0D0D" -+ $"20202022000020260D3F3F3F1D143F3F" -+ $"20202022000020260D3F3F3F140A3F3F" -+ $"20202022000020260D3F3F3F090D3F3F" -+ $"20202022000020260D3F3F16000F3F3F" -+ $"20222427000026280710090000123F3F" -+ $"202225252525252807111111111A3F3F" -+ $"20202020202020260D3F3F3F3F3F3F3F" -+}; -+ -+resource(101, "BEOS:ICON") #'VICN' array { -+ $"6E6369661305000200060237E670B8880E39469D39AE144A52234B0D2500C6D7" -+ $"F5FF6B94DD03EC6666020006023B2B47BB18653D0FA53D225148297046CA1900" -+ $"00FF00FFA9FF00020016023B2B47BB18653D0FA53D225148297046CA1900FFFF" -+ $"8A020006023B3049396B0ABA90833C646E4A101543299500FFFFFFFF52FF5202" -+ $"0016023B3049396B0ABA90833C646E4A101543299500FFFFC9020006023C71E3" -+ $"3A0C78BA15E43C7D2149055549455700E3EDFFFF9EC2FF020006023CD8653068" -+ $"26B065D13CD5A34A6E4A46E21900FFDCDCFFDA5858020006023A1DA6393F04BB" -+ $"B5BC3C6B074AEA364809110087CA05FF026802020016023C00913B1266BB9E06" -+ $"3C5B934A01F04914EC00FFFF4E03003CB00200060230B31E3A09B9BB024238A1" -+ $"2F4BAB534AFF0B00A3043CFFFFDCE603CD4D4D030D296402000602BD498B3E11" -+ $"59BF219BBE7D2F4BE71F4AB31300C13E3EFFE27A7A040174020016023F2938BB" -+ $"F60A3BA9823EEC25C40E6348C15D0099FF00020016023E8FA33A7B71BA9D783E" -+ $"B2C049F7BAC28CE500C8FF00130A06322E323E42464C3C4C2C3D260A04322E32" -+ $"3E424642350A04322E42354C2C3D260A04423542464C3C4C2C0A0338423C4D3C" -+ $"440A08335C395C41544F5C555C6051594D3E510A0422422252325A32490A0422" -+ $"4232493C402D3A0A043249325A3C503C400A043E424E495840493A0A043E524E" -+ $"5A4E493E420A1243C97243C375BF66C2A93F503C5133C4F03330342F3830382D" -+ $"2927292A2C2C2D2E2DC2F2B7B1C3BEB5E1C358B5E1C4AA0A042C252927382D3B" -+ $"2B0A04364B334D3E5241500A0442463F48434A46480A042A4727492B4B2E490A" -+ $"04382D38303B2E3B2B0A04434A4358465646480A04332F334D364B362D160A10" -+ $"01052020230A1001052022120A00010030103701178400040A0101012010370A" -+ $"0B01032010370A0E0104201D250A0101072020230A00010030101C0117840004" -+ $"0A02010A2004080A0C010320101C0A0801092004080A00010030283901178400" -+ $"040A0401012028390A0601022028390A0A01032028390A000100302A20011784" -+ $"00040A030101202A200A050102202A200A090103202A200A12040C0D0E0F000A" -+ $"0003101211000A11010B00" -+}; -+ -+resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.links"; -+ -+resource(1, "BEOS:FILE_TYPES") message { -+ "types" = "text/html", -+ "types" = "application/x-vnd.Be-bookmark", -+ "types" = "application/x-vnd.Be.URL.http" -+}; -diff --git a/os_dep.c b/os_dep.c -index ada4e33..946b009 100644 ---- a/os_dep.c -+++ b/os_dep.c -@@ -486,7 +486,7 @@ static void terminal_resize_poll(void) - - #endif - --#if defined(UNIX) || defined(WIN) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) -+#if defined(UNIX) || defined(WIN) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) || defined(HAIKU) - - #ifdef SIGWINCH - static void sigwinch(void *s) -@@ -903,7 +903,7 @@ int is_xterm(void) - return xt; - } - --#elif defined(BEOS) || defined(ATHEOS) || defined(DOS) -+#elif defined(BEOS) || defined(ATHEOS) || defined(DOS) || defined(HAIKU) - - int is_xterm(void) - { -@@ -1070,6 +1070,12 @@ void init_os_terminal(void) - fatal_exit("Links doesn't work in detached session"); - } - #endif -+#ifdef HAIKU -+ if (getenv("TERM") == NULL) { -+ /* probably launched from Tracker or Deskbar, force graphics mode */ -+ force_g = 1; -+ } -+#endif - } - - #ifdef INTERIX -@@ -1271,7 +1277,7 @@ unsigned char *os_fixup_external_program(unsigned char *prog) - #endif - - --#if defined(UNIX) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) || defined(DOS) -+#if defined(UNIX) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) || defined(DOS) || defined(HAIKU) - - #if defined(BEOS) && defined(HAVE_SETPGID) - -@@ -2038,7 +2044,7 @@ static uint32 bgat(void *t) - - #endif - --#if defined(UNIX) || defined(OS2) || defined(WIN) || defined(INTERIX) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) -+#if defined(UNIX) || defined(OS2) || defined(WIN) || defined(INTERIX) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(HAIKU) - - void terminate_osdep(void) - { -@@ -2055,7 +2061,7 @@ void unblock_stdin(void) {} - - #if defined(BEOS) - --#include -+#include - - static int thr_sem_init = 0; - static sem_id thr_sem; -@@ -2832,6 +2838,13 @@ int get_system_env(void) - return 0; - } - -+#elif defined(HAIKU) -+ -+int get_system_env(void) -+{ -+ return ENV_BE; -+} -+ - #elif defined(WIN) - - int get_system_env(void) -@@ -2954,6 +2967,14 @@ static int open_in_new_be(struct terminal *term, unsigned char *exe, unsigned ch - } - #endif - -+#ifdef HAIKU -+static int open_in_new_haiku(struct terminal *term, unsigned char *exe, unsigned char *param) -+{ -+ exec_new_links(term, cast_uchar "Terminal", exe, param); -+ return 0; -+} -+#endif -+ - #ifdef G - static int open_in_new_g(struct terminal *term, unsigned char *exe, unsigned char *param) - { -@@ -3002,6 +3023,9 @@ static struct { - #ifdef BEOS - {ENV_BE, open_in_new_be, TEXT_(T_BEOS_TERMINAL), TEXT_(T_HK_BEOS_TERMINAL)}, - #endif -+#ifdef HAIKU -+ {ENV_BE, open_in_new_haiku, TEXT_(T_BEOS_TERMINAL), TEXT_(T_HK_BEOS_TERMINAL)}, -+#endif - #ifdef G - {ENV_G, open_in_new_g, TEXT_(T_WINDOW), TEXT_(T_HK_WINDOW)}, - #endif -@@ -3050,6 +3074,9 @@ int can_open_os_shell(int environment) - #ifdef BEOS - if (!(environment & ENV_BE)) return 0; - #endif -+#ifdef HAIKU -+ if (!(environment & ENV_BE)) return 0; -+#endif - #ifdef G - if (F && drv->flags & GD_NO_OS_SHELL) return 0; - #endif -diff --git a/os_dep.h b/os_dep.h -index ffc0e13..6d46b6c 100644 ---- a/os_dep.h -+++ b/os_dep.h -@@ -29,7 +29,7 @@ - #define WIN - #elif defined(__INTERIX) - #define INTERIX --#elif defined(__BEOS__) || defined(__HAIKU__) -+#elif defined(__BEOS__) - #define BEOS - #elif defined(__riscos__) - #define RISCOS -@@ -41,6 +41,8 @@ - #define OPENVMS - #elif defined(__DJGPP) - #define DOS -+#elif defined(__HAIKU__) -+#define HAIKU - #else - #define UNIX - #endif -@@ -170,6 +172,25 @@ static inline int dir_sep(unsigned char x) { return x == '/'; } - - #include "beos.h" - -+#elif defined(HAIKU) -+ -+static inline int dir_sep(unsigned char x) { return x == '/'; } -+#define NEWLINE "\n" -+#define NO_ASYNC_LOOKUP /* async lookup works on BeOS but crashes the Haiku kernel */ -+#define FS_UNIX_RIGHTS -+#define FS_UNIX_SOFTLINKS -+#define FS_UNIX_USERS -+/* TODO: allocate new SYS_* or replace SYS_BEOS */ -+#define SYSTEM_ID SYS_BEOS -+#define SYSTEM_NAME "Haiku" -+#define DEFAULT_SHELL "/bin/sh" -+#define GETSHELL getenv("SHELL") -+#define NO_CTRL_Z -+#define SET_WINDOW_TITLE_UTF_8 -+#define SHARED_CONFIG_DIR "/etc/" -+#define NO_FORK_ON_EXIT -+#define ASSOC_BLOCK -+ - #elif defined(RISCOS) - - static inline int dir_sep(unsigned char x) { return x == '/' || x == '\\'; } -diff --git a/os_depx.h b/os_depx.h -index ceeb661..592a430 100644 ---- a/os_depx.h -+++ b/os_depx.h -@@ -176,6 +176,10 @@ int bounced_write(int fd, const void *buf, size_t size); - #endif - #endif - -+#ifdef HAIKU -+/* nothing so far */ -+#endif -+ - #ifdef OPENVMS - #if defined(__INITIAL_POINTER_SIZE) - #if __INITIAL_POINTER_SIZE == 64 -@@ -375,6 +379,9 @@ int vga_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); - #elif defined(GRDRV_ATHEOS) - #define loop_select ath_select - int ath_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); -+#elif defined(GRDRV_HAIKU) -+#define loop_select be_loop_select -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); - #else - #define loop_select select - #endif --- -2.16.2 - diff --git a/www-client/links/patches/links-2.19.patchset b/www-client/links/patches/links-2.19.patchset index 153d4908a..d72065d96 100644 --- a/www-client/links/patches/links-2.19.patchset +++ b/www-client/links/patches/links-2.19.patchset @@ -1,4 +1,4 @@ -From 685dac2b4113680d870bf15a07ed02855d868bec Mon Sep 17 00:00:00 2001 +From 773ef759e2ff519eabf1e76dda51d7d738f90e3a Mon Sep 17 00:00:00 2001 From: Leorize Date: Wed, 17 Apr 2019 15:41:54 +0700 Subject: Add Haiku support @@ -1462,3 +1462,70 @@ index c8f9db2..2fe6aa7 100644 -- 2.21.0 + +From 1ab7f56fde57de5bd19b58a72ce282b145da678b Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Thu, 18 Jul 2019 19:19:14 +0200 +Subject: Fix buffer overrun when pasting. + +Strings coming from clipboard may not be NULL terminated, so handle the +given length. + +diff --git a/haiku.cpp b/haiku.cpp +index 50eacdc..7362c0a 100644 +--- a/haiku.cpp ++++ b/haiku.cpp +@@ -242,11 +242,14 @@ int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t) + return v; + } + +-void be_paste_string(struct graphics_device *dev, const char *str) ++void be_paste_string(struct graphics_device *dev, const char *str, size_t len) + { + unsigned char *s = (unsigned char *)str; + int c, i; +- while (s && *s) { ++ if (len == 0) { ++ len = strlen(str); ++ } ++ while (s && (s < (unsigned char*)str + len) && *s) { + GET_UTF_8(s, c); + if (dev) dev->keyboard_handler(dev, c, 0); + } +@@ -439,7 +442,7 @@ void be_get_event(void *dummy) + ssize_t len; + //data->PrintToStream(); + if (data->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { +- be_paste_string(dev, text_plain); ++ be_paste_string(dev, text_plain, len); + } + } + be_clipboard->Unlock(); +@@ -447,7 +450,7 @@ void be_get_event(void *dummy) + break; + case B_REFS_RECEIVED: + if (dev) +- be_paste_string(dev, "\033\ng"); ++ be_paste_string(dev, "\033\ng", 0); + /* FALLTHROUGH */ + case B_SIMPLE_DATA: + { +@@ -463,12 +466,12 @@ void be_get_event(void *dummy) + BFile f(path.Path(), B_READ_ONLY); + BString url; + if (f.InitCheck() == B_OK && f.ReadAttrString("META:url", &url) >= B_OK) { +- be_paste_string(dev, url.String()); ++ be_paste_string(dev, url.String(), 0); + } else +- be_paste_string(dev, path.Path()); ++ be_paste_string(dev, path.Path(), 0); + } + } else if (msg->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { +- be_paste_string(dev, text_plain); ++ be_paste_string(dev, text_plain, len); + } + } + break; +-- +2.21.0 + diff --git a/www-client/links/patches/links-2.1pre33.beos.002.patch b/www-client/links/patches/links-2.1pre33.beos.002.patch deleted file mode 100644 index 6450a54f1..000000000 --- a/www-client/links/patches/links-2.1pre33.beos.002.patch +++ /dev/null @@ -1,3157 +0,0 @@ -BeOS graphics support, use with: -./configure --prefix=$HOME/config --without-x --enable-utf-8 --enable-graphics -beres -o links-beos.rsrc links-beos.rdef -make && xres -o links links-beos.rsrc && mimeset links - -Francois Revol, revol@free.fr - -diff -urN links-2.1pre33.org/Makefile.am links-2.1pre33/Makefile.am ---- links-2.1pre33.org/Makefile.am Tue Dec 25 02:43:02 2007 -+++ links-2.1pre33/Makefile.am Sat May 3 21:32:48 2008 -@@ -4,7 +4,7 @@ - - man_MANS=links.1 - --EXTRA_DIST=atheos.cpp $(man_MANS) BRAILLE_HOWTO KEYS BUGS TODO SITES PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* intl/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png links_16x16_1.xpm links_16x16_2.xpm links_32x32.xpm links.nsi -+EXTRA_DIST=atheos.cpp beosgui.cpp $(man_MANS) BRAILLE_HOWTO KEYS BUGS TODO SITES PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* intl/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png links_16x16_1.xpm links_16x16_2.xpm links_32x32.xpm links.nsi links-beos.rdef - - bin_PROGRAMS=links - -@@ -13,6 +13,11 @@ - else - endif - -+if BEOS_GR -+links_LDADD=beosgui.o -lbe -+else -+endif -+ - links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmarks.c cache.c charsets.c connect.c cookies.c default.c dip.c directfb.c directfb_cursors.h dither.c dns.c drivers.c error.c file.c finger.c font_include.c framebuffer.c ftp.c gif.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_icon.c listedit.c lru.c mailto.c main.c menu.c memory.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c x.c xbm.c links.h cfg.h os_dep.h os_depx.h setup.h codepage.h language.h codepage.inc entity.inc uni_7b.inc language.inc upcase.inc arrow.inc bits.h - - dist-hook: -@@ -31,7 +36,12 @@ - CXXFLAGS=@CXXFLAGS@ - - atheos.o: atheos.cpp -- $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c atheos.cpp -+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -o $@ -c $< -+ -+beosgui.o: beosgui.cpp -+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -o $@ -c $< -+ -+ - - datadir = $(prefix)/@DATADIRNAME@ - LIBS = @LIBS@ -diff -urN links-2.1pre33.org/acconfig.h links-2.1pre33/acconfig.h ---- links-2.1pre33.org/acconfig.h Wed Mar 21 17:20:21 2007 -+++ links-2.1pre33/acconfig.h Sat May 3 18:30:26 2008 -@@ -113,6 +113,9 @@ - #undef GRDRV_ATHEOS - - /* */ -+#undef GRDRV_BEOS -+ -+/* */ - #undef DONT_INCLUDE_SETJMP - - /* Tiff by Brain */ -diff -urN links-2.1pre33.org/atheos.cpp links-2.1pre33/atheos.cpp ---- links-2.1pre33.org/atheos.cpp Fri Oct 22 21:11:31 2004 -+++ links-2.1pre33/atheos.cpp Sat May 3 18:30:27 2008 -@@ -207,7 +207,7 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, B_DOWN | (b == 2 ? B_RIGHT : b == 3 ? B_MIDDLE : B_LEFT)); -+ if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, BTN_DOWN | (b == 2 ? BTN_RIGHT : b == 3 ? BTN_MIDDLE : BTN_LEFT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -@@ -217,7 +217,7 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, B_UP | (b == 2 ? B_RIGHT : b == 3 ? B_MIDDLE : B_LEFT)); -+ if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, BTN_UP | (b == 2 ? BTN_RIGHT : b == 3 ? BTN_MIDDLE : BTN_LEFT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -@@ -227,7 +227,7 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, !b ? B_MOVE : B_DRAG | (b & 1 ? B_LEFT : b & 2 ? B_RIGHT : b & 4 ? B_MIDDLE : B_LEFT)); -+ if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, !b ? BTN_MOVE : BTN_DRAG | (b & 1 ? BTN_LEFT : b & 2 ? BTN_RIGHT : b & 4 ? BTN_MIDDLE : BTN_LEFT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -@@ -237,8 +237,8 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (d.y) if (dev) dev->mouse_handler(dev, last_x, last_y, B_MOVE | (d.y > 0 ? B_WHEELDOWN : B_WHEELUP)); -- if (d.x) if (dev) dev->mouse_handler(dev, last_x, last_y, B_MOVE | (d.x < 0 ? B_WHEELLEFT : B_WHEELRIGHT)); -+ if (d.y) if (dev) dev->mouse_handler(dev, last_x, last_y, BTN_MOVE | (d.y > 0 ? BTN_WHEELDOWN : BTN_WHEELUP)); -+ if (d.x) if (dev) dev->mouse_handler(dev, last_x, last_y, BTN_MOVE | (d.x < 0 ? BTN_WHEELLEFT : BTN_WHEELRIGHT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -diff -urN links-2.1pre33.org/beos.c links-2.1pre33/beos.c ---- links-2.1pre33.org/beos.c Mon Sep 11 04:39:14 2006 -+++ links-2.1pre33/beos.c Sat May 3 21:08:27 2008 -@@ -11,8 +11,9 @@ - #include - #include - #include -+#include - #include --#include -+#include - - #define SHS 128 - -@@ -20,6 +21,42 @@ - #define MAXINT 0x7fffffff - #endif - -+extern int ggr; -+ -+#ifdef __cplusplus -+extern "C" { -+int get_input_handle(); -+void unblock_stdin(); -+void block_stdin(); -+} -+#endif -+ -+void maybe_force_gr(void) -+{ -+ struct stat stn, stin, stout; -+ /* -+ * if stdin and out are /dev/null it's likely -+ * we have been started from the gui... -+ */ -+ if (lstat("/dev/null", &stn) < 0) -+ return; -+ if (fstat(0, &stin) < 0) -+ return; -+ if (fstat(1, &stout) < 0) -+ return; -+ if (stin.st_dev != stn.st_dev) -+ return; -+ if (stout.st_dev != stn.st_dev) -+ return; -+ if (stin.st_ino != stn.st_ino) -+ return; -+ if (stout.st_ino != stn.st_ino) -+ return; -+ ggr = 1; -+} -+ -+#if IPPROTO_TCP != 6 -+ - int be_read(int s, void *ptr, int len) - { - if (s >= SHS) return recv(s - SHS, ptr, len, 0); -@@ -90,6 +127,10 @@ - - #define PIPE_RETRIES 10 - -+#ifndef PF_INET -+#define PF_INET AF_INET -+#endif -+ - int be_pipe(int *fd) - { - int s1, s2, s3, l; -@@ -249,5 +290,22 @@ - } - return h = ohpipe[1]; - }*/ -+ -+#else /* IPPROTO_TCP != 6 */ -+ -+void block_stdin() -+{ -+} -+ -+void unblock_stdin() -+{ -+} -+ -+int get_input_handle() -+{ -+ return 0; -+} -+ -+#endif - - #endif -diff -urN links-2.1pre33.org/beosgui.cpp links-2.1pre33/beosgui.cpp ---- links-2.1pre33.org/beosgui.cpp Thu Jan 1 01:00:00 1970 -+++ links-2.1pre33/beosgui.cpp Sat May 3 23:27:52 2008 -@@ -0,0 +1,884 @@ -+/* beos.c -+ * (c) 2007 François Revol -+ * This file is a part of the Links program, released under GPL -+ */ -+ -+#ifdef __BEOS__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* -+ * GUI code -+ */ -+ -+/* -+ * TODO: -+ * - BeOS doesn't handle BView::DrawBitmap() with RGB24, and links doesn't seem to handle RGB32, -+ * so the colorspace is forced into 16bpp for now. -+ * - more paste handling ? -+ * - more DnD (maybe check if in menu or not and prepend "g" ?) -+ * - handle DnD of Net+ bookmarks -+ */ -+ -+#include "cfg.h" -+ -+#ifdef GRDRV_BEOS -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+extern "C" { -+#include "links.h" -+} -+ -+//#define DBG(l...) fprintf(stderr, l); -+#define DBG(l...) {} -+ -+/* -+#ifdef debug -+#undef debug -+#endif -+#define debug(x) -+#define fprintf(x, y) -+*/ -+ -+extern struct graphics_driver beos_driver; -+ -+class LinksApplication : public BApplication { -+ public: -+ LinksApplication():BApplication("application/x-vnd.links"){} -+ virtual void RefsReceived(BMessage *message); -+ virtual bool QuitRequested(); -+}; -+ -+class LinksView; -+ -+class LinksWindow : public BWindow { -+ public: -+ LinksWindow(BRect r); -+ ~LinksWindow(); -+ virtual void FrameResized(float width, float height); -+ virtual bool QuitRequested(); -+ int resized; -+ LinksView *view; -+}; -+ -+class LinksView : public BView { -+ public: -+ LinksView(LinksWindow *w); -+ ~LinksView(); -+ virtual void Draw(BRect r); -+ virtual void MouseDown(BPoint p); -+ virtual void MouseUp(BPoint p); -+ virtual void MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg); -+ virtual void KeyDown(const char *s, int32 numBytes); -+ virtual void MessageReceived(BMessage *msg); -+ LinksWindow *win; -+ struct graphics_device *dev; -+ void d_flush(); -+ int flushing; -+ int last_x, last_y; -+}; -+ -+#define lv(dev) ((LinksView *)(dev)->driver_data) -+ -+#define lock_dev(dev) do { if (!lv(dev)->win->Lock()) return; } while (0) -+#define lock_dev0(dev) do { if (!lv(dev)->win->Lock()) return 0; } while (0) -+#define unlock_dev(dev) do { lv(dev)->win->Unlock(); } while (0) -+ -+void be_get_size(struct graphics_device *dev); -+ -+#define detach_message(dev) \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ } -+ -+#define pipe_message(dev) \ -+ if (current) { \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } -+ -+#define detach_and_pipe_message(dev) do { \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } \ -+} while (0) -+ -+LinksApplication *be_links_app; -+BLocker *be_lock = NULL; -+ -+int msg_pipe[2]; -+ -+thread_id be_app_thread_id; -+ -+#define rpipe (msg_pipe[0]) -+#define wpipe (msg_pipe[1]) -+ -+#define small_color (sizeof(rgb_color) <= sizeof(long)) -+#define get_color32(c, rgb) rgb_color c((rgb_color){(rgb >> 16) & 255, (rgb >> 8) & 255, rgb & 255, 255}) -+ -+color_space be_cs_desktop, be_cs_bmp; -+ -+int be_x_size, be_y_size; -+ -+int be_win_x_size, be_win_y_size; -+int be_win_x_pos, be_win_y_pos; -+ -+static BMessage *initial_refs_msg; -+ -+void LinksApplication::RefsReceived(BMessage *message) -+{ -+ entry_ref ref; -+ //if (!IsLaunching()) -+ // return; -+ BMessenger msgr(WindowAt(0)); -+ BMessage *m = new BMessage(*message); -+ m->AddSpecifier("View", (long)0); -+ //m->what = B_SIMPLE_DATA; -+ if (msgr.IsValid()) { -+ msgr.SendMessage(m); -+ } else -+ initial_refs_msg = m; -+} -+ -+bool LinksApplication::QuitRequested() -+{ -+ BApplication::QuitRequested(); -+ //printf("qc: %ld\n", CountWindows()); -+ return true; -+} -+ -+LinksWindow::LinksWindow(BRect r):BWindow(r, "Links", B_DOCUMENT_WINDOW, 0) -+{ -+ DBG("LINKSWINDOW\n"); -+ resized = 0; -+ view = NULL; -+} -+ -+LinksWindow::~LinksWindow() -+{ -+ view = NULL; -+ DBG("~LINKSWINDOW\n"); -+} -+ -+void LinksWindow::FrameResized(float width, float height) -+{ -+ resized = 1; -+} -+ -+bool LinksWindow::QuitRequested() -+{ -+ detach_and_pipe_message(view->dev); -+ return false; -+} -+ -+void do_flush(void *p_dev) -+{ -+ struct graphics_device *dev = (struct graphics_device *)p_dev; -+ LinksView *v = lv(dev); -+ v->win->Lock(); -+ v->win->Flush(); -+ v->win->Unlock(); -+ v->flushing = 0; -+} -+ -+LinksView::LinksView(LinksWindow *w):BView(w->Bounds(), "Links", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_NAVIGABLE) -+{ -+ DBG("LINKSVIEW\n"); -+ (win = w)->AddChild(this); -+ SetViewColor(B_TRANSPARENT_32_BIT); -+ MakeFocus(); -+ w->view = this; -+ flushing = 0; -+ last_x = last_y = 0; -+} -+ -+LinksView::~LinksView() -+{ -+ win->view = NULL; -+ DBG("~LINKSVIEW\n"); -+} -+ -+void LinksView::d_flush() -+{ -+ if (flushing) return; -+ register_bottom_half(do_flush, this->dev); -+ flushing = 1; -+} -+ -+#undef select -+ -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t) -+{ -+ int v; -+ v = select(n, r, w, e, t); -+ check_bottom_halves(); -+ return v; -+} -+ -+void be_paste_string(struct graphics_device *dev, const char *str) -+{ -+ unsigned char *s = (unsigned char *)str; -+ int c, i; -+ while (s && *s) { -+ GET_UTF_8(s, c); -+ if (dev) dev->keyboard_handler(dev, c, 0); -+ } -+} -+ -+void be_get_event(void *dummy) -+{ -+ BMessage *msg; -+ LinksView *view = NULL; -+ LinksWindow *win = NULL; -+ struct graphics_device *dev; -+ read(rpipe, &msg, sizeof(msg)); -+ DBG("GETE\n"); -+ if (!msg) -+ return; -+ if (msg->FindPointer("linksdev", (void **)&dev) < B_OK) -+ return; -+ if (dev) { -+ view = lv(dev); -+ if (view) -+ win = dynamic_cast(view->Window()); -+ } -+ switch (msg->what) { -+ case B_QUIT_REQUESTED: -+ if (dev) -+ dev->keyboard_handler(dev, KBD_CTRL_C, 0); -+ break; -+ case _UPDATE_: -+ { -+ BRect r; -+ if (msg->FindRect("updateRect", &r) < B_OK) -+ return; -+ struct rect rr; -+ rr.x1 = (int)r.left; -+ rr.x2 = (int)r.right + 1; -+ rr.y1 = (int)r.top; -+ rr.y2 = (int)r.bottom + 1; -+ /*DBG("paint: %d %d %d %d\n", rr.x1, rr.x2, rr.y1, rr.y2);*/ -+ if (dev) { -+ if (!win->resized) dev->redraw_handler(dev, &rr); -+ else { -+ be_get_size(dev); -+ win->resized = 0; -+ dev->resize_handler(dev); -+ } -+ } -+ check_bottom_halves(); -+ } -+ break; -+ case B_MOUSE_DOWN: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = BTN_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = BTN_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = BTN_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = BTN_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = BTN_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = BTN_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = BTN_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, BTN_DOWN | btn); -+ } -+ break; -+ case B_MOUSE_UP: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = BTN_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & ~B_PRIMARY_MOUSE_BUTTON == 0) -+ btn = BTN_LEFT; -+ else if (buttons & ~B_SECONDARY_MOUSE_BUTTON == 0) -+ btn = BTN_RIGHT; -+ else if (buttons & ~B_TERTIARY_MOUSE_BUTTON == 0) -+ btn = BTN_MIDDLE; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 1) == 0) -+ btn = BTN_FOURTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 2) == 0) -+ btn = BTN_FIFTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 3) == 0) -+ btn = BTN_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, BTN_UP | btn); -+ } -+ break; -+ case B_MOUSE_MOVED: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = BTN_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = BTN_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = BTN_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = BTN_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = BTN_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = BTN_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = BTN_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, !buttons ? BTN_MOVE : BTN_DRAG | btn); -+ } -+ break; -+ case B_KEY_DOWN: -+ { -+ int32 modifiers; -+ int32 numBytes; -+ const char *bytes; -+ int c; -+ int mods = 0; -+ if (msg->FindInt32("modifiers", &modifiers) != B_OK) -+ return; -+ if (msg->FindString("bytes", &bytes) != B_OK) -+ return; -+ unsigned char buf[4] = { 0, 0, 0, 0 }; -+ unsigned char *ss; -+ if (modifiers & (B_LEFT_CONTROL_KEY | B_RIGHT_CONTROL_KEY | B_LEFT_COMMAND_KEY | B_RIGHT_COMMAND_KEY)) { -+ int32 raw; -+ if (msg->FindInt32("raw_char", &raw) != B_OK) -+ return; -+ buf[0] = (unsigned char)raw; -+ ss = buf; -+ } else -+ ss = (unsigned char *)bytes; -+ -+ GET_UTF_8(ss, c); -+ switch (c) { -+ case B_BACKSPACE: c = KBD_BS; break; -+ case B_ENTER: c = KBD_ENTER; break; -+ case B_SPACE: c = ' '; break; -+ case B_TAB: c = KBD_TAB; break; -+ case B_ESCAPE: c = KBD_ESC; break; -+ case B_LEFT_ARROW: c = KBD_LEFT; break; -+ case B_RIGHT_ARROW: c = KBD_RIGHT; break; -+ case B_UP_ARROW: c = KBD_UP; break; -+ case B_DOWN_ARROW: c = KBD_DOWN; break; -+ case B_INSERT: c = KBD_INS; break; -+ case B_DELETE: c = KBD_DEL; break; -+ case B_HOME: c = KBD_HOME; break; -+ case B_END: c = KBD_END; break; -+ case B_PAGE_UP: c = KBD_PAGE_UP; break; -+ case B_PAGE_DOWN: c = KBD_PAGE_DOWN; break; -+ default: if (c < 32) c = 0; -+ else modifiers &= ~(B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY); -+ break; -+ } -+ if (modifiers & (B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY)) -+ mods |= KBD_SHIFT; -+ if (modifiers & (B_LEFT_CONTROL_KEY|B_RIGHT_CONTROL_KEY)) -+ mods |= KBD_CTRL; -+ if (modifiers & (B_LEFT_COMMAND_KEY|B_RIGHT_COMMAND_KEY)) -+ mods |= KBD_ALT; -+ if (c) if (dev) dev->keyboard_handler(dev, c, mods); -+ } -+ break; -+ case B_MOUSE_WHEEL_CHANGED: -+ { -+ float delta_x, delta_y; -+ if (msg->FindFloat("be:wheel_delta_x", &delta_x) != B_OK) -+ delta_x = 0; -+ if (msg->FindFloat("be:wheel_delta_y", &delta_y) != B_OK) -+ delta_y = 0; -+ if (delta_y) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, BTN_MOVE | (delta_y > 0 ? BTN_WHEELDOWN : BTN_WHEELUP)); -+ if (delta_x) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, BTN_MOVE | (delta_x < 0 ? BTN_WHEELLEFT : BTN_WHEELRIGHT)); -+ } -+ break; -+ case B_PASTE: -+ if (be_clipboard->Lock()) { -+ BMessage *data = be_clipboard->Data(); -+ if (data) { -+ const char *text_plain; -+ ssize_t len; -+ //data->PrintToStream(); -+ if (data->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ be_clipboard->Unlock(); -+ } -+ break; -+ case B_REFS_RECEIVED: -+ if (dev) -+ be_paste_string(dev, "\033\ng"); -+ /* FALLTHROUGH */ -+ case B_SIMPLE_DATA: -+ { -+ /* something got dropped */ -+ entry_ref ref; -+ const char *text_plain; -+ ssize_t len; -+ //msg->PrintToStream(); -+ /* try find a file path to paste */ -+ if (msg->FindRef("refs", &ref) == B_OK) { -+ BPath path(&ref); -+ if (path.InitCheck() == B_OK) { -+ BFile f(path.Path(), B_READ_ONLY); -+ BString url; -+ if (f.InitCheck() == B_OK && f.ReadAttrString("META:url", &url) >= B_OK) { -+ be_paste_string(dev, url.String()); -+ } else -+ be_paste_string(dev, path.Path()); -+ } -+ } else if (msg->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ break; -+ default: -+ msg->PrintToStream(); -+ break; -+ } -+ delete msg; -+} -+ -+void be_get_size(struct graphics_device *dev) -+{ -+ BRect r; -+ lock_dev(dev); -+ r = lv(dev)->Bounds(); -+ unlock_dev(dev); -+ dev->size.x1 = dev->size.y1 = 0; -+ dev->size.x2 = (int)r.Width() + 1; -+ dev->size.y2 = (int)r.Height() + 1; -+} -+ -+void LinksView::Draw(BRect r) -+{ -+ detach_message(dev); -+ current->AddRect("updateRect", r); -+ pipe_message(dev); -+} -+ -+ -+void LinksView::MouseDown(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseUp(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MessageReceived(BMessage *msg) -+{ -+ switch (msg->what) { -+ case B_REFS_RECEIVED: -+ case B_MOUSE_WHEEL_CHANGED: -+ case B_PASTE: -+ case B_SIMPLE_DATA: -+ detach_and_pipe_message(dev); -+ break; -+ default: -+ BView::MessageReceived(msg); -+ } -+} -+ -+void LinksView::KeyDown(const char *s, int32 numBytes) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+unsigned char *be_get_driver_param(void) -+{ -+ return NULL; -+} -+ -+int32 be_app_thread(void *p) -+{ -+ be_links_app->Lock(); -+ be_links_app->Run(); -+ delete be_links_app; -+ return 0; -+} -+ -+unsigned char *be_init_driver(unsigned char *param, unsigned char *display) -+{ -+ be_links_app = new LinksApplication(); -+ if (!be_links_app) { -+ return stracpy((unsigned char *)"Unable to allocate Application object.\n"); -+ } -+ if (c_pipe(msg_pipe)) { -+ delete be_links_app; -+ return stracpy((unsigned char *)"Could not create pipe.\n"); -+ } -+ fcntl(rpipe, F_SETFL, O_NONBLOCK); -+ fcntl(wpipe, F_SETFL, O_NONBLOCK); -+ set_handlers(rpipe, be_get_event, NULL, NULL, NULL); -+ be_app_thread_id = spawn_thread(be_app_thread, "links_app", B_NORMAL_PRIORITY, NULL); -+ resume_thread(be_app_thread_id); -+ be_links_app->Unlock(); -+ be_cs_desktop = B_NO_COLOR_SPACE; -+ be_x_size = 640; -+ be_y_size = 480; -+ BScreen d; -+ if (d.IsValid()) { -+ be_cs_desktop = d.ColorSpace(); -+ be_x_size = (int)d.Frame().Width() + 1; -+ be_y_size = (int)d.Frame().Height() + 1; -+ } -+ be_win_y_size = be_y_size * 9 / 10; -+ be_win_x_size = be_win_y_size; -+ /* -+ DBG("%d %d\n", be_x_size, be_y_size); -+ DBG("%d %d\n", be_win_x_size, be_win_y_size); -+ */ -+ be_win_y_pos = (be_y_size - be_win_y_size) / 2; -+ be_win_x_pos = be_x_size - be_win_x_size - be_win_y_pos; -+ if (/*be_cs_desktop == B_RGB32 ||*/ be_cs_desktop == B_RGB24 || be_cs_desktop == B_RGB16 || be_cs_desktop == B_RGB15) -+ be_cs_bmp = be_cs_desktop; -+ else if (be_cs_desktop == B_RGB32 || be_cs_desktop == B_RGBA32) be_cs_bmp = B_RGB24; -+ else be_cs_bmp = B_RGB15; -+ be_cs_bmp = B_RGB16; // XXX: DEBUG -+ switch (be_cs_bmp) { -+ case B_RGB24: -+ beos_driver.depth = 0xc3; -+ break; -+ case B_RGB16: -+ beos_driver.depth = 0x82; -+ break; -+ case B_RGB15: -+ beos_driver.depth = 0x7a; -+ break; -+ default: -+ internal((unsigned char *)"unknown depth"); -+ } -+ return NULL; -+} -+ -+void be_shutdown_driver() -+{ -+ status_t ret; -+ //debug((unsigned char *)"D"); -+ close(rpipe); -+ close(wpipe); -+ set_handlers(rpipe, NULL, NULL, NULL, NULL); -+ //debug((unsigned char *)"DD"); -+ be_links_app->PostMessage(B_QUIT_REQUESTED); -+ //debug((unsigned char *)"E"); -+ wait_for_thread(be_app_thread_id, &ret); -+ //debug((unsigned char *)"F"); -+} -+ -+struct graphics_device *be_init_device() -+{ -+ LinksView *view; -+ LinksWindow *win; -+ struct graphics_device *dev = (struct graphics_device *)mem_calloc(sizeof(struct graphics_device)); -+ if (!dev) return NULL; -+ dev->drv = &beos_driver; -+ //debug((unsigned char *)"1"); -+ win = new LinksWindow(BRect(be_win_x_pos, be_win_y_pos, be_win_x_pos + be_win_x_size, be_win_y_pos + be_win_y_size)); -+ //debug((unsigned char *)"2"); -+ if (!win) { -+ mem_free(dev); -+ return NULL; -+ } -+ //debug((unsigned char *)"3"); -+ view = new LinksView(win); -+ if (!view) { -+ delete win; -+ mem_free(dev); -+ return NULL; -+ } -+ view->dev = dev; -+ dev->driver_data = view; -+ be_get_size(dev); -+ memcpy(&dev->clip, &dev->size, sizeof(struct rect)); -+ //debug((unsigned char *)"4"); -+ win->Show(); -+ win->Lock(); -+ view->MakeFocus(); -+ win->Unlock(); -+ //debug((unsigned char *)"5"); -+ if (initial_refs_msg) { -+ BMessenger msgr(win); -+ if (msgr.IsValid()) { -+ msgr.SendMessage(initial_refs_msg); -+ initial_refs_msg = NULL; -+ } -+ } -+ return dev; -+} -+ -+void be_shutdown_device(struct graphics_device *dev) -+{ -+ LinksWindow *win = lv(dev)->win; -+ unregister_bottom_half(do_flush, dev); -+ lv(dev)->dev = NULL; -+ win->PostMessage(B_QUIT_REQUESTED); -+ mem_free(dev); -+} -+ -+void be_set_title(struct graphics_device *dev, unsigned char *title) -+{ -+ LinksWindow *win = lv(dev)->win; -+ lock_dev(dev); -+ win->SetTitle((const char *)title); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+/* -+int be_get_filled_bitmap(struct bitmap *bmp, long color) -+{ -+ internal((unsigned char *)"nedopsano"); -+ return 0; -+} -+*/ -+ -+int be_get_empty_bitmap(struct bitmap *bmp) -+{ -+ DBG("bmp\n"); -+//DBG("bmp (%d, %d) cs %08x\n", bmp->x, bmp->y, be_cs_bmp); -+ BRect r(0, 0, bmp->x - 1, bmp->y - 1); -+ BBitmap *b = new BBitmap(r, /*B_RGB32*/be_cs_bmp); -+ if (!b) { -+ bmp->data = NULL; -+DBG("%s: error 1\n", __FUNCTION__); -+ return 0; -+ } -+ if (!b->IsValid()) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 2\n", __FUNCTION__); -+ return 0; -+ } -+ if (b->LockBits() < B_OK) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 3\n", __FUNCTION__); -+ return 0; -+ } -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ bmp->flags = b; -+//DBG("bmp: data %p, skip %d, flags %p\n", bmp->data, bmp->skip, bmp->flags); -+ return 0; -+} -+ -+void be_register_bitmap(struct bitmap *bmp) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void *be_prepare_strip(struct bitmap *bmp, int top, int lines) -+{ -+ DBG("preps\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ if (b->LockBits() < B_OK) -+ return NULL; -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ return ((char *)bmp->data) + bmp->skip * top; -+} -+ -+void be_commit_strip(struct bitmap *bmp, int top, int lines) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void be_unregister_bitmap(struct bitmap *bmp) -+{ -+ DBG("unb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ delete b; -+} -+ -+void be_draw_bitmap(struct graphics_device *dev, struct bitmap *bmp, int x, int y) -+{ -+ DBG("drawb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ lock_dev(dev); -+ lv(dev)->DrawBitmap(b, b->Bounds(), BRect(x, y, x + bmp->x - 1, y + bmp->y - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_bitmaps(struct graphics_device *dev, struct bitmap **bmp, int n, int x, int y) -+{ -+ LinksView *lvv = lv(dev); -+ lock_dev(dev); -+ while (n--) { -+ BBitmap *b = (BBitmap *)(*bmp)->flags; -+ lvv->DrawBitmap(b, b->Bounds(), BRect(x, y, x + (*bmp)->x, y + (*bmp)->y)); -+ x += (*bmp)->x; -+ bmp++; -+ } -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+long be_get_color(int rgb) -+{ -+ if (small_color) { -+ get_color32(c, rgb); -+ return *(long *)(void *)&c; -+ } else return rgb & 0xffffff; -+} -+ -+void be_fill_area(struct graphics_device *dev, int x1, int y1, int x2, int y2, long color) -+{ -+ DBG("fill\n"); -+ if (x1 >= x2 || y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->FillRect(BRect(x1, y1, x2 - 1, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_hline(struct graphics_device *dev, int x1, int y, int x2, long color) -+{ -+ DBG("hline\n"); -+ if (x1 >= x2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x1, y), BPoint(x2 - 1, y)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_vline(struct graphics_device *dev, int x, int y1, int y2, long color) -+{ -+ DBG("vline\n"); -+ if (y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x, y1), BPoint(x, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+int be_hscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("hscroll\n"); -+ if (dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.x1 - dev->clip.x2) return 1; -+ if (sc >= dev->clip.x2 - dev->clip.x1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - sc - 1, dev->clip.y2 - 1), BRect(dev->clip.x1 + sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1 - sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 + sc - 1, dev->clip.y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+int be_vscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("vscroll\n"); -+ if (!sc || dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.y1 - dev->clip.y2) return 1; -+ if (sc >= dev->clip.y2 - dev->clip.y1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - sc - 1), BRect(dev->clip.x1, dev->clip.y1 + sc, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1 - sc, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 + sc - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+void be_set_clip_area(struct graphics_device *dev, struct rect *r) -+{ -+ DBG("setc\n"); -+ memcpy(&dev->clip, r, sizeof(struct rect)); -+ lock_dev(dev); -+ BRegion clip(BRect(r->x1, r->y1, r->x2 - 1, r->y2 - 1)); -+ lv(dev)->ConstrainClippingRegion(&clip); -+ unlock_dev(dev); -+} -+ -+struct graphics_driver beos_driver = { -+ (unsigned char *)"beos", -+ be_init_driver, -+ be_init_device, -+ be_shutdown_device, -+ be_shutdown_driver, -+ be_get_driver_param, -+ be_get_empty_bitmap, -+ /*be_get_filled_bitmap,*/ -+ be_register_bitmap, -+ be_prepare_strip, -+ be_commit_strip, -+ be_unregister_bitmap, -+ be_draw_bitmap, -+ be_draw_bitmaps, -+ be_get_color, -+ be_fill_area, -+ be_draw_hline, -+ be_draw_vline, -+ be_hscroll, -+ be_vscroll, -+ be_set_clip_area, -+ dummy_block, -+ dummy_unblock, -+ be_set_title, -+ NULL, /* exec */ -+ 0, /* depth */ -+ 0, 0, /* size */ -+ 0, /* flags */ -+ 0, /* codepage */ -+ NULL, /* shell */ -+}; -+ -+#endif /* GRDRV_BEOS */ -+ -+#endif -diff -urN links-2.1pre33.org/bfu.c links-2.1pre33/bfu.c ---- links-2.1pre33.org/bfu.c Fri Dec 28 07:39:58 2007 -+++ links-2.1pre33/bfu.c Sat May 3 18:30:29 2008 -@@ -466,7 +466,7 @@ - draw_to_window(win, (void (*)(struct terminal *, void *))gf_val(display_menu_txt, display_menu_gfx), menu); - break; - case EV_MOUSE: -- if ((ev->b & BM_ACT) == B_MOVE) break; -+ if ((ev->b & BM_ACT) == BTN_MOVE) break; - if (ev->x < menu->x || ev->x >= menu->x+menu->xw || ev->y < menu->y || ev->y >= menu->y+menu->yw) { - int f = 1; - for (w1 = win; (void *)w1 != &win->term->windows; w1 = w1->next) { -@@ -490,7 +490,7 @@ - if (ev->x > m1->x && ev->x < m1->x+m1->xw-1 && ev->y > m1->y && ev->y < m1->y+m1->yw-1) goto del; - f--; - } -- if ((ev->b & BM_ACT) == B_DOWN) goto del; -+ if ((ev->b & BM_ACT) == BTN_DOWN) goto del; - bbb:; - } else { - if (!(ev->x < menu->x || ev->x >= menu->x+menu->xw || ev->y < menu->y + gf_val(1, G_MENU_TOP_BORDER) || ev->y >= menu->y + menu->yw - gf_val(1, G_MENU_TOP_BORDER))) { -@@ -502,7 +502,7 @@ - scroll_menu(menu, 0); - draw_to_window(win, (void (*)(struct terminal *, void *))gf_val(display_menu_txt, display_menu_gfx), menu); - menu_oldview = menu_oldsel = -1; -- if ((ev->b & BM_ACT) == B_UP/* || menu->items[s].in_m*/) select_menu(win->term, menu); -+ if ((ev->b & BM_ACT) == BTN_UP/* || menu->items[s].in_m*/) select_menu(win->term, menu); - } - } - } -@@ -686,8 +686,8 @@ - draw_to_window(win, (void (*)(struct terminal *, void *))display_mainmenu, menu); - break; - case EV_MOUSE: -- if ((ev->b & BM_ACT) == B_MOVE) break; -- if ((ev->b & BM_ACT) == B_DOWN && ev->y >= gf_val(1, G_BFU_FONT_SIZE)) delete_window_ev(win, ev); -+ if ((ev->b & BM_ACT) == BTN_MOVE) break; -+ if ((ev->b & BM_ACT) == BTN_DOWN && ev->y >= gf_val(1, G_BFU_FONT_SIZE)) delete_window_ev(win, ev); - else if (ev->y < gf_val(1, G_BFU_FONT_SIZE)) { - int i; - int p = gf_val(2, G_MAINMENU_LEFT_BORDER); -@@ -698,7 +698,7 @@ - if (ev->x >= o && ev->x < p) { - menu->selected = i; - draw_to_window(win, (void (*)(struct terminal *, void *))display_mainmenu, menu); -- if ((ev->b & BM_ACT) == B_UP || menu->items[s].in_m) select_mainmenu(win->term, menu); -+ if ((ev->b & BM_ACT) == BTN_UP || menu->items[s].in_m) select_mainmenu(win->term, menu); - break; - } - } -@@ -1019,7 +1019,7 @@ - dlg->selected = di - dlg->items; - x_display_dlg_item(dlg, di, 1); - } -- if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di); -+ if ((ev->b & BM_ACT) == BTN_UP) dlg_select_item(dlg, di); - return 1; - case D_FIELD: - case D_FIELD_PASS: -@@ -1054,7 +1054,7 @@ - dlg->selected = di - dlg->items; - x_display_dlg_item(dlg, di, 1); - } -- if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di); -+ if ((ev->b & BM_ACT) == BTN_UP) dlg_select_item(dlg, di); - return 1; - } - return 0; -@@ -1193,9 +1193,9 @@ - draw_to_window(dlg->win, (void (*)(struct terminal *, void *))redraw_dialog, dlg); - break; - case EV_MOUSE: -- if ((ev->b & BM_ACT) == B_MOVE) break; -+ if ((ev->b & BM_ACT) == BTN_MOVE) break; - for (i = 0; i < dlg->n; i++) if (dlg_mouse(dlg, &dlg->items[i], ev)) break; -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_MIDDLE) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_MIDDLE) { - di = &dlg->items[dlg->selected]; /* don't delete this!!! it's here because of jump from mouse event */ - if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) goto clipbd_paste; - } -@@ -1388,9 +1388,9 @@ - goto bla; - } - if (ev->x == KBD_ENTER) for (i = 0; i < dlg->n; i++) -- if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ENTER) goto sel; -+ if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & BTN_ENTER) goto sel; - if (ev->x == KBD_ESC) for (i = 0; i < dlg->n; i++) -- if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ESC) goto sel; -+ if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & BTN_ESC) goto sel; - if (((ev->x == KBD_TAB && !ev->y) || ev->x == KBD_DOWN || ev->x == KBD_RIGHT) && (dlg->n > 1 || term->spec->braille)) { - if (term->spec->braille) dlg->brl_y = dlg->items[0].y - 3; - x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0); -@@ -1426,11 +1426,11 @@ - unsigned char *end; - double d = strtod(di->cdata, (char **)(void *)&end); - if (!*di->cdata || *end) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - if (100*d < di->item->gid || 100*d > di->item->gnum) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - return 0; -@@ -1441,11 +1441,11 @@ - unsigned char *end; - long l = strtol(di->cdata, (char **)(void *)&end, 10); - if (!*di->cdata || *end) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - if (l < di->item->gid || l > di->item->gnum) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - return 0; -@@ -1456,11 +1456,11 @@ - unsigned char *end; - long l = strtol(di->cdata, (char **)(void *)&end, 16); - if (!*di->cdata || *end) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - if (l < di->item->gid || l > di->item->gnum) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - return 0; -@@ -1470,7 +1470,7 @@ - { - unsigned char *p; - for (p = di->cdata; *p; p++) if (*p > ' ') return 0; -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_STRING), AL_CENTER, TEXT(T_EMPTY_STRING_NOT_ALLOWED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_STRING), AL_CENTER, TEXT(T_EMPTY_STRING_NOT_ALLOWED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - -@@ -2218,7 +2218,7 @@ - va_start(va, check); - for (i = 1; i <= n; i++) { - dlg->items[i].type = D_BUTTON; -- dlg->items[i].gid = i == 1 ? B_ENTER : i == n ? B_ESC : 0; -+ dlg->items[i].gid = i == 1 ? BTN_ENTER : i == n ? BTN_ESC : 0; - dlg->items[i].fn = i != n || n == 1 ? input_field_ok : input_field_cancel; - dlg->items[i].dlen = 0; - dlg->items[i].text = va_arg(va, unsigned char *); -diff -urN links-2.1pre33.org/block.c links-2.1pre33/block.c ---- links-2.1pre33.org/block.c Sat Dec 31 07:31:01 2005 -+++ links-2.1pre33/block.c Sat May 3 18:30:30 2008 -@@ -227,11 +227,11 @@ - d->items[0].data = url; - d->items[0].fn = check_nonempty; - d->items[1].type = D_BUTTON; -- d->items[1].gid = B_ENTER; -+ d->items[1].gid = BTN_ENTER; - d->items[1].fn = ok_dialog; - d->items[1].text = TEXT(T_OK); - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ESC; -+ d->items[2].gid = BTN_ESC; - d->items[2].text = TEXT(T_CANCEL); - d->items[2].fn = cancel_dialog; - d->items[3].type = D_END; -diff -urN links-2.1pre33.org/bookmarks.c links-2.1pre33/bookmarks.c ---- links-2.1pre33.org/bookmarks.c Thu Oct 26 17:06:32 2006 -+++ links-2.1pre33/bookmarks.c Sat May 3 18:30:31 2008 -@@ -378,12 +378,12 @@ - } - - d->items[a+1].type = D_BUTTON; -- d->items[a+1].gid = B_ENTER; -+ d->items[a+1].gid = BTN_ENTER; - d->items[a+1].fn = ok_dialog; - d->items[a+1].text = TEXT(T_OK); - - d->items[a+2].type = D_BUTTON; -- d->items[a+2].gid = B_ESC; -+ d->items[a+2].gid = BTN_ESC; - d->items[a+2].text = TEXT(T_CANCEL); - d->items[a+2].fn = cancel_dialog; - -diff -urN links-2.1pre33.org/configure.in links-2.1pre33/configure.in ---- links-2.1pre33.org/configure.in Wed Dec 26 07:00:48 2007 -+++ links-2.1pre33/configure.in Sat May 3 18:30:33 2008 -@@ -18,7 +18,7 @@ - dnl Checks for programs. - AC_PROG_CC - --#AC_PROG_CXX -+AC_PROG_CXX - #AC_PROG_AWK - #AM_PROG_LEX - #AC_PROG_YACC -@@ -221,7 +221,10 @@ - if test "$ac_cv_lib_socket_gethostbyname" = no; then - AC_CHECK_LIB(nsl, gethostbyname) - if test "$ac_cv_lib_nsl_gethostbyname" = no; then -- AC_ERROR([gethostbyname function not present]) -+ AC_CHECK_LIB(bind, gethostbyname) -+ if test "$ac_cv_lib_bind_gethostbyname" = no; then -+ AC_ERROR([gethostbyname function not present]) -+ fi - fi - fi - fi -@@ -321,6 +324,7 @@ - fi - #AC_CHECK_FUNC(clone, AC_DEFINE(HAVE_CLONE)) - AC_CHECK_HEADERS(atheos/threads.h) -+AC_CHECK_HEADERS(kernel/OS.h) - AC_HAVE_FUNCS(spawn_thread) - AC_HAVE_FUNCS(resume_thread) - -@@ -422,6 +426,7 @@ - - - cf_have_atheos=no -+cf_have_beos=no - - if test "$cf_use_graphics" = yes; then - AC_DEFINE(G) -@@ -433,6 +438,7 @@ - dnl AC_ARG_WITH(sdl, [ --without-sdl compile without SDL graphics driver],[if test "$withval" = no; then disable_sdl=yes; else disable_sdl=no; fi]) - AC_ARG_WITH(pmshell, [ --without-pmshell compile without PMShell graphics driver],[if test "$withval" = no; then disable_pmshell=yes; else disable_pmshell=no; fi]) - AC_ARG_WITH(atheos, [ --without-atheos compile without Atheos graphics driver],[if test "$withval" = no; then disable_atheos=yes; else disable_atheos; fi]) -+AC_ARG_WITH(beos, [ --without-beos compile without BeOS/Haiku graphics driver],[if test "$withval" = no; then disable_beos=yes; else disable_beos; fi]) - - drivers="" - -@@ -568,6 +574,31 @@ - fi - fi - -+if test "$disable_beos" != yes ; then -+ old_ext="$ac_ext" -+ ac_ext=cpp -+ AC_CHECK_HEADERS(interface/View.h) -+ AC_CHECK_HEADERS(interface/Window.h) -+ AC_CHECK_HEADERS(interface/Screen.h) -+ AC_CHECK_HEADERS(interface/Bitmap.h) -+ AC_CHECK_HEADERS(support/Locker.h) -+ AC_CHECK_HEADERS(app/Application.h) -+ ac_ext="$old_ext" -+ -+ if test "$ac_cv_header_kernel_OS_h" = yes && -+ test "$ac_cv_header_interface_View_h" = yes && -+ test "$ac_cv_header_interface_Window_h" = yes && -+ test "$ac_cv_header_interface_Screen_h" = yes && -+ test "$ac_cv_header_interface_Bitmap_h" = yes && -+ test "$ac_cv_header_support_Locker_h" = yes && -+ test "$ac_cv_header_app_Application_h" = yes; then -+ AC_PROG_CXX -+ AC_DEFINE(GRDRV_BEOS) -+ drivers="$drivers BEOS" -+ cf_have_beos=yes -+ fi -+fi -+ - AC_CHECK_LIB(z, inflate) - PKG_CHECK_MODULES(LIBPNG,libpng >= 1.0.0,pkgconfig_libpng=yes,pkgconfig_libpng=no) - if test "$pkgconfig_libpng" = "yes"; then -@@ -645,6 +676,7 @@ - - - AM_CONDITIONAL(ATHEOS_GR, test "$cf_have_atheos" = yes) -+AM_CONDITIONAL(BEOS_GR, test "$cf_have_beos" = yes) - - test "$ac_cv_have_emx" = yes && LDFLAGS="$LDFLAGS -Zexe" - -diff -urN links-2.1pre33.org/default.c links-2.1pre33/default.c ---- links-2.1pre33.org/default.c Mon Dec 24 23:33:44 2007 -+++ links-2.1pre33/default.c Sat May 3 18:30:34 2008 -@@ -452,7 +452,7 @@ - } - add_to_strn(&config_file, name); - if ((err = write_to_config_file(config_file, c))) { -- if (term) msg_box(term, NULL, TEXT(T_CONFIG_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_UNABLE_TO_WRITE_TO_CONFIG_FILE), ": ", get_err_msg(-err), NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (term) msg_box(term, NULL, TEXT(T_CONFIG_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_UNABLE_TO_WRITE_TO_CONFIG_FILE), ": ", get_err_msg(-err), NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - mem_free(c); - mem_free(config_file); - return -1; -diff -urN links-2.1pre33.org/directfb.c links-2.1pre33/directfb.c ---- links-2.1pre33.org/directfb.c Wed Nov 22 23:55:03 2006 -+++ links-2.1pre33/directfb.c Sat May 3 18:30:35 2008 -@@ -651,25 +651,25 @@ - - if (event.type == DWET_BUTTONUP) - { -- flags = B_UP; -+ flags = BTN_UP; - data->window->UngrabPointer (data->window); - } - else - { -- flags = B_DOWN; -+ flags = BTN_DOWN; - data->window->GrabPointer (data->window); - } - - switch (event.button) - { - case DIBI_LEFT: -- flags |= B_LEFT; -+ flags |= BTN_LEFT; - break; - case DIBI_RIGHT: -- flags |= B_RIGHT; -+ flags |= BTN_RIGHT; - break; - case DIBI_MIDDLE: -- flags |= B_MIDDLE; -+ flags |= BTN_MIDDLE; - break; - default: - continue; -@@ -681,8 +681,8 @@ - - case DWET_WHEEL: - gd->mouse_handler (gd, event.x, event.y, -- B_MOVE | -- (event.step > 0 ? B_WHEELUP : B_WHEELDOWN)); -+ BTN_MOVE | -+ (event.step > 0 ? BTN_WHEELUP : BTN_WHEELDOWN)); - break; - - case DWET_MOTION: -@@ -697,16 +697,16 @@ - switch (event.buttons) - { - case DIBM_LEFT: -- flags = B_DRAG | B_LEFT; -+ flags = BTN_DRAG | BTN_LEFT; - break; - case DIBM_RIGHT: -- flags = B_DRAG | B_RIGHT; -+ flags = BTN_DRAG | BTN_RIGHT; - break; - case DIBM_MIDDLE: -- flags = B_DRAG | B_MIDDLE; -+ flags = BTN_DRAG | BTN_MIDDLE; - break; - default: -- flags = B_MOVE; -+ flags = BTN_MOVE; - break; - } - -diff -urN links-2.1pre33.org/drivers.c links-2.1pre33/drivers.c ---- links-2.1pre33.org/drivers.c Mon Dec 24 23:33:44 2007 -+++ links-2.1pre33/drivers.c Sat May 3 18:30:36 2008 -@@ -31,6 +31,9 @@ - #ifdef GRDRV_ATHEOS - extern struct graphics_driver atheos_driver; - #endif -+#ifdef GRDRV_BEOS -+extern struct graphics_driver beos_driver; -+#endif - #ifdef GRDRV_SDL - extern struct graphics_driver sdl_driver; - #endif -@@ -47,6 +50,9 @@ - #endif - #ifdef GRDRV_ATHEOS - &atheos_driver, -+#endif -+#ifdef GRDRV_BEOS -+ &beos_driver, - #endif - #ifndef SPAD - #ifdef GRDRV_X -diff -urN links-2.1pre33.org/framebuffer.c links-2.1pre33/framebuffer.c ---- links-2.1pre33.org/framebuffer.c Sat Oct 27 05:36:22 2007 -+++ links-2.1pre33/framebuffer.c Sat May 3 18:30:38 2008 -@@ -322,7 +322,7 @@ - if (mouse_y < 0) mouse_y = 0; - ev.x = mouse_x; - ev.y = mouse_y; -- ev.b = B_MOVE; -+ ev.b = BTN_MOVE; - if (!current_virtual_device) return; - if (current_virtual_device->mouse_handler) current_virtual_device->mouse_handler(current_virtual_device, ev.x, ev.y, ev.b); - redraw_mouse(); -@@ -956,26 +956,26 @@ - - ev.x = mouse_x; - ev.y = mouse_y; -- if (gev.buttons & GPM_B_LEFT) ev.b = B_LEFT; -- else if (gev.buttons & GPM_B_MIDDLE) ev.b = B_MIDDLE; -- else if (gev.buttons & GPM_B_RIGHT) ev.b = B_RIGHT; -+ if (gev.buttons & GPM_B_LEFT) ev.b = BTN_LEFT; -+ else if (gev.buttons & GPM_B_MIDDLE) ev.b = BTN_MIDDLE; -+ else if (gev.buttons & GPM_B_RIGHT) ev.b = BTN_RIGHT; - else ev.b = 0; -- if (gev.type & GPM_DOWN) ev.b |= B_DOWN; -- else if (gev.type & GPM_UP) ev.b |= B_UP; -- else if (gev.type & GPM_DRAG) ev.b |= B_DRAG; -- else ev.b |= B_MOVE; -+ if (gev.type & GPM_DOWN) ev.b |= BTN_DOWN; -+ else if (gev.type & GPM_UP) ev.b |= BTN_UP; -+ else if (gev.type & GPM_DRAG) ev.b |= BTN_DRAG; -+ else ev.b |= BTN_MOVE; - - #ifndef USE_GPM_DX - if (fb_msetsize < 0) { - } else if (fb_msetsize < 10) { - fb_msetsize++; -- } else if ((ev.b & BM_ACT) == B_MOVE && !(ev.b & BM_BUTT)) { -+ } else if ((ev.b & BM_ACT) == BTN_MOVE && !(ev.b & BM_BUTT)) { - fb_mouse_setsize(); - fb_msetsize = -1; - } - #endif - -- if (((ev.b & BM_ACT) == B_MOVE && !(ev.b & BM_BUTT)) || (ev.b & BM_ACT) == B_DRAG) { -+ if (((ev.b & BM_ACT) == BTN_MOVE && !(ev.b & BM_BUTT)) || (ev.b & BM_ACT) == BTN_DRAG) { - if (can_read(fb_hgpm)) goto again; - } - -diff -urN links-2.1pre33.org/jsint.c links-2.1pre33/jsint.c ---- links-2.1pre33.org/jsint.c Sun May 27 14:23:48 2007 -+++ links-2.1pre33/jsint.c Sat May 3 18:30:39 2008 -@@ -1272,8 +1272,8 @@ - txt, /* message */ - jsid, /* data for button functions */ - 3, /* # of buttons */ -- TEXT(T_OK),js_upcall_confirm_ok_pressed,B_ENTER, /* first button */ -- TEXT(T_CANCEL),js_upcall_confirm_cancel_pressed,B_ESC, /* second button */ -+ TEXT(T_OK),js_upcall_confirm_ok_pressed,BTN_ENTER, /* first button */ -+ TEXT(T_CANCEL),js_upcall_confirm_cancel_pressed,BTN_ESC, /* second button */ - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL - ); - -@@ -1342,7 +1342,7 @@ - txt, /* message */ - jsid, /* data for button functions */ - 2, /* # of buttons */ -- TEXT(T_OK),js_upcall_alert_ok_pressed,B_ENTER|B_ESC, -+ TEXT(T_OK),js_upcall_alert_ok_pressed,BTN_ENTER|BTN_ESC, - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL - ); - -@@ -2933,8 +2933,8 @@ - jsid->n?TEXT(T_JS_IS_ATTEMPTING_TO_OPEN_NEW_WINDOW_WITH_URL):TEXT(T_JS_IS_ATTEMPTING_TO_GO_TO_URL), " \"",jsid->string,"\".",NULL, /* message */ - jsid, /* data for button functions */ - 3, /* # of buttons */ -- TEXT(T_ALLOW),js_upcall_goto_url_ok_pressed,B_ENTER, -- TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,B_ESC, -+ TEXT(T_ALLOW),js_upcall_goto_url_ok_pressed,BTN_ENTER, -+ TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,BTN_ESC, - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL /* dirty trick: gimme_js_id_string and gimme_js_id begins with the same long */ - ); - js_mem_free(s); -@@ -3089,8 +3089,8 @@ - TEXT(T_JS_IS_ATTEMPTING_TO_GO_INTO_HISTORY), txt, TEXT(T_TO_URL), " \"",url,"\".",NULL, /* message */ - jsid, /* data for button functions */ - 3, /* # of buttons */ -- TEXT(T_ALLOW),js_upcall_goto_history_ok_pressed,B_ENTER, -- TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,B_ESC, -+ TEXT(T_ALLOW),js_upcall_goto_history_ok_pressed,BTN_ENTER, -+ TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,BTN_ESC, - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL /* dirty trick: gimme_js_id_string and gimme_js_id begins with the same long */ - ); - js_mem_free(s); -diff -urN links-2.1pre33.org/kbd.c links-2.1pre33/kbd.c ---- links-2.1pre33.org/kbd.c Thu Jan 31 21:48:26 2008 -+++ links-2.1pre33/kbd.c Sat May 3 18:30:40 2008 -@@ -848,10 +848,10 @@ - ev.y = (unsigned char)(itrm->kqueue[el+3]) - ' ' - 1 + ((int)((unsigned char)(itrm->kqueue[el+4]) - ' ' - 1) << 7); - if ( ev.y & (1 << 13)) ev.y = 0; /* ev.y |= ~0 << 14; */ - switch ((itrm->kqueue[el] - ' ') ^ xterm_button) { /* Every event changhes only one bit */ -- case TW_BUTT_LEFT: ev.b = B_LEFT | ( (xterm_button & TW_BUTT_LEFT) ? B_UP : B_DOWN ); break; -- case TW_BUTT_MIDDLE: ev.b = B_MIDDLE | ( (xterm_button & TW_BUTT_MIDDLE) ? B_UP : B_DOWN ); break; -- case TW_BUTT_RIGHT: ev.b = B_RIGHT | ( (xterm_button & TW_BUTT_RIGHT) ? B_UP : B_DOWN ); break; -- case 0: ev.b = B_DRAG; -+ case TW_BUTT_LEFT: ev.b = BTN_LEFT | ( (xterm_button & TW_BUTT_LEFT) ? BTN_UP : BTN_DOWN ); break; -+ case TW_BUTT_MIDDLE: ev.b = BTN_MIDDLE | ( (xterm_button & TW_BUTT_MIDDLE) ? BTN_UP : BTN_DOWN ); break; -+ case TW_BUTT_RIGHT: ev.b = BTN_RIGHT | ( (xterm_button & TW_BUTT_RIGHT) ? BTN_UP : BTN_DOWN ); break; -+ case 0: ev.b = BTN_DRAG; - /* default : Twin protocol error */ - } - xterm_button = itrm->kqueue[el] - ' '; -@@ -859,15 +859,15 @@ - } else { - ev.x = itrm->kqueue[el+1] - ' ' - 1; - ev.y = itrm->kqueue[el+2] - ' ' - 1; -- ev.b = B_DOWN; -- if (itrm->kqueue[el] & 4) ev.b = B_DRAG; -- if ((ev.b |= (itrm->kqueue[el] & BM_BUTT) | B_DOWN) == 3) { -- ev.b = B_UP; -+ ev.b = BTN_DOWN; -+ if (itrm->kqueue[el] & 4) ev.b = BTN_DRAG; -+ if ((ev.b |= (itrm->kqueue[el] & BM_BUTT) | BTN_DOWN) == 3) { -+ ev.b = BTN_UP; - if (xterm_button != -1) ev.b |= xterm_button; - } -- /*if ((itrm->kqueue[el] & 4) && ev.b != B_UP) ev.b |= B_DRAG;*/ -+ /*if ((itrm->kqueue[el] & 4) && ev.b != BTN_UP) ev.b |= BTN_DRAG;*/ - xterm_button = -1; -- if ((ev.b & BM_ACT) == B_DOWN) xterm_button = ev.b & BM_BUTT; -+ if ((ev.b & BM_ACT) == BTN_DOWN) xterm_button = ev.b & BM_BUTT; - el += 3; - } - ev.ev = EV_MOUSE; -diff -urN links-2.1pre33.org/links-beos.rdef links-2.1pre33/links-beos.rdef ---- links-2.1pre33.org/links-beos.rdef Thu Jan 1 01:00:00 1970 -+++ links-2.1pre33/links-beos.rdef Sat May 3 23:50:16 2008 -@@ -0,0 +1,97 @@ -+/* -+** links-beos.rdef -+** -+** Automatically generated by BResourceParser on -+** Thursday, December 13, 2007 at 23:46:45. -+** -+*/ -+ -+resource(1, "BEOS:APP_FLAGS") (#'APPF') $"01000000"; -+ -+resource(1, "BEOS:APP_VERSION") #'APPV' array { -+ $"02000000010000000000000000000000210000006C696E6B7320322E31707265" -+ $"3333000000000000000000000000000000000000000000000000000000000000" -+ $"00000000000000000000000000000000000000004C696E6B732062726F777365" -+ $"7220322E31707265333300000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000" -+}; -+ -+resource(101, "BEOS:L:STD_ICON") #'ICON' array { -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2B2B2B2B2B2B2B2B2B2B2B2C0000363434343434343434343434343434" -+ $"2A2A2A3200000000000000000000000000363434343434343434343434343434" -+ $"2A2A2A2FF1313200000000000131310000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A30000000002B2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2C2C2C2C2C2C2C30000000002C2C2D0000373636363636363636363636363636" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"2222222222222226000000002222230000151A1A1A1A1A1A1A1A1A1A1A1A1A1A" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F1501113F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0E00133F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0500163F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F1A0000193F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F0C00001B3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F190000001E3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F1A030000013F3F3F3F3F" -+ $"20202020202020270000000023202200001A3F1E170C00000000043F3F3F3F3F" -+ $"2020202628292900000000000029290000040300000000000000063F3F3F3F3F" -+ $"20202027292929292929292929292900000203030303030303030B3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+}; -+ -+resource(101, "BEOS:M:STD_ICON") #'MICN' array { -+ $"2A2A2A2A2A2A2A303A34343434343434" -+ $"2A2C3030303030F73A34343434343434" -+ $"2A2B2D300000EB323A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"303030310000F1333D3A3A3A3A3A3A3A" -+ $"2626262700002629050D0D0D0D0D0D0D" -+ $"20202022000020260D3F3F3F1D143F3F" -+ $"20202022000020260D3F3F3F140A3F3F" -+ $"20202022000020260D3F3F3F090D3F3F" -+ $"20202022000020260D3F3F16000F3F3F" -+ $"20222427000026280710090000123F3F" -+ $"202225252525252807111111111A3F3F" -+ $"20202020202020260D3F3F3F3F3F3F3F" -+}; -+ -+resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.links"; -+ -+resource(1, "BEOS:FILE_TYPES") message { -+ "types" = "text/html", -+ "types" = "application/x-vnd.Be-bookmark", -+ "types" = "application/x-vnd.Be.URL.http" -+}; -+ -diff -urN links-2.1pre33.org/links.h links-2.1pre33/links.h ---- links-2.1pre33.org/links.h Thu Jan 31 21:50:40 2008 -+++ links-2.1pre33/links.h Sat May 3 18:30:41 2008 -@@ -1295,26 +1295,26 @@ - /* kbd.c */ - - #define BM_BUTT 15 --#define B_LEFT 0 --#define B_MIDDLE 1 --#define B_RIGHT 2 --#define B_FOURTH 3 --#define B_FIFTH 4 --#define B_SIXTH 5 --#define B_WHEELUP 8 --#define B_WHEELDOWN 9 --#define B_WHEELUP1 10 --#define B_WHEELDOWN1 11 --#define B_WHEELLEFT 12 --#define B_WHEELRIGHT 13 --#define B_WHEELLEFT1 14 --#define B_WHEELRIGHT1 15 -+#define BTN_LEFT 0 -+#define BTN_MIDDLE 1 -+#define BTN_RIGHT 2 -+#define BTN_FOURTH 3 -+#define BTN_FIFTH 4 -+#define BTN_SIXTH 5 -+#define BTN_WHEELUP 8 -+#define BTN_WHEELDOWN 9 -+#define BTN_WHEELUP1 10 -+#define BTN_WHEELDOWN1 11 -+#define BTN_WHEELLEFT 12 -+#define BTN_WHEELRIGHT 13 -+#define BTN_WHEELLEFT1 14 -+#define BTN_WHEELRIGHT1 15 - - #define BM_ACT 48 --#define B_DOWN 0 --#define B_UP 16 --#define B_DRAG 32 --#define B_MOVE 48 -+#define BTN_DOWN 0 -+#define BTN_UP 16 -+#define BTN_DRAG 32 -+#define BTN_MOVE 48 - - #define KBD_ENTER -0x100 - #define KBD_BS -0x101 -@@ -3302,15 +3302,15 @@ - #define D_FIELD_PASS 3 - #define D_BUTTON 4 - --#define B_ENTER 1 --#define B_ESC 2 -+#define BTN_ENTER 1 -+#define BTN_ESC 2 - - struct dialog_item_data; - struct dialog_data; - - struct dialog_item { - int type; -- int gid, gnum; /* for buttons: gid - flags B_XXX */ /* for fields: min/max */ /* for box: gid is box height */ -+ int gid, gnum; /* for buttons: gid - flags BTN_XXX */ /* for fields: min/max */ /* for box: gid is box height */ - int (*fn)(struct dialog_data *, struct dialog_item_data *); - struct history *history; - int dlen; -diff -urN links-2.1pre33.org/listedit.c links-2.1pre33/listedit.c ---- links-2.1pre33.org/listedit.c Sun Jul 8 01:23:40 2007 -+++ links-2.1pre33/listedit.c Sat May 3 18:30:43 2008 -@@ -754,7 +754,7 @@ - TEXT(T_NO_ITEMS_SELECTED), /* text */ - NULL, /* data */ - 1, /* # of buttons */ -- TEXT(T_OK),NULL,B_ESC|B_ENTER /* button1 */ -+ TEXT(T_OK),NULL,BTN_ESC|BTN_ENTER /* button1 */ - ); - else - { -@@ -936,8 +936,8 @@ - TEXT(T_FOLDER)," \"",txt,"\" ",TEXT(T_NOT_EMPTY_SURE_DELETE),NULL, /* text */ - narez, /* data for ld->delete_item */ - 2, /* # of buttons */ -- TEXT(T_NO),NULL,B_ESC, /* button1 */ -- TEXT(T_YES),delete_folder_recursively,B_ENTER /* button2 */ -+ TEXT(T_NO),NULL,BTN_ESC, /* button1 */ -+ TEXT(T_YES),delete_folder_recursively,BTN_ENTER /* button2 */ - ); - else - msg_box( -@@ -948,8 +948,8 @@ - TEXT(T_SURE_DELETE)," ",TEXT(T_fOLDER)," \"",txt,"\"?",NULL, /* null-terminated text */ - narez, /* data for ld->delete_item */ - 2, /* # of buttons */ -- TEXT(T_YES),delete_ok,B_ENTER, /* button1 */ -- TEXT(T_NO),NULL,B_ESC /* button2 */ -+ TEXT(T_YES),delete_ok,BTN_ENTER, /* button1 */ -+ TEXT(T_NO),NULL,BTN_ESC /* button2 */ - ); - } - else /* item */ -@@ -961,8 +961,8 @@ - TEXT(T_SURE_DELETE)," ",TEXT(ld->item_description)," \"",txt,"\"?",NULL, /* null-terminated text */ - narez, /* data for ld->delete_item */ - 2, /* # of buttons */ -- TEXT(T_YES),delete_ok,B_ENTER, /* button1 */ -- TEXT(T_NO),NULL,B_ESC /* button2 */ -+ TEXT(T_YES),delete_ok,BTN_ENTER, /* button1 */ -+ TEXT(T_NO),NULL,BTN_ESC /* button2 */ - ); - return 0; - } -@@ -1507,7 +1507,7 @@ - struct session *ses=(struct session *)(dlg->dlg->udata); - struct list* item; - -- if (!ld->search_word) {msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); return;} -+ if (!ld->search_word) {msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); return;} - - if ((item=ld->find_item(ld->current_pos,ld->search_word,direction))) - { -@@ -1523,7 +1523,7 @@ - if (!F) if (!ses->term->spec->block_cursor || ses->term->spec->braille) set_cursor(ses->term, dlg->x + DIALOG_LB, dlg->y+DIALOG_TB+ld->win_pos, dlg->x + DIALOG_LB, dlg->y+DIALOG_TB+ld->win_pos); - } - else -- msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - - } - -@@ -1761,7 +1761,7 @@ - - case EV_MOUSE: - /* toggle select item */ -- if ((ev->b&BM_ACT)==B_DOWN&&(ev->b&BM_BUTT)==B_RIGHT) -+ if ((ev->b&BM_ACT)==BTN_DOWN&&(ev->b&BM_BUTT)==BTN_RIGHT) - { - int n,a; - struct list *l=ld->win_offset; -@@ -1793,7 +1793,7 @@ - return EVENT_PROCESSED; - } - /* click on item */ -- if ((ev->b&BM_ACT)==B_DOWN&&(ev->b&BM_BUTT)==B_LEFT) -+ if ((ev->b&BM_ACT)==BTN_DOWN&&(ev->b&BM_BUTT)==BTN_LEFT) - { - int n,a; - struct list *l=ld->win_offset; -@@ -1832,7 +1832,7 @@ - } - /* scroll with the bar */ - #ifdef G -- if (F&&((ev->b&BM_ACT)==B_DRAG&&(ev->b&BM_BUTT)==B_LEFT)) -+ if (F&&((ev->b&BM_ACT)==BTN_DRAG&&(ev->b&BM_BUTT)==BTN_LEFT)) - { - int total=get_total_items(ld); - int scroll_pos=get_scroll_pos(ld); -@@ -1876,7 +1876,7 @@ - - } - #endif -- if ((ev->b&BM_ACT)==B_DRAG&&(ev->b&BM_BUTT)==B_MIDDLE) -+ if ((ev->b&BM_ACT)==BTN_DRAG&&(ev->b&BM_BUTT)==BTN_MIDDLE) - { - long delta=(ev->y-last_mouse_y)/MOUSE_SCROLL_DIVIDER; - -@@ -1913,12 +1913,12 @@ - - } - /* mouse wheel */ -- if ((ev->b&BM_ACT)==B_MOVE&&((ev->b&BM_BUTT)==B_WHEELUP||(ev->b&BM_BUTT)==B_WHEELDOWN||(ev->b&BM_BUTT)==B_WHEELDOWN1||(ev->b&BM_BUTT)==B_WHEELUP1)) -+ if ((ev->b&BM_ACT)==BTN_MOVE&&((ev->b&BM_BUTT)==BTN_WHEELUP||(ev->b&BM_BUTT)==BTN_WHEELDOWN||(ev->b&BM_BUTT)==BTN_WHEELDOWN1||(ev->b&BM_BUTT)==BTN_WHEELUP1)) - { - int button=(ev->b)&BM_BUTT; - last_mouse_y=ev->y; - -- if (button==B_WHEELDOWN||button==B_WHEELDOWN1) /* scroll down */ -+ if (button==BTN_WHEELDOWN||button==BTN_WHEELDOWN1) /* scroll down */ - { - if (next_in_tree(ld,ld->current_pos)==ld->list)return EVENT_PROCESSED; /* already at the bottom */ - ld->current_pos=next_in_tree(ld,ld->current_pos); -@@ -1932,7 +1932,7 @@ - } - draw_to_window(dlg->win,redraw_list_line,&rd); - } -- if (button==B_WHEELUP||button==B_WHEELUP1) /* scroll up */ -+ if (button==BTN_WHEELUP||button==BTN_WHEELUP1) /* scroll up */ - { - if (ld->current_pos==ld->list)return EVENT_PROCESSED; /* already on the top */ - ld->current_pos=prev_in_tree(ld,ld->current_pos); -@@ -2043,7 +2043,7 @@ - TEXT(ld->already_in_use), - NULL, - 1, -- TEXT(T_OK),NULL,B_ENTER|B_ESC -+ TEXT(T_OK),NULL,BTN_ENTER|BTN_ESC - ); - return 1; - } -@@ -2108,7 +2108,7 @@ - d->items[a+4].fn=list_item_unselect; - - d->items[a+5].type=D_BUTTON; -- d->items[a+5].gid=B_ESC; -+ d->items[a+5].gid=BTN_ESC; - d->items[a+5].fn=cancel_dialog; - d->items[a+5].text=TEXT(T_CLOSE); - -diff -urN links-2.1pre33.org/mailto.c links-2.1pre33/mailto.c ---- links-2.1pre33.org/mailto.c Mon Dec 24 23:33:46 2007 -+++ links-2.1pre33/mailto.c Sat May 3 18:37:06 2008 -@@ -15,7 +15,7 @@ - { - unsigned char *prog, *cmd; - if (!(prog = get_prog(list)) || !*prog) { -- msg_box(term, NULL, TEXT(T_NO_PROGRAM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_NO_PROGRAM_SPECIFIED_FOR), " ", name, ".", NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_NO_PROGRAM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_NO_PROGRAM_SPECIFIED_FOR), " ", name, ".", NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - if ((cmd = subst_file(prog, param, 0))) { -@@ -42,7 +42,7 @@ - fail1: - mem_free(user); - fail: -- if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_BAD_MAILTO_URL), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_BAD_MAILTO_URL), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - void tn_func(struct session *ses, unsigned char *url, struct list_head *prog, unsigned char *t1, unsigned char *t2) -@@ -71,7 +71,7 @@ - fail1: - mem_free(hh); - fail: -- if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, t2, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, t2, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - -@@ -88,7 +88,7 @@ - void mms_func(struct session *ses, unsigned char *url) - { - if (check_shell_url(url)) { -- msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_MMS_URL_CONTAINS_INACCEPTABLE_CHARACTERS), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_MMS_URL_CONTAINS_INACCEPTABLE_CHARACTERS), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - prog_func(ses->term, &mms_prog, url, TEXT(T_MMS)); -diff -urN links-2.1pre33.org/main.c links-2.1pre33/main.c ---- links-2.1pre33.org/main.c Tue Dec 11 19:45:38 2007 -+++ links-2.1pre33/main.c Sat May 3 18:30:43 2008 -@@ -277,6 +277,7 @@ - - void initialize_all_subsystems(void); - void initialize_all_subsystems_2(void); -+extern void maybe_force_gr(void); - - void init(void) - { -@@ -294,6 +295,9 @@ - retval = RET_FATAL; - goto ttt; - } -+#if defined(G) && defined(BEOS) -+ maybe_force_gr(); -+#endif - if (!(u = parse_options(g_argc - 1, g_argv + 1))) { - retval = RET_SYNTAX; - goto ttt; -diff -urN links-2.1pre33.org/menu.c links-2.1pre33/menu.c ---- links-2.1pre33.org/menu.c Mon Dec 24 23:33:46 2007 -+++ links-2.1pre33/menu.c Sat May 3 18:38:44 2008 -@@ -86,17 +86,17 @@ - - void menu_about(struct terminal *term, void *d, struct session *ses) - { -- msg_box(term, NULL, TEXT(T_ABOUT), AL_CENTER, TEXT(T_LINKS__LYNX_LIKE), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_ABOUT), AL_CENTER, TEXT(T_LINKS__LYNX_LIKE), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - void menu_keys(struct terminal *term, void *d, struct session *ses) - { -- msg_box(term, NULL, TEXT(T_KEYS), AL_LEFT | AL_MONO, TEXT(T_KEYS_DESC), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_KEYS), AL_LEFT | AL_MONO, TEXT(T_KEYS_DESC), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - void menu_copying(struct terminal *term, void *d, struct session *ses) - { -- msg_box(term, NULL, TEXT(T_COPYING), AL_CENTER, TEXT(T_COPYING_DESC), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_COPYING), AL_CENTER, TEXT(T_COPYING_DESC), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - void menu_manual(struct terminal *term, void *d, struct session *ses) -@@ -157,7 +157,7 @@ - void query_exit(struct session *ses) - { - ses->exit_query = 1; -- msg_box(ses->term, NULL, TEXT(T_EXIT_LINKS), AL_CENTER, (ses->term->next == ses->term->prev && are_there_downloads()) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS_AND_TERMINATE_ALL_DOWNLOADS) : (!F || ses->term->next == ses->term->prev) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS) : TEXT(T_DO_YOU_REALLY_WANT_TO_CLOSE_WINDOW), ses, 2, TEXT(T_YES), (void (*)(void *))really_exit_prog, B_ENTER, TEXT(T_NO), dont_exit_prog, B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_EXIT_LINKS), AL_CENTER, (ses->term->next == ses->term->prev && are_there_downloads()) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS_AND_TERMINATE_ALL_DOWNLOADS) : (!F || ses->term->next == ses->term->prev) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS) : TEXT(T_DO_YOU_REALLY_WANT_TO_CLOSE_WINDOW), ses, 2, TEXT(T_YES), (void (*)(void *))really_exit_prog, BTN_ENTER, TEXT(T_NO), dont_exit_prog, BTN_ESC); - } - - void exit_prog(struct terminal *term, void *d, struct session *ses) -@@ -284,7 +284,7 @@ - l = 0, a15 = init_str(); add_to_str(&a15, &l, ", "); add_num_to_str(&a15, &l, formatted_info(CI_LOCKED));add_to_str(&a15, &l, " "); - l = 0, a16 = init_str(); add_to_str(&a16, &l, "."); - -- if (!F) msg_box(term, getml(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, NULL), TEXT(T_RESOURCES), AL_LEFT | AL_EXTD_TEXT, TEXT(T_RESOURCES), a1, TEXT(T_HANDLES), a2, TEXT(T_TIMERS), a3, TEXT(T_CONNECTIONS), a4, TEXT(T_cONNECTIONS), a5, TEXT(T_CONNECTING), a6, TEXT(T_tRANSFERRING), a7, TEXT(T_KEEPALIVE), a8, TEXT(T_MEMORY_CACHE), a9, TEXT(T_BYTES), a10, TEXT(T_FILES), a11, TEXT(T_LOCKED), a12, TEXT(T_LOADING), a13, TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ if (!F) msg_box(term, getml(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, NULL), TEXT(T_RESOURCES), AL_LEFT | AL_EXTD_TEXT, TEXT(T_RESOURCES), a1, TEXT(T_HANDLES), a2, TEXT(T_TIMERS), a3, TEXT(T_CONNECTIONS), a4, TEXT(T_cONNECTIONS), a5, TEXT(T_CONNECTING), a6, TEXT(T_tRANSFERRING), a7, TEXT(T_KEEPALIVE), a8, TEXT(T_MEMORY_CACHE), a9, TEXT(T_BYTES), a10, TEXT(T_FILES), a11, TEXT(T_LOCKED), a12, TEXT(T_LOADING), a13, TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - #ifdef G - else msg_box(term, getml(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, - a12, a13, b14, b15, b16, b17, a14, a15, a16, -@@ -299,7 +299,7 @@ - TEXT(T_BYTES), b15, TEXT(T_IMAGES), b16, TEXT(T_LOCKED), - b17, TEXT(T_FONT_CACHE), c14, TEXT(T_BYTES), c15, - TEXT(T_BYTES_MAX), c16, TEXT(T_LETTERS), c17, -- TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - #endif - r->win = term->windows.next; - ((struct dialog_data *)r->win->data)->dlg->abort = refresh_abort; -@@ -328,7 +328,7 @@ - add_to_str(&a, &l, "\n"); - add_to_str(&a, &l, ce->url); - } -- msg_box(term, getml(a, NULL), TEXT(T_CACHE_INFO), AL_LEFT | AL_EXTD_TEXT, TEXT(T_CACHE_CONTENT), a, NULL, r, 1, TEXT(T_OK), end_refresh, B_ENTER | B_ESC); -+ msg_box(term, getml(a, NULL), TEXT(T_CACHE_INFO), AL_LEFT | AL_EXTD_TEXT, TEXT(T_CACHE_CONTENT), a, NULL, r, 1, TEXT(T_OK), end_refresh, BTN_ENTER | BTN_ESC); - r->win = term->windows.next; - r->timer = install_timer(RESOURCE_INFO_REFRESH, (void (*)(void *))refresh, r); - /* !!! the refresh here is buggy */ -@@ -385,7 +385,7 @@ - } - #endif - p = stracpy(message); -- msg_box(term, getml(p, NULL), TEXT(T_MEMORY_INFO), AL_CENTER, p, r, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, getml(p, NULL), TEXT(T_MEMORY_INFO), AL_CENTER, p, r, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - r->win = term->windows.next; - ((struct dialog_data *)r->win->data)->dlg->abort = refresh_abort; - r->timer = install_timer(RESOURCE_INFO_REFRESH, (void (*)(void *))refresh, r); -@@ -596,11 +596,11 @@ - d->items[9].dlen = sizeof(int); - d->items[9].data = (void *)&ts->braille; - d->items[10].type = D_BUTTON; -- d->items[10].gid = B_ENTER; -+ d->items[10].gid = BTN_ENTER; - d->items[10].fn = ok_dialog; - d->items[10].text = TEXT(T_OK); - d->items[11].type = D_BUTTON; -- d->items[11].gid = B_ESC; -+ d->items[11].gid = BTN_ESC; - d->items[11].fn = cancel_dialog; - d->items[11].text = TEXT(T_CANCEL); - d->items[12].type = D_END; -@@ -707,11 +707,11 @@ - d->items[8].gid = 1024; - d->items[8].gnum = 30*1024; - d->items[9].type = D_BUTTON; -- d->items[9].gid = B_ENTER; -+ d->items[9].gid = BTN_ENTER; - d->items[9].fn = ok_dialog; - d->items[9].text = TEXT(T_OK); - d->items[10].type = D_BUTTON; -- d->items[10].gid = B_ESC; -+ d->items[10].gid = BTN_ESC; - d->items[10].fn = cancel_dialog; - d->items[10].text = TEXT(T_CANCEL); - d->items[11].type = D_END; -@@ -832,11 +832,11 @@ - d->items[13].dlen = MAX_STR_LEN; - d->items[13].data = bugs->fake_referer; - d->items[14].type = D_BUTTON; -- d->items[14].gid = B_ENTER; -+ d->items[14].gid = BTN_ENTER; - d->items[14].fn = ok_dialog; - d->items[14].text = TEXT(T_OK); - d->items[15].type = D_BUTTON; -- d->items[15].gid = B_ESC; -+ d->items[15].gid = BTN_ESC; - d->items[15].fn = cancel_dialog; - d->items[15].text = TEXT(T_CANCEL); - d->items[16].type = D_END; -@@ -911,12 +911,12 @@ - a = 3; - #endif - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -1134,11 +1134,11 @@ - d->items[13].dlen = sizeof(int); - d->items[13].data = (void *)&gamma_bits; - d->items[14].type = D_BUTTON; -- d->items[14].gid = B_ENTER; -+ d->items[14].gid = BTN_ENTER; - d->items[14].fn = ok_dialog; - d->items[14].text = TEXT(T_OK); - d->items[15].type = D_BUTTON; -- d->items[15].gid = B_ESC; -+ d->items[15].gid = BTN_ESC; - d->items[15].fn = cancel_dialog; - d->items[15].text = TEXT(T_CANCEL); - d->items[16].type = D_END; -@@ -1250,11 +1250,11 @@ - d->items[3].data = (unsigned char *)&p->only_proxies; - d->items[3].dlen = sizeof(int); - d->items[4].type = D_BUTTON; -- d->items[4].gid = B_ENTER; -+ d->items[4].gid = BTN_ENTER; - d->items[4].fn = ok_dialog; - d->items[4].text = TEXT(T_OK); - d->items[5].type = D_BUTTON; -- d->items[5].gid = B_ESC; -+ d->items[5].gid = BTN_ESC; - d->items[5].fn = cancel_dialog; - d->items[5].text = TEXT(T_CANCEL); - d->items[6].type = D_END; -@@ -1343,11 +1343,11 @@ - d->items[9].data = (unsigned char *)&ftp_options; - d->items[9].dlen = sizeof(struct ftp_options); - d->items[10].type = D_BUTTON; -- d->items[10].gid = B_ENTER; -+ d->items[10].gid = BTN_ENTER; - d->items[10].fn = ok_dialog; - d->items[10].text = TEXT(T_OK); - d->items[11].type = D_BUTTON; -- d->items[11].gid = B_ESC; -+ d->items[11].gid = BTN_ESC; - d->items[11].fn = cancel_dialog; - d->items[11].text = TEXT(T_CANCEL); - d->items[12].type = D_END; -@@ -1481,11 +1481,11 @@ - } - #endif - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a++].text = TEXT(T_OK); - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a++].text = TEXT(T_CANCEL); - d->items[a].type = D_END; -@@ -1498,7 +1498,7 @@ - net_options(term, xxx, yyy); - return; - } -- msg_box(term, NULL, _("Network options"), AL_CENTER, _("Warning: configuring network will terminate all running downloads. Do you really want to configure network?"), term, 2, _("Yes"), (void (*)(void *))net_options, B_ENTER, _("No"), NULL, B_ESC); -+ msg_box(term, NULL, _("Network options"), AL_CENTER, _("Warning: configuring network will terminate all running downloads. Do you really want to configure network?"), term, 2, _("Yes"), (void (*)(void *))net_options, BTN_ENTER, _("No"), NULL, BTN_ESC); - }*/ - - unsigned char mc_str[8]; -@@ -1581,12 +1581,12 @@ - d->items[a].data = (void *)&http_bugs.aggressive_cache; - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -1746,12 +1746,12 @@ - a++; - if (!F){ - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -1777,12 +1777,12 @@ - d->items[a].dlen = sizeof(int); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -2038,12 +2038,12 @@ - } - #endif - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -2111,11 +2111,11 @@ - d->items[1].gid = 1; - d->items[1].gnum = 999; - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ENTER; -+ d->items[2].gid = BTN_ENTER; - d->items[2].fn = ok_dialog; - d->items[2].text = TEXT(T_OK); - d->items[3].type = D_BUTTON; -- d->items[3].gid = B_ESC; -+ d->items[3].gid = BTN_ESC; - d->items[3].fn = cancel_dialog; - d->items[3].text = TEXT(T_CANCEL); - d->items[4].type = D_END; -@@ -2510,8 +2510,8 @@ - TEXT(T_FILE), " ", h->file, " ", TEXT(T_ALREADY_EXISTS_AS_DOWNLOAD), " ", TEXT(T_DO_YOU_WISH_TO_OVERWRITE), NULL, - h, - 3, -- TEXT(T_OVERWRITE), does_file_exist_ok, B_ENTER, -- TEXT(T_CANCEL), does_file_exist_cancel, B_ESC, -+ TEXT(T_OVERWRITE), does_file_exist_ok, BTN_ENTER, -+ TEXT(T_CANCEL), does_file_exist_cancel, BTN_ESC, - TEXT(T_RENAME), does_file_exist_rename, NULL - ); - return; -@@ -2537,8 +2537,8 @@ - TEXT(T_FILE), " ", h->file, " ", TEXT(T_ALREADY_EXISTS), " ", TEXT(T_DO_YOU_WISH_TO_OVERWRITE), NULL, - h, - 3, -- TEXT(T_OVERWRITE), does_file_exist_ok, B_ENTER, -- TEXT(T_CANCEL), does_file_exist_cancel, B_ESC, -+ TEXT(T_OVERWRITE), does_file_exist_ok, BTN_ENTER, -+ TEXT(T_CANCEL), does_file_exist_cancel, BTN_ESC, - TEXT(T_RENAME), does_file_exist_rename, NULL - ); - } -diff -urN links-2.1pre33.org/objreq.c links-2.1pre33/objreq.c ---- links-2.1pre33.org/objreq.c Mon Dec 24 23:33:46 2007 -+++ links-2.1pre33/objreq.c Sat May 3 18:30:44 2008 -@@ -167,12 +167,12 @@ - d->items[1].data = a->passwd; - - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ENTER; -+ d->items[2].gid = BTN_ENTER; - d->items[2].fn = auth_ok; - d->items[2].text = TEXT(T_OK); - - d->items[3].type = D_BUTTON; -- d->items[3].gid = B_ESC; -+ d->items[3].gid = BTN_ESC; - d->items[3].fn = auth_cancel; - d->items[3].text = TEXT(T_CANCEL); - -diff -urN links-2.1pre33.org/os_dep.c links-2.1pre33/os_dep.c ---- links-2.1pre33.org/os_dep.c Fri Dec 28 07:40:31 2007 -+++ links-2.1pre33/os_dep.c Sat May 3 21:08:57 2008 -@@ -1071,7 +1071,7 @@ - - #if defined(BEOS) - --#include -+#include - - int thr_sem_init = 0; - sem_id thr_sem; -@@ -1263,16 +1263,16 @@ - ev.x = ms->col; - ev.y = ms->row; - /*debug("status: %d %d %d", ms->col, ms->row, ms->fs);*/ -- if (ms->fs & (MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN)) ev.b = status = B_DOWN | (ms->fs & MOUSE_BN1_DOWN ? B_LEFT : ms->fs & MOUSE_BN2_DOWN ? B_MIDDLE : B_RIGHT); -+ if (ms->fs & (MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN)) ev.b = status = BTN_DOWN | (ms->fs & MOUSE_BN1_DOWN ? BTN_LEFT : ms->fs & MOUSE_BN2_DOWN ? BTN_MIDDLE : BTN_RIGHT); - else if (ms->fs & (MOUSE_MOTION_WITH_BN1_DOWN | MOUSE_MOTION_WITH_BN2_DOWN | MOUSE_MOTION_WITH_BN3_DOWN)) { -- int b = ms->fs & MOUSE_MOTION_WITH_BN1_DOWN ? B_LEFT : ms->fs & MOUSE_MOTION_WITH_BN2_DOWN ? B_MIDDLE : B_RIGHT; -- if (status == -1) b |= B_DOWN; -- else b |= B_DRAG; -+ int b = ms->fs & MOUSE_MOTION_WITH_BN1_DOWN ? BTN_LEFT : ms->fs & MOUSE_MOTION_WITH_BN2_DOWN ? BTN_MIDDLE : BTN_RIGHT; -+ if (status == -1) b |= BTN_DOWN; -+ else b |= BTN_DRAG; - ev.b = status = b; - } - else { - if (status == -1) continue; -- ev.b = (status & BM_BUTT) | B_UP; -+ ev.b = (status & BM_BUTT) | BTN_UP; - status = -1; - } - if (hard_write(oms->p[1], (unsigned char *)&ev, sizeof(struct event)) != sizeof(struct event)) break; -@@ -1598,13 +1598,13 @@ - ev.y = gev.y - 1; - if (ev.x < 0) ev.x = 0; - if (ev.y < 0) ev.y = 0; -- if (gev.buttons & GPM_B_LEFT) ev.b = B_LEFT; -- else if (gev.buttons & GPM_B_MIDDLE) ev.b = B_MIDDLE; -- else if (gev.buttons & GPM_B_RIGHT) ev.b = B_RIGHT; -+ if (gev.buttons & GPM_B_LEFT) ev.b = BTN_LEFT; -+ else if (gev.buttons & GPM_B_MIDDLE) ev.b = BTN_MIDDLE; -+ else if (gev.buttons & GPM_B_RIGHT) ev.b = BTN_RIGHT; - else return; -- if (gev.type & GPM_DOWN) ev.b |= B_DOWN; -- else if (gev.type & GPM_UP) ev.b |= B_UP; -- else if (gev.type & GPM_DRAG) ev.b |= B_DRAG; -+ if (gev.type & GPM_DOWN) ev.b |= BTN_DOWN; -+ else if (gev.type & GPM_UP) ev.b |= BTN_UP; -+ else if (gev.type & GPM_DRAG) ev.b |= BTN_DRAG; - else return; - gms->fn(gms->data, (char *)&ev, sizeof(struct event)); - } -diff -urN links-2.1pre33.org/os_dep.h links-2.1pre33/os_dep.h ---- links-2.1pre33.org/os_dep.h Wed Dec 26 07:00:48 2007 -+++ links-2.1pre33/os_dep.h Sat May 3 18:30:45 2008 -@@ -111,11 +111,15 @@ - #define SHARED_CONFIG_DIR "/etc/" - #define NO_FORK_ON_EXIT - #define ASSOC_BLOCK -+#define SET_WINDOW_TITLE_UTF_8 - - #include - #include --#include -+#include - -+#ifdef __cplusplus -+extern "C" { -+#endif - int be_socket(int, int, int); - int be_connect(int, struct sockaddr *, int); - int be_getpeername(int, struct sockaddr *, int *); -@@ -129,6 +133,9 @@ - int be_close(int); - int be_select(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *); - int be_getsockopt(int, int, int, void *, int *); -+#ifdef __cplusplus -+} -+#endif - - #elif defined(RISCOS) - -diff -urN links-2.1pre33.org/os_depx.h links-2.1pre33/os_depx.h ---- links-2.1pre33.org/os_depx.h Sun Jul 8 01:23:40 2007 -+++ links-2.1pre33/os_depx.h Sat May 3 18:30:46 2008 -@@ -45,6 +45,8 @@ - #endif - - #ifdef BEOS -+#if IPPROTO_TCP != 6 -+/* net_server */ - #define socket be_socket - #define connect be_connect - #define getpeername be_getpeername -@@ -58,16 +60,22 @@ - #define close be_close - #define select be_select - #define getsockopt be_getsockopt -+/* -+#ifdef errno -+#undef errno -+#endif -+#define errno 1 -+*/ -+#endif - #ifndef PF_INET - #define PF_INET AF_INET - #endif - #ifndef SO_ERROR - #define SO_ERROR 10001 - #endif --#ifdef errno --#undef errno -+#ifndef FDSETSIZE -+#define FDSETSIZE FD_SETSIZE - #endif --#define errno 1 - #endif - - #if defined(O_SIZE) && defined(__EMX__) -@@ -83,6 +91,9 @@ - #elif defined(GRDRV_ATHEOS) - #define loop_select ath_select - int ath_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); -+#elif defined(GRDRV_BEOS) -+#define loop_select be_loop_select -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); - #else - #define loop_select select - #endif -diff -urN links-2.1pre33.org/pmshell.c links-2.1pre33/pmshell.c ---- links-2.1pre33.org/pmshell.c Fri Dec 28 07:40:31 2007 -+++ links-2.1pre33/pmshell.c Sat May 3 18:30:46 2008 -@@ -287,33 +287,33 @@ - case WM_BUTTON1DOWN: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- win->button |= 1 << B_LEFT; -+ win->button |= 1 << BTN_LEFT; - win->lastpos = (unsigned)mp1; -- pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_DOWN | B_LEFT, 0); -+ pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_DOWN | BTN_LEFT, 0); - pm_unlock; - break; - case WM_BUTTON2DOWN: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- win->button |= 1 << B_RIGHT; -+ win->button |= 1 << BTN_RIGHT; - win->lastpos = (unsigned)mp1; -- pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_DOWN | B_RIGHT, 0); -+ pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_DOWN | BTN_RIGHT, 0); - pm_unlock; - break; - case WM_BUTTON3DOWN: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- win->button |= 1 << B_MIDDLE; -+ win->button |= 1 << BTN_MIDDLE; - win->lastpos = (unsigned)mp1; -- pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_DOWN | B_MIDDLE, 0); -+ pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_DOWN | BTN_MIDDLE, 0); - pm_unlock; - break; - case WM_BUTTON1UP: - case WM_BUTTON1MOTIONEND: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if (win->button & (1 << B_LEFT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_UP | B_LEFT, 0); -- win->button &= ~(1 << B_LEFT); -+ if (win->button & (1 << BTN_LEFT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_UP | BTN_LEFT, 0); -+ win->button &= ~(1 << BTN_LEFT); - win->lastpos = (unsigned)mp1; - pm_unlock; - break; -@@ -321,8 +321,8 @@ - case WM_BUTTON2MOTIONEND: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if (win->button & (1 << B_RIGHT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_UP | B_RIGHT, 0); -- win->button &= ~(1 << B_RIGHT); -+ if (win->button & (1 << BTN_RIGHT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_UP | BTN_RIGHT, 0); -+ win->button &= ~(1 << BTN_RIGHT); - win->lastpos = (unsigned)mp1; - pm_unlock; - break; -@@ -330,8 +330,8 @@ - case WM_BUTTON3MOTIONEND: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if (win->button & (1 << B_MIDDLE)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_UP | B_MIDDLE, 0); -- win->button &= ~(1 << B_MIDDLE); -+ if (win->button & (1 << BTN_MIDDLE)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_UP | BTN_MIDDLE, 0); -+ win->button &= ~(1 << BTN_MIDDLE); - win->lastpos = (unsigned)mp1; - pm_unlock; - break; -@@ -340,19 +340,19 @@ - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } - if (win->lastpos == (unsigned)mp1) { pm_unlock; break; } - win->lastpos = (unsigned)mp1; -- pm_send_mouse_event(win, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), (win->button ? B_DRAG : B_MOVE) | (win->button & (1 << B_LEFT) ? B_LEFT : win->button & (1 << B_MIDDLE) ? B_MIDDLE : win->button & (1 << B_RIGHT) ? B_RIGHT : 0)); -+ pm_send_mouse_event(win, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), (win->button ? BTN_DRAG : BTN_MOVE) | (win->button & (1 << BTN_LEFT) ? BTN_LEFT : win->button & (1 << BTN_MIDDLE) ? BTN_MIDDLE : win->button & (1 << BTN_RIGHT) ? BTN_RIGHT : 0)); - pm_unlock; - break; - case WM_VSCROLL: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if ((unsigned)mp2 == SB_LINEUP << 16 || (unsigned)mp2 == SB_LINEDOWN << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINEUP << 16 ? B_WHEELUP1 : B_WHEELDOWN1) | B_MOVE, 0); -+ if ((unsigned)mp2 == SB_LINEUP << 16 || (unsigned)mp2 == SB_LINEDOWN << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINEUP << 16 ? BTN_WHEELUP1 : BTN_WHEELDOWN1) | BTN_MOVE, 0); - pm_unlock; - break; - case WM_HSCROLL: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if ((unsigned)mp2 == SB_LINELEFT << 16 || (unsigned)mp2 == SB_LINERIGHT << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINELEFT << 16 ? B_WHEELLEFT1 : B_WHEELRIGHT1) | B_MOVE, 0); -+ if ((unsigned)mp2 == SB_LINELEFT << 16 || (unsigned)mp2 == SB_LINERIGHT << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINELEFT << 16 ? BTN_WHEELLEFT1 : BTN_WHEELRIGHT1) | BTN_MOVE, 0); - pm_unlock; - break; - } -diff -urN links-2.1pre33.org/session.c links-2.1pre33/session.c ---- links-2.1pre33.org/session.c Thu Jan 31 21:48:26 2008 -+++ links-2.1pre33/session.c Sat May 3 18:40:32 2008 -@@ -250,7 +250,7 @@ - unsigned char *u = stracpy(title); - if (strchr(u, POST_CHAR)) *strchr(u, POST_CHAR) = 0; - if (!t) return; -- msg_box(ses->term, getml(u, NULL), TEXT(T_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_LOADING), " ", u, ":\n\n", t, NULL, ses, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC/*, _("Retry"), NULL, 0 !!! FIXME: retry */); -+ msg_box(ses->term, getml(u, NULL), TEXT(T_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_LOADING), " ", u, ":\n\n", t, NULL, ses, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC/*, _("Retry"), NULL, 0 !!! FIXME: retry */); - } - - static inline unsigned char hx(int a) -@@ -520,7 +520,7 @@ - dlg->udata = down; - dlg->align = AL_CENTER; - dlg->items[0].type = D_BUTTON; -- dlg->items[0].gid = B_ENTER | B_ESC; -+ dlg->items[0].gid = BTN_ENTER | BTN_ESC; - dlg->items[0].fn = dlg_undisplay_download; - dlg->items[0].text = TEXT(T_BACKGROUND); - dlg->items[1].type = D_BUTTON; -@@ -668,7 +668,7 @@ - if (get_download_ses(down)) { - unsigned char *emsg = stracpy(errno ? strerror(errno) : "Zero returned"); - unsigned char *msg = stracpy(down->file); -- msg_box(get_download_ses(down)->term, getml(msg, emsg, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_WRITE_TO_FILE), " ", msg, ": ", emsg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(get_download_ses(down)->term, getml(msg, emsg, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_WRITE_TO_FILE), " ", msg, ": ", emsg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - return -1; - } -@@ -758,7 +758,7 @@ - if (t) { - unsigned char *tt = stracpy(down->url); - if (strchr(tt, POST_CHAR)) *strchr(tt, POST_CHAR) = 0; -- msg_box(get_download_ses(down)->term, getml(tt, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DOWNLOADING), " ", tt, ":\n\n", t, NULL, get_download_ses(down), 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC/*, TEXT(T_RETRY), NULL, 0 !!! FIXME: retry */); -+ msg_box(get_download_ses(down)->term, getml(tt, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DOWNLOADING), " ", tt, ":\n\n", t, NULL, get_download_ses(down), 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC/*, TEXT(T_RETRY), NULL, 0 !!! FIXME: retry */); - } - } else { - if (down->prog) { -@@ -835,7 +835,7 @@ - if (!ses) goto x; - msg = stracpy(file); - msge = stracpy(strerror(errno)); -- msg_box(ses->term, getml(msg, msge, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_FILE), " ", msg, ": ", msge, NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, getml(msg, msge, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_FILE), " ", msg, ": ", msge, NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - goto x; - } - set_bin(h); -@@ -1580,7 +1580,7 @@ - } - u = stracpy(ce->url); - if ((uu = strchr(u, POST_CHAR))) *uu = 0; -- msg_box(term, getml(u, NULL), TEXT(T_DECOMPRESSION_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DECOMPRESSING_), u, TEXT(T__wITH_), lib, ": ", msg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(term, getml(u, NULL), TEXT(T_DECOMPRESSION_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DECOMPRESSING_), u, TEXT(T__wITH_), lib, ": ", msg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - #endif - -@@ -2230,7 +2230,7 @@ - mem_free(file); - goto new_name; - } -- msg_box(ses->term, NULL, TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_TEMPORARY_FILE), NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_TEMPORARY_FILE), NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - if (ses->tq_prog) mem_free(file); - tp_cancel(ses); -@@ -2452,7 +2452,7 @@ - i++; - d->items[i].type = D_BUTTON; - d->items[i].fn = prog_sel_cancel; -- d->items[i].gid = B_ESC; -+ d->items[i].gid = BTN_ESC; - d->items[i].text = TEXT(T_CANCEL); - d->items[i+1].type = D_END; - do_dialog(ses->term, d, ml); -@@ -2478,12 +2478,12 @@ - } - m1 = stracpy(ct); - if (!a) { -- if (!anonymous) msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 3, TEXT(T_SAVE), tp_save, B_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, B_ESC); -- else msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 2, TEXT(T_DISPLAY), tp_display, B_ENTER, TEXT(T_CANCEL), tp_cancel, B_ESC); -+ if (!anonymous) msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 3, TEXT(T_SAVE), tp_save, BTN_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, BTN_ESC); -+ else msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 2, TEXT(T_DISPLAY), tp_display, BTN_ENTER, TEXT(T_CANCEL), tp_cancel, BTN_ESC); - } else { - m2 = stracpy(a[0].label ? a[0].label : (unsigned char *)""); -- if (!anonymous) msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 4, TEXT(T_OPEN), tp_open, B_ENTER, TEXT(T_SAVE), tp_save, 0, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, B_ESC); -- else msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 3, TEXT(T_OPEN), tp_open, B_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, B_ESC); -+ if (!anonymous) msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 4, TEXT(T_OPEN), tp_open, BTN_ENTER, TEXT(T_SAVE), tp_save, 0, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, BTN_ESC); -+ else msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 3, TEXT(T_OPEN), tp_open, BTN_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, BTN_ESC); - } - if (n)mem_free(a); - if (ct)mem_free(ct); -@@ -2579,7 +2579,7 @@ - ses_destroy_defered_jump(ses); - if ((fn = get_external_protocol_function(url))) { - if (proxies.only_proxies && url_bypasses_socks(url)) { -- msg_box(ses->term, NULL, TEXT(T_ERROR), AL_CENTER, TEXT(T_NO_PROXY), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_ERROR), AL_CENTER, TEXT(T_NO_PROXY), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - fn(ses, url); -@@ -2751,7 +2751,7 @@ - add_to_list(sessions, ses); - if (first_use) { - first_use = 0; -- msg_box(term, NULL, TEXT(T_WELCOME), AL_CENTER | AL_EXTD_TEXT, TEXT(T_WELCOME_TO_LINKS), "\n\n", TEXT(T_BASIC_HELP), NULL, NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_WELCOME), AL_CENTER | AL_EXTD_TEXT, TEXT(T_WELCOME_TO_LINKS), "\n\n", TEXT(T_BASIC_HELP), NULL, NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - return ses; - } -diff -urN links-2.1pre33.org/svgalib.c links-2.1pre33/svgalib.c ---- links-2.1pre33.org/svgalib.c Sun Oct 28 02:06:25 2007 -+++ links-2.1pre33/svgalib.c Sat May 3 18:30:48 2008 -@@ -1892,80 +1892,80 @@ - /* Test movement without buttons */ - if (!(mouse_buttons & BUTTON_MASK) && moved) { - mouse_aggregate_flag=1; -- mouse_aggregate_action=B_MOVE; -+ mouse_aggregate_action=BTN_MOVE; - } - - /* Test presses */ - if ((button&MOUSE_LEFTBUTTON)&&!(mouse_buttons&MOUSE_LEFTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_LEFT|B_DOWN); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_LEFT|BTN_DOWN); - } - if ((button&MOUSE_MIDDLEBUTTON)&&!(mouse_buttons&MOUSE_MIDDLEBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_MIDDLE|B_DOWN); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_MIDDLE|BTN_DOWN); - } - if ((button&MOUSE_RIGHTBUTTON)&&!(mouse_buttons&MOUSE_RIGHTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_DOWN); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_DOWN); - } - if ((button&MOUSE_FOURTHBUTTON)&&!(mouse_buttons&MOUSE_FOURTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_FOURTH); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_FOURTH); - } - if ((button&MOUSE_FIFTHBUTTON)&&!(mouse_buttons&MOUSE_FIFTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_FIFTH); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_FIFTH); - } - if ((button&MOUSE_SIXTHBUTTON)&&!(mouse_buttons&MOUSE_SIXTHBUTTON)){ - mouse_aggregate_flush(); -- /*if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_SIXTH);*/ -+ /*if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_SIXTH);*/ - switch_virtual_device(VD_NEXT); - } - - /* Test releases */ - if (!(button&MOUSE_LEFTBUTTON)&&(mouse_buttons&MOUSE_LEFTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_LEFT|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_LEFT|BTN_UP); - } - if (!(button&MOUSE_MIDDLEBUTTON)&&(mouse_buttons&MOUSE_MIDDLEBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_MIDDLE|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_MIDDLE|BTN_UP); - } - if (!(button&MOUSE_RIGHTBUTTON)&&(mouse_buttons&MOUSE_RIGHTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_UP); - } - if (!(button&MOUSE_FOURTHBUTTON)&&(mouse_buttons&MOUSE_FOURTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_FOURTH|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_FOURTH|BTN_UP); - } - if (!(button&MOUSE_FIFTHBUTTON)&&(mouse_buttons&MOUSE_FIFTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_FIFTH|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_FIFTH|BTN_UP); - } - if (!(button&MOUSE_SIXTHBUTTON)&&(mouse_buttons&MOUSE_SIXTHBUTTON)){ - mouse_aggregate_flush(); -- /*if (mh) mh(cd,mouse_x, mouse_y,B_SIXTH|B_UP);*/ -+ /*if (mh) mh(cd,mouse_x, mouse_y,BTN_SIXTH|BTN_UP);*/ - } - -- if (drx < 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELUP); -- if (drx > 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELDOWN); -+ if (drx < 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELUP); -+ if (drx > 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELDOWN); - -- if (dry < 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELLEFT); -- if (dry > 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELRIGHT); -+ if (dry < 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELLEFT); -+ if (dry > 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELRIGHT); - - /* Test drag */ - if (! ((button^mouse_buttons) & BUTTON_MASK ) && moved && (button & - BUTTON_MASK)){ - mouse_aggregate_flag=1; - mouse_aggregate_action=( -- button&MOUSE_LEFTBUTTON?B_LEFT: -- button&MOUSE_RIGHTBUTTON?B_RIGHT: -- button&MOUSE_MIDDLEBUTTON?B_MIDDLE: -- button&MOUSE_FOURTHBUTTON?B_FOURTH: -- button&MOUSE_FIFTHBUTTON?B_FIFTH: -- /*button&MOUSE_SIXTHBUTTON?B_SIXTH:*/ -- 0) | B_DRAG; -+ button&MOUSE_LEFTBUTTON?BTN_LEFT: -+ button&MOUSE_RIGHTBUTTON?BTN_RIGHT: -+ button&MOUSE_MIDDLEBUTTON?BTN_MIDDLE: -+ button&MOUSE_FOURTHBUTTON?BTN_FOURTH: -+ button&MOUSE_FIFTHBUTTON?BTN_FIFTH: -+ /*button&MOUSE_SIXTHBUTTON?BTN_SIXTH:*/ -+ 0) | BTN_DRAG; - } - mouse_buttons=button; - } -diff -urN links-2.1pre33.org/types.c links-2.1pre33/types.c ---- links-2.1pre33.org/types.c Tue Dec 11 19:45:39 2007 -+++ links-2.1pre33/types.c Sat May 3 18:30:50 2008 -@@ -350,11 +350,11 @@ - d->items[p].data = (unsigned char *)&new->accept_ftp; - d->items[p++].dlen = sizeof(int); - d->items[p].type = D_BUTTON; -- d->items[p].gid = B_ENTER; -+ d->items[p].gid = BTN_ENTER; - d->items[p].fn = ok_dialog; - d->items[p++].text = TEXT(T_OK); - d->items[p].type = D_BUTTON; -- d->items[p].gid = B_ESC; -+ d->items[p].gid = BTN_ESC; - d->items[p].text = TEXT(T_CANCEL); - d->items[p++].fn = cancel_dialog; - d->items[p++].type = D_END; -@@ -668,11 +668,11 @@ - d->items[1].data = ct; - d->items[1].fn = check_nonempty; - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ENTER; -+ d->items[2].gid = BTN_ENTER; - d->items[2].fn = ok_dialog; - d->items[2].text = TEXT(T_OK); - d->items[3].type = D_BUTTON; -- d->items[3].gid = B_ESC; -+ d->items[3].gid = BTN_ESC; - d->items[3].text = TEXT(T_CANCEL); - d->items[3].fn = cancel_dialog; - d->items[4].type = D_END; -diff -urN links-2.1pre33.org/view.c links-2.1pre33/view.c ---- links-2.1pre33.org/view.c Mon Dec 24 23:33:47 2007 -+++ links-2.1pre33/view.c Sat May 3 18:30:51 2008 -@@ -2028,7 +2028,7 @@ - *data = NULL; - m1 = stracpy(sv->value); - m2 = stracpy(strerror(errno)); -- msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_ERROR_WHILE_POSTING_FORM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_GET_FILE), " ", m1, ": ", m2, NULL, ses, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_ERROR_WHILE_POSTING_FORM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_GET_FILE), " ", m1, ": ", m2, NULL, ses, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - void reset_form(struct f_data_c *f, int form_num) -@@ -2878,7 +2878,7 @@ - if (!ses->search_word) { - if (!ses->last_search_word) { - no: -- msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - ses->search_word = stracpy(ses->last_search_word); -@@ -2910,7 +2910,7 @@ - p -= f->yw; - } - } while ((c += f->yw ? f->yw : 1) < f->f_data->y + f->yw); -- msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - void find_next_back(struct session *ses, struct f_data_c *f, int a) -@@ -3081,12 +3081,12 @@ - x = 1; - fd->vs->current_link = l - fd->f_data->links; - fd->vs->orig_link = fd->vs->current_link; -- if (l->type == L_LINK || l->type == L_BUTTON || l->type == L_CHECKBOX || l->type == L_SELECT) if ((ev->b & BM_ACT) == B_UP) { -+ if (l->type == L_LINK || l->type == L_BUTTON || l->type == L_CHECKBOX || l->type == L_SELECT) if ((ev->b & BM_ACT) == BTN_UP) { - fd->active = 1; - draw_to_window(ses->win, (void (*)(struct terminal *, void *))draw_doc_c, fd); - change_screen_status(ses); - print_screen_status(ses); -- if ((ev->b & BM_BUTT) < B_MIDDLE) x = enter(ses, fd, 0); -+ if ((ev->b & BM_BUTT) < BTN_MIDDLE) x = enter(ses, fd, 0); - else link_menu(ses->term, NULL, ses); - } - -@@ -3481,13 +3481,13 @@ - } - } - if (ev->ev == EV_MOUSE) { -- if (ev->b == (B_DOWN | B_FOURTH)) { -+ if (ev->b == (BTN_DOWN | BTN_FOURTH)) { - go_back(ses); - goto x; - } - #ifdef G - if (ses->locked_link) { -- if ((ev->b & BM_ACT) != B_MOVE) { -+ if ((ev->b & BM_ACT) != BTN_MOVE) { - ses->locked_link = 0; - #ifdef JS - /* process onblur handler of current link */ -@@ -3510,7 +3510,7 @@ - } else return; - } - #endif -- if (ev->y < gf_val(1, G_BFU_FONT_SIZE) && (ev->b & BM_ACT) == B_DOWN) { -+ if (ev->y < gf_val(1, G_BFU_FONT_SIZE) && (ev->b & BM_ACT) == BTN_DOWN) { - #ifdef G - if (F && ev->x < ses->back_size) { - go_back(ses); -@@ -3790,7 +3790,7 @@ - struct f_data_c *f; - if (!(f = current_frame(ses)) || !f->f_data) return; - if ((h = create_download_file(ses, ses->term->cwd, file, 0, 0)) < 0) return; -- if (dump_to_file(f->f_data, h)) msg_box(ses->term, NULL, TEXT(T_SAVE_ERROR), AL_CENTER, TEXT(T_ERROR_WRITING_TO_FILE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (dump_to_file(f->f_data, h)) msg_box(ses->term, NULL, TEXT(T_SAVE_ERROR), AL_CENTER, TEXT(T_ERROR_WRITING_TO_FILE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - close(h); - } - -@@ -4160,7 +4160,7 @@ - int l = 0; - unsigned char *a; - if (!lo || !frame || !frame->vs || !frame->f_data) { -- msg_box(term, NULL, TEXT(T_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - return; - } - s = init_str(); -@@ -4226,7 +4226,7 @@ - add_to_str(&s, &l, a); - mem_free(a); - } -- msg_box(term, getml(s, NULL), TEXT(T_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, getml(s, NULL), TEXT(T_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - void state_msg(struct session *ses) -@@ -4241,7 +4241,7 @@ - unsigned char *s, *ss; - int len; - if (list_empty(ses->history)) { -- msg_box(ses->term, NULL, TEXT(T_HEADER_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_HEADER_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - return; - } - if (!find_in_cache(cur_loc(ses)->url, &ce)) { -@@ -4252,6 +4252,6 @@ - while ((ss = strstr(s, "\r\n"))) memmove(ss, ss + 1, strlen(ss)); - while (*s && s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = 0; - } -- msg_box(ses->term, getml(s, NULL), TEXT(T_HEADER_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, getml(s, NULL), TEXT(T_HEADER_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - } -diff -urN links-2.1pre33.org/view_gr.c links-2.1pre33/view_gr.c ---- links-2.1pre33.org/view_gr.c Mon Dec 24 23:33:47 2007 -+++ links-2.1pre33/view_gr.c Sat May 3 18:30:52 2008 -@@ -826,7 +826,7 @@ - void g_text_mouse(struct f_data_c *fd, struct g_object_text *a, int x, int y, int b) - { - int e; -- g_set_current_link(fd, a, x, y, (b == (B_UP | B_LEFT))); -+ g_set_current_link(fd, a, x, y, (b == (BTN_UP | BTN_LEFT))); - - #ifdef JS - if (fd->vs&&fd->f_data&&fd->vs->current_link>=0&&fd->vs->current_linkf_data->nlinks) -@@ -835,16 +835,16 @@ - - struct link *l=&(fd->f_data->links[fd->vs->current_link]); - -- if (l->js_event&&l->js_event->up_code&&(b&BM_ACT)==B_UP) -+ if (l->js_event&&l->js_event->up_code&&(b&BM_ACT)==BTN_UP) - jsint_execute_code(fd,l->js_event->up_code,strlen(l->js_event->up_code),-1,-1,-1, NULL); - -- if (l->js_event&&l->js_event->down_code&&(b&BM_ACT)==B_DOWN) -+ if (l->js_event&&l->js_event->down_code&&(b&BM_ACT)==BTN_DOWN) - jsint_execute_code(fd,l->js_event->down_code,strlen(l->js_event->down_code),-1,-1,-1, NULL); - - } - #endif - -- if (b == (B_UP | B_LEFT)) { -+ if (b == (BTN_UP | BTN_LEFT)) { - int ix = ismap_x, iy = ismap_y, il = ismap_link; - ismap_x = x; - ismap_y = y; -@@ -861,7 +861,7 @@ - if (e == 2) fd->f_data->locked_on = (struct g_object *)a; - return; - } -- if (b == (B_UP | B_RIGHT)) { -+ if (b == (BTN_UP | BTN_RIGHT)) { - if (fd->vs->current_link != -1) link_menu(fd->ses->term, NULL, fd->ses); - } - } -@@ -1021,17 +1021,17 @@ - if (!fd->f_data) return 0; - switch (ev->ev) { - case EV_MOUSE: -- if ((ev->b & BM_BUTT) == B_WHEELUP) goto up; -- if ((ev->b & BM_BUTT) == B_WHEELDOWN) goto down; -- if ((ev->b & BM_BUTT) == B_WHEELUP1) goto up1; -- if ((ev->b & BM_BUTT) == B_WHEELDOWN1) goto down1; -- if ((ev->b & BM_BUTT) == B_WHEELLEFT) goto left; -- if ((ev->b & BM_BUTT) == B_WHEELRIGHT) goto right; -- if ((ev->b & BM_BUTT) == B_WHEELLEFT1) goto left1; -- if ((ev->b & BM_BUTT) == B_WHEELRIGHT1) goto right1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELUP) goto up; -+ if ((ev->b & BM_BUTT) == BTN_WHEELDOWN) goto down; -+ if ((ev->b & BM_BUTT) == BTN_WHEELUP1) goto up1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELDOWN1) goto down1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELLEFT) goto left; -+ if ((ev->b & BM_BUTT) == BTN_WHEELRIGHT) goto right; -+ if ((ev->b & BM_BUTT) == BTN_WHEELLEFT1) goto left1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELRIGHT1) goto right1; - x = ev->x; - y = ev->y; -- if ((ev->b & BM_ACT) == B_MOVE) ses->scrolling = 0; -+ if ((ev->b & BM_ACT) == BTN_MOVE) ses->scrolling = 0; - if (ses->scrolling == 1) process_sb_move(fd, ses->scrolltype ? ev->x : ev->y); - if (ses->scrolling == 2) { - fd->vs->view_pos = -ev->y + ses->scrolloff; -@@ -1039,31 +1039,31 @@ - fd->vs->orig_view_pos = fd->vs->view_pos; - fd->vs->orig_view_posx = fd->vs->view_posx; - draw_graphical_doc(fd->ses->term, fd, 1); -- if ((ev->b & BM_ACT) == B_UP) { -+ if ((ev->b & BM_ACT) == BTN_UP) { - ses->scrolling = 0; - } - break; - } - if (ses->scrolling) { -- if ((ev->b & BM_ACT) == B_UP) { -+ if ((ev->b & BM_ACT) == BTN_UP) { - ses->scrolling = 0; - } - break; - } - - -- if ((ev->b & BM_ACT) == B_DOWN && fd->f_data->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw - fd->f_data->hsb * G_SCROLL_BAR_WIDTH)) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && fd->f_data->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw - fd->f_data->hsb * G_SCROLL_BAR_WIDTH)) { - process_sb_event(fd, ev->y, 0); - break; - } -- if ((ev->b & BM_ACT) == B_DOWN && fd->f_data->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw - fd->f_data->vsb * G_SCROLL_BAR_WIDTH, fd->yw)) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && fd->f_data->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw - fd->f_data->vsb * G_SCROLL_BAR_WIDTH, fd->yw)) { - process_sb_event(fd, ev->x, 1); - break; - } - if (fd->f_data->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw)) return 0; - if (fd->f_data->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw, fd->yw)) return 0; - -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_MIDDLE) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_MIDDLE) { - scrll: - ses->scrolltype = ev->x + fd->vs->view_posx; - ses->scrolloff = ev->y + fd->vs->view_pos; -@@ -1076,7 +1076,7 @@ - fd->vs->g_display_link = 0; - if (fd->vs->current_link >= 0 && fd->vs->current_link < fd->f_data->nlinks) redraw_link(fd, fd->vs->current_link); - } -- if (!(ev->b == (B_LEFT | B_UP) && fd->f_data->hlt_len && fd->f_data->start_highlight_x == -1)) { -+ if (!(ev->b == (BTN_LEFT | BTN_UP) && fd->f_data->hlt_len && fd->f_data->start_highlight_x == -1)) { - fd->vs->current_link = -1; - fd->vs->orig_link = fd->vs->current_link; - fd->f_data->root->mouse_event(fd, fd->f_data->root, ev->x + fd->vs->view_posx, ev->y + fd->vs->view_pos, ev->b); -@@ -1086,14 +1086,14 @@ - } - - /* highlight text */ -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_LEFT) { /* start highlighting */ -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_LEFT) { /* start highlighting */ - fd->f_data->start_highlight_x = ev->x; - fd->f_data->start_highlight_y = ev->y; - fd->f_data->hlt_len = 0; - fd->f_data->hlt_pos = -1; - return 1; - } -- if (((ev->b & BM_ACT) == B_DRAG || (ev->b & BM_ACT) == B_UP) && (ev->b & BM_BUTT) == B_LEFT) { /* stop highlighting */ -+ if (((ev->b & BM_ACT) == BTN_DRAG || (ev->b & BM_ACT) == BTN_UP) && (ev->b & BM_BUTT) == BTN_LEFT) { /* stop highlighting */ - struct g_object_text *t; - if (fd->f_data->start_highlight_x != -1) { - if (abs(ev->x - fd->f_data->start_highlight_x) < 8 && abs(ev->y - fd->f_data->start_highlight_y) < 8) goto skip_hl; -@@ -1117,7 +1117,7 @@ - g_get_search_data(fd->f_data); - end=t->srch_pos+g_find_text_pos(t, ev->x+fd->vs->view_posx); - fd->f_data->hlt_len=end-fd->f_data->hlt_pos; -- if ((ev->b & BM_ACT) == B_UP || (ev->b & BM_ACT) == B_DRAG) { -+ if ((ev->b & BM_ACT) == BTN_UP || (ev->b & BM_ACT) == BTN_DRAG) { - unsigned char *m = memacpy(fd->f_data->srch_string + fd->f_data->hlt_pos + (fd->f_data->hlt_len > 0 ? 0 : fd->f_data->hlt_len), fd->f_data->hlt_len > 0 ? fd->f_data->hlt_len : -fd->f_data->hlt_len); - if (m) { - unsigned char *p = m; -@@ -1147,7 +1147,7 @@ - } - #endif - -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_RIGHT && fd->vs->current_link == -1) goto scrll; -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_RIGHT && fd->vs->current_link == -1) goto scrll; - break; - case EV_KBD: - if (ses->locked_link && fd->vs->current_link >= 0 && fd->vs->current_link < fd->f_data->nlinks && (fd->f_data->links[fd->vs->current_link].type == L_FIELD || fd->f_data->links[fd->vs->current_link].type == L_AREA)) { -@@ -1537,7 +1537,7 @@ - g_get_search_data(f->f_data); - g_get_search(f->f_data, f->ses->search_word); - search_word = f->ses->search_word; -- if (!f->f_data->n_search_positions) msg_box(f->ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (!f->f_data->n_search_positions) msg_box(f->ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - - highlight_positions = f->f_data->search_positions; - highlight_lengths = f->f_data->search_lengths; -diff -urN links-2.1pre33.org/x.c links-2.1pre33/x.c ---- links-2.1pre33.org/x.c Sun Jul 8 02:04:50 2007 -+++ links-2.1pre33/x.c Sat May 3 18:30:52 2008 -@@ -552,28 +552,28 @@ - #endif - gd=x_find_gd(&(last_event.xmotion.window)); - if (!gd)break; -- a=B_LEFT; -- b=B_MOVE; -+ a=BTN_LEFT; -+ b=BTN_MOVE; - if ((last_event.xmotion.state)&Button1Mask) - { -- a=B_LEFT; -- b=B_DRAG; -+ a=BTN_LEFT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("left button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button2Mask) - { -- a=B_MIDDLE; -- b=B_DRAG; -+ a=BTN_MIDDLE; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("middle button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button3Mask) - { -- a=B_RIGHT; -- b=B_DRAG; -+ a=BTN_RIGHT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("right button/drag\n"); - #endif -@@ -699,15 +699,15 @@ - switch(event.xbutton.button) - { - case 1: -- a=B_LEFT; -+ a=BTN_LEFT; - break; - - case 3: -- a=B_RIGHT; -+ a=BTN_RIGHT; - break; - - case 2: -- a=B_MIDDLE; -+ a=BTN_MIDDLE; - break; - - default: -@@ -716,7 +716,7 @@ - } - x_clip_number(&(event.xmotion.x),gd->size.x1,gd->size.x2); - x_clip_number(&(event.xmotion.y),gd->size.y1,gd->size.y2); -- gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|B_UP); -+ gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|BTN_UP); - r_xx:; - } - break; -@@ -738,31 +738,31 @@ - switch(event.xbutton.button) - { - case 1: -- a=B_LEFT; -+ a=BTN_LEFT; - break; - - case 3: -- a=B_RIGHT; -+ a=BTN_RIGHT; - break; - - case 2: -- a=B_MIDDLE; -+ a=BTN_MIDDLE; - break; - - case 4: -- a=B_WHEELUP; -+ a=BTN_WHEELUP; - break; - - case 5: -- a=B_WHEELDOWN; -+ a=BTN_WHEELDOWN; - break; - - case 6: -- a=B_WHEELLEFT; -+ a=BTN_WHEELLEFT; - break; - - case 7: -- a=B_WHEELRIGHT; -+ a=BTN_WHEELRIGHT; - break; - - default: -@@ -770,7 +770,7 @@ - } - x_clip_number(&(event.xmotion.x),gd->size.x1,gd->size.x2); - x_clip_number(&(event.xmotion.y),gd->size.y1,gd->size.y2); -- gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|(a != B_WHEELDOWN && a != B_WHEELUP && a != B_WHEELLEFT && a != B_WHEELRIGHT ? B_DOWN : B_MOVE)); -+ gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|(a != BTN_WHEELDOWN && a != BTN_WHEELUP && a != BTN_WHEELLEFT && a != BTN_WHEELRIGHT ? BTN_DOWN : BTN_MOVE)); - p_xx:; - } - break; -@@ -839,28 +839,28 @@ - #endif - gd=x_find_gd(&(last_event.xmotion.window)); - if (!gd)goto ret; -- a=B_LEFT; -- b=B_MOVE; -+ a=BTN_LEFT; -+ b=BTN_MOVE; - if ((last_event.xmotion.state)&Button1Mask) - { -- a=B_LEFT; -- b=B_DRAG; -+ a=BTN_LEFT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("left button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button2Mask) - { -- a=B_MIDDLE; -- b=B_DRAG; -+ a=BTN_MIDDLE; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("middle button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button3Mask) - { -- a=B_RIGHT; -- b=B_DRAG; -+ a=BTN_RIGHT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("right button/drag\n"); - #endif diff --git a/www-client/links/patches/links-2.3pre2.patch b/www-client/links/patches/links-2.3pre2.patch deleted file mode 100644 index 98c9852ec..000000000 --- a/www-client/links/patches/links-2.3pre2.patch +++ /dev/null @@ -1,3199 +0,0 @@ -diff -urN links-2.3pre2-orig/Makefile.am links-2.3pre2/Makefile.am ---- links-2.3pre2-orig/Makefile.am 2009-05-17 20:45:41.000000000 +0000 -+++ links-2.3pre2/Makefile.am 2011-05-13 09:05:58.243269632 +0000 -@@ -4,7 +4,7 @@ - - man_MANS=links.1 - --EXTRA_DIST=atheos.cpp $(man_MANS) BRAILLE_HOWTO KEYS BUGS TODO SITES PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* intl/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png links_16x16_1.xpm links_16x16_2.xpm links_32x32.xpm links.nsi -+EXTRA_DIST=atheos.cpp beosgui.cpp $(man_MANS) BRAILLE_HOWTO KEYS BUGS TODO SITES PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* intl/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png links_16x16_1.xpm links_16x16_2.xpm links_32x32.xpm links.nsi links-beos.rdef - - bin_PROGRAMS=links - -@@ -13,6 +13,11 @@ - else - endif - -+if BEOS_GR -+links_LDADD=beosgui.o -lbe -+else -+endif -+ - links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmarks.c cache.c charsets.c connect.c cookies.c default.c dip.c directfb.c directfb_cursors.h dither.c dns.c drivers.c error.c file.c finger.c font_include.c framebuffer.c ftp.c gif.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_icon.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c x.c xbm.c links.h cfg.h os_dep.h os_depx.h setup.h codepage.h language.h codepage.inc entity.inc uni_7b.inc language.inc upcase.inc arrow.inc bits.h - - dist-hook: -@@ -31,7 +36,12 @@ - CXXFLAGS=@CXXFLAGS@ - - atheos.o: atheos.cpp -- $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c atheos.cpp -+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -o $@ -c $< -+ -+beosgui.o: beosgui.cpp -+ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -o $@ -c $< -+ -+ - - datadir = $(prefix)/@DATADIRNAME@ - LIBS = @LIBS@ -diff -urN links-2.3pre2-orig/acconfig.h links-2.3pre2/acconfig.h ---- links-2.3pre2-orig/acconfig.h 2009-05-17 20:14:00.000000000 +0000 -+++ links-2.3pre2/acconfig.h 2011-05-13 09:04:15.857210880 +0000 -@@ -119,6 +119,9 @@ - #undef GRDRV_ATHEOS - - /* */ -+#undef GRDRV_BEOS -+ -+/* */ - #undef DONT_INCLUDE_SETJMP - - /* Tiff by Brain */ -diff -urN links-2.3pre2-orig/atheos.cpp links-2.3pre2/atheos.cpp ---- links-2.3pre2-orig/atheos.cpp 2004-10-22 18:11:31.000000000 +0000 -+++ links-2.3pre2/atheos.cpp 2011-05-13 09:04:15.882638848 +0000 -@@ -207,7 +207,7 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, B_DOWN | (b == 2 ? B_RIGHT : b == 3 ? B_MIDDLE : B_LEFT)); -+ if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, BTN_DOWN | (b == 2 ? BTN_RIGHT : b == 3 ? BTN_MIDDLE : BTN_LEFT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -@@ -217,7 +217,7 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, B_UP | (b == 2 ? B_RIGHT : b == 3 ? B_MIDDLE : B_LEFT)); -+ if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, BTN_UP | (b == 2 ? BTN_RIGHT : b == 3 ? BTN_MIDDLE : BTN_LEFT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -@@ -227,7 +227,7 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, !b ? B_MOVE : B_DRAG | (b & 1 ? B_LEFT : b & 2 ? B_RIGHT : b & 4 ? B_MIDDLE : B_LEFT)); -+ if (dev) dev->mouse_handler(dev, last_x = (int)p.x, last_y = (int)p.y, !b ? BTN_MOVE : BTN_DRAG | (b & 1 ? BTN_LEFT : b & 2 ? BTN_RIGHT : b & 4 ? BTN_MIDDLE : BTN_LEFT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -@@ -237,8 +237,8 @@ - win->Unlock(); - ath_lock->Lock(); - win->Lock(); -- if (d.y) if (dev) dev->mouse_handler(dev, last_x, last_y, B_MOVE | (d.y > 0 ? B_WHEELDOWN : B_WHEELUP)); -- if (d.x) if (dev) dev->mouse_handler(dev, last_x, last_y, B_MOVE | (d.x < 0 ? B_WHEELLEFT : B_WHEELRIGHT)); -+ if (d.y) if (dev) dev->mouse_handler(dev, last_x, last_y, BTN_MOVE | (d.y > 0 ? BTN_WHEELDOWN : BTN_WHEELUP)); -+ if (d.x) if (dev) dev->mouse_handler(dev, last_x, last_y, BTN_MOVE | (d.x < 0 ? BTN_WHEELLEFT : BTN_WHEELRIGHT)); - ath_lock->Unlock(); - write(wpipe, " ", 1); - } -diff -urN links-2.3pre2-orig/beos.c links-2.3pre2/beos.c ---- links-2.3pre2-orig/beos.c 2006-09-11 01:47:20.000000000 +0000 -+++ links-2.3pre2/beos.c 2011-05-13 09:32:23.000000000 +0000 -@@ -3,7 +3,7 @@ - * This file is a part of the Links program, released under GPL - */ - --#ifdef __BEOS__ -+#if defined __BEOS__ || defined __HAIKU__ - - #include - #include -@@ -11,8 +11,9 @@ - #include - #include - #include -+#include - #include --#include -+#include - - #define SHS 128 - -@@ -20,6 +21,42 @@ - #define MAXINT 0x7fffffff - #endif - -+extern int ggr; -+ -+#ifdef __cplusplus -+extern "C" { -+int get_input_handle(); -+void unblock_stdin(); -+void block_stdin(); -+} -+#endif -+ -+void maybe_force_gr(void) -+{ -+ struct stat stn, stin, stout; -+ /* -+ * if stdin and out are /dev/null it's likely -+ * we have been started from the gui... -+ */ -+ if (lstat("/dev/null", &stn) < 0) -+ return; -+ if (fstat(0, &stin) < 0) -+ return; -+ if (fstat(1, &stout) < 0) -+ return; -+ if (stin.st_dev != stn.st_dev) -+ return; -+ if (stout.st_dev != stn.st_dev) -+ return; -+ if (stin.st_ino != stn.st_ino) -+ return; -+ if (stout.st_ino != stn.st_ino) -+ return; -+ ggr = 1; -+} -+ -+#if IPPROTO_TCP != 6 -+ - int be_read(int s, void *ptr, int len) - { - if (s >= SHS) return recv(s - SHS, ptr, len, 0); -@@ -90,6 +127,10 @@ - - #define PIPE_RETRIES 10 - -+#ifndef PF_INET -+#define PF_INET AF_INET -+#endif -+ - int be_pipe(int *fd) - { - int s1, s2, s3, l; -@@ -250,4 +291,21 @@ - return h = ohpipe[1]; - }*/ - -+#else /* IPPROTO_TCP != 6 */ -+ -+void block_stdin() -+{ -+} -+ -+void unblock_stdin() -+{ -+} -+ -+int get_input_handle() -+{ -+ return 0; -+} -+ -+#endif -+ - #endif -diff -urN links-2.3pre2-orig/beosgui.cpp links-2.3pre2/beosgui.cpp ---- links-2.3pre2-orig/beosgui.cpp 1970-01-01 00:00:00.000000000 +0000 -+++ links-2.3pre2/beosgui.cpp 2011-05-13 09:04:15.932446208 +0000 -@@ -0,0 +1,884 @@ -+/* beos.c -+ * (c) 2007 François Revol -+ * This file is a part of the Links program, released under GPL -+ */ -+ -+#if defined __BEOS__ || defined __HAIKU__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* -+ * GUI code -+ */ -+ -+/* -+ * TODO: -+ * - BeOS doesn't handle BView::DrawBitmap() with RGB24, and links doesn't seem to handle RGB32, -+ * so the colorspace is forced into 16bpp for now. -+ * - more paste handling ? -+ * - more DnD (maybe check if in menu or not and prepend "g" ?) -+ * - handle DnD of Net+ bookmarks -+ */ -+ -+#include "cfg.h" -+ -+#ifdef GRDRV_BEOS -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+extern "C" { -+#include "links.h" -+} -+ -+//#define DBG(l...) fprintf(stderr, l); -+#define DBG(l...) {} -+ -+/* -+#ifdef debug -+#undef debug -+#endif -+#define debug(x) -+#define fprintf(x, y) -+*/ -+ -+extern struct graphics_driver beos_driver; -+ -+class LinksApplication : public BApplication { -+ public: -+ LinksApplication():BApplication("application/x-vnd.links"){} -+ virtual void RefsReceived(BMessage *message); -+ virtual bool QuitRequested(); -+}; -+ -+class LinksView; -+ -+class LinksWindow : public BWindow { -+ public: -+ LinksWindow(BRect r); -+ ~LinksWindow(); -+ virtual void FrameResized(float width, float height); -+ virtual bool QuitRequested(); -+ int resized; -+ LinksView *view; -+}; -+ -+class LinksView : public BView { -+ public: -+ LinksView(LinksWindow *w); -+ ~LinksView(); -+ virtual void Draw(BRect r); -+ virtual void MouseDown(BPoint p); -+ virtual void MouseUp(BPoint p); -+ virtual void MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg); -+ virtual void KeyDown(const char *s, int32 numBytes); -+ virtual void MessageReceived(BMessage *msg); -+ LinksWindow *win; -+ struct graphics_device *dev; -+ void d_flush(); -+ int flushing; -+ int last_x, last_y; -+}; -+ -+#define lv(dev) ((LinksView *)(dev)->driver_data) -+ -+#define lock_dev(dev) do { if (!lv(dev)->win->Lock()) return; } while (0) -+#define lock_dev0(dev) do { if (!lv(dev)->win->Lock()) return 0; } while (0) -+#define unlock_dev(dev) do { lv(dev)->win->Unlock(); } while (0) -+ -+void be_get_size(struct graphics_device *dev); -+ -+#define detach_message(dev) \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ } -+ -+#define pipe_message(dev) \ -+ if (current) { \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } -+ -+#define detach_and_pipe_message(dev) do { \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } \ -+} while (0) -+ -+LinksApplication *be_links_app; -+BLocker *be_lock = NULL; -+ -+int msg_pipe[2]; -+ -+thread_id be_app_thread_id; -+ -+#define rpipe (msg_pipe[0]) -+#define wpipe (msg_pipe[1]) -+ -+#define small_color (sizeof(rgb_color) <= sizeof(long)) -+#define get_color32(c, rgb) rgb_color c((rgb_color){(rgb >> 16) & 255, (rgb >> 8) & 255, rgb & 255, 255}) -+ -+color_space be_cs_desktop, be_cs_bmp; -+ -+int be_x_size, be_y_size; -+ -+int be_win_x_size, be_win_y_size; -+int be_win_x_pos, be_win_y_pos; -+ -+static BMessage *initial_refs_msg; -+ -+void LinksApplication::RefsReceived(BMessage *message) -+{ -+ entry_ref ref; -+ //if (!IsLaunching()) -+ // return; -+ BMessenger msgr(WindowAt(0)); -+ BMessage *m = new BMessage(*message); -+ m->AddSpecifier("View", (long)0); -+ //m->what = B_SIMPLE_DATA; -+ if (msgr.IsValid()) { -+ msgr.SendMessage(m); -+ } else -+ initial_refs_msg = m; -+} -+ -+bool LinksApplication::QuitRequested() -+{ -+ BApplication::QuitRequested(); -+ //printf("qc: %ld\n", CountWindows()); -+ return true; -+} -+ -+LinksWindow::LinksWindow(BRect r):BWindow(r, "Links", B_DOCUMENT_WINDOW, 0) -+{ -+ DBG("LINKSWINDOW\n"); -+ resized = 0; -+ view = NULL; -+} -+ -+LinksWindow::~LinksWindow() -+{ -+ view = NULL; -+ DBG("~LINKSWINDOW\n"); -+} -+ -+void LinksWindow::FrameResized(float width, float height) -+{ -+ resized = 1; -+} -+ -+bool LinksWindow::QuitRequested() -+{ -+ detach_and_pipe_message(view->dev); -+ return false; -+} -+ -+void do_flush(void *p_dev) -+{ -+ struct graphics_device *dev = (struct graphics_device *)p_dev; -+ LinksView *v = lv(dev); -+ v->win->Lock(); -+ v->win->Flush(); -+ v->win->Unlock(); -+ v->flushing = 0; -+} -+ -+LinksView::LinksView(LinksWindow *w):BView(w->Bounds(), "Links", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_NAVIGABLE) -+{ -+ DBG("LINKSVIEW\n"); -+ (win = w)->AddChild(this); -+ SetViewColor(B_TRANSPARENT_32_BIT); -+ MakeFocus(); -+ w->view = this; -+ flushing = 0; -+ last_x = last_y = 0; -+} -+ -+LinksView::~LinksView() -+{ -+ win->view = NULL; -+ DBG("~LINKSVIEW\n"); -+} -+ -+void LinksView::d_flush() -+{ -+ if (flushing) return; -+ register_bottom_half(do_flush, this->dev); -+ flushing = 1; -+} -+ -+#undef select -+ -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t) -+{ -+ int v; -+ v = select(n, r, w, e, t); -+ check_bottom_halves(); -+ return v; -+} -+ -+void be_paste_string(struct graphics_device *dev, const char *str) -+{ -+ unsigned char *s = (unsigned char *)str; -+ int c, i; -+ while (s && *s) { -+ GET_UTF_8(s, c); -+ if (dev) dev->keyboard_handler(dev, c, 0); -+ } -+} -+ -+void be_get_event(void *dummy) -+{ -+ BMessage *msg; -+ LinksView *view = NULL; -+ LinksWindow *win = NULL; -+ struct graphics_device *dev; -+ read(rpipe, &msg, sizeof(msg)); -+ DBG("GETE\n"); -+ if (!msg) -+ return; -+ if (msg->FindPointer("linksdev", (void **)&dev) < B_OK) -+ return; -+ if (dev) { -+ view = lv(dev); -+ if (view) -+ win = dynamic_cast(view->Window()); -+ } -+ switch (msg->what) { -+ case B_QUIT_REQUESTED: -+ if (dev) -+ dev->keyboard_handler(dev, KBD_CTRL_C, 0); -+ break; -+ case _UPDATE_: -+ { -+ BRect r; -+ if (msg->FindRect("updateRect", &r) < B_OK) -+ return; -+ struct rect rr; -+ rr.x1 = (int)r.left; -+ rr.x2 = (int)r.right + 1; -+ rr.y1 = (int)r.top; -+ rr.y2 = (int)r.bottom + 1; -+ /*DBG("paint: %d %d %d %d\n", rr.x1, rr.x2, rr.y1, rr.y2);*/ -+ if (dev) { -+ if (!win->resized) dev->redraw_handler(dev, &rr); -+ else { -+ be_get_size(dev); -+ win->resized = 0; -+ dev->resize_handler(dev); -+ } -+ } -+ check_bottom_halves(); -+ } -+ break; -+ case B_MOUSE_DOWN: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = BTN_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = BTN_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = BTN_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = BTN_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = BTN_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = BTN_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = BTN_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, BTN_DOWN | btn); -+ } -+ break; -+ case B_MOUSE_UP: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = BTN_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & ~B_PRIMARY_MOUSE_BUTTON == 0) -+ btn = BTN_LEFT; -+ else if (buttons & ~B_SECONDARY_MOUSE_BUTTON == 0) -+ btn = BTN_RIGHT; -+ else if (buttons & ~B_TERTIARY_MOUSE_BUTTON == 0) -+ btn = BTN_MIDDLE; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 1) == 0) -+ btn = BTN_FOURTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 2) == 0) -+ btn = BTN_FIFTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 3) == 0) -+ btn = BTN_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, BTN_UP | btn); -+ } -+ break; -+ case B_MOUSE_MOVED: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = BTN_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = BTN_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = BTN_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = BTN_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = BTN_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = BTN_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = BTN_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, !buttons ? BTN_MOVE : BTN_DRAG | btn); -+ } -+ break; -+ case B_KEY_DOWN: -+ { -+ int32 modifiers; -+ int32 numBytes; -+ const char *bytes; -+ int c; -+ int mods = 0; -+ if (msg->FindInt32("modifiers", &modifiers) != B_OK) -+ return; -+ if (msg->FindString("bytes", &bytes) != B_OK) -+ return; -+ unsigned char buf[4] = { 0, 0, 0, 0 }; -+ unsigned char *ss; -+ if (modifiers & (B_LEFT_CONTROL_KEY | B_RIGHT_CONTROL_KEY | B_LEFT_COMMAND_KEY | B_RIGHT_COMMAND_KEY)) { -+ int32 raw; -+ if (msg->FindInt32("raw_char", &raw) != B_OK) -+ return; -+ buf[0] = (unsigned char)raw; -+ ss = buf; -+ } else -+ ss = (unsigned char *)bytes; -+ -+ GET_UTF_8(ss, c); -+ switch (c) { -+ case B_BACKSPACE: c = KBD_BS; break; -+ case B_ENTER: c = KBD_ENTER; break; -+ case B_SPACE: c = ' '; break; -+ case B_TAB: c = KBD_TAB; break; -+ case B_ESCAPE: c = KBD_ESC; break; -+ case B_LEFT_ARROW: c = KBD_LEFT; break; -+ case B_RIGHT_ARROW: c = KBD_RIGHT; break; -+ case B_UP_ARROW: c = KBD_UP; break; -+ case B_DOWN_ARROW: c = KBD_DOWN; break; -+ case B_INSERT: c = KBD_INS; break; -+ case B_DELETE: c = KBD_DEL; break; -+ case B_HOME: c = KBD_HOME; break; -+ case B_END: c = KBD_END; break; -+ case B_PAGE_UP: c = KBD_PAGE_UP; break; -+ case B_PAGE_DOWN: c = KBD_PAGE_DOWN; break; -+ default: if (c < 32) c = 0; -+ else modifiers &= ~(B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY); -+ break; -+ } -+ if (modifiers & (B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY)) -+ mods |= KBD_SHIFT; -+ if (modifiers & (B_LEFT_CONTROL_KEY|B_RIGHT_CONTROL_KEY)) -+ mods |= KBD_CTRL; -+ if (modifiers & (B_LEFT_COMMAND_KEY|B_RIGHT_COMMAND_KEY)) -+ mods |= KBD_ALT; -+ if (c) if (dev) dev->keyboard_handler(dev, c, mods); -+ } -+ break; -+ case B_MOUSE_WHEEL_CHANGED: -+ { -+ float delta_x, delta_y; -+ if (msg->FindFloat("be:wheel_delta_x", &delta_x) != B_OK) -+ delta_x = 0; -+ if (msg->FindFloat("be:wheel_delta_y", &delta_y) != B_OK) -+ delta_y = 0; -+ if (delta_y) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, BTN_MOVE | (delta_y > 0 ? BTN_WHEELDOWN : BTN_WHEELUP)); -+ if (delta_x) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, BTN_MOVE | (delta_x < 0 ? BTN_WHEELLEFT : BTN_WHEELRIGHT)); -+ } -+ break; -+ case B_PASTE: -+ if (be_clipboard->Lock()) { -+ BMessage *data = be_clipboard->Data(); -+ if (data) { -+ const char *text_plain; -+ ssize_t len; -+ //data->PrintToStream(); -+ if (data->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ be_clipboard->Unlock(); -+ } -+ break; -+ case B_REFS_RECEIVED: -+ if (dev) -+ be_paste_string(dev, "\033\ng"); -+ /* FALLTHROUGH */ -+ case B_SIMPLE_DATA: -+ { -+ /* something got dropped */ -+ entry_ref ref; -+ const char *text_plain; -+ ssize_t len; -+ //msg->PrintToStream(); -+ /* try find a file path to paste */ -+ if (msg->FindRef("refs", &ref) == B_OK) { -+ BPath path(&ref); -+ if (path.InitCheck() == B_OK) { -+ BFile f(path.Path(), B_READ_ONLY); -+ BString url; -+ if (f.InitCheck() == B_OK && f.ReadAttrString("META:url", &url) >= B_OK) { -+ be_paste_string(dev, url.String()); -+ } else -+ be_paste_string(dev, path.Path()); -+ } -+ } else if (msg->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ break; -+ default: -+ msg->PrintToStream(); -+ break; -+ } -+ delete msg; -+} -+ -+void be_get_size(struct graphics_device *dev) -+{ -+ BRect r; -+ lock_dev(dev); -+ r = lv(dev)->Bounds(); -+ unlock_dev(dev); -+ dev->size.x1 = dev->size.y1 = 0; -+ dev->size.x2 = (int)r.Width() + 1; -+ dev->size.y2 = (int)r.Height() + 1; -+} -+ -+void LinksView::Draw(BRect r) -+{ -+ detach_message(dev); -+ current->AddRect("updateRect", r); -+ pipe_message(dev); -+} -+ -+ -+void LinksView::MouseDown(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseUp(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MessageReceived(BMessage *msg) -+{ -+ switch (msg->what) { -+ case B_REFS_RECEIVED: -+ case B_MOUSE_WHEEL_CHANGED: -+ case B_PASTE: -+ case B_SIMPLE_DATA: -+ detach_and_pipe_message(dev); -+ break; -+ default: -+ BView::MessageReceived(msg); -+ } -+} -+ -+void LinksView::KeyDown(const char *s, int32 numBytes) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+unsigned char *be_get_driver_param(void) -+{ -+ return NULL; -+} -+ -+int32 be_app_thread(void *p) -+{ -+ be_links_app->Lock(); -+ be_links_app->Run(); -+ delete be_links_app; -+ return 0; -+} -+ -+unsigned char *be_init_driver(unsigned char *param, unsigned char *display) -+{ -+ be_links_app = new LinksApplication(); -+ if (!be_links_app) { -+ return stracpy((unsigned char *)"Unable to allocate Application object.\n"); -+ } -+ if (c_pipe(msg_pipe)) { -+ delete be_links_app; -+ return stracpy((unsigned char *)"Could not create pipe.\n"); -+ } -+ fcntl(rpipe, F_SETFL, O_NONBLOCK); -+ fcntl(wpipe, F_SETFL, O_NONBLOCK); -+ set_handlers(rpipe, be_get_event, NULL, NULL, NULL); -+ be_app_thread_id = spawn_thread(be_app_thread, "links_app", B_NORMAL_PRIORITY, NULL); -+ resume_thread(be_app_thread_id); -+ be_links_app->Unlock(); -+ be_cs_desktop = B_NO_COLOR_SPACE; -+ be_x_size = 640; -+ be_y_size = 480; -+ BScreen d; -+ if (d.IsValid()) { -+ be_cs_desktop = d.ColorSpace(); -+ be_x_size = (int)d.Frame().Width() + 1; -+ be_y_size = (int)d.Frame().Height() + 1; -+ } -+ be_win_y_size = be_y_size * 9 / 10; -+ be_win_x_size = be_win_y_size; -+ /* -+ DBG("%d %d\n", be_x_size, be_y_size); -+ DBG("%d %d\n", be_win_x_size, be_win_y_size); -+ */ -+ be_win_y_pos = (be_y_size - be_win_y_size) / 2; -+ be_win_x_pos = be_x_size - be_win_x_size - be_win_y_pos; -+ if (/*be_cs_desktop == B_RGB32 ||*/ be_cs_desktop == B_RGB24 || be_cs_desktop == B_RGB16 || be_cs_desktop == B_RGB15) -+ be_cs_bmp = be_cs_desktop; -+ else if (be_cs_desktop == B_RGB32 || be_cs_desktop == B_RGBA32) be_cs_bmp = B_RGB24; -+ else be_cs_bmp = B_RGB15; -+ be_cs_bmp = B_RGB16; // XXX: DEBUG -+ switch (be_cs_bmp) { -+ case B_RGB24: -+ beos_driver.depth = 0xc3; -+ break; -+ case B_RGB16: -+ beos_driver.depth = 0x82; -+ break; -+ case B_RGB15: -+ beos_driver.depth = 0x7a; -+ break; -+ default: -+ internal((unsigned char *)"unknown depth"); -+ } -+ return NULL; -+} -+ -+void be_shutdown_driver() -+{ -+ status_t ret; -+ //debug((unsigned char *)"D"); -+ close(rpipe); -+ close(wpipe); -+ set_handlers(rpipe, NULL, NULL, NULL, NULL); -+ //debug((unsigned char *)"DD"); -+ be_links_app->PostMessage(B_QUIT_REQUESTED); -+ //debug((unsigned char *)"E"); -+ wait_for_thread(be_app_thread_id, &ret); -+ //debug((unsigned char *)"F"); -+} -+ -+struct graphics_device *be_init_device() -+{ -+ LinksView *view; -+ LinksWindow *win; -+ struct graphics_device *dev = (struct graphics_device *)mem_calloc(sizeof(struct graphics_device)); -+ if (!dev) return NULL; -+ dev->drv = &beos_driver; -+ //debug((unsigned char *)"1"); -+ win = new LinksWindow(BRect(be_win_x_pos, be_win_y_pos, be_win_x_pos + be_win_x_size, be_win_y_pos + be_win_y_size)); -+ //debug((unsigned char *)"2"); -+ if (!win) { -+ mem_free(dev); -+ return NULL; -+ } -+ //debug((unsigned char *)"3"); -+ view = new LinksView(win); -+ if (!view) { -+ delete win; -+ mem_free(dev); -+ return NULL; -+ } -+ view->dev = dev; -+ dev->driver_data = view; -+ be_get_size(dev); -+ memcpy(&dev->clip, &dev->size, sizeof(struct rect)); -+ //debug((unsigned char *)"4"); -+ win->Show(); -+ win->Lock(); -+ view->MakeFocus(); -+ win->Unlock(); -+ //debug((unsigned char *)"5"); -+ if (initial_refs_msg) { -+ BMessenger msgr(win); -+ if (msgr.IsValid()) { -+ msgr.SendMessage(initial_refs_msg); -+ initial_refs_msg = NULL; -+ } -+ } -+ return dev; -+} -+ -+void be_shutdown_device(struct graphics_device *dev) -+{ -+ LinksWindow *win = lv(dev)->win; -+ unregister_bottom_half(do_flush, dev); -+ lv(dev)->dev = NULL; -+ win->PostMessage(B_QUIT_REQUESTED); -+ mem_free(dev); -+} -+ -+void be_set_title(struct graphics_device *dev, unsigned char *title) -+{ -+ LinksWindow *win = lv(dev)->win; -+ lock_dev(dev); -+ win->SetTitle((const char *)title); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+/* -+int be_get_filled_bitmap(struct bitmap *bmp, long color) -+{ -+ internal((unsigned char *)"nedopsano"); -+ return 0; -+} -+*/ -+ -+int be_get_empty_bitmap(struct bitmap *bmp) -+{ -+ DBG("bmp\n"); -+//DBG("bmp (%d, %d) cs %08x\n", bmp->x, bmp->y, be_cs_bmp); -+ BRect r(0, 0, bmp->x - 1, bmp->y - 1); -+ BBitmap *b = new BBitmap(r, /*B_RGB32*/be_cs_bmp); -+ if (!b) { -+ bmp->data = NULL; -+DBG("%s: error 1\n", __FUNCTION__); -+ return 0; -+ } -+ if (!b->IsValid()) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 2\n", __FUNCTION__); -+ return 0; -+ } -+ if (b->LockBits() < B_OK) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 3\n", __FUNCTION__); -+ return 0; -+ } -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ bmp->flags = b; -+//DBG("bmp: data %p, skip %d, flags %p\n", bmp->data, bmp->skip, bmp->flags); -+ return 0; -+} -+ -+void be_register_bitmap(struct bitmap *bmp) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void *be_prepare_strip(struct bitmap *bmp, int top, int lines) -+{ -+ DBG("preps\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ if (b->LockBits() < B_OK) -+ return NULL; -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ return ((char *)bmp->data) + bmp->skip * top; -+} -+ -+void be_commit_strip(struct bitmap *bmp, int top, int lines) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void be_unregister_bitmap(struct bitmap *bmp) -+{ -+ DBG("unb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ delete b; -+} -+ -+void be_draw_bitmap(struct graphics_device *dev, struct bitmap *bmp, int x, int y) -+{ -+ DBG("drawb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ lock_dev(dev); -+ lv(dev)->DrawBitmap(b, b->Bounds(), BRect(x, y, x + bmp->x - 1, y + bmp->y - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_bitmaps(struct graphics_device *dev, struct bitmap **bmp, int n, int x, int y) -+{ -+ LinksView *lvv = lv(dev); -+ lock_dev(dev); -+ while (n--) { -+ BBitmap *b = (BBitmap *)(*bmp)->flags; -+ lvv->DrawBitmap(b, b->Bounds(), BRect(x, y, x + (*bmp)->x, y + (*bmp)->y)); -+ x += (*bmp)->x; -+ bmp++; -+ } -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+long be_get_color(int rgb) -+{ -+ if (small_color) { -+ get_color32(c, rgb); -+ return *(long *)(void *)&c; -+ } else return rgb & 0xffffff; -+} -+ -+void be_fill_area(struct graphics_device *dev, int x1, int y1, int x2, int y2, long color) -+{ -+ DBG("fill\n"); -+ if (x1 >= x2 || y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->FillRect(BRect(x1, y1, x2 - 1, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_hline(struct graphics_device *dev, int x1, int y, int x2, long color) -+{ -+ DBG("hline\n"); -+ if (x1 >= x2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x1, y), BPoint(x2 - 1, y)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_vline(struct graphics_device *dev, int x, int y1, int y2, long color) -+{ -+ DBG("vline\n"); -+ if (y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x, y1), BPoint(x, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+int be_hscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("hscroll\n"); -+ if (dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.x1 - dev->clip.x2) return 1; -+ if (sc >= dev->clip.x2 - dev->clip.x1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - sc - 1, dev->clip.y2 - 1), BRect(dev->clip.x1 + sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1 - sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 + sc - 1, dev->clip.y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+int be_vscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("vscroll\n"); -+ if (!sc || dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.y1 - dev->clip.y2) return 1; -+ if (sc >= dev->clip.y2 - dev->clip.y1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - sc - 1), BRect(dev->clip.x1, dev->clip.y1 + sc, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1 - sc, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 + sc - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+void be_set_clip_area(struct graphics_device *dev, struct rect *r) -+{ -+ DBG("setc\n"); -+ memcpy(&dev->clip, r, sizeof(struct rect)); -+ lock_dev(dev); -+ BRegion clip(BRect(r->x1, r->y1, r->x2 - 1, r->y2 - 1)); -+ lv(dev)->ConstrainClippingRegion(&clip); -+ unlock_dev(dev); -+} -+ -+struct graphics_driver beos_driver = { -+ (unsigned char *)"beos", -+ be_init_driver, -+ be_init_device, -+ be_shutdown_device, -+ be_shutdown_driver, -+ be_get_driver_param, -+ be_get_empty_bitmap, -+ /*be_get_filled_bitmap,*/ -+ be_register_bitmap, -+ be_prepare_strip, -+ be_commit_strip, -+ be_unregister_bitmap, -+ be_draw_bitmap, -+ be_draw_bitmaps, -+ be_get_color, -+ be_fill_area, -+ be_draw_hline, -+ be_draw_vline, -+ be_hscroll, -+ be_vscroll, -+ be_set_clip_area, -+ dummy_block, -+ dummy_unblock, -+ be_set_title, -+ NULL, /* exec */ -+ 0, /* depth */ -+ 0, 0, /* size */ -+ 0, /* flags */ -+ 0, /* codepage */ -+ NULL, /* shell */ -+}; -+ -+#endif /* GRDRV_BEOS */ -+ -+#endif -diff -urN links-2.3pre2-orig/bfu.c links-2.3pre2/bfu.c ---- links-2.3pre2-orig/bfu.c 2011-04-19 15:17:48.000000000 +0000 -+++ links-2.3pre2/bfu.c 2011-05-13 09:04:15.983302144 +0000 -@@ -474,7 +474,7 @@ - draw_to_window(win, (void (*)(struct terminal *, void *))gf_val(display_menu_txt, display_menu_gfx), menu); - break; - case EV_MOUSE: -- if ((ev->b & BM_ACT) == B_MOVE) break; -+ if ((ev->b & BM_ACT) == BTN_MOVE) break; - if (ev->x < menu->x || ev->x >= menu->x+menu->xw || ev->y < menu->y || ev->y >= menu->y+menu->yw) { - int f = 1; - for (w1 = win; (void *)w1 != &win->term->windows; w1 = w1->next) { -@@ -498,7 +498,7 @@ - if (ev->x > m1->x && ev->x < m1->x+m1->xw-1 && ev->y > m1->y && ev->y < m1->y+m1->yw-1) goto del; - f--; - } -- if ((ev->b & BM_ACT) == B_DOWN) goto del; -+ if ((ev->b & BM_ACT) == BTN_DOWN) goto del; - bbb:; - } else { - if (!(ev->x < menu->x || ev->x >= menu->x+menu->xw || ev->y < menu->y + gf_val(1, G_MENU_TOP_BORDER) || ev->y >= menu->y + menu->yw - gf_val(1, G_MENU_TOP_BORDER))) { -@@ -510,7 +510,7 @@ - scroll_menu(menu, 0); - draw_to_window(win, (void (*)(struct terminal *, void *))gf_val(display_menu_txt, display_menu_gfx), menu); - menu_oldview = menu_oldsel = -1; -- if ((ev->b & BM_ACT) == B_UP/* || menu->items[s].in_m*/) select_menu(win->term, menu); -+ if ((ev->b & BM_ACT) == BTN_UP/* || menu->items[s].in_m*/) select_menu(win->term, menu); - } - } - } -@@ -698,8 +698,8 @@ - draw_to_window(win, (void (*)(struct terminal *, void *))display_mainmenu, menu); - break; - case EV_MOUSE: -- if ((ev->b & BM_ACT) == B_MOVE) break; -- if ((ev->b & BM_ACT) == B_DOWN && ev->y >= gf_val(1, G_BFU_FONT_SIZE)) delete_window_ev(win, ev); -+ if ((ev->b & BM_ACT) == BTN_MOVE) break; -+ if ((ev->b & BM_ACT) == BTN_DOWN && ev->y >= gf_val(1, G_BFU_FONT_SIZE)) delete_window_ev(win, ev); - else if (ev->y < gf_val(1, G_BFU_FONT_SIZE)) { - int i; - int p = gf_val(2, G_MAINMENU_LEFT_BORDER); -@@ -710,7 +710,7 @@ - if (ev->x >= o && ev->x < p) { - menu->selected = i; - draw_to_window(win, (void (*)(struct terminal *, void *))display_mainmenu, menu); -- if ((ev->b & BM_ACT) == B_UP || menu->items[s].in_m) select_mainmenu(win->term, menu); -+ if ((ev->b & BM_ACT) == BTN_UP || menu->items[s].in_m) select_mainmenu(win->term, menu); - break; - } - } -@@ -1046,7 +1046,7 @@ - dlg->selected = di - dlg->items; - x_display_dlg_item(dlg, di, 1); - } -- if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di); -+ if ((ev->b & BM_ACT) == BTN_UP) dlg_select_item(dlg, di); - return 1; - case D_FIELD: - case D_FIELD_PASS: -@@ -1082,7 +1082,7 @@ - dlg->selected = di - dlg->items; - x_display_dlg_item(dlg, di, 1); - } -- if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di); -+ if ((ev->b & BM_ACT) == BTN_UP) dlg_select_item(dlg, di); - return 1; - } - return 0; -@@ -1221,9 +1221,9 @@ - draw_to_window(dlg->win, (void (*)(struct terminal *, void *))redraw_dialog, dlg); - break; - case EV_MOUSE: -- if ((ev->b & BM_ACT) == B_MOVE) break; -+ if ((ev->b & BM_ACT) == BTN_MOVE) break; - for (i = 0; i < dlg->n; i++) if (dlg_mouse(dlg, &dlg->items[i], ev)) break; -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_MIDDLE) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_MIDDLE) { - di = &dlg->items[dlg->selected]; /* don't delete this!!! it's here because of jump from mouse event */ - if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) goto clipbd_paste; - } -@@ -1409,9 +1409,9 @@ - } - } - if (ev->x == KBD_ENTER) for (i = 0; i < dlg->n; i++) -- if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ENTER) goto sel; -+ if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & BTN_ENTER) goto sel; - if (ev->x == KBD_ESC) for (i = 0; i < dlg->n; i++) -- if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ESC) goto sel; -+ if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & BTN_ESC) goto sel; - if (((ev->x == KBD_TAB && !ev->y) || ev->x == KBD_DOWN || ev->x == KBD_RIGHT) && (dlg->n > 1 || term->spec->braille)) { - if (term->spec->braille) dlg->brl_y = dlg->items[0].y - 3; - x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0); -@@ -1447,11 +1447,11 @@ - unsigned char *end; - double d = strtod(di->cdata, (char **)(void *)&end); - if (!*di->cdata || *end) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - if (100*d < di->item->gid || 100*d > di->item->gnum) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - return 0; -@@ -1462,11 +1462,11 @@ - unsigned char *end; - long l = strtol(di->cdata, (char **)(void *)&end, 10); - if (!*di->cdata || *end) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - if (l < di->item->gid || l > di->item->gnum) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - return 0; -@@ -1477,11 +1477,11 @@ - unsigned char *end; - long l = strtol(di->cdata, (char **)(void *)&end, 16); - if (!*di->cdata || *end) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_EXPECTED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - if (l < di->item->gid || l > di->item->gnum) { -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_NUMBER), AL_CENTER, TEXT(T_NUMBER_OUT_OF_RANGE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - return 0; -@@ -1491,7 +1491,7 @@ - { - unsigned char *p; - for (p = di->cdata; *p; p++) if (*p > ' ') return 0; -- msg_box(dlg->win->term, NULL, TEXT(T_BAD_STRING), AL_CENTER, TEXT(T_EMPTY_STRING_NOT_ALLOWED), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(dlg->win->term, NULL, TEXT(T_BAD_STRING), AL_CENTER, TEXT(T_EMPTY_STRING_NOT_ALLOWED), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return 1; - } - -@@ -2283,7 +2283,7 @@ - va_start(va, check); - for (i = 1; i <= n; i++) { - dlg->items[i].type = D_BUTTON; -- dlg->items[i].gid = i == 1 ? B_ENTER : i == n ? B_ESC : 0; -+ dlg->items[i].gid = i == 1 ? BTN_ENTER : i == n ? BTN_ESC : 0; - dlg->items[i].fn = i != n || n == 1 ? input_field_ok : input_field_cancel; - dlg->items[i].dlen = 0; - dlg->items[i].text = va_arg(va, unsigned char *); -diff -urN links-2.3pre2-orig/block.c links-2.3pre2/block.c ---- links-2.3pre2-orig/block.c 2011-04-19 15:17:48.000000000 +0000 -+++ links-2.3pre2/block.c 2011-05-13 09:04:16.001310720 +0000 -@@ -222,11 +222,11 @@ - d->items[0].data = url; - d->items[0].fn = check_nonempty; - d->items[1].type = D_BUTTON; -- d->items[1].gid = B_ENTER; -+ d->items[1].gid = BTN_ENTER; - d->items[1].fn = ok_dialog; - d->items[1].text = TEXT(T_OK); - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ESC; -+ d->items[2].gid = BTN_ESC; - d->items[2].text = TEXT(T_CANCEL); - d->items[2].fn = cancel_dialog; - d->items[3].type = D_END; -diff -urN links-2.3pre2-orig/bookmarks.c links-2.3pre2/bookmarks.c ---- links-2.3pre2-orig/bookmarks.c 2011-04-19 15:17:48.000000000 +0000 -+++ links-2.3pre2/bookmarks.c 2011-05-13 09:04:16.036438016 +0000 -@@ -370,12 +370,12 @@ - } - - d->items[a+1].type = D_BUTTON; -- d->items[a+1].gid = B_ENTER; -+ d->items[a+1].gid = BTN_ENTER; - d->items[a+1].fn = ok_dialog; - d->items[a+1].text = TEXT(T_OK); - - d->items[a+2].type = D_BUTTON; -- d->items[a+2].gid = B_ESC; -+ d->items[a+2].gid = BTN_ESC; - d->items[a+2].text = TEXT(T_CANCEL); - d->items[a+2].fn = cancel_dialog; - -diff -urN links-2.3pre2-orig/cfg.h links-2.3pre2/cfg.h ---- links-2.3pre2-orig/cfg.h 2002-05-07 10:13:18.000000000 +0000 -+++ links-2.3pre2/cfg.h 2011-05-13 09:33:41.000000000 +0000 -@@ -16,7 +16,7 @@ - /* no one will probably ever port svgalib on atheos or beos or port atheos - interface to beos, but anyway: make sure they don't clash */ - --#ifdef __BEOS__ -+#if defined __BEOS__ || defined __HAIKU__ - #ifdef GRDRV_SVGALIB - #undef GRDRV_SVGALIB - #endif -diff -urN links-2.3pre2-orig/configure.in links-2.3pre2/configure.in ---- links-2.3pre2-orig/configure.in 2011-04-19 15:30:57.000000000 +0000 -+++ links-2.3pre2/configure.in 2011-05-13 09:04:16.068681728 +0000 -@@ -18,7 +18,7 @@ - dnl Checks for programs. - AC_PROG_CC - --#AC_PROG_CXX -+AC_PROG_CXX - #AC_PROG_AWK - #AM_PROG_LEX - #AC_PROG_YACC -@@ -33,6 +33,7 @@ - - dnl Check for libraries - -+AC_SEARCH_LIBS(socket, socket network) - AC_CACHE_CHECK([for EMX], ac_cv_have_emx, - AC_TRY_COMPILE(, [#ifndef __EMX__ - kill me! -@@ -220,7 +221,10 @@ - if test "$ac_cv_lib_socket_gethostbyname" = no; then - AC_CHECK_LIB(nsl, gethostbyname) - if test "$ac_cv_lib_nsl_gethostbyname" = no; then -- AC_ERROR([gethostbyname function not present]) -+ AC_CHECK_LIB(bind, gethostbyname) -+ if test "$ac_cv_lib_bind_gethostbyname" = no; then -+ AC_ERROR([gethostbyname function not present]) -+ fi - fi - fi - fi -@@ -329,6 +333,7 @@ - fi - #AC_CHECK_FUNC(clone, AC_DEFINE(HAVE_CLONE)) - AC_CHECK_HEADERS(atheos/threads.h) -+AC_CHECK_HEADERS(kernel/OS.h) - AC_HAVE_FUNCS(spawn_thread) - AC_HAVE_FUNCS(resume_thread) - -@@ -458,6 +463,7 @@ - - - cf_have_atheos=no -+cf_have_beos=no - - if test "$cf_use_graphics" != no; then - AC_DEFINE(G) -@@ -469,6 +475,7 @@ - dnl AC_ARG_WITH(sdl, [ --without-sdl compile without SDL graphics driver],[if test "$withval" = no; then disable_sdl=yes; else disable_sdl=no; fi]) - AC_ARG_WITH(pmshell, [ --without-pmshell compile without PMShell graphics driver],[if test "$withval" = no; then disable_pmshell=yes; else disable_pmshell=no; fi]) - AC_ARG_WITH(atheos, [ --without-atheos compile without Atheos graphics driver],[if test "$withval" = no; then disable_atheos=yes; else disable_atheos; fi]) -+AC_ARG_WITH(beos, [ --without-beos compile without BeOS/Haiku graphics driver],[if test "$withval" = no; then disable_beos=yes; else disable_beos; fi]) - - drivers="" - -@@ -604,6 +611,31 @@ - fi - fi - -+if test "$disable_beos" != yes ; then -+ old_ext="$ac_ext" -+ ac_ext=cpp -+ AC_CHECK_HEADERS(interface/View.h) -+ AC_CHECK_HEADERS(interface/Window.h) -+ AC_CHECK_HEADERS(interface/Screen.h) -+ AC_CHECK_HEADERS(interface/Bitmap.h) -+ AC_CHECK_HEADERS(support/Locker.h) -+ AC_CHECK_HEADERS(app/Application.h) -+ ac_ext="$old_ext" -+ -+ if test "$ac_cv_header_kernel_OS_h" = yes && -+ test "$ac_cv_header_interface_View_h" = yes && -+ test "$ac_cv_header_interface_Window_h" = yes && -+ test "$ac_cv_header_interface_Screen_h" = yes && -+ test "$ac_cv_header_interface_Bitmap_h" = yes && -+ test "$ac_cv_header_support_Locker_h" = yes && -+ test "$ac_cv_header_app_Application_h" = yes; then -+ AC_PROG_CXX -+ AC_DEFINE(GRDRV_BEOS) -+ drivers="$drivers BEOS" -+ cf_have_beos=yes -+ fi -+fi -+ - AC_CHECK_LIB(z, inflate) - PKG_CHECK_MODULES(LIBPNG,libpng >= 1.0.0,pkgconfig_libpng=yes,pkgconfig_libpng=no) - if test "$pkgconfig_libpng" = "yes"; then -@@ -681,6 +713,7 @@ - - - AM_CONDITIONAL(ATHEOS_GR, test "$cf_have_atheos" = yes) -+AM_CONDITIONAL(BEOS_GR, test "$cf_have_beos" = yes) - - test "$ac_cv_have_emx" = yes && LDFLAGS="$LDFLAGS -Zexe" - -diff -urN links-2.3pre2-orig/default.c links-2.3pre2/default.c ---- links-2.3pre2-orig/default.c 2011-04-19 15:17:48.000000000 +0000 -+++ links-2.3pre2/default.c 2011-05-13 09:04:16.099876864 +0000 -@@ -449,7 +449,7 @@ - } - add_to_strn(&config_file, name); - if ((err = write_to_config_file(config_file, c))) { -- if (term) msg_box(term, NULL, TEXT(T_CONFIG_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_UNABLE_TO_WRITE_TO_CONFIG_FILE), ": ", get_err_msg(-err), NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (term) msg_box(term, NULL, TEXT(T_CONFIG_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_UNABLE_TO_WRITE_TO_CONFIG_FILE), ": ", get_err_msg(-err), NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - mem_free(c); - mem_free(config_file); - return -1; -diff -urN links-2.3pre2-orig/directfb.c links-2.3pre2/directfb.c ---- links-2.3pre2-orig/directfb.c 2008-06-10 20:53:29.000000000 +0000 -+++ links-2.3pre2/directfb.c 2011-05-13 09:04:16.108527616 +0000 -@@ -652,25 +652,25 @@ - - if (event.type == DWET_BUTTONUP) - { -- flags = B_UP; -+ flags = BTN_UP; - data->window->UngrabPointer (data->window); - } - else - { -- flags = B_DOWN; -+ flags = BTN_DOWN; - data->window->GrabPointer (data->window); - } - - switch (event.button) - { - case DIBI_LEFT: -- flags |= B_LEFT; -+ flags |= BTN_LEFT; - break; - case DIBI_RIGHT: -- flags |= B_RIGHT; -+ flags |= BTN_RIGHT; - break; - case DIBI_MIDDLE: -- flags |= B_MIDDLE; -+ flags |= BTN_MIDDLE; - break; - default: - continue; -@@ -682,8 +682,8 @@ - - case DWET_WHEEL: - gd->mouse_handler (gd, event.x, event.y, -- B_MOVE | -- (event.step > 0 ? B_WHEELUP : B_WHEELDOWN)); -+ BTN_MOVE | -+ (event.step > 0 ? BTN_WHEELUP : BTN_WHEELDOWN)); - break; - - case DWET_MOTION: -@@ -698,16 +698,16 @@ - switch (event.buttons) - { - case DIBM_LEFT: -- flags = B_DRAG | B_LEFT; -+ flags = BTN_DRAG | BTN_LEFT; - break; - case DIBM_RIGHT: -- flags = B_DRAG | B_RIGHT; -+ flags = BTN_DRAG | BTN_RIGHT; - break; - case DIBM_MIDDLE: -- flags = B_DRAG | B_MIDDLE; -+ flags = BTN_DRAG | BTN_MIDDLE; - break; - default: -- flags = B_MOVE; -+ flags = BTN_MOVE; - break; - } - -diff -urN links-2.3pre2-orig/drivers.c links-2.3pre2/drivers.c ---- links-2.3pre2-orig/drivers.c 2011-04-19 15:17:48.000000000 +0000 -+++ links-2.3pre2/drivers.c 2011-05-13 09:04:16.130285568 +0000 -@@ -31,6 +31,9 @@ - #ifdef GRDRV_ATHEOS - extern struct graphics_driver atheos_driver; - #endif -+#ifdef GRDRV_BEOS -+extern struct graphics_driver beos_driver; -+#endif - #ifdef GRDRV_SDL - extern struct graphics_driver sdl_driver; - #endif -@@ -48,6 +51,9 @@ - #ifdef GRDRV_ATHEOS - &atheos_driver, - #endif -+#ifdef GRDRV_BEOS -+ &beos_driver, -+#endif - #ifndef SPAD - #ifdef GRDRV_X - &x_driver, -diff -urN links-2.3pre2-orig/framebuffer.c links-2.3pre2/framebuffer.c ---- links-2.3pre2-orig/framebuffer.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/framebuffer.c 2011-05-13 09:04:16.148897792 +0000 -@@ -383,7 +383,7 @@ - if (mouse_y < 0) mouse_y = 0; - ev.x = mouse_x; - ev.y = mouse_y; -- ev.b = B_MOVE; -+ ev.b = BTN_MOVE; - if (!current_virtual_device) return; - if (current_virtual_device->mouse_handler) current_virtual_device->mouse_handler(current_virtual_device, ev.x, ev.y, ev.b); - redraw_mouse(); -@@ -1018,26 +1018,26 @@ - - ev.x = mouse_x; - ev.y = mouse_y; -- if (gev.buttons & GPM_B_LEFT) ev.b = B_LEFT; -- else if (gev.buttons & GPM_B_MIDDLE) ev.b = B_MIDDLE; -- else if (gev.buttons & GPM_B_RIGHT) ev.b = B_RIGHT; -+ if (gev.buttons & GPM_B_LEFT) ev.b = BTN_LEFT; -+ else if (gev.buttons & GPM_B_MIDDLE) ev.b = BTN_MIDDLE; -+ else if (gev.buttons & GPM_B_RIGHT) ev.b = BTN_RIGHT; - else ev.b = 0; -- if (gev.type & GPM_DOWN) ev.b |= B_DOWN; -- else if (gev.type & GPM_UP) ev.b |= B_UP; -- else if (gev.type & GPM_DRAG) ev.b |= B_DRAG; -- else ev.b |= B_MOVE; -+ if (gev.type & GPM_DOWN) ev.b |= BTN_DOWN; -+ else if (gev.type & GPM_UP) ev.b |= BTN_UP; -+ else if (gev.type & GPM_DRAG) ev.b |= BTN_DRAG; -+ else ev.b |= BTN_MOVE; - - #ifndef USE_GPM_DX - if (fb_msetsize < 0) { - } else if (fb_msetsize < 10) { - fb_msetsize++; -- } else if ((ev.b & BM_ACT) == B_MOVE && !(ev.b & BM_BUTT)) { -+ } else if ((ev.b & BM_ACT) == BTN_MOVE && !(ev.b & BM_BUTT)) { - fb_mouse_setsize(); - fb_msetsize = -1; - } - #endif - -- if (((ev.b & BM_ACT) == B_MOVE && !(ev.b & BM_BUTT)) || (ev.b & BM_ACT) == B_DRAG) { -+ if (((ev.b & BM_ACT) == BTN_MOVE && !(ev.b & BM_BUTT)) || (ev.b & BM_ACT) == BTN_DRAG) { - if (can_read(fb_hgpm)) goto again; - } - -diff -urN links-2.3pre2-orig/jsint.c links-2.3pre2/jsint.c ---- links-2.3pre2-orig/jsint.c 2008-08-15 23:37:46.000000000 +0000 -+++ links-2.3pre2/jsint.c 2011-05-13 09:04:16.185860096 +0000 -@@ -1272,8 +1272,8 @@ - txt, /* message */ - jsid, /* data for button functions */ - 3, /* # of buttons */ -- TEXT(T_OK),js_upcall_confirm_ok_pressed,B_ENTER, /* first button */ -- TEXT(T_CANCEL),js_upcall_confirm_cancel_pressed,B_ESC, /* second button */ -+ TEXT(T_OK),js_upcall_confirm_ok_pressed,BTN_ENTER, /* first button */ -+ TEXT(T_CANCEL),js_upcall_confirm_cancel_pressed,BTN_ESC, /* second button */ - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL - ); - -@@ -1342,7 +1342,7 @@ - txt, /* message */ - jsid, /* data for button functions */ - 2, /* # of buttons */ -- TEXT(T_OK),js_upcall_alert_ok_pressed,B_ENTER|B_ESC, -+ TEXT(T_OK),js_upcall_alert_ok_pressed,BTN_ENTER|BTN_ESC, - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL - ); - -@@ -2933,8 +2933,8 @@ - jsid->n?TEXT(T_JS_IS_ATTEMPTING_TO_OPEN_NEW_WINDOW_WITH_URL):TEXT(T_JS_IS_ATTEMPTING_TO_GO_TO_URL), " \"",jsid->string,"\".",NULL, /* message */ - jsid, /* data for button functions */ - 3, /* # of buttons */ -- TEXT(T_ALLOW),js_upcall_goto_url_ok_pressed,B_ENTER, -- TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,B_ESC, -+ TEXT(T_ALLOW),js_upcall_goto_url_ok_pressed,BTN_ENTER, -+ TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,BTN_ESC, - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL /* dirty trick: gimme_js_id_string and gimme_js_id begins with the same long */ - ); - js_mem_free(s); -@@ -3089,8 +3089,8 @@ - TEXT(T_JS_IS_ATTEMPTING_TO_GO_INTO_HISTORY), txt, TEXT(T_TO_URL), " \"",url,"\".",NULL, /* message */ - jsid, /* data for button functions */ - 3, /* # of buttons */ -- TEXT(T_ALLOW),js_upcall_goto_history_ok_pressed,B_ENTER, -- TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,B_ESC, -+ TEXT(T_ALLOW),js_upcall_goto_history_ok_pressed,BTN_ENTER, -+ TEXT(T_REJECT),js_upcall_goto_url_cancel_pressed,BTN_ESC, - TEXT(T_KILL_SCRIPT), js_kill_script_pressed,NULL /* dirty trick: gimme_js_id_string and gimme_js_id begins with the same long */ - ); - js_mem_free(s); -diff -urN links-2.3pre2-orig/kbd.c links-2.3pre2/kbd.c ---- links-2.3pre2-orig/kbd.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/kbd.c 2011-05-13 09:04:16.190054400 +0000 -@@ -843,10 +843,10 @@ - ev.y = (unsigned char)(itrm->kqueue[el+3]) - ' ' - 1 + ((int)((unsigned char)(itrm->kqueue[el+4]) - ' ' - 1) << 7); - if ( ev.y & (1 << 13)) ev.y = 0; /* ev.y |= ~0 << 14; */ - switch ((itrm->kqueue[el] - ' ') ^ xterm_button) { /* Every event changhes only one bit */ -- case TW_BUTT_LEFT: ev.b = B_LEFT | ( (xterm_button & TW_BUTT_LEFT) ? B_UP : B_DOWN ); break; -- case TW_BUTT_MIDDLE: ev.b = B_MIDDLE | ( (xterm_button & TW_BUTT_MIDDLE) ? B_UP : B_DOWN ); break; -- case TW_BUTT_RIGHT: ev.b = B_RIGHT | ( (xterm_button & TW_BUTT_RIGHT) ? B_UP : B_DOWN ); break; -- case 0: ev.b = B_DRAG; -+ case TW_BUTT_LEFT: ev.b = BTN_LEFT | ( (xterm_button & TW_BUTT_LEFT) ? BTN_UP : BTN_DOWN ); break; -+ case TW_BUTT_MIDDLE: ev.b = BTN_MIDDLE | ( (xterm_button & TW_BUTT_MIDDLE) ? BTN_UP : BTN_DOWN ); break; -+ case TW_BUTT_RIGHT: ev.b = BTN_RIGHT | ( (xterm_button & TW_BUTT_RIGHT) ? BTN_UP : BTN_DOWN ); break; -+ case 0: ev.b = BTN_DRAG; - /* default : Twin protocol error */ - } - xterm_button = itrm->kqueue[el] - ' '; -@@ -854,15 +854,15 @@ - } else { - ev.x = itrm->kqueue[el+1] - ' ' - 1; - ev.y = itrm->kqueue[el+2] - ' ' - 1; -- ev.b = B_DOWN; -- if (itrm->kqueue[el] & 4) ev.b = B_DRAG; -- if ((ev.b |= (itrm->kqueue[el] & BM_BUTT) | B_DOWN) == 3) { -- ev.b = B_UP; -+ ev.b = BTN_DOWN; -+ if (itrm->kqueue[el] & 4) ev.b = BTN_DRAG; -+ if ((ev.b |= (itrm->kqueue[el] & BM_BUTT) | BTN_DOWN) == 3) { -+ ev.b = BTN_UP; - if (xterm_button != -1) ev.b |= xterm_button; - } -- /*if ((itrm->kqueue[el] & 4) && ev.b != B_UP) ev.b |= B_DRAG;*/ -+ /*if ((itrm->kqueue[el] & 4) && ev.b != BTN_UP) ev.b |= BTN_DRAG;*/ - xterm_button = -1; -- if ((ev.b & BM_ACT) == B_DOWN) xterm_button = ev.b & BM_BUTT; -+ if ((ev.b & BM_ACT) == BTN_DOWN) xterm_button = ev.b & BM_BUTT; - el += 3; - } - ev.ev = EV_MOUSE; -diff -urN links-2.3pre2-orig/links-beos.rdef links-2.3pre2/links-beos.rdef ---- links-2.3pre2-orig/links-beos.rdef 1970-01-01 00:00:00.000000000 +0000 -+++ links-2.3pre2/links-beos.rdef 2011-05-13 09:04:16.208928768 +0000 -@@ -0,0 +1,97 @@ -+/* -+** links-beos.rdef -+** -+** Automatically generated by BResourceParser on -+** Thursday, December 13, 2007 at 23:46:45. -+** -+*/ -+ -+resource(1, "BEOS:APP_FLAGS") (#'APPF') $"01000000"; -+ -+resource(1, "BEOS:APP_VERSION") #'APPV' array { -+ $"02000000010000000000000000000000210000006C696E6B7320322E31707265" -+ $"3333000000000000000000000000000000000000000000000000000000000000" -+ $"00000000000000000000000000000000000000004C696E6B732062726F777365" -+ $"7220322E31707265333300000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000" -+}; -+ -+resource(101, "BEOS:L:STD_ICON") #'ICON' array { -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2B2B2B2B2B2B2B2B2B2B2B2C0000363434343434343434343434343434" -+ $"2A2A2A3200000000000000000000000000363434343434343434343434343434" -+ $"2A2A2A2FF1313200000000000131310000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A30000000002B2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2C2C2C2C2C2C2C30000000002C2C2D0000373636363636363636363636363636" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"2222222222222226000000002222230000151A1A1A1A1A1A1A1A1A1A1A1A1A1A" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F1501113F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0E00133F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0500163F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F1A0000193F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F0C00001B3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F190000001E3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F1A030000013F3F3F3F3F" -+ $"20202020202020270000000023202200001A3F1E170C00000000043F3F3F3F3F" -+ $"2020202628292900000000000029290000040300000000000000063F3F3F3F3F" -+ $"20202027292929292929292929292900000203030303030303030B3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+}; -+ -+resource(101, "BEOS:M:STD_ICON") #'MICN' array { -+ $"2A2A2A2A2A2A2A303A34343434343434" -+ $"2A2C3030303030F73A34343434343434" -+ $"2A2B2D300000EB323A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"303030310000F1333D3A3A3A3A3A3A3A" -+ $"2626262700002629050D0D0D0D0D0D0D" -+ $"20202022000020260D3F3F3F1D143F3F" -+ $"20202022000020260D3F3F3F140A3F3F" -+ $"20202022000020260D3F3F3F090D3F3F" -+ $"20202022000020260D3F3F16000F3F3F" -+ $"20222427000026280710090000123F3F" -+ $"202225252525252807111111111A3F3F" -+ $"20202020202020260D3F3F3F3F3F3F3F" -+}; -+ -+resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.links"; -+ -+resource(1, "BEOS:FILE_TYPES") message { -+ "types" = "text/html", -+ "types" = "application/x-vnd.Be-bookmark", -+ "types" = "application/x-vnd.Be.URL.http" -+}; -+ -diff -urN links-2.3pre2-orig/links.h links-2.3pre2/links.h ---- links-2.3pre2-orig/links.h 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/links.h 2011-05-13 09:04:16.239337472 +0000 -@@ -989,26 +989,26 @@ - /* kbd.c */ - - #define BM_BUTT 15 --#define B_LEFT 0 --#define B_MIDDLE 1 --#define B_RIGHT 2 --#define B_FOURTH 3 --#define B_FIFTH 4 --#define B_SIXTH 5 --#define B_WHEELUP 8 --#define B_WHEELDOWN 9 --#define B_WHEELUP1 10 --#define B_WHEELDOWN1 11 --#define B_WHEELLEFT 12 --#define B_WHEELRIGHT 13 --#define B_WHEELLEFT1 14 --#define B_WHEELRIGHT1 15 -+#define BTN_LEFT 0 -+#define BTN_MIDDLE 1 -+#define BTN_RIGHT 2 -+#define BTN_FOURTH 3 -+#define BTN_FIFTH 4 -+#define BTN_SIXTH 5 -+#define BTN_WHEELUP 8 -+#define BTN_WHEELDOWN 9 -+#define BTN_WHEELUP1 10 -+#define BTN_WHEELDOWN1 11 -+#define BTN_WHEELLEFT 12 -+#define BTN_WHEELRIGHT 13 -+#define BTN_WHEELLEFT1 14 -+#define BTN_WHEELRIGHT1 15 - - #define BM_ACT 48 --#define B_DOWN 0 --#define B_UP 16 --#define B_DRAG 32 --#define B_MOVE 48 -+#define BTN_DOWN 0 -+#define BTN_UP 16 -+#define BTN_DRAG 32 -+#define BTN_MOVE 48 - - #define KBD_ENTER -0x100 - #define KBD_BS -0x101 -@@ -3014,15 +3014,15 @@ - #define D_FIELD_PASS 3 - #define D_BUTTON 4 - --#define B_ENTER 1 --#define B_ESC 2 -+#define BTN_ENTER 1 -+#define BTN_ESC 2 - - struct dialog_item_data; - struct dialog_data; - - struct dialog_item { - int type; -- int gid, gnum; /* for buttons: gid - flags B_XXX */ /* for fields: min/max */ /* for box: gid is box height */ -+ int gid, gnum; /* for buttons: gid - flags BTN_XXX */ /* for fields: min/max */ /* for box: gid is box height */ - int (*fn)(struct dialog_data *, struct dialog_item_data *); - struct history *history; - int dlen; -diff -urN links-2.3pre2-orig/listedit.c links-2.3pre2/listedit.c ---- links-2.3pre2-orig/listedit.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/listedit.c 2011-05-13 09:04:16.272367616 +0000 -@@ -734,7 +734,7 @@ - TEXT(T_NO_ITEMS_SELECTED), /* text */ - NULL, /* data */ - 1, /* # of buttons */ -- TEXT(T_OK),NULL,B_ESC|B_ENTER /* button1 */ -+ TEXT(T_OK),NULL,BTN_ESC|BTN_ENTER /* button1 */ - ); - else - { -@@ -916,8 +916,8 @@ - TEXT(T_FOLDER)," \"",txt,"\" ",TEXT(T_NOT_EMPTY_SURE_DELETE),NULL, /* text */ - narez, /* data for ld->delete_item */ - 2, /* # of buttons */ -- TEXT(T_NO),NULL,B_ESC, /* button1 */ -- TEXT(T_YES),delete_folder_recursively,B_ENTER /* button2 */ -+ TEXT(T_NO),NULL,BTN_ESC, /* button1 */ -+ TEXT(T_YES),delete_folder_recursively,BTN_ENTER /* button2 */ - ); - else - msg_box( -@@ -928,8 +928,8 @@ - TEXT(T_SURE_DELETE)," ",TEXT(T_fOLDER)," \"",txt,"\"?",NULL, /* null-terminated text */ - narez, /* data for ld->delete_item */ - 2, /* # of buttons */ -- TEXT(T_YES),delete_ok,B_ENTER, /* button1 */ -- TEXT(T_NO),NULL,B_ESC /* button2 */ -+ TEXT(T_YES),delete_ok,BTN_ENTER, /* button1 */ -+ TEXT(T_NO),NULL,BTN_ESC /* button2 */ - ); - } - else /* item */ -@@ -941,8 +941,8 @@ - TEXT(T_SURE_DELETE)," ",TEXT(ld->item_description)," \"",txt,"\"?",NULL, /* null-terminated text */ - narez, /* data for ld->delete_item */ - 2, /* # of buttons */ -- TEXT(T_YES),delete_ok,B_ENTER, /* button1 */ -- TEXT(T_NO),NULL,B_ESC /* button2 */ -+ TEXT(T_YES),delete_ok,BTN_ENTER, /* button1 */ -+ TEXT(T_NO),NULL,BTN_ESC /* button2 */ - ); - return 0; - } -@@ -1485,7 +1485,7 @@ - struct session *ses=(struct session *)(dlg->dlg->udata); - struct list* item; - -- if (!ld->search_word) {msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); return;} -+ if (!ld->search_word) {msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); return;} - - if ((item=ld->find_item(ld->current_pos,ld->search_word,direction))) - { -@@ -1501,7 +1501,7 @@ - if (!F) if (!ses->term->spec->block_cursor || ses->term->spec->braille) set_cursor(ses->term, dlg->x + DIALOG_LB, dlg->y+DIALOG_TB+ld->win_pos, dlg->x + DIALOG_LB, dlg->y+DIALOG_TB+ld->win_pos); - } - else -- msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - - } - -@@ -1739,7 +1739,7 @@ - - case EV_MOUSE: - /* toggle select item */ -- if ((ev->b&BM_ACT)==B_DOWN&&(ev->b&BM_BUTT)==B_RIGHT) -+ if ((ev->b&BM_ACT)==BTN_DOWN&&(ev->b&BM_BUTT)==BTN_RIGHT) - { - int n,a; - struct list *l=ld->win_offset; -@@ -1771,7 +1771,7 @@ - return EVENT_PROCESSED; - } - /* click on item */ -- if ((ev->b&BM_ACT)==B_DOWN&&(ev->b&BM_BUTT)==B_LEFT) -+ if ((ev->b&BM_ACT)==BTN_DOWN&&(ev->b&BM_BUTT)==BTN_LEFT) - { - int n,a; - struct list *l=ld->win_offset; -@@ -1810,7 +1810,7 @@ - } - /* scroll with the bar */ - #ifdef G -- if (F&&((ev->b&BM_ACT)==B_DRAG&&(ev->b&BM_BUTT)==B_LEFT)) -+ if (F&&((ev->b&BM_ACT)==BTN_DRAG&&(ev->b&BM_BUTT)==BTN_LEFT)) - { - int total=get_total_items(ld); - int scroll_pos=get_scroll_pos(ld); -@@ -1854,7 +1854,7 @@ - - } - #endif -- if ((ev->b&BM_ACT)==B_DRAG&&(ev->b&BM_BUTT)==B_MIDDLE) -+ if ((ev->b&BM_ACT)==BTN_DRAG&&(ev->b&BM_BUTT)==BTN_MIDDLE) - { - long delta=(ev->y-last_mouse_y)/MOUSE_SCROLL_DIVIDER; - -@@ -1891,12 +1891,12 @@ - - } - /* mouse wheel */ -- if ((ev->b&BM_ACT)==B_MOVE&&((ev->b&BM_BUTT)==B_WHEELUP||(ev->b&BM_BUTT)==B_WHEELDOWN||(ev->b&BM_BUTT)==B_WHEELDOWN1||(ev->b&BM_BUTT)==B_WHEELUP1)) -+ if ((ev->b&BM_ACT)==BTN_MOVE&&((ev->b&BM_BUTT)==BTN_WHEELUP||(ev->b&BM_BUTT)==BTN_WHEELDOWN||(ev->b&BM_BUTT)==BTN_WHEELDOWN1||(ev->b&BM_BUTT)==BTN_WHEELUP1)) - { - int button=(ev->b)&BM_BUTT; - last_mouse_y=ev->y; - -- if (button==B_WHEELDOWN||button==B_WHEELDOWN1) /* scroll down */ -+ if (button==BTN_WHEELDOWN||button==BTN_WHEELDOWN1) /* scroll down */ - { - if (next_in_tree(ld,ld->current_pos)==ld->list)return EVENT_PROCESSED; /* already at the bottom */ - ld->current_pos=next_in_tree(ld,ld->current_pos); -@@ -1910,7 +1910,7 @@ - } - draw_to_window(dlg->win,redraw_list_line,&rd); - } -- if (button==B_WHEELUP||button==B_WHEELUP1) /* scroll up */ -+ if (button==BTN_WHEELUP||button==BTN_WHEELUP1) /* scroll up */ - { - if (ld->current_pos==ld->list)return EVENT_PROCESSED; /* already on the top */ - ld->current_pos=prev_in_tree(ld,ld->current_pos); -@@ -2021,7 +2021,7 @@ - TEXT(ld->already_in_use), - NULL, - 1, -- TEXT(T_OK),NULL,B_ENTER|B_ESC -+ TEXT(T_OK),NULL,BTN_ENTER|BTN_ESC - ); - return 1; - } -@@ -2086,7 +2086,7 @@ - d->items[a+4].fn=list_item_unselect; - - d->items[a+5].type=D_BUTTON; -- d->items[a+5].gid=B_ESC; -+ d->items[a+5].gid=BTN_ESC; - d->items[a+5].fn=cancel_dialog; - d->items[a+5].text=TEXT(T_CLOSE); - -diff -urN links-2.3pre2-orig/mailto.c links-2.3pre2/mailto.c ---- links-2.3pre2-orig/mailto.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/mailto.c 2011-05-13 09:04:16.292814848 +0000 -@@ -11,7 +11,7 @@ - { - unsigned char *prog, *cmd; - if (!(prog = get_prog(list)) || !*prog) { -- msg_box(term, NULL, TEXT(T_NO_PROGRAM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_NO_PROGRAM_SPECIFIED_FOR), " ", name, ".", NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_NO_PROGRAM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_NO_PROGRAM_SPECIFIED_FOR), " ", name, ".", NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - if ((cmd = subst_file(prog, param, 0))) { -@@ -38,7 +38,7 @@ - fail1: - mem_free(user); - fail: -- if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_BAD_MAILTO_URL), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_BAD_MAILTO_URL), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - static void tn_func(struct session *ses, unsigned char *url, struct list_head *prog, unsigned char *t1, unsigned char *t2) -@@ -67,7 +67,7 @@ - fail1: - mem_free(hh); - fail: -- if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, t2, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (f) msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, t2, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - -@@ -91,7 +91,7 @@ - void mms_func(struct session *ses, unsigned char *url) - { - if (check_shell_url(url)) { -- msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_MMS_URL_CONTAINS_INACCEPTABLE_CHARACTERS), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_BAD_URL_SYNTAX), AL_CENTER, TEXT(T_MMS_URL_CONTAINS_INACCEPTABLE_CHARACTERS), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - prog_func(ses->term, &mms_prog, url, TEXT(T_MMS)); -diff -urN links-2.3pre2-orig/main.c links-2.3pre2/main.c ---- links-2.3pre2-orig/main.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/main.c 2011-05-13 09:04:16.313262080 +0000 -@@ -271,6 +271,7 @@ - - void initialize_all_subsystems(void); - void initialize_all_subsystems_2(void); -+extern void maybe_force_gr(void); - - static void init(void) - { -@@ -288,6 +289,9 @@ - retval = RET_FATAL; - goto ttt; - } -+#if defined(G) && defined(BEOS) -+ maybe_force_gr(); -+#endif - if (!(u = parse_options(g_argc - 1, g_argv + 1))) { - retval = RET_SYNTAX; - goto ttt; -diff -urN links-2.3pre2-orig/menu.c links-2.3pre2/menu.c ---- links-2.3pre2-orig/menu.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/menu.c 2011-05-13 09:19:13.692322304 +0000 -@@ -17,17 +17,17 @@ - - static void menu_about(struct terminal *term, void *d, struct session *ses) - { -- msg_box(term, NULL, TEXT(T_ABOUT), AL_CENTER, TEXT(T_LINKS__LYNX_LIKE), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_ABOUT), AL_CENTER, TEXT(T_LINKS__LYNX_LIKE), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - static void menu_keys(struct terminal *term, void *d, struct session *ses) - { -- msg_box(term, NULL, TEXT(T_KEYS), AL_LEFT | AL_MONO, TEXT(T_KEYS_DESC), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_KEYS), AL_LEFT | AL_MONO, TEXT(T_KEYS_DESC), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - static void menu_copying(struct terminal *term, void *d, struct session *ses) - { -- msg_box(term, NULL, TEXT(T_COPYING), AL_CENTER, TEXT(T_COPYING_DESC), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_COPYING), AL_CENTER, TEXT(T_COPYING_DESC), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - static void menu_manual(struct terminal *term, void *d, struct session *ses) -@@ -88,7 +88,7 @@ - void query_exit(struct session *ses) - { - ses->exit_query = 1; -- msg_box(ses->term, NULL, TEXT(T_EXIT_LINKS), AL_CENTER, (ses->term->next == ses->term->prev && are_there_downloads()) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS_AND_TERMINATE_ALL_DOWNLOADS) : (!F || ses->term->next == ses->term->prev) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS) : TEXT(T_DO_YOU_REALLY_WANT_TO_CLOSE_WINDOW), ses, 2, TEXT(T_YES), (void (*)(void *))really_exit_prog, B_ENTER, TEXT(T_NO), dont_exit_prog, B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_EXIT_LINKS), AL_CENTER, (ses->term->next == ses->term->prev && are_there_downloads()) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS_AND_TERMINATE_ALL_DOWNLOADS) : (!F || ses->term->next == ses->term->prev) ? TEXT(T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS) : TEXT(T_DO_YOU_REALLY_WANT_TO_CLOSE_WINDOW), ses, 2, TEXT(T_YES), (void (*)(void *))really_exit_prog, BTN_ENTER, TEXT(T_NO), dont_exit_prog, BTN_ESC); - } - - void exit_prog(struct terminal *term, void *d, struct session *ses) -@@ -215,7 +215,7 @@ - l = 0, a15 = init_str(); add_to_str(&a15, &l, ", "); add_num_to_str(&a15, &l, formatted_info(CI_LOCKED));add_to_str(&a15, &l, " "); - l = 0, a16 = init_str(); add_to_str(&a16, &l, "."); - -- if (!F) msg_box(term, getml(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, NULL), TEXT(T_RESOURCES), AL_LEFT | AL_EXTD_TEXT, TEXT(T_RESOURCES), a1, TEXT(T_HANDLES), a2, TEXT(T_TIMERS), a3, TEXT(T_CONNECTIONS), a4, TEXT(T_cONNECTIONS), a5, TEXT(T_CONNECTING), a6, TEXT(T_tRANSFERRING), a7, TEXT(T_KEEPALIVE), a8, TEXT(T_MEMORY_CACHE), a9, TEXT(T_BYTES), a10, TEXT(T_FILES), a11, TEXT(T_LOCKED), a12, TEXT(T_LOADING), a13, TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ if (!F) msg_box(term, getml(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, NULL), TEXT(T_RESOURCES), AL_LEFT | AL_EXTD_TEXT, TEXT(T_RESOURCES), a1, TEXT(T_HANDLES), a2, TEXT(T_TIMERS), a3, TEXT(T_CONNECTIONS), a4, TEXT(T_cONNECTIONS), a5, TEXT(T_CONNECTING), a6, TEXT(T_tRANSFERRING), a7, TEXT(T_KEEPALIVE), a8, TEXT(T_MEMORY_CACHE), a9, TEXT(T_BYTES), a10, TEXT(T_FILES), a11, TEXT(T_LOCKED), a12, TEXT(T_LOADING), a13, TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - #ifdef G - else msg_box(term, getml(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, - a12, a13, b14, b15, b16, b17, a14, a15, a16, -@@ -230,7 +230,7 @@ - TEXT(T_BYTES), b15, TEXT(T_IMAGES), b16, TEXT(T_LOCKED), - b17, TEXT(T_FONT_CACHE), c14, TEXT(T_BYTES), c15, - TEXT(T_BYTES_MAX), c16, TEXT(T_LETTERS), c17, -- TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ TEXT(T_FORMATTED_DOCUMENT_CACHE), a14, TEXT(T_DOCUMENTS), a15, TEXT(T_LOCKED), a16, NULL, r, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - #endif - r->win = term->windows.next; - ((struct dialog_data *)r->win->data)->dlg->abort = refresh_abort; -@@ -259,7 +259,7 @@ - add_to_str(&a, &l, "\n"); - add_to_str(&a, &l, ce->url); - } -- msg_box(term, getml(a, NULL), TEXT(T_CACHE_INFO), AL_LEFT | AL_EXTD_TEXT, TEXT(T_CACHE_CONTENT), a, NULL, r, 1, TEXT(T_OK), end_refresh, B_ENTER | B_ESC); -+ msg_box(term, getml(a, NULL), TEXT(T_CACHE_INFO), AL_LEFT | AL_EXTD_TEXT, TEXT(T_CACHE_CONTENT), a, NULL, r, 1, TEXT(T_OK), end_refresh, BTN_ENTER | BTN_ESC); - r->win = term->windows.next; - r->timer = install_timer(RESOURCE_INFO_REFRESH, (void (*)(void *))refresh, r); - /* !!! the refresh here is buggy */ -@@ -311,7 +311,7 @@ - } - #endif - p = stracpy(message); -- msg_box(term, getml(p, NULL), TEXT(T_MEMORY_INFO), AL_CENTER, p, r, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, getml(p, NULL), TEXT(T_MEMORY_INFO), AL_CENTER, p, r, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - r->win = term->windows.next; - ((struct dialog_data *)r->win->data)->dlg->abort = refresh_abort; - r->timer = install_timer(RESOURCE_INFO_REFRESH, (void (*)(void *))refresh, r); -@@ -526,11 +526,11 @@ - d->items[9].dlen = sizeof(int); - d->items[9].data = (void *)&ts->braille; - d->items[10].type = D_BUTTON; -- d->items[10].gid = B_ENTER; -+ d->items[10].gid = BTN_ENTER; - d->items[10].fn = ok_dialog; - d->items[10].text = TEXT(T_OK); - d->items[11].type = D_BUTTON; -- d->items[11].gid = B_ESC; -+ d->items[11].gid = BTN_ESC; - d->items[11].fn = cancel_dialog; - d->items[11].text = TEXT(T_CANCEL); - d->items[12].type = D_END; -@@ -637,11 +637,11 @@ - d->items[8].gid = 1024; - d->items[8].gnum = 30*1024; - d->items[9].type = D_BUTTON; -- d->items[9].gid = B_ENTER; -+ d->items[9].gid = BTN_ENTER; - d->items[9].fn = ok_dialog; - d->items[9].text = TEXT(T_OK); - d->items[10].type = D_BUTTON; -- d->items[10].gid = B_ESC; -+ d->items[10].gid = BTN_ESC; - d->items[10].fn = cancel_dialog; - d->items[10].text = TEXT(T_CANCEL); - d->items[11].type = D_END; -@@ -742,11 +742,11 @@ - d->items[7].dlen = MAX_STR_LEN; - d->items[7].data = header->extra_header; - d->items[8].type = D_BUTTON; -- d->items[8].gid = B_ENTER; -+ d->items[8].gid = BTN_ENTER; - d->items[8].fn = ok_dialog; - d->items[8].text = TEXT(T_OK); - d->items[9].type = D_BUTTON; -- d->items[9].gid = B_ESC; -+ d->items[9].gid = BTN_ESC; - d->items[9].fn = cancel_dialog; - d->items[9].text = TEXT(T_CANCEL); - d->items[10].type = D_END; -@@ -798,11 +798,11 @@ - d->items[7].data = (void *)&options->header; - d->items[7].dlen = sizeof(struct http_header_options); - d->items[8].type = D_BUTTON; -- d->items[8].gid = B_ENTER; -+ d->items[8].gid = BTN_ENTER; - d->items[8].fn = ok_dialog; - d->items[8].text = TEXT(T_OK); - d->items[9].type = D_BUTTON; -- d->items[9].gid = B_ESC; -+ d->items[9].gid = BTN_ESC; - d->items[9].fn = cancel_dialog; - d->items[9].text = TEXT(T_CANCEL); - d->items[10].type = D_END; -@@ -877,12 +877,12 @@ - a = 3; - #endif - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -1100,11 +1100,11 @@ - d->items[13].dlen = sizeof(int); - d->items[13].data = (void *)&gamma_bits; - d->items[14].type = D_BUTTON; -- d->items[14].gid = B_ENTER; -+ d->items[14].gid = BTN_ENTER; - d->items[14].fn = ok_dialog; - d->items[14].text = TEXT(T_OK); - d->items[15].type = D_BUTTON; -- d->items[15].gid = B_ESC; -+ d->items[15].gid = BTN_ESC; - d->items[15].fn = cancel_dialog; - d->items[15].text = TEXT(T_CANCEL); - d->items[16].type = D_END; -@@ -1226,11 +1226,11 @@ - d->items[4].data = (unsigned char *)&p->only_proxies; - d->items[4].dlen = sizeof(int); - d->items[5].type = D_BUTTON; -- d->items[5].gid = B_ENTER; -+ d->items[5].gid = BTN_ENTER; - d->items[5].fn = ok_dialog; - d->items[5].text = TEXT(T_OK); - d->items[6].type = D_BUTTON; -- d->items[6].gid = B_ESC; -+ d->items[6].gid = BTN_ESC; - d->items[6].fn = cancel_dialog; - d->items[6].text = TEXT(T_CANCEL); - d->items[7].type = D_END; -@@ -1319,11 +1319,11 @@ - d->items[9].data = (unsigned char *)&ftp_options; - d->items[9].dlen = sizeof(struct ftp_options); - d->items[10].type = D_BUTTON; -- d->items[10].gid = B_ENTER; -+ d->items[10].gid = BTN_ENTER; - d->items[10].fn = ok_dialog; - d->items[10].text = TEXT(T_OK); - d->items[11].type = D_BUTTON; -- d->items[11].gid = B_ESC; -+ d->items[11].gid = BTN_ESC; - d->items[11].fn = cancel_dialog; - d->items[11].text = TEXT(T_CANCEL); - d->items[12].type = D_END; -@@ -1469,11 +1469,11 @@ - } - #endif - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a++].text = TEXT(T_OK); - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a++].text = TEXT(T_CANCEL); - d->items[a].type = D_END; -@@ -1486,7 +1486,7 @@ - net_options(term, xxx, yyy); - return; - } -- msg_box(term, NULL, _("Network options"), AL_CENTER, _("Warning: configuring network will terminate all running downloads. Do you really want to configure network?"), term, 2, _("Yes"), (void (*)(void *))net_options, B_ENTER, _("No"), NULL, B_ESC); -+ msg_box(term, NULL, _("Network options"), AL_CENTER, _("Warning: configuring network will terminate all running downloads. Do you really want to configure network?"), term, 2, _("Yes"), (void (*)(void *))net_options, BTN_ENTER, _("No"), NULL, BTN_ESC); - }*/ - - static unsigned char mc_str[8]; -@@ -1568,12 +1568,12 @@ - d->items[a].data = (void *)&aggressive_cache; - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -1733,12 +1733,12 @@ - a++; - if (!F){ - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -1764,12 +1764,12 @@ - d->items[a].dlen = sizeof(int); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -2025,12 +2025,12 @@ - } - #endif - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ENTER; -+ d->items[a].gid = BTN_ENTER; - d->items[a].fn = ok_dialog; - d->items[a].text = TEXT(T_OK); - a++; - d->items[a].type = D_BUTTON; -- d->items[a].gid = B_ESC; -+ d->items[a].gid = BTN_ESC; - d->items[a].fn = cancel_dialog; - d->items[a].text = TEXT(T_CANCEL); - a++; -@@ -2098,11 +2098,11 @@ - d->items[1].gid = 1; - d->items[1].gnum = 999; - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ENTER; -+ d->items[2].gid = BTN_ENTER; - d->items[2].fn = ok_dialog; - d->items[2].text = TEXT(T_OK); - d->items[3].type = D_BUTTON; -- d->items[3].gid = B_ESC; -+ d->items[3].gid = BTN_ESC; - d->items[3].fn = cancel_dialog; - d->items[3].text = TEXT(T_CANCEL); - d->items[4].type = D_END; -@@ -2495,8 +2495,8 @@ - TEXT(T_FILE), " ", h->file, " ", TEXT(T_ALREADY_EXISTS_AS_DOWNLOAD), " ", TEXT(T_DO_YOU_WISH_TO_OVERWRITE), NULL, - h, - 3, -- TEXT(T_OVERWRITE), does_file_exist_ok, B_ENTER, -- TEXT(T_CANCEL), does_file_exist_cancel, B_ESC, -+ TEXT(T_OVERWRITE), does_file_exist_ok, BTN_ENTER, -+ TEXT(T_CANCEL), does_file_exist_cancel, BTN_ESC, - TEXT(T_RENAME), does_file_exist_rename, NULL - ); - return; -@@ -2525,8 +2525,8 @@ - TEXT(T_FILE), " ", h->file, " ", TEXT(T_ALREADY_EXISTS), " ", TEXT(T_DO_YOU_WISH_TO_OVERWRITE), NULL, - h, - 3, -- TEXT(T_OVERWRITE), does_file_exist_ok, B_ENTER, -- TEXT(T_CANCEL), does_file_exist_cancel, B_ESC, -+ TEXT(T_OVERWRITE), does_file_exist_ok, BTN_ENTER, -+ TEXT(T_CANCEL), does_file_exist_cancel, BTN_ESC, - TEXT(T_RENAME), does_file_exist_rename, NULL - ); - } -diff -urN links-2.3pre2-orig/objreq.c links-2.3pre2/objreq.c ---- links-2.3pre2-orig/objreq.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/objreq.c 2011-05-13 09:04:16.414711808 +0000 -@@ -163,12 +163,12 @@ - d->items[1].data = a->passwd; - - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ENTER; -+ d->items[2].gid = BTN_ENTER; - d->items[2].fn = auth_ok; - d->items[2].text = TEXT(T_OK); - - d->items[3].type = D_BUTTON; -- d->items[3].gid = B_ESC; -+ d->items[3].gid = BTN_ESC; - d->items[3].fn = auth_cancel; - d->items[3].text = TEXT(T_CANCEL); - -diff -urN links-2.3pre2-orig/os_dep.c links-2.3pre2/os_dep.c ---- links-2.3pre2-orig/os_dep.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/os_dep.c 2011-05-13 09:04:16.451674112 +0000 -@@ -1059,7 +1059,7 @@ - - #if defined(BEOS) - --#include -+#include - - int thr_sem_init = 0; - sem_id thr_sem; -@@ -1251,16 +1251,16 @@ - ev.x = ms->col; - ev.y = ms->row; - /*debug("status: %d %d %d", ms->col, ms->row, ms->fs);*/ -- if (ms->fs & (MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN)) ev.b = status = B_DOWN | (ms->fs & MOUSE_BN1_DOWN ? B_LEFT : ms->fs & MOUSE_BN2_DOWN ? B_MIDDLE : B_RIGHT); -+ if (ms->fs & (MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN)) ev.b = status = BTN_DOWN | (ms->fs & MOUSE_BN1_DOWN ? BTN_LEFT : ms->fs & MOUSE_BN2_DOWN ? BTN_MIDDLE : BTN_RIGHT); - else if (ms->fs & (MOUSE_MOTION_WITH_BN1_DOWN | MOUSE_MOTION_WITH_BN2_DOWN | MOUSE_MOTION_WITH_BN3_DOWN)) { -- int b = ms->fs & MOUSE_MOTION_WITH_BN1_DOWN ? B_LEFT : ms->fs & MOUSE_MOTION_WITH_BN2_DOWN ? B_MIDDLE : B_RIGHT; -- if (status == -1) b |= B_DOWN; -- else b |= B_DRAG; -+ int b = ms->fs & MOUSE_MOTION_WITH_BN1_DOWN ? BTN_LEFT : ms->fs & MOUSE_MOTION_WITH_BN2_DOWN ? BTN_MIDDLE : BTN_RIGHT; -+ if (status == -1) b |= BTN_DOWN; -+ else b |= BTN_DRAG; - ev.b = status = b; - } - else { - if (status == -1) continue; -- ev.b = (status & BM_BUTT) | B_UP; -+ ev.b = (status & BM_BUTT) | BTN_UP; - status = -1; - } - if (hard_write(oms->p[1], (unsigned char *)&ev, sizeof(struct event)) != sizeof(struct event)) break; -@@ -1634,13 +1634,13 @@ - ev.y = gev.y - 1; - if (ev.x < 0) ev.x = 0; - if (ev.y < 0) ev.y = 0; -- if (gev.buttons & GPM_B_LEFT) ev.b = B_LEFT; -- else if (gev.buttons & GPM_B_MIDDLE) ev.b = B_MIDDLE; -- else if (gev.buttons & GPM_B_RIGHT) ev.b = B_RIGHT; -+ if (gev.buttons & GPM_B_LEFT) ev.b = BTN_LEFT; -+ else if (gev.buttons & GPM_B_MIDDLE) ev.b = BTN_MIDDLE; -+ else if (gev.buttons & GPM_B_RIGHT) ev.b = BTN_RIGHT; - else return; -- if (gev.type & GPM_DOWN) ev.b |= B_DOWN; -- else if (gev.type & GPM_UP) ev.b |= B_UP; -- else if (gev.type & GPM_DRAG) ev.b |= B_DRAG; -+ if (gev.type & GPM_DOWN) ev.b |= BTN_DOWN; -+ else if (gev.type & GPM_UP) ev.b |= BTN_UP; -+ else if (gev.type & GPM_DRAG) ev.b |= BTN_DRAG; - else return; - gms->fn(gms->data, (char *)&ev, sizeof(struct event)); - } -diff -urN links-2.3pre2-orig/os_dep.h links-2.3pre2/os_dep.h ---- links-2.3pre2-orig/os_dep.h 2007-12-26 03:13:05.000000000 +0000 -+++ links-2.3pre2/os_dep.h 2011-05-13 09:34:37.000000000 +0000 -@@ -20,7 +20,7 @@ - #define OS2 - #elif defined(_WIN32) || defined(__CYGWIN__) - #define WIN32 --#elif defined(__BEOS__) -+#elif defined(__BEOS__) || defined(__HAIKU__) - #define BEOS - #elif defined(__riscos__) - #define RISCOS -@@ -111,11 +111,15 @@ - #define SHARED_CONFIG_DIR "/etc/" - #define NO_FORK_ON_EXIT - #define ASSOC_BLOCK -+#define SET_WINDOW_TITLE_UTF_8 - - #include - #include --#include -+#include - -+#ifdef __cplusplus -+extern "C" { -+#endif - int be_socket(int, int, int); - int be_connect(int, struct sockaddr *, int); - int be_getpeername(int, struct sockaddr *, int *); -@@ -129,6 +133,9 @@ - int be_close(int); - int be_select(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *); - int be_getsockopt(int, int, int, void *, int *); -+#ifdef __cplusplus -+} -+#endif - - #elif defined(RISCOS) - -diff -urN links-2.3pre2-orig/os_depx.h links-2.3pre2/os_depx.h ---- links-2.3pre2-orig/os_depx.h 2007-07-07 02:55:24.000000000 +0000 -+++ links-2.3pre2/os_depx.h 2011-05-13 09:04:16.484966400 +0000 -@@ -45,6 +45,8 @@ - #endif - - #ifdef BEOS -+#if IPPROTO_TCP != 6 -+/* net_server */ - #define socket be_socket - #define connect be_connect - #define getpeername be_getpeername -@@ -58,16 +60,22 @@ - #define close be_close - #define select be_select - #define getsockopt be_getsockopt -+/* -+#ifdef errno -+#undef errno -+#endif -+#define errno 1 -+*/ -+#endif - #ifndef PF_INET - #define PF_INET AF_INET - #endif - #ifndef SO_ERROR - #define SO_ERROR 10001 - #endif --#ifdef errno --#undef errno -+#ifndef FDSETSIZE -+#define FDSETSIZE FD_SETSIZE - #endif --#define errno 1 - #endif - - #if defined(O_SIZE) && defined(__EMX__) -@@ -83,6 +91,9 @@ - #elif defined(GRDRV_ATHEOS) - #define loop_select ath_select - int ath_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); -+#elif defined(GRDRV_BEOS) -+#define loop_select be_loop_select -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); - #else - #define loop_select select - #endif -diff -urN links-2.3pre2-orig/pmshell.c links-2.3pre2/pmshell.c ---- links-2.3pre2-orig/pmshell.c 2011-04-19 15:17:49.000000000 +0000 -+++ links-2.3pre2/pmshell.c 2011-05-13 09:04:16.524025856 +0000 -@@ -287,33 +287,33 @@ - case WM_BUTTON1DOWN: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- win->button |= 1 << B_LEFT; -+ win->button |= 1 << BTN_LEFT; - win->lastpos = (unsigned)mp1; -- pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_DOWN | B_LEFT, 0); -+ pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_DOWN | BTN_LEFT, 0); - pm_unlock; - break; - case WM_BUTTON2DOWN: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- win->button |= 1 << B_RIGHT; -+ win->button |= 1 << BTN_RIGHT; - win->lastpos = (unsigned)mp1; -- pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_DOWN | B_RIGHT, 0); -+ pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_DOWN | BTN_RIGHT, 0); - pm_unlock; - break; - case WM_BUTTON3DOWN: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- win->button |= 1 << B_MIDDLE; -+ win->button |= 1 << BTN_MIDDLE; - win->lastpos = (unsigned)mp1; -- pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_DOWN | B_MIDDLE, 0); -+ pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_DOWN | BTN_MIDDLE, 0); - pm_unlock; - break; - case WM_BUTTON1UP: - case WM_BUTTON1MOTIONEND: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if (win->button & (1 << B_LEFT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_UP | B_LEFT, 0); -- win->button &= ~(1 << B_LEFT); -+ if (win->button & (1 << BTN_LEFT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_UP | BTN_LEFT, 0); -+ win->button &= ~(1 << BTN_LEFT); - win->lastpos = (unsigned)mp1; - pm_unlock; - break; -@@ -321,8 +321,8 @@ - case WM_BUTTON2MOTIONEND: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if (win->button & (1 << B_RIGHT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_UP | B_RIGHT, 0); -- win->button &= ~(1 << B_RIGHT); -+ if (win->button & (1 << BTN_RIGHT)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_UP | BTN_RIGHT, 0); -+ win->button &= ~(1 << BTN_RIGHT); - win->lastpos = (unsigned)mp1; - pm_unlock; - break; -@@ -330,8 +330,8 @@ - case WM_BUTTON3MOTIONEND: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if (win->button & (1 << B_MIDDLE)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), B_UP | B_MIDDLE, 0); -- win->button &= ~(1 << B_MIDDLE); -+ if (win->button & (1 << BTN_MIDDLE)) pm_send_event(win, E_MOUSE, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), BTN_UP | BTN_MIDDLE, 0); -+ win->button &= ~(1 << BTN_MIDDLE); - win->lastpos = (unsigned)mp1; - pm_unlock; - break; -@@ -340,19 +340,19 @@ - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } - if (win->lastpos == (unsigned)mp1) { pm_unlock; break; } - win->lastpos = (unsigned)mp1; -- pm_send_mouse_event(win, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), (win->button ? B_DRAG : B_MOVE) | (win->button & (1 << B_LEFT) ? B_LEFT : win->button & (1 << B_MIDDLE) ? B_MIDDLE : win->button & (1 << B_RIGHT) ? B_RIGHT : 0)); -+ pm_send_mouse_event(win, (unsigned)mp1 & 0xffff, win->y - ((unsigned)mp1 >> 16), (win->button ? BTN_DRAG : BTN_MOVE) | (win->button & (1 << BTN_LEFT) ? BTN_LEFT : win->button & (1 << BTN_MIDDLE) ? BTN_MIDDLE : win->button & (1 << BTN_RIGHT) ? BTN_RIGHT : 0)); - pm_unlock; - break; - case WM_VSCROLL: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if ((unsigned)mp2 == SB_LINEUP << 16 || (unsigned)mp2 == SB_LINEDOWN << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINEUP << 16 ? B_WHEELUP1 : B_WHEELDOWN1) | B_MOVE, 0); -+ if ((unsigned)mp2 == SB_LINEUP << 16 || (unsigned)mp2 == SB_LINEDOWN << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINEUP << 16 ? BTN_WHEELUP1 : BTN_WHEELDOWN1) | BTN_MOVE, 0); - pm_unlock; - break; - case WM_HSCROLL: - pm_lock; - if (!(win = pm_lookup_window(hwnd))) { pm_unlock; break; } -- if ((unsigned)mp2 == SB_LINELEFT << 16 || (unsigned)mp2 == SB_LINERIGHT << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINELEFT << 16 ? B_WHEELLEFT1 : B_WHEELRIGHT1) | B_MOVE, 0); -+ if ((unsigned)mp2 == SB_LINELEFT << 16 || (unsigned)mp2 == SB_LINERIGHT << 16) pm_send_event(win, E_MOUSE, win->lastpos & 0xffff, win->y - (win->lastpos >> 16), ((unsigned)mp2 == SB_LINELEFT << 16 ? BTN_WHEELLEFT1 : BTN_WHEELRIGHT1) | BTN_MOVE, 0); - pm_unlock; - break; - } -diff -urN links-2.3pre2-orig/session.c links-2.3pre2/session.c ---- links-2.3pre2-orig/session.c 2011-04-19 15:17:50.000000000 +0000 -+++ links-2.3pre2/session.c 2011-05-13 09:04:16.556269568 +0000 -@@ -195,7 +195,7 @@ - unsigned char *u = stracpy(title); - if (strchr(u, POST_CHAR)) *strchr(u, POST_CHAR) = 0; - if (!t) return; -- msg_box(ses->term, getml(u, NULL), TEXT(T_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_LOADING), " ", u, ":\n\n", t, NULL, ses, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC/*, _("Retry"), NULL, 0 !!! FIXME: retry */); -+ msg_box(ses->term, getml(u, NULL), TEXT(T_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_LOADING), " ", u, ":\n\n", t, NULL, ses, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC/*, _("Retry"), NULL, 0 !!! FIXME: retry */); - } - - static inline unsigned char hx(int a) -@@ -477,7 +477,7 @@ - dlg->udata = down; - dlg->align = AL_CENTER; - dlg->items[0].type = D_BUTTON; -- dlg->items[0].gid = B_ENTER | B_ESC; -+ dlg->items[0].gid = BTN_ENTER | BTN_ESC; - dlg->items[0].fn = dlg_undisplay_download; - dlg->items[0].text = TEXT(T_BACKGROUND); - dlg->items[1].type = D_BUTTON; -@@ -625,7 +625,7 @@ - if (get_download_ses(down)) { - unsigned char *emsg = stracpy(errno ? strerror(errno) : "Zero returned"); - unsigned char *msg = stracpy(down->file); -- msg_box(get_download_ses(down)->term, getml(msg, emsg, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_WRITE_TO_FILE), " ", msg, ": ", emsg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(get_download_ses(down)->term, getml(msg, emsg, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_WRITE_TO_FILE), " ", msg, ": ", emsg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - return -1; - } -@@ -715,7 +715,7 @@ - if (t) { - unsigned char *tt = stracpy(down->url); - if (strchr(tt, POST_CHAR)) *strchr(tt, POST_CHAR) = 0; -- msg_box(get_download_ses(down)->term, getml(tt, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DOWNLOADING), " ", tt, ":\n\n", t, NULL, get_download_ses(down), 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC/*, TEXT(T_RETRY), NULL, 0 !!! FIXME: retry */); -+ msg_box(get_download_ses(down)->term, getml(tt, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DOWNLOADING), " ", tt, ":\n\n", t, NULL, get_download_ses(down), 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC/*, TEXT(T_RETRY), NULL, 0 !!! FIXME: retry */); - } - } else { - if (down->prog) { -@@ -792,7 +792,7 @@ - if (!ses) goto x; - msg = stracpy(file); - msge = stracpy(strerror(errno)); -- msg_box(ses->term, getml(msg, msge, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_FILE), " ", msg, ": ", msge, NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, getml(msg, msge, NULL), TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_FILE), " ", msg, ": ", msge, NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - goto x; - } - set_bin(h); -@@ -1545,7 +1545,7 @@ - } - u = stracpy(ce->url); - if ((uu = strchr(u, POST_CHAR))) *uu = 0; -- msg_box(term, getml(u, NULL), TEXT(T_DECOMPRESSION_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DECOMPRESSING_), u, TEXT(T__wITH_), lib, ": ", msg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(term, getml(u, NULL), TEXT(T_DECOMPRESSION_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_ERROR_DECOMPRESSING_), u, TEXT(T__wITH_), lib, ": ", msg, NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - #endif - -@@ -2196,7 +2196,7 @@ - mem_free(file); - goto new_name; - } -- msg_box(ses->term, NULL, TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_TEMPORARY_FILE), NULL, NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_DOWNLOAD_ERROR), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_CREATE_TEMPORARY_FILE), NULL, NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - if (ses->tq_prog) mem_free(file); - tp_cancel(ses); -@@ -2419,7 +2419,7 @@ - i++; - d->items[i].type = D_BUTTON; - d->items[i].fn = prog_sel_cancel; -- d->items[i].gid = B_ESC; -+ d->items[i].gid = BTN_ESC; - d->items[i].text = TEXT(T_CANCEL); - d->items[i+1].type = D_END; - do_dialog(ses->term, d, ml); -@@ -2445,12 +2445,12 @@ - } - m1 = stracpy(ct); - if (!a) { -- if (!anonymous) msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 3, TEXT(T_SAVE), tp_save, B_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, B_ESC); -- else msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 2, TEXT(T_DISPLAY), tp_display, B_ENTER, TEXT(T_CANCEL), tp_cancel, B_ESC); -+ if (!anonymous) msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 3, TEXT(T_SAVE), tp_save, BTN_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, BTN_ESC); -+ else msg_box(ses->term, getml(m1, NULL), TEXT(T_UNKNOWN_TYPE), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_SAVE_OR_DISLPAY_THIS_FILE), NULL, ses, 2, TEXT(T_DISPLAY), tp_display, BTN_ENTER, TEXT(T_CANCEL), tp_cancel, BTN_ESC); - } else { - m2 = stracpy(a[0].label ? a[0].label : (unsigned char *)""); -- if (!anonymous) msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 4, TEXT(T_OPEN), tp_open, B_ENTER, TEXT(T_SAVE), tp_save, 0, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, B_ESC); -- else msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 3, TEXT(T_OPEN), tp_open, B_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, B_ESC); -+ if (!anonymous) msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 4, TEXT(T_OPEN), tp_open, BTN_ENTER, TEXT(T_SAVE), tp_save, 0, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, BTN_ESC); -+ else msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_WHAT_TO_DO), AL_CENTER | AL_EXTD_TEXT, TEXT(T_CONTEN_TYPE_IS), " ", m1, ".\n", TEXT(T_DO_YOU_WANT_TO_OPEN_FILE_WITH), " ", m2, ", ", TEXT(T_SAVE_IT_OR_DISPLAY_IT), NULL, ses, 3, TEXT(T_OPEN), tp_open, BTN_ENTER, TEXT(T_DISPLAY), tp_display, 0, TEXT(T_CANCEL), tp_cancel, BTN_ESC); - } - if (n)mem_free(a); - if (ct)mem_free(ct); -@@ -2546,7 +2546,7 @@ - ses_destroy_defered_jump(ses); - if ((fn = get_external_protocol_function(url))) { - if (proxies.only_proxies && url_bypasses_socks(url)) { -- msg_box(ses->term, NULL, TEXT(T_ERROR), AL_CENTER, TEXT(T_NO_PROXY), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_ERROR), AL_CENTER, TEXT(T_NO_PROXY), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - fn(ses, url); -@@ -2718,7 +2718,7 @@ - add_to_list(sessions, ses); - if (first_use) { - first_use = 0; -- msg_box(term, NULL, TEXT(T_WELCOME), AL_CENTER | AL_EXTD_TEXT, TEXT(T_WELCOME_TO_LINKS), "\n\n", TEXT(T_BASIC_HELP), NULL, NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_WELCOME), AL_CENTER | AL_EXTD_TEXT, TEXT(T_WELCOME_TO_LINKS), "\n\n", TEXT(T_BASIC_HELP), NULL, NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - return ses; - } -diff -urN links-2.3pre2-orig/svgalib.c links-2.3pre2/svgalib.c ---- links-2.3pre2-orig/svgalib.c 2011-04-19 15:17:50.000000000 +0000 -+++ links-2.3pre2/svgalib.c 2011-05-13 09:04:16.565182464 +0000 -@@ -1889,80 +1889,80 @@ - /* Test movement without buttons */ - if (!(mouse_buttons & BUTTON_MASK) && moved) { - mouse_aggregate_flag=1; -- mouse_aggregate_action=B_MOVE; -+ mouse_aggregate_action=BTN_MOVE; - } - - /* Test presses */ - if ((button&MOUSE_LEFTBUTTON)&&!(mouse_buttons&MOUSE_LEFTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_LEFT|B_DOWN); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_LEFT|BTN_DOWN); - } - if ((button&MOUSE_MIDDLEBUTTON)&&!(mouse_buttons&MOUSE_MIDDLEBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_MIDDLE|B_DOWN); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_MIDDLE|BTN_DOWN); - } - if ((button&MOUSE_RIGHTBUTTON)&&!(mouse_buttons&MOUSE_RIGHTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_DOWN); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_DOWN); - } - if ((button&MOUSE_FOURTHBUTTON)&&!(mouse_buttons&MOUSE_FOURTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_FOURTH); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_FOURTH); - } - if ((button&MOUSE_FIFTHBUTTON)&&!(mouse_buttons&MOUSE_FIFTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_FIFTH); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_FIFTH); - } - if ((button&MOUSE_SIXTHBUTTON)&&!(mouse_buttons&MOUSE_SIXTHBUTTON)){ - mouse_aggregate_flush(); -- /*if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_SIXTH);*/ -+ /*if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_SIXTH);*/ - switch_virtual_device(VD_NEXT); - } - - /* Test releases */ - if (!(button&MOUSE_LEFTBUTTON)&&(mouse_buttons&MOUSE_LEFTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_LEFT|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_LEFT|BTN_UP); - } - if (!(button&MOUSE_MIDDLEBUTTON)&&(mouse_buttons&MOUSE_MIDDLEBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_MIDDLE|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_MIDDLE|BTN_UP); - } - if (!(button&MOUSE_RIGHTBUTTON)&&(mouse_buttons&MOUSE_RIGHTBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_RIGHT|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_RIGHT|BTN_UP); - } - if (!(button&MOUSE_FOURTHBUTTON)&&(mouse_buttons&MOUSE_FOURTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_FOURTH|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_FOURTH|BTN_UP); - } - if (!(button&MOUSE_FIFTHBUTTON)&&(mouse_buttons&MOUSE_FIFTHBUTTON)){ - mouse_aggregate_flush(); -- if (mh) mh(cd,mouse_x, mouse_y,B_FIFTH|B_UP); -+ if (mh) mh(cd,mouse_x, mouse_y,BTN_FIFTH|BTN_UP); - } - if (!(button&MOUSE_SIXTHBUTTON)&&(mouse_buttons&MOUSE_SIXTHBUTTON)){ - mouse_aggregate_flush(); -- /*if (mh) mh(cd,mouse_x, mouse_y,B_SIXTH|B_UP);*/ -+ /*if (mh) mh(cd,mouse_x, mouse_y,BTN_SIXTH|BTN_UP);*/ - } - -- if (drx < 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELUP); -- if (drx > 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELDOWN); -+ if (drx < 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELUP); -+ if (drx > 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELDOWN); - -- if (dry < 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELLEFT); -- if (dry > 0 && mh) mh(cd, mouse_x, mouse_y, B_MOVE | B_WHEELRIGHT); -+ if (dry < 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELLEFT); -+ if (dry > 0 && mh) mh(cd, mouse_x, mouse_y, BTN_MOVE | BTN_WHEELRIGHT); - - /* Test drag */ - if (! ((button^mouse_buttons) & BUTTON_MASK ) && moved && (button & - BUTTON_MASK)){ - mouse_aggregate_flag=1; - mouse_aggregate_action=( -- button&MOUSE_LEFTBUTTON?B_LEFT: -- button&MOUSE_RIGHTBUTTON?B_RIGHT: -- button&MOUSE_MIDDLEBUTTON?B_MIDDLE: -- button&MOUSE_FOURTHBUTTON?B_FOURTH: -- button&MOUSE_FIFTHBUTTON?B_FIFTH: -- /*button&MOUSE_SIXTHBUTTON?B_SIXTH:*/ -- 0) | B_DRAG; -+ button&MOUSE_LEFTBUTTON?BTN_LEFT: -+ button&MOUSE_RIGHTBUTTON?BTN_RIGHT: -+ button&MOUSE_MIDDLEBUTTON?BTN_MIDDLE: -+ button&MOUSE_FOURTHBUTTON?BTN_FOURTH: -+ button&MOUSE_FIFTHBUTTON?BTN_FIFTH: -+ /*button&MOUSE_SIXTHBUTTON?BTN_SIXTH:*/ -+ 0) | BTN_DRAG; - } - mouse_buttons=button; - } -diff -urN links-2.3pre2-orig/types.c links-2.3pre2/types.c ---- links-2.3pre2-orig/types.c 2011-04-19 15:17:50.000000000 +0000 -+++ links-2.3pre2/types.c 2011-05-13 09:04:16.599523328 +0000 -@@ -342,11 +342,11 @@ - d->items[p].data = (unsigned char *)&new->accept_ftp; - d->items[p++].dlen = sizeof(int); - d->items[p].type = D_BUTTON; -- d->items[p].gid = B_ENTER; -+ d->items[p].gid = BTN_ENTER; - d->items[p].fn = ok_dialog; - d->items[p++].text = TEXT(T_OK); - d->items[p].type = D_BUTTON; -- d->items[p].gid = B_ESC; -+ d->items[p].gid = BTN_ESC; - d->items[p].text = TEXT(T_CANCEL); - d->items[p++].fn = cancel_dialog; - d->items[p++].type = D_END; -@@ -660,11 +660,11 @@ - d->items[1].data = ct; - d->items[1].fn = check_nonempty; - d->items[2].type = D_BUTTON; -- d->items[2].gid = B_ENTER; -+ d->items[2].gid = BTN_ENTER; - d->items[2].fn = ok_dialog; - d->items[2].text = TEXT(T_OK); - d->items[3].type = D_BUTTON; -- d->items[3].gid = B_ESC; -+ d->items[3].gid = BTN_ESC; - d->items[3].text = TEXT(T_CANCEL); - d->items[3].fn = cancel_dialog; - d->items[4].type = D_END; -diff -urN links-2.3pre2-orig/view.c links-2.3pre2/view.c ---- links-2.3pre2-orig/view.c 2011-04-19 15:17:50.001048576 +0000 -+++ links-2.3pre2/view.c 2011-05-13 09:04:16.624164864 +0000 -@@ -2037,7 +2037,7 @@ - *data = NULL; - m1 = stracpy(sv->value); - m2 = stracpy(strerror(errno)); -- msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_ERROR_WHILE_POSTING_FORM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_GET_FILE), " ", m1, ": ", m2, NULL, ses, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, getml(m1, m2, NULL), TEXT(T_ERROR_WHILE_POSTING_FORM), AL_CENTER | AL_EXTD_TEXT, TEXT(T_COULD_NOT_GET_FILE), " ", m1, ": ", m2, NULL, ses, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - void reset_form(struct f_data_c *f, int form_num) -@@ -2878,7 +2878,7 @@ - if (!ses->search_word) { - if (!ses->last_search_word) { - no: -- msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_NO_PREVIOUS_SEARCH), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - return; - } - ses->search_word = stracpy(ses->last_search_word); -@@ -2910,7 +2910,7 @@ - p -= f->yw; - } - } while ((c += f->yw ? f->yw : 1) < f->f_data->y + f->yw); -- msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - } - - void find_next_back(struct session *ses, struct f_data_c *f, int a) -@@ -3081,12 +3081,12 @@ - x = 1; - fd->vs->current_link = l - fd->f_data->links; - fd->vs->orig_link = fd->vs->current_link; -- if (l->type == L_LINK || l->type == L_BUTTON || l->type == L_CHECKBOX || l->type == L_SELECT) if ((ev->b & BM_ACT) == B_UP) { -+ if (l->type == L_LINK || l->type == L_BUTTON || l->type == L_CHECKBOX || l->type == L_SELECT) if ((ev->b & BM_ACT) == BTN_UP) { - fd->active = 1; - draw_to_window(ses->win, (void (*)(struct terminal *, void *))draw_doc_c, fd); - change_screen_status(ses); - print_screen_status(ses); -- if ((ev->b & BM_BUTT) < B_MIDDLE) x = enter(ses, fd, 0); -+ if ((ev->b & BM_BUTT) < BTN_MIDDLE) x = enter(ses, fd, 0); - else link_menu(ses->term, NULL, ses); - } - -@@ -3485,13 +3485,13 @@ - } - } - if (ev->ev == EV_MOUSE) { -- if (ev->b == (B_DOWN | B_FOURTH)) { -+ if (ev->b == (BTN_DOWN | BTN_FOURTH)) { - go_back(ses); - goto x; - } - #ifdef G - if (ses->locked_link) { -- if ((ev->b & BM_ACT) != B_MOVE) { -+ if ((ev->b & BM_ACT) != BTN_MOVE) { - ses->locked_link = 0; - #ifdef JS - /* process onblur handler of current link */ -@@ -3514,7 +3514,7 @@ - } else return; - } - #endif -- if (ev->y < gf_val(1, G_BFU_FONT_SIZE) && (ev->b & BM_ACT) == B_DOWN) { -+ if (ev->y < gf_val(1, G_BFU_FONT_SIZE) && (ev->b & BM_ACT) == BTN_DOWN) { - #ifdef G - if (F && ev->x < ses->back_size) { - go_back(ses); -@@ -3792,7 +3792,7 @@ - struct f_data_c *f; - if (!(f = current_frame(ses)) || !f->f_data) return; - if ((h = create_download_file(ses, ses->term->cwd, file, 0, 0)) < 0) return; -- if (dump_to_file(f->f_data, h)) msg_box(ses->term, NULL, TEXT(T_SAVE_ERROR), AL_CENTER, TEXT(T_ERROR_WRITING_TO_FILE), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (dump_to_file(f->f_data, h)) msg_box(ses->term, NULL, TEXT(T_SAVE_ERROR), AL_CENTER, TEXT(T_ERROR_WRITING_TO_FILE), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - close(h); - } - -@@ -4173,7 +4173,7 @@ - int l = 0; - unsigned char *a; - if (!lo || !frame || !frame->vs || !frame->f_data) { -- msg_box(term, NULL, TEXT(T_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, NULL, TEXT(T_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - return; - } - s = init_str(); -@@ -4239,7 +4239,7 @@ - add_to_str(&s, &l, a); - mem_free(a); - } -- msg_box(term, getml(s, NULL), TEXT(T_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(term, getml(s, NULL), TEXT(T_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - - void state_msg(struct session *ses) -@@ -4254,7 +4254,7 @@ - unsigned char *s, *ss; - int len; - if (list_empty(ses->history)) { -- msg_box(ses->term, NULL, TEXT(T_HEADER_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, NULL, TEXT(T_HEADER_INFO), AL_LEFT, TEXT(T_YOU_ARE_NOWHERE), NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - return; - } - if (!find_in_cache(cur_loc(ses)->url, &ce)) { -@@ -4265,6 +4265,6 @@ - while ((ss = strstr(s, "\r\n"))) memmove(ss, ss + 1, strlen(ss)); - while (*s && s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = 0; - } -- msg_box(ses->term, getml(s, NULL), TEXT(T_HEADER_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, B_ENTER | B_ESC); -+ msg_box(ses->term, getml(s, NULL), TEXT(T_HEADER_INFO), AL_LEFT, s, NULL, 1, TEXT(T_OK), NULL, BTN_ENTER | BTN_ESC); - } - } -diff -urN links-2.3pre2-orig/view_gr.c links-2.3pre2/view_gr.c ---- links-2.3pre2-orig/view_gr.c 2011-04-19 15:17:50.000000000 +0000 -+++ links-2.3pre2/view_gr.c 2011-05-13 09:10:56.174325760 +0000 -@@ -800,7 +800,7 @@ - void g_text_mouse(struct f_data_c *fd, struct g_object_text *a, int x, int y, int b) - { - int e; -- g_set_current_link(fd, a, x, y, (b == (B_UP | B_LEFT))); -+ g_set_current_link(fd, a, x, y, (b == (BTN_UP | BTN_LEFT))); - - #ifdef JS - if (fd->vs&&fd->f_data&&fd->vs->current_link>=0&&fd->vs->current_linkf_data->nlinks) -@@ -809,16 +809,16 @@ - - struct link *l=&(fd->f_data->links[fd->vs->current_link]); - -- if (l->js_event&&l->js_event->up_code&&(b&BM_ACT)==B_UP) -+ if (l->js_event&&l->js_event->up_code&&(b&BM_ACT)==BTN_UP) - jsint_execute_code(fd,l->js_event->up_code,strlen(l->js_event->up_code),-1,-1,-1, NULL); - -- if (l->js_event&&l->js_event->down_code&&(b&BM_ACT)==B_DOWN) -+ if (l->js_event&&l->js_event->down_code&&(b&BM_ACT)==BTN_DOWN) - jsint_execute_code(fd,l->js_event->down_code,strlen(l->js_event->down_code),-1,-1,-1, NULL); - - } - #endif - -- if (b == (B_UP | B_LEFT)) { -+ if (b == (BTN_UP | BTN_LEFT)) { - int ix = ismap_x, iy = ismap_y, il = ismap_link; - ismap_x = x; - ismap_y = y; -@@ -835,7 +835,7 @@ - if (e == 2) fd->f_data->locked_on = (struct g_object *)a; - return; - } -- if (b == (B_UP | B_RIGHT)) { -+ if (b == (BTN_UP | BTN_RIGHT)) { - if (fd->vs->current_link != -1) link_menu(fd->ses->term, NULL, fd->ses); - } - } -@@ -994,15 +994,15 @@ - if (!fd->f_data) return 0; - switch (ev->ev) { - case EV_MOUSE: -- if ((ev->b & BM_BUTT) == B_WHEELUP) goto up; -- if ((ev->b & BM_BUTT) == B_WHEELDOWN) goto down; -- if ((ev->b & BM_BUTT) == B_WHEELUP1) goto up1; -- if ((ev->b & BM_BUTT) == B_WHEELDOWN1) goto down1; -- if ((ev->b & BM_BUTT) == B_WHEELLEFT) goto left; -- if ((ev->b & BM_BUTT) == B_WHEELRIGHT) goto right; -- if ((ev->b & BM_BUTT) == B_WHEELLEFT1) goto left1; -- if ((ev->b & BM_BUTT) == B_WHEELRIGHT1) goto right1; -- if ((ev->b & BM_ACT) == B_MOVE) ses->scrolling = 0; -+ if ((ev->b & BM_BUTT) == BTN_WHEELUP) goto up; -+ if ((ev->b & BM_BUTT) == BTN_WHEELDOWN) goto down; -+ if ((ev->b & BM_BUTT) == BTN_WHEELUP1) goto up1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELDOWN1) goto down1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELLEFT) goto left; -+ if ((ev->b & BM_BUTT) == BTN_WHEELRIGHT) goto right; -+ if ((ev->b & BM_BUTT) == BTN_WHEELLEFT1) goto left1; -+ if ((ev->b & BM_BUTT) == BTN_WHEELRIGHT1) goto right1; -+ if ((ev->b & BM_ACT) == BTN_MOVE) ses->scrolling = 0; - if (ses->scrolling == 1) process_sb_move(fd, ses->scrolltype ? ev->x : ev->y); - if (ses->scrolling == 2) { - fd->vs->view_pos = -ev->y + ses->scrolloff; -@@ -1010,31 +1010,31 @@ - fd->vs->orig_view_pos = fd->vs->view_pos; - fd->vs->orig_view_posx = fd->vs->view_posx; - draw_graphical_doc(fd->ses->term, fd, 1); -- if ((ev->b & BM_ACT) == B_UP) { -+ if ((ev->b & BM_ACT) == BTN_UP) { - ses->scrolling = 0; - } - break; - } - if (ses->scrolling) { -- if ((ev->b & BM_ACT) == B_UP) { -+ if ((ev->b & BM_ACT) == BTN_UP) { - ses->scrolling = 0; - } - break; - } - - -- if ((ev->b & BM_ACT) == B_DOWN && fd->f_data->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw - fd->f_data->hsb * G_SCROLL_BAR_WIDTH)) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && fd->f_data->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw - fd->f_data->hsb * G_SCROLL_BAR_WIDTH)) { - process_sb_event(fd, ev->y, 0); - break; - } -- if ((ev->b & BM_ACT) == B_DOWN && fd->f_data->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw - fd->f_data->vsb * G_SCROLL_BAR_WIDTH, fd->yw)) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && fd->f_data->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw - fd->f_data->vsb * G_SCROLL_BAR_WIDTH, fd->yw)) { - process_sb_event(fd, ev->x, 1); - break; - } - if (fd->f_data->vsb && ev_in_rect(ev, fd->xw - G_SCROLL_BAR_WIDTH, 0, fd->xw, fd->yw)) return 0; - if (fd->f_data->hsb && ev_in_rect(ev, 0, fd->yw - G_SCROLL_BAR_WIDTH, fd->xw, fd->yw)) return 0; - -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_MIDDLE) { -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_MIDDLE) { - scrll: - ses->scrolltype = ev->x + fd->vs->view_posx; - ses->scrolloff = ev->y + fd->vs->view_pos; -@@ -1047,7 +1047,7 @@ - fd->vs->g_display_link = 0; - if (fd->vs->current_link >= 0 && fd->vs->current_link < fd->f_data->nlinks) redraw_link(fd, fd->vs->current_link); - } -- if (!(ev->b == (B_LEFT | B_UP) && fd->f_data->hlt_len && fd->f_data->start_highlight_x == -1)) { -+ if (!(ev->b == (BTN_LEFT | BTN_UP) && fd->f_data->hlt_len && fd->f_data->start_highlight_x == -1)) { - fd->vs->current_link = -1; - fd->vs->orig_link = fd->vs->current_link; - fd->f_data->root->mouse_event(fd, fd->f_data->root, ev->x + fd->vs->view_posx, ev->y + fd->vs->view_pos, ev->b); -@@ -1057,14 +1057,14 @@ - } - - /* highlight text */ -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_LEFT) { /* start highlighting */ -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_LEFT) { /* start highlighting */ - fd->f_data->start_highlight_x = ev->x; - fd->f_data->start_highlight_y = ev->y; - fd->f_data->hlt_len = 0; - fd->f_data->hlt_pos = -1; - return 1; - } -- if (((ev->b & BM_ACT) == B_DRAG || (ev->b & BM_ACT) == B_UP) && (ev->b & BM_BUTT) == B_LEFT) { /* stop highlighting */ -+ if (((ev->b & BM_ACT) == BTN_DRAG || (ev->b & BM_ACT) == BTN_UP) && (ev->b & BM_BUTT) == BTN_LEFT) { /* stop highlighting */ - struct g_object_text *t; - if (fd->f_data->start_highlight_x != -1) { - if (abs(ev->x - fd->f_data->start_highlight_x) < 8 && abs(ev->y - fd->f_data->start_highlight_y) < 8) goto skip_hl; -@@ -1088,7 +1088,7 @@ - g_get_search_data(fd->f_data); - end=t->srch_pos+g_find_text_pos(t, ev->x+fd->vs->view_posx); - fd->f_data->hlt_len=end-fd->f_data->hlt_pos; -- if ((ev->b & BM_ACT) == B_UP || (ev->b & BM_ACT) == B_DRAG) { -+ if ((ev->b & BM_ACT) == BTN_UP || (ev->b & BM_ACT) == BTN_DRAG) { - unsigned char *m = memacpy(fd->f_data->srch_string + fd->f_data->hlt_pos + (fd->f_data->hlt_len > 0 ? 0 : fd->f_data->hlt_len), fd->f_data->hlt_len > 0 ? fd->f_data->hlt_len : -fd->f_data->hlt_len); - if (m) { - unsigned char *p = m; -@@ -1118,7 +1118,7 @@ - } - #endif - -- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_RIGHT && fd->vs->current_link == -1) goto scrll; -+ if ((ev->b & BM_ACT) == BTN_DOWN && (ev->b & BM_BUTT) == BTN_RIGHT && fd->vs->current_link == -1) goto scrll; - break; - case EV_KBD: - if (ses->locked_link && fd->vs->current_link >= 0 && fd->vs->current_link < fd->f_data->nlinks && (fd->f_data->links[fd->vs->current_link].type == L_FIELD || fd->f_data->links[fd->vs->current_link].type == L_AREA)) { -@@ -1507,7 +1507,7 @@ - g_get_search_data(f->f_data); - g_get_search(f->f_data, f->ses->search_word); - search_word = f->ses->search_word; -- if (!f->f_data->n_search_positions) msg_box(f->ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, B_ENTER | B_ESC); -+ if (!f->f_data->n_search_positions) msg_box(f->ses->term, NULL, TEXT(T_SEARCH), AL_CENTER, TEXT(T_SEARCH_STRING_NOT_FOUND), NULL, 1, TEXT(T_CANCEL), NULL, BTN_ENTER | BTN_ESC); - - highlight_positions = f->f_data->search_positions; - highlight_lengths = f->f_data->search_lengths; -diff -urN links-2.3pre2-orig/x.c links-2.3pre2/x.c ---- links-2.3pre2-orig/x.c 2011-04-19 15:17:50.000000000 +0000 -+++ links-2.3pre2/x.c 2011-05-13 09:04:16.722993152 +0000 -@@ -571,28 +571,28 @@ - #endif - gd=x_find_gd(&(last_event.xmotion.window)); - if (!gd)break; -- a=B_LEFT; -- b=B_MOVE; -+ a=BTN_LEFT; -+ b=BTN_MOVE; - if ((last_event.xmotion.state)&Button1Mask) - { -- a=B_LEFT; -- b=B_DRAG; -+ a=BTN_LEFT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("left button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button2Mask) - { -- a=B_MIDDLE; -- b=B_DRAG; -+ a=BTN_MIDDLE; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("middle button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button3Mask) - { -- a=B_RIGHT; -- b=B_DRAG; -+ a=BTN_RIGHT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("right button/drag\n"); - #endif -@@ -718,15 +718,15 @@ - switch(event.xbutton.button) - { - case 1: -- a=B_LEFT; -+ a=BTN_LEFT; - break; - - case 3: -- a=B_RIGHT; -+ a=BTN_RIGHT; - break; - - case 2: -- a=B_MIDDLE; -+ a=BTN_MIDDLE; - break; - - default: -@@ -735,7 +735,7 @@ - } - x_clip_number(&(event.xmotion.x),gd->size.x1,gd->size.x2); - x_clip_number(&(event.xmotion.y),gd->size.y1,gd->size.y2); -- gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|B_UP); -+ gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|BTN_UP); - r_xx:; - } - break; -@@ -757,31 +757,31 @@ - switch(event.xbutton.button) - { - case 1: -- a=B_LEFT; -+ a=BTN_LEFT; - break; - - case 3: -- a=B_RIGHT; -+ a=BTN_RIGHT; - break; - - case 2: -- a=B_MIDDLE; -+ a=BTN_MIDDLE; - break; - - case 4: -- a=B_WHEELUP; -+ a=BTN_WHEELUP; - break; - - case 5: -- a=B_WHEELDOWN; -+ a=BTN_WHEELDOWN; - break; - - case 6: -- a=B_WHEELLEFT; -+ a=BTN_WHEELLEFT; - break; - - case 7: -- a=B_WHEELRIGHT; -+ a=BTN_WHEELRIGHT; - break; - - default: -@@ -789,7 +789,7 @@ - } - x_clip_number(&(event.xmotion.x),gd->size.x1,gd->size.x2); - x_clip_number(&(event.xmotion.y),gd->size.y1,gd->size.y2); -- gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|(a != B_WHEELDOWN && a != B_WHEELUP && a != B_WHEELLEFT && a != B_WHEELRIGHT ? B_DOWN : B_MOVE)); -+ gd->mouse_handler(gd,event.xbutton.x,event.xbutton.y,a|(a != BTN_WHEELDOWN && a != BTN_WHEELUP && a != BTN_WHEELLEFT && a != BTN_WHEELRIGHT ? BTN_DOWN : BTN_MOVE)); - p_xx:; - } - break; -@@ -858,28 +858,28 @@ - #endif - gd=x_find_gd(&(last_event.xmotion.window)); - if (!gd)goto ret; -- a=B_LEFT; -- b=B_MOVE; -+ a=BTN_LEFT; -+ b=BTN_MOVE; - if ((last_event.xmotion.state)&Button1Mask) - { -- a=B_LEFT; -- b=B_DRAG; -+ a=BTN_LEFT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("left button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button2Mask) - { -- a=B_MIDDLE; -- b=B_DRAG; -+ a=BTN_MIDDLE; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("middle button/drag\n"); - #endif - } - if ((last_event.xmotion.state)&Button3Mask) - { -- a=B_RIGHT; -- b=B_DRAG; -+ a=BTN_RIGHT; -+ b=BTN_DRAG; - #ifdef X_DEBUG - MESSAGE("right button/drag\n"); - #endif diff --git a/www-client/links/patches/links-2.8.patch b/www-client/links/patches/links-2.8.patch deleted file mode 100644 index 8fc7795d9..000000000 --- a/www-client/links/patches/links-2.8.patch +++ /dev/null @@ -1,1386 +0,0 @@ -diff -urN links-2.8.org/acconfig.h links-2.8/acconfig.h ---- links-2.8.org/acconfig.h 2013-08-03 18:22:59.028311552 +0200 -+++ links-2.8/acconfig.h 2013-12-12 20:39:35.528744448 +0100 -@@ -179,6 +179,9 @@ - #undef GRDRV_ATHEOS - - /* */ -+#undef GRDRV_HAIKU -+ -+/* */ - #undef GRDRV_GRX - - /* */ -diff -urN links-2.8.org/beos.c links-2.8/beos.c ---- links-2.8.org/beos.c 2013-01-23 05:52:02.030670848 +0100 -+++ links-2.8/beos.c 2013-12-12 19:10:01.005242880 +0100 -@@ -3,7 +3,7 @@ - * This file is a part of the Links program, released under GPL - */ - --#if defined(__BEOS__) || defined(__HAIKU__) -+#if defined(__BEOS__) - - #include "com-defs.h" - -diff -urN links-2.8.org/configure.in links-2.8/configure.in ---- links-2.8.org/configure.in 2013-09-17 02:11:46.046137344 +0200 -+++ links-2.8/configure.in 2013-12-13 00:05:02.135004160 +0100 -@@ -13,7 +13,7 @@ - AUTOHEADER="./missing autoheader" - image_formats="GIF PNG XBM" - --AM_CONFIG_HEADER(config.h) -+AC_CONFIG_HEADER(config.h) - - dnl Checks for programs. - AC_PROG_CC -@@ -577,10 +577,10 @@ - - AC_CHECK_FUNC(socket, cf_result=yes, cf_result=no) - if test "$cf_result" = no; then -- AC_CHECK_LIB(socket, socket) -- if test "$ac_cv_lib_socket_socket" = no; then -- AC_CHECK_LIB(network, socket) -- if test "$ac_cv_lib_network_socket" = no; then -+ AC_CHECK_LIB(network, socket) -+ if test "$ac_cv_lib_network_socket" = no; then -+ AC_CHECK_LIB(socket, socket) -+ if test "$ac_cv_lib_socket_socket" = no; then - AC_CHECK_LIB(watt, socket) - if test "$ac_cv_lib_watt_socket" = no; then - AC_ERROR([socket function not present]) -@@ -722,6 +722,7 @@ - AC_DEFINE(HAVE_BEGINTHREAD) - fi - AC_CHECK_HEADERS(atheos/threads.h) -+AC_CHECK_HEADERS(kernel/OS.h) - AC_HAVE_FUNCS(spawn_thread) - AC_HAVE_FUNCS(resume_thread) - -@@ -876,6 +877,7 @@ - - - cf_have_atheos=no -+cf_have_haiku=no - - if test "$cf_use_graphics" != no; then - AC_DEFINE(G) -@@ -888,6 +890,7 @@ - AC_ARG_WITH(pmshell, [ --without-pmshell compile without PMShell graphics driver],[if test "$withval" = no; then disable_pmshell=yes; else disable_pmshell=no; fi]) - AC_ARG_WITH(windows, [ --without-windows compile without Windows graphics driver],[if test "$withval" = no; then disable_windows=yes; else disable_windows=no; fi]) - AC_ARG_WITH(atheos, [ --without-atheos compile without Atheos graphics driver],[if test "$withval" = no; then disable_atheos=yes; else disable_atheos; fi]) -+AC_ARG_WITH(haiku, [ --without-haiku compile without Haiku/BeOS graphics driver],[if test "$withval" = no; then disable_haiku=yes; else disable_haiku=no; fi]) - AC_ARG_WITH(grx, [ --without-grx compile without DOS GRX graphics driver],[if test "$withval" = no; then disable_grx=yes; else disable_grx; fi]) - - drivers="" -@@ -1124,6 +1127,31 @@ - fi - fi - -+if test "$disable_haiku" != yes ; then -+ old_ext="$ac_ext" -+ ac_ext=cpp -+ AC_CHECK_HEADERS(interface/View.h) -+ AC_CHECK_HEADERS(interface/Window.h) -+ AC_CHECK_HEADERS(interface/Screen.h) -+ AC_CHECK_HEADERS(interface/Bitmap.h) -+ AC_CHECK_HEADERS(support/Locker.h) -+ AC_CHECK_HEADERS(app/Application.h) -+ ac_ext="$old_ext" -+ -+ if test "$ac_cv_header_kernel_OS_h" = yes && -+ test "$ac_cv_header_interface_View_h" = yes && -+ test "$ac_cv_header_interface_Window_h" = yes && -+ test "$ac_cv_header_interface_Screen_h" = yes && -+ test "$ac_cv_header_interface_Bitmap_h" = yes && -+ test "$ac_cv_header_support_Locker_h" = yes && -+ test "$ac_cv_header_app_Application_h" = yes; then -+ AC_PROG_CXX -+ AC_DEFINE(GRDRV_HAIKU) -+ drivers="$drivers HAIKU" -+ cf_have_haiku=yes -+ fi -+fi -+ - if test "$disable_grx" != yes -a "$ac_cv_have_djgpp" = yes; then - LIBS_X="$LIBS" - AC_CHECK_HEADERS(grx20.h) -@@ -1230,6 +1258,7 @@ - - - AM_CONDITIONAL(ATHEOS_GR, test "$cf_have_atheos" = yes) -+AM_CONDITIONAL(HAIKU_GR, test "$cf_have_haiku" = yes) - - test "$ac_cv_have_emx" = yes && LDFLAGS="$LDFLAGS -Zexe" - -diff -urN links-2.8.org/drivers.c links-2.8/drivers.c ---- links-2.8.org/drivers.c 2013-08-12 23:15:36.026214400 +0200 -+++ links-2.8/drivers.c 2013-12-12 20:42:12.595329024 +0100 -@@ -31,6 +31,9 @@ - #ifdef GRDRV_ATHEOS - extern struct graphics_driver atheos_driver; - #endif -+#ifdef GRDRV_HAIKU -+extern struct graphics_driver haiku_driver; -+#endif - #ifdef GRDRV_GRX - extern struct graphics_driver grx_driver; - #endif -@@ -51,6 +54,9 @@ - #ifdef GRDRV_ATHEOS - &atheos_driver, - #endif -+#ifdef GRDRV_HAIKU -+ &haiku_driver, -+#endif - #ifndef SPAD - #ifdef GRDRV_X - &x_driver, -diff -urN links-2.8.org/haiku.cpp links-2.8/haiku.cpp ---- links-2.8.org/haiku.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ links-2.8/haiku.cpp 2013-12-13 00:23:09.939786240 +0100 -@@ -0,0 +1,890 @@ -+/* haiku.cpp -+ * (c) 2007 François Revol -+ * This file is a part of the Links program, released under GPL -+ */ -+ -+#if defined __BEOS__ || defined __HAIKU__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* -+ * GUI code -+ */ -+ -+/* -+ * TODO: -+ * - BeOS doesn't handle BView::DrawBitmap() with RGB24, and links doesn't seem to handle RGB32, -+ * so the colorspace is forced into 16bpp for now. -+ * - more paste handling ? -+ * - more DnD (maybe check if in menu or not and prepend "g" ?) -+ * - handle DnD of Net+ bookmarks -+ */ -+ -+extern "C" { -+#include "cfg.h" -+} -+ -+#ifdef GRDRV_HAIKU -+ -+extern "C" { -+#include "links.h" -+} -+#undef B_ENTER -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+//#define DBG(l...) fprintf(stderr, l); -+#define DBG(l...) {} -+ -+/* -+#ifdef debug -+#undef debug -+#endif -+#define debug(x) -+#define fprintf(x, y) -+*/ -+ -+extern "C" struct graphics_driver haiku_driver; -+ -+class LinksApplication : public BApplication { -+ public: -+ LinksApplication():BApplication("application/x-vnd.links"){} -+ virtual void RefsReceived(BMessage *message); -+ virtual bool QuitRequested(); -+}; -+ -+class LinksView; -+ -+class LinksWindow : public BWindow { -+ public: -+ LinksWindow(BRect r); -+ ~LinksWindow(); -+ virtual void FrameResized(float width, float height); -+ virtual bool QuitRequested(); -+ int resized; -+ LinksView *view; -+}; -+ -+class LinksView : public BView { -+ public: -+ LinksView(LinksWindow *w); -+ ~LinksView(); -+ virtual void Draw(BRect r); -+ virtual void MouseDown(BPoint p); -+ virtual void MouseUp(BPoint p); -+ virtual void MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg); -+ virtual void KeyDown(const char *s, int32 numBytes); -+ virtual void MessageReceived(BMessage *msg); -+ LinksWindow *win; -+ struct graphics_device *dev; -+ void d_flush(); -+ int flushing; -+ int last_x, last_y; -+}; -+ -+#define lv(dev) ((LinksView *)(dev)->driver_data) -+ -+#define lock_dev(dev) do { if (!lv(dev)->win->Lock()) return; } while (0) -+#define lock_dev0(dev) do { if (!lv(dev)->win->Lock()) return 0; } while (0) -+#define unlock_dev(dev) do { lv(dev)->win->Unlock(); } while (0) -+ -+void be_get_size(struct graphics_device *dev); -+ -+#define detach_message(dev) \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ } -+ -+#define pipe_message(dev) \ -+ if (current) { \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } -+ -+#define detach_and_pipe_message(dev) do { \ -+ BMessage *current = Looper()->DetachCurrentMessage(); \ -+ if (current) { \ -+ current->AddPointer("linksdev", dev); \ -+ write(wpipe, ¤t, sizeof(current)); \ -+ } \ -+} while (0) -+ -+LinksApplication *be_links_app; -+BLocker *be_lock = NULL; -+ -+int msg_pipe[2]; -+ -+thread_id be_app_thread_id; -+ -+#define rpipe (msg_pipe[0]) -+#define wpipe (msg_pipe[1]) -+ -+#define small_color (sizeof(rgb_color) <= sizeof(long)) -+#define get_color32(c, rgb) rgb_color c((rgb_color){(rgb >> 16) & 255, (rgb >> 8) & 255, rgb & 255, 255}) -+ -+color_space be_cs_desktop, be_cs_bmp; -+ -+int be_x_size, be_y_size; -+ -+int be_win_x_size, be_win_y_size; -+int be_win_x_pos, be_win_y_pos; -+ -+static BMessage *initial_refs_msg; -+ -+void LinksApplication::RefsReceived(BMessage *message) -+{ -+ entry_ref ref; -+ //if (!IsLaunching()) -+ // return; -+ BMessenger msgr(WindowAt(0)); -+ BMessage *m = new BMessage(*message); -+ m->AddSpecifier("View", (int32)0); -+ //m->what = B_SIMPLE_DATA; -+ if (msgr.IsValid()) { -+ msgr.SendMessage(m); -+ } else -+ initial_refs_msg = m; -+} -+ -+bool LinksApplication::QuitRequested() -+{ -+ BApplication::QuitRequested(); -+ //printf("qc: %ld\n", CountWindows()); -+ return true; -+} -+ -+LinksWindow::LinksWindow(BRect r):BWindow(r, "Links", B_DOCUMENT_WINDOW, 0) -+{ -+ DBG("LINKSWINDOW\n"); -+ resized = 0; -+ view = NULL; -+} -+ -+LinksWindow::~LinksWindow() -+{ -+ view = NULL; -+ DBG("~LINKSWINDOW\n"); -+} -+ -+void LinksWindow::FrameResized(float width, float height) -+{ -+ resized = 1; -+} -+ -+bool LinksWindow::QuitRequested() -+{ -+ detach_and_pipe_message(view->dev); -+ return false; -+} -+ -+void do_flush(void *p_dev) -+{ -+ struct graphics_device *dev = (struct graphics_device *)p_dev; -+ LinksView *v = lv(dev); -+ v->win->Lock(); -+ v->win->Flush(); -+ v->win->Unlock(); -+ v->flushing = 0; -+} -+ -+LinksView::LinksView(LinksWindow *w):BView(w->Bounds(), "Links", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_NAVIGABLE) -+{ -+ DBG("LINKSVIEW\n"); -+ (win = w)->AddChild(this); -+ SetViewColor(B_TRANSPARENT_32_BIT); -+ MakeFocus(); -+ w->view = this; -+ flushing = 0; -+ last_x = last_y = 0; -+} -+ -+LinksView::~LinksView() -+{ -+ win->view = NULL; -+ DBG("~LINKSVIEW\n"); -+} -+ -+void LinksView::d_flush() -+{ -+ if (flushing) return; -+ register_bottom_half(do_flush, this->dev); -+ flushing = 1; -+} -+ -+#undef select -+ -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t) -+{ -+ int v; -+ v = select(n, r, w, e, t); -+ check_bottom_halves(); -+ return v; -+} -+ -+void be_paste_string(struct graphics_device *dev, const char *str) -+{ -+ unsigned char *s = (unsigned char *)str; -+ int c, i; -+ while (s && *s) { -+ GET_UTF_8(s, c); -+ if (dev) dev->keyboard_handler(dev, c, 0); -+ } -+} -+ -+void be_get_event(void *dummy) -+{ -+ BMessage *msg; -+ LinksView *view = NULL; -+ LinksWindow *win = NULL; -+ struct graphics_device *dev; -+ read(rpipe, &msg, sizeof(msg)); -+ DBG("GETE\n"); -+ if (!msg) -+ return; -+ if (msg->FindPointer("linksdev", (void **)&dev) < B_OK) -+ return; -+ if (dev) { -+ view = lv(dev); -+ if (view) -+ win = dynamic_cast(view->Window()); -+ } -+ switch (msg->what) { -+ case B_QUIT_REQUESTED: -+ if (dev) -+ dev->keyboard_handler(dev, KBD_CTRL_C, 0); -+ break; -+ case _UPDATE_: -+ { -+ BRect r; -+ if (msg->FindRect("updateRect", &r) < B_OK) -+ return; -+ struct rect rr; -+ rr.x1 = (int)r.left; -+ rr.x2 = (int)r.right + 1; -+ rr.y1 = (int)r.top; -+ rr.y2 = (int)r.bottom + 1; -+ /*DBG("paint: %d %d %d %d\n", rr.x1, rr.x2, rr.y1, rr.y2);*/ -+ if (dev) { -+ if (!win->resized) dev->redraw_handler(dev, &rr); -+ else { -+ be_get_size(dev); -+ win->resized = 0; -+ dev->resize_handler(dev); -+ } -+ } -+ check_bottom_halves(); -+ } -+ break; -+ case B_MOUSE_DOWN: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = B_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = B_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = B_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = B_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = B_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = B_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = B_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, B_DOWN | btn); -+ } -+ break; -+ case B_MOUSE_UP: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = B_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & ~B_PRIMARY_MOUSE_BUTTON == 0) -+ btn = B_LEFT; -+ else if (buttons & ~B_SECONDARY_MOUSE_BUTTON == 0) -+ btn = B_RIGHT; -+ else if (buttons & ~B_TERTIARY_MOUSE_BUTTON == 0) -+ btn = B_MIDDLE; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 1) == 0) -+ btn = B_FOURTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 2) == 0) -+ btn = B_FIFTH; -+ else if (buttons & ~(B_TERTIARY_MOUSE_BUTTON << 3) == 0) -+ btn = B_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, B_UP | btn); -+ } -+ break; -+ case B_MOUSE_MOVED: -+ { -+ BPoint where; -+ int32 buttons; -+ int btn = B_LEFT; -+ if (msg->FindInt32("buttons", &buttons) != B_OK) -+ return; -+ if (msg->FindPoint("where", &where) != B_OK) -+ return; -+ if (buttons & B_PRIMARY_MOUSE_BUTTON) -+ btn = B_LEFT; -+ else if (buttons & B_SECONDARY_MOUSE_BUTTON) -+ btn = B_RIGHT; -+ else if (buttons & B_TERTIARY_MOUSE_BUTTON) -+ btn = B_MIDDLE; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 1)) -+ btn = B_FOURTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 2)) -+ btn = B_FIFTH; -+ else if (buttons & (B_TERTIARY_MOUSE_BUTTON << 3)) -+ btn = B_SIXTH; -+ if (dev) dev->mouse_handler(dev, view->last_x = (int)where.x, view->last_y = (int)where.y, !buttons ? B_MOVE : B_DRAG | btn); -+ } -+ break; -+ case B_KEY_DOWN: -+ { -+ int32 modifiers; -+ int32 numBytes; -+ const char *bytes; -+ int c; -+ int mods = 0; -+ if (msg->FindInt32("modifiers", &modifiers) != B_OK) -+ return; -+ if (msg->FindString("bytes", &bytes) != B_OK) -+ return; -+ unsigned char buf[4] = { 0, 0, 0, 0 }; -+ unsigned char *ss; -+ if (modifiers & (B_LEFT_CONTROL_KEY | B_RIGHT_CONTROL_KEY | B_LEFT_COMMAND_KEY | B_RIGHT_COMMAND_KEY)) { -+ int32 raw; -+ if (msg->FindInt32("raw_char", &raw) != B_OK) -+ return; -+ buf[0] = (unsigned char)raw; -+ ss = buf; -+ } else -+ ss = (unsigned char *)bytes; -+ -+ GET_UTF_8(ss, c); -+ switch (c) { -+ case B_BACKSPACE: c = KBD_BS; break; -+ case B_ENTER: c = KBD_ENTER; break; -+ case B_SPACE: c = ' '; break; -+ case B_TAB: c = KBD_TAB; break; -+ case B_ESCAPE: c = KBD_ESC; break; -+ case B_LEFT_ARROW: c = KBD_LEFT; break; -+ case B_RIGHT_ARROW: c = KBD_RIGHT; break; -+ case B_UP_ARROW: c = KBD_UP; break; -+ case B_DOWN_ARROW: c = KBD_DOWN; break; -+ case B_INSERT: c = KBD_INS; break; -+ case B_DELETE: c = KBD_DEL; break; -+ case B_HOME: c = KBD_HOME; break; -+ case B_END: c = KBD_END; break; -+ case B_PAGE_UP: c = KBD_PAGE_UP; break; -+ case B_PAGE_DOWN: c = KBD_PAGE_DOWN; break; -+ default: if (c < 32) c = 0; -+ else modifiers &= ~(B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY); -+ break; -+ } -+ if (modifiers & (B_LEFT_SHIFT_KEY|B_RIGHT_SHIFT_KEY)) -+ mods |= KBD_SHIFT; -+ if (modifiers & (B_LEFT_CONTROL_KEY|B_RIGHT_CONTROL_KEY)) -+ mods |= KBD_CTRL; -+ if (modifiers & (B_LEFT_COMMAND_KEY|B_RIGHT_COMMAND_KEY)) -+ mods |= KBD_ALT; -+ if (c) if (dev) dev->keyboard_handler(dev, c, mods); -+ } -+ break; -+ case B_MOUSE_WHEEL_CHANGED: -+ { -+ float delta_x, delta_y; -+ if (msg->FindFloat("be:wheel_delta_x", &delta_x) != B_OK) -+ delta_x = 0; -+ if (msg->FindFloat("be:wheel_delta_y", &delta_y) != B_OK) -+ delta_y = 0; -+ if (delta_y) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, B_MOVE | (delta_y > 0 ? B_WHEELDOWN : B_WHEELUP)); -+ if (delta_x) if (dev) dev->mouse_handler(dev, view->last_x, view->last_y, B_MOVE | (delta_x < 0 ? B_WHEELLEFT : B_WHEELRIGHT)); -+ } -+ break; -+ case B_PASTE: -+ if (be_clipboard->Lock()) { -+ BMessage *data = be_clipboard->Data(); -+ if (data) { -+ const char *text_plain; -+ ssize_t len; -+ //data->PrintToStream(); -+ if (data->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ be_clipboard->Unlock(); -+ } -+ break; -+ case B_REFS_RECEIVED: -+ if (dev) -+ be_paste_string(dev, "\033\ng"); -+ /* FALLTHROUGH */ -+ case B_SIMPLE_DATA: -+ { -+ /* something got dropped */ -+ entry_ref ref; -+ const char *text_plain; -+ ssize_t len; -+ //msg->PrintToStream(); -+ /* try find a file path to paste */ -+ if (msg->FindRef("refs", &ref) == B_OK) { -+ BPath path(&ref); -+ if (path.InitCheck() == B_OK) { -+ BFile f(path.Path(), B_READ_ONLY); -+ BString url; -+ if (f.InitCheck() == B_OK && f.ReadAttrString("META:url", &url) >= B_OK) { -+ be_paste_string(dev, url.String()); -+ } else -+ be_paste_string(dev, path.Path()); -+ } -+ } else if (msg->FindData("text/plain", B_MIME_TYPE, (const void **)&text_plain, &len) == B_OK) { -+ be_paste_string(dev, text_plain); -+ } -+ } -+ break; -+ default: -+ msg->PrintToStream(); -+ break; -+ } -+ delete msg; -+} -+ -+void be_get_size(struct graphics_device *dev) -+{ -+ BRect r; -+ lock_dev(dev); -+ r = lv(dev)->Bounds(); -+ unlock_dev(dev); -+ dev->size.x1 = dev->size.y1 = 0; -+ dev->size.x2 = (int)r.Width() + 1; -+ dev->size.y2 = (int)r.Height() + 1; -+} -+ -+void LinksView::Draw(BRect r) -+{ -+ detach_message(dev); -+ current->AddRect("updateRect", r); -+ pipe_message(dev); -+} -+ -+ -+void LinksView::MouseDown(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseUp(BPoint p) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MouseMoved(BPoint p, uint32 transit, const BMessage *dragmsg) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+void LinksView::MessageReceived(BMessage *msg) -+{ -+ switch (msg->what) { -+ case B_REFS_RECEIVED: -+ case B_MOUSE_WHEEL_CHANGED: -+ case B_PASTE: -+ case B_SIMPLE_DATA: -+ detach_and_pipe_message(dev); -+ break; -+ default: -+ BView::MessageReceived(msg); -+ } -+} -+ -+void LinksView::KeyDown(const char *s, int32 numBytes) -+{ -+ detach_and_pipe_message(dev); -+} -+ -+unsigned char *be_get_driver_param(void) -+{ -+ return NULL; -+} -+ -+int32 be_app_thread(void *p) -+{ -+ be_links_app->Lock(); -+ be_links_app->Run(); -+ delete be_links_app; -+ return 0; -+} -+ -+unsigned char *be_init_driver(unsigned char *param, unsigned char *display) -+{ -+ be_links_app = new LinksApplication(); -+ if (!be_links_app) { -+ return stracpy((unsigned char *)"Unable to allocate Application object.\n"); -+ } -+ if (c_pipe(msg_pipe)) { -+ delete be_links_app; -+ return stracpy((unsigned char *)"Could not create pipe.\n"); -+ } -+ fcntl(rpipe, F_SETFL, O_NONBLOCK); -+ fcntl(wpipe, F_SETFL, O_NONBLOCK); -+ set_handlers(rpipe, be_get_event, NULL, NULL, NULL); -+ be_app_thread_id = spawn_thread(be_app_thread, "links_app", B_NORMAL_PRIORITY, NULL); -+ resume_thread(be_app_thread_id); -+ be_links_app->Unlock(); -+ be_cs_desktop = B_NO_COLOR_SPACE; -+ be_x_size = 640; -+ be_y_size = 480; -+ BScreen d; -+ if (d.IsValid()) { -+ be_cs_desktop = d.ColorSpace(); -+ be_x_size = (int)d.Frame().Width() + 1; -+ be_y_size = (int)d.Frame().Height() + 1; -+ } -+ be_win_y_size = be_y_size * 9 / 10; -+ be_win_x_size = be_win_y_size; -+ /* -+ DBG("%d %d\n", be_x_size, be_y_size); -+ DBG("%d %d\n", be_win_x_size, be_win_y_size); -+ */ -+ be_win_y_pos = (be_y_size - be_win_y_size) / 2; -+ be_win_x_pos = be_x_size - be_win_x_size - be_win_y_pos; -+ if (/*be_cs_desktop == B_RGB32 ||*/ be_cs_desktop == B_RGB24 || be_cs_desktop == B_RGB16 || be_cs_desktop == B_RGB15) -+ be_cs_bmp = be_cs_desktop; -+ else if (be_cs_desktop == B_RGB32 || be_cs_desktop == B_RGBA32) be_cs_bmp = B_RGB24; -+ else be_cs_bmp = B_RGB15; -+ be_cs_bmp = B_RGB16; // XXX: DEBUG -+ switch (be_cs_bmp) { -+ case B_RGB24: -+ haiku_driver.depth = 0xc3; -+ break; -+ case B_RGB16: -+ haiku_driver.depth = 0x82; -+ break; -+ case B_RGB15: -+ haiku_driver.depth = 0x7a; -+ break; -+ default: -+ internal("unknown depth"); -+ } -+ return NULL; -+} -+ -+void be_shutdown_driver() -+{ -+ status_t ret; -+ //debug((unsigned char *)"D"); -+ close(rpipe); -+ close(wpipe); -+ set_handlers(rpipe, NULL, NULL, NULL, NULL); -+ //debug((unsigned char *)"DD"); -+ be_links_app->PostMessage(B_QUIT_REQUESTED); -+ //debug((unsigned char *)"E"); -+ wait_for_thread(be_app_thread_id, &ret); -+ //debug((unsigned char *)"F"); -+} -+ -+struct graphics_device *be_init_device() -+{ -+ LinksView *view; -+ LinksWindow *win; -+ struct graphics_device *dev = (struct graphics_device *)mem_calloc(sizeof(struct graphics_device)); -+ if (!dev) return NULL; -+ //dev->drv = &haiku_driver; -+ //debug((unsigned char *)"1"); -+ win = new LinksWindow(BRect(be_win_x_pos, be_win_y_pos, be_win_x_pos + be_win_x_size, be_win_y_pos + be_win_y_size)); -+ //debug((unsigned char *)"2"); -+ if (!win) { -+ mem_free(dev); -+ return NULL; -+ } -+ //debug((unsigned char *)"3"); -+ view = new LinksView(win); -+ if (!view) { -+ delete win; -+ mem_free(dev); -+ return NULL; -+ } -+ view->dev = dev; -+ dev->driver_data = view; -+ be_get_size(dev); -+ memcpy(&dev->clip, &dev->size, sizeof(struct rect)); -+ //debug((unsigned char *)"4"); -+ win->Show(); -+ win->Lock(); -+ view->MakeFocus(); -+ win->Unlock(); -+ //debug((unsigned char *)"5"); -+ if (initial_refs_msg) { -+ BMessenger msgr(win); -+ if (msgr.IsValid()) { -+ msgr.SendMessage(initial_refs_msg); -+ initial_refs_msg = NULL; -+ } -+ } -+ return dev; -+} -+ -+void be_shutdown_device(struct graphics_device *dev) -+{ -+ LinksWindow *win = lv(dev)->win; -+ unregister_bottom_half(do_flush, dev); -+ lv(dev)->dev = NULL; -+ win->PostMessage(B_QUIT_REQUESTED); -+ mem_free(dev); -+} -+ -+void be_set_title(struct graphics_device *dev, unsigned char *title) -+{ -+ LinksWindow *win = lv(dev)->win; -+ lock_dev(dev); -+ win->SetTitle((const char *)title); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+/* -+int be_get_filled_bitmap(struct bitmap *bmp, long color) -+{ -+ internal((unsigned char *)"nedopsano"); -+ return 0; -+} -+*/ -+ -+int be_get_empty_bitmap(struct bitmap *bmp) -+{ -+ DBG("bmp\n"); -+//DBG("bmp (%d, %d) cs %08x\n", bmp->x, bmp->y, be_cs_bmp); -+ BRect r(0, 0, bmp->x - 1, bmp->y - 1); -+ BBitmap *b = new BBitmap(r, /*B_RGB32*/be_cs_bmp); -+ if (!b) { -+ bmp->data = NULL; -+DBG("%s: error 1\n", __FUNCTION__); -+ return 0; -+ } -+ if (!b->IsValid()) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 2\n", __FUNCTION__); -+ return 0; -+ } -+ if (b->LockBits() < B_OK) { -+ bmp->data = NULL; -+ delete b; -+DBG("%s: error 3\n", __FUNCTION__); -+ return 0; -+ } -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ bmp->flags = b; -+//DBG("bmp: data %p, skip %d, flags %p\n", bmp->data, bmp->skip, bmp->flags); -+ return 0; -+} -+ -+void be_register_bitmap(struct bitmap *bmp) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void *be_prepare_strip(struct bitmap *bmp, int top, int lines) -+{ -+ DBG("preps\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ if (b->LockBits() < B_OK) -+ return NULL; -+ bmp->data = b->Bits(); -+ bmp->skip = b->BytesPerRow(); -+ return ((char *)bmp->data) + bmp->skip * top; -+} -+ -+void be_commit_strip(struct bitmap *bmp, int top, int lines) -+{ -+ BBitmap *b = (BBitmap *)bmp->flags; -+ b->UnlockBits(); -+} -+ -+void be_unregister_bitmap(struct bitmap *bmp) -+{ -+ DBG("unb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ delete b; -+} -+ -+void be_draw_bitmap(struct graphics_device *dev, struct bitmap *bmp, int x, int y) -+{ -+ DBG("drawb\n"); -+ BBitmap *b = (BBitmap *)bmp->flags; -+ lock_dev(dev); -+ lv(dev)->DrawBitmap(b, b->Bounds(), BRect(x, y, x + bmp->x - 1, y + bmp->y - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+/* -+void be_draw_bitmaps(struct graphics_device *dev, struct bitmap **bmp, int n, int x, int y) -+{ -+ LinksView *lvv = lv(dev); -+ lock_dev(dev); -+ while (n--) { -+ BBitmap *b = (BBitmap *)(*bmp)->flags; -+ lvv->DrawBitmap(b, b->Bounds(), BRect(x, y, x + (*bmp)->x, y + (*bmp)->y)); -+ x += (*bmp)->x; -+ bmp++; -+ } -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+*/ -+ -+long be_get_color(int rgb) -+{ -+ if (small_color) { -+ get_color32(c, rgb); -+ return *(long *)(void *)&c; -+ } else return rgb & 0xffffff; -+} -+ -+void be_fill_area(struct graphics_device *dev, int x1, int y1, int x2, int y2, long color) -+{ -+ DBG("fill\n"); -+ if (x1 >= x2 || y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->FillRect(BRect(x1, y1, x2 - 1, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_hline(struct graphics_device *dev, int x1, int y, int x2, long color) -+{ -+ DBG("hline\n"); -+ if (x1 >= x2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x1, y), BPoint(x2 - 1, y)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+void be_draw_vline(struct graphics_device *dev, int x, int y1, int y2, long color) -+{ -+ DBG("vline\n"); -+ if (y1 >= y2) return; -+ lock_dev(dev); -+ if (small_color) -+ lv(dev)->SetHighColor(*(rgb_color *)(void *)&color); -+ else -+ lv(dev)->SetHighColor(get_color32(, color)); -+ lv(dev)->StrokeLine(BPoint(x, y1), BPoint(x, y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+} -+ -+int be_hscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("hscroll\n"); -+ if (dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.x1 - dev->clip.x2) return 1; -+ if (sc >= dev->clip.x2 - dev->clip.x1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - sc - 1, dev->clip.y2 - 1), BRect(dev->clip.x1 + sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1 - sc, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 + sc - 1, dev->clip.y2 - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+int be_vscroll(struct graphics_device *dev, struct rect_set **ignore, int sc) -+{ -+ DBG("vscroll\n"); -+ if (!sc || dev->clip.x1 >= dev->clip.x2 || dev->clip.y1 >= dev->clip.y2) return 0; -+ if (sc <= dev->clip.y1 - dev->clip.y2) return 1; -+ if (sc >= dev->clip.y2 - dev->clip.y1) return 1; -+ lock_dev0(dev); -+ if (sc > 0) lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 - sc - 1), BRect(dev->clip.x1, dev->clip.y1 + sc, dev->clip.x2 - 1, dev->clip.y2 - 1)); -+ else lv(dev)->CopyBits(BRect(dev->clip.x1, dev->clip.y1 - sc, dev->clip.x2 - 1, dev->clip.y2 - 1), BRect(dev->clip.x1, dev->clip.y1, dev->clip.x2 - 1, dev->clip.y2 + sc - 1)); -+ lv(dev)->d_flush(); -+ unlock_dev(dev); -+ return 1; -+} -+ -+void be_set_clip_area(struct graphics_device *dev, struct rect *r) -+{ -+ DBG("setc\n"); -+ memcpy(&dev->clip, r, sizeof(struct rect)); -+ lock_dev(dev); -+ BRegion clip(BRect(r->x1, r->y1, r->x2 - 1, r->y2 - 1)); -+ lv(dev)->ConstrainClippingRegion(&clip); -+ unlock_dev(dev); -+} -+ -+struct graphics_driver haiku_driver = { -+ (unsigned char *)"haiku", -+ be_init_driver, -+ be_init_device, -+ be_shutdown_device, -+ be_shutdown_driver, -+ dummy_emergency_shutdown, -+ be_get_driver_param, -+ be_get_empty_bitmap, -+ be_register_bitmap, -+ be_prepare_strip, -+ be_commit_strip, -+ be_unregister_bitmap, -+ be_draw_bitmap, -+ be_get_color, -+ be_fill_area, -+ be_draw_hline, -+ be_draw_vline, -+ be_hscroll, -+ be_vscroll, -+ be_set_clip_area, -+ dummy_block, -+ dummy_unblock, -+ be_set_title, -+ NULL, /* exec */ -+ NULL, /* set_clipboard_text */ -+ NULL, /* get_clipboard_text */ -+ 0, /* depth */ -+ 0, 0, /* size */ -+ 0, /* flags */ -+ 0, /* codepage */ -+ NULL, /* shell */ -+}; -+ -+#endif /* GRDRV_HAIKU */ -+ -+#endif -diff -urN links-2.8.org/links-haiku.rdef links-2.8/links-haiku.rdef ---- links-2.8.org/links-haiku.rdef 1970-01-01 01:00:00.000000000 +0100 -+++ links-2.8/links-haiku.rdef 2013-12-13 00:23:34.395313152 +0100 -@@ -0,0 +1,125 @@ -+/* -+** links-haiku.rdef -+** -+** Automatically generated by BResourceParser on -+** Thursday, December 13, 2007 at 23:46:45. -+** -+*/ -+ -+resource(1, "BEOS:APP_FLAGS") (#'APPF') $"01000000"; -+ -+resource(1, "BEOS:APP_VERSION") #'APPV' array { -+ $"02000000010000000000000000000000210000006C696E6B7320322E31707265" -+ $"3333000000000000000000000000000000000000000000000000000000000000" -+ $"00000000000000000000000000000000000000004C696E6B732062726F777365" -+ $"7220322E31707265333300000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000" -+}; -+ -+resource(101, "BEOS:L:STD_ICON") #'ICON' array { -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2A2A2A2A2A2A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2B2B2B2B2B2B2B2B2B2B2B2C0000363434343434343434343434343434" -+ $"2A2A2A3200000000000000000000000000363434343434343434343434343434" -+ $"2A2A2A2FF1313200000000000131310000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A30000000002B2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2A2A2A2A2A2A2A2F000000002A2A2C0000363434343434343434343434343434" -+ $"2C2C2C2C2C2C2C30000000002C2C2D0000373636363636363636363636363636" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"0000000000000000000000000000000000000000000000000000000000000000" -+ $"2222222222222226000000002222230000151A1A1A1A1A1A1A1A1A1A1A1A1A1A" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F1501113F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0E00133F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F3F0500163F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F1A0000193F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F3F0C00001B3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F3F190000001E3F3F3F3F" -+ $"20202020202020250000000020202200001A3F3F3F3F1A030000013F3F3F3F3F" -+ $"20202020202020270000000023202200001A3F1E170C00000000043F3F3F3F3F" -+ $"2020202628292900000000000029290000040300000000000000063F3F3F3F3F" -+ $"20202027292929292929292929292900000203030303030303030B3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+ $"20202020202020202020202020202200001A3F3F3F3F3F3F3F3F3F3F3F3F3F3F" -+}; -+ -+resource(101, "BEOS:M:STD_ICON") #'MICN' array { -+ $"2A2A2A2A2A2A2A303A34343434343434" -+ $"2A2C3030303030F73A34343434343434" -+ $"2A2B2D300000EB323A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"2A2A2A2C00002A303A34343434343434" -+ $"303030310000F1333D3A3A3A3A3A3A3A" -+ $"2626262700002629050D0D0D0D0D0D0D" -+ $"20202022000020260D3F3F3F1D143F3F" -+ $"20202022000020260D3F3F3F140A3F3F" -+ $"20202022000020260D3F3F3F090D3F3F" -+ $"20202022000020260D3F3F16000F3F3F" -+ $"20222427000026280710090000123F3F" -+ $"202225252525252807111111111A3F3F" -+ $"20202020202020260D3F3F3F3F3F3F3F" -+}; -+ -+resource(101, "BEOS:ICON") #'VICN' array { -+ $"6E6369661305000200060237E670B8880E39469D39AE144A52234B0D2500C6D7" -+ $"F5FF6B94DD03EC6666020006023B2B47BB18653D0FA53D225148297046CA1900" -+ $"00FF00FFA9FF00020016023B2B47BB18653D0FA53D225148297046CA1900FFFF" -+ $"8A020006023B3049396B0ABA90833C646E4A101543299500FFFFFFFF52FF5202" -+ $"0016023B3049396B0ABA90833C646E4A101543299500FFFFC9020006023C71E3" -+ $"3A0C78BA15E43C7D2149055549455700E3EDFFFF9EC2FF020006023CD8653068" -+ $"26B065D13CD5A34A6E4A46E21900FFDCDCFFDA5858020006023A1DA6393F04BB" -+ $"B5BC3C6B074AEA364809110087CA05FF026802020016023C00913B1266BB9E06" -+ $"3C5B934A01F04914EC00FFFF4E03003CB00200060230B31E3A09B9BB024238A1" -+ $"2F4BAB534AFF0B00A3043CFFFFDCE603CD4D4D030D296402000602BD498B3E11" -+ $"59BF219BBE7D2F4BE71F4AB31300C13E3EFFE27A7A040174020016023F2938BB" -+ $"F60A3BA9823EEC25C40E6348C15D0099FF00020016023E8FA33A7B71BA9D783E" -+ $"B2C049F7BAC28CE500C8FF00130A06322E323E42464C3C4C2C3D260A04322E32" -+ $"3E424642350A04322E42354C2C3D260A04423542464C3C4C2C0A0338423C4D3C" -+ $"440A08335C395C41544F5C555C6051594D3E510A0422422252325A32490A0422" -+ $"4232493C402D3A0A043249325A3C503C400A043E424E495840493A0A043E524E" -+ $"5A4E493E420A1243C97243C375BF66C2A93F503C5133C4F03330342F3830382D" -+ $"2927292A2C2C2D2E2DC2F2B7B1C3BEB5E1C358B5E1C4AA0A042C252927382D3B" -+ $"2B0A04364B334D3E5241500A0442463F48434A46480A042A4727492B4B2E490A" -+ $"04382D38303B2E3B2B0A04434A4358465646480A04332F334D364B362D160A10" -+ $"01052020230A1001052022120A00010030103701178400040A0101012010370A" -+ $"0B01032010370A0E0104201D250A0101072020230A00010030101C0117840004" -+ $"0A02010A2004080A0C010320101C0A0801092004080A00010030283901178400" -+ $"040A0401012028390A0601022028390A0A01032028390A000100302A20011784" -+ $"00040A030101202A200A050102202A200A090103202A200A12040C0D0E0F000A" -+ $"0003101211000A11010B00" -+}; -+ -+resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.links"; -+ -+resource(1, "BEOS:FILE_TYPES") message { -+ "types" = "text/html", -+ "types" = "application/x-vnd.Be-bookmark", -+ "types" = "application/x-vnd.Be.URL.http" -+}; -diff -urN links-2.8.org/Makefile.am links-2.8/Makefile.am ---- links-2.8.org/Makefile.am 2013-09-20 22:37:39.031457280 +0200 -+++ links-2.8/Makefile.am 2013-12-12 23:23:13.554172416 +0100 -@@ -4,7 +4,7 @@ - - man_MANS=links.1 - --EXTRA_DIST=$(man_MANS) atheos.cpp BRAILLE_HOWTO KEYS SITES descrip.mms *.opt PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* intl/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_extensions-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/japanese-medium-roman-sans-mono/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png pkg-config.m4 *.xpm *.ico *.rc mk-release-os2 mk-release-win mk-dos links.wis *.nsi -+EXTRA_DIST=$(man_MANS) atheos.cpp haiku.cpp BRAILLE_HOWTO KEYS SITES descrip.mms *.opt PATCH-gpm-1.20.0-smooth-cursor PATCH-libpng-1.2.18 mailcap.pl rebuild Links_logo.png Unicode/*.cp Unicode/[!C]* intl/[!C]* graphics/*.c graphics/arrow.png graphics/gen graphics/system_font/*.png graphics/font/century_extensions-medium-roman-serif-vari/*.png graphics/font/century_school-bold-roman-serif-vari/*.png graphics/font/century_school-medium-roman-serif-vari/*.png graphics/font/courier-medium-roman-serif-mono/*.png graphics/font/japanese-medium-roman-sans-mono/*.png graphics/font/symbol-medium-roman-sans-vari/*.png graphics/font/century_school-bold-roman-serif-vari/aliases graphics/font/century_school-medium-roman-serif-vari/aliases graphics/font/japanese-medium-roman-sans-mono/aliases graphics/font/symbol-medium-roman-sans-vari/aliases doc/links_cal/*.png doc/links_cal/*.html graphics/Makefile graphics/Fontmap graphics/clip.c graphics/links.xpm graphics/makefont graphics/pdf2html graphics/spacer.png pkg-config.m4 *.xpm *.ico *.rc mk-release-os2 mk-release-win mk-dos links.wis *.nsi links-haiku.rdef - - bin_PROGRAMS=links - -@@ -13,6 +13,17 @@ - else - endif - -+if HAIKU_GR -+links_LDADD=haiku.o -lbe $(STDCPPLIBS) -+EXTRA_links_DEPENDENCIES=links-haiku.rsrc -+# automake will not let us touch the binary after link -+# and install will not copy the attributes anyway... so do it after install -+install-exec-hook: -+ xres -o $(DESTDIR)$(bindir)/links$(EXEEXT) links-haiku.rsrc -+ mimeset $(DESTDIR)$(bindir)/links$(EXEEXT) -+else -+endif -+ - links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c dos.c drivers.c error.c file.c finger.c fn_impl.c font_inc.c framebuf.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c links_ic.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc codepage.inc entity.inc fbcommon.inc language.inc uni_7b.inc upcase.inc vpipe.inc - - dist-hook: -@@ -33,6 +44,12 @@ - atheos.o: atheos.cpp - $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c atheos.cpp - -+haiku.o: haiku.cpp -+ $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -o $@ -c $< -+ -+links-haiku.rsrc: links-haiku.rdef -+ rc -o $@ $< -+ - datadir = $(prefix)/@DATADIRNAME@ - LIBS = @LIBS@ - -diff -urN links-2.8.org/os_dep.c links-2.8/os_dep.c ---- links-2.8.org/os_dep.c 2013-09-20 23:16:38.037748736 +0200 -+++ links-2.8/os_dep.c 2013-12-12 21:48:36.256638976 +0100 -@@ -307,7 +307,7 @@ - - #endif - --#if defined(UNIX) || defined(WIN32) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) -+#if defined(UNIX) || defined(WIN32) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) || defined(HAIKU) - - #ifdef SIGWINCH - static void sigwinch(void *s) -@@ -573,7 +573,7 @@ - return xt; - } - --#elif defined(BEOS) || defined(ATHEOS) || defined(DOS) -+#elif defined(BEOS) || defined(ATHEOS) || defined(DOS) || defined(HAIKU) - - int is_xterm(void) - { -@@ -656,6 +656,12 @@ - if (!GetConsoleCP()) - force_g = 1; - #endif -+#ifdef HAIKU -+ if (getenv("TERM") == NULL) { -+ /* probably launched from Tracker or Deskbar, force graphics mode */ -+ force_g = 1; -+ } -+#endif - } - #endif - -@@ -958,7 +964,7 @@ - #endif - - --#if defined(UNIX) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) || defined(DOS) -+#if defined(UNIX) || defined(INTERIX) || defined(BEOS) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(OPENVMS) || defined(DOS) || defined(HAIKU) - - #if defined(BEOS) && defined(HAVE_SETPGID) - -@@ -1710,7 +1716,7 @@ - - #endif - --#if defined(UNIX) || defined(OS2) || defined(WIN32) || defined(INTERIX) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) -+#if defined(UNIX) || defined(OS2) || defined(WIN32) || defined(INTERIX) || defined(RISCOS) || defined(ATHEOS) || defined(SPAD) || defined(HAIKU) - - void terminate_osdep(void) - { -@@ -1727,7 +1733,7 @@ - - #if defined(BEOS) - --#include -+#include - - static int thr_sem_init = 0; - static sem_id thr_sem; -@@ -2466,6 +2472,13 @@ - return 0; - } - -+#elif defined(HAIKU) -+ -+int get_system_env(void) -+{ -+ return ENV_BE; -+} -+ - #elif defined(WIN32) - - int get_system_env(void) -@@ -2588,6 +2601,14 @@ - } - #endif - -+#ifdef HAIKU -+static int open_in_new_haiku(struct terminal *term, unsigned char *exe, unsigned char *param) -+{ -+ exec_new_links(term, cast_uchar "Terminal", exe, param); -+ return 0; -+} -+#endif -+ - #ifdef G - static int open_in_new_g(struct terminal *term, unsigned char *exe, unsigned char *param) - { -@@ -2637,6 +2658,9 @@ - #ifdef BEOS - {ENV_BE, open_in_new_be, TEXT_(T_BEOS_TERMINAL), TEXT_(T_HK_BEOS_TERMINAL)}, - #endif -+#ifdef HAIKU -+ {ENV_BE, open_in_new_haiku, TEXT_(T_BEOS_TERMINAL), TEXT_(T_HK_BEOS_TERMINAL)}, -+#endif - #ifdef G - {ENV_G, open_in_new_g, TEXT_(T_WINDOW), TEXT_(T_HK_WINDOW)}, - #endif -@@ -2685,6 +2709,9 @@ - #ifdef BEOS - if (!(environment & ENV_BE)) return 0; - #endif -+#ifdef HAIKU -+ if (!(environment & ENV_BE)) return 0; -+#endif - #ifdef G - if (F && drv->flags & GD_NO_OS_SHELL) return 0; - #endif -diff -urN links-2.8.org/os_dep.h links-2.8/os_dep.h ---- links-2.8.org/os_dep.h 2013-09-17 02:11:47.030932992 +0200 -+++ links-2.8/os_dep.h 2013-12-12 21:29:28.176685056 +0100 -@@ -29,7 +29,7 @@ - #define WIN32 - #elif defined(__INTERIX) - #define INTERIX --#elif defined(__BEOS__) || defined(__HAIKU__) -+#elif defined(__BEOS__) - #define BEOS - #elif defined(__riscos__) - #define RISCOS -@@ -41,6 +41,8 @@ - #define OPENVMS - #elif defined(__DJGPP) - #define DOS -+#elif defined(__HAIKU__) -+#define HAIKU - #else - #define UNIX - #endif -@@ -158,6 +160,25 @@ - - #include "beos.h" - -+#elif defined(HAIKU) -+ -+static inline int dir_sep(unsigned char x) { return x == '/'; } -+#define NEWLINE "\n" -+#define NO_ASYNC_LOOKUP /* async lookup works on BeOS but crashes the Haiku kernel */ -+#define FS_UNIX_RIGHTS -+#define FS_UNIX_SOFTLINKS -+#define FS_UNIX_USERS -+/* TODO: allocate new SYS_* or replace SYS_BEOS */ -+#define SYSTEM_ID SYS_BEOS -+#define SYSTEM_NAME "Haiku" -+#define DEFAULT_SHELL "/bin/sh" -+#define GETSHELL getenv("SHELL") -+#define NO_CTRL_Z -+#define SET_WINDOW_TITLE_UTF_8 -+#define SHARED_CONFIG_DIR "/etc/" -+#define NO_FORK_ON_EXIT -+#define ASSOC_BLOCK -+ - #elif defined(RISCOS) - - static inline int dir_sep(unsigned char x) { return x == '/' || x == '\\'; } -diff -urN links-2.8.org/os_depx.h links-2.8/os_depx.h ---- links-2.8.org/os_depx.h 2013-08-25 13:07:50.033030144 +0200 -+++ links-2.8/os_depx.h 2013-12-12 21:35:09.725614592 +0100 -@@ -184,6 +184,10 @@ - #endif - #endif - -+#ifdef HAIKU -+/* nothing so far */ -+#endif -+ - #ifdef OPENVMS - #if defined(__INITIAL_POINTER_SIZE) - #if __INITIAL_POINTER_SIZE == 64 -@@ -340,6 +344,9 @@ - #elif defined(GRDRV_ATHEOS) - #define loop_select ath_select - int ath_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); -+#elif defined(GRDRV_HAIKU) -+#define loop_select be_loop_select -+int be_loop_select(int n, fd_set *r, fd_set *w, fd_set *e, struct timeval *t); - #else - #define loop_select select - #endif