--- elinks-0.12~pre5.orig/debian/elinks-data.docs +++ elinks-0.12~pre5/debian/elinks-data.docs @@ -0,0 +1,4 @@ +AUTHORS +README +THANKS +TODO --- elinks-0.12~pre5.orig/debian/copyright +++ elinks-0.12~pre5/debian/copyright @@ -0,0 +1,104 @@ +This package was debianized by Peter Gervai on +Mon, 29 Nov 1999 12:16:46 +0100. + +It was downloaded from http://elinks.or.cz/ + +Upstream Authors: + + Jonas Fonseca + José Luis González González + Peter Wang + Petr Baudis + Mikulas Patocka + Miciah Dashiel Butler Masters + Witold Filipczyk + Sergei Borushevsky + Laurent Monin + Karsten Schölzel + Kalle Olavi Niemitalo + Fabio Bonelli + Cliff Cunnington + And may others (See AUTHORS file for complete list) + +Copyright: + + Copyright (C) 2003-2004, The ELinks Project + Copyright (C) 2002-2003, Laurent Monin + Copyright (C) 2001-2004, Petr Baudis + Copyright (C) 2000-2001, Kungliga Tekniska Högskolan + Copyright (C) 1999-2002, Mikulas Patocka + Copyright (C) 1996-2000, Michael R. Elkins + Copyright (C) 1995-2002, Jean-loup Gailly + Copyright (C) 1995-1997, 2000-2001, Free Software Foundation, Inc. + Copyright (C) 1995-1999, Cryptography Research, Inc. + Copyright (C) 1995, Patrick Powell + Copyright (C) 1991-2001, Unicode, Inc. + Copyright (C) 1991-1999, Microsoft, Inc. + +License: + + ELinks is licensed under the GNU GPLv2 (exceptions follow) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; unless explicitly stated otherwise + elsewhere (in the AUTHORS file), only version 2 of the License (not + version 3.x etc.) is the valid version of the GNU General Public + License for ELinks. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + with the Debian GNU/Linux distribution in the file + /usr/share/common-licenses/GPL-2; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + + src/osdep/getifaddrs.c and src/osdep/getifaddrs.h are licensed under + the 3 clause BSD license. A copy of the license is available in the + file /usr/share/common-licenses/BSD on Debian systems. + + The following files are under Public domain: src/util/md5.c + contrib/LinksOS2Icon.zip Unicode/entities.txt + + src/util/sha1.c and src/util/sha1.h are also available under the + Mozilla Public License v1.1 + + doc/tools/help2xml po/perl/msgaccel-check and po/perl/msgaccel-prepare + are under the ISC licence + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + Unicode/*.cp are licensed under The Unicode Consortium license + + This file is provided as-is by Unicode, Inc. (The Unicode Consortium). + No claims are made as to fitness for any particular purpose. No + warranties of any kind are expressed or implied. The recipient + agrees to determine applicability of information provided. If this + file has been provided on optical media by Unicode, Inc., the sole + remedy for any claim will be exchange of defective media within 90 + days of receipt. + + Unicode, Inc. hereby grants the right to freely use the information + supplied in this file in the creation of products supporting the + Unicode Standard, and to make copies of this file in any form for + internal or external distribution as long as this notice remains + attached. + +The Debian packaging is +Copyright (C) 1999-2007, Peter Gervai +Copyright (C) 2007-2009, Y Giridhar Appaji Nag and +is licensed under the GNU GPL, either version 2 of the License, or (at +your option) any later version; see `/usr/share/common-licenses/GPL-2'. --- elinks-0.12~pre5.orig/debian/changelog +++ elinks-0.12~pre5/debian/changelog @@ -0,0 +1,959 @@ +elinks (0.12~pre5-5ubuntu1) precise; urgency=low + + * Merge from Debian testing. Remaining changes: + - imdb.com/Find no longer works, fixing imdb url (LP: #524696) + * renamed 07_524696_fix_imdb_urls.diff to 08_524696_fix_imdb_urls.diff + - debian/elinks.config: Change Debian to Ubuntu, thanks to Y + Giridhar Appaji Nag (LP: #241022) + * Dropped changes: package is now in universe so these packages are available + again: + - drop libfsplib-dev, libtre-dev, libmozjs-dev from build-depends + (all universe) + - debian/rules: remove --enable-fsp + + -- Chuck Short Thu, 10 Nov 2011 12:19:52 +0000 + +elinks (0.12~pre5-5) unstable; urgency=low + + * Fix sparc64 compat. Thanks to Aurelien Jarno (Closes: #596139) + + -- Moritz Muehlenhoff Sat, 29 Oct 2011 17:03:02 +0200 + +elinks (0.12~pre5-4ubuntu1) precise; urgency=low + + * Merge from debian testing. + * Remaining changes: + - imdb.com/Find no longer works, fixing imdb url (LP: #524696) + * renamed 07_524696_fix_imdb_urls.diff to 08_524696_fix_imdb_urls.diff + - debian/elinks.config: Change Debian to Ubuntu, thanks to Y + Giridhar Appaji Nag (LP: #241022) + * Dropped changes: package is now in universe so these packages are available + again: + - drop libfsplib-dev, libtre-dev, libmozjs-dev from build-depends + (all universe) + - debian/rules: remove --enable-fsp + + -- Robie Basak Wed, 12 Oct 2011 14:14:16 +0100 + +elinks (0.12~pre5-4) unstable; urgency=low + + * Acknowledge NMUs, thanks Kumar! (Closes: #617713, Closes: #613475) + * Disable support for Spidermonkey. Javascript support has always been + an experimental feature and of limited use (since most websites + which make extensive use of Javascript usually involve further + features not available). Mozilla seems to focus on a standalone + Firefox these days and the libs are treated as second class + citizens. + * Update to standards version 3.9.2 (no changes necessary) + + -- Moritz Muehlenhoff Sat, 11 Jun 2011 17:08:17 +0200 + +elinks (0.12~pre5-3.2ubuntu1) oneiric; urgency=low + + * Merge from debian testing. Remaining changes: + - imdb.com/Find no longer works, fixing imdb url (LP: #524696) + * renamed 07_524696_fix_imdb_urls.diff to 08_524696_fix_imdb_urls.diff + - drop libfsplib-dev, libtre-dev, libmozjs-dev from build-depends + (all universe) + - debian/rules: remove --enable-fsp + - debian/elinks.config: Change Debian to Ubuntu, thanks to Y + Giridhar Appaji Nag (LP: #241022) + + -- Serge Hallyn Mon, 06 Jun 2011 11:42:27 -0500 + +elinks (0.12~pre5-3.2) unstable; urgency=medium + + * Non-maintainer upload. + * Add Ben Hutchings' patch to fix default cache control problem + (Closes: #617713) + + -- Kumar Appaiah Mon, 25 Apr 2011 08:54:09 -0500 + +elinks (0.12~pre5-3.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix offset in debian/patches/06_551238_SMJS-FTBFS.diff + (Closes: #613475) + + -- Kumar Appaiah Fri, 15 Apr 2011 18:00:17 -0500 + +elinks (0.12~pre5-3) unstable; urgency=low + + * First jab at fixing the spidermonkey heartbeat patch (Closes: #592466) + + -- Y Giridhar Appaji Nag Fri, 10 Sep 2010 14:03:00 +0530 + +elinks (0.12~pre5-2ubuntu3) oneiric; urgency=low + + * Rebuild for Perl 5.12. + + -- Colin Watson Sun, 08 May 2011 07:39:11 +0100 + +elinks (0.12~pre5-2ubuntu2) maverick; urgency=low + + * imdb.com/Find no longer works, fixing imdb url (LP: #524696) + + -- Clint Byrum Mon, 07 Jun 2010 17:07:46 -0700 + +elinks (0.12~pre5-2ubuntu1) lucid; urgency=low + + * Merge from debian testing. Remaining changes: LP: #510427 + - drop libfsplib-dev, libtre-dev, libmozjs-dev from build-depends + (all universe) + - debian/rules: remove --enable-fsp + - debian/elinks.config: Change Debian to Ubuntu, thanks to Y + Giridhar Appaji Nag (LP: #241022) + + -- Bhavani Shankar Wed, 20 Jan 2010 22:44:12 +0530 + +elinks (0.12~pre5-2) unstable; urgency=low + + * New patch 06_550868_SMJS-FTBFS.diff to fix FTBFS caused by removing + JS_SetBranchCallback. Patch thanks to Miciah Dashiel Butler Masters + (Closes: #551238) + * Update Standards-Version to 3.8.3 (No changes required) + * Modified 01_setup-bugs-FSSTND.diff to fix a typo error. + * Add ${misc:Depends} to all binary packages, fixes lintian warning + debhelper-but-no-misc-depends + + -- Y Giridhar Appaji Nag Sun, 10 Jan 2010 12:31:12 +0530 + +elinks (0.12~pre5-1ubuntu2) karmic; urgency=low + + * debian/elinks.config: Change Debian to Ubuntu, thanks to Y Giridhar Appaji + Nag (LP: #241022) + + -- Chuck Short Mon, 19 Oct 2009 15:32:47 -0400 + +elinks (0.12~pre5-1ubuntu1) karmic; urgency=low + + * Merge from debian unstable, remaining changes: LP: #399399 + - drop libfsplib-dev, libtre-dev, libmozjs-dev from build-depends + (all universe) + - debian/rules: remove --enable-fsp + + -- Bhavani Shankar Tue, 14 Jul 2009 23:04:34 +0530 + +elinks (0.12~pre5-1) unstable; urgency=low + + * New upstream release 0.12pre5 + + Fixes crash in case of OOM w/ SpiderMonkey enabled (Closes: #534835) + + Fixes crash - get regfree from libtre instead of libc (Closes: #532502) + * Update Standards-Version to 3.8.2 (no changes required) + * Enable finger support in elinks and elinks-lite (Closes: #535750) + * Remove dh_desktop, now deprecated and is a no-op. + + -- Y Giridhar Appaji Nag Sat, 11 Jul 2009 20:49:34 +0530 + +elinks (0.12~pre4-1ubuntu1) karmic; urgency=low + + * Merge from debian unstable, remaining changes: + - drop libfsplib-dev, libtre-dev, libmozjs-dev from build-depends + (all universe) + - debian/rules: remove --enable-fsp + + -- Michael Vogt Thu, 25 Jun 2009 15:58:44 +0200 + +elinks (0.12~pre4-1) unstable; urgency=low + + * New upstream release 0.12pre4 + + Refresh patches for new upstream release + + Includes asciidoc.py from AsciiDoc 7.1.2 (Closes: #526349) + + With GNUTLS 2.1.7 or later disable few TLS extensions -- helps + handshaking with SSLv3-only bugzilla.novell.com (Closes: #528661) + + Fixes crash while viewing RSS files (Closes: #514544) + + Prevents FTBFS with gnutls26 >= 2.7.x: Build-Depends: pkg-config to + use 'pkg-config gnutls' instead of 'libgnutls-config' (Closes: #529821) + * Compile elinks-lite with --without-tre + + -- Y Giridhar Appaji Nag Mon, 01 Jun 2009 16:38:57 +0530 + +elinks (0.12~pre3-2) unstable; urgency=low + + * Add libtre-dev to Build-Depends: to support wide chars regex search + (Closes: #522052) + + -- Y Giridhar Appaji Nag Tue, 31 Mar 2009 19:32:43 +0530 + +elinks (0.12~pre3-1) unstable; urgency=low + + * Update Maintainer to official Debian ID + * Remove DM-Upload-Allowed: yes + * Update Standards-Version to 3.8.1 (no changes required) + * New upstream release + + Fixes crash in RSS renderer (Closes: #514544) + + Refresh patches for 0.12~pre3 + * Update to debian/compat 6 and use dh_lintian instead of dh_installing + the override file. + * Use krb5-dev instead of heimdal-dev for GSSAPI (Closes: #488633) + + -- Y Giridhar Appaji Nag Tue, 31 Mar 2009 00:21:30 +0530 + +elinks (0.12~pre2.dfsg0-1ubuntu1) jaunty; urgency=low + + * Merge from Debian unstable. + * Remaining Ubuntu changes: + - Disable FSP for now, libfsplib-dev is in universe. + * Ubuntu changes dropped: + - debian/patches/13_fix_strings.diff: contrib/elinks.conf is no longer + shipped. + * Remove <> from the Build-Depends, they're in universe. + + -- Steve Kowalik Tue, 04 Nov 2008 17:29:30 +1100 + +elinks (0.12~pre2.dfsg0-1) unstable; urgency=low + + * New upstream release 0.12pre2 + + Renders UTF-8 properly (Closes: #331638) + + Fixes decompression bug with gzip + chunked (Closes: #486917) + + Can bind BS (8) and DEL (127) to different actions (Closes: #139984) + + ECMAScript support is largely considered stable (Closes: #428549) + * Refresh patches for 0.12pre2 + * Disable incomplete Guile and Python support in unstable + * Remove patch 14_debug_disable_Werror and disable debugging support + intended for development versions + * Disable features marked experimental (NNTP, EX mode and Bittorrent) + * Disable SMB support (libsmbclient is GPLv3+) + * Correct lots of licensing information in debian/copyright + * Adjust debian/watch file to handle dfsg and pre|rc releases + + -- Y Giridhar Appaji Nag Thu, 02 Oct 2008 23:54:53 +0530 + +elinks (0.12~pre1-1) experimental; urgency=low + + * New upstream release 0.12pre1 + + Refresh 14_debug_disable_Werror for 0.12pre1 + * Rename patches to be inline with those in unstable + + -- Y Giridhar Appaji Nag Sun, 21 Sep 2008 18:54:18 +0530 + +elinks (0.11.4-3) unstable; urgency=low + + * Remove /usr/share/doc/elinks from previous install during upgrade + and link to /usr/share/doc/elinks-data (Closes: #499347) + * Refresh patches (to use git diff instead of diff -Nur) and add + comments to patches. + * Refresh 04_436817_nostrip.diff for 0.11.4 (it leaves a .orig file + otherwise) + * Build-Depend on libgpm-dev instead of transitional libgpmg1-dev + * Update Standards-Version to 3.8.0, added a README.source file + + -- Y Giridhar Appaji Nag Sat, 20 Sep 2008 21:01:59 +0530 + +elinks (0.11.4-2) unstable; urgency=low + + * Don't let xmlto validate the XML files, just produce the manpage. + (Closes: #491820) + + -- Moritz Muehlenhoff Tue, 29 Jul 2008 22:39:55 +0200 + +elinks (0.11.4-1) unstable; urgency=low + + * New upstream release: + - Drop 01_asciidoc7compatible.diff, merged upstream + - Drop 03_417789-CVE-2007-2027.diff, merged upstream + - Drop 04_380347-entity_cache-overflow.diff, merged upstream + - Drop 07_local-CGI-query-fix.diff, merged upstream + - Drop 12_338402_cfmakeraw_exotic_term.diff, merged upstream + - Drop 13_fsp-display-dir.diff, merged upstream + - Update and renumber the remaining patches + + -- Moritz Muehlenhoff Sat, 21 Jun 2008 17:01:47 +0200 + +elinks (0.12~20080527-2) experimental; urgency=low + + * Re-enable --enable-debug (it is recommended for development versions of + ELinks and adds extra checks etc.) + * Patch 14_debug_disable_Werror.diff to remove -Werror explicitly because we + now use --enable-debug. + * Enable GSSAPI (Closes: #483403) + * Disable LMZA via --without-lzma (lzma-dev in Debian from 7-zip.org doesn't + work with ELinks). + + -- Y Giridhar Appaji Nag Thu, 29 May 2008 14:24:42 +0530 + +elinks (0.12~20080527-1) experimental; urgency=low + + * Update orig to new upstream snapshot as of 20080527 (Closes: #478156) + * Delete patches not necessary for 12~20080527 + + 09_464384_alignof_off_t_FBTFS.diff + + 10_bt_msg_id_FTBFS.diff + + 12_338402_cfmakeraw_exotic_term.diff + * Refresh patches for 12~20080527 + + 02_setup-bugs-FSSTND.diff + + 06_459467_ui.leds.enable_0.diff + + 08_436817_nostrip.diff + * Disable --enable-debug as it uses -Werror and causes too many FTBFSs. + Will look at the build logs manually and file bugs upstream for the + warnings that are serious. + + -- Y Giridhar Appaji Nag Tue, 27 May 2008 21:03:09 +0530 + +elinks (0.11.3-8ubuntu3) intrepid; urgency=low + + * Rebuild for libgpmg1 -> libgpm2 transistion. + + -- Steve Kowalik Tue, 22 Jul 2008 10:37:27 +1000 + +elinks (0.11.3-8ubuntu2) intrepid; urgency=low + + * debian/patches/13_fix_strings.diff: + - Fix spelling mistakes in contib/elinks.conf. Thanks to + Andy Matteson (LP: #64590) + + -- Chuck Short Fri, 20 Jun 2008 15:52:03 +0000 + +elinks (0.11.3-8ubuntu1) intrepid; urgency=low + + * Disable FSP for now, libfsplib-dev is in universe. + + -- Martin Pitt Wed, 04 Jun 2008 10:14:11 +0000 + +elinks (0.11.3-8) unstable; urgency=low + + * Fix bash-ism in debian/rules get-orig-source target. Thanks Raphael + Geissert (Closes: #477976) + * Update 13_fsp-display-dir.diff to workaround fsplib ABI dependency on + _FILE_OFFSET_BITS. Thanks Kalle Olavi Niemitalo + * Remove perl from Build-Depends, it is build-essential + + -- Y Giridhar Appaji Nag Wed, 21 May 2008 17:27:46 +0530 + +elinks (0.12~20080127-3) experimental; urgency=low + + * Rename 09_464384_AMD64_FBTFS.diff as 09_464384_alignof_off_t_FBTFS.diff + * Refresh 12_338402_cfmakeraw_exotic_term.diff for 0.12~20080127 + * Remove patch 13_fsp-display-dir.diff (not necessary for 0.12) + + -- Y Giridhar Appaji Nag Sun, 27 Apr 2008 02:00:57 +0530 + +elinks (0.11.3-7) unstable; urgency=low + + * Use '<<' versioning rather than '<=' for Conflicts/Replaces. Thanks Colin + Watson (Closes: #475520) + * Enable the FSP file transfer protocol (Closes: #478007) + + Patch 13_fsp-display-dir.diff to fix bug in directory listing + + -- Y Giridhar Appaji Nag Sun, 27 Apr 2008 01:36:11 +0530 + +elinks (0.11.3-6) unstable; urgency=low + + * Remove 11_303164_css_display_none.diff as it is useless without the fix + for upstream bug 722. + * Change ELinks category in desktop file from Categories=Utility;Network; to + Categories=Network;WebBrowser; Thanks Franklin PIAT + (Closes: #474393) + * Steal a few .desktop file improvements and translations from Ubuntu [from + Siegfried-Angel Gevatter Pujals (RainCT) ] + * Much improved packages descriptions + + -- Y Giridhar Appaji Nag Thu, 10 Apr 2008 13:34:13 +0530 + +elinks (0.11.3-5) unstable; urgency=low + + * Pass --enable-88-colors to configure for main build (Closes: #466483) + * Patch 11_303164_css_display_none.diff to handle display:none in CSS + (Closes: #303164) + * Patch 12_338402_cfmakeraw_exotic_term.diff to fix cfmakeraw() to not + disable XON/XOFF flow control (Closes: #338402) + * Remove linda overrides files + + -- Y Giridhar Appaji Nag Thu, 06 Mar 2008 12:11:51 +0530 + +elinks (0.12~20080127-2) experimental; urgency=low + + * Remove patch 07_local-CGI-query-fix.diff (Closes: #464073) + * Patch 09_464384_AMD64_FBTFS.diff to prevent FTBFS on AMD64 because of + -Werror. Thanks Kalle Olavi Niemitalo (Closes: #464384) + * Patch 10_bt_msg_id_FTBFS.diff to prevent FTBFS because of limited range + warning and -Werror (Closes: #465719). + + -- Y Giridhar Appaji Nag Thu, 28 Feb 2008 20:22:34 +0530 + +elinks (0.11.3-4) unstable; urgency=low + + * Add a DM-Upload-Allowed: yes field + * Update 02_setup-bugs-FSSTND.diff to prevent changing contrib/elinks.conf + (it is not used anymore). + * Update 06_459467_ui.leds.enable_0.diff to set leds.enable to default: 0 in + elinks.conf(5). + * Enable Ruby scripting support and install contrib/ruby as examples. + * Enable local CGI support. That was what 07_local-CGI-query-fix.diff about + anyway :) + * Use dh_install for installing lintian/linda overrides and desktop file. + This is cleaner than doing it in debian/rules via the 'install' program. + * Add libidn11-dev do Build-Depends, IDN isn't enabled otherwise even if it + not disabled by default + + -- Y Giridhar Appaji Nag Wed, 13 Feb 2008 23:09:08 +0530 + +elinks (0.12~20080127-1) experimental; urgency=low + + * Enable support for new protocols SMB and Bittorrent + * Enable Guile, Python, Ruby and Javascript scripting functionality + * Enable extra debugging support for this experimental release + * Enable local CGI and ex mode + * Add a warning in README.Debian about experimental features + * Remove patches (fixes already present in 0.12) + + 01_asciidoc7compatible.diff + + 04_380347-entity_cache-overflow.diff + + 05_257762-transparency-off.diff + * Refresh and update rest of the patches for 0.12 + * Modify save-stamp and clean-patched to save/restore files that are + modified during build + * Remove the get-orig-source target because it doesn't make sense for + packages based on snapshots. + * Thanks to أحمد المحمودي (Ahmed El-Mahmoudy) for the push + to create experimental packages and the patches at #408610. + + -- Y Giridhar Appaji Nag Sun, 03 Feb 2008 08:17:52 +0530 + +elinks (0.11.3-3) unstable; urgency=low + + * Remove 06_elinks.conf-parse-error.diff and use a minimal elinks.conf file + with only the user_agent setting. Thanks giggz for + the bug report and Kalle Olavi Niemitalo for suggestion (Closes: #460912) + * Rename patch 01_asciidoc-escape-FTBFS as 01_asciidoc7compatible to add a + "-a asciidoc7compatible" to ASCIIDOC_FLAGS. Thanks Kalle Olavi Niemitalo + for the suggestion. + * debian/copyright: Add 2008 to Debian packaging Copyright 'years'. + * debian/control: Remove superfluous ;a=summary suffix from gitweb URL in + Vcs-Browser: + * Really install elinks.desktop desktop file for elinks and elinks-lite + (remove elinks-lite.desktop, it is identical to elinks.desktop). + * Changed all patches from "diff -urNad" to "git diff". This will make it + easier to maintain the patches. Just modify the code in place and do a + "git diff > debian/patches/0X_foo.diff" + * Pass --enable-leds to configure. Set ui.leds.enable to 0 by default via + 06_459467_ui.leds.enable_0.diff, this solves #459467 better. Thanks to + أحمد المحمودي (Ahmed El-Mahmoudy) for the suggestion. + + -- Y Giridhar Appaji Nag Thu, 24 Jan 2008 17:38:29 +0530 + +elinks (0.11.3-2) unstable; urgency=low + + * Change Moritz's email ID in Uploaders to jmm@debian.org to be in sync with + his other packages + * Correction: Change Vcs-Svn in debian/control to Vcs-Git and VCS-Browser to + the gitweb URL + * Pass --disable-leds to configure, it causes a lot of wakeups on laptops. + Update 06_elinks.conf-parse-error.diff to comment ui.leds.enable option + (Closes: #459467) + * elinks-lite is Priority: extra (Policy Section 2.5: Priorities -- because + it conflicts with elinks, elinks-data and elinks-doc) + * elinks and elinks-lite Don't Provides: links and don't install a links + alternative (Closes: #154859) + * Patch debian/patches/08_436817_nostrip.diff to prevent the binaries from + being stipped unless dh_strip would want to (Closes: #436817) + + -- Y Giridhar Appaji Nag Mon, 14 Jan 2008 17:06:19 +0530 + +elinks (0.11.3-1) unstable; urgency=low + + * Adopted by Y Giridhar Appaji Nag (Closes: #451088) + + Add Co-maintainer Moritz Muehlenhoff to Uploaders + * Documentation is now built using sources, depends on the features + configured while building elinks. + * Remove superfluous m4 and bison Build-Depends. + * Arch indep part of elinks is large, moved it to elinks-data package + + Add lintian/linda overrides for elinks.1 man-page (installed by the + elinks-data package). + * New upstream release 0.11.3 (Closes: #429311) + + Don't crash while sorting thru bookmarks (Closes: #315886) + + German PO file corrections (Closes: #313696) + + Use off_t for file size in FTP listing (Closes: #403139) + * Add get-orig-source target that gets orig source and removes debian + directory, translation files and config.{log,status} etc. + * Change from DH_COMPAT 4 to debian/compat (5) + * Move debian/watch file to version 3 + * Bump up Standards-Version to 3.7.3 + + Updated menu files for the latest menu policy. + + debian/copyright: include all the major authors and copyright holders + listed in source files. ELinks is GPL2 only (Closes: #431211) + * Add Homepage: and Vcs-*: fields to debian/control + * maint-scripts: Remove debconf dependency and moving of elinks.conf. Old + transition code, not necessary anymore. + * DH_ALWAYS_EXCLUDE=.gitignore in debian/rules (Closes: #413911) + * Add debian/patches, but not using dpatch + + Patch 01_asciidoc-escape-FTBFS.diff: Escape characters for asciidoc + conversion (prevents FTBFS in make all-docs) + + Patch 02_setup-bugs-FSSTND.diff: Point bugs URL to debian.org and + remove FSSTND dir in setup.h etc. + + Patch 03_417789-CVE-2007-2027.diff: Patch for #417789 from Julien + Cristau made a diff. + + Patch 04_380347-entity_cache-overflow.diff: Prevent a buffer overflow + in entity_cache. Thanks Kalle Olavi Niemitalo for the fix + (Closes: #380347) + + Patch 05_257762-transparency-off.diff: Turn terminal transparency off + by default. Thanks Petr Baudis for the fix and Kalle Olavi Niemitalo + for a pointer to the fix (Closes: #257762) + + Patch 06_elinks.conf-parse-error.diff: create elinks-lite.conf, set + config.saving_style=3 and comment options that are not valid. + + Patch 07_local-CGI-query-fix.diff: Fix broken query parsing of file: + URIs for local CGI. + + -- Y Giridhar Appaji Nag Mon, 07 Jan 2008 00:10:17 +0530 + +elinks (0.11.1-1.5) unstable; urgency=high + + * Non-maintainer upload by testing security team. + * Fixed bug in http.c which could lead to secret information disclosure + via POST requests for https URLs (CVE-2007-5034) (Closes: #443914, #443891). + + -- Nico Golde Tue, 25 Sep 2007 13:31:18 +0200 + +elinks (0.11.1-1.4) unstable; urgency=high + + * Non-maintainer security upload. + * Don't look for gettext message catalogs in ../po/ (closes: #417789). + Thanks, Arnaud Giersch! Reference: CVE-2007-2027. + + -- Julien Cristau Sun, 29 Apr 2007 00:18:54 +0200 + +elinks (0.11.1-1.3) unstable; urgency=low + + * Non-maintainer upload. + * Fix FTBFS on GNU/kFreeBSD, patch by Petr Salinger (closes: #400872). + * Don't regenerate control at build-time, this is now forbidden by the + policy. + + -- Aurelien Jarno Sun, 4 Mar 2007 12:36:59 +0100 + +elinks (0.11.1-1.2) unstable; urgency=high + + * Non-maintainer upload. + * High-urgency upload for security bug fix. + * Configure with --disable-smb to fix security issue (CVE-2006-5925), + closes: #399188. + + -- Julien Cristau Mon, 27 Nov 2006 02:32:47 +0100 + +elinks (0.11.1-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Clean up properly in the clean target; patch from Bart Martens. + (Closes: #397859) + + -- Steinar H. Gunderson Fri, 17 Nov 2006 02:18:38 +0100 + +elinks (0.11.1-1) unstable; urgency=low + + * New upstream version + + -- Peter Gervai Wed, 24 May 2006 18:50:52 +0200 + +elinks (0.10.6-2) unstable; urgency=low + + * Depends on debconf | debconf-2.0 + + -- Peter Gervai Wed, 28 Sep 2005 20:41:49 +0200 + +elinks (0.10.6-1) unstable; urgency=low + + * New upstream release + * Really fix endless refreshing of documents (closes: #293298) + + -- Peter Gervai Sat, 17 Sep 2005 17:49:52 +0200 + +elinks (0.10.4-7) unstable; urgency=low + + * Enabled gnutls in elinks-lite per 3rd party psychological + pressure (Closes: #326855) + + -- Peter Gervai Wed, 7 Sep 2005 10:41:32 +0200 + +elinks (0.10.4-6) unstable; urgency=high + + * Recompile w/libc6 in sid (closes: #308869) + * Added autotools-dev in build-deps and try to update + basic autoconf files to support other archs + + -- Peter Gervai Fri, 13 May 2005 01:12:46 +0200 + +elinks (0.10.4-5) unstable; urgency=low + + * Removed smb config option from sample config file, not + necessary anyway (Closes: #307455) + * Added build-dep on smbclient, suggests smbclient + * Normal and lite both conflicts each other + * Enable html-highlighting + * Drop lite's big config (not strictly required) + * More elinks-lite optimalisation - less size + * Change user-agent string to debian specific + * Mess up debian/rules (almost called it "cleaning up") + (Closes: #308179) + + -- Peter Gervai Thu, 12 May 2005 00:46:26 +0200 + +elinks (0.10.4-4) unstable; urgency=low + + * Added elinks-lite: no extra dependencies (Closes: #178038, #218453) + + -- Peter Gervai Thu, 28 Apr 2005 17:50:23 +0200 + +elinks (0.10.4-3) unstable; urgency=low + + * _Really_ add the missing build-dep (Closes: #304803, #306246) + + -- Peter Gervai Wed, 27 Apr 2005 02:38:31 +0200 + +elinks (0.10.4-2) unstable; urgency=low + + * Disabled check to refuse run when root on the request of + the upstream. (Closes: #305739, #304876) + * Added missing build-dep (Closes: #304803, #306246) + * Fixed default config (Closes: #305017, #305628, #305004) + + -- Peter Gervai Sun, 24 Apr 2005 19:14:16 +0200 + +elinks (0.10.4-1) unstable; urgency=low + + * New Upstream release + * Disable SpiderMonkey because it is not useful right now (closes: #302505) + * Only read from /dev/stdin if no URL was given on the command line and + automatically allow special files to be read (closes: #296976, #297510) + * Fix repeatedly and endless refreshing of documents that triggers a + download (like sourceforge's download pages) (closes: #293298) + * Add watch file, thanks Hugo Haas + * Scrolling was heavily reworked during the 0.10 development phase and now + uses the correct width / height when scrolling (closes: #256533) + * Fix warning on 64-bit architectures (closes: #285684) + * Change verbose level to show warnings (closes: #303083) + * Include FAQ from http://elinks.or.cz/ (closes: #301861) + * Change FTP directory listing parser to Wget-based one due to licensing + issues (closes: #300889) + * Be more tolerant when handling values from the no_proxy environment + variable (closes: #218451) + * Explicitly define keyboard accelerators for buttons so that they + do not clash (closes: #270205) + + -- Peter Gervai Tue, 12 Apr 2005 23:46:12 +0200 + +elinks (0.10.2-3) unstable; urgency=low + + * Enable ECMAScript/JS engine SpiderMonkey + * Enable experimental Perl scripting + * Enable experimental NNTP handling + * Enable 256 color terminal handling + * Enable status blinkenlights ("leds") + * Refuse to run under root uid + + -- Peter Gervai Fri, 25 Feb 2005 12:47:10 +0100 + +elinks (0.10.2-2) unstable; urgency=low + + * Fixed bookmark problem (Closes: #296679) + + -- Peter Gervai Fri, 25 Feb 2005 11:48:03 +0100 + +elinks (0.10.2-1) unstable; urgency=low + + * New upstream version v0.10.2 + * Cleanups by Jonas Fonseca , debian dir + installed into upstream CVS: + * Only remove CVS files from packaging directory so the package can + be built from checked out sources + * Install elinks.conf from contrib/ + * Install documentation files about using ELinks from doc/ + * Remove more unrelevant files from contrib/ + * List docs in elinks.docs file + * Support for DEB_BUILD_OPTIONS + * Update and cleanup debian/rules + * Pass -force-html in the debian/mime mailcap entries so problems with + viewing files without an extension are fixed + * Enhance desktop file and install it in /usr/share/applications/ which + seems to be the new standard + * Many problems related to mangleme tools fixed (closes: #277283) + * Documentation updates (closes: #215619) + * Fix IPv6 URI parsing (closes: #173378) + * Send the previous URL as referer by default (closes: #198684) + * Bump up the dependency on dephelper (closes: #247280) + * Force dumping to stdout when ELinks connects to a pipe instead of a + terminal, even if the boolean argument to -dump is zero (closes: #231663) + * Suggest filename based on Content-Disposition (closes: #171571) + * Update the manpage and add -stdin command line option for compatibility + even though reads from stdin are autodetected (closes: #281010) + * Add support for recognizing mixed-case URI schemes (closes: #242140) + * Fix xterm detection code, thanks Adam Borowski (closes: #228977) + * Fix handling of id names in preformatted content (closes: #219331) + * Fix assertion failure when searching in empty documents (closes: #238281) + * Remove www-browser alternative, thanks Andreas Metzler (closes: #247495) + * Fix uncompressing of .gz files on download (closes: #221207) + + -- Peter Gervai Mon, 21 Feb 2005 15:21:55 +0100 + +elinks (0.9.3-1) unstable; urgency=low + + * New upstream release + + -- Peter Gervai Sun, 21 Nov 2004 14:08:25 +0100 + +elinks (0.9.1+0.9.2rc4-2) unstable; urgency=low + + * Fix naming (it's rc [release candidate] and not pre[release]) + * Fix rules to use /etc/elinks for configure (closes: #267962) + + -- Peter Gervai Wed, 11 Aug 2004 15:57:53 +0200 + +elinks (0.9.1+0.9.2pre4-1) unstable; urgency=low + + * New upstream version 0.9.2pre4 + * Remove kderemove from menu (closes: #264402) + * Recompiled with gnutls11 (closes: #263633) + * FTBFS on GNU/Hurd (and GNU/k*BSD) (closes: #262350) + + -- Peter Gervai Sun, 8 Aug 2004 23:48:47 +0200 + +elinks (0.9.1+0.9.2pre3-1) unstable; urgency=low + + * New upstream pre-release 0.9.2pre3. (closes: #262306) + * Don't read nonexistant hooks.lua (closes: #231760) + * README.Debian updated by "I forgot to read the docs" + questions (closes: #209046, #234589) + * Fix accept-charset problem (closes: #242524) + * Updated build-deps based on buildd's hints, removed xlib-dev + (closes: #231646) + * Changed 'make prefix=' to 'make DESTDIR=' in rules (closes: #234991) + * Removed outdated example dir (now included upstream) + * Removed debconf warning about cookies (closes: #235816) + + -- Peter Gervai Fri, 30 Jul 2004 23:38:42 +0200 + +elinks (0.9.1-1) unstable; urgency=low + + * New upstream release. (Closes: #226941) + * Features: Standard, IPv6, gzip, bzip2, SSL (GnuTLS), MIME (Option + system, Mailcap, Mimetypes files), Bookmarks, Cookies, Forms History, + Global History, URI rewrite, Scripting (Lua) + * Droppend dep on xlibs (no xterm title restore) (Partially fixing + #218453) + * Depends on newer gnutls10 and liblua50 + + -- Peter Gervai Wed, 21 Jan 2004 22:13:45 +0100 + +elinks (0.4.2.99-1) unstable; urgency=low + + * New upstream release 0.4.3rc2 + * Manpage fixed (Closes: #210305, #212491) + * No segfault when deleting bookmarks (Closes: #193119) + * Install www-browser alternative (Closes: #184981) + * ~user handled better (Closes: #181731) + * Overwrite truncates file first (Closes: #186052) + * Links/elinks selection now handled automagically (Closes: #168692) + * Elinks starts with the "goto URL" dialog, not a blank + screen (Closes: #206932) + * Remove CVS entries from package + * Numerous upstream bugfixes. + + -- Peter Gervai Thu, 9 Oct 2003 00:24:41 +0200 + +elinks (0.4.2-1) unstable; urgency=low + + * New upstream release 0.4.2. + * New style config UI (Closes: #167928, #169908) + * Includes spanish debconf template (Closes: #158576) + * Fixes linking problem with some renegade lib (Closes: #176401) + * Fixes 'bad url syntax' problem (Closes: #177335) + * Defines as /usr/bin/links alternative (Closes: #164058, #168692) + + -- Peter Gervai Thu, 30 Jan 2003 01:09:34 +0100 + +elinks (0.3.20021004-1) unstable; urgency=low + + * New upstream release 0.4pre17 + * Config moved into /etc/elinks/ (closes: #158666) + + -- Peter Gervai Fri, 4 Oct 2002 15:58:19 +0200 + +elinks (0.3.20020825-2) unstable; urgency=low + + * Spanish debconf translation (closes: #158576) + + -- Peter Gervai Wed, 28 Aug 2002 12:04:19 +0200 + +elinks (0.3.20020825-1) unstable; urgency=low + + * New upstream version 0.4pre14 + * Fixed a bug when elinks falls into infinite waiting loops + * Compiled against new gnutls package (patched upstream to + use gnutls/*.h... it used to work...) + + -- Peter Gervai Sun, 25 Aug 2002 12:07:21 +0200 + +elinks (0.3.20020808-1) unstable; urgency=low + + * New upstream version 0.4pre12 + * Fixed lots of bugs, including stopping in the middle of a long + transfer ("slashdot problem", closes: #154938), cookie expiration + (closes: #154664), self referer problem (closes: #154778). + * Removed duplicate contrib/ dirs (bug in upstream's cvs, Closes: #154860) + + -- Peter Gervai Thu, 8 Aug 2002 12:24:39 +0200 + +elinks (0.3.20020711-2) unstable; urgency=low + + * Disabled default cookie saving to disk due Bug#154664, because + ELinks does not expire cookies all the time, and it causes + problems with remembered logins which should have been forgotten. + You have to change ~/.elinks/elinks.conf though. + + -- Peter Gervai Mon, 29 Jul 2002 22:21:02 +0200 + +elinks (0.3.20020711-1) unstable; urgency=low + + * Version 0.4pre12 upstream. + * Package separated from links. This package is _preferred_ to + the package 'links', because this contains plenty of useful + features, including cookies (save too), referer handling, + advanced configuration, LUA script language, and so on. + * Before reporting bugs please check against the bugs of + 'links' and 'links-ssl'. Thank you. + + -- Peter Gervai Thu, 11 Jul 2002 17:38:09 +0200 + +links-ssl (0.96.20020711-1) unstable; urgency=low + + * New upstream release (v0.7pre12) + * Fixes DNS bug (closes: ...) + * Fix some crashes + + -- Peter Gervai Thu, 11 Jul 2002 12:28:17 +0200 + +links-ssl (0.96.20020607-1) unstable; urgency=low + + * New upstream release (v0.4pre7) + + -- Peter Gervai Fri, 7 Jun 2002 17:28:18 +0000 + +links-ssl (0.96.20020409-2) unstable; urgency=low + + * Using new lua libraries (liblua40 / liblualib40) (closes: #141327) + * Updated Readme (closes: #141542) + + -- Peter Gervai Mon, 15 Apr 2002 18:42:32 +0200 + +links-ssl (0.96.20020409-1) unstable; urgency=low + + * New upstream version (eLinks 04.pre5) + * Again, plenty of bugs fixed and some features added (including, + but not limited to history search and selection). + * Now handles spaces in filenames (closes: #92079) + * Fixes stacked FTP commands (closes: #100861), but please reopen + bug if it doesn't work correctly (I can't test it)! + + -- Peter Gervai Tue, 9 Apr 2002 20:17:02 +0200 + +links-ssl (0.96.20020319-2) unstable; urgency=low + + * I try to catch up with Lua packages, fixed build-deps (twice) + (Now Lua should work on non i386 too) + + -- Peter Gervai Wed, 20 Mar 2002 02:08:55 +0100 + +links-ssl (0.96.20020319-1) unstable; urgency=low + + * New upstream version (eLinks 0.4pre2) + * Plenty of patches included now in eLinks, most of them + provide new features, some fixes bugs (some creates them :-)) + (many features hidden unless you check the docs) + * HTTP authentication (password) support (closes: #107480) + * Nonexistant frame segfault fix (closes: #128877) + * Included Links-lua docs + * Fixed rules (closes: #127206), description (closes: #127203) + + -- Peter Gervai Tue, 19 Mar 2002 00:29:44 +0100 + +links-ssl (0.96.20011222-1.1) unstable; urgency=low + + * Non-maintainer upload + * Fixes Build-Dependancy for lua-dev -> liblua4-dev (closes: #126290) + + -- Joel Baker Sun, 17 Feb 2002 13:46:36 -0700 + +links-ssl (0.96.20011225-1) unstable; urgency=low + + * New upstream version (eLinks 0.2). + * Minor bugfixes, mostly cosmetics. + + -- Peter Gervai Tue, 25 Dec 2001 02:29:05 +0100 + +links-ssl (0.96.20011222-1) unstable; urgency=low + + * Changed to packaging the actively developed branch of Links, + which includes Lua patches and other goodies. Unless it breaks + or behaves unacceptable I try to keep this packaged, as the original + release does not get its bugs fixed no matter what.... + * Lots of bugfixes, see Changelog + * Fixed config file example of gif to use mime-type (closes: #125661) + + -- Peter Gervai Sat, 22 Dec 2001 01:22:51 +0100 + +links-ssl (0.96-1) unstable; urgency=low + + * New upstream release + + -- Peter Gervai Wed, 4 Jul 2001 00:49:37 +0200 + +links-ssl (0.95.1-3) unstable; urgency=low + + * Changed links.desktop to links-ssl.desktop + * links-ssl now provides links (closes: #102600) + + -- Peter Gervai Wed, 27 Jun 2001 21:10:41 +0200 + +links-ssl (0.95.1-2) unstable; urgency=high + + * Now everyone see I never tried KDE :) desktop file fixed + (closes: #101964) + + -- Peter Gervai Sat, 23 Jun 2001 12:17:50 +0200 + +links-ssl (0.95.1-1) unstable; urgency=low + + * New upstream version 0.96pre7 + * Build depends libgpmg1-dev [!hurd-i386] (closes: #99961, #95977) + * Install KDE menu (closes: #96494) + + -- Peter Gervai Fri, 8 Jun 2001 00:25:45 +0200 + +links-ssl (0.95-3) unstable; urgency=low + + * fixes SIGSEGV due ssl libs + + -- Peter Gervai Mon, 5 Mar 2001 14:28:17 +0100 + +links-ssl (0.95-2) unstable; urgency=low + + * Rebuilt using libssl096 (closes: #82079) + * Fixed build dependency on libssl096-dev and + libgpmg1-dev (closes: #82080) + * Hopefully not killing the Bugfree(tm) katie install + mechanism by using consistent maintaner address. ;-) + + -- Peter Gervai Tue, 16 Jan 2001 19:58:19 +0100 + +links-ssl (0.95-1) unstable; urgency=low + + * New upstream version. + * build depends on debhelper (closes: #81231) + + -- Peter Gervai Thu, 4 Jan 2001 03:15:52 +0100 + +links-ssl (0.94-0pre9) unstable; urgency=low + + * New upstream version. + * Changelog split from links (-plain) + * Removed "unofficial" patches to match upstream version, as + the author seems to be working again and including submitted + patches to mainstream. (closes: #80005, #79853) + * Enter key now submits again (closes: #75225) + * Pathless URL's aren't cut (closes: #75546) + * Different xterm detection (closes: #79687) + * Updated manpage + + -- Peter Gervai Wed, 3 Jan 2001 19:00:58 +0100 + +Local variables: +mode: debian-changelog +End: + --- elinks-0.12~pre5.orig/debian/elinks-lite.menu +++ elinks-0.12~pre5/debian/elinks-lite.menu @@ -0,0 +1,9 @@ +?package(elinks-lite): \ + needs="text" \ + section="Applications/Network/Web Browsing" \ + title="ELinks WWW browser (Lightweight)" \ + command="/usr/bin/elinks" \ + hints="Web browsers" \ + description="ELinks is a character mode browser with support for \ + rendering tables and frames, background downloads among other \ + features." --- elinks-0.12~pre5.orig/debian/elinks.install +++ elinks-0.12~pre5/debian/elinks.install @@ -0,0 +1 @@ +debian/elinks.desktop usr/share/applications --- elinks-0.12~pre5.orig/debian/elinks.prerm +++ elinks-0.12~pre5/debian/elinks.prerm @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +case "$1" in + remove) + update-alternatives --quiet --remove www-browser /usr/bin/elinks + ;; + upgrade|failed-upgrade|deconfigure) + ;; + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +#DEBHELPER# + +exit 0 --- elinks-0.12~pre5.orig/debian/elinks.config +++ elinks-0.12~pre5/debian/elinks.config @@ -0,0 +1,17 @@ +## ELinks configuration file +## See elinks.conf(5) and the output of "elinks -config-dump" for a list +## of all the supported options, their possible values and the defaults. + + ## protocol.http.user_agent + # Change the User Agent ID. That means identification string, which + # is sent to HTTP server when a document is requested. The 'textmode' + # token in the first field is our silent attempt to establish this as + # a standard for new textmode user agents, so that the webmasters can + # have just a single uniform test for these if they are ie. pushing + # some lite version to them automagically. + # %v in the string means ELinks version + # %s in the string means system identification + # %t in the string means size of the terminal + # %b in the string means number of bars displayed by ELinks + # Use " " if you don't want any User-Agent header to be sent at all. + set protocol.http.user_agent = "ELinks/%v (textmode; Ubuntu; %s; %t-%b)" --- elinks-0.12~pre5.orig/debian/elinks-lite.prerm +++ elinks-0.12~pre5/debian/elinks-lite.prerm @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +case "$1" in + remove) + update-alternatives --quiet --remove www-browser /usr/bin/elinks + ;; + upgrade|failed-upgrade|deconfigure) + ;; + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +#DEBHELPER# + +exit 0 --- elinks-0.12~pre5.orig/debian/elinks-lite.postinst +++ elinks-0.12~pre5/debian/elinks-lite.postinst @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + update-alternatives --quiet \ + --install /usr/bin/www-browser www-browser /usr/bin/elinks 35 \ + --slave /usr/share/man/man1/www-browser.1.gz www-browser.1.gz /usr/share/man/man1/elinks.1.gz + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +#DEBHELPER# + +exit 0 --- elinks-0.12~pre5.orig/debian/control +++ elinks-0.12~pre5/debian/control @@ -0,0 +1,101 @@ +Source: elinks +Section: web +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Y Giridhar Appaji Nag +Uploaders: Moritz Muehlenhoff +Build-Depends: debhelper (>= 6.0.7~), libtre-dev, libgnutls-dev, libidn11-dev, + libfsplib-dev, libgpm-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], + liblua50-dev, liblualib50-dev, libbz2-dev, libexpat1-dev (>= 1.95.6), + libperl-dev, ruby, ruby1.8-dev, libkrb5-dev, gettext, + autotools-dev, python, xmlto, docbook-utils, pkg-config +Standards-Version: 3.9.2 +Homepage: http://elinks.cz/ +Vcs-Git: git://git.debian.org/git/collab-maint/elinks.git +Vcs-Browser: http://git.debian.org/?p=collab-maint/elinks.git + +Package: elinks +Architecture: any +Depends: ${shlibs:Depends}, elinks-data (= ${source:Version}), ${misc:Depends} +Suggests: elinks-doc +Provides: www-browser +Conflicts: elinks-lite +Description: advanced text-mode WWW browser + ELinks is a feature-rich program for browsing the web in text mode. It is + like enhanced Lynx and Links. The most noteworthy features of ELinks are: + . + * Lots of protocols (local files, finger, HTTP(S), FTP, IPv4/6 etc.) + * Internationalized domain names + * Persistent cookies, HTTP authentication and proxy authentication + * Tabbed browsing, good looking menus and dialogs, and key-binding manager + * History browsing and typeahead searches + * Forms history and completion, and history in commonly used input dialogs + * CSS support and support for browser scripting (Perl, Lua, Guile etc.) + * Tables and frames rendering, and configurable color support + * Compressed and background (non-blocking) downloads, and download resuming + +Package: elinks-data +Architecture: all +Depends: ${misc:Depends} +Recommends: elinks (= ${source:Version}) +Conflicts: elinks (<< 0.11.3-1), elinks-lite +Replaces: elinks (<< 0.11.3-1) +Description: advanced text-mode WWW browser - data files + ELinks is a feature-rich program for browsing the web in text mode. It is + like enhanced Lynx and Links. The most noteworthy features of ELinks are: + . + * Lots of protocols (local files, finger, HTTP(S), FTP, IPv4/6 etc.) + * Internationalized domain names + * Persistent cookies, HTTP authentication and proxy authentication + * Tabbed browsing, good looking menus and dialogs, and key-binding manager + * History browsing and typeahead searches + * Forms history and completion, and history in commonly used input dialogs + * CSS support and support for browser scripting (Perl, Lua, Guile etc.) + * Tables and frames rendering, and configurable color support + * Compressed and background (non-blocking) downloads, and download resuming + . + This package contains the data files that are necessary to use ELinks. + +Package: elinks-doc +Section: doc +Architecture: all +Depends: ${misc:Depends} +Suggests: elinks +Conflicts: elinks (<< 0.11.3-1), elinks-lite (<< 0.11.3-1) +Description: advanced text-mode WWW browser - documentation + ELinks is a feature-rich program for browsing the web in text mode. It is + like enhanced Lynx and Links. The most noteworthy features of ELinks are: + . + * Lots of protocols (local files, finger, HTTP(S), FTP, IPv4/6 etc.) + * Internationalized domain names + * Persistent cookies, HTTP authentication and proxy authentication + * Tabbed browsing, good looking menus and dialogs, and key-binding manager + * History browsing and typeahead searches + * Forms history and completion, and history in commonly used input dialogs + * CSS support and support for browser scripting (Perl, Lua, Guile etc.) + * Tables and frames rendering, and configurable color support + * Compressed and background (non-blocking) downloads, and download resuming + . + This package contains the documentation and manuals for ELinks. + +Package: elinks-lite +Priority: extra +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Suggests: elinks-doc +Provides: www-browser +Conflicts: elinks +Description: advanced text-mode WWW browser - lightweight version + ELinks is a feature-rich program for browsing the web in text mode. It is + like enhanced Lynx and Links. The most noteworthy features of ELinks are: + . + * Lots of protocols (local files, finger, HTTP(S), FTP, IPv4/6 etc.) + * Persistent cookies, HTTP authentication and proxy authentication + * Tabbed browsing, good looking menus and dialogs, and key-binding manager + * History browsing and typeahead searches + * Tables and frames rendering, and configurable color support + * Compressed and background (non-blocking) downloads, and download resuming + . + This lite version contains no scripting or extra features but doesn't + depend on other libraries either, so it is useful for small systems. + --- elinks-0.12~pre5.orig/debian/watch +++ elinks-0.12~pre5/debian/watch @@ -0,0 +1,4 @@ +version=3 + +opts=dversionmangle=s/[~](pre\d+|rc\d+)\.dfsg\d+$/$1/ \ + http://elinks.or.cz/download/elinks-([\d]+.*)\.tar\.gz --- elinks-0.12~pre5.orig/debian/elinks.mime +++ elinks-0.12~pre5/debian/elinks.mime @@ -0,0 +1,2 @@ +text/html; /usr/bin/elinks -force-html %s; needsterminal; description=HTML Text; nametemplate=%s.html; priority=4 +text/html; /usr/bin/elinks -force-html -dump %s; copiousoutput; description=HTML Text; nametemplate=%s.html; priority=3 --- elinks-0.12~pre5.orig/debian/rules +++ elinks-0.12~pre5/debian/rules @@ -0,0 +1,233 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# This has to be exported to make some magic below work. +export DH_OPTIONS + +export DH_ALWAYS_EXCLUDE=.gitignore + +version=`dpkg-parsechangelog -ldebian/changelog | grep 'Version: ' | sed 's/Version: //g'` + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +CFLAGS_COMMON=-g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS_COMMON += -O0 + CFLAGS_LITE= +else + CFLAGS_COMMON += -O2 + CFLAGS_LITE=-Os -fno-inline +endif + +confopts = --prefix=/usr \ + --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info \ + --sysconfdir=/etc/elinks \ + --without-lzma \ + --without-openssl \ + --without-x \ + --enable-finger \ + --with-gnutls=/usr + +confopts_main = $(confopts) \ + --disable-nntp \ + --enable-88-colors \ + --enable-256-colors \ + --enable-leds \ + --enable-html-highlight \ + --enable-fsp \ + --disable-smb \ + --with-perl \ + --without-guile \ + --without-python \ + --with-ruby \ + --with-gssapi \ + --enable-cgi \ + --disable-exmode \ + --disable-bittorrent \ + --disable-debug \ + --without-spidermonkey + +confopts_lite = $(confopts) \ + --disable-nntp \ + --disable-256-colors \ + --disable-leds \ + --disable-nls \ + --disable-formhist \ + --disable-xbel \ + --disable-data \ + --disable-uri-rewrite \ + --disable-smb \ + --disable-mouse \ + --disable-marks \ + --disable-css \ + --disable-backtrace \ + --disable-sm-scripting \ + --enable-fastmem \ + --enable-small \ + --without-gpm \ + --without-perl \ + --without-spidermonkey \ + --without-zlib \ + --without-bzlib \ + --without-idn \ + --without-lua \ + --without-tre + +save-upstream: patch save-stamp +patch: patch-stamp +patch-stamp: + mkdir -p debian/patched + for pfile in debian/patches/*.diff; do \ + [ -f "$$pfile" ] || continue; \ + pname="$$(basename $$pfile .diff)"; \ + [ ! -f "debian/patched/$$pname.patched" ] || continue; \ + echo "### Applying patch $$pname"; \ + patch -p1 -N < $$pfile; \ + cp -f "$$pfile" "debian/patched/$$pname.patched"; \ + done + touch $@ + +save-stamp: + dh_testdir + rm -f debian/elinks.conf + cat debian/elinks.config | sed "s/%v/$(version)/g" > debian/elinks.conf + rm -f debian/elinks-lite.conf + cat debian/elinks.config | sed "s/%v/$(version)-lite/g" > debian/elinks-lite.conf + # Add here commands to configure the package. +ifneq "$(wildcard /usr/share/misc/config.sub)" "" + [ ! -f config/config.sub ] || mv -f config/config.sub config/config.sub.ups + cp -f /usr/share/misc/config.sub config/config.sub +endif +ifneq "$(wildcard /usr/share/misc/config.guess)" "" + [ ! -f config/config.guess ] || mv -f config/config.guess config/config.guess.ups + cp -f /usr/share/misc/config.guess config/config.guess +endif + [ ! -f config.h ] || mv -f config.h config.h.ups + [ ! -f Makefile.config ] || mv -f Makefile.config Makefile.config.ups + [ ! -f doc/man/man1/elinks.1.in ] || cp -af doc/man/man1/elinks.1.in doc/man/man1/elinks.1.in.ups + [ ! -f doc/man/man5/elinks.conf.5 ] || cp -af doc/man/man5/elinks.conf.5 doc/man/man5/elinks.conf.5.ups + [ ! -f doc/man/man5/elinkskeys.5 ] || cp -af doc/man/man5/elinkskeys.5 doc/man/man5/elinkskeys.5.ups + touch $@ + +#Architecture +build: build-arch build-indep + +build-arch: build-arch-stamp +build-arch-stamp: patch-stamp save-stamp + mkdir $(CURDIR)/build-main && cd $(CURDIR)/build-main && \ + $(CURDIR)/configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ + $(confopts_main) CFLAGS="$(CFLAGS_COMMON)" LDFLAGS="-Wl,-z,defs" + $(MAKE) -C $(CURDIR)/build-main + mkdir $(CURDIR)/build-lite && cd $(CURDIR)/build-lite && \ + $(CURDIR)/configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ + $(confopts_lite) CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_LITE)" LDFLAGS="-Wl,-z,defs" + $(MAKE) -C $(CURDIR)/build-lite + touch $@ + +build-indep: build-indep-stamp +build-indep-stamp: patch-stamp save-stamp + $(MAKE) -C $(CURDIR)/build-main/doc all-docs + touch $@ + +clean: clean-patched unpatch +clean-patched: + dh_testdir + dh_testroot + rm -f build-arch-stamp build-indep-stamp save-stamp + rm -rf build-lite build-main + [ ! -f doc/man/man5/elinkskeys.5.ups ] || mv -f doc/man/man5/elinkskeys.5.ups doc/man/man5/elinkskeys.5 + [ ! -f doc/man/man5/elinks.conf.5.ups ] || mv -f doc/man/man5/elinks.conf.5.ups doc/man/man5/elinks.conf.5 + [ ! -f doc/man/man1/elinks.1.in.ups ] || mv -f doc/man/man1/elinks.1.in.ups doc/man/man1/elinks.1.in + [ ! -f Makefile.config.ups ] || mv -f Makefile.config.ups Makefile.config + [ ! -f config.h.ups ] || mv -f config.h.ups config.h + [ ! -f config/config.guess.ups ] || mv -f config/config.guess.ups config/config.guess + [ ! -f config/config.sub.ups ] || mv -f config/config.sub.ups config/config.sub + rm -f debian/elinks-lite.conf + rm -f debian/elinks.conf + rm -rf debian/tmp.elinks-data + rm -rf docbook2html-dir + dh_clean + +unpatch: + for pfile in debian/patched/*.patched ; do \ + [ -f "$$pfile" ] || continue; \ + pname="$$(basename $$pfile .patched)"; \ + [ -f "debian/patches/$$pname.diff" ] || continue; \ + echo "### Reverting patch $$pname"; \ + patch -p1 -N -R < $$pfile; \ + rm -f "debian/patched/$$pname.patched"; \ + done + rm -rf debian/patched patch-stamp + +install: install-indep install-arch +install-indep: + dh_testdir + dh_testroot + dh_clean -k -i + dh_installdirs -i + # Move elinks arch-indep from temp location to elinks-data + mv -f $(CURDIR)/debian/tmp.elinks-data/usr $(CURDIR)/debian/elinks-data/ + # Install elinks documentation, remove manpages (already installed in + # elinks-data) + $(MAKE) -C build-main/doc DESTDIR=$(CURDIR)/debian/elinks-doc install-doc + mv -f $(CURDIR)/debian/elinks-doc/usr/share/doc/elinks $(CURDIR)/debian/elinks-doc/usr/share/doc/elinks-doc + rm -rf $(CURDIR)/debian/elinks-doc/usr/share/man + dh_install -i + +install-arch: + dh_testdir + dh_testroot + dh_clean -k -s + # Install elinks binaries and elinks.conf + $(MAKE) -C build-main DESTDIR=$(CURDIR)/debian/elinks install + install -o root -g root -p -D -m 0644 $(CURDIR)/debian/elinks.conf \ + $(CURDIR)/debian/elinks/etc/elinks/elinks.conf + # Install elinks-lite binaries and elinks.conf + $(MAKE) -C build-lite DESTDIR=$(CURDIR)/debian/elinks-lite install + install -o root -g root -p -D -m 0644 $(CURDIR)/debian/elinks-lite.conf \ + $(CURDIR)/debian/elinks-lite/etc/elinks/elinks.conf + # Move elinks arch-indep parts to temp location for elinks-data + mkdir -p $(CURDIR)/debian/tmp.elinks-data/usr/ + mv -f $(CURDIR)/debian/elinks/usr/share $(CURDIR)/debian/tmp.elinks-data/usr/ + rm -f $(CURDIR)/debian/tmp.elinks-data/usr/share/locale/locale.alias + dh_link -pelinks usr/share/doc/elinks-data usr/share/doc/elinks + dh_install -s + dh_lintian -s + +# Must not depend on anything. This is to be called by +# binary-arch/binary-indep +# in another 'make' thread. +binary-common: + dh_testdir + dh_testroot + dh_installchangelogs -Nelinks NEWS + dh_installdocs + dh_installexamples + dh_installmenu + dh_installmime + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture independant packages using the common target. +binary-indep: build-indep install-indep + $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common + +# Build architecture dependant packages using the common target. +binary-arch: build-arch install-arch + $(MAKE) -f debian/rules DH_OPTIONS=-s binary-common + +binary: binary-arch binary-indep +.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch patch unpatch save-upstream --- elinks-0.12~pre5.orig/debian/elinks.desktop +++ elinks-0.12~pre5/debian/elinks.desktop @@ -0,0 +1,19 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=ELinks Web Browser +Name[ca]=Navegador web ELinks +Name[de]=ELinks Webbrowser +Name[es]=Navegador web ELinks +Categories=Network;WebBrowser; +GenericName=Web Browser +GenericName[ca]=Navegador web +GenericName[de]=Webbrowser +GenericName[es]=Navegador web +Comment=Browse the web in text mode +Comment[ca]=Navegeu per el web en mode text +Comment[es]=Navega por el web en modo texto +Exec=/usr/bin/elinks %u +Terminal=true +Icon=html +MimeType=text/html; --- elinks-0.12~pre5.orig/debian/elinks-lite.mime +++ elinks-0.12~pre5/debian/elinks-lite.mime @@ -0,0 +1,2 @@ +text/html; /usr/bin/elinks -force-html %s; needsterminal; description=HTML Text; nametemplate=%s.html; priority=4 +text/html; /usr/bin/elinks -force-html -dump %s; copiousoutput; description=HTML Text; nametemplate=%s.html; priority=3 --- elinks-0.12~pre5.orig/debian/README.source +++ elinks-0.12~pre5/debian/README.source @@ -0,0 +1,15 @@ +To add a patch, modify the files appropriately in the git repository and +redirect "git diff" to XY_your_patch_name.diff and drop the diff file in +the debian/patches directory. XY should be the next number in series of +diff-file prefixes already in debian/patches. + +To apply patches, use debian/rules patch +To de-apply patches, use debian/rules unpatch or debian/rules clean + +To remove a patch, just delete it from the debian/patches directory. + +To modify an existing patch, apply it to the source tree, do the extra +modifications to the source and over-write the existing patch file with +the new "git diff" + +Patches are applies in the sorted order of their names. --- elinks-0.12~pre5.orig/debian/elinks-lite.install +++ elinks-0.12~pre5/debian/elinks-lite.install @@ -0,0 +1 @@ +debian/elinks.desktop usr/share/applications --- elinks-0.12~pre5.orig/debian/elinks-lite.docs +++ elinks-0.12~pre5/debian/elinks-lite.docs @@ -0,0 +1 @@ +AUTHORS --- elinks-0.12~pre5.orig/debian/elinks-data.README.Debian +++ elinks-0.12~pre5/debian/elinks-data.README.Debian @@ -0,0 +1,44 @@ +elinks for Debian +----------------- +ELinks is a code fork of Links, the original character mode browser of +Mikulas Patocka. ELinks provides lots of new features over the original +Links codebase, and changes are more rapid. Some believes that Links is +more stable because of the few feature change. YMMW. + + * * * + + -- Y Giridhar Appaji Nag Thu, 03 Jan 2008 17:01:37 +0530 + +Do not forget to setup after the first install: press F9, go to the Setup +menu, and set Linux console, default display character set and others. (An +example default config is provided in /etc/elinks/elinks.conf) + +To be able to cut&paste with gpm, use SHIFT+MOUSE together and it'll +behave as without gpm. + +With the examples/mailcap.pl you can convert the /etc/mailcap file to +elinks.conf format, and append to your config, until it gets supported. + + -- Peter Gervai , Thu, 9 Oct 2003 01:17:26 +0200 + +Some questions from bugreports: +=============================== +Q: Where did the download manager/proxy settings/whatever disappear? +A: Please check the menus. Download manager is under Tools>Download, proxy + settings is at Setup>Options>Protocols>HTTP>Proxy>Host and port. + Familiarize yourself with the options manager. :-) + (with contribution by Jonas Fonseca) + +Q: The "move" doesn't work in the bookmark manager. +A: Install the elinks-doc package and read the bookmarks section of the + manual to learn how to use this unintuitive feature. + (contributed by Miciah Dashiel Butler Masters) + + -- Peter Gervai , Wed, 7 Apr 2004 13:40:56 +0200 + +Q: What happened to the links alternative? +A: Beginning 0.11.3-2, ELinks no longer installs the links alternative + and doesn't provide links. ELinks should be invoked as "elinks" and + the links package can be installed alongside elinks. + + -- Y Giridhar Appaji Nag Wed, 23 Jan 2008 17:23:08 +0530 --- elinks-0.12~pre5.orig/debian/compat +++ elinks-0.12~pre5/debian/compat @@ -0,0 +1 @@ +6 --- elinks-0.12~pre5.orig/debian/elinks.lintian-overrides +++ elinks-0.12~pre5/debian/elinks.lintian-overrides @@ -0,0 +1,2 @@ +# elinks(1) is installed by elinks-data +elinks: binary-without-manpage usr/bin/elinks --- elinks-0.12~pre5.orig/debian/elinks.menu +++ elinks-0.12~pre5/debian/elinks.menu @@ -0,0 +1,9 @@ +?package(elinks): \ + needs="text" \ + section="Applications/Network/Web Browsing" \ + title="ELinks WWW browser" \ + command="/usr/bin/elinks" \ + hints="Web browsers" \ + description="ELinks is a character mode browser with support for \ + rendering tables and frames, background downloads, color display, \ + IPV6 among other features." --- elinks-0.12~pre5.orig/debian/elinks.postinst +++ elinks-0.12~pre5/debian/elinks.postinst @@ -0,0 +1,27 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + update-alternatives --quiet \ + --install /usr/bin/www-browser www-browser /usr/bin/elinks 35 \ + --slave /usr/share/man/man1/www-browser.1.gz www-browser.1.gz /usr/share/man/man1/elinks.1.gz + if [ -d /usr/share/doc/elinks -a ! -L /usr/share/doc/elinks ] ; then + rmdir /usr/share/doc/elinks + ln -s /usr/share/doc/elinks-data /usr/share/doc/elinks + fi + ;; + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +#DEBHELPER# + +exit 0 --- elinks-0.12~pre5.orig/debian/elinks-doc.docs +++ elinks-0.12~pre5/debian/elinks-doc.docs @@ -0,0 +1 @@ +doc/*.txt --- elinks-0.12~pre5.orig/debian/elinks-data.examples +++ elinks-0.12~pre5/debian/elinks-data.examples @@ -0,0 +1,13 @@ +contrib/conv/conf-links2elinks.pl +contrib/conv/mailcap.pl +contrib/conv/old_to_new_bookmarks.sh +contrib/conv/w3m2links.awk.in +contrib/elinks.vim +contrib/keybind.conf +contrib/keybind-full.conf +contrib/lua/ +contrib/perl/ +contrib/ruby/ +contrib/TIPS-AND-TRICKS +contrib/user.css +contrib/smjs/ --- elinks-0.12~pre5.orig/debian/patches/07_617713_cache_control.diff +++ elinks-0.12~pre5/debian/patches/07_617713_cache_control.diff @@ -0,0 +1,16 @@ +Patch by Ben Hutchings to fix document caching in violation +of HTTP (see http://bugs.debian.org/617713). + +diff --git a/src/config/options.inc b/src/config/options.inc +index 163f7b9..59779f5 100644 +--- a/src/config/options.inc ++++ b/src/config/options.inc +@@ -506,7 +506,7 @@ static struct option_info config_options_info[] = { + "cache instead of asking the server.")), + + INIT_OPT_BOOL("document.cache", N_("Ignore cache-control info from server"), +- "ignore_cache_control", 0, 1, ++ "ignore_cache_control", 0, 0, + N_("Ignore Cache-Control and Pragma server headers. " + "When set, the document is cached even with 'Cache-Control: " + "no-cache'.")), --- elinks-0.12~pre5.orig/debian/patches/01_setup-bugs-FSSTND.diff +++ elinks-0.12~pre5/debian/patches/01_setup-bugs-FSSTND.diff @@ -0,0 +1,107 @@ +Point bugs URL to debian.org and remove FSSTND dir in setup.h + +diff --git a/doc/elinks.1.txt b/doc/elinks.1.txt +index 71fceef..f0f55ec 100644 +--- a/doc/elinks.1.txt ++++ b/doc/elinks.1.txt +@@ -147,9 +147,10 @@ is in state of beta testing. + + BUGS + ---- +- +-Please report any other bugs you find to the either the ELinks mailing list at +-mailto:elinks-users@linuxfromscratch.org[] or if you prefer enter them into ++ ++Please report any bugs you find to the submit@bugs.debian.org ++http://bugs.debian.org/src:elinks[Debian bug tracking] system using the ++reportbug program, or if you prefer enter them into the upstream elinks + http://bugzilla.elinks.cz/[the bug tracking system]. More information about + how to get in contact with developers and getting help can be found on + http://elinks.cz/community.html[the community page]. +diff --git a/doc/html/elinks.conf.5.html b/doc/html/elinks.conf.5.html +index 724f232..df8dda9 100644 +--- a/doc/html/elinks.conf.5.html ++++ b/doc/html/elinks.conf.5.html +@@ -781,7 +781,7 @@ around the % sign. +

mime.mailcap (Mailcap)

+

Options for mailcap support. +

mime.mailcap.enable [0|1] (default: 1)
Enable mailcap support. +-
mime.mailcap.path <str> (default: "~/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap:/usr/share/mailcap:/usr/share/misc/mailcap")
Mailcap search path. Colon-separated list of files. Leave as "" to ++
mime.mailcap.path <str> (default: "~/.mailcap:/etc/mailcap:/usr/local/etc/mailcap:/usr/share/mailcap:/usr/share/misc/mailcap")
Mailcap search path. Colon-separated list of files. Leave as "" to + use MAILCAP environment variable instead. +
mime.mailcap.ask [0|1] (default: 1)
Ask before using the handlers defined by mailcap. +
mime.mailcap.description <num> (default: 0)
Type of description to show in "what to do with this file" query +@@ -798,7 +798,7 @@ checked before deciding the handler. + used to find the content type of a URL by looking at the extension + of the file name. +

mime.mimetypes.enable [0|1] (default: 1)
Enable mime.types support. +-
mime.mimetypes.path <str> (default: "~/.mime.types:/etc/mime.types:/usr/etc/mime.types:/usr/local/etc/mime.types:/usr/share/mime.types:/usr/share/misc/mime.types")
The search path for mime.types files. Colon-separated list of ++
mime.mimetypes.path <str> (default: "~/.mime.types:/etc/mime.types:/usr/local/etc/mime.types:/usr/share/mime.types:/usr/share/misc/mime.types")
The search path for mime.types files. Colon-separated list of + files. +

mime.type (MIME type associations)

+

Handler ↔ MIME type association. The first sub-tree is the MIME +diff --git a/doc/man/man5/elinks.conf.5 b/doc/man/man5/elinks.conf.5 +index 84f665c..2ee427f 100644 +--- a/doc/man/man5/elinks.conf.5 ++++ b/doc/man/man5/elinks.conf.5 +@@ -1143,7 +1143,7 @@ mime\&.mailcap\&.enable \fB[0|1]\fR (default: 1) + Enable mailcap support\&. + .RE + .PP +-mime\&.mailcap\&.path \fB\fR (default: "~/\&.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap:/usr/share/mailcap:/usr/share/misc/mailcap") ++mime\&.mailcap\&.path \fB\fR (default: "~/\&.mailcap:/etc/mailcap:/usr/local/etc/mailcap:/usr/share/mailcap:/usr/share/misc/mailcap") + .RS 4 + Mailcap search path\&. Colon\-separated list of files\&. Leave as "" to use + \fBMAILCAP\fR +@@ -1186,7 +1186,7 @@ Enable + support\&. + .RE + .PP +-mime\&.mimetypes\&.path \fB\fR (default: "~/\&.mime\&.types:/etc/mime\&.types:/usr/etc/mime\&.types:/usr/local/etc/mime\&.types:/usr/share/mime\&.types:/usr/share/misc/mime\&.types") ++mime\&.mimetypes\&.path \fB\fR (default: "~/\&.mime\&.types:/etc/mime\&.types:/usr/local/etc/mime\&.types:/usr/share/mime\&.types:/usr/share/misc/mime\&.types") + .RS 4 + The search path for + \fImime\&.types\fR +diff --git a/src/document/html/parser/general.c b/src/document/html/parser/general.c +index f4d5834..1b20678 100644 +--- a/src/document/html/parser/general.c ++++ b/src/document/html/parser/general.c +@@ -841,7 +841,7 @@ roman(unsigned char *p, unsigned n) + } + i++; + assertm(!(n && !roman_tbl[i].n), +- "BUG in roman number convertor"); ++ "BUG in roman number converter"); + if_assert_failed break; + } + } +diff --git a/src/setup.h b/src/setup.h +index 572610f..9e94b6b 100644 +--- a/src/setup.h ++++ b/src/setup.h +@@ -17,7 +17,7 @@ + #define ELINKS_WEBSITE_URL "http://elinks.cz/" + #define ELINKS_AUTHORS_URL "http://elinks.cz/authors.html" + #define ELINKS_DOC_URL "http://elinks.cz/documentation/" +-#define ELINKS_BUGS_URL "http://bugzilla.elinks.cz/" ++#define ELINKS_BUGS_URL "http://bugs.debian.org/src:elinks" + #define ELINKS_GITWEB_URL "http://repo.or.cz/w/elinks.git" + + #define ELINKS_SOCK_NAME "socket" +@@ -86,13 +86,13 @@ + #define DEFAULT_PAGER_PATH "/usr/bin/pager" + #define DEFAULT_LESS_PATH "/usr/bin/less" + #define DEFAULT_MORE_PATH "/usr/bin/more" +-#define DEFAULT_MAILCAP_PATH "~/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap:/usr/share/mailcap:/usr/share/misc/mailcap" +-#define DEFAULT_MIMETYPES_PATH "~/.mime.types:/etc/mime.types:/usr/etc/mime.types:/usr/local/etc/mime.types:/usr/share/mime.types:/usr/share/misc/mime.types" ++#define DEFAULT_MAILCAP_PATH "~/.mailcap:/etc/mailcap:/usr/local/etc/mailcap:/usr/share/mailcap:/usr/share/misc/mailcap" ++#define DEFAULT_MIMETYPES_PATH "~/.mime.types:/etc/mime.types:/usr/local/etc/mime.types:/usr/share/mime.types:/usr/share/misc/mime.types" + + /* Default external commands (see osdep/newwin.c and/or system-specific osdep/ + * files) */ + #define DEFAULT_TWTERM_CMD "twterm -e" +-#define DEFAULT_XTERM_CMD "xterm -e" ++#define DEFAULT_XTERM_CMD "x-terminal-emulator -e" + #define DEFAULT_SCREEN_CMD "screen" + #define DEFAULT_OS2_WINDOW_CMD "cmd /c start /c /f /win" + #define DEFAULT_OS2_FULLSCREEN_CMD "cmd /c start /c /f /fs" --- elinks-0.12~pre5.orig/debian/patches/06_551238_SMJS-FTBFS.diff +++ elinks-0.12~pre5/debian/patches/06_551238_SMJS-FTBFS.diff @@ -0,0 +1,671 @@ +JS_SetBranchCallback has been replaced with JS_SetOperationCallback. +This patch is to fix the FTBFS reported in #550868. Patch based on an +upstream patch in git f31cf6f9fe805539d50ed55b62b05ce12daf7cb0 from +Miciah Dashiel Butler Masters + +diff --git a/Makefile.config.in b/Makefile.config.in +index c463868..bcbebc0 100644 +--- a/Makefile.config.in ++++ b/Makefile.config.in +@@ -117,6 +117,7 @@ CONFIG_DOM = @CONFIG_DOM@ + CONFIG_ECMASCRIPT = @CONFIG_ECMASCRIPT@ + CONFIG_ECMASCRIPT_SEE = @CONFIG_ECMASCRIPT_SEE@ + CONFIG_ECMASCRIPT_SMJS = @CONFIG_ECMASCRIPT_SMJS@ ++CONFIG_ECMASCRIPT_SMJS_HEARTBEAT = @CONFIG_ECMASCRIPT_SMJS_HEARTBEAT@ + CONFIG_EXMODE = @CONFIG_EXMODE@ + CONFIG_FASTMEM = @CONFIG_FASTMEM@ + CONFIG_FINGER = @CONFIG_FINGER@ +diff --git a/configure b/configure +index b8e22ce..350e587 100755 +--- a/configure ++++ b/configure +@@ -709,6 +709,7 @@ SEE_CFLAGS + CONFIG_ECMASCRIPT + CONFIG_ECMASCRIPT_SEE + CONFIG_ECMASCRIPT_SMJS ++CONFIG_ECMASCRIPT_SMJS_HEARTBEAT + SPIDERMONKEY_LIBS + SPIDERMONKEY_CFLAGS + CONFIG_SPIDERMONKEY +@@ -13394,6 +13395,98 @@ _ACEOF + fi + done + ++for ac_func in setitimer ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ HAVE_SETITIMER=yes ++fi ++done + + + for ac_func in cygwin_conv_to_full_win32_path +@@ -18397,6 +18490,192 @@ _ACEOF + fi + done + ++for ac_func in JS_SetBranchCallback ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++for ac_func in JS_TriggerOperationCallback ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $ac_func (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$ac_func || defined __stub___$ac_func ++choke me ++#endif ++ ++int ++main () ++{ ++return $ac_func (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ HAVE_JS_TRIGGEROPERATIONCALLBACK=yes ++fi ++done ++ + fi + + CFLAGS="$CFLAGS_X"; +@@ -18476,6 +18755,22 @@ _ACEOF + + + ++if test "x$CONFIG_ECMASCRIPT_SMJS" = xyes && ++ test "x$HAVE_JS_TRIGGEROPERATIONCALLBACK" = xyes && ++ test "x$HAVE_SETITIMER" = xyes; then ++ ++ CONFIG_ECMASCRIPT_SMJS_HEARTBEAT=yes ++ ABOUT_CONFIG_ECMASCRIPT_SMJS_HEARTBEAT="ECMAScript heartbeat support" ++ ++cat >>confdefs.h <<\_ACEOF ++#define CONFIG_ECMASCRIPT_SMJS_HEARTBEAT 1 ++_ACEOF ++ ++else ++ CONFIG_ECMASCRIPT_SMJS_HEARTBEAT=no ++fi ++ ++ + + # =================================================================== + # Optional Spidermonkey-based ECMAScript browser scripting +diff --git a/configure.in b/configure.in +index 4a7143d..08c4bbc 100644 +--- a/configure.in ++++ b/configure.in +@@ -283,6 +283,7 @@ AC_CHECK_FUNCS(snprintf vsnprintf asprintf vasprintf) + AC_CHECK_FUNCS(getifaddrs getpwnam inet_pton inet_ntop) + AC_CHECK_FUNCS(fflush fsync fseeko ftello sigaction) + AC_CHECK_FUNCS(gettimeofday clock_gettime) ++AC_CHECK_FUNCS(setitimer, HAVE_SETITIMER=yes) + + AC_CHECK_FUNCS([cygwin_conv_to_full_win32_path]) + +@@ -651,6 +652,8 @@ AC_MSG_RESULT($cf_result) + CONFIG_SPIDERMONKEY="$cf_result" + if test "$cf_result" = "yes"; then + AC_CHECK_FUNCS([[JS_ReportAllocationOverflow]]) ++ AC_CHECK_FUNCS(JS_SetBranchCallback) ++ AC_CHECK_FUNCS(JS_TriggerOperationCallback, HAVE_JS_TRIGGEROPERATIONCALLBACK=yes) + fi + EL_RESTORE_FLAGS + +@@ -665,6 +668,15 @@ EL_CONFIG_DEPENDS(CONFIG_ECMASCRIPT, [CONFIG_ECMASCRIPT_SEE CONFIG_ECMASCRIPT_SM + AC_SUBST(CONFIG_ECMASCRIPT_SEE) + AC_SUBST(CONFIG_ECMASCRIPT_SMJS) + ++if test "x$CONFIG_ECMASCRIPT_SMJS" = xyes && ++ test "x$HAVE_JS_TRIGGEROPERATIONCALLBACK" = xyes && ++ test "x$HAVE_SETITIMER" = xyes; then ++ EL_CONFIG(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT, [ECMAScript heartbeat support]) ++else ++ CONFIG_ECMASCRIPT_SMJS_HEARTBEAT=no ++fi ++AC_SUBST(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ + + # =================================================================== + # Optional Spidermonkey-based ECMAScript browser scripting +diff --git a/src/ecmascript/ecmascript.h b/src/ecmascript/ecmascript.h +index e8d84b5..53d40ae 100644 +--- a/src/ecmascript/ecmascript.h ++++ b/src/ecmascript/ecmascript.h +@@ -32,7 +32,11 @@ struct ecmascript_interpreter { + /* The code evaluated by setTimeout() */ + struct string code; + ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ struct heartbeat *heartbeat; ++#elif defined(HAVE_JS_SETBRANCHCALLBACK) + time_t exec_start; ++#endif + + /* This is a cross-rerenderings accumulator of + * @document.onload_snippets (see its description for juicy details). +diff --git a/src/ecmascript/spidermonkey.c b/src/ecmascript/spidermonkey.c +index 78c3bca..7c83cec 100644 +--- a/src/ecmascript/spidermonkey.c ++++ b/src/ecmascript/spidermonkey.c +@@ -25,6 +25,7 @@ + #include "ecmascript/spidermonkey.h" + #include "ecmascript/spidermonkey/document.h" + #include "ecmascript/spidermonkey/form.h" ++#include "ecmascript/spidermonkey/heartbeat.h" + #include "ecmascript/spidermonkey/location.h" + #include "ecmascript/spidermonkey/navigator.h" + #include "ecmascript/spidermonkey/unibar.h" +@@ -109,6 +110,7 @@ reported: + JS_ClearPendingException(ctx); + } + ++#if !defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) && defined(HAVE_JS_SETBRANCHCALLBACK) + static JSBool + safeguard(JSContext *ctx, JSScript *script) + { +@@ -132,6 +134,7 @@ setup_safeguard(struct ecmascript_interpreter *interpreter, + interpreter->exec_start = time(NULL); + JS_SetBranchCallback(ctx, safeguard); + } ++#endif + + + static void +@@ -172,6 +175,9 @@ spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter) + * some kind of bytecode cache. (If we will ever do that.) */ + JS_SetOptions(ctx, JSOPTION_VAROBJFIX | JSOPTION_COMPILE_N_GO); + JS_SetErrorReporter(ctx, error_reporter); ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ JS_SetOperationCallback(ctx, heartbeat_callback); ++#endif + + window_obj = JS_NewObject(ctx, (JSClass *) &window_class, NULL, NULL); + if (!window_obj) goto release_and_fail; +@@ -263,10 +269,17 @@ spidermonkey_eval(struct ecmascript_interpreter *interpreter, + assert(interpreter); + if (!js_module_init_ok) return; + ctx = interpreter->backend_data; ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ interpreter->heartbeat = add_heartbeat(interpreter); ++#elif defined(HAVE_JS_SETBRANCHCALLBACK) + setup_safeguard(interpreter, ctx); ++#endif + interpreter->ret = ret; + JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx), + code->source, code->length, "", 0, &rval); ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ done_heartbeat(interpreter->heartbeat); ++#endif + } + + +@@ -274,17 +287,25 @@ unsigned char * + spidermonkey_eval_stringback(struct ecmascript_interpreter *interpreter, + struct string *code) + { ++ JSBool ret; + JSContext *ctx; + jsval rval; + + assert(interpreter); + if (!js_module_init_ok) return NULL; + ctx = interpreter->backend_data; +- setup_safeguard(interpreter, ctx); + interpreter->ret = NULL; +- if (JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx), +- code->source, code->length, "", 0, &rval) +- == JS_FALSE) { ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ interpreter->heartbeat = add_heartbeat(interpreter); ++#elif defined(HAVE_JS_SETBRANCHCALLBACK) ++ setup_safeguard(interpreter, ctx); ++#endif ++ ret = JS_EvaluateScript(ctx, JS_GetGlobalObject(ctx), ++ code->source, code->length, "", 0, &rval); ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ done_heartbeat(interpreter->heartbeat); ++#endif ++ if (ret == JS_FALSE) { + return NULL; + } + if (JSVAL_IS_VOID(rval)) { +@@ -308,14 +329,21 @@ spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter, + assert(interpreter); + if (!js_module_init_ok) return 0; + ctx = interpreter->backend_data; +- setup_safeguard(interpreter, ctx); + interpreter->ret = NULL; + fun = JS_CompileFunction(ctx, NULL, "", 0, NULL, code->source, + code->length, "", 0); + if (!fun) + return -1; + ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ interpreter->heartbeat = add_heartbeat(interpreter); ++#elif defined(HAVE_JS_SETBRANCHCALLBACK) ++ setup_safeguard(interpreter, ctx); ++#endif + ret = JS_CallFunction(ctx, NULL, fun, 0, NULL, &rval); ++#if defined(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) ++ done_heartbeat(interpreter->heartbeat); ++#endif + if (ret == 2) { /* onClick="history.back()" */ + return 0; + } +diff --git a/src/ecmascript/spidermonkey/Makefile b/src/ecmascript/spidermonkey/Makefile +index f1c0fef..fd98dc5 100644 +--- a/src/ecmascript/spidermonkey/Makefile ++++ b/src/ecmascript/spidermonkey/Makefile +@@ -2,6 +2,8 @@ top_builddir=../../.. + include $(top_builddir)/Makefile.config + INCLUDES += $(SPIDERMONKEY_CFLAGS) + ++OBJS-$(CONFIG_ECMASCRIPT_SMJS_HEARTBEAT) += heartbeat.o ++ + OBJS = document.o form.o location.o navigator.o unibar.o window.o + + include $(top_srcdir)/Makefile.lib +diff --git a/src/ecmascript/spidermonkey/heartbeat.c b/src/ecmascript/spidermonkey/heartbeat.c +new file mode 100644 +index 0000000..1fb87a6 +--- /dev/null ++++ b/src/ecmascript/spidermonkey/heartbeat.c +@@ -0,0 +1,116 @@ ++/* The SpiderMonkey ECMAScript backend heartbeat fuctionality. */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include /* setitimer(2) */ ++ ++#include "elinks.h" ++ ++#include "ecmascript/spidermonkey/util.h" ++ ++#include "config/options.h" ++#include "document/view.h" ++#include "ecmascript/ecmascript.h" ++#include "ecmascript/spidermonkey.h" ++#include "ecmascript/spidermonkey/heartbeat.h" ++#include "osdep/signals.h" ++#include "session/session.h" ++#include "util/lists.h" ++#include "util/math.h" /* int_upper_bound */ ++#include "util/memory.h" ++#include "viewer/text/vs.h" ++ ++ ++ ++static INIT_LIST_OF(struct heartbeat, heartbeats); ++ ++static struct itimerval heartbeat_timer = { { 1, 0 }, { 1, 0 } }; ++ ++ ++/* This callback is installed by JS_SetOperationCallback and triggered ++ * by JS_TriggerOperationCallback in the heartbeat code below. Returning ++ * JS_FALSE terminates script execution immediately. */ ++JSBool ++heartbeat_callback(JSContext *ctx) ++{ ++ return JS_FALSE; ++} ++ ++/* Callback for SIGVTALRM. Go through all heartbeats, decrease each ++ * one's TTL, and call JS_TriggerOperationCallback if a heartbeat's TTL ++ * goes to 0. */ ++static void ++check_heartbeats(void *data) ++{ ++ struct heartbeat *hb; ++ ++ foreach (hb, heartbeats) { ++ assert(hb->interpreter); ++ --hb->ttl; ++ ++ if (hb->ttl <= 0) { ++ if (hb->interpreter->vs ++ && hb->interpreter->vs->doc_view ++ && hb->interpreter->vs->doc_view->session ++ && hb->interpreter->vs->doc_view->session->tab ++ && hb->interpreter->vs->doc_view->session->tab->term) { ++ struct session *ses = hb->interpreter->vs->doc_view->session; ++ struct terminal *term = ses->tab->term; ++ int max_exec_time = get_opt_int("ecmascript.max_exec_time"); ++ ++ ecmascript_timeout_dialog(term, max_exec_time); ++ } ++ ++ JS_TriggerOperationCallback(hb->interpreter->backend_data); ++ } ++ } ++ install_signal_handler(SIGVTALRM, check_heartbeats, NULL, 1); ++} ++ ++/* Create a new heartbeat for the given interpreter. */ ++struct heartbeat * ++add_heartbeat(struct ecmascript_interpreter *interpreter) ++{ ++ struct heartbeat *hb; ++ assert(interpreter); ++ ++ hb = mem_alloc(sizeof(struct heartbeat)); ++ if (!hb) return NULL; ++ ++ hb->ttl = get_opt_int("ecmascript.max_exec_time"); ++ hb->interpreter = interpreter; ++ ++ add_to_list(heartbeats, hb); ++ ++ /* Update the heartbeat timer. */ ++ if (list_is_singleton(*hb)) { ++ heartbeat_timer.it_value.tv_sec = 1; ++ setitimer(ITIMER_VIRTUAL, &heartbeat_timer, NULL); ++ } ++ ++ /* We install the handler every call to add_heartbeat instead of only on ++ * module initialisation because other code may set other handlers for ++ * the signal. */ ++ install_signal_handler(SIGVTALRM, check_heartbeats, NULL, 1); ++ ++ return hb; ++} ++ ++/* Destroy the given heartbeat. */ ++void ++done_heartbeat(struct heartbeat *hb) ++{ ++ assert(hb->interpreter); ++ ++ /* Stop the heartbeat timer if this heartbeat is the only one. */ ++ if (list_is_singleton(*hb)) { ++ heartbeat_timer.it_value.tv_sec = 0; ++ setitimer(ITIMER_VIRTUAL, &heartbeat_timer, NULL); ++ } ++ ++ del_from_list(hb); ++ hb->interpreter->heartbeat = NULL; ++ mem_free(hb); ++} +diff --git a/src/ecmascript/spidermonkey/heartbeat.h b/src/ecmascript/spidermonkey/heartbeat.h +new file mode 100644 +index 0000000..f7c8b12 +--- /dev/null ++++ b/src/ecmascript/spidermonkey/heartbeat.h +@@ -0,0 +1,24 @@ ++#ifndef EL__ECMASCRIPT_SPIDERMONKEY_HEARTBEAT_H ++#define EL__ECMASCRIPT_SPIDERMONKEY_HEARTBEAT_H ++ ++#include "ecmascript/spidermonkey/util.h" ++ ++#include "ecmascript/spidermonkey.h" ++ ++struct heartbeat { ++ LIST_HEAD(struct heartbeat); ++ ++ int ttl; /* Time to live. This value is assigned when the ++ * script begins execution and is decremented every ++ * second. When it reaches 0, script execution is ++ * terminated. */ ++ ++ struct ecmascript_interpreter *interpreter; ++}; ++ ++struct heartbeat *add_heartbeat(struct ecmascript_interpreter *interpreter); ++void done_heartbeat(struct heartbeat *hb); ++ ++JSBool heartbeat_callback(JSContext *ctx); ++ ++#endif --- elinks-0.12~pre5.orig/debian/patches/04_436817_nostrip.diff +++ elinks-0.12~pre5/debian/patches/04_436817_nostrip.diff @@ -0,0 +1,16 @@ +Remove CFLAGS from the linker command for dh_strip - comply with Debian +policy (section 10.1 "Binaries") for #436817 + +diff --git a/Makefile.lib b/Makefile.lib +index 03bb7d8..d6d79e9 100644 +--- a/Makefile.lib ++++ b/Makefile.lib +@@ -62,7 +62,7 @@ quiet_cmd_ld_objs = " [$(LD_COLOR)LD$(END_COLOR)] $(RELPATH)$@" + `test -e $(subdir)/$(LIB_O_NAME) && echo $(subdir)/$(LIB_O_NAME)`) + + quiet_cmd_link = ' [$(LINK_COLOR)LINK$(END_COLOR)] $(RELPATH)$@' +- cmd_link = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) ++ cmd_link = $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + quiet_cmd_sparse = ' [SPARSE] $(RELPATH)$(2)' + cmd_sparse = $(SPARSE) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(SPARSE_FLAGS) $(2) --- elinks-0.12~pre5.orig/debian/patches/05_skip-xmlto-validation.diff +++ elinks-0.12~pre5/debian/patches/05_skip-xmlto-validation.diff @@ -0,0 +1,16 @@ +Moritz's patch to disable xmlto validation. It fails with the latest +xmlto and this patch fixes #491820 + +diff --git a/doc/Makefile b/doc/Makefile +index 2ba565f..30cf775 100644 +--- a/doc/Makefile ++++ b/doc/Makefile +@@ -150,7 +150,7 @@ option-%.frag.xhtml: $(ELINKS) $(HELP2XML) + cmd_jw = $(JW) -b $(2) $< + + quiet_cmd_xmlto = ' [$(LINK_COLOR)XMLTO$(END_COLOR)] $(RELPATH)$@' +- cmd_xmlto = $(XMLTO) -o $(call outdir) $(3) $(2) $< ++ cmd_xmlto = $(XMLTO) --skip-validation -o $(call outdir) $(3) $(2) $< + + quiet_cmd_pod2html = ' [$(LINK_COLOR)POD2HTML$(END_COLOR)] $(RELPATH)$@' + cmd_pod2html = $(POD2HTML) --outfile=$@ < $< --- elinks-0.12~pre5.orig/debian/patches/07-big-endian-64-bit.diff +++ elinks-0.12~pre5/debian/patches/07-big-endian-64-bit.diff @@ -0,0 +1,1594 @@ +From bf36f8d9464da1ca907f2ae7ec28428caeb5c231 Mon Sep 17 00:00:00 2001 +From: Kalle Olavi Niemitalo +Date: Sat, 8 Aug 2009 23:23:09 +0300 +Subject: [PATCH 1/1] bug 764: Fix option_value initialization on sparc64 + +INIT_OPTION used to initialize union option_value at compile time by +casting the default value to LIST_OF(struct option) *, which is the +type of the first member. On sparc64 and other big-endian systems +where sizeof(int) < sizeof(struct list_head *), this tended to leave +option->value.number as zero, thus messing up OPT_INT and OPT_BOOL +at least. OPT_LONG however tended to work right. + +This would be easy to fix with C99 designated initializers, +but doc/hacking.txt says ELinks must be kept C89 compatible. +Another solution would be to make register_options() read the +value from option->value.tree (the first member), cast it back +to the right type, and write it to the appropriate member; +but that would still require somewhat dubious conversions +between integers, data pointers, and function pointers. + +So here's a rather more invasive solution. Move several members +of struct option into a substructure in a union: for example, +option->value becomes option->u.run.value. The first member of +the union, i.e. option->u.init, is used solely for compile-time +initialization. It has separate members for different types of +values, to ensure nothing is lost in compile-time conversions. +register_options() calls the new init_option_union() to move +the data from option->u.init to option->u.run, from which it is +thereafter used. +--- + src/bfu/leds.c | 2 +- + src/bookmarks/bookmarks.c | 2 +- + src/config/cmdline.c | 18 ++-- + src/config/conf.c | 6 +- + src/config/dialogs.c | 12 +- + src/config/options.c | 240 +++++++++++++++++++++++----------------- + src/config/options.h | 78 +++++++++----- + src/config/opttypes.c | 90 ++++++++-------- + src/cookies/cookies.c | 2 +- + src/dialogs/menu.c | 2 +- + src/dialogs/options.c | 4 +- + src/globhist/globhist.c | 2 +- + src/mime/backend/default.c | 8 +- + src/mime/backend/mailcap.c | 2 +- + src/mime/backend/mimetypes.c | 4 +- + src/mime/dialogs.c | 6 +- + src/mime/mime.c | 2 +- + src/protocol/nntp/nntp.c | 4 +- + src/protocol/rewrite/rewrite.c | 6 +- + src/protocol/user.c | 2 +- + src/scripting/lua/core.c | 12 +- + src/session/session.c | 2 +- + src/terminal/screen.c | 2 +- + src/viewer/text/search.c | 4 +- + 24 files changed, 287 insertions(+), 225 deletions(-) + +diff --git a/src/bfu/leds.c b/src/bfu/leds.c +index 989acb6..fcd95cf 100644 +--- a/src/bfu/leds.c ++++ b/src/bfu/leds.c +@@ -99,7 +99,7 @@ static struct option_info led_options[] = { + NULL_OPTION_INFO, + }; + +-#define get_opt_leds(which) led_options[(which)].option.value ++#define get_opt_leds(which) led_options[(which)].option.u.run.value + #define get_leds_clock_enable() get_opt_leds(LEDS_CLOCK_ENABLE).number + #define get_leds_clock_format() get_opt_leds(LEDS_CLOCK_FORMAT).string + #define get_leds_panel_enable() get_opt_leds(LEDS_PANEL_ENABLE).number +diff --git a/src/bookmarks/bookmarks.c b/src/bookmarks/bookmarks.c +index bf8db05..62a9f89 100644 +--- a/src/bookmarks/bookmarks.c ++++ b/src/bookmarks/bookmarks.c +@@ -125,7 +125,7 @@ static int + change_hook_folder_state(struct session *ses, struct option *current, + struct option *changed) + { +- if (!changed->value.number) { ++ if (!changed->u.run.value.number) { + /* We are to collapse all folders on exit; mark bookmarks dirty + * to ensure that this will happen. */ + bookmarks_set_dirty(); +diff --git a/src/config/cmdline.c b/src/config/cmdline.c +index 2c9956a..8454fb6 100644 +--- a/src/config/cmdline.c ++++ b/src/config/cmdline.c +@@ -453,7 +453,7 @@ print_full_help_inner(struct option *tree, unsigned char *path, + + *savedpos = 0; + +- foreach (option, *tree->value.tree) { ++ foreach (option, *tree->u.run.value.tree) { + enum option_type type = option->type; + unsigned char *help; + unsigned char *capt = option->capt; +@@ -496,28 +496,28 @@ print_full_help_inner(struct option *tree, unsigned char *path, + case OPT_LONG: + printf(gettext("(default: %ld)"), + type == OPT_LONG +- ? option->value.big_number +- : (long) option->value.number); ++ ? option->u.run.value.big_number ++ : (long) option->u.run.value.number); + break; + + case OPT_STRING: + printf(gettext("(default: \"%s\")"), +- option->value.string); ++ option->u.run.value.string); + break; + + case OPT_ALIAS: + printf(gettext("(alias for %s)"), +- option->value.string); ++ option->u.run.value.string); + break; + + case OPT_CODEPAGE: + printf(gettext("(default: %s)"), +- get_cp_name(option->value.number)); ++ get_cp_name(option->u.run.value.number)); + break; + + case OPT_COLOR: + { +- color_T color = option->value.color; ++ color_T color = option->u.run.value.color; + unsigned char hexcolor[8]; + + printf(gettext("(default: %s)"), +@@ -531,7 +531,7 @@ print_full_help_inner(struct option *tree, unsigned char *path, + case OPT_LANGUAGE: + #ifdef CONFIG_NLS + printf(gettext("(default: \"%s\")"), +- language_to_name(option->value.number)); ++ language_to_name(option->u.run.value.number)); + #endif + break; + +@@ -593,7 +593,7 @@ print_short_help(void) + memset(align, ' ', sizeof(align) - 1); + align[sizeof(align) - 1] = 0; + +- foreach (option, *cmdline_options->value.tree) { ++ foreach (option, *cmdline_options->u.run.value.tree) { + unsigned char *capt; + unsigned char *help; + unsigned char *info = saved ? saved->source +diff --git a/src/config/conf.c b/src/config/conf.c +index 48fd135..604db11 100644 +--- a/src/config/conf.c ++++ b/src/config/conf.c +@@ -945,7 +945,7 @@ create_config_string(unsigned char *prefix, unsigned char *name, + + if (!init_string(&config)) return NULL; + +- prepare_mustsave_flags(options->value.tree, ++ prepare_mustsave_flags(options->u.run.value.tree, + savestyle == 1 || savestyle == 2); + + /* Scaring. */ +@@ -1005,7 +1005,7 @@ create_config_string(unsigned char *prefix, unsigned char *name, + conf_i18n(N_("Automatically saved options\n"), i18n)); + + origlen = tmpstring.length; +- smart_config_string(&tmpstring, 2, i18n, options->value.tree, NULL, 0, ++ smart_config_string(&tmpstring, 2, i18n, options->u.run.value.tree, NULL, 0, + smart_config_output_fn); + if (tmpstring.length > origlen) + add_string_to_string(&config, &tmpstring); +@@ -1051,7 +1051,7 @@ write_config_file(unsigned char *prefix, unsigned char *name, + secure_fputs(ssi, cfg_str); + ret = secure_close(ssi); + if (!ret) +- untouch_options(options->value.tree); ++ untouch_options(options->u.run.value.tree); + } + + write_config_dialog(term, config_file, secsave_errno, ret); +diff --git a/src/config/dialogs.c b/src/config/dialogs.c +index 235b62f..3daa2a4 100644 +--- a/src/config/dialogs.c ++++ b/src/config/dialogs.c +@@ -195,9 +195,9 @@ get_option_root(struct listbox_item *item) + + /* The config_options root has no listbox so return that + * we are at the bottom. */ +- if (option->root == config_options) return NULL; ++ if (option->u.run.root == config_options) return NULL; + +- return option->root ? option->root->box_item : NULL; ++ return option->u.run.root ? option->u.run.root->u.run.box_item : NULL; + } + + static enum listbox_match +@@ -221,8 +221,8 @@ can_delete_option(struct listbox_item *item) + { + struct option *option = item->udata; + +- if (option->root) { +- struct option *parent_option = option->root; ++ if (option->u.run.root) { ++ struct option *parent_option = option->u.run.root; + + return parent_option->flags & OPT_AUTOCREATE; + } +@@ -415,7 +415,7 @@ add_option_to_tree(void *data, unsigned char *name) + if (old && (old->flags & OPT_DELETED)) delete_option(old); + /* get_opt_rec() will create the option. */ + new = get_opt_rec(ctx->option, name); +- if (new) listbox_sel(ctx->widget_data, new->box_item); ++ if (new) listbox_sel(ctx->widget_data, new->u.run.box_item); + /* TODO: If the return value is NULL, we should pop up a msgbox. */ + } + +@@ -466,7 +466,7 @@ invalid_option: + option = item->udata; + + if (!(option->flags & OPT_AUTOCREATE)) { +- if (option->root) option = option->root; ++ if (option->u.run.root) option = option->u.run.root; + if (!option || !(option->flags & OPT_AUTOCREATE)) + goto invalid_option; + } +diff --git a/src/config/options.c b/src/config/options.c +index 5bf5181..6b44db6 100644 +--- a/src/config/options.c ++++ b/src/config/options.c +@@ -55,18 +55,21 @@ + static INIT_LIST_OF(struct option, options_root_tree); + + static struct option options_root = INIT_OPTION( +- /* name: */ "", +- /* flags: */ 0, +- /* type: */ OPT_TREE, +- /* min, max: */ 0, 0, +- /* value: */ &options_root_tree, +- /* desc: */ "", +- /* capt: */ NULL ++ /* name: */ "", ++ /* flags: */ 0, ++ /* type: */ OPT_TREE, ++ /* min, max: */ 0, 0, ++ /* value_long: */ 0, ++ /* value_ptr: */ &options_root_tree, ++ /* value_fn: */ NULL, ++ /* desc: */ "", ++ /* capt: */ NULL + ); + + struct option *config_options; + struct option *cmdline_options; + ++static void init_option_union(struct option *); + static void add_opt_rec(struct option *, unsigned char *, struct option *); + static void free_options_tree(LIST_OF(struct option) *, int recursive); + +@@ -194,7 +197,7 @@ get_opt_rec(struct option *tree, const unsigned char *name_) + name = sep + 1; + } + +- foreach (option, *tree->value.tree) { ++ foreach (option, *tree->u.run.value.tree) { + if (option->name && !strcmp(option->name, name)) { + mem_free(aname); + return option; +@@ -261,9 +264,9 @@ indirect_option(struct option *alias) + + if (alias->type != OPT_ALIAS) return alias; /* not an error */ + +- real = get_opt_rec(config_options, alias->value.string); ++ real = get_opt_rec(config_options, alias->u.run.value.string); + assertm(real != NULL, "%s aliased to unknown option %s!", +- alias->name, alias->value.string); ++ alias->name, alias->u.run.value.string); + if_assert_failed return alias; + + return real; +@@ -294,30 +297,30 @@ get_opt_( + + switch (opt->type) { + case OPT_TREE: +- if (!opt->value.tree) ++ if (!opt->u.run.value.tree) + elinks_internal("Option %s has no value!", name); + break; + case OPT_ALIAS: + elinks_internal("Invalid use of alias %s for option %s!", +- name, opt->value.string); ++ name, opt->u.run.value.string); + break; + case OPT_STRING: +- if (!opt->value.string) ++ if (!opt->u.run.value.string) + elinks_internal("Option %s has no value!", name); + break; + case OPT_BOOL: + case OPT_INT: +- if (opt->value.number < opt->min +- || opt->value.number > opt->max) +- elinks_internal("Option %s has invalid value %d!", name, opt->value.number); ++ if (opt->u.run.value.number < opt->min ++ || opt->u.run.value.number > opt->max) ++ elinks_internal("Option %s has invalid value %d!", name, opt->u.run.value.number); + break; + case OPT_LONG: +- if (opt->value.big_number < opt->min +- || opt->value.big_number > opt->max) +- elinks_internal("Option %s has invalid value %ld!", name, opt->value.big_number); ++ if (opt->u.run.value.big_number < opt->min ++ || opt->u.run.value.big_number > opt->max) ++ elinks_internal("Option %s has invalid value %ld!", name, opt->u.run.value.big_number); + break; + case OPT_COMMAND: +- if (!opt->value.command) ++ if (!opt->u.run.value.command) + elinks_internal("Option %s has no value!", name); + break; + case OPT_CODEPAGE: /* TODO: check these too. */ +@@ -327,20 +330,20 @@ get_opt_( + } + #endif + +- return &opt->value; ++ return &opt->u.run.value; + } + + static void + add_opt_sort(struct option *tree, struct option *option, int abi) + { +- LIST_OF(struct option) *cat = tree->value.tree; +- LIST_OF(struct listbox_item) *bcat = &tree->box_item->child; ++ LIST_OF(struct option) *cat = tree->u.run.value.tree; ++ LIST_OF(struct listbox_item) *bcat = &tree->u.run.box_item->child; + struct option *pos; + + /* The list is empty, just add it there. */ + if (list_empty(*cat)) { + add_to_list(*cat, option); +- if (abi) add_to_list(*bcat, option->box_item); ++ if (abi) add_to_list(*bcat, option->u.run.box_item); + + /* This fits as the last list entry, add it there. This + * optimizes the most expensive BUT most common case ;-). */ +@@ -350,7 +353,7 @@ add_opt_sort(struct option *tree, struct option *option, int abi) + option->name) <= 0) { + append: + add_to_list_end(*cat, option); +- if (abi) add_to_list_end(*bcat, option->box_item); ++ if (abi) add_to_list_end(*bcat, option->u.run.box_item); + + /* At the end of the list is tree and we are ordinary. That's + * clear case then. */ +@@ -368,7 +371,7 @@ append: + * only if the position has not been marked as deleted + * and actually has a box_item -- else we will end up + * 'overflowing' and causing assertion failure. */ +- if (!(pos->flags & OPT_DELETED) && pos->box_item) { ++ if (!(pos->flags & OPT_DELETED) && pos->u.run.box_item) { + bpos = bpos->next; + assert(bpos != (struct listbox_item *) bcat); + } +@@ -395,12 +398,12 @@ append: + if (option->type == pos->type + && *option->name <= '_' + && !strcmp(pos->name, "_template_")) { +- if (abi) add_at_pos(bpos, option->box_item); ++ if (abi) add_at_pos(bpos, option->u.run.box_item); + add_at_pos(pos, option); + break; + } + +- if (abi) add_at_pos(bpos->prev, option->box_item); ++ if (abi) add_at_pos(bpos->prev, option->u.run.box_item); + add_at_pos(pos->prev, option); + break; + } +@@ -420,12 +423,12 @@ add_opt_rec(struct option *tree, unsigned char *path, struct option *option) + if (*path) tree = get_opt_rec(tree, path); + + assertm(tree != NULL, "Missing option tree for '%s'", path); +- if (!tree->value.tree) return; ++ if (!tree->u.run.value.tree) return; + + object_nolock(option, "option"); + +- if (option->box_item && option->name && !strcmp(option->name, "_template_")) +- option->box_item->visible = get_opt_bool("config.show_template"); ++ if (option->u.run.box_item && option->name && !strcmp(option->name, "_template_")) ++ option->u.run.box_item->visible = get_opt_bool("config.show_template"); + + if (tree->flags & OPT_AUTOCREATE && !option->desc) { + struct option *template = get_opt_rec(tree, "_template_"); +@@ -434,17 +437,17 @@ add_opt_rec(struct option *tree, unsigned char *path, struct option *option) + option->desc = template->desc; + } + +- option->root = tree; ++ option->u.run.root = tree; + +- abi = (tree->box_item && option->box_item); ++ abi = (tree->u.run.box_item && option->u.run.box_item); + + if (abi) { + /* The config_root tree is a just a placeholder for the + * box_items, it actually isn't a real box_item by itself; + * these ghosts are indicated by the fact that they have + * NULL @next. */ +- if (tree->box_item->next) { +- option->box_item->depth = tree->box_item->depth + 1; ++ if (tree->u.run.box_item->next) { ++ option->u.run.box_item->depth = tree->u.run.box_item->depth + 1; + } + } + +@@ -452,8 +455,8 @@ add_opt_rec(struct option *tree, unsigned char *path, struct option *option) + add_opt_sort(tree, option, abi); + + } else { +- add_to_list_end(*tree->value.tree, option); +- if (abi) add_to_list_end(tree->box_item->child, option->box_item); ++ add_to_list_end(*tree->u.run.value.tree, option); ++ if (abi) add_to_list_end(tree->u.run.box_item->child, option->u.run.box_item); + } + + update_hierbox_browser(&option_browser); +@@ -505,32 +508,32 @@ add_opt(struct option *tree, unsigned char *path, unsigned char *capt, + mem_free(option); + return NULL; + } +- option->value.tree = (LIST_OF(struct option) *) value; ++ option->u.run.value.tree = (LIST_OF(struct option) *) value; + break; + case OPT_STRING: + if (!value) { + mem_free(option); + return NULL; + } +- option->value.string = (unsigned char *) value; ++ option->u.run.value.string = (unsigned char *) value; + break; + case OPT_ALIAS: +- option->value.string = (unsigned char *) value; ++ option->u.run.value.string = (unsigned char *) value; + break; + case OPT_BOOL: + case OPT_INT: + case OPT_CODEPAGE: +- option->value.number = (int) value; ++ option->u.run.value.number = (int) value; + break; + case OPT_LONG: +- option->value.big_number = (long) value; /* FIXME: cast from void * */ ++ option->u.run.value.big_number = (long) value; /* FIXME: cast from void * */ + break; + case OPT_COLOR: + decode_color((unsigned char *) value, strlen((unsigned char *) value), +- &option->value.color); ++ &option->u.run.value.color); + break; + case OPT_COMMAND: +- option->value.command = (void *) value; ++ option->u.run.value.command = (void *) value; + break; + case OPT_LANGUAGE: + break; +@@ -538,8 +541,8 @@ add_opt(struct option *tree, unsigned char *path, unsigned char *capt, + + if (option->type != OPT_ALIAS + && ((tree->flags & OPT_LISTBOX) || (option->flags & OPT_LISTBOX))) { +- option->box_item = init_option_listbox_item(option); +- if (!option->box_item) { ++ option->u.run.box_item = init_option_listbox_item(option); ++ if (!option->u.run.box_item) { + mem_free(option); + return NULL; + } +@@ -554,17 +557,17 @@ done_option(struct option *option) + { + switch (option->type) { + case OPT_STRING: +- mem_free_if(option->value.string); ++ mem_free_if(option->u.run.value.string); + break; + case OPT_TREE: +- mem_free_if(option->value.tree); ++ mem_free_if(option->u.run.value.tree); + break; + default: + break; + } + +- if (option->box_item) +- done_listbox_item(&option_browser, option->box_item); ++ if (option->u.run.box_item) ++ done_listbox_item(&option_browser, option->u.run.box_item); + + if (option->flags & OPT_ALLOC) { + mem_free_if(option->name); +@@ -596,8 +599,8 @@ delete_option_do(struct option *option, int recursive) + ERROR("Orphaned option %s", option->name); + } + +- if (option->type == OPT_TREE && option->value.tree +- && !list_empty(*option->value.tree)) { ++ if (option->type == OPT_TREE && option->u.run.value.tree ++ && !list_empty(*option->u.run.value.tree)) { + if (!recursive) { + if (option->flags & OPT_AUTOCREATE) { + recursive = 1; +@@ -608,7 +611,7 @@ delete_option_do(struct option *option, int recursive) + recursive = -1; + } + } +- free_options_tree(option->value.tree, recursive); ++ free_options_tree(option->u.run.value.tree, recursive); + } + + done_option(option); +@@ -620,13 +623,13 @@ mark_option_as_deleted(struct option *option) + if (option->type == OPT_TREE) { + struct option *unmarked; + +- assert(option->value.tree); ++ assert(option->u.run.value.tree); + +- foreach (unmarked, *option->value.tree) ++ foreach (unmarked, *option->u.run.value.tree) + mark_option_as_deleted(unmarked); + } + +- option->box_item->visible = 0; ++ option->u.run.box_item->visible = 0; + + option->flags |= (OPT_TOUCHED | OPT_DELETED); + } +@@ -651,20 +654,20 @@ copy_option(struct option *template) + option->max = template->max; + option->capt = template->capt; + option->desc = template->desc; +- option->change_hook = template->change_hook; ++ option->u.run.change_hook = template->u.run.change_hook; + +- option->box_item = init_option_listbox_item(option); +- if (option->box_item) { +- if (template->box_item) { +- option->box_item->type = template->box_item->type; +- option->box_item->depth = template->box_item->depth; ++ option->u.run.box_item = init_option_listbox_item(option); ++ if (option->u.run.box_item) { ++ if (template->u.run.box_item) { ++ option->u.run.box_item->type = template->u.run.box_item->type; ++ option->u.run.box_item->depth = template->u.run.box_item->depth; + } + } + + if (option_types[template->type].dup) { + option_types[template->type].dup(option, template); + } else { +- option->value = template->value; ++ option->u.run.value = template->u.run.value; + } + + return option; +@@ -713,6 +716,7 @@ static const struct change_hook_info change_hooks[]; + void + init_options(void) + { ++ init_option_union(&options_root); + cmdline_options = add_opt_tree_tree(&options_root, "", "", + "cmdline", 0, ""); + register_options(cmdline_options_info, cmdline_options); +@@ -720,7 +724,7 @@ init_options(void) + config_options = add_opt_tree_tree(&options_root, "", "", + "config", OPT_SORT, ""); + config_options->flags |= OPT_LISTBOX; +- config_options->box_item = &option_browser.root; ++ config_options->u.run.box_item = &option_browser.root; + register_options(config_options_info, config_options); + + register_autocreated_options(); +@@ -739,7 +743,7 @@ done_options(void) + { + unregister_options(config_options_info, config_options); + unregister_options(cmdline_options_info, cmdline_options); +- config_options->box_item = NULL; ++ config_options->u.run.box_item = NULL; + free_options_tree(&options_root_tree, 0); + } + +@@ -753,7 +757,7 @@ register_change_hooks(const struct change_hook_info *change_hooks) + change_hooks[i].name); + + assert(option); +- option->change_hook = change_hooks[i].change_hook; ++ option->u.run.change_hook = change_hooks[i].change_hook; + } + } + +@@ -773,7 +777,7 @@ prepare_mustsave_flags(LIST_OF(struct option) *tree, int set_all) + option->flags &= ~OPT_MUST_SAVE; + + if (option->type == OPT_TREE) +- prepare_mustsave_flags(option->value.tree, set_all); ++ prepare_mustsave_flags(option->u.run.value.tree, set_all); + } + } + +@@ -786,7 +790,7 @@ untouch_options(LIST_OF(struct option) *tree) + option->flags &= ~OPT_TOUCHED; + + if (option->type == OPT_TREE) +- untouch_options(option->value.tree); ++ untouch_options(option->u.run.value.tree); + } + } + +@@ -797,7 +801,7 @@ check_nonempty_tree(LIST_OF(struct option) *options) + + foreach (opt, *options) { + if (opt->type == OPT_TREE) { +- if (check_nonempty_tree(opt->value.tree)) ++ if (check_nonempty_tree(opt->u.run.value.tree)) + return 1; + } else if (opt->flags & OPT_MUST_SAVE) { + return 1; +@@ -826,7 +830,7 @@ smart_config_string(struct string *str, int print_comment, int i18n, + + /* Is there anything to be printed anyway? */ + if (option->type == OPT_TREE +- ? !check_nonempty_tree(option->value.tree) ++ ? !check_nonempty_tree(option->u.run.value.tree) + : !(option->flags & OPT_MUST_SAVE)) + continue; + +@@ -887,7 +891,7 @@ smart_config_string(struct string *str, int print_comment, int i18n, + add_char_to_string(&newpath, '.'); + } + add_to_string(&newpath, option->name); +- smart_config_string(str, pc, i18n, option->value.tree, ++ smart_config_string(str, pc, i18n, option->u.run.value.tree, + newpath.source, depth + 1, fn); + done_string(&newpath); + +@@ -958,17 +962,17 @@ update_visibility(LIST_OF(struct option) *tree, int show) + if (opt->flags & OPT_DELETED) continue; + + if (!strcmp(opt->name, "_template_")) { +- if (opt->box_item) +- opt->box_item->visible = (show & 1); ++ if (opt->u.run.box_item) ++ opt->u.run.box_item->visible = (show & 1); + + if (opt->type == OPT_TREE) +- update_visibility(opt->value.tree, show | 2); ++ update_visibility(opt->u.run.value.tree, show | 2); + } else { +- if (opt->box_item && (show & 2)) +- opt->box_item->visible = (show & 1); ++ if (opt->u.run.box_item && (show & 2)) ++ opt->u.run.box_item->visible = (show & 1); + + if (opt->type == OPT_TREE) +- update_visibility(opt->value.tree, show); ++ update_visibility(opt->u.run.value.tree, show); + } + } + } +@@ -976,26 +980,26 @@ update_visibility(LIST_OF(struct option) *tree, int show) + void + update_options_visibility(void) + { +- update_visibility(config_options->value.tree, ++ update_visibility(config_options->u.run.value.tree, + get_opt_bool("config.show_template")); + } + + void + toggle_option(struct session *ses, struct option *option) + { +- long number = option->value.number + 1; ++ long number = option->u.run.value.number + 1; + + assert(option->type == OPT_BOOL || option->type == OPT_INT); + assert(option->max); + +- option->value.number = (number <= option->max) ? number : option->min; ++ option->u.run.value.number = (number <= option->max) ? number : option->min; + option_changed(ses, option); + } + + static int + change_hook_stemplate(struct session *ses, struct option *current, struct option *changed) + { +- update_visibility(config_options->value.tree, changed->value.number); ++ update_visibility(config_options->u.run.value.tree, changed->u.run.value.number); + return 0; + } + +@@ -1003,7 +1007,7 @@ static int + change_hook_language(struct session *ses, struct option *current, struct option *changed) + { + #ifdef CONFIG_NLS +- set_language(changed->value.number); ++ set_language(changed->u.run.value.number); + #endif + return 0; + } +@@ -1034,12 +1038,12 @@ call_change_hooks(struct session *ses, struct option *current, struct option *op + * basically says that we should proceed when there's + * no change_hook or there's one and its return value + * was zero. */ +- while (current && (!current->change_hook || +- !current->change_hook(ses, current, option))) { +- if (!current->root) ++ while (current && (!current->u.run.change_hook || ++ !current->u.run.change_hook(ses, current, option))) { ++ if (!current->u.run.root) + break; + +- current = current->root; ++ current = current->u.run.root; + } + } + +@@ -1065,8 +1069,8 @@ commit_option_values(struct option_resolver *resolvers, + struct option *option = get_opt_rec(root, name); + int id = resolvers[i].id; + +- if (memcmp(&option->value, &values[id], sizeof(union option_value))) { +- option->value = values[id]; ++ if (memcmp(&option->u.run.value, &values[id], sizeof(union option_value))) { ++ option->u.run.value = values[id]; + option->flags |= OPT_TOUCHED; + /* Speed hack: Directly call the change-hook for each + * option in resolvers and later call call_change_hooks +@@ -1075,8 +1079,8 @@ commit_option_values(struct option_resolver *resolvers, + * the change-hooks of root, its parents, its + * grandparents, and so on for each option in resolvers + * because call_change_hooks is recursive. -- Miciah */ +- if (option->change_hook) +- option->change_hook(NULL, option, NULL); ++ if (option->u.run.change_hook) ++ option->u.run.change_hook(NULL, option, NULL); + touched++; + } + } +@@ -1099,7 +1103,7 @@ checkout_option_values(struct option_resolver *resolvers, + struct option *option = get_opt_rec(root, name); + int id = resolvers[i].id; + +- values[id] = option->value; ++ values[id] = option->u.run.value; + } + } + +@@ -1109,6 +1113,39 @@ checkout_option_values(struct option_resolver *resolvers, + + #include "config/options.inc" + ++static void ++init_option_union(struct option *option) ++{ ++ const struct option_init init = option->u.init; ++ struct option_run run = {{ 0 }}; ++ ++ switch (option->type) { ++ case OPT_BOOL: ++ case OPT_INT: ++ run.value.number = init.value_long; ++ break; ++ case OPT_LONG: ++ run.value.big_number = init.value_long; ++ break; ++ case OPT_STRING: ++ case OPT_CODEPAGE: ++ case OPT_COLOR: ++ case OPT_ALIAS: ++ run.value.string = init.value_dataptr; ++ break; ++ case OPT_COMMAND: ++ run.value.command = init.value_funcptr; ++ break; ++ case OPT_TREE: ++ run.value.tree = init.value_dataptr; ++ break; ++ case OPT_LANGUAGE: ++ break; ++ } ++ ++ option->u.run = run; ++} ++ + void + register_options(struct option_info info[], struct option *tree) + { +@@ -1118,13 +1155,14 @@ register_options(struct option_info info[], struct option *tree) + struct option *option = &info[i].option; + unsigned char *string; + ++ init_option_union(option); + debug_check_option_syntax(option); + + if (option->type != OPT_ALIAS + && ((tree->flags & OPT_LISTBOX) + || (option->flags & OPT_LISTBOX))) { +- option->box_item = init_option_listbox_item(option); +- if (!option->box_item) { ++ option->u.run.box_item = init_option_listbox_item(option); ++ if (!option->u.run.box_item) { + delete_option(option); + continue; + } +@@ -1132,8 +1170,8 @@ register_options(struct option_info info[], struct option *tree) + + switch (option->type) { + case OPT_TREE: +- option->value.tree = init_options_tree(); +- if (!option->value.tree) { ++ option->u.run.value.tree = init_options_tree(); ++ if (!option->u.run.value.tree) { + delete_option(option); + continue; + } +@@ -1144,19 +1182,19 @@ register_options(struct option_info info[], struct option *tree) + delete_option(option); + continue; + } +- safe_strncpy(string, option->value.string, MAX_STR_LEN); +- option->value.string = string; ++ safe_strncpy(string, option->u.run.value.string, MAX_STR_LEN); ++ option->u.run.value.string = string; + break; + case OPT_COLOR: +- string = option->value.string; ++ string = option->u.run.value.string; + assert(string); + decode_color(string, strlen(string), +- &option->value.color); ++ &option->u.run.value.color); + break; + case OPT_CODEPAGE: +- string = option->value.string; ++ string = option->u.run.value.string; + assert(string); +- option->value.number = get_cp_index(string); ++ option->u.run.value.number = get_cp_index(string); + break; + case OPT_BOOL: + case OPT_INT: +diff --git a/src/config/options.h b/src/config/options.h +index 2baea8c..bd9afab 100644 +--- a/src/config/options.h ++++ b/src/config/options.h +@@ -99,6 +99,9 @@ struct listbox_item; /* bfu/listbox.h */ + struct option; /* defined later in this file */ + struct session; /* session/session.h */ + ++typedef unsigned char *option_command_fn_T(struct option *, ++ unsigned char ***, int *); ++ + union option_value { + /* XXX: Keep first to make @options_root initialization possible. */ + /* The OPT_TREE list_head is allocated. */ +@@ -114,7 +117,7 @@ union option_value { + color_T color; + + /* The OPT_COMMAND value */ +- unsigned char *(*command)(struct option *, unsigned char ***, int *); ++ option_command_fn_T *command; + + /* The OPT_STRING string is allocated and has length MAX_STR_LEN. + * The OPT_ALIAS string is NOT allocated, has variable length +@@ -142,25 +145,35 @@ struct option { + OBJECT_HEAD(struct option); + + unsigned char *name; ++ unsigned char *desc; ++ unsigned char *capt; + enum option_flags flags; + enum option_type type; + long min, max; +- union option_value value; +- unsigned char *desc; +- unsigned char *capt; +- +- struct option *root; +- +- /* To be called when the option (or sub-option if it's a tree) is +- * changed. If it returns zero, we will continue descending the options +- * tree checking for change handlers. */ +- change_hook_T change_hook; +- +- struct listbox_item *box_item; ++ union { ++ struct option_init { ++ long value_long; ++ void *value_dataptr; ++ option_command_fn_T *value_funcptr; ++ } init; ++ struct option_run { ++ union option_value value; ++ struct option *root; ++ ++ /* To be called when the option (or sub-option ++ * if it's a tree) is changed. If it returns ++ * zero, we will continue descending the options ++ * tree checking for change handlers. */ ++ change_hook_T change_hook; ++ ++ struct listbox_item *box_item; ++ } run; ++ } u; + }; + +-#define INIT_OPTION(name, flags, type, min, max, value, desc, capt) \ +- { NULL_LIST_HEAD, INIT_OBJECT("option"), name, flags, type, min, max, { (LIST_OF(struct option) *) (value) }, desc, capt } ++#define INIT_OPTION(name, flags, type, min, max, vl, vdp, vfp, desc, capt) \ ++ { NULL_LIST_HEAD, INIT_OBJECT("option"), name, desc, capt, \ ++ flags, type, min, max, {{ vl, vdp, vfp }} } + + extern struct option *config_options; + extern struct option *cmdline_options; +@@ -323,40 +336,51 @@ extern void register_options(struct option_info info[], struct option *tree); + extern void unregister_options(struct option_info info[], struct option *tree); + + #define NULL_OPTION_INFO \ +- { INIT_OPTION(NULL, 0, 0, 0, 0, NULL, NULL, NULL), NULL } ++ { INIT_OPTION(NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL), NULL } + + #define INIT_OPT_BOOL(path, capt, name, flags, def, desc) \ +- { INIT_OPTION(name, flags, OPT_BOOL, 0, 1, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_BOOL, 0, 1, \ ++ def, NULL, NULL, DESC(desc), capt), path } + + #define INIT_OPT_INT(path, capt, name, flags, min, max, def, desc) \ +- { INIT_OPTION(name, flags, OPT_INT, min, max, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_INT, min, max, \ ++ def, NULL, NULL, DESC(desc), capt), path } + + #define INIT_OPT_LONG(path, capt, name, flags, min, max, def, desc) \ +- { INIT_OPTION(name, flags, OPT_LONG, min, max, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_LONG, min, max, \ ++ def, NULL, NULL, DESC(desc), capt), path } + + #define INIT_OPT_STRING(path, capt, name, flags, def, desc) \ +- { INIT_OPTION(name, flags, OPT_STRING, 0, MAX_STR_LEN, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_STRING, 0, MAX_STR_LEN, \ ++ 0, def, NULL, DESC(desc), capt), path } + + #define INIT_OPT_CODEPAGE(path, capt, name, flags, def, desc) \ +- { INIT_OPTION(name, flags, OPT_CODEPAGE, 0, 0, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_CODEPAGE, 0, 0, \ ++ 0, def, NULL, DESC(desc), capt), path } + + #define INIT_OPT_COLOR(path, capt, name, flags, def, desc) \ +- { INIT_OPTION(name, flags, OPT_COLOR, 0, 0, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_COLOR, 0, 0, \ ++ 0, def, NULL, DESC(desc), capt), path } + + #define INIT_OPT_LANGUAGE(path, capt, name, flags, desc) \ +- { INIT_OPTION(name, flags, OPT_LANGUAGE, 0, 0, 0, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_LANGUAGE, 0, 0, \ ++ 0, NULL, NULL, DESC(desc), capt), path } + + #define INIT_OPT_COMMAND(path, capt, name, flags, cmd, desc) \ +- { INIT_OPTION(name, flags, OPT_COMMAND, 0, 0, cmd, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_COMMAND, 0, 0, \ ++ 0, 0, cmd, DESC(desc), capt), path } + + #define INIT_OPT_CMDALIAS(path, capt, name, flags, def, desc) \ +- { INIT_OPTION(name, flags, OPT_ALIAS, 0, sizeof(def) - 1, def, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_ALIAS, 0, sizeof(def) - 1, \ ++ 0, def, NULL, DESC(desc), capt), path } + + #define INIT_OPT_ALIAS(path, name, flags, def) \ +- { INIT_OPTION(name, flags, OPT_ALIAS, 0, sizeof(def) - 1, def, NULL, NULL), path } ++ { INIT_OPTION(name, flags, OPT_ALIAS, 0, sizeof(def) - 1, \ ++ 0, def, NULL, NULL, NULL), path } + + #define INIT_OPT_TREE(path, capt, name, flags, desc) \ +- { INIT_OPTION(name, flags, OPT_TREE, 0, 0, NULL, DESC(desc), capt), path } ++ { INIT_OPTION(name, flags, OPT_TREE, 0, 0, \ ++ 0, NULL, NULL, DESC(desc), capt), path } + + + /* TODO: We need to do *something* with this ;). */ +diff --git a/src/config/opttypes.c b/src/config/opttypes.c +index e79e42f..63e573c 100644 +--- a/src/config/opttypes.c ++++ b/src/config/opttypes.c +@@ -59,7 +59,7 @@ gen_cmd(struct option *o, unsigned char ***argv, int *argc) + static unsigned char * + bool_cmd(struct option *o, unsigned char ***argv, int *argc) + { +- o->value.number = 1; ++ o->u.run.value.number = 1; + + if (!*argc) return NULL; + +@@ -67,8 +67,8 @@ bool_cmd(struct option *o, unsigned char ***argv, int *argc) + if (!(*argv)[0][0] || (*argv)[0][1]) return NULL; + + switch ((*argv)[0][0]) { +- case '0': o->value.number = 0; break; +- case '1': o->value.number = 1; break; ++ case '0': o->u.run.value.number = 0; break; ++ case '1': o->u.run.value.number = 1; break; + default: return NULL; + } + +@@ -80,7 +80,7 @@ bool_cmd(struct option *o, unsigned char ***argv, int *argc) + static unsigned char * + exec_cmd(struct option *o, unsigned char ***argv, int *argc) + { +- return o->value.command(o, argv, argc); ++ return o->u.run.value.command(o, argv, argc); + } + + +@@ -93,16 +93,16 @@ exec_cmd(struct option *o, unsigned char ***argv, int *argc) + static unsigned char * + redir_cmd(struct option *opt, unsigned char ***argv, int *argc) + { +- struct option *real = get_opt_rec(config_options, opt->value.string); ++ struct option *real = get_opt_rec(config_options, opt->u.run.value.string); + unsigned char * ret = NULL; + +- assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->value.string); ++ assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->u.run.value.string); + if_assert_failed { return ret; } + + if (option_types[real->type].cmdline) { + ret = option_types[real->type].cmdline(real, argv, argc); + if ((opt->flags & OPT_ALIAS_NEGATE) && real->type == OPT_BOOL) { +- real->value.number = !real->value.number; ++ real->u.run.value.number = !real->u.run.value.number; + } + } + +@@ -112,10 +112,10 @@ redir_cmd(struct option *opt, unsigned char ***argv, int *argc) + static unsigned char * + redir_rd(struct option *opt, unsigned char **file, int *line) + { +- struct option *real = get_opt_rec(config_options, opt->value.string); ++ struct option *real = get_opt_rec(config_options, opt->u.run.value.string); + unsigned char *ret = NULL; + +- assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->value.string); ++ assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->u.run.value.string); + if_assert_failed { return ret; } + + if (option_types[real->type].read) { +@@ -131,9 +131,9 @@ redir_rd(struct option *opt, unsigned char **file, int *line) + static void + redir_wr(struct option *opt, struct string *string) + { +- struct option *real = get_opt_rec(config_options, opt->value.string); ++ struct option *real = get_opt_rec(config_options, opt->u.run.value.string); + +- assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->value.string); ++ assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->u.run.value.string); + if_assert_failed { return; } + + if (option_types[real->type].write) +@@ -143,10 +143,10 @@ redir_wr(struct option *opt, struct string *string) + static int + redir_set(struct option *opt, unsigned char *str) + { +- struct option *real = get_opt_rec(config_options, opt->value.string); ++ struct option *real = get_opt_rec(config_options, opt->u.run.value.string); + int ret = 0; + +- assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->value.string); ++ assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->u.run.value.string); + if_assert_failed { return ret; } + + if (option_types[real->type].set) { +@@ -165,10 +165,10 @@ redir_set(struct option *opt, unsigned char *str) + static int + redir_eq(struct option *opt, const unsigned char *str) + { +- struct option *real = get_opt_rec(config_options, opt->value.string); ++ struct option *real = get_opt_rec(config_options, opt->u.run.value.string); + int ret = 0; + +- assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->value.string); ++ assertm(real != NULL, "%s aliased to unknown option %s!", opt->name, opt->u.run.value.string); + if_assert_failed { return ret; } + + if (option_types[real->type].equals) { +@@ -225,40 +225,40 @@ num_rd(struct option *opt, unsigned char **file, int *line) + static int + num_set(struct option *opt, unsigned char *str) + { +- opt->value.number = *((long *) str); ++ opt->u.run.value.number = *((long *) str); + return 1; + } + + static int + num_eq(struct option *opt, const unsigned char *str) + { +- return str && opt->value.number == *(const long *) str; ++ return str && opt->u.run.value.number == *(const long *) str; + } + + static void + num_wr(struct option *option, struct string *string) + { +- add_knum_to_string(string, option->value.number); ++ add_knum_to_string(string, option->u.run.value.number); + } + + + static int + long_set(struct option *opt, unsigned char *str) + { +- opt->value.big_number = *((long *) str); ++ opt->u.run.value.big_number = *((long *) str); + return 1; + } + + static int + long_eq(struct option *opt, const unsigned char *str) + { +- return str && opt->value.big_number == *(const long *) str; ++ return str && opt->u.run.value.big_number == *(const long *) str; + } + + static void + long_wr(struct option *option, struct string *string) + { +- add_knum_to_string(string, option->value.big_number); ++ add_knum_to_string(string, option->u.run.value.big_number); + } + + static unsigned char * +@@ -318,25 +318,25 @@ str_rd(struct option *opt, unsigned char **file, int *line) + static int + str_set(struct option *opt, unsigned char *str) + { +- assert(opt->value.string); ++ assert(opt->u.run.value.string); + +- safe_strncpy(opt->value.string, str, MAX_STR_LEN); ++ safe_strncpy(opt->u.run.value.string, str, MAX_STR_LEN); + return 1; + } + + static int + str_eq(struct option *opt, const unsigned char *str) + { +- return str && strcmp(opt->value.string, str) == 0; ++ return str && strcmp(opt->u.run.value.string, str) == 0; + } + + static void + str_wr(struct option *o, struct string *s) + { +- int len = strlen(o->value.string); ++ int len = strlen(o->u.run.value.string); + + int_upper_bound(&len, o->max - 1); +- add_optstring_to_string(s, o->value.string, len); ++ add_optstring_to_string(s, o->u.run.value.string, len); + } + + static void +@@ -344,8 +344,8 @@ str_dup(struct option *opt, struct option *template) + { + unsigned char *new = mem_alloc(MAX_STR_LEN); + +- if (new) safe_strncpy(new, template->value.string, MAX_STR_LEN); +- opt->value.string = new; ++ if (new) safe_strncpy(new, template->u.run.value.string, MAX_STR_LEN); ++ opt->u.run.value.string = new; + } + + +@@ -356,20 +356,20 @@ cp_set(struct option *opt, unsigned char *str) + + if (ret < 0) return 0; + +- opt->value.number = ret; ++ opt->u.run.value.number = ret; + return 1; + } + + static int + cp_eq(struct option *opt, const unsigned char *str) + { +- return str && get_cp_index(str) == opt->value.number; ++ return str && get_cp_index(str) == opt->u.run.value.number; + } + + static void + cp_wr(struct option *o, struct string *s) + { +- unsigned char *mime_name = get_cp_config_name(o->value.number); ++ unsigned char *mime_name = get_cp_config_name(o->u.run.value.number); + + add_optstring_to_string(s, mime_name, strlen(mime_name)); + } +@@ -379,8 +379,8 @@ static int + lang_set(struct option *opt, unsigned char *str) + { + #ifdef CONFIG_NLS +- opt->value.number = name_to_language(str); +- set_language(opt->value.number); ++ opt->u.run.value.number = name_to_language(str); ++ set_language(opt->u.run.value.number); + #endif + return 1; + } +@@ -389,7 +389,7 @@ static int + lang_eq(struct option *opt, const unsigned char *str) + { + #ifdef CONFIG_NLS +- return str && name_to_language(str) == opt->value.number; ++ return str && name_to_language(str) == opt->u.run.value.number; + #else + return 1; /* All languages are the same. */ + #endif +@@ -413,7 +413,7 @@ lang_wr(struct option *o, struct string *s) + static int + color_set(struct option *opt, unsigned char *str) + { +- return !decode_color(str, strlen(str), &opt->value.color); ++ return !decode_color(str, strlen(str), &opt->u.run.value.color); + } + + static int +@@ -422,13 +422,13 @@ color_eq(struct option *opt, const unsigned char *str) + color_T color; + + return str && !decode_color(str, strlen(str), &color) +- && color == opt->value.color; ++ && color == opt->u.run.value.color; + } + + static void + color_wr(struct option *opt, struct string *str) + { +- color_T color = opt->value.color; ++ color_T color = opt->u.run.value.color; + unsigned char hexcolor[8]; + const unsigned char *strcolor = get_color_string(color, hexcolor); + +@@ -439,11 +439,11 @@ static void + tree_dup(struct option *opt, struct option *template) + { + LIST_OF(struct option) *new = init_options_tree(); +- LIST_OF(struct option) *tree = template->value.tree; ++ LIST_OF(struct option) *tree = template->u.run.value.tree; + struct option *option; + + if (!new) return; +- opt->value.tree = new; ++ opt->u.run.value.tree = new; + + foreachback (option, *tree) { + struct option *new_opt = copy_option(option); +@@ -451,16 +451,16 @@ tree_dup(struct option *opt, struct option *template) + if (!new_opt) continue; + object_nolock(new_opt, "option"); + add_to_list_end(*new, new_opt); +- new_opt->root = opt; ++ new_opt->u.run.root = opt; + +- if (!new_opt->box_item) continue; ++ if (!new_opt->u.run.box_item) continue; + + if (new_opt->name && !strcmp(new_opt->name, "_template_")) +- new_opt->box_item->visible = get_opt_bool("config.show_template"); ++ new_opt->u.run.box_item->visible = get_opt_bool("config.show_template"); + +- if (opt->box_item) { +- add_to_list(opt->box_item->child, +- new_opt->box_item); ++ if (opt->u.run.box_item) { ++ add_to_list(opt->u.run.box_item->child, ++ new_opt->u.run.box_item); + } + } + } +diff --git a/src/cookies/cookies.c b/src/cookies/cookies.c +index 011f853..c64830f 100644 +--- a/src/cookies/cookies.c ++++ b/src/cookies/cookies.c +@@ -128,7 +128,7 @@ static struct option_info cookies_options[] = { + NULL_OPTION_INFO, + }; + +-#define get_opt_cookies(which) cookies_options[(which)].option.value ++#define get_opt_cookies(which) cookies_options[(which)].option.u.run.value + #define get_cookies_accept_policy() get_opt_cookies(COOKIES_ACCEPT_POLICY).number + #define get_cookies_max_age() get_opt_cookies(COOKIES_MAX_AGE).number + #define get_cookies_paranoid_security() get_opt_cookies(COOKIES_PARANOID_SECURITY).number +diff --git a/src/dialogs/menu.c b/src/dialogs/menu.c +index b8233ae..2a769fc 100644 +--- a/src/dialogs/menu.c ++++ b/src/dialogs/menu.c +@@ -858,7 +858,7 @@ pass_uri_to_command(struct session *ses, struct document_view *doc_view, + text = stracpy(option->name); + if (!text) continue; + +- data = format_command(option->value.string, uri); ++ data = format_command(option->u.run.value.string, uri); + if (!data) { + mem_free(text); + continue; +diff --git a/src/dialogs/options.c b/src/dialogs/options.c +index f40d07d..1bf17fb 100644 +--- a/src/dialogs/options.c ++++ b/src/dialogs/options.c +@@ -35,8 +35,8 @@ display_codepage(struct terminal *term, void *name_, void *xxx) + + assertm(index != -1, "%s", name); + +- if (opt->value.number != index) { +- opt->value.number = index; ++ if (opt->u.run.value.number != index) { ++ opt->u.run.value.number = index; + option_changed(NULL, opt); + } + +diff --git a/src/globhist/globhist.c b/src/globhist/globhist.c +index ecb7c90..71a6b1b 100644 +--- a/src/globhist/globhist.c ++++ b/src/globhist/globhist.c +@@ -83,7 +83,7 @@ static struct option_info global_history_options[] = { + NULL_OPTION_INFO, + }; + +-#define get_opt_globhist(which) global_history_options[(which)].option.value ++#define get_opt_globhist(which) global_history_options[(which)].option.u.run.value + #define get_globhist_enable() get_opt_globhist(GLOBHIST_ENABLE).number + #define get_globhist_max_items() get_opt_globhist(GLOBHIST_MAX_ITEMS).number + #define get_globhist_display_type() get_opt_globhist(GLOBHIST_DISPLAY_TYPE).number +diff --git a/src/mime/backend/default.c b/src/mime/backend/default.c +index f2ea450..9833143 100644 +--- a/src/mime/backend/default.c ++++ b/src/mime/backend/default.c +@@ -120,7 +120,7 @@ get_content_type_default(unsigned char *extension) + + opt_tree = get_opt_rec_real(config_options, "mime.extension"); + +- foreach (opt, *opt_tree->value.tree) { ++ foreach (opt, *opt_tree->u.run.value.tree) { + unsigned char *namepos = opt->name + strlen(opt->name) - 1; + unsigned char *extpos = extend; + +@@ -140,7 +140,7 @@ get_content_type_default(unsigned char *extension) + * extension.. */ + if (namepos < opt->name + && (extpos < extension || *extpos == '.')) +- return stracpy(opt->value.string); ++ return stracpy(opt->u.run.value.string); + } + + return NULL; +@@ -184,7 +184,7 @@ get_mime_handler_option(struct option *type_opt, int xwin) + handler_opt = get_opt_rec_real(config_options, "mime.handler"); + if (!handler_opt) return NULL; + +- handler_opt = get_opt_rec_real(handler_opt, type_opt->value.string); ++ handler_opt = get_opt_rec_real(handler_opt, type_opt->u.run.value.string); + if (!handler_opt) return NULL; + + return get_opt_rec_real(handler_opt, get_system_str(xwin)); +@@ -202,7 +202,7 @@ get_mime_handler_default(unsigned char *type, int have_x) + if (!handler_opt) return NULL; + + return init_mime_handler(get_opt_str_tree(handler_opt, "program"), +- type_opt->value.string, ++ type_opt->u.run.value.string, + default_mime_module.name, + get_opt_bool_tree(handler_opt, "ask"), + get_opt_bool_tree(handler_opt, "block")); +diff --git a/src/mime/backend/mailcap.c b/src/mime/backend/mailcap.c +index afbb9d1..d04ff19 100644 +--- a/src/mime/backend/mailcap.c ++++ b/src/mime/backend/mailcap.c +@@ -123,7 +123,7 @@ static struct option_info mailcap_options[] = { + }; + + #define get_opt_mailcap(which) mailcap_options[(which)].option +-#define get_mailcap(which) get_opt_mailcap(which).value ++#define get_mailcap(which) get_opt_mailcap(which).u.run.value + #define get_mailcap_ask() get_mailcap(MAILCAP_ASK).number + #define get_mailcap_description() get_mailcap(MAILCAP_DESCRIPTION).number + #define get_mailcap_enable() get_mailcap(MAILCAP_ENABLE).number +diff --git a/src/mime/backend/mimetypes.c b/src/mime/backend/mimetypes.c +index 6e3e675..184edbf 100644 +--- a/src/mime/backend/mimetypes.c ++++ b/src/mime/backend/mimetypes.c +@@ -61,8 +61,8 @@ static struct option_info mimetypes_options[] = { + NULL_OPTION_INFO, + }; + +-#define get_opt_mimetypes(which) mimetypes_options[(which)].option +-#define get_mimetypes(which) get_opt_mimetypes(which).value ++#define get_opt_mimetypes(which) mimetypes_options[(which)].option ++#define get_mimetypes(which) get_opt_mimetypes(which).u.run.value + #define get_mimetypes_enable() get_mimetypes(MIMETYPES_ENABLE).number + #define get_mimetypes_path() get_mimetypes(MIMETYPES_PATH).string + +diff --git a/src/mime/dialogs.c b/src/mime/dialogs.c +index f55310f..5aeba27 100644 +--- a/src/mime/dialogs.c ++++ b/src/mime/dialogs.c +@@ -65,7 +65,7 @@ menu_del_ext(struct terminal *term, void *fcp, void *xxx2) + msg_box(term, getml(extension, (void *) NULL), MSGBOX_FREE_TEXT, + N_("Delete extension"), ALIGN_CENTER, + msg_text(term, N_("Delete extension %s -> %s?"), +- extension, opt->value.string), ++ extension, opt->u.run.value.string), + extension, 2, + MSG_BOX_BUTTON(N_("~Yes"), really_del_ext, B_ENTER), + MSG_BOX_BUTTON(N_("~No"), NULL, B_ESC)); +@@ -116,7 +116,7 @@ menu_add_ext(struct terminal *term, void *fcp, void *xxx2) + + if (opt) { + safe_strncpy(new->ext, fcp, MAX_STR_LEN); +- safe_strncpy(new->ct, opt->value.string, MAX_STR_LEN); ++ safe_strncpy(new->ct, opt->u.run.value.string, MAX_STR_LEN); + safe_strncpy(new->ext_orig, fcp, MAX_STR_LEN); + } + +@@ -174,7 +174,7 @@ menu_list_ext(struct terminal *term, void *fn_, void *xxx) + } + + translated2 = memacpy(translated.source, translated.length); +- optptr2 = stracpy(opt->value.string); ++ optptr2 = stracpy(opt->u.run.value.string); + + if (translated2 && optptr2) { + add_to_menu(&mi, translated.source, optptr2, ACT_MAIN_NONE, +diff --git a/src/mime/mime.c b/src/mime/mime.c +index 7f0d454..a36ba08 100644 +--- a/src/mime/mime.c ++++ b/src/mime/mime.c +@@ -49,7 +49,7 @@ static struct option_info mime_options[] = { + }; + + #define get_opt_mime(which) mime_options[(which)].option +-#define get_default_mime_type() get_opt_mime(MIME_DEFAULT_TYPE).value.string ++#define get_default_mime_type() get_opt_mime(MIME_DEFAULT_TYPE).u.run.value.string + + /* Checks protocols headers for a suitable filename */ + static unsigned char * +diff --git a/src/protocol/nntp/nntp.c b/src/protocol/nntp/nntp.c +index 45016bc..88b102e 100644 +--- a/src/protocol/nntp/nntp.c ++++ b/src/protocol/nntp/nntp.c +@@ -53,13 +53,13 @@ static struct option_info nntp_protocol_options[] = { + unsigned char * + get_nntp_server(void) + { +- return get_opt_nntp(NNTP_PROTOCOL_SERVER).value.string; ++ return get_opt_nntp(NNTP_PROTOCOL_SERVER).u.run.value.string; + } + + unsigned char * + get_nntp_header_entries(void) + { +- return get_opt_nntp(NNTP_PROTOCOL_HEADER_ENTRIES).value.string; ++ return get_opt_nntp(NNTP_PROTOCOL_HEADER_ENTRIES).u.run.value.string; + } + + struct module nntp_protocol_module = struct_module( +diff --git a/src/protocol/rewrite/rewrite.c b/src/protocol/rewrite/rewrite.c +index 42ef5ae..9d8f990 100644 +--- a/src/protocol/rewrite/rewrite.c ++++ b/src/protocol/rewrite/rewrite.c +@@ -220,8 +220,8 @@ static struct option_info uri_rewrite_options[] = { + }; + + #define get_opt_rewrite(which) uri_rewrite_options[(which)].option +-#define get_dumb_enable() get_opt_rewrite(URI_REWRITE_ENABLE_DUMB).value.number +-#define get_smart_enable() get_opt_rewrite(URI_REWRITE_ENABLE_SMART).value.number ++#define get_dumb_enable() get_opt_rewrite(URI_REWRITE_ENABLE_DUMB).u.run.value.number ++#define get_smart_enable() get_opt_rewrite(URI_REWRITE_ENABLE_SMART).u.run.value.number + + static inline struct option * + get_prefix_tree(enum uri_rewrite_option tree) +@@ -316,7 +316,7 @@ get_uri_rewrite_prefix(enum uri_rewrite_type type, unsigned char *url) + ? URI_REWRITE_DUMB_TREE : URI_REWRITE_SMART_TREE; + struct option *prefix_tree = get_prefix_tree(tree); + struct option *opt = get_opt_rec_real(prefix_tree, url); +- unsigned char *exp = opt ? opt->value.string : NULL; ++ unsigned char *exp = opt ? opt->u.run.value.string : NULL; + + return (exp && *exp) ? exp : NULL; + } +diff --git a/src/protocol/user.c b/src/protocol/user.c +index 8c6f978..36f6b22 100644 +--- a/src/protocol/user.c ++++ b/src/protocol/user.c +@@ -113,7 +113,7 @@ get_user_program(struct terminal *term, unsigned char *progid, int progidlen) + opt = get_opt_rec_real(config_options, name.source); + + done_string(&name); +- return (unsigned char *) (opt ? opt->value.string : NULL); ++ return (unsigned char *) (opt ? opt->u.run.value.string : NULL); + } + + +diff --git a/src/scripting/lua/core.c b/src/scripting/lua/core.c +index 8aec3a9..0a9a23c 100644 +--- a/src/scripting/lua/core.c ++++ b/src/scripting/lua/core.c +@@ -573,22 +573,22 @@ l_get_option(LS) + /* Convert to an appropriate Lua type */ + switch (opt->type) { + case OPT_BOOL: +- lua_pushboolean(S, opt->value.number); ++ lua_pushboolean(S, opt->u.run.value.number); + break; + case OPT_INT: +- lua_pushnumber(S, opt->value.number); ++ lua_pushnumber(S, opt->u.run.value.number); + break; + case OPT_LONG: +- lua_pushnumber(S, opt->value.big_number); ++ lua_pushnumber(S, opt->u.run.value.big_number); + break; + case OPT_STRING: +- lua_pushstring(S, opt->value.string); ++ lua_pushstring(S, opt->u.run.value.string); + break; + case OPT_CODEPAGE: + { + unsigned char *cp_name; + +- cp_name = get_cp_config_name(opt->value.number); ++ cp_name = get_cp_config_name(opt->u.run.value.number); + lua_pushstring(S, cp_name); + break; + } +@@ -610,7 +610,7 @@ l_get_option(LS) + unsigned char hexcolor[8]; + const unsigned char *strcolor; + +- color = opt->value.color; ++ color = opt->u.run.value.color; + strcolor = get_color_string(color, hexcolor); + lua_pushstring(S, strcolor); + break; +diff --git a/src/session/session.c b/src/session/session.c +index 7f97317..3b59b2b 100644 +--- a/src/session/session.c ++++ b/src/session/session.c +@@ -783,7 +783,7 @@ setup_first_session(struct session *ses, struct uri *uri) + + if (!get_opt_bool("config.saving_style_w")) { + struct option *opt = get_opt_rec(config_options, "config.saving_style_w"); +- opt->value.number = 1; ++ opt->u.run.value.number = 1; + option_changed(ses, opt); + if (get_opt_int("config.saving_style") != 3) { + info_box(term, 0, +diff --git a/src/terminal/screen.c b/src/terminal/screen.c +index 8f838a6..c0e5ecb 100644 +--- a/src/terminal/screen.c ++++ b/src/terminal/screen.c +@@ -433,7 +433,7 @@ add_screen_driver(enum term_mode_type type, struct terminal *term, int env_len) + set_screen_driver_opt(driver, term->spec); + memcpy(driver->name, term->spec->name, env_len + 1); + +- term->spec->change_hook = screen_driver_change_hook; ++ term->spec->u.run.change_hook = screen_driver_change_hook; + + #ifdef CONFIG_UTF8 + term->utf8_cp = driver->opt.utf8_cp; +diff --git a/src/viewer/text/search.c b/src/viewer/text/search.c +index fc1cdd7..85bed2d 100644 +--- a/src/viewer/text/search.c ++++ b/src/viewer/text/search.c +@@ -1430,8 +1430,8 @@ text_typeahead_handler(struct input_line *line, int action_id) + "document.browse.search.regex"); + + if (opt) { +- opt->value.number = (opt->value.number + 1) +- % (opt->max + 1); ++ opt->u.run.value.number = ((opt->u.run.value.number + 1) ++ % (opt->max + 1)); + option_changed(ses, opt); + } + } +-- +1.6.4.11.gc8f6 + --- elinks-0.12~pre5.orig/debian/patches/series +++ elinks-0.12~pre5/debian/patches/series @@ -0,0 +1 @@ +08_524696_fix_imdb_urls.diff --- elinks-0.12~pre5.orig/debian/patches/03_459467_ui.leds.enable_0.diff +++ elinks-0.12~pre5/debian/patches/03_459467_ui.leds.enable_0.diff @@ -0,0 +1,43 @@ +Set ui.leds.enable to 0 by default for #459467. No frequent wakeups on +laptops and desktop folks can enable this if they like it. Patch based +on suggestion from أحمد المحمودي (Ahmed El-Mahmoudy). + +diff --git a/doc/html/elinks.conf.5.html b/doc/html/elinks.conf.5.html +index b350f4d..b1e0d1f 100644 +--- a/doc/html/elinks.conf.5.html ++++ b/doc/html/elinks.conf.5.html +@@ -1455,7 +1455,7 @@ Requires that underlining is enabled for the terminal. + Requires that underlining is enabled for the terminal. +

ui.leds (LEDs)

+

LEDs (visual indicators) options. +-

ui.leds.enable [0|1] (default: 1)
Enable LEDs. These visual indicators will inform you about various ++

ui.leds.enable [0|1] (default: 0)
Enable LEDs. These visual indicators will inform you about various + states. +

ui.sessions (Sessions)

+

Sessions settings. +diff --git a/doc/man/man5/elinks.conf.5 b/doc/man/man5/elinks.conf.5 +index 4a0fec7..c9a1167 100644 +--- a/doc/man/man5/elinks.conf.5 ++++ b/doc/man/man5/elinks.conf.5 +@@ -2810,7 +2810,7 @@ Whether to underline button shortcuts to make them more visible\&. Requires that + .SS "ui\&.leds (LEDs)" + LEDs (visual indicators) options\&. + .PP +-ui\&.leds\&.enable \fB[0|1]\fR (default: 1) ++ui\&.leds\&.enable \fB[0|1]\fR (default: 0) + .RS 4 + Enable LEDs\&. These visual indicators will inform you about various states\&. + .RE +diff --git a/src/bfu/leds.c b/src/bfu/leds.c +index 989acb6..a4d6e85 100644 +--- a/src/bfu/leds.c ++++ b/src/bfu/leds.c +@@ -92,7 +92,7 @@ static struct option_info led_options[] = { + N_("LEDs (visual indicators) options.")), + + INIT_OPT_BOOL("ui.leds", N_("Enable"), +- "enable", 0, 1, ++ "enable", 0, 0, + N_("Enable LEDs. These visual indicators will inform you " + "about various states.")), + --- elinks-0.12~pre5.orig/debian/patches/08_524696_fix_imdb_urls.diff +++ elinks-0.12~pre5/debian/patches/08_524696_fix_imdb_urls.diff @@ -0,0 +1,14 @@ +Fixing IMDB links +Index: elinks-0.12~pre5/src/protocol/rewrite/rewrite.c +=================================================================== +--- elinks-0.12~pre5.orig/src/protocol/rewrite/rewrite.c 2010-06-07 17:50:17.761937374 -0700 ++++ elinks-0.12~pre5/src/protocol/rewrite/rewrite.c 2010-06-07 17:50:35.671993219 -0700 +@@ -198,7 +198,7 @@ + INIT_OPT_SMART_PREFIX("dict", "http://dictionary.reference.com/search?q=%s"), + INIT_OPT_SMART_PREFIX("thes", "http://thesaurus.reference.com/search?q=%s"), + INIT_OPT_SMART_PREFIX("a", "http://acronymfinder.com/af-query.asp?String=exact&Acronym=%s"), +- INIT_OPT_SMART_PREFIX("imdb", "http://imdb.com/Find?%s"), ++ INIT_OPT_SMART_PREFIX("imdb", "http://www.imdb.com/find?s=all&q=%s"), + INIT_OPT_SMART_PREFIX("mw", "http://www.m-w.com/cgi-bin/dictionary?book=Dictionary&va=%s"), + INIT_OPT_SMART_PREFIX("mwt", "http://www.m-w.com/cgi-bin/thesaurus?book=Thesaurus&va=%s"), + INIT_OPT_SMART_PREFIX("whatis", "http://uptime.netcraft.com/up/graph/?host=%s"),