mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Merge with master
This commit is contained in:
commit
8bb34f124f
26
NEWS
26
NEWS
@ -34,7 +34,6 @@ roughly in decreasing order of importance.
|
||||
- (enhancement) Reject invalid UTF-8 input from documents and
|
||||
terminals.
|
||||
* Changes in terminal support
|
||||
- (new feature) Support for pasting from GNU screen clipboard
|
||||
- (enhancement) Make ELinks FreeBSD friendly. Defined keys used on
|
||||
FreeBSD console
|
||||
- (enhancement) Mouse wheel support on BSD via moused -z 4
|
||||
@ -67,12 +66,12 @@ roughly in decreasing order of importance.
|
||||
- (enhancement) Tell the user how to move bookmarks.
|
||||
- (bugfix) Fix crash when moving bookmarks out of a folder.
|
||||
- (bugfix) Fixed crash if XBEL bookmark has no title
|
||||
- (bugfix 886) If the user edits or deletes a cookie, mark the
|
||||
- (bugfix 886, 872) If the user edits or deletes a cookie, mark the
|
||||
cookie list as needing to be saved.
|
||||
- (enhancement 887) Save in cookie manager should save cookies even
|
||||
if unmodified.
|
||||
* Changes in the user interface
|
||||
- (new feature) Internal clipboard support
|
||||
- (new feature 145) Internal clipboard support
|
||||
- (enhancement) Place the cursor on the current listbox item, to
|
||||
help screen readers
|
||||
- (enhancement) Localization updates
|
||||
@ -81,7 +80,7 @@ roughly in decreasing order of importance.
|
||||
- (new feature) Autocreate directories needed to download a file.
|
||||
- (new feature) Option ui.show_menu_bar_always
|
||||
- (new feature) Option ui.tabs moves the tab bar to the top.
|
||||
- (bugfix) Fix searching in menus past unselectable items.
|
||||
- (bugfix 24) Fix searching in menus past unselectable items.
|
||||
- (bugfix) Fix crash with empty File extensions menu.
|
||||
- (new feature) New actions: kill-word-back, move-backward-word,
|
||||
move-forward-word
|
||||
@ -92,8 +91,8 @@ roughly in decreasing order of importance.
|
||||
- (bugfix 396) Never show empty filename in the what-to-do dialog
|
||||
* Changes in support for URI schemes, protocols, caching, and encodings
|
||||
- (workaround 841) SMB is now disabled because of CVE-2006-5925.
|
||||
- (new feature) Native FSP protocol support (replaces CGI program in
|
||||
contrib/fsp/)
|
||||
- (new feature 630) Native FSP protocol support (replaces CGI
|
||||
program in contrib/fsp/)
|
||||
- (new feature) Local CGI
|
||||
- (experimental, bugfix) Gopher changes, including crash fixes
|
||||
- (enhancement) FTP handler parses file sizes better
|
||||
@ -135,13 +134,11 @@ roughly in decreasing order of importance.
|
||||
* Changes in parsing and rendering of non-HTML content-types
|
||||
- (new feature) If a mailcap entry indicates copiousoutput, ELinks
|
||||
itself acts as a pager.
|
||||
- (new feature) Let plain text change colors with ESC [ 31 m or
|
||||
similar control sequences.
|
||||
* Changes in the document viewer and tabs
|
||||
- (new feature) Highlight links as one enters link prefixes.
|
||||
- (new feature) Backspace backs out the last digit of the prefix.
|
||||
- (bugfix) Tabs opened by -remote now go behind existing dialogs.
|
||||
- (new feature) -dump-color-mode
|
||||
- (new feature 622) -dump-color-mode
|
||||
- (bugfix) Fix accesskeys so that they work when priority is 0
|
||||
- (enhancement) Text type-ahead searching: don't follow current link
|
||||
on enter
|
||||
@ -239,7 +236,7 @@ have already been considered.
|
||||
- (bugfix) Fix a crash when adding a server in the cookie manager.
|
||||
- (bugfix) cookies: "Add Server" ignores "cookies.accept_policy".
|
||||
- (bugfix) Fix data: protocol.
|
||||
- (bugfix) Properly deselect the main menu instead of crashing
|
||||
- (bugfix 747) Properly deselect the main menu instead of crashing
|
||||
- (bugfix 778) ELinks crashes on binary files when
|
||||
document.plain.display_links is set
|
||||
- (bugfix 784) UTF-8 mode misconverts non-ASCII entity in Latin-1
|
||||
@ -258,6 +255,11 @@ have already been considered.
|
||||
- (bugfix 826) too small table for double-cell characters
|
||||
- (bugfix 902) crash: "overflow detected realloc()" in realloc_line
|
||||
- (bugfix 912) wrong color in one cell of an HTML input field
|
||||
- (bugfix 835) Text in textarea is unaffected by horizontal
|
||||
scrolling of document in UTF-8 mode
|
||||
- (bugfix 823) Big textarea is too slow with CONFIG_UTF8
|
||||
- (bugfix 754) Pressing ESC do not pop up main menu anymore.
|
||||
- (bugfix 794) tab-close-all-but-current crashes
|
||||
* Reverted changes:
|
||||
- (new feature) document.write, reverted in
|
||||
2c087e52e74528a720621186b91880463e039d50
|
||||
@ -265,6 +267,10 @@ have already been considered.
|
||||
in 10d72cae7eafa6b90db1c8f303deb200555734c2
|
||||
- (enhancement) wcwidth, reverted in
|
||||
d050cb67aa37390ab938b0a308c7541f19578506
|
||||
- (new feature) Let plain text change colors with ESC [ 31 m or
|
||||
similar control sequences, reverted in
|
||||
2a6125e3d0407b588eb286d4d0ff5c98c23ebda9
|
||||
- (enhancement) Support for pasting from GNU screen clipboard
|
||||
* Unimportant changes:
|
||||
- (enhancement) If select fails, save its errno.
|
||||
|
||||
|
@ -147,14 +147,14 @@ Window$ 1250
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 0x0000 #UNDEFINED
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0000 #UNDEFINED
|
||||
0x83 #UNDEFINED
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x0000 #UNDEFINED
|
||||
0x88 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
@ -162,7 +162,7 @@ Window$ 1250
|
||||
0x8D 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x90 0x0000 #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
@ -170,7 +170,7 @@ Window$ 1250
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x0000 #UNDEFINED
|
||||
0x98 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
|
@ -23,22 +23,22 @@ Window$ 1257
|
||||
0x20-0x7e idem
|
||||
#
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 0x0000 #UNDEFINED
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0000 #UNDEFINED
|
||||
0x83 #UNDEFINED
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x0000 #UNDEFINED
|
||||
0x88 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0000 #UNDEFINED
|
||||
0x8A #UNDEFINED
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0000 #UNDEFINED
|
||||
0x8C #UNDEFINED
|
||||
0x8D 0x00A8 #DIAERESIS
|
||||
0x8E 0x02C7 #CARON
|
||||
0x8F 0x00B8 #CEDILLA
|
||||
0x90 0x0000 #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
@ -46,20 +46,20 @@ Window$ 1257
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x0000 #UNDEFINED
|
||||
0x98 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0000 #UNDEFINED
|
||||
0x9A #UNDEFINED
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0000 #UNDEFINED
|
||||
0x9C #UNDEFINED
|
||||
0x9D 0x00AF #MACRON
|
||||
0x9E 0x02DB #OGONEK
|
||||
0x9F 0x0000 #UNDEFINED
|
||||
0x9F #UNDEFINED
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x0000 #UNDEFINED
|
||||
0xA1 #UNDEFINED
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x0000 #UNDEFINED
|
||||
0xA5 #UNDEFINED
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
|
@ -8,7 +8,7 @@ N=`cat tmp | wc -l`
|
||||
echo '/* Automatically generated by gen-7b */'
|
||||
echo '/* DO NOT EDIT THIS FILE! EDIT Unicode/7bitrepl.lnx INSTEAD! */'
|
||||
echo
|
||||
echo 'struct { unicode_val_T x; unsigned char *s; } unicode_7b ['`expr $N + 1`'] = {'
|
||||
echo 'static const struct { unicode_val_T x; unsigned char *s; } unicode_7b ['`expr $N + 1`'] = {'
|
||||
sort tmp | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed 's/^/ {/' | sed 's/:/, "/' | sed 's/$/"},/'
|
||||
echo ' {-1, NULL}'
|
||||
echo '};'
|
||||
|
@ -23,17 +23,29 @@ for i in $codepages; do
|
||||
echo "/*** $i ***/"
|
||||
echo
|
||||
|
||||
sed '1,2d
|
||||
sed ' # Delete the name and aliases lines.
|
||||
1,2d
|
||||
# Delete comment-only and blank lines.
|
||||
/^[ ]*\(#.*\)\{,1\}$/d
|
||||
# Copy to the hold space.
|
||||
h
|
||||
# Delete everything except the comment.
|
||||
s/^[^#]*//
|
||||
# If there is a comment, change it to use /* */ delimiters.
|
||||
s!#[ ]*\(.*\)!/* \1 */!
|
||||
# Exchange spaces; now hold space = comment and pattern space = all.
|
||||
x
|
||||
# Delete the comment.
|
||||
s/#.*//
|
||||
# Canonicalize case so the strings can be used as lookup keys.
|
||||
y/Xabcdef/xABCDEF/
|
||||
# Delete mappings of bytes 0x00...0x7F. ELinks assumes those match ASCII.
|
||||
/^0x[01234567]/d
|
||||
/[^0x0123456789ABCDEF ]/d
|
||||
# Delete lines that do not map the byte to exactly one character.
|
||||
/^[ ]*0x[0123456789ABCDEF]\{2\}[ ]\{1,\}0x[0123456789ABCDEF]\{1,\}[ ]*$/!d
|
||||
# Append a newline and the comment from the hold space.
|
||||
G
|
||||
# Delete the newline added by the previous command.
|
||||
s/\n//' "$i.cp" | {
|
||||
for left in 8 9 A B C D E F; do
|
||||
for right in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do
|
||||
|
@ -16,7 +16,7 @@ N=`cat tmp | wc -l`
|
||||
cat > ../src/intl/entity.inc <<EOF
|
||||
/* Automatically generated by gen-ent */
|
||||
|
||||
struct entity { char *s; unicode_val_T c; } entities [$(expr $N + 1)] = {
|
||||
static const struct entity { char *s; unicode_val_T c; } entities [$(expr $N + 1)] = {
|
||||
$(cat tmp)
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
@ -32,9 +32,9 @@ where:
|
||||
|
||||
<keystroke>::
|
||||
|
||||
is a case sensitive key, which you can prefix with 'Ctrl-' or 'Alt-'.
|
||||
'Ctrl-' must be followed by an uppercase key. See below for a list of
|
||||
valid keys.
|
||||
is a case sensitive key, which you can prefix with 'Ctrl-', 'Alt-',
|
||||
or both. 'Ctrl-' must be followed by an uppercase key. See below for
|
||||
a list of valid keys.
|
||||
|
||||
<action>::
|
||||
|
||||
|
@ -34,7 +34,12 @@ have the following libraries and programs installed:
|
||||
Dependency Description
|
||||
-----------------------------------------------------------------------------
|
||||
Lua or Guile Makes it possible to write scripting plugins. \
|
||||
ifdef::installation-webpage[]
|
||||
See link:manual.html#lua-scripting[the Elinks - Lua interface] \
|
||||
endif::installation-webpage[]
|
||||
ifndef::installation-webpage[]
|
||||
See <<lua-scripting,the Elinks - Lua interface>> \
|
||||
endif::installation-webpage[]
|
||||
for more info.
|
||||
GNU zip For handling compressed documents both locally and \
|
||||
sent from server.
|
||||
@ -50,7 +55,12 @@ xterm with 256 colors Program atleast patch level 179 or rxvt program \
|
||||
libidn For internationalized domain names.
|
||||
SpiderMonkey Mozilla's JavaScript engine for getting \
|
||||
JavaScript/ECMAScript support in ELinks. \
|
||||
ifdef::installation-webpage[]
|
||||
See also link:manual.html#ecmascript[notes on ECMAScript support].
|
||||
endif::installation-webpage[]
|
||||
ifndef::installation-webpage[]
|
||||
See also <<ecmascript,notes on ECMAScript support>>.
|
||||
endif::installation-webpage[]
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
When compiling, you also need the header files for the libraries. Most OS
|
||||
|
48
po/fr.po
48
po/fr.po
@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ELinks 0.12.GIT\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-01-10 09:16+0100\n"
|
||||
"PO-Revision-Date: 2007-01-10 09:18+0100\n"
|
||||
"POT-Creation-Date: 2007-01-25 13:58+0100\n"
|
||||
"PO-Revision-Date: 2007-01-25 14:00+0100\n"
|
||||
"Last-Translator: Laurent Monin <zas@norz.org>\n"
|
||||
"Language-Team: French <zas@norz.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -33,7 +33,7 @@ msgstr "Pressez espace pour d
|
||||
#. accelerator_context(do_auth_dialog, do_edit_dialog, generic_external_protocol_handler, info_box, input_dialog, menu_add_ext, menu_keys, push_hierbox_info_button, python_info_box, refreshed_msg_box, resize_terminal_dialog, setup_first_session, src/config/dialogs.c:build_edit_dialog, src/cookies/dialogs.c:build_edit_dialog, src/cookies/dialogs.c:push_add_server_button, src/scripting/lua/core.c:l_edit_bookmark_dialog, src/scripting/lua/core.c:l_xdialog, src/viewer/text/search.c:search_dlg_do, terminal_options, write_config_dialog)
|
||||
#: src/bfu/hierbox.c:441 src/bfu/inpfield.c:256 src/bfu/msgbox.c:173
|
||||
#: src/bfu/msgbox.c:191 src/config/dialogs.c:58 src/config/dialogs.c:363
|
||||
#: src/cookies/dialogs.c:357 src/cookies/dialogs.c:455 src/dialogs/edit.c:98
|
||||
#: src/cookies/dialogs.c:359 src/cookies/dialogs.c:457 src/dialogs/edit.c:98
|
||||
#: src/dialogs/info.c:134 src/dialogs/options.c:234 src/dialogs/options.c:315
|
||||
#: src/mime/dialogs.c:131 src/protocol/auth/dialogs.c:115
|
||||
#: src/protocol/protocol.c:236 src/scripting/lua/core.c:390
|
||||
@ -146,7 +146,7 @@ msgid "Search string '%s' not found"
|
||||
msgstr "Chaîne recherchée '%s' introuvable"
|
||||
|
||||
#: src/bfu/hierbox.c:970 src/config/dialogs.c:139 src/config/dialogs.c:329
|
||||
#: src/config/dialogs.c:477 src/cookies/dialogs.c:34 src/cookies/dialogs.c:351
|
||||
#: src/config/dialogs.c:477 src/cookies/dialogs.c:34 src/cookies/dialogs.c:353
|
||||
#: src/dialogs/edit.c:92 src/dialogs/edit.c:94 src/scripting/lua/core.c:386
|
||||
#: src/scripting/lua/core.c:387 src/scripting/lua/core.c:468
|
||||
msgid "Name"
|
||||
@ -174,8 +174,8 @@ msgid "Empty string not allowed"
|
||||
msgstr "Chaîne vide non autorisée"
|
||||
|
||||
#. accelerator_context(do_auth_dialog, do_edit_dialog, input_dialog, menu_add_ext, resize_terminal_dialog, src/config/dialogs.c:build_edit_dialog, src/cookies/dialogs.c:build_edit_dialog, src/cookies/dialogs.c:push_add_server_button, src/protocol/bittorrent/dialogs.c:bittorrent_query_callback, src/scripting/lua/core.c:l_edit_bookmark_dialog, src/scripting/lua/core.c:l_xdialog, src/session/download.c:do_type_query, src/session/download.c:lookup_unique_name, src/viewer/text/search.c:search_dlg_do, terminal_options)
|
||||
#: src/bfu/inpfield.c:256 src/config/dialogs.c:364 src/cookies/dialogs.c:358
|
||||
#: src/cookies/dialogs.c:456 src/dialogs/edit.c:102 src/dialogs/edit.c:105
|
||||
#: src/bfu/inpfield.c:256 src/config/dialogs.c:364 src/cookies/dialogs.c:360
|
||||
#: src/cookies/dialogs.c:458 src/dialogs/edit.c:102 src/dialogs/edit.c:105
|
||||
#: src/dialogs/options.c:237 src/dialogs/options.c:316 src/mime/dialogs.c:132
|
||||
#: src/protocol/auth/dialogs.c:116 src/protocol/bittorrent/dialogs.c:812
|
||||
#: src/scripting/lua/core.c:391 src/scripting/lua/core.c:472
|
||||
@ -478,13 +478,13 @@ msgstr "A~ller
|
||||
|
||||
#. accelerator_context(src/bookmarks/dialogs.c:bookmark_buttons, src/config/dialogs.c:option_buttons, src/cookies/dialogs.c:cookie_buttons)
|
||||
#: src/bookmarks/dialogs.c:488 src/config/dialogs.c:501
|
||||
#: src/cookies/dialogs.c:477
|
||||
#: src/cookies/dialogs.c:479
|
||||
msgid "~Edit"
|
||||
msgstr "~Modifier"
|
||||
|
||||
#. accelerator_context(src/bookmarks/dialogs.c:bookmark_buttons, src/cache/dialogs.c:cache_buttons, src/config/dialogs.c:keybinding_buttons, src/config/dialogs.c:option_buttons, src/cookies/dialogs.c:cookie_buttons, src/dialogs/menu.c:ext_menu, src/formhist/dialogs.c:formhist_buttons, src/globhist/dialogs.c:globhist_buttons, src/protocol/auth/dialogs.c:auth_buttons)
|
||||
#: src/bookmarks/dialogs.c:489 src/cache/dialogs.c:231
|
||||
#: src/config/dialogs.c:503 src/config/dialogs.c:930 src/cookies/dialogs.c:478
|
||||
#: src/config/dialogs.c:503 src/config/dialogs.c:930 src/cookies/dialogs.c:480
|
||||
#: src/dialogs/menu.c:457 src/formhist/dialogs.c:211
|
||||
#: src/globhist/dialogs.c:229 src/protocol/auth/dialogs.c:263
|
||||
msgid "~Delete"
|
||||
@ -492,7 +492,7 @@ msgstr "~Supprimer"
|
||||
|
||||
#. accelerator_context(src/bookmarks/dialogs.c:bookmark_buttons, src/config/dialogs.c:keybinding_buttons, src/config/dialogs.c:option_buttons, src/cookies/dialogs.c:cookie_buttons, src/dialogs/menu.c:ext_menu)
|
||||
#: src/bookmarks/dialogs.c:490 src/config/dialogs.c:502
|
||||
#: src/config/dialogs.c:929 src/cookies/dialogs.c:475 src/dialogs/menu.c:455
|
||||
#: src/config/dialogs.c:929 src/cookies/dialogs.c:477 src/dialogs/menu.c:455
|
||||
msgid "~Add"
|
||||
msgstr "~Ajouter"
|
||||
|
||||
@ -599,7 +599,7 @@ msgid "invalid"
|
||||
msgstr "invalide"
|
||||
|
||||
#: src/cache/dialogs.c:125 src/cookies/dialogs.c:40 src/cookies/dialogs.c:44
|
||||
#: src/cookies/dialogs.c:354
|
||||
#: src/cookies/dialogs.c:356
|
||||
msgid "Expires"
|
||||
msgstr "Expiration"
|
||||
|
||||
@ -645,7 +645,7 @@ msgid "Delete this cache entry?"
|
||||
msgstr "Supprimer cette entrée de cache ?"
|
||||
|
||||
#. accelerator_context(display_download, src/cache/dialogs.c:cache_buttons, src/config/dialogs.c:option_buttons, src/cookies/dialogs.c:cookie_buttons, src/dialogs/download.c:download_buttons, src/formhist/dialogs.c:formhist_buttons, src/globhist/dialogs.c:globhist_buttons, src/protocol/auth/dialogs.c:auth_buttons)
|
||||
#: src/cache/dialogs.c:229 src/config/dialogs.c:500 src/cookies/dialogs.c:474
|
||||
#: src/cache/dialogs.c:229 src/config/dialogs.c:500 src/cookies/dialogs.c:476
|
||||
#: src/dialogs/download.c:255 src/dialogs/download.c:492
|
||||
#: src/formhist/dialogs.c:210 src/globhist/dialogs.c:225
|
||||
#: src/protocol/auth/dialogs.c:262
|
||||
@ -1827,7 +1827,7 @@ msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#: src/config/dialogs.c:172 src/config/dialogs.c:359 src/cookies/dialogs.c:35
|
||||
#: src/cookies/dialogs.c:352
|
||||
#: src/cookies/dialogs.c:354
|
||||
msgid "Value"
|
||||
msgstr "Valeur"
|
||||
|
||||
@ -1860,7 +1860,7 @@ msgstr "Erreur"
|
||||
msgid "Bad option value."
|
||||
msgstr "Mauvaise valeur."
|
||||
|
||||
#: src/config/dialogs.c:320 src/config/dialogs.c:388 src/cookies/dialogs.c:324
|
||||
#: src/config/dialogs.c:320 src/config/dialogs.c:388 src/cookies/dialogs.c:325
|
||||
msgid "Edit"
|
||||
msgstr "Modifier"
|
||||
|
||||
@ -1890,7 +1890,7 @@ msgid "Cannot add an option here."
|
||||
msgstr "Impossible d'ajouter une option ici."
|
||||
|
||||
#. accelerator_context(src/config/dialogs.c:keybinding_buttons, src/config/dialogs.c:option_buttons, src/cookies/dialogs.c:cookie_buttons, src/formhist/dialogs.c:formhist_buttons, src/protocol/bittorrent/dialogs.c:bittorrent_query_callback, src/session/download.c:do_type_query, terminal_options)
|
||||
#: src/config/dialogs.c:505 src/config/dialogs.c:933 src/cookies/dialogs.c:480
|
||||
#: src/config/dialogs.c:505 src/config/dialogs.c:933 src/cookies/dialogs.c:482
|
||||
#: src/dialogs/options.c:236 src/formhist/dialogs.c:214
|
||||
#: src/protocol/bittorrent/dialogs.c:799 src/session/download.c:1227
|
||||
msgid "Sa~ve"
|
||||
@ -3705,7 +3705,7 @@ msgstr ""
|
||||
"1 mode 16 couleurs, utilise les couleurs ANSI\n"
|
||||
"2 mode 88 couleurs, utilise les codes RVB d'XTerm\n"
|
||||
"3 mode 256 couleurs, utilise les codes RVB d'XTerm\n"
|
||||
"4 mode vraies couleurs, utilise les codes RVB de konsole."
|
||||
"4 mode vraies couleurs, utilise les codes RVB de konsole"
|
||||
|
||||
#: src/config/options.inc:876 src/dialogs/options.c:230
|
||||
msgid "Transparency"
|
||||
@ -4605,7 +4605,7 @@ msgstr "ELinks a
|
||||
msgid "ELinks was started with the -anonymous option."
|
||||
msgstr "ELinks a été démarré avec l'option -anonymous."
|
||||
|
||||
#: src/cookies/dialogs.c:36 src/cookies/dialogs.c:353
|
||||
#: src/cookies/dialogs.c:36 src/cookies/dialogs.c:355
|
||||
msgid "Domain"
|
||||
msgstr "Domaine"
|
||||
|
||||
@ -4618,7 +4618,7 @@ msgstr "Chemin"
|
||||
msgid "at quit time"
|
||||
msgstr "au moment de quitter"
|
||||
|
||||
#: src/cookies/dialogs.c:49 src/cookies/dialogs.c:355
|
||||
#: src/cookies/dialogs.c:49 src/cookies/dialogs.c:357
|
||||
msgid "Secure"
|
||||
msgstr "Sécurisé"
|
||||
|
||||
@ -4649,7 +4649,7 @@ msgstr "~Accepter"
|
||||
msgid "~Reject"
|
||||
msgstr "~Rejeter"
|
||||
|
||||
#: src/cookies/dialogs.c:149 src/cookies/dialogs.c:343
|
||||
#: src/cookies/dialogs.c:149 src/cookies/dialogs.c:345
|
||||
#: src/dialogs/document.c:177
|
||||
msgid "Server"
|
||||
msgstr "Serveur"
|
||||
@ -4720,26 +4720,26 @@ msgstr "Effacer tous les cookies"
|
||||
msgid "Do you really want to remove all cookies?"
|
||||
msgstr "Êtes-vous sûr de vouloir effacer tous les cookies ?"
|
||||
|
||||
#: src/cookies/dialogs.c:449
|
||||
#: src/cookies/dialogs.c:451
|
||||
msgid "Add server"
|
||||
msgstr "Ajouter un serveur"
|
||||
|
||||
#: src/cookies/dialogs.c:453
|
||||
#: src/cookies/dialogs.c:455
|
||||
msgid "Server name"
|
||||
msgstr "Nom du serveur"
|
||||
|
||||
#. accelerator_context(src/cookies/dialogs.c:cookie_buttons)
|
||||
#: src/cookies/dialogs.c:476
|
||||
#: src/cookies/dialogs.c:478
|
||||
msgid "Add ~server"
|
||||
msgstr "Ajouter un ser~veur"
|
||||
|
||||
#. accelerator_context(do_edit_dialog, src/cookies/dialogs.c:cookie_buttons, src/dialogs/download.c:download_buttons, src/globhist/dialogs.c:globhist_buttons, src/protocol/auth/dialogs.c:auth_buttons)
|
||||
#: src/cookies/dialogs.c:479 src/dialogs/download.c:498 src/dialogs/edit.c:99
|
||||
#: src/cookies/dialogs.c:481 src/dialogs/download.c:498 src/dialogs/edit.c:99
|
||||
#: src/globhist/dialogs.c:232 src/protocol/auth/dialogs.c:264
|
||||
msgid "C~lear"
|
||||
msgstr "~Effacer"
|
||||
|
||||
#: src/cookies/dialogs.c:485
|
||||
#: src/cookies/dialogs.c:487
|
||||
msgid "Cookie manager"
|
||||
msgstr "Gestionnaire de cookies"
|
||||
|
||||
@ -5957,7 +5957,7 @@ msgstr ""
|
||||
"1 afficher les titres des pages"
|
||||
|
||||
#. name:
|
||||
#: src/globhist/globhist.c:448
|
||||
#: src/globhist/globhist.c:449
|
||||
msgid "Global History"
|
||||
msgstr "Historique Global"
|
||||
|
||||
|
@ -38,6 +38,13 @@ vernum.o: $(LIB_O_NAME)
|
||||
elinks: $(LIB_O_NAME) vernum.o
|
||||
$(call cmd,link)
|
||||
|
||||
TAGS:
|
||||
find $(srcdir). -name "*.[ch]" -print \
|
||||
| etags --regex='{c}/INIT_LIST_HEAD(\([[:alnum:]_]+\))/\1/' \
|
||||
--regex='{c}/struct_hierbox_browser(\n[ \t]*\([[:alnum:]_]+\),/\1/m' \
|
||||
-
|
||||
.PHONY: TAGS
|
||||
|
||||
PROGS = elinks
|
||||
CLEAN = vernum.o
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
#ifdef DEBUG_BUTTON_HOTKEY
|
||||
void
|
||||
add_dlg_button_do(unsigned char *file, int line,
|
||||
add_dlg_button_do(const unsigned char *file, int line,
|
||||
struct dialog *dlg, unsigned char *text, int flags,
|
||||
widget_handler_T *handler, void *data,
|
||||
done_handler_T *done, void *done_data)
|
||||
@ -331,7 +331,7 @@ select_button(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
||||
return widget_data->widget->handler(dlg_data, widget_data);
|
||||
}
|
||||
|
||||
struct widget_ops button_ops = {
|
||||
const struct widget_ops button_ops = {
|
||||
display_button,
|
||||
NULL,
|
||||
mouse_button,
|
||||
|
@ -30,7 +30,7 @@ struct widget_info_button {
|
||||
|
||||
|
||||
#ifdef DEBUG_BUTTON_HOTKEY
|
||||
void add_dlg_button_do(unsigned char *file, int line, struct dialog *dlg, unsigned char *text, int flags, widget_handler_T *handler, void *data, done_handler_T *done, void *done_data);
|
||||
void add_dlg_button_do(const unsigned char *file, int line, struct dialog *dlg, unsigned char *text, int flags, widget_handler_T *handler, void *data, done_handler_T *done, void *done_data);
|
||||
#define add_dlg_ok_button(dlg, text, flags, done, data) \
|
||||
add_dlg_button_do(__FILE__, __LINE__, dlg, text, flags, ok_dialog, NULL, done, data)
|
||||
|
||||
@ -47,7 +47,7 @@ void add_dlg_button_do(struct dialog *dlg, unsigned char *text, int flags, widge
|
||||
add_dlg_button_do(dlg, text, flags, handler, data, NULL, NULL)
|
||||
#endif
|
||||
|
||||
extern struct widget_ops button_ops;
|
||||
extern const struct widget_ops button_ops;
|
||||
void dlg_format_buttons(struct terminal *, struct widget_data *, int, int, int *, int, int *, enum format_align, int);
|
||||
|
||||
#endif
|
||||
|
@ -164,7 +164,7 @@ select_checkbox(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
||||
return EVENT_PROCESSED;
|
||||
}
|
||||
|
||||
struct widget_ops checkbox_ops = {
|
||||
const struct widget_ops checkbox_ops = {
|
||||
display_checkbox,
|
||||
init_checkbox,
|
||||
mouse_checkbox,
|
||||
|
@ -27,7 +27,7 @@ void add_dlg_radio_do(struct dialog *dlg, unsigned char *text, int groupid, int
|
||||
#define add_dlg_checkbox(dlg, text, data) \
|
||||
add_dlg_radio_do(dlg, text, 0, 0, data)
|
||||
|
||||
extern struct widget_ops checkbox_ops;
|
||||
extern const struct widget_ops checkbox_ops;
|
||||
|
||||
void
|
||||
dlg_format_checkbox(struct terminal *term,
|
||||
|
@ -140,7 +140,7 @@ select_dlg_item(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
||||
widget_data->widget->ops->select(dlg_data, widget_data);
|
||||
}
|
||||
|
||||
static struct widget_ops *widget_type_to_ops[] = {
|
||||
static const struct widget_ops *const widget_type_to_ops[] = {
|
||||
&checkbox_ops,
|
||||
&field_ops,
|
||||
&field_pass_ops,
|
||||
@ -344,7 +344,7 @@ static void
|
||||
dialog_ev_kbd(struct dialog_data *dlg_data)
|
||||
{
|
||||
struct widget_data *widget_data = selected_widget(dlg_data);
|
||||
struct widget_ops *ops = widget_data->widget->ops;
|
||||
const struct widget_ops *ops = widget_data->widget->ops;
|
||||
/* XXX: KEYMAP_EDIT ? --pasky */
|
||||
enum menu_action action_id;
|
||||
struct term_event *ev = dlg_data->term_event;
|
||||
|
@ -318,7 +318,7 @@ hierbox_browser(struct hierbox_browser *browser, struct session *ses)
|
||||
add_dlg_listbox(dlg, listbox_data);
|
||||
|
||||
for (button = 0; button < browser->buttons_size; button++) {
|
||||
struct hierbox_browser_button *but = &browser->buttons[button];
|
||||
const struct hierbox_browser_button *but = &browser->buttons[button];
|
||||
|
||||
/* Skip buttons that should not be displayed in anonymous mode */
|
||||
if (anonymous && !but->anonymous) {
|
||||
@ -547,7 +547,7 @@ enum delete_error {
|
||||
DELETE_ERRORS,
|
||||
};
|
||||
|
||||
struct listbox_ops_messages default_listbox_ops_messages = {
|
||||
static const struct listbox_ops_messages default_listbox_ops_messages = {
|
||||
/* cant_delete_item */
|
||||
N_("Sorry, but the item \"%s\" cannot be deleted."),
|
||||
|
||||
@ -592,7 +592,7 @@ struct listbox_ops_messages default_listbox_ops_messages = {
|
||||
|
||||
static void
|
||||
print_delete_error(struct listbox_item *item, struct terminal *term,
|
||||
struct listbox_ops *ops, enum delete_error err)
|
||||
const struct listbox_ops *ops, enum delete_error err)
|
||||
{
|
||||
struct string msg;
|
||||
unsigned char *errmsg;
|
||||
@ -647,7 +647,7 @@ static void
|
||||
do_delete_item(struct listbox_item *item, struct listbox_context *info,
|
||||
int last)
|
||||
{
|
||||
struct listbox_ops *ops = info->box->ops;
|
||||
const struct listbox_ops *ops = info->box->ops;
|
||||
|
||||
assert(item);
|
||||
|
||||
@ -720,7 +720,7 @@ query_delete_selected_item(void *context_)
|
||||
struct listbox_context *context, *oldcontext = context_;
|
||||
struct terminal *term = oldcontext->term;
|
||||
struct listbox_data *box = oldcontext->box;
|
||||
struct listbox_ops *ops = box->ops;
|
||||
const struct listbox_ops *ops = box->ops;
|
||||
struct listbox_item *item = box->sel;
|
||||
unsigned char *text;
|
||||
enum delete_error delete;
|
||||
@ -779,7 +779,7 @@ push_hierbox_delete_button(struct dialog_data *dlg_data,
|
||||
/* [gettext_accelerator_context(push_hierbox_delete_button)] */
|
||||
struct terminal *term = dlg_data->win->term;
|
||||
struct listbox_data *box = get_dlg_listbox_data(dlg_data);
|
||||
struct listbox_ops *ops = box->ops;
|
||||
const struct listbox_ops *ops = box->ops;
|
||||
struct listbox_item *item = box->sel;
|
||||
struct listbox_context *context;
|
||||
|
||||
@ -842,7 +842,7 @@ push_hierbox_clear_button(struct dialog_data *dlg_data,
|
||||
{
|
||||
/* [gettext_accelerator_context(push_hierbox_clear_button)] */
|
||||
struct listbox_data *box = get_dlg_listbox_data(dlg_data);
|
||||
struct listbox_ops *ops = box->ops;
|
||||
const struct listbox_ops *ops = box->ops;
|
||||
struct terminal *term = dlg_data->win->term;
|
||||
struct listbox_context *context;
|
||||
|
||||
|
@ -18,13 +18,13 @@ struct hierbox_browser_button {
|
||||
struct hierbox_browser {
|
||||
unsigned char *title;
|
||||
void (*expansion_callback)(void);
|
||||
struct hierbox_browser_button *buttons;
|
||||
const struct hierbox_browser_button *buttons;
|
||||
size_t buttons_size;
|
||||
|
||||
struct list_head boxes;
|
||||
struct list_head dialogs;
|
||||
struct listbox_item root;
|
||||
struct listbox_ops *ops;
|
||||
const struct listbox_ops *ops;
|
||||
|
||||
/* For saving state */
|
||||
unsigned int do_not_save_state:1;
|
||||
|
@ -744,7 +744,7 @@ clear_field(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
||||
return EVENT_PROCESSED;
|
||||
}
|
||||
|
||||
struct widget_ops field_ops = {
|
||||
const struct widget_ops field_ops = {
|
||||
display_field,
|
||||
init_field,
|
||||
mouse_field,
|
||||
@ -753,7 +753,7 @@ struct widget_ops field_ops = {
|
||||
clear_field,
|
||||
};
|
||||
|
||||
struct widget_ops field_pass_ops = {
|
||||
const struct widget_ops field_pass_ops = {
|
||||
display_field_pass,
|
||||
init_field,
|
||||
mouse_field,
|
||||
|
@ -56,8 +56,8 @@ add_dlg_field_do(struct dialog *dlg, enum widget_type type, unsigned char *label
|
||||
add_dlg_field_do(dlg, WIDGET_FIELD_PASS, label, min, max, handler, len, field, NULL, INPFIELD_FLOAT)
|
||||
|
||||
|
||||
extern struct widget_ops field_ops;
|
||||
extern struct widget_ops field_pass_ops;
|
||||
extern const struct widget_ops field_ops;
|
||||
extern const struct widget_ops field_pass_ops;
|
||||
|
||||
widget_handler_status_T check_number(struct dialog_data *, struct widget_data *);
|
||||
widget_handler_status_T check_nonempty(struct dialog_data *, struct widget_data *);
|
||||
|
@ -452,7 +452,7 @@ display_listbox_item(struct listbox_item *item, void *data_, int *offset)
|
||||
|
||||
} else {
|
||||
unsigned char *text;
|
||||
struct listbox_ops *ops = data->box->ops;
|
||||
const struct listbox_ops *ops = data->box->ops;
|
||||
int len_bytes;
|
||||
|
||||
assert(ops && ops->get_info);
|
||||
@ -735,7 +735,7 @@ kbd_listbox(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
||||
return EVENT_NOT_PROCESSED;
|
||||
}
|
||||
|
||||
struct widget_ops listbox_ops = {
|
||||
const struct widget_ops listbox_ops = {
|
||||
display_listbox,
|
||||
init_listbox,
|
||||
mouse_listbox,
|
||||
|
@ -100,7 +100,7 @@ struct listbox_ops {
|
||||
struct listbox_data {
|
||||
LIST_HEAD(struct listbox_data);
|
||||
|
||||
struct listbox_ops *ops; /* Backend-provided operations */
|
||||
const struct listbox_ops *ops; /* Backend-provided operations */
|
||||
struct listbox_item *sel; /* Item currently selected */
|
||||
struct listbox_item *top; /* Item which is on the top line of the box */
|
||||
|
||||
@ -131,7 +131,7 @@ struct listbox_item {
|
||||
void *udata;
|
||||
};
|
||||
|
||||
extern struct widget_ops listbox_ops;
|
||||
extern const struct widget_ops listbox_ops;
|
||||
|
||||
void dlg_format_listbox(struct terminal *, struct widget_data *, int, int *, int, int, int *, enum format_align, int format_only);
|
||||
|
||||
|
@ -542,7 +542,7 @@ mouse_text(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
||||
}
|
||||
|
||||
|
||||
struct widget_ops text_ops = {
|
||||
const struct widget_ops text_ops = {
|
||||
display_text,
|
||||
NULL,
|
||||
mouse_text,
|
||||
|
@ -44,7 +44,7 @@ struct widget_data_info_text {
|
||||
void add_dlg_text(struct dialog *dlg, unsigned char *text,
|
||||
enum format_align align, int bottom_pad);
|
||||
|
||||
extern struct widget_ops text_ops;
|
||||
extern const struct widget_ops text_ops;
|
||||
void dlg_format_text_do(struct terminal *term,
|
||||
unsigned char *text, int x, int *y, int w, int *rw,
|
||||
struct color_pair *scolor, enum format_align align, int format_only);
|
||||
|
@ -30,7 +30,7 @@ struct widget_ops {
|
||||
};
|
||||
|
||||
struct widget {
|
||||
struct widget_ops *ops;
|
||||
const struct widget_ops *ops;
|
||||
|
||||
unsigned char *text;
|
||||
|
||||
|
@ -135,7 +135,7 @@ change_hook_folder_state(struct session *ses, struct option *current,
|
||||
static void
|
||||
init_bookmarks(struct module *module)
|
||||
{
|
||||
struct change_hook_info bookmarks_change_hooks[] = {
|
||||
static const struct change_hook_info bookmarks_change_hooks[] = {
|
||||
{ "bookmarks.folder_state", change_hook_folder_state },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
@ -139,7 +139,7 @@ static struct listbox_ops_messages bookmarks_messages = {
|
||||
N_("Do you really want to remove all bookmarks?"),
|
||||
};
|
||||
|
||||
static struct listbox_ops bookmarks_listbox_ops = {
|
||||
static const struct listbox_ops bookmarks_listbox_ops = {
|
||||
lock_bookmark,
|
||||
unlock_bookmark,
|
||||
is_bookmark_used,
|
||||
@ -482,7 +482,7 @@ push_move_button(struct dialog_data *dlg_data,
|
||||
|
||||
/**** MANAGEMENT *****************************************************/
|
||||
|
||||
static struct hierbox_browser_button bookmark_buttons[] = {
|
||||
static const struct hierbox_browser_button bookmark_buttons[] = {
|
||||
/* [gettext_accelerator_context(.bookmark_buttons)] */
|
||||
{ N_("~Goto"), push_hierbox_goto_button, 1 },
|
||||
{ N_("~Edit"), push_edit_button, 0 },
|
||||
@ -498,7 +498,7 @@ static struct hierbox_browser_button bookmark_buttons[] = {
|
||||
{ N_("Clear"), push_hierbox_clear_button, 0 },
|
||||
|
||||
/* TODO: Would this be useful? --jonas */
|
||||
{ N_("Save"), push_save_button },
|
||||
{ N_("Save"), push_save_button, 0 },
|
||||
#endif
|
||||
};
|
||||
|
||||
|
4
src/cache/dialogs.c
vendored
4
src/cache/dialogs.c
vendored
@ -209,7 +209,7 @@ static struct listbox_ops_messages cache_messages = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct listbox_ops cache_entry_listbox_ops = {
|
||||
static const struct listbox_ops cache_entry_listbox_ops = {
|
||||
lock_cache_entry,
|
||||
unlock_cache_entry,
|
||||
is_cache_entry_used,
|
||||
@ -224,7 +224,7 @@ static struct listbox_ops cache_entry_listbox_ops = {
|
||||
&cache_messages,
|
||||
};
|
||||
|
||||
static struct hierbox_browser_button cache_buttons[] = {
|
||||
static const struct hierbox_browser_button cache_buttons[] = {
|
||||
/* [gettext_accelerator_context(.cache_buttons)] */
|
||||
{ N_("~Info"), push_hierbox_info_button, 1 },
|
||||
{ N_("~Goto"), push_hierbox_goto_button, 1 },
|
||||
|
@ -11,7 +11,7 @@ ACTION_(EDIT, "backspace", BACKSPACE, N__("Delete character in front of the curs
|
||||
ACTION_(EDIT, "beginning-of-buffer", BEGINNING_OF_BUFFER, N__("Go to the first line of the buffer"), 0),
|
||||
ACTION_(EDIT, "cancel", CANCEL, N__("Cancel current state"), 0),
|
||||
ACTION_(EDIT, "copy-clipboard", COPY_CLIPBOARD, N__("Copy text to clipboard"), 0),
|
||||
ACTION_(EDIT, "cut-clipboard", CUT_CLIPBOARD, N__("Delete text from clipboard"), 0),
|
||||
ACTION_(EDIT, "cut-clipboard", CUT_CLIPBOARD, N__("Cut text to clipboard"), 0),
|
||||
ACTION_(EDIT, "delete", DELETE, N__("Delete character under cursor"), 0),
|
||||
ACTION_(EDIT, "down", DOWN, N__("Move cursor downwards"), 0),
|
||||
ACTION_(EDIT, "end", END, N__("Go to the end of the page/line"), 0),
|
||||
|
@ -32,11 +32,10 @@
|
||||
|
||||
|
||||
static void
|
||||
toggle_success_msgbox(void *dummy)
|
||||
disable_success_msgbox(void *dummy)
|
||||
{
|
||||
/* TODO: option_changed() */
|
||||
get_opt_bool("ui.success_msgbox") = !get_opt_bool("ui.success_msgbox");
|
||||
get_opt_rec(config_options, "ui.success_msgbox")->flags |= OPT_TOUCHED;
|
||||
get_opt_bool("ui.success_msgbox") = 0;
|
||||
option_changed(NULL, get_opt_rec(config_options, "ui.success_msgbox"));
|
||||
}
|
||||
|
||||
void
|
||||
@ -56,7 +55,7 @@ write_config_dialog(struct terminal *term, unsigned char *config_file,
|
||||
config_file),
|
||||
NULL, 2,
|
||||
N_("~OK"), NULL, B_ENTER | B_ESC,
|
||||
N_("~Do not show anymore"), toggle_success_msgbox, 0);
|
||||
N_("~Do not show anymore"), disable_success_msgbox, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -243,7 +242,7 @@ delete_option_item(struct listbox_item *item, int last)
|
||||
mark_option_as_deleted(option);
|
||||
}
|
||||
|
||||
static struct listbox_ops options_listbox_ops = {
|
||||
static const struct listbox_ops options_listbox_ops = {
|
||||
lock_option,
|
||||
unlock_option,
|
||||
is_option_used,
|
||||
@ -275,9 +274,7 @@ check_valid_option(struct dialog_data *dlg_data, struct widget_data *widget_data
|
||||
if (chinon) {
|
||||
if (option_types[option->type].set &&
|
||||
option_types[option->type].set(option, chinon)) {
|
||||
struct option *current = option;
|
||||
|
||||
option_changed(ses, current, option);
|
||||
option_changed(ses, option);
|
||||
|
||||
commandline = 0;
|
||||
mem_free(chinon);
|
||||
@ -495,7 +492,7 @@ push_save_button(struct dialog_data *dlg_data,
|
||||
}
|
||||
|
||||
|
||||
static struct hierbox_browser_button option_buttons[] = {
|
||||
static const struct hierbox_browser_button option_buttons[] = {
|
||||
/* [gettext_accelerator_context(.option_buttons)] */
|
||||
{ N_("~Info"), push_hierbox_info_button, 1 },
|
||||
{ N_("~Edit"), push_edit_button, 0 },
|
||||
@ -730,7 +727,7 @@ delete_keybinding_item(struct listbox_item *item, int last)
|
||||
free_keybinding(keybinding);
|
||||
}
|
||||
|
||||
static struct listbox_ops keybinding_listbox_ops = {
|
||||
static const struct listbox_ops keybinding_listbox_ops = {
|
||||
lock_keybinding,
|
||||
unlock_keybinding,
|
||||
is_keybinding_used,
|
||||
@ -924,7 +921,7 @@ push_kbdbind_save_button(struct dialog_data *dlg_data,
|
||||
|
||||
static INIT_LIST_HEAD(keybinding_dialog_list);
|
||||
|
||||
static struct hierbox_browser_button keybinding_buttons[] = {
|
||||
static const struct hierbox_browser_button keybinding_buttons[] = {
|
||||
/* [gettext_accelerator_context(.keybinding_buttons)] */
|
||||
{ N_("~Add"), push_kbdbind_add_button, 0 },
|
||||
{ N_("~Delete"), push_hierbox_delete_button, 0 },
|
||||
|
@ -159,7 +159,7 @@ static int no_autocreate = 0;
|
||||
|
||||
/* Get record of option of given name, or NULL if there's no such option. */
|
||||
struct option *
|
||||
get_opt_rec(struct option *tree, unsigned char *name_)
|
||||
get_opt_rec(struct option *tree, const unsigned char *name_)
|
||||
{
|
||||
struct option *option;
|
||||
unsigned char *aname = stracpy(name_);
|
||||
@ -231,7 +231,7 @@ get_opt_rec(struct option *tree, unsigned char *name_)
|
||||
* do not create the option if it doesn't exist and there's autocreation
|
||||
* enabled. */
|
||||
struct option *
|
||||
get_opt_rec_real(struct option *tree, unsigned char *name)
|
||||
get_opt_rec_real(struct option *tree, const unsigned char *name)
|
||||
{
|
||||
struct option *opt;
|
||||
|
||||
@ -680,7 +680,7 @@ register_autocreated_options(void)
|
||||
|
||||
static struct option_info config_options_info[];
|
||||
extern struct option_info cmdline_options_info[];
|
||||
static struct change_hook_info change_hooks[];
|
||||
static const struct change_hook_info change_hooks[];
|
||||
|
||||
void
|
||||
init_options(void)
|
||||
@ -716,7 +716,7 @@ done_options(void)
|
||||
}
|
||||
|
||||
void
|
||||
register_change_hooks(struct change_hook_info *change_hooks)
|
||||
register_change_hooks(const struct change_hook_info *change_hooks)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -955,9 +955,8 @@ toggle_option(struct session *ses, struct option *option)
|
||||
assert(option->type == OPT_BOOL || option->type == OPT_INT);
|
||||
assert(option->max);
|
||||
|
||||
/* TODO: call change hooks. --jonas */
|
||||
option->value.number = (number <= option->max) ? number : option->min;
|
||||
option_changed(ses, option, option);
|
||||
option_changed(ses, option);
|
||||
}
|
||||
|
||||
static int
|
||||
@ -976,7 +975,7 @@ change_hook_language(struct session *ses, struct option *current, struct option
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct change_hook_info change_hooks[] = {
|
||||
static const struct change_hook_info change_hooks[] = {
|
||||
{ "config.show_template", change_hook_stemplate },
|
||||
{ "connection", change_hook_connection },
|
||||
{ "document.browse", change_hook_html },
|
||||
@ -1012,11 +1011,11 @@ call_change_hooks(struct session *ses, struct option *current, struct option *op
|
||||
}
|
||||
|
||||
void
|
||||
option_changed(struct session *ses, struct option *current, struct option *option)
|
||||
option_changed(struct session *ses, struct option *option)
|
||||
{
|
||||
option->flags |= OPT_TOUCHED;
|
||||
/* Notify everyone out there! */
|
||||
call_change_hooks(ses, current, option);
|
||||
call_change_hooks(ses, option, option);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -105,7 +105,19 @@ union option_value {
|
||||
unsigned char *string;
|
||||
};
|
||||
|
||||
typedef int (*change_hook_T)(struct session *, struct option *current,
|
||||
|
||||
/* @session is the session via which the user changed the options,
|
||||
* or NULL if not known. Because the options are currently not
|
||||
* session-specific, it is best to ignore this parameter. In a future
|
||||
* version of ELinks, this parameter might mean the session to which
|
||||
* the changed options apply.
|
||||
*
|
||||
* @current is the option whose change hook is being called. It is
|
||||
* never NULL.
|
||||
*
|
||||
* @changed is the option that was changed, or NULL if multiple
|
||||
* descendants of @current may have been changed. */
|
||||
typedef int (*change_hook_T)(struct session *session, struct option *current,
|
||||
struct option *changed);
|
||||
|
||||
struct option {
|
||||
@ -145,7 +157,7 @@ struct change_hook_info {
|
||||
change_hook_T change_hook;
|
||||
};
|
||||
|
||||
extern void register_change_hooks(struct change_hook_info *change_hooks);
|
||||
extern void register_change_hooks(const struct change_hook_info *change_hooks);
|
||||
|
||||
|
||||
extern struct list_head *init_options_tree(void);
|
||||
@ -180,8 +192,7 @@ void call_change_hooks(struct session *ses, struct option *current,
|
||||
|
||||
/* Do proper bookkeeping after an option has changed - call this every time
|
||||
* you change an option value. */
|
||||
void option_changed(struct session *ses, struct option *current,
|
||||
struct option *option);
|
||||
void option_changed(struct session *ses, struct option *option);
|
||||
|
||||
extern int commit_option_values(struct option_resolver *resolvers,
|
||||
struct option *root,
|
||||
@ -197,8 +208,8 @@ extern void checkout_option_values(struct option_resolver *resolvers,
|
||||
* use get_opt_type() and add_opt_type(). For command line options, you want to
|
||||
* use get_opt_type_tree(cmdline_options, "option"). */
|
||||
|
||||
extern struct option *get_opt_rec(struct option *, unsigned char *);
|
||||
extern struct option *get_opt_rec_real(struct option *, unsigned char *);
|
||||
extern struct option *get_opt_rec(struct option *, const unsigned char *);
|
||||
extern struct option *get_opt_rec_real(struct option *, const unsigned char *);
|
||||
#ifdef CONFIG_DEBUG
|
||||
extern union option_value *get_opt_(unsigned char *, int, enum option_type, struct option *, unsigned char *);
|
||||
#define get_opt(tree, name, type) get_opt_(__FILE__, __LINE__, type, tree, name)
|
||||
|
@ -166,7 +166,7 @@ redir_add(struct option *opt, unsigned char *str)
|
||||
/* Support functions for config file parsing. */
|
||||
|
||||
static void
|
||||
add_optstring_to_string(struct string *s, unsigned char *q, int qlen)
|
||||
add_optstring_to_string(struct string *s, const unsigned char *q, int qlen)
|
||||
{
|
||||
if (!commandline) add_char_to_string(s, '"');
|
||||
add_quoted_to_string(s, q, qlen);
|
||||
@ -364,7 +364,7 @@ color_wr(struct option *opt, struct string *str)
|
||||
{
|
||||
color_T color = opt->value.color;
|
||||
unsigned char hexcolor[8];
|
||||
unsigned char *strcolor = get_color_string(color, hexcolor);
|
||||
const unsigned char *strcolor = get_color_string(color, hexcolor);
|
||||
|
||||
add_optstring_to_string(str, strcolor, strlen(strcolor));
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ periodic_save_change_hook(struct session *ses, struct option *current,
|
||||
static void
|
||||
init_timer(struct module *module)
|
||||
{
|
||||
struct change_hook_info timer_change_hooks[] = {
|
||||
static const struct change_hook_info timer_change_hooks[] = {
|
||||
{ "infofiles.save_interval", periodic_save_change_hook },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
@ -219,7 +219,7 @@ static struct listbox_ops_messages cookies_messages = {
|
||||
N_("Do you really want to remove all cookies?"),
|
||||
};
|
||||
|
||||
static struct listbox_ops cookies_listbox_ops = {
|
||||
static const struct listbox_ops cookies_listbox_ops = {
|
||||
lock_cookie,
|
||||
unlock_cookie,
|
||||
is_cookie_used,
|
||||
@ -471,7 +471,7 @@ push_save_button(struct dialog_data *dlg_data, struct widget_data *button)
|
||||
return EVENT_PROCESSED;
|
||||
}
|
||||
|
||||
static struct hierbox_browser_button cookie_buttons[] = {
|
||||
static const struct hierbox_browser_button cookie_buttons[] = {
|
||||
/* [gettext_accelerator_context(.cookie_buttons)] */
|
||||
{ N_("~Info"), push_hierbox_info_button, 1 },
|
||||
{ N_("~Add"), push_add_button, 1 },
|
||||
|
@ -445,7 +445,7 @@ static struct listbox_ops_messages download_messages = {
|
||||
N_("Do you really want to interrupt all downloads?"),
|
||||
};
|
||||
|
||||
static struct listbox_ops downloads_listbox_ops = {
|
||||
static const struct listbox_ops downloads_listbox_ops = {
|
||||
lock_file_download,
|
||||
unlock_file_download,
|
||||
is_file_download_used,
|
||||
@ -487,7 +487,7 @@ push_info_button(struct dialog_data *dlg_data, struct widget_data *button)
|
||||
* - Open button that can be used to set file_download->prog.
|
||||
* - Toggle notify button
|
||||
*/
|
||||
static struct hierbox_browser_button download_buttons[] = {
|
||||
static const struct hierbox_browser_button download_buttons[] = {
|
||||
/* [gettext_accelerator_context(.download_buttons)] */
|
||||
{ N_("~Info"), push_info_button },
|
||||
{ N_("~Abort"), push_hierbox_delete_button },
|
||||
|
@ -37,9 +37,7 @@ display_codepage(struct terminal *term, void *name_, void *xxx)
|
||||
|
||||
if (opt->value.number != index) {
|
||||
opt->value.number = index;
|
||||
/* TODO: option_changed() (we need to review the hooks
|
||||
* to handle NULL ses or properly document that stuff). */
|
||||
opt->flags |= OPT_TOUCHED;
|
||||
option_changed(NULL, opt);
|
||||
}
|
||||
|
||||
cls_redraw_all_terminals();
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "main/module.h"
|
||||
#include "network/connection.h"
|
||||
#include "protocol/uri.h"
|
||||
#include "session/session.h"
|
||||
#include "util/error.h"
|
||||
#include "util/memory.h"
|
||||
#include "viewer/text/draw.h"
|
||||
@ -127,7 +128,10 @@ change_hook_css(struct session *ses, struct option *current, struct option *chan
|
||||
import_default_css();
|
||||
}
|
||||
|
||||
draw_formatted(ses, 1);
|
||||
/* Instead of using the value of the @ses parameter, iterate
|
||||
* through the @sessions list. The parameter may be NULL and
|
||||
* anyway we don't support session-specific options yet. */
|
||||
foreach (ses, sessions) draw_formatted(ses, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -135,7 +139,7 @@ change_hook_css(struct session *ses, struct option *current, struct option *chan
|
||||
static void
|
||||
init_css(struct module *module)
|
||||
{
|
||||
struct change_hook_info css_change_hooks[] = {
|
||||
static const struct change_hook_info css_change_hooks[] = {
|
||||
{ "document.css", change_hook_css },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
@ -460,52 +460,51 @@ set_hline(struct html_context *html_context, unsigned char *chars, int charslen,
|
||||
}
|
||||
|
||||
for (; chars < end; x++) {
|
||||
if (*chars == NBSP_CHAR) {
|
||||
schar->data = ' ';
|
||||
part->spaces[x] = html_context->options->wrap_nbsp;
|
||||
part->char_width[x] = 1;
|
||||
chars++;
|
||||
} else {
|
||||
part->spaces[x] = (*chars == ' ');
|
||||
data = utf8_to_unicode(&chars, end);
|
||||
if (data == UCS_NO_CHAR) {
|
||||
if (charslen == 1) {
|
||||
/* HR */
|
||||
unsigned char attr = schar->attr;
|
||||
/* ELinks does not use NBSP_CHAR in UTF-8. */
|
||||
|
||||
schar->data = *chars++;
|
||||
schar->attr = SCREEN_ATTR_FRAME;
|
||||
copy_screen_chars(&POS(x, y), schar, 1);
|
||||
schar->attr = attr;
|
||||
part->char_width[x] = 0;
|
||||
continue;
|
||||
} else {
|
||||
unsigned char i;
|
||||
data = utf8_to_unicode(&chars, end);
|
||||
if (data == UCS_NO_CHAR) {
|
||||
part->spaces[x] = 0;
|
||||
if (charslen == 1) {
|
||||
/* HR */
|
||||
unsigned char attr = schar->attr;
|
||||
|
||||
for (i = 0; chars < end;i++) {
|
||||
part->document->buf[i] = *chars++;
|
||||
}
|
||||
part->document->buf_length = i;
|
||||
break;
|
||||
}
|
||||
schar->data = *chars++;
|
||||
schar->attr = SCREEN_ATTR_FRAME;
|
||||
copy_screen_chars(&POS(x, y), schar, 1);
|
||||
schar->attr = attr;
|
||||
part->char_width[x] = 0;
|
||||
continue;
|
||||
} else {
|
||||
good_char:
|
||||
if (unicode_to_cell(data) == 2) {
|
||||
schar->data = (unicode_val_T)data;
|
||||
part->char_width[x] = 2;
|
||||
copy_screen_chars(&POS(x++, y), schar, 1);
|
||||
schar->data = UCS_NO_CHAR;
|
||||
part->spaces[x] = 0;
|
||||
part->char_width[x] = 0;
|
||||
} else {
|
||||
part->char_width[x] = unicode_to_cell(data);
|
||||
schar->data = (unicode_val_T)data;
|
||||
unsigned char i;
|
||||
|
||||
for (i = 0; chars < end;i++) {
|
||||
part->document->buf[i] = *chars++;
|
||||
}
|
||||
part->document->buf_length = i;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
good_char:
|
||||
if (data == UCS_NO_BREAK_SPACE
|
||||
&& html_context->options->wrap_nbsp)
|
||||
data = UCS_SPACE;
|
||||
part->spaces[x] = (data == UCS_SPACE);
|
||||
if (unicode_to_cell(data) == 2) {
|
||||
schar->data = (unicode_val_T)data;
|
||||
part->char_width[x] = 2;
|
||||
copy_screen_chars(&POS(x++, y), schar, 1);
|
||||
schar->data = UCS_NO_CHAR;
|
||||
part->spaces[x] = 0;
|
||||
part->char_width[x] = 0;
|
||||
} else {
|
||||
part->char_width[x] = unicode_to_cell(data);
|
||||
schar->data = (unicode_val_T)data;
|
||||
}
|
||||
}
|
||||
copy_screen_chars(&POS(x, y), schar, 1);
|
||||
}
|
||||
} else {
|
||||
} else { /* not UTF-8 */
|
||||
for (; charslen > 0; charslen--, x++, chars++) {
|
||||
part->char_width[x] = 1;
|
||||
if (*chars == NBSP_CHAR) {
|
||||
@ -517,8 +516,8 @@ good_char:
|
||||
}
|
||||
copy_screen_chars(&POS(x, y), schar, 1);
|
||||
}
|
||||
} /* end of UTF-8 check */
|
||||
|
||||
}
|
||||
/* Assert that we haven't written past the end of the
|
||||
* LINE(y).chars array. @x here is one greater than
|
||||
* the last one used in POS(x, y). Instead of this,
|
||||
@ -530,11 +529,11 @@ good_char:
|
||||
* for line-wrapping decisions. It may currently be too
|
||||
* large because it was allocated above based on @charslen
|
||||
* which is the number of bytes, not the number of cells.
|
||||
* Change the length to the correct size, but dont let it
|
||||
* Change the length to the correct size, but don't let it
|
||||
* get smaller than it was on entry to this function. */
|
||||
LINE(y).length = int_max(orig_length, X(x));
|
||||
len = x - x2;
|
||||
} else {
|
||||
} else { /* part->document == NULL */
|
||||
if (utf8) {
|
||||
unsigned char *end;
|
||||
|
||||
@ -555,13 +554,13 @@ good_char:
|
||||
}
|
||||
}
|
||||
len = x - x2;
|
||||
} else {
|
||||
} else { /* not UTF-8 */
|
||||
for (; charslen > 0; charslen--, x++, chars++) {
|
||||
part->spaces[x] = (*chars == ' ');
|
||||
part->char_width[x] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* end of part->document check */
|
||||
return len;
|
||||
}
|
||||
#else
|
||||
|
@ -142,7 +142,7 @@ static struct listbox_ops_messages formhist_messages = {
|
||||
N_("Do you really want to remove all forms?"),
|
||||
};
|
||||
|
||||
static struct listbox_ops formhist_listbox_ops = {
|
||||
static const struct listbox_ops formhist_listbox_ops = {
|
||||
lock_formhist_data,
|
||||
unlock_formhist_data,
|
||||
is_formhist_data_used,
|
||||
@ -204,7 +204,7 @@ push_save_button(struct dialog_data *dlg_data, struct widget_data *button)
|
||||
return EVENT_PROCESSED;
|
||||
}
|
||||
|
||||
static struct hierbox_browser_button formhist_buttons[] = {
|
||||
static const struct hierbox_browser_button formhist_buttons[] = {
|
||||
/* [gettext_accelerator_context(.formhist_buttons)] */
|
||||
{ N_("~Login"), push_login_button, 1 },
|
||||
{ N_("~Info"), push_hierbox_info_button, 1 },
|
||||
|
@ -127,7 +127,7 @@ static struct listbox_ops_messages globhist_messages = {
|
||||
N_("Do you really want to remove all history entries?"),
|
||||
};
|
||||
|
||||
static struct listbox_ops gh_listbox_ops = {
|
||||
static const struct listbox_ops gh_listbox_ops = {
|
||||
lock_globhist_item,
|
||||
unlock_globhist_item,
|
||||
is_globhist_item_used,
|
||||
@ -219,7 +219,7 @@ push_bookmark_button(struct dialog_data *dlg_data,
|
||||
|
||||
/* The global history manager: */
|
||||
|
||||
static struct hierbox_browser_button globhist_buttons[] = {
|
||||
static const struct hierbox_browser_button globhist_buttons[] = {
|
||||
/* [gettext_accelerator_context(.globhist_buttons)] */
|
||||
{ N_("~Goto"), push_hierbox_goto_button, 1 },
|
||||
{ N_("~Info"), push_hierbox_info_button, 1 },
|
||||
@ -232,7 +232,7 @@ static struct hierbox_browser_button globhist_buttons[] = {
|
||||
{ N_("C~lear"), push_hierbox_clear_button, 0 },
|
||||
#if 0
|
||||
/* TODO: Would this be useful? --jonas */
|
||||
{ N_("Save"), push_save_button },
|
||||
{ N_("Save"), push_save_button, 0 },
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -183,7 +183,8 @@ u2cp_(unicode_val_T u, int to, enum nbsp_mode nbsp_mode)
|
||||
return encode_utf8(u);
|
||||
#endif /* CONFIG_UTF8 */
|
||||
|
||||
/* To mark non breaking spaces, we use a special char NBSP_CHAR. */
|
||||
/* To mark non breaking spaces in non-UTF-8 strings, we use a
|
||||
* special char NBSP_CHAR. */
|
||||
if (u == 0xa0) {
|
||||
if (nbsp_mode == NBSP_MODE_HACK) return NBSP_CHAR_STRING;
|
||||
else /* NBSP_MODE_ASCII */ return " ";
|
||||
|
@ -3,6 +3,13 @@
|
||||
|
||||
typedef uint32_t unicode_val_T;
|
||||
|
||||
/* U+0020 SPACE. Normally the same as ' ' or L' ' but perhaps ELinks
|
||||
* shouldn't rely on that. */
|
||||
#define UCS_SPACE ((unicode_val_T) 0x0020)
|
||||
|
||||
/* U+00A0 NO-BREAK SPACE. */
|
||||
#define UCS_NO_BREAK_SPACE ((unicode_val_T) 0x00A0)
|
||||
|
||||
/* U+FFFD REPLACEMENT CHARACTER. Used when no Unicode mapping is
|
||||
* known for a byte in a codepage, or when invalid UTF-8 is received
|
||||
* from a terminal. After generating the character, ELinks then
|
||||
@ -27,7 +34,8 @@ typedef uint32_t unicode_val_T;
|
||||
* We should fix that if we ever change the value. */
|
||||
#define UCS_ORPHAN_CELL ((unicode_val_T) 0x20)
|
||||
|
||||
/* replacement character. See u2cp(). */
|
||||
/* replacement character. See u2cp().
|
||||
* UTF-8 strings should use the encoding of U+00A0 instead. */
|
||||
#define NBSP_CHAR ((unsigned char) 1)
|
||||
#define NBSP_CHAR_STRING "\001"
|
||||
|
||||
@ -60,7 +68,8 @@ enum convert_string_mode {
|
||||
CSM_NONE, /* Convert nothing. */
|
||||
};
|
||||
|
||||
/* How to translate non-breaking spaces. */
|
||||
/* How to translate U+00A0 NO-BREAK SPACE. If u2cp_ is converting to
|
||||
* UTF-8, it ignores this choice and just encodes the U+00A0. */
|
||||
enum nbsp_mode {
|
||||
/* Convert to NBSP_CHAR. This lets the HTML renderer
|
||||
* recognize nbsp even if the codepage doesn't support
|
||||
|
@ -2134,14 +2134,14 @@ unsigned char *const aliases_8859_16 [] = {
|
||||
|
||||
const uint16_t highhalf_cp1250 [] = {
|
||||
/* 0x80 */ 0x20AC, /* EURO SIGN */
|
||||
/* 0x81 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x81 */ 0xFFFF,
|
||||
/* 0x82 */ 0x201A, /* SINGLE LOW-9 QUOTATION MARK */
|
||||
/* 0x83 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x83 */ 0xFFFF,
|
||||
/* 0x84 */ 0x201E, /* DOUBLE LOW-9 QUOTATION MARK */
|
||||
/* 0x85 */ 0x2026, /* HORIZONTAL ELLIPSIS */
|
||||
/* 0x86 */ 0x2020, /* DAGGER */
|
||||
/* 0x87 */ 0x2021, /* DOUBLE DAGGER */
|
||||
/* 0x88 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x88 */ 0xFFFF,
|
||||
/* 0x89 */ 0x2030, /* PER MILLE SIGN */
|
||||
/* 0x8A */ 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */
|
||||
/* 0x8B */ 0x2039, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */
|
||||
@ -2149,7 +2149,7 @@ const uint16_t highhalf_cp1250 [] = {
|
||||
/* 0x8D */ 0x0164, /* LATIN CAPITAL LETTER T WITH CARON */
|
||||
/* 0x8E */ 0x017D, /* LATIN CAPITAL LETTER Z WITH CARON */
|
||||
/* 0x8F */ 0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */
|
||||
/* 0x90 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x90 */ 0xFFFF,
|
||||
/* 0x91 */ 0x2018, /* LEFT SINGLE QUOTATION MARK */
|
||||
/* 0x92 */ 0x2019, /* RIGHT SINGLE QUOTATION MARK */
|
||||
/* 0x93 */ 0x201C, /* LEFT DOUBLE QUOTATION MARK */
|
||||
@ -2157,7 +2157,7 @@ const uint16_t highhalf_cp1250 [] = {
|
||||
/* 0x95 */ 0x2022, /* BULLET */
|
||||
/* 0x96 */ 0x2013, /* EN DASH */
|
||||
/* 0x97 */ 0x2014, /* EM DASH */
|
||||
/* 0x98 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x98 */ 0xFFFF,
|
||||
/* 0x99 */ 0x2122, /* TRADE MARK SIGN */
|
||||
/* 0x9A */ 0x0161, /* LATIN SMALL LETTER S WITH CARON */
|
||||
/* 0x9B */ 0x203A, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */
|
||||
@ -2710,22 +2710,22 @@ unsigned char *const aliases_cp1256 [] = {
|
||||
|
||||
const uint16_t highhalf_cp1257 [] = {
|
||||
/* 0x80 */ 0x20AC, /* EURO SIGN */
|
||||
/* 0x81 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x81 */ 0xFFFF,
|
||||
/* 0x82 */ 0x201A, /* SINGLE LOW-9 QUOTATION MARK */
|
||||
/* 0x83 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x83 */ 0xFFFF,
|
||||
/* 0x84 */ 0x201E, /* DOUBLE LOW-9 QUOTATION MARK */
|
||||
/* 0x85 */ 0x2026, /* HORIZONTAL ELLIPSIS */
|
||||
/* 0x86 */ 0x2020, /* DAGGER */
|
||||
/* 0x87 */ 0x2021, /* DOUBLE DAGGER */
|
||||
/* 0x88 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x88 */ 0xFFFF,
|
||||
/* 0x89 */ 0x2030, /* PER MILLE SIGN */
|
||||
/* 0x8A */ 0x0000, /* UNDEFINED */
|
||||
/* 0x8A */ 0xFFFF,
|
||||
/* 0x8B */ 0x2039, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */
|
||||
/* 0x8C */ 0x0000, /* UNDEFINED */
|
||||
/* 0x8C */ 0xFFFF,
|
||||
/* 0x8D */ 0x00A8, /* DIAERESIS */
|
||||
/* 0x8E */ 0x02C7, /* CARON */
|
||||
/* 0x8F */ 0x00B8, /* CEDILLA */
|
||||
/* 0x90 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x90 */ 0xFFFF,
|
||||
/* 0x91 */ 0x2018, /* LEFT SINGLE QUOTATION MARK */
|
||||
/* 0x92 */ 0x2019, /* RIGHT SINGLE QUOTATION MARK */
|
||||
/* 0x93 */ 0x201C, /* LEFT DOUBLE QUOTATION MARK */
|
||||
@ -2733,20 +2733,20 @@ const uint16_t highhalf_cp1257 [] = {
|
||||
/* 0x95 */ 0x2022, /* BULLET */
|
||||
/* 0x96 */ 0x2013, /* EN DASH */
|
||||
/* 0x97 */ 0x2014, /* EM DASH */
|
||||
/* 0x98 */ 0x0000, /* UNDEFINED */
|
||||
/* 0x98 */ 0xFFFF,
|
||||
/* 0x99 */ 0x2122, /* TRADE MARK SIGN */
|
||||
/* 0x9A */ 0x0000, /* UNDEFINED */
|
||||
/* 0x9A */ 0xFFFF,
|
||||
/* 0x9B */ 0x203A, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */
|
||||
/* 0x9C */ 0x0000, /* UNDEFINED */
|
||||
/* 0x9C */ 0xFFFF,
|
||||
/* 0x9D */ 0x00AF, /* MACRON */
|
||||
/* 0x9E */ 0x02DB, /* OGONEK */
|
||||
/* 0x9F */ 0x0000, /* UNDEFINED */
|
||||
/* 0x9F */ 0xFFFF,
|
||||
/* 0xA0 */ 0x00A0, /* NO-BREAK SPACE */
|
||||
/* 0xA1 */ 0x0000, /* UNDEFINED */
|
||||
/* 0xA1 */ 0xFFFF,
|
||||
/* 0xA2 */ 0x00A2, /* CENT SIGN */
|
||||
/* 0xA3 */ 0x00A3, /* POUND SIGN */
|
||||
/* 0xA4 */ 0x00A4, /* CURRENCY SIGN */
|
||||
/* 0xA5 */ 0x0000, /* UNDEFINED */
|
||||
/* 0xA5 */ 0xFFFF,
|
||||
/* 0xA6 */ 0x00A6, /* BROKEN BAR */
|
||||
/* 0xA7 */ 0x00A7, /* SECTION SIGN */
|
||||
/* 0xA8 */ 0x00D8, /* LATIN CAPITAL LETTER O WITH STROKE */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Automatically generated by gen-ent */
|
||||
|
||||
struct entity { char *s; unicode_val_T c; } entities [1002] = {
|
||||
static const struct entity { char *s; unicode_val_T c; } entities [1002] = {
|
||||
{ "AElig", 0x00C6 }, /* LATIN CAPITAL LETTER AE */
|
||||
{ "Aacgr", 0x0386 }, /* GREEK CAPITAL LETTER ALPHA WITH TONOS */
|
||||
{ "Aacute", 0x00C1 }, /* LATIN CAPITAL LETTER A WITH ACUTE */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Automatically generated by gen-7b */
|
||||
/* DO NOT EDIT THIS FILE! EDIT Unicode/7bitrepl.lnx INSTEAD! */
|
||||
|
||||
struct { unicode_val_T x; unsigned char *s; } unicode_7b [2453] = {
|
||||
static const struct { unicode_val_T x; unsigned char *s; } unicode_7b [2453] = {
|
||||
{0x00000000, "NUL"},
|
||||
{0x00000001, "SH"},
|
||||
{0x00000002, "SX"},
|
||||
|
@ -24,7 +24,7 @@
|
||||
#include "mime/backend/mailcap.h"
|
||||
#include "mime/backend/mimetypes.h"
|
||||
|
||||
static struct mime_backend *mime_backends[] = {
|
||||
static const struct mime_backend *const mime_backends[] = {
|
||||
&default_mime_backend,
|
||||
#ifdef CONFIG_MAILCAP
|
||||
&mailcap_mime_backend,
|
||||
@ -39,7 +39,7 @@ static struct mime_backend *mime_backends[] = {
|
||||
unsigned char *
|
||||
get_content_type_backends(unsigned char *extension)
|
||||
{
|
||||
struct mime_backend *backend;
|
||||
const struct mime_backend *backend;
|
||||
int i;
|
||||
|
||||
foreach_module_builtin (backend, mime_backends, i) {
|
||||
@ -57,7 +57,7 @@ get_content_type_backends(unsigned char *extension)
|
||||
struct mime_handler *
|
||||
get_mime_handler_backends(unsigned char *ctype, int have_x)
|
||||
{
|
||||
struct mime_backend *backend;
|
||||
const struct mime_backend *backend;
|
||||
int i;
|
||||
|
||||
foreach_module_builtin (backend, mime_backends, i) {
|
||||
|
@ -206,7 +206,7 @@ get_mime_handler_default(unsigned char *type, int have_x)
|
||||
}
|
||||
|
||||
|
||||
struct mime_backend default_mime_backend = {
|
||||
const struct mime_backend default_mime_backend = {
|
||||
/* get_content_type: */ get_content_type_default,
|
||||
/* get_mime_handler: */ get_mime_handler_default,
|
||||
};
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "main/module.h"
|
||||
#include "mime/backend/common.h"
|
||||
|
||||
extern struct mime_backend default_mime_backend;
|
||||
extern const struct mime_backend default_mime_backend;
|
||||
extern struct module default_mime_module;
|
||||
|
||||
#endif
|
||||
|
@ -456,7 +456,7 @@ change_hook_mailcap(struct session *ses, struct option *current, struct option *
|
||||
static void
|
||||
init_mailcap(struct module *module)
|
||||
{
|
||||
struct change_hook_info mimetypes_change_hooks[] = {
|
||||
static const struct change_hook_info mimetypes_change_hooks[] = {
|
||||
{ "mime.mailcap", change_hook_mailcap },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
@ -661,7 +661,7 @@ get_mime_handler_mailcap(unsigned char *type, int options)
|
||||
}
|
||||
|
||||
|
||||
struct mime_backend mailcap_mime_backend = {
|
||||
const struct mime_backend mailcap_mime_backend = {
|
||||
/* get_content_type: */ NULL,
|
||||
/* get_mime_handler: */ get_mime_handler_mailcap,
|
||||
};
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "main/module.h"
|
||||
#include "mime/backend/common.h"
|
||||
|
||||
extern struct mime_backend mailcap_mime_backend;
|
||||
extern const struct mime_backend mailcap_mime_backend;
|
||||
extern struct module mailcap_mime_module;
|
||||
|
||||
#endif
|
||||
|
@ -221,7 +221,7 @@ change_hook_mimetypes(struct session *ses, struct option *current, struct option
|
||||
static void
|
||||
init_mimetypes(struct module *module)
|
||||
{
|
||||
struct change_hook_info mimetypes_change_hooks[] = {
|
||||
static const struct change_hook_info mimetypes_change_hooks[] = {
|
||||
{ "mime.mimetypes", change_hook_mimetypes },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
@ -270,7 +270,7 @@ get_content_type_mimetypes(unsigned char *extension)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct mime_backend mimetypes_mime_backend = {
|
||||
const struct mime_backend mimetypes_mime_backend = {
|
||||
/* get_content_type: */ get_content_type_mimetypes,
|
||||
/* get_mime_handler: */ NULL,
|
||||
};
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "main/module.h"
|
||||
#include "mime/backend/common.h"
|
||||
|
||||
extern struct mime_backend mimetypes_mime_backend;
|
||||
extern const struct mime_backend mimetypes_mime_backend;
|
||||
extern struct module mimetypes_mime_module;
|
||||
|
||||
#endif
|
||||
|
@ -22,7 +22,8 @@
|
||||
struct s_msg_dsc {
|
||||
int n;
|
||||
unsigned char *msg;
|
||||
} msg_dsc[] = {
|
||||
};
|
||||
static const struct s_msg_dsc msg_dsc[] = {
|
||||
{S_WAIT, N_("Waiting in queue")},
|
||||
{S_DNS, N_("Looking up host")},
|
||||
{S_CONN, N_("Making connection")},
|
||||
|
@ -349,6 +349,26 @@ static unsigned char *clipboard;
|
||||
unsigned char *
|
||||
get_clipboard_text(void)
|
||||
{
|
||||
/* The following support for GNU Screen's clipboard is
|
||||
* disabled for two reasons:
|
||||
*
|
||||
* 1. It does not actually return the string from that
|
||||
* clipboard, but rather causes the clipboard contents to
|
||||
* appear in stdin. get_clipboard_text is normally called
|
||||
* because the user pressed a Paste key in an input field,
|
||||
* so the characters end up being inserted in that field;
|
||||
* but if there are newlines in the clipboard, then the
|
||||
* field may lose focus, in which case the remaining
|
||||
* characters may trigger arbitrary actions in ELinks.
|
||||
*
|
||||
* 2. It pastes from both GNU Screen's clipboard and the ELinks
|
||||
* internal clipboard. Because set_clipboard_text also sets
|
||||
* them both, the same text would typically get pasted twice.
|
||||
*
|
||||
* Users can instead use the GNU Screen key bindings to run the
|
||||
* paste command. This method still suffers from problem 1 but
|
||||
* any user of GNU Screen should know that already. */
|
||||
#if 0
|
||||
/* GNU Screen's clipboard */
|
||||
if (is_gnuscreen()) {
|
||||
struct string str;
|
||||
@ -359,6 +379,7 @@ get_clipboard_text(void)
|
||||
if (str.length) exe(str.source);
|
||||
if (str.source) done_string(&str);
|
||||
}
|
||||
#endif
|
||||
|
||||
return stracpy(empty_string_or_(clipboard));
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ static struct listbox_ops_messages http_auth_messages = {
|
||||
N_("Do you really want to remove all auth entries?"),
|
||||
};
|
||||
|
||||
static struct listbox_ops auth_listbox_ops = {
|
||||
static const struct listbox_ops auth_listbox_ops = {
|
||||
lock_auth_entry,
|
||||
unlock_auth_entry,
|
||||
is_auth_entry_used,
|
||||
@ -256,7 +256,7 @@ static struct listbox_ops auth_listbox_ops = {
|
||||
&http_auth_messages,
|
||||
};
|
||||
|
||||
static struct hierbox_browser_button auth_buttons[] = {
|
||||
static const struct hierbox_browser_button auth_buttons[] = {
|
||||
/* [gettext_accelerator_context(.auth_buttons)] */
|
||||
{ N_("~Goto"), push_hierbox_goto_button, 1 },
|
||||
{ N_("~Info"), push_hierbox_info_button, 1 },
|
||||
|
@ -25,11 +25,11 @@
|
||||
|
||||
struct http_code {
|
||||
int num;
|
||||
unsigned char *str;
|
||||
const unsigned char *str;
|
||||
};
|
||||
|
||||
/* Source: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html */
|
||||
static struct http_code http_code[] = {
|
||||
static const struct http_code http_code[] = {
|
||||
{ 100, "Continue" },
|
||||
{ 101, "Switching Protocols" },
|
||||
{ 200, "OK" },
|
||||
@ -77,18 +77,19 @@ static int
|
||||
compare_http_codes(const void *key, const void *element)
|
||||
{
|
||||
int first = (long) key;
|
||||
int second = ((struct http_code *) element)->num;
|
||||
int second = ((const struct http_code *) element)->num;
|
||||
|
||||
return first - second;
|
||||
}
|
||||
|
||||
static unsigned char *
|
||||
static const unsigned char *
|
||||
http_code_to_string(int code)
|
||||
{
|
||||
struct http_code *element = bsearch((void *) (long) code, http_code,
|
||||
sizeof_array(http_code),
|
||||
sizeof(*element),
|
||||
compare_http_codes);
|
||||
const struct http_code *element
|
||||
= bsearch((void *) (long) code, http_code,
|
||||
sizeof_array(http_code),
|
||||
sizeof(*element),
|
||||
compare_http_codes);
|
||||
|
||||
if (element) return element->str;
|
||||
|
||||
@ -100,7 +101,7 @@ http_code_to_string(int code)
|
||||
static unsigned char *
|
||||
get_http_error_document(struct terminal *term, struct uri *uri, int code)
|
||||
{
|
||||
unsigned char *codestr = http_code_to_string(code);
|
||||
const unsigned char *codestr = http_code_to_string(code);
|
||||
unsigned char *title = asprintfa(_("HTTP error %03d", term), code);
|
||||
struct string string;
|
||||
|
||||
|
@ -440,8 +440,9 @@ static int
|
||||
check_http_server_bugs(struct uri *uri, struct http_connection_info *http,
|
||||
unsigned char *head)
|
||||
{
|
||||
unsigned char *server, **s;
|
||||
static unsigned char *buggy_servers[] = {
|
||||
unsigned char *server;
|
||||
const unsigned char *const *s;
|
||||
static const unsigned char *const buggy_servers[] = {
|
||||
"mod_czech/3.1.0",
|
||||
"Purveyor",
|
||||
"Netscape-Enterprise",
|
||||
|
@ -93,7 +93,7 @@ int
|
||||
end_with_known_tld(unsigned char *s, int slen)
|
||||
{
|
||||
int i;
|
||||
static const unsigned char *tld[] =
|
||||
static const unsigned char *const tld[] =
|
||||
{ "com", "edu", "net",
|
||||
"org", "gov", "mil",
|
||||
"int", "biz", "arpa",
|
||||
|
@ -491,7 +491,7 @@ static int
|
||||
l_set_option(LS)
|
||||
{
|
||||
int nargs;
|
||||
struct option *opt, *current;
|
||||
struct option *opt;
|
||||
const char *name;
|
||||
|
||||
nargs = lua_gettop(S);
|
||||
@ -536,11 +536,8 @@ l_set_option(LS)
|
||||
goto lua_error;
|
||||
}
|
||||
|
||||
opt->flags |= OPT_TOUCHED;
|
||||
|
||||
/* Call hook */
|
||||
current = opt;
|
||||
call_change_hooks(lua_ses, current, opt);
|
||||
option_changed(lua_ses, opt);
|
||||
return 1;
|
||||
|
||||
lua_error:
|
||||
@ -602,7 +599,7 @@ l_get_option(LS)
|
||||
{
|
||||
color_T color;
|
||||
unsigned char hexcolor[8];
|
||||
unsigned char *strcolor;
|
||||
const unsigned char *strcolor;
|
||||
|
||||
color = opt->value.color;
|
||||
strcolor = get_color_string(color, hexcolor);
|
||||
|
@ -1265,7 +1265,7 @@ do_type_query(struct type_query *type_query, unsigned char *ct, struct mime_hand
|
||||
struct {
|
||||
unsigned char *type;
|
||||
unsigned int plain:1;
|
||||
} static known_types[] = {
|
||||
} static const known_types[] = {
|
||||
{ "text/html", 0 },
|
||||
{ "text/plain", 1 },
|
||||
{ "application/xhtml+xml", 0 }, /* RFC 3236 */
|
||||
|
@ -775,7 +775,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;
|
||||
option_changed(ses, opt, opt);
|
||||
option_changed(ses, opt);
|
||||
if (get_opt_int("config.saving_style") != 3) {
|
||||
info_box(term, 0,
|
||||
N_("Warning"), ALIGN_CENTER,
|
||||
|
@ -46,7 +46,7 @@ void
|
||||
draw_border_cross(struct terminal *term, int x, int y,
|
||||
enum border_cross_direction dir, struct color_pair *color)
|
||||
{
|
||||
static unsigned char border_trans[2][4] = {
|
||||
static const unsigned char border_trans[2][4] = {
|
||||
/* Used for BORDER_X_{RIGHT,LEFT}: */
|
||||
{ BORDER_SVLINE, BORDER_SRTEE, BORDER_SLTEE },
|
||||
/* Used for BORDER_X_{DOWN,UP}: */
|
||||
@ -155,7 +155,7 @@ draw_line(struct terminal *term, int x, int y, int l, struct screen_char *line)
|
||||
if (term->utf8) {
|
||||
struct screen_char *sc;
|
||||
|
||||
if (line->data == UCS_NO_CHAR && x == 0) {
|
||||
if (line[0].data == UCS_NO_CHAR && x == 0) {
|
||||
unicode_val_T data_save;
|
||||
|
||||
sc = line;
|
||||
@ -191,7 +191,7 @@ void
|
||||
draw_border(struct terminal *term, struct box *box,
|
||||
struct color_pair *color, int width)
|
||||
{
|
||||
static enum border_char p1[] = {
|
||||
static const enum border_char p1[] = {
|
||||
BORDER_SULCORNER,
|
||||
BORDER_SURCORNER,
|
||||
BORDER_SDLCORNER,
|
||||
@ -199,7 +199,7 @@ draw_border(struct terminal *term, struct box *box,
|
||||
BORDER_SVLINE,
|
||||
BORDER_SHLINE,
|
||||
};
|
||||
static enum border_char p2[] = {
|
||||
static const enum border_char p2[] = {
|
||||
BORDER_DULCORNER,
|
||||
BORDER_DURCORNER,
|
||||
BORDER_DDLCORNER,
|
||||
@ -207,7 +207,7 @@ draw_border(struct terminal *term, struct box *box,
|
||||
BORDER_DVLINE,
|
||||
BORDER_DHLINE,
|
||||
};
|
||||
enum border_char *p = (width > 1) ? p2 : p1;
|
||||
const enum border_char *p = (width > 1) ? p2 : p1;
|
||||
struct box borderbox;
|
||||
|
||||
set_box(&borderbox, box->x - 1, box->y - 1,
|
||||
|
@ -31,6 +31,8 @@ enum screen_char_attr {
|
||||
/* One position in the terminal screen's image. */
|
||||
struct screen_char {
|
||||
/* Contains either character value or frame data.
|
||||
* If @attr includes SCREEN_ATTR_FRAME, then @data is enum
|
||||
* border_char; otherwise, @data is a character value.
|
||||
* If CONFIG_UTF8 is defined, and UTF-8 I/O is enabled for the
|
||||
* terminal, then the character value is in UCS-4; otherwise,
|
||||
* it is in the charset of the terminal, and the charset is
|
||||
|
@ -28,12 +28,12 @@
|
||||
|
||||
/* TODO: We must use termcap/terminfo if available! --pasky */
|
||||
|
||||
unsigned char frame_dumb[48] = " ||||++||++++++--|-+||++--|-+----++++++++ ";
|
||||
static unsigned char frame_vt100[48] = "aaaxuuukkuxkjjjkmvwtqnttmlvwtqnvvwwmmllnnjla ";
|
||||
const unsigned char frame_dumb[48] = " ||||++||++++++--|-+||++--|-+----++++++++ ";
|
||||
static const unsigned char frame_vt100[48] = "aaaxuuukkuxkjjjkmvwtqnttmlvwtqnvvwwmmllnnjla ";
|
||||
|
||||
#ifndef CONFIG_UTF8
|
||||
/* For UTF8 I/O */
|
||||
static unsigned char frame_vt100_u[48] = {
|
||||
static const unsigned char frame_vt100_u[48] = {
|
||||
177, 177, 177, 179, 180, 180, 180, 191,
|
||||
191, 180, 179, 191, 217, 217, 217, 191,
|
||||
192, 193, 194, 195, 196, 197, 195, 195,
|
||||
@ -43,7 +43,7 @@ static unsigned char frame_vt100_u[48] = {
|
||||
};
|
||||
#endif /* CONFIG_UTF8 */
|
||||
|
||||
static unsigned char frame_freebsd[48] = {
|
||||
static const unsigned char frame_freebsd[48] = {
|
||||
130, 138, 128, 153, 150, 150, 150, 140,
|
||||
140, 150, 153, 140, 139, 139, 139, 140,
|
||||
142, 151, 152, 149, 146, 143, 149, 149,
|
||||
@ -52,7 +52,7 @@ static unsigned char frame_freebsd[48] = {
|
||||
143, 139, 141, 128, 128, 128, 128, 128,
|
||||
};
|
||||
|
||||
static unsigned char frame_koi[48] = {
|
||||
static const unsigned char frame_koi[48] = {
|
||||
144, 145, 146, 129, 135, 178, 180, 167,
|
||||
166, 181, 161, 168, 174, 173, 172, 131,
|
||||
132, 137, 136, 134, 128, 138, 175, 176,
|
||||
@ -62,7 +62,7 @@ static unsigned char frame_koi[48] = {
|
||||
};
|
||||
|
||||
/* Most of this table is just 176 + <index in table>. */
|
||||
static unsigned char frame_restrict[48] = {
|
||||
static const unsigned char frame_restrict[48] = {
|
||||
176, 177, 178, 179, 180, 179, 186, 186,
|
||||
205, 185, 186, 187, 188, 186, 205, 191,
|
||||
192, 193, 194, 195, 196, 197, 179, 186,
|
||||
@ -76,24 +76,24 @@ static unsigned char frame_restrict[48] = {
|
||||
#define add_term_string(str, tstr) \
|
||||
add_bytes_to_string(str, (tstr).source, (tstr).length)
|
||||
|
||||
static struct string m11_hack_frame_seqs[] = {
|
||||
static const struct string m11_hack_frame_seqs[] = {
|
||||
/* end border: */ TERM_STRING("\033[10m"),
|
||||
/* begin border: */ TERM_STRING("\033[11m"),
|
||||
};
|
||||
|
||||
#ifdef CONFIG_UTF8
|
||||
static struct string utf8_linux_frame_seqs[] = {
|
||||
static const struct string utf8_linux_frame_seqs[] = {
|
||||
/* end border: */ TERM_STRING("\033[10m\033%G"),
|
||||
/* begin border: */ TERM_STRING("\033%@\033[11m"),
|
||||
};
|
||||
#endif /* CONFIG_UTF8 */
|
||||
|
||||
static struct string vt100_frame_seqs[] = {
|
||||
static const struct string vt100_frame_seqs[] = {
|
||||
/* end border: */ TERM_STRING("\x0f"),
|
||||
/* begin border: */ TERM_STRING("\x0e"),
|
||||
};
|
||||
|
||||
static struct string underline_seqs[] = {
|
||||
static const struct string underline_seqs[] = {
|
||||
/* begin underline: */ TERM_STRING("\033[24m"),
|
||||
/* end underline: */ TERM_STRING("\033[4m"),
|
||||
};
|
||||
@ -112,18 +112,18 @@ struct screen_driver {
|
||||
#ifndef CONFIG_UTF8
|
||||
/* Charsets when doing UTF8 I/O. */
|
||||
/* [0] is the common charset and [1] is the frame charset.
|
||||
* Test wether to use UTF8 I/O using the use_utf8_io() macro. */
|
||||
* Test whether to use UTF8 I/O using the use_utf8_io() macro. */
|
||||
int charsets[2];
|
||||
#endif /* CONFIG_UTF8 */
|
||||
|
||||
/* The frame translation table. May be NULL. */
|
||||
unsigned char *frame;
|
||||
const unsigned char *frame;
|
||||
|
||||
/* The frame mode setup and teardown sequences. May be NULL. */
|
||||
struct string *frame_seqs;
|
||||
const struct string *frame_seqs;
|
||||
|
||||
/* The underline mode setup and teardown sequences. May be NULL. */
|
||||
struct string *underline;
|
||||
const struct string *underline;
|
||||
|
||||
/* The color mode */
|
||||
enum color_mode color_mode;
|
||||
@ -140,7 +140,7 @@ struct screen_driver {
|
||||
unsigned char name[1]; /* XXX: Keep last! */
|
||||
};
|
||||
|
||||
static struct screen_driver dumb_screen_driver = {
|
||||
static const struct screen_driver dumb_screen_driver = {
|
||||
NULL_LIST_HEAD,
|
||||
/* type: */ TERM_DUMB,
|
||||
#ifndef CONFIG_UTF8
|
||||
@ -156,7 +156,7 @@ static struct screen_driver dumb_screen_driver = {
|
||||
#endif /* CONFIG_UTF8 */
|
||||
};
|
||||
|
||||
static struct screen_driver vt100_screen_driver = {
|
||||
static const struct screen_driver vt100_screen_driver = {
|
||||
NULL_LIST_HEAD,
|
||||
/* type: */ TERM_VT100,
|
||||
#ifndef CONFIG_UTF8
|
||||
@ -172,7 +172,7 @@ static struct screen_driver vt100_screen_driver = {
|
||||
#endif /* CONFIG_UTF8 */
|
||||
};
|
||||
|
||||
static struct screen_driver linux_screen_driver = {
|
||||
static const struct screen_driver linux_screen_driver = {
|
||||
NULL_LIST_HEAD,
|
||||
/* type: */ TERM_LINUX,
|
||||
#ifndef CONFIG_UTF8
|
||||
@ -188,7 +188,7 @@ static struct screen_driver linux_screen_driver = {
|
||||
#endif /* CONFIG_UTF8 */
|
||||
};
|
||||
|
||||
static struct screen_driver koi8_screen_driver = {
|
||||
static const struct screen_driver koi8_screen_driver = {
|
||||
NULL_LIST_HEAD,
|
||||
/* type: */ TERM_KOI8,
|
||||
#ifndef CONFIG_UTF8
|
||||
@ -204,7 +204,7 @@ static struct screen_driver koi8_screen_driver = {
|
||||
#endif /* CONFIG_UTF8 */
|
||||
};
|
||||
|
||||
static struct screen_driver freebsd_screen_driver = {
|
||||
static const struct screen_driver freebsd_screen_driver = {
|
||||
NULL_LIST_HEAD,
|
||||
/* type: */ TERM_FREEBSD,
|
||||
#ifndef CONFIG_UTF8
|
||||
@ -221,7 +221,7 @@ static struct screen_driver freebsd_screen_driver = {
|
||||
};
|
||||
|
||||
/* XXX: Keep in sync with enum term_mode_type. */
|
||||
static struct screen_driver *screen_drivers[] = {
|
||||
static const struct screen_driver *const screen_drivers[] = {
|
||||
/* TERM_DUMB: */ &dumb_screen_driver,
|
||||
/* TERM_VT100: */ &vt100_screen_driver,
|
||||
/* TERM_LINUX: */ &linux_screen_driver,
|
||||
@ -532,10 +532,19 @@ add_char_data(struct string *screen, struct screen_driver *driver,
|
||||
unsigned char data, unsigned char border)
|
||||
#endif /* CONFIG_UTF8 */
|
||||
{
|
||||
if (!isscreensafe(data)) {
|
||||
add_char_to_string(screen, ' ');
|
||||
return;
|
||||
}
|
||||
/* CONFIG_UTF8 use_utf8_io border data add_to_string
|
||||
* ----------- ----------- ------ ---------------- ----------------
|
||||
* not defined 0 0 terminal unibyte terminal unibyte
|
||||
* not defined 0 1 enum border_char border unibyte
|
||||
* not defined 1 0 terminal unibyte UTF-8
|
||||
* not defined 1 1 enum border_char UTF-8
|
||||
* defined 0 0 terminal unibyte terminal unibyte
|
||||
* defined 0 1 enum border_char border unibyte
|
||||
* defined 1 0 UTF-32 UTF-8
|
||||
* defined 1 1 enum border_char border unibyte
|
||||
*
|
||||
* For "UTF-32" above, the data can also be UCS_NO_CHAR.
|
||||
*/
|
||||
|
||||
if (border && driver->frame && data >= 176 && data < 224)
|
||||
data = driver->frame[data - 176];
|
||||
@ -544,18 +553,25 @@ add_char_data(struct string *screen, struct screen_driver *driver,
|
||||
#ifdef CONFIG_UTF8
|
||||
if (border)
|
||||
add_char_to_string(screen, (unsigned char)data);
|
||||
else
|
||||
if (data != UCS_NO_CHAR)
|
||||
add_to_string(screen, encode_utf8(data));
|
||||
else if (data != UCS_NO_CHAR) {
|
||||
if (!isscreensafe_ucs(data))
|
||||
data = UCS_SPACE;
|
||||
add_to_string(screen, encode_utf8(data));
|
||||
}
|
||||
#else
|
||||
int charset = driver->charsets[!!border];
|
||||
|
||||
add_to_string(screen, cp2utf8(charset, data));
|
||||
if (border || isscreensafe(data))
|
||||
add_to_string(screen, cp2utf8(charset, data));
|
||||
else /* UCS_SPACE <= 0x7F and so fits in one UTF-8 byte */
|
||||
add_char_to_string(screen, UCS_SPACE);
|
||||
#endif /* CONFIG_UTF8 */
|
||||
return;
|
||||
} else {
|
||||
if (border || isscreensafe(data))
|
||||
add_char_to_string(screen, (unsigned char)data);
|
||||
else
|
||||
add_char_to_string(screen, ' ');
|
||||
}
|
||||
|
||||
add_char_to_string(screen, (unsigned char)data);
|
||||
}
|
||||
|
||||
/* Time critical section. */
|
||||
@ -655,13 +671,13 @@ add_char16(struct string *screen, struct screen_driver *driver,
|
||||
}
|
||||
|
||||
#if defined(CONFIG_88_COLORS) || defined(CONFIG_256_COLORS)
|
||||
static struct string color256_seqs[] = {
|
||||
static const struct string color256_seqs[] = {
|
||||
/* foreground: */ TERM_STRING("\033[0;38;5;%dm"),
|
||||
/* background: */ TERM_STRING("\033[48;5;%dm"),
|
||||
};
|
||||
|
||||
static inline void
|
||||
add_char_color(struct string *screen, struct string *seq, unsigned char color)
|
||||
add_char_color(struct string *screen, const struct string *seq, unsigned char color)
|
||||
{
|
||||
unsigned char color_buf[3];
|
||||
unsigned char *color_pos = color_buf;
|
||||
@ -772,14 +788,14 @@ add_char256(struct string *screen, struct screen_driver *driver,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_TRUE_COLOR
|
||||
static struct string color_true_seqs[] = {
|
||||
static const struct string color_true_seqs[] = {
|
||||
/* foreground: */ TERM_STRING("\033[0;38;2"),
|
||||
/* background: */ TERM_STRING("\033[48;2"),
|
||||
};
|
||||
#define add_true_background_color(str, seq, chr) add_char_true_color(str, &(seq)[1], &(chr)->color[3])
|
||||
#define add_true_foreground_color(str, seq, chr) add_char_true_color(str, &(seq)[0], &(chr)->color[0])
|
||||
static inline void
|
||||
add_char_true_color(struct string *screen, struct string *seq, unsigned char *colors)
|
||||
add_char_true_color(struct string *screen, const struct string *seq, unsigned char *colors)
|
||||
{
|
||||
unsigned char color_buf[3];
|
||||
int i;
|
||||
|
@ -159,7 +159,7 @@ struct terminal {
|
||||
extern struct list_head terminals;
|
||||
|
||||
|
||||
extern unsigned char frame_dumb[];
|
||||
extern const unsigned char frame_dumb[];
|
||||
|
||||
struct terminal *init_term(int, int);
|
||||
void destroy_terminal(struct terminal *);
|
||||
|
@ -18,11 +18,11 @@
|
||||
#include "util/string.h"
|
||||
|
||||
struct color_spec {
|
||||
char *name;
|
||||
const char *name;
|
||||
color_T rgb;
|
||||
};
|
||||
|
||||
static struct color_spec color_specs[] = {
|
||||
static const struct color_spec color_specs[] = {
|
||||
#include "util/color_s.inc"
|
||||
#ifndef CONFIG_SMALL
|
||||
#include "util/color.inc"
|
||||
@ -32,7 +32,7 @@ static struct color_spec color_specs[] = {
|
||||
|
||||
#ifdef USE_FASTFIND
|
||||
|
||||
static struct color_spec *internal_pointer;
|
||||
static const struct color_spec *internal_pointer;
|
||||
|
||||
static void
|
||||
colors_list_reset(void)
|
||||
@ -52,7 +52,7 @@ colors_list_next(void)
|
||||
if (!internal_pointer->name) return NULL;
|
||||
|
||||
kv.key = (unsigned char *) internal_pointer->name;
|
||||
kv.data = internal_pointer;
|
||||
kv.data = (void *) internal_pointer; /* cast away const */
|
||||
|
||||
internal_pointer++;
|
||||
|
||||
@ -107,7 +107,7 @@ decode_hex_color:
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
struct color_spec *cs;
|
||||
const struct color_spec *cs;
|
||||
|
||||
#ifndef USE_FASTFIND
|
||||
for (cs = color_specs; cs->name; cs++)
|
||||
@ -135,10 +135,10 @@ decode_hex_color:
|
||||
return -1; /* Not found */
|
||||
}
|
||||
|
||||
unsigned char *
|
||||
const unsigned char *
|
||||
get_color_string(color_T color, unsigned char hexcolor[8])
|
||||
{
|
||||
struct color_spec *cs;
|
||||
const struct color_spec *cs;
|
||||
|
||||
for (cs = color_specs; cs->name; cs++)
|
||||
if (cs->rgb == color)
|
||||
|
@ -17,7 +17,7 @@ int decode_color(unsigned char *str, int slen, color_T *color);
|
||||
|
||||
/* Returns a string containing the color info. If no ``English'' name can be
|
||||
* found the hex color (#rrggbb) is returned in the given buffer. */
|
||||
unsigned char *get_color_string(color_T color, unsigned char hexcolor[8]);
|
||||
const unsigned char *get_color_string(color_T color, unsigned char hexcolor[8]);
|
||||
|
||||
/* Translate rgb color to string in #rrggbb format. str should be a pointer to
|
||||
* a 8 bytes memory space. */
|
||||
|
@ -52,9 +52,9 @@ elinks_ulongcat(unsigned char *s, unsigned int *slen,
|
||||
unsigned char fillchar, unsigned int base,
|
||||
unsigned int upper)
|
||||
{
|
||||
static unsigned char unum[]= "0123456789ABCDEF";
|
||||
static unsigned char lnum[]= "0123456789abcdef";
|
||||
unsigned char *to_num = (unsigned char *) (upper ? &unum : &lnum);
|
||||
static const unsigned char unum[]= "0123456789ABCDEF";
|
||||
static const unsigned char lnum[]= "0123456789abcdef";
|
||||
const unsigned char *to_num = (upper ? unum : lnum);
|
||||
unsigned int start = slen ? *slen : 0;
|
||||
unsigned int nlen = 1; /* '0' is one char, we can't have less. */
|
||||
unsigned int pos = start; /* starting position of the number */
|
||||
@ -295,7 +295,7 @@ add_html_to_string(struct string *string, unsigned char *src, int len)
|
||||
|
||||
/* TODO Optimize later --pasky */
|
||||
struct string *
|
||||
add_quoted_to_string(struct string *string, unsigned char *src, int len)
|
||||
add_quoted_to_string(struct string *string, const unsigned char *src, int len)
|
||||
{
|
||||
for (; len; len--, src++) {
|
||||
if (isquote(*src) || *src == '\\')
|
||||
|
@ -80,7 +80,7 @@ add_string_replace(struct string *string, unsigned char *src, int len,
|
||||
struct string *add_html_to_string(struct string *string, unsigned char *html, int htmllen);
|
||||
|
||||
/* Escapes \ and " with a \ */
|
||||
struct string *add_quoted_to_string(struct string *string, unsigned char *q, int qlen);
|
||||
struct string *add_quoted_to_string(struct string *string, const unsigned char *q, int qlen);
|
||||
|
||||
/* Adds ', |len| bytes of |src| with all single-quotes converted to '\'',
|
||||
* and ' to |string|. */
|
||||
|
@ -124,7 +124,7 @@ void *mem_realloc(void *, size_t);
|
||||
static inline void *
|
||||
mem_align_alloc__(
|
||||
#ifdef DEBUG_MEMLEAK
|
||||
unsigned char *file, int line,
|
||||
const unsigned char *file, int line,
|
||||
#endif
|
||||
void **ptr, size_t old, size_t new, size_t objsize, size_t mask)
|
||||
{
|
||||
|
@ -97,7 +97,7 @@ stracpy(const unsigned char *src)
|
||||
|
||||
|
||||
void
|
||||
add_to_strn(unsigned char **dst, unsigned char *src)
|
||||
add_to_strn(unsigned char **dst, const unsigned char *src)
|
||||
{
|
||||
unsigned char *newdst;
|
||||
int dstlen;
|
||||
@ -132,10 +132,10 @@ insert_in_string(unsigned char **dst, int pos,
|
||||
}
|
||||
|
||||
unsigned char *
|
||||
straconcat(unsigned char *str, ...)
|
||||
straconcat(const unsigned char *str, ...)
|
||||
{
|
||||
va_list ap;
|
||||
unsigned char *a;
|
||||
const unsigned char *a;
|
||||
unsigned char *s;
|
||||
unsigned int len;
|
||||
|
||||
@ -149,7 +149,7 @@ straconcat(unsigned char *str, ...)
|
||||
if (len) memcpy(s, str, len);
|
||||
|
||||
va_start(ap, str);
|
||||
while ((a = va_arg(ap, unsigned char *))) {
|
||||
while ((a = va_arg(ap, const unsigned char *))) {
|
||||
unsigned int l = strlen(a);
|
||||
unsigned char *ns;
|
||||
|
||||
@ -173,7 +173,7 @@ straconcat(unsigned char *str, ...)
|
||||
}
|
||||
|
||||
int
|
||||
xstrcmp(unsigned char *s1, unsigned char *s2)
|
||||
xstrcmp(const unsigned char *s1, const unsigned char *s2)
|
||||
{
|
||||
if (!s1) return -!!s2;
|
||||
if (!s2) return 1;
|
||||
@ -245,7 +245,7 @@ elinks_strlcasecmp(const unsigned char *s1, size_t n1,
|
||||
|
||||
inline struct string *
|
||||
#ifdef DEBUG_MEMLEAK
|
||||
init_string__(unsigned char *file, int line, struct string *string)
|
||||
init_string__(const unsigned char *file, int line, struct string *string)
|
||||
#else
|
||||
init_string(struct string *string)
|
||||
#endif
|
||||
@ -318,7 +318,7 @@ add_crlf_to_string(struct string *string)
|
||||
}
|
||||
|
||||
inline struct string *
|
||||
add_string_to_string(struct string *string, struct string *from)
|
||||
add_string_to_string(struct string *string, const struct string *from)
|
||||
{
|
||||
assertm(string && from, "[add_string_to_string]");
|
||||
if_assert_failed { return NULL; }
|
||||
@ -332,7 +332,7 @@ add_string_to_string(struct string *string, struct string *from)
|
||||
}
|
||||
|
||||
struct string *
|
||||
add_file_to_string(struct string *string, unsigned char *filename)
|
||||
add_file_to_string(struct string *string, const unsigned char *filename)
|
||||
{
|
||||
FILE *file;
|
||||
off_t filelen;
|
||||
@ -375,7 +375,7 @@ struct string *
|
||||
string_concat(struct string *string, ...)
|
||||
{
|
||||
va_list ap;
|
||||
unsigned char *source;
|
||||
const unsigned char *source;
|
||||
|
||||
assertm(string, "[string_concat]");
|
||||
if_assert_failed { return NULL; }
|
||||
@ -383,7 +383,7 @@ string_concat(struct string *string, ...)
|
||||
check_string_magic(string);
|
||||
|
||||
va_start(ap, string);
|
||||
while ((source = va_arg(ap, unsigned char *)))
|
||||
while ((source = va_arg(ap, const unsigned char *)))
|
||||
if (*source)
|
||||
add_to_string(string, source);
|
||||
|
||||
@ -434,7 +434,7 @@ add_xchar_to_string(struct string *string, unsigned char character, int times)
|
||||
|
||||
/* Add printf-like format string to @string. */
|
||||
struct string *
|
||||
add_format_to_string(struct string *string, unsigned char *format, ...)
|
||||
add_format_to_string(struct string *string, const unsigned char *format, ...)
|
||||
{
|
||||
int newlength;
|
||||
int width;
|
||||
|
@ -43,7 +43,7 @@ unsigned char *debug_stracpy(const unsigned char *, int, const unsigned char *);
|
||||
|
||||
/* Concatenates @src to @str. */
|
||||
/* If reallocation of @str fails @str is not touched. */
|
||||
void add_to_strn(unsigned char **str, unsigned char *src);
|
||||
void add_to_strn(unsigned char **str, const unsigned char *src);
|
||||
|
||||
/* Inserts @seqlen chars from @seq at position @pos in the @dst string. */
|
||||
/* If reallocation of @dst fails it is not touched and NULL is returned. */
|
||||
@ -58,13 +58,13 @@ unsigned char *insert_in_string(unsigned char **dst, int pos,
|
||||
* if (abc) return;
|
||||
* printf("%s", abc); -> print "ABC"
|
||||
* mem_free(abc); -> free memory used by @abc */
|
||||
unsigned char *straconcat(unsigned char *str, ...);
|
||||
unsigned char *straconcat(const unsigned char *str, ...);
|
||||
|
||||
|
||||
/* Misc. utility string functions. */
|
||||
|
||||
/* Compare two strings, handling correctly @s1 or @s2 being NULL. */
|
||||
int xstrcmp(unsigned char *s1, unsigned char *s2);
|
||||
int xstrcmp(const unsigned char *s1, const unsigned char *s2);
|
||||
|
||||
/* Copies at most @len chars into @dst. Ensures null termination of @dst. */
|
||||
unsigned char *safe_strncpy(unsigned char *dst, const unsigned char *src, size_t len);
|
||||
@ -109,9 +109,14 @@ int elinks_strlcasecmp(const unsigned char *s1, size_t n1,
|
||||
#define isasciialnum(c) (isasciialpha(c) || isdigit(c))
|
||||
#define isident(c) (isasciialnum(c) || (c) == '_' || (c) == '-')
|
||||
|
||||
/* Char is safe to write to the terminal screen */
|
||||
/* Char is safe to write to the terminal screen. Cannot test for C1
|
||||
* control characters (0x80 to 0x9F) because this is also used for
|
||||
* non-ISO-8859 charsets. */
|
||||
#define isscreensafe(c) ((c) >= ' ' && (c) != ASCII_DEL)
|
||||
|
||||
/* Like isscreensafe but takes Unicode values and so can check for C1. */
|
||||
#define isscreensafe_ucs(c) (((c) >= 0x20 && (c) <= 0x7E) || (c) >= 0xA0)
|
||||
|
||||
|
||||
/* String debugging using magic number, it may catch some errors. */
|
||||
#ifdef CONFIG_DEBUG
|
||||
@ -145,7 +150,7 @@ struct string {
|
||||
|
||||
/* Initializes the passed string struct by preallocating the @source member. */
|
||||
#ifdef DEBUG_MEMLEAK
|
||||
struct string *init_string__(unsigned char *file, int line, struct string *string);
|
||||
struct string *init_string__(const unsigned char *file, int line, struct string *string);
|
||||
#define init_string(string) init_string__(__FILE__, __LINE__, string)
|
||||
#else
|
||||
struct string *init_string(struct string *string);
|
||||
@ -158,8 +163,8 @@ void done_string(struct string *string);
|
||||
struct string *add_to_string(struct string *string,
|
||||
const unsigned char *source);
|
||||
struct string *add_char_to_string(struct string *string, unsigned char character);
|
||||
struct string *add_string_to_string(struct string *to, struct string *from);
|
||||
struct string *add_file_to_string(struct string *string, unsigned char *filename);
|
||||
struct string *add_string_to_string(struct string *to, const struct string *from);
|
||||
struct string *add_file_to_string(struct string *string, const unsigned char *filename);
|
||||
struct string *add_crlf_to_string(struct string *string);
|
||||
|
||||
/* Adds each C string to @string until a terminating NULL is met. */
|
||||
@ -169,7 +174,7 @@ struct string *string_concat(struct string *string, ...);
|
||||
struct string *add_xchar_to_string(struct string *string, unsigned char character, int times);
|
||||
|
||||
/* Add printf-style format string to @string. */
|
||||
struct string *add_format_to_string(struct string *string, unsigned char *format, ...);
|
||||
struct string *add_format_to_string(struct string *string, const unsigned char *format, ...);
|
||||
|
||||
/* Get a regular newly allocated stream of bytes from @string. */
|
||||
static unsigned char *squeezastring(struct string *string);
|
||||
@ -209,7 +214,7 @@ squeezastring(struct string *string)
|
||||
static inline struct string *
|
||||
add_bytes_to_string__(
|
||||
#ifdef DEBUG_MEMLEAK
|
||||
unsigned char *file, int line,
|
||||
const unsigned char *file, int line,
|
||||
#endif
|
||||
struct string *string, const unsigned char *bytes,
|
||||
int length)
|
||||
|
@ -405,7 +405,7 @@ utf8:
|
||||
unicode_val_T data = pos->data;
|
||||
unsigned int frame = (pos->attr & SCREEN_ATTR_FRAME);
|
||||
|
||||
if (!isscreensafe(data)) {
|
||||
if (!isscreensafe_ucs(data)) {
|
||||
white++;
|
||||
continue;
|
||||
} else {
|
||||
|
@ -71,6 +71,7 @@ index_from_char(unsigned char mark)
|
||||
void
|
||||
goto_mark(unsigned char mark, struct view_state *vs)
|
||||
{
|
||||
int old_current_link;
|
||||
#ifdef CONFIG_ECMASCRIPT
|
||||
struct ecmascript_interpreter *ecmascript;
|
||||
int ecmascript_fragile;
|
||||
@ -88,6 +89,7 @@ goto_mark(unsigned char mark, struct view_state *vs)
|
||||
if (!marks[i] || !compare_uri(marks[i]->uri, vs->uri, 0))
|
||||
return;
|
||||
|
||||
old_current_link = vs->current_link;
|
||||
#ifdef CONFIG_ECMASCRIPT
|
||||
ecmascript = vs->ecmascript;
|
||||
ecmascript_fragile = vs->ecmascript_fragile;
|
||||
@ -103,6 +105,7 @@ goto_mark(unsigned char mark, struct view_state *vs)
|
||||
vs->ecmascript = ecmascript;
|
||||
vs->ecmascript_fragile = ecmascript_fragile;
|
||||
#endif
|
||||
vs->old_current_link = old_current_link;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1400,7 +1400,7 @@ text_typeahead_handler(struct input_line *line, int action_id)
|
||||
|
||||
opt->value.number = (opt->value.number + 1)
|
||||
% (opt->max + 1);
|
||||
option_changed(ses, opt, opt);
|
||||
option_changed(ses, opt);
|
||||
}
|
||||
/* Fall thru */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user