-- $LynxId: CHANGES,v 1.598 2012/02/23 09:52:17 tom Exp $ =============================================================================== Changes since Lynx 2.8 release =============================================================================== 2012-02-23 (2.8.8dev.13) * add configure check for windres needed for mingw build if cross-compiling -TD 2012-02-22 (2.8.8dev.12) * treat charsets ISO-8859-8-E and ISO-8859-8-I as aliases of ISO-8859-8 (Owen Leibman) * amend the dev.10 change to HTLoadDocument(), which broke caching of forms, to limit it to just the case where the user has pressed ^R, etc (report by TG) -TD 2012-02-19 (2.8.8dev.11) * correct help-message for -html5_charset option -Kihara Hideto * correct a typo in strtol change from dev.10 which caused hexadecimal numeric entities to be misrendered -TG * update eo.po, et.po and tr.po from http://translationproject.org/latest/lynx * correct dll name for bzip2 in lynx.iss package script -TD 2012-02-12 (2.8.8dev.10) * updated po/lynx.pot; there are a few new messages -TD * add "submit" and "reset" commands (Debian #603645) -TD * add "pwd" command, to show current working directory in the statusline -TD * modify check in HText_endForm() when a form contains only a single input field, to allow a return in any text-like field other than textarea to cause the form to be submitted (Debian #603648) -TD * add bzlib to win32 makefile.msc -TD * define WIN32_LEAN_AND_MEAN in makefile.msc to accommodate naming conflict in recent Win32 SDKs, which otherwise include winsock.h in windows.h -TD * fixes for the dev.9 Win32 feature to toggle between normal/fullscreen, by checking the actual screensize after maximizing the display -TD * use ASCII apostrophe for 7-bit approximation to U+02bd as well -TD * use ASCII apostrophe 0x27 for 7-bit approximation to Unicode apostrophe U+02bc (suggested by Ralph Babel) * update LYLeaks.c / LYLeaks.h to include the bstring allocation, copy and free functions -TD * several fixes for the -find-leaks option, e.g., include LYLeaks.h in a few modules, modify the StrAllocVsprintf function to update the bookkeeping, etc -TD * move call to LYCanWriteFile into LYValidateOutput, to make prompts for download, print and upload more alike -TD * correct an old bug in send_file_to_file(), used when printing a page to a file, which prevented its check for appending to an existing file -TD * modify LYValidateFilename to use LYTildeExpand -TD * modify LYConvertToURL to use LYTildeExpand for Unix, and further modify LYTildeExpand to lookup given user's home directory, thereby making commands such as "g ~root/tmp" work as expected -TD * replaced most LYgetStr calls with LYgetBString, except for LYMail.c and LYNews.c since those do use LYgetStr's limits as it was designed. Other calls generally did not need those limits -TD * modify finish_ExtEditForm to eliminate wrapping when an edited line is longer than MAX_LINE. The user is still offered the choice of wrapping to the displayed size of a TEXTAREA, but if declined, the TEXTAREA's content will not be wrapped -TD * modify LYgetstr, making it call revised function LYgetBString which handles bstring's, and allows editing fields which can grow without fixed buffer limits. In particular, forms all use the same calls, which means that their result is no longer limited by MAX_LINE -TD * extend ^X-e editing of textarea's to include single-line fields -TD * modify comparison for splitting lines to allow for long preformatted lines, e.g., using  's to not wrap when the line-wrap mode is disabled -TD * modify cfg2html.pl to handle options which contain a digit, e.g., HTML5_CHARSETS whose default value was not marked properly -TD * modify HTLoadDocument() to not retain a cached document if user is explicitly doing a refresh. This fixes the case for a #fragment url, which was otherwise treated as the same as the address without the #fragment -TD * clarify version of GPL used in README (request by Paul Menzel) -TD * modify HTLoad() to discard charset information before reloading a document, in case the server changes the content-type information between loads (report by Stanislav Brabec) -TD * use tidy to indent html documentation -TD * provide a way to substitute parameters in URLs for jumpfiles (adapted from patch by Mark Skilbeck -TD * ensure that button/input tags have a value for display, in case the tag is improperly terminated (report by Aki Helin) -TD * work around glibc bug in sscanf in SGML_character() using strtol() (report by Aki Helin) -TD * add check for charset attribute on meta element -Kihara Hideto * eliminate ON/OFF macros, using TRUE/FALSE both to work around breakage from zlib 1.2.5.1 changes as well as because they were unnecessary (GenToo #383113) -Nikos Chantziaras, TD * updated several configure script macros (TD): CF_ANSI_CC_CHECK, CF_CURSES_LIBS, CF_LD_RPATH_OPT, CF_NETLIBS, CF_XOPEN_SOURCE, CF_X_ATHENA_LIBS 2011-06-12 (2.8.8dev.9) * modfy cfg2html to add ".url" directive for referencing RFC's etc -TD * document blat/blatj usage in lynx.cfg -TD * add/use WriteStreamTitle(), to provide doctype for cookie-jar page, used to help validate the page -TD * improve readability of cookie-jar page by showing the unescaped cookie values, other minor formatting changes -TD * modify cookie domain-matching to accommodate RFC 6265, which states that a leading dot on a domain attribute should be discarded (report by Sebastien Hinderer) -TD * integrate most of the changes from patch in 2.8.6rel.4 package at http://en.sourceforge.jp/project/lynx-win32-pata -TH, TD + provide toggle between normal/fullscreen + ifdef'd changes for FEP. + correct a message translation in ja.po + modify Xsystem.c to not use MinGW's system() call. + add three items to lynx.cfg conv_jisx0201kana message_language wait_viewer_termination + replace ifdef's for CONV_JISX0201KANA_JISX0208KANA with configuration variable conv_jisx0201kana + modify makefile.bcb and lynx.rsp to use openssl and intl libraries. + add feature ifdef'd with USE_PROGRAM_DIR which adds fallback definitions for pathnames to use the directory of lynx.exe + add check for unsafe filenames in DOS/Windows, e.g., those that correspond to a device. * update command-line syntax for the blat mailer, to work with blat 2.6.2 -TD * change default in makelynx.bat to assume blat rather than blatj, because the latter does not provide a way to authenticate user/password on a mail server -TD * change #define's for addrlist-page and alt-bindings to reflect their non-experimental status -TD * change default for --enable-addrlist-page configure option to enabled -TD * modify blat/blatj configuration so that support for both is compiled-in for DOSPATH configurations. Add "-altblat" option to select blat vs blatj. Define USE_ALT_BLAT_MAILER to specify which is the default (prompted by report by LarryL) -TD * correct an interaction between LYCloseOutput() and LYRemoveTemp() as used in send_file_to_mail(), to allow a temporary file to be closed and used by external program before removing it -TD * modify lkcstring_to_lkc() to accept hex/octal values, allowing those in the KEYMAP configuration as suggested by the commented lines in lynx.cfg (report by Richie Wood) -TD * build-fix for DEC C 5.x with _DECC_V4_SOURCE defined, i.e., missing declaration of "off_t" (report/analysis by Rod Reiger) -TD * build-fixes for Alpha VMS V8.3 with C V7.1-015, based on lynx 2.8.7 development snapshot (report/analysis by Scott Harrod) -TD * improve scripts/tbl2html.pl, to handle translation of octal escapes in the approximation comments -TD * amend implementation of "readonly" attribute from 2.8.7dev.10 to distinguish it from "disabled" (report by David Paschal) -TD * amend change to cookie prefix matching from Debian #460108. The discussion overlooked this definition from RFC 2109: Path Defaults to the path of the request URL that generated the Set-Cookie response, up to, but not including, the right-most /. In that context, lynx was correct to extract the default "path" attribute of http://jukebox/cgi-bin/disorder as /cgi-bin rather than /cgi-bin/disorder as asserted in the report. However, lynx warned unnecessarily (according to the bug report) about the given path attribute. Deciding whether to suppress this warning is under control of the user via the lynx.cfg setting COOKIE_QUERY_INVALID_DOMAINS since 2.8.2dev.16 (report by Owen Leibman) -TD * add eo.po (Esperanto) from http://translationproject.org/latest/lynx * modify format of ADVANCED_COOKIE_CONFIRMATION message in nl.po per guideline to allow localized single-letter responses to prompt (report by Jurgen Gaeremy) -TD * add configure check for , used in Debian package -TD * modify src/tidy_tls.c to use gnutls_priority_set_direct() in preference to various access functions, to eliminate deprecation warnings (report by Andreas Metzler) -TD * updated several configure script macros (TD): CF_CURSES_CPPFLAGS, CF_CURSES_FUNCS, CF_CURSES_HEADER, CF_CURSES_LIBS, CF_CURSES_TERM_H, CF_DISABLE_RPATH_HACK, CF_PDCURSES_X11, CF_PKG_CONFIG, CF_R
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 512array.mu</title>
<meta name="Generator" content="Vim/8.1">
<meta name="plugin-version" content="vim8.1_v1">
<meta name="syntax" content="none">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal-light">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #ffffd7; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #ffffd7; }
a { color:inherit; }
* { font-size:12pt; font-size: 1em; }
.PreProc { color: #c000c0; }
.muRegEdx { color: #af5f00; }
.Special { color: #ff6060; }
.LineNr { }
.Constant { color: #008787; }
.muRegEbx { color: #5f00ff; }
.muRegEsi { color: #005faf; }
.muRegEcx { color: #870000; }
.Delimiter { color: #c000c0; }
.muFunction { color: #af5f00; text-decoration: underline; }
.muTest { color: #5f8700; }
.muComment { color: #005faf; }
-->
</style>

<script type='text/javascript'>
<!--

/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
  var lineNum;
  lineNum = window.location.hash;
  lineNum = lineNum.substr(1); /* strip off '#' */

  if (lineNum.indexOf('L') == -1) {
    lineNum = 'L'+lineNum;
  }
  var lineElem = document.getElementById(lineNum);
  /* Always jump to new location even if the line was hidden inside a fold, or
   * we corrected the raw number to a line ID.
   */
  if (lineElem) {
    lineElem.scrollIntoView(true);
  }
  return true;
}
if ('onhashchange' in window) {
  window.onhashchange = JumpToLine;
}

-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/main/512array.mu'>https://github.com/akkartik/mu/blob/main/512array.mu</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr">  1 </span><span class="muComment"># Inserting and deleting in arrays.</span>
<span id="L2" class="LineNr">  2 </span><span class="muComment">#</span>
<span id="L3" class="LineNr">  3 </span><span class="muComment"># The primitives here just do the work of making space and compacting.</span>
<span id="L4" class="LineNr">  4 </span>
<span id="L5" class="LineNr">  5 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='512array.mu.html#L5'>slide-up</a></span> _a: (addr array int), start: int, end: int, target: int <span class="Delimiter">{</span>
<span id="L6" class="LineNr">  6 </span>  <span class="PreProc">var</span> a/<span class="muRegEsi">esi</span>: (addr array int) <span class="Special">&lt;-</span> copy _a
<span id="L7" class="LineNr">  7 </span>  <span class="PreProc">var</span> src-idx/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy start
<span id="L8" class="LineNr">  8 </span>  <span class="PreProc">var</span> dest-idx/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> copy target
<span id="L9" class="LineNr">  9 </span>  <span class="muComment"># if start == target, nothing to do</span>
<span id="L10" class="LineNr"> 10 </span>  <span class="Delimiter">{</span>
<span id="L11" class="LineNr"> 11 </span>    compare src-idx, dest-idx
<span id="L12" class="LineNr"> 12 </span>    <span class="PreProc">break-if-!=</span>
<span id="L13" class="LineNr"> 13 </span>    <span class="PreProc">return</span>
<span id="L14" class="LineNr"> 14 </span>  <span class="Delimiter">}</span>
<span id="L15" class="LineNr"> 15 </span>  <span class="muComment"># if start &lt; target, abort</span>
<span id="L16" class="LineNr"> 16 </span>  <span class="Delimiter">{</span>
<span id="L17" class="LineNr"> 17 </span>    compare src-idx, dest-idx
<span id="L18" class="LineNr"> 18 </span>    <span class="PreProc">break-if-&gt;</span>
<span id="L19" class="LineNr"> 19 </span>    <a href='317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;slide-up: target &gt; start; use <a href='512array.mu.html#L35'>slide-down</a> instead&quot;</span>
<span id="L20" class="LineNr"> 20 </span>  <span class="Delimiter">}</span>
<span id="L21" class="LineNr"> 21 </span>  <span class="muComment"># perform the copy</span>
<span id="L22" class="LineNr"> 22 </span>  <span class="Delimiter">{</span>
<span id="L23" class="LineNr"> 23 </span>    compare src-idx, end
<span id="L24" class="LineNr"> 24 </span>    <span class="PreProc">break-if-&gt;=</span>
<span id="L25" class="LineNr"> 25 </span>    <span class="PreProc">var</span> dest/<span class="muRegEbx">ebx</span>: (addr int) <span class="Special">&lt;-</span> index a, dest-idx
<span id="L26" class="LineNr"> 26 </span>    <span class="PreProc">var</span> src/eax: (addr int) <span class="Special">&lt;-</span> index a, src-idx
<span id="L27" class="LineNr"> 27 </span>    <span class="PreProc">var</span> val/eax: int <span class="Special">&lt;-</span> copy *src
<span id="L28" class="LineNr"> 28 </span>    copy-to *dest, val
<span id="L29" class="LineNr"> 29 </span>    src-idx <span class="Special">&lt;-</span> increment
<span id="L30" class="LineNr"> 30 </span>    dest-idx <span class="Special">&lt;-</span> increment
<span id="L31" class="LineNr"> 31 </span>    <span class="PreProc">loop</span>
<span id="L32" class="LineNr"> 32 </span>  <span class="Delimiter">}</span>
<span id="L33" class="LineNr"> 33 </span><span class="Delimiter">}</span>
<span id="L34" class="LineNr"> 34 </span>
<span id="L35" class="LineNr"> 35 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='512array.mu.html#L35'>slide-down</a></span> _a: (addr array int), start: int, end: int, target: int <span class="Delimiter">{</span>
<span id="L36" class="LineNr"> 36 </span>  <span class="PreProc">var</span> a/<span class="muRegEsi">esi</span>: (addr array int) <span class="Special">&lt;-</span> copy _a
<span id="L37" class="LineNr"> 37 </span>  <span class="PreProc">var</span> src-idx/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy end
<span id="L38" class="LineNr"> 38 </span>  src-idx <span class="Special">&lt;-</span> decrement
<span id="L39" class="LineNr"> 39 </span>  <span class="PreProc">var</span> dest-idx/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> copy target
<span id="L40" class="LineNr"> 40 </span>  dest-idx <span class="Special">&lt;-</span> add end
<span id="L41" class="LineNr"> 41 </span>  dest-idx <span class="Special">&lt;-</span> subtract start
<span id="L42" class="LineNr"> 42 </span>  dest-idx <span class="Special">&lt;-</span> decrement
<span id="L43" class="LineNr"> 43 </span>  <span class="muComment"># if start == target, nothing to do</span>
<span id="L44" class="LineNr"> 44 </span>  <span class="Delimiter">{</span>
<span id="L45" class="LineNr"> 45 </span>    compare src-idx, dest-idx
<span id="L46" class="LineNr"> 46 </span>    <span class="PreProc">break-if-!=</span>
<span id="L47" class="LineNr"> 47 </span>    <span class="PreProc">return</span>
<span id="L48" class="LineNr"> 48 </span>  <span class="Delimiter">}</span>
<span id="L49" class="LineNr"> 49 </span>  <span class="muComment"># if start &gt; target, abort</span>
<span id="L50" class="LineNr"> 50 </span>  <span class="Delimiter">{</span>
<span id="L51" class="LineNr"> 51 </span>    compare src-idx, dest-idx
<span id="L52" class="LineNr"> 52 </span>    <span class="PreProc">break-if-&lt;</span>
<span id="L53" class="LineNr"> 53 </span>    <a href='317abort.subx.html#L5'>abort</a> <span class="Constant">&quot;slide-down: target &lt; start; use <a href='512array.mu.html#L35'>slide-down</a> instead&quot;</span>
<span id="L54" class="LineNr"> 54 </span>  <span class="Delimiter">}</span>
<span id="L55" class="LineNr"> 55 </span>  <span class="muComment"># perform the copy</span>
<span id="L56" class="LineNr"> 56 </span>  <span class="Delimiter">{</span>
<span id="L57" class="LineNr"> 57 </span>    compare src-idx, start
<span id="L58" class="LineNr"> 58 </span>    <span class="PreProc">break-if-&lt;</span>
<span id="L59" class="LineNr"> 59 </span>    <span class="PreProc">var</span> dest/<span class="muRegEbx">ebx</span>: (addr int) <span class="Special">&lt;-</span> index a, dest-idx
<span id="L60" class="LineNr"> 60 </span>    <span class="PreProc">var</span> src/eax: (addr int) <span class="Special">&lt;-</span> index a, src-idx
<span id="L61" class="LineNr"> 61 </span>    <span class="PreProc">var</span> val/eax: int <span class="Special">&lt;-</span> copy *src
<span id="L62" class="LineNr"> 62 </span>    copy-to *dest, val
<span id="L63" class="LineNr"> 63 </span>    src-idx <span class="Special">&lt;-</span> decrement
<span id="L64" class="LineNr"> 64 </span>    dest-idx <span class="Special">&lt;-</span> decrement
<span id="L65" class="LineNr"> 65 </span>    <span class="PreProc">loop</span>
<span id="L66" class="LineNr"> 66 </span>  <span class="Delimiter">}</span>
<span id="L67" class="LineNr"> 67 </span><span class="Delimiter">}</span>
<span id="L68" class="LineNr"> 68 </span>
<span id="L69" class="LineNr"> 69 </span><span class="PreProc">fn</span> <span class="muTest"><a href='512array.mu.html#L69'>test-slide-up</a></span> <span class="Delimiter">{</span>
<span id="L70" class="LineNr"> 70 </span>  <a href='512array.mu.html#L105'>check-slide-up</a> <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">1</span>/end, <span class="Constant">0</span>/target, <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L69'>test-slide-up</a>/empty-interval&quot;</span>
<span id="L71" class="LineNr"> 71 </span>  <a href='512array.mu.html#L105'>check-slide-up</a> <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">2</span>/end, <span class="Constant">0</span>/target, <span class="Constant">&quot;1 1 2 3 0&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L69'>test-slide-up</a>/single-non-overlapping&quot;</span>
<span id="L72" class="LineNr"> 72 </span>  <a href='512array.mu.html#L105'>check-slide-up</a> <span class="Constant">&quot;0 0 0 1 2 3 0&quot;</span>, <span class="Constant">3</span>/start <span class="Constant">6</span>/end, <span class="Constant">0</span>/target, <span class="Constant">&quot;1 2 3 1 2 3 0&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L69'>test-slide-up</a>/multiple-non-overlapping&quot;</span>
<span id="L73" class="LineNr"> 73 </span>  <a href='512array.mu.html#L105'>check-slide-up</a> <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">4</span>/end, <span class="Constant">0</span>/target, <span class="Constant">&quot;1 2 3 3 0&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L69'>test-slide-up</a>/overlapping&quot;</span>
<span id="L74" class="LineNr"> 74 </span><span class="Delimiter">}</span>
<span id="L75" class="LineNr"> 75 </span>
<span id="L76" class="LineNr"> 76 </span><span class="PreProc">fn</span> <span class="muTest"><a href='512array.mu.html#L76'>test-slide-down</a></span> <span class="Delimiter">{</span>
<span id="L77" class="LineNr"> 77 </span>  <a href='512array.mu.html#L114'>check-slide-down</a> <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">1</span>/end, <span class="Constant">4</span>/target, <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L76'>test-slide-down</a>/empty-interval&quot;</span>
<span id="L78" class="LineNr"> 78 </span>  <a href='512array.mu.html#L114'>check-slide-down</a> <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">2</span>/end, <span class="Constant">4</span>/target, <span class="Constant">&quot;0 1 2 3 1&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L76'>test-slide-down</a>/single-non-overlapping&quot;</span>
<span id="L79" class="LineNr"> 79 </span>  <a href='512array.mu.html#L114'>check-slide-down</a> <span class="Constant">&quot;0 1 2 3 0 0 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">4</span>/end, <span class="Constant">4</span>/target, <span class="Constant">&quot;0 1 2 3 1 2 3&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L76'>test-slide-down</a>/multiple-non-overlapping&quot;</span>
<span id="L80" class="LineNr"> 80 </span>  <a href='512array.mu.html#L114'>check-slide-down</a> <span class="Constant">&quot;0 1 2 3 0&quot;</span>, <span class="Constant">1</span>/start <span class="Constant">4</span>/end, <span class="Constant">2</span>/target, <span class="Constant">&quot;0 1 1 2 3&quot;</span>, <span class="Constant">&quot;F - <a href='512array.mu.html#L76'>test-slide-down</a>/overlapping&quot;</span>
<span id="L81" class="LineNr"> 81 </span><span class="Delimiter">}</span>
<span id="L82" class="LineNr"> 82 </span>
<span id="L83" class="LineNr"> 83 </span><span class="muComment"># Return the index that val is at.</span>
<span id="L84" class="LineNr"> 84 </span><span class="muComment"># If not found, return len-1.</span>
<span id="L85" class="LineNr"> 85 </span><span class="muComment"># That way the result is always a valid index to pass into slide-down.</span>
<span id="L86" class="LineNr"> 86 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='512array.mu.html#L86'>find-slide-down-slot-in-array</a></span> _a: (addr array int), _val: int<span class="PreProc"> -&gt; </span>_/<span class="muRegEcx">ecx</span>: int <span class="Delimiter">{</span>
<span id="L87" class="LineNr"> 87 </span>  <span class="PreProc">var</span> a/<span class="muRegEsi">esi</span>: (addr array int) <span class="Special">&lt;-</span> copy _a
<span id="L88" class="LineNr"> 88 </span>  <span class="PreProc">var</span> val/<span class="muRegEbx">ebx</span>: int <span class="Special">&lt;-</span> copy _val
<span id="L89" class="LineNr"> 89 </span>  <span class="PreProc">var</span> max/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> length a
<span id="L90" class="LineNr"> 90 </span>  max <span class="Special">&lt;-</span> decrement
<span id="L91" class="LineNr"> 91 </span>  <span class="PreProc">var</span> i/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
<span id="L92" class="LineNr"> 92 </span>  <span class="Delimiter">{</span>
<span id="L93" class="LineNr"> 93 </span>    compare i, max
<span id="L94" class="LineNr"> 94 </span>    <span class="PreProc">break-if-&gt;=</span>
<span id="L95" class="LineNr"> 95 </span>    <span class="PreProc">var</span> curr/eax: (addr int) <span class="Special">&lt;-</span> index a, i
<span id="L96" class="LineNr"> 96 </span>    compare *curr, val
<span id="L97" class="LineNr"> 97 </span>    <span class="PreProc">break-if-=</span>
<span id="L98" class="LineNr"> 98 </span>    i <span class="Special">&lt;-</span> increment
<span id="L99" class="LineNr"> 99 </span>    <span class="PreProc">loop</span>
<span id="L100" class="LineNr">100 </span>  <span class="Delimiter">}</span>
<span id="L101" class="LineNr">101 </span>  <span class="PreProc">return</span> i
<span id="L102" class="LineNr">102 </span><span class="Delimiter">}</span>
<span id="L103" class="LineNr">103 </span>
<span id="L104" class="LineNr">104 </span><span class="muComment"># helpers for tests</span>
<span id="L105" class="LineNr">105 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='512array.mu.html#L105'>check-slide-up</a></span> before: (addr array byte), start: int, end: int, target: int, after: (addr array byte), msg: (addr array byte) <span class="Delimiter">{</span>
<span id="L106" class="LineNr">106 </span>  <span class="PreProc">var</span> arr-h: (handle array int)
<span id="L107" class="LineNr">107 </span>  <span class="PreProc">var</span> arr-ah/eax: (addr handle array int) <span class="Special">&lt;-</span> address arr-h
<span id="L108" class="LineNr">108 </span>  <a href='311decimal-int.subx.html#L623'>parse-array-of-decimal-ints</a> before, arr-ah
<span id="L109" class="LineNr">109 </span>  <span class="PreProc">var</span> arr/eax: (addr array int) <span class="Special">&lt;-</span> <a href='120allocate.subx.html#L235'>lookup</a> *arr-ah
<span id="L110" class="LineNr">110 </span>  <a href='512array.mu.html#L5'>slide-up</a> arr, start, end, target
<span id="L111" class="LineNr">111 </span>  <a href='301array-equal.subx.html#L382'>check-array-equal</a> arr, after, msg
<span id="L112" class="LineNr">112 </span><span class="Delimiter">}</span>
<span id="L113" class="LineNr">113 </span>
<span id="L114" class="LineNr">114 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='512array.mu.html#L114'>check-slide-down</a></span> before: (addr array byte), start: int, end: int, target: int, after: (addr array byte), msg: (addr array byte) <span class="Delimiter">{</span>
<span id="L115" class="LineNr">115 </span>  <span class="PreProc">var</span> arr-h: (handle array int)
<span id="L116" class="LineNr">116 </span>  <span class="PreProc">var</span> arr-ah/eax: (addr handle array int) <span class="Special">&lt;-</span> address arr-h
<span id="L117" class="LineNr">117 </span>  <a href='311decimal-int.subx.html#L623'>parse-array-of-decimal-ints</a> before, arr-ah
<span id="L118" class="LineNr">118 </span>  <span class="PreProc">var</span> arr/eax: (addr array int) <span class="Special">&lt;-</span> <a href='120allocate.subx.html#L235'>lookup</a> *arr-ah
<span id="L119" class="LineNr">119 </span>  <a href='512array.mu.html#L35'>slide-down</a> arr, start, end, target
<span id="L120" class="LineNr">120 </span>  <a href='301array-equal.subx.html#L382'>check-array-equal</a> arr, after, msg
<span id="L121" class="LineNr">121 </span><span class="Delimiter">}</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->
oth with and without DONT_TRACK_INTERNAL_LINKS symbol -LP * optimize parsing of large html files - with thousands of anchors - LP + remove quadratic complexity from split_line() usage [GridText.c]. Because of some work with anchors on the last(=split) line, the anchors list was traversed from the beginning for each output line. Now we store last_anchor_before_split explicitly. [According to gprof, split_line() weight decreased from 33% down to 4%, with the following test file: 13,000 output lines, 3,100 anchors, ~800Kb] + remove quadratic complexity from HTAnchor_findChild() usage [HTAnchor.c]. HTParentAnchor::children list was traversed zillion times, now we split it into a tree (named anchors , fast search required) and a list (just a storage for the rest anchors, no search required). [The same file, gprof shows HTAnchor_findChild() weight decreased from 11% down to 0.1%] + remove quadratic complexity when generating a 'l'ist page, now traverse anchors list only once [LYList.c, GridText.c]. * add a search method to HTBTree implementation - LP * amend check for refresh-URL to avoid adding a link if the retrieved page is compressed, since the link would be added to the compressed file, corrupting it (reported by Michel SUCH and Karl-Heinz Weirich ) -TD * strip parameters from refresh-URL -TD * correct misspelled $LYNX_LOCALEDIR variable in LYMain.c (reported by Michel Such) -TD * change the install procedure for lynx.cfg to attempt to update the file with the user's customizations if any, and to save the old configuration information in a series, e.g., lynx.cfg-1, lynx.cfg-2, etc. -TD * re-fix the problem with config.cache not being removed at the beginning of the configure script - see 2.8.5dev.3 (report by Clemens Fisher) -TD 2002-10-06 (2.8.5dev.9) * improve ETA data shown in experimental read-progress (adapted from Debian #117476) -TD * modify -dump, -source and related options which set dump mode to also set -nopause (report by Benjamin Pflugmann ) -TD * correct indexing in LYStyle.c our_pairs[] array, which did not allow for use of default colors -TD * make ASSUMED_COLORS in lynx.cfg apply to normal curses implementations which do not implement assume_default_colors() (prompted by discussion with Bela Lubkin) -TD * make permanent an ifdef from SH which provides for truncating a too-long title with an ellipsis -HN * gettext'ify a few overlooked strings in LYOptions.c -HN * modify LYGetHostByName() for MSDOS/DJGPP/Watt-32 to enable terminating it by pressing 'z' (patch by Gisle Vanem) * update configure script macros for NLS to gettext 0.10.40 -TD * add PRCS version/date to lynx.cfg -TD * setup ifdef's for Unix-specific permissions checks to exclude single-user systems such as OS/2 EMX, Cygwin and BeOS, which otherwise act like Unix since we can run the configure script on those platforms -TD * re-order some tests in the configure script to allow pdcurses' X11 port to be recognized as supporting color and line-drawing characters -TD * work around a Cygwin bug which causes subprocesses of a full-screen program to dump core (perhaps reported by Frederic L W Meunier, but observed in running lynx in a bash shell spawned from my directory editor) -TD * fix an inequality in HTDirTitles() which made the "Up to" link omitted for the first level of an ftp listing, making it awkward to visit the parent directory if one first visited a subdirectory -TD * change HTURLPath_toFile() to keep local URLs distinct from remote ones, so win32 version will not display misleading drive letter on ftp listings -TD * rewrote Home_Dir(), adding checks for "My Documents" on Windows 2000, and ensuring that the resulting directory actually exists -TD * change ifdef's in LYwaddnstr() to use waddstr() consistently, since wide-character curses implementation treat the string in the given locale anyway, just like the waddnwstr() call -TD * reduce clutter with new macro LYIsDosDrive() -TD * add ifdef's for OS/2 EMX to existing DOSPATH code which checks for drive letter (Michel Such) * modify definitions of IsOurFile() and OpenHiddenFile() to allow trace file to be written when one already exists -TD * use new macros LYSameFilename(), LYSameHostname(), LYIsNullDevice() to hide platform-specific filename comparisons -TD * change sed delimiter in configure script to use '%' consistently, to avoid using '@', which may appear in AFS pathnames (report by Martin Mokrejs) -TD * narrowed accommodation for paths with embedded blanks in LYLegitimizeHREF() to exclude those containing newlines or tabs (report by Leslie Fairall for http://www.realtor.com) -TD * modified VMS build scripts to allow linking with OpenSSL, tested with OpenSSL-0.9.6g using UCX network libraries. It is reported (by ) that one can modify the scripts to also build with Multinet's UCX emulation, but the machine I used for testing has only UCX (comp.os.vms discussion with Christoph Gartmann ) -TD * modify UCSetBoxChars() to assume wide-character curses implementations can draw boxes -TD * reduce the number of strncasecomp() calls with associated constants by making macros for the lynx internal URL types, e.g., isLYNXCGI() -TD * modify logic that handles goto-fragment (e.g., G #foo) to update the URL shown in the info page (Debian #113734) -TD * reduce clutter using new macros findPoundSelector(), restorePoundSelector() and function trimPoundSelector() -TD * reduce clutter using functions for updating the strings in DocInfo, mainly in LYMainLoop.c -TD * renamed 'document' to 'DocInfo' -TD * reduce clutter by using NonNull() macro consistently -TD * define HistInfo struct in terms of document, to make it clearer -TD * add verification of SSL server certificates. It requires a "cert.pem" file or cert files in the "certs" subdirectory in your OpenSSL directory for CA verification. The mod_ssl distribution includes a "ca-bundle.crt" that has a good set of root certifying authority certs and works well for "cert.pem". Adding custom CA root certs can be done by either putting them in the server "cert.pem", or (for a normal user) copying "cert.pem", adding the cert, and setting the SSL_CERT_FILE environment variable before running Lynx (Chris Adams ). * add REPLAYSECS config value to allow slowing command scripts down, for testing -TD * implement a "set" command for command-scripts, allowing the script writer to manipulate the sleep-times for messages (prompted by discussion with Ville Herva) -TD * implement an "exit" command for command-scripts (Ville Herva) * modify logic for -cmd_script to stop reading from the command script when an end-of-file is detected (patch by Ville Herva ). * fill in a few descriptions of restrictions for the help message, as well as showing the on/off state of the "goto_xxx" restrictions -TD * correct inverted logic of restrictions table which made "-restrict=default" provide incorrect values for several items. This was broken in 2.8.4dev.19 (reported by Jeff Long and RobertM ) -TD * add environment variable LYNX_TRACE_FILE which, if given, overrides the compiled-in value of Lynx.trace (or LY-TRACE.LOG). This specifies the name of the trace file relative to the home directory -TD * treat empty string for most environment variables, e.g., those specifying a pathname, as null -TD * add environment variable LYNX_LOCALEDIR to simplify configuration on OS/2 EMX (from discussion with Michel Such) -TD * add alias for charsets "ISO-8859-8-I" and "ISO-8859-8-E" to "iso-8859-8" (Debian #152441, request by Atsuhito Kohda) -TD * modify handling of HTML_SUP to always append '^'. It was checking if the preceding character was a valid hexadecimal code (reported by HN and Steve White ) -TD * correct check for calling endwin() to allow for curses implementations without newterm (report/patch by Brett Lymn). * add koi8-r.html as a test for non-ANSI 8-bit displays -TD * construct "Accept-Encoding" gzip/compress parameters based on whether lynx is built with zlib and/or gzip/compress paths are defined. The latter is assumed on Unix (by the configure script), though non-Unix environments may lack those utilities (report by Roy Langford , analysis by Frederic L W Meunier) -TD * modify mouse support in slang configuration (Eduardo Chappa): + Middle button takes you to the bookmarks file. + Clicking on empty parts of the screen makes the screen scroll. This is not 100% true, here are the caveats related to this: + When you click in the first line of the screen pine goes back one screen, the same happens when you click in the last line (this is normal Lynx behavior, I did nothing in this respect). With this patch, intermediate scrolling is enabled, which means that left clicking in different (empty parts) of the screen may move you half a screen or two lines. The idea is that close to the top you scroll more, close to the center you scroll less and you scroll in the direction up or down according to which half of the screen you click on. + If you click on an empty part of the screen, Lynx changed its behavior from doing nothing to moving the active link to the closest link near the click. This is not disabled by this patch, instead, if a closest link is not found, the screen will scroll, according to the position of the link. * improve check in LYgetEnum() for ambiguous/abbreviated names in the lynx.cfg file, e.g., to match the string "visited_links=first" without confusing it with "visited_links=first_reversed" (report by vortex5 , analysis by TH) -TD * use StrAllocCopy() rather than strdup() in parse_style() (LYStyle.c) to avoid false report from leak-checking (from report by Martin Mokrejs) -TD * share SSL handle between HTTP.c and HTAAUtil.c so that call of HTAA_shouldRetryWithAuth() from HTLoadHTTP() updates the handle used in that function. This makes lynx able to get the user/password prompt for https://enter.nifty.com/iw/ -TH * fix a highlighting problem in view-source mode, which left the final character of the target unhighlighted -TH * modify LYStringToKeycode(), which is used by -cmd_script option to decode characters, to handle hexadecimal codes written with -cmd_log option from dev.8 changes (reported by Gleb V Kotelnitskyy ) -TD * modify ifdef's in LYCurses.h to implement underline-links for slang configuration (report by TH) -TD * modify checks with WEXITSTATUS() and similar "result" macros to ensure that they consistently use corresponding "test" macros such as WIFEXITED() -TD * add a null-pointer check in GridText.c to cover a problem with http://209.1.58.86/store/ (reported by Walter Ian Kaye) -TD * add some more CTRACE's to LYCookie.c to help diagnose LV problem report -TD * updated nl.po (patch by Pieter-Paul Spiertz ) -JES * new (cs.po, hu.po, tr.po) and updated (da.po, et.po, it.po, ru.po, sv.po) po files from http://www.iro.umontreal.ca/contrib/po/maint/lynx/, used msgmerge to align with 2.8.4's lynx.pot and corrected some minor issues highlighted by check_po. Checking for a newer version of check_po (to handle patterns such as "%1$s") found none, but noticed a comment in gettext mailing list stating that msgfmt does checking. Comparing with "msgfmt -c -v", found that it does useful checks, but misses about 1/4 of what check_po finds. Will use both -TD * escape blanks and other non-7bit graphic characters in startfile and similar addresses to guard against interpreting the address as multiple lines during a GET, etc (report by Ulf Harnhammar ) -TD 2002-05-28 (2.8.5dev.8) * updated makelynx.bat (Victor Schneider). * recognize charset value in meta description even if content-type is not given, in LYHandleMETA() -VH * remove ifdef that disabled home/end keys with Cygwin configuration -DK * fix a problem when whereis target string, which includes Japanese and is top of the second line in the link string, is in the current link (patch by Hataguchi Takeshi). * fix a problem with highlighting Japanese string (patch by Hataguchi Takeshi). * modify LYDownload() to ensure that local addresses under DJGPP using the special form of path beginning "/dev/" are passed to external programs without stripping the initial slash from the path. This special form of path will be understood only by other DJGPP programs. Addresses of the form "/dev/x/" are equivalent to the DOS path "x:\". Addresses of the form "/dev/env/VARI" are equivalent to the environment variable "VARI" -DK * modify remove_bookmark_link() to assume that OS/2 EMX does not allow rename of a file overwriting an existing one -IZ * recognize local .php files as HTML files (patch by Karl Eichwalder ). * change LYCurses.c to not redefine gettext(), and use ScreenClear() instead of clrscr() for DJGPP -DK * the DJGPP port of Lynx once used to compile with DJ Delorie's tcp/ip library. It is no longer the case; Watt-32 is required. Changed to assume WATT32 is defined when DJGPP (or __DJGPP__) is defined (patch by Gisle Vanem). * change LYKeycodeToString() to provide a default translation for characters which are not key-symbols, etc., so they may be used in command scripts with the -cmd_script option (reported by Christoph Fabianek) -TD * new po files (ca.po, et.po, it.po, zh_TW.po) and updated de.po from http://www.iro.umontreal.ca/contrib/po/maint/lynx/, used msgmerge to align with 2.8.4's lynx.pot and corrected some minor issues highlighted by check_po script by Stefan Hundhammer -TD * some cleanup/restructuring of HText_SubmitForm(), incomplete - toward implementing correct MIME boundary -TD * revalidate user's guide and related files using W3C validator via file-upload facility -TD * simplify some loops in GridText.c using new function next_anchor() -TD * quote field-names used when submitting form-data as suggested in RFC 2068 (report by Lieven Tomme ) -TD * remove configure-check for mkstemp(), which is redundant given that lynx writes temporary files in a directory which is not readable by other users. On more than one system (e.g., Solaris), mkstemp() is not usable in the manner we attempted, since it does not necessarily choose a distinct name if the previously-chosen filename no longer exists (report/analysis by PG) -TD * correct a typo in configure macro CF_HEADER_PATH which told the script to look for header files in the user's $HOME/lib rather than $HOME/include directory -TD * update config.guess, config.sub -TD * add check for HTTP headers using Netscape extension "Refresh", and if found, add a corresponding refresh-URL at the beginning of the document. Fixes Debian #126723 -TD * strip username from URLs used in an HTTP GET, and warn about this condition. The example given was "http://www.microsoft.com&item%3dq209354@212.254.206.213/1338825GHU_98.asp" the text of which could mislead a user into believe it was an official site (reported by Frederic L W Meunier) -TD * add limit checks in HText_trimHightext() to fix an infinite loop visiting this site (which contains a form with only hidden input fields): 1- http://www.ibazar.com.br/ 2- Click "Cadastro" and accept all cookies 3- Click "[accepte.gif]" (reported by Frederic L W Meunier) -TD 2002-01-06 (2.8.5dev.7) * ifdef'd new directory-sorting code to compile when configure --disable-dired is specified -TD * add (commented-out) definitions for building with OpenSSL in makefile.msc, tested with OpenSSL 0.9.6c and Visual C++ 5.0 -TD * correct call to HTGetLinkInfo() in follow_link_number() from 2.8.5dev.6 changes to fix uninitialized pointer (report by PW) -TD 2002-01-01 (2.8.5dev.6) * add configure options to link with dbmalloc and dmalloc debugging libraries which offer different features than --enable-find-leaks -TD * restructured LYhighlight() and logic related to highlighted text using new functions LYSetHilite(), LYAddHilite(), LYGetHiliteStr() and LYGetHilitePos() to allow more than two lines to be highlighted in links (Debian #114062) -TD * simplified some of LYCookie.c with new functions find_domain_entry(), alloc_attr_value() and parse_attribute() -TD * modify expansion of %s for WIN_EX EXTERN commands so that short names (used when the command begins with an uppercase character) are not quoted, and use backslashes. The normal %s expansion uses forward slashes and may quote the name if it contains a blank -TD * modify local directory sort by type to ignore leading '.' characters when looking for filetype -TD * modify logic of HTDirEntry() to avoid storing a trailing backslash (DOS-style path separator) in the anchor URL for local directory entries (from report by Hataguchi Takeshi) -TD * amend change in 2.8.5dev.2 to HTLoadHTTP() to omit "Accept-Encoding: gzip" ensuring that also -source or -dump option is used. Retesting excite.com shows that it no longer matters, since the page was replaced by a short javascript which is not sent compressed (request by Hataguchi Takeshi) -TD * correct a missing definition for COMPRESS_PROG in the configure script introduced by 2.8.5dev.5 changes (also noted by Stepan Kasal) -TD * several fixes from Stepan Kasal : + remove code in LYCurses.c which checks ttytype variable for "dec-vt" prefix. EWAN, a decent telnet program for M$ Windows, sets $TERM to dec-vt100. This is similar to vt102 but it is not appropriate to use vt100 settings for it. ncurses has in its terminfo database an entry for "dec-vt100|EWAN telnet's terminal" The terminfo file is successfully opened when ncurses is initialised and ttytype is set to the name mentioned above. After stripping "dec-" from it, lynx ends up searching for "/usr/share/terminfo/v/vt100|EWAN telnet's terminal" which cannot cannot be found and lynx crashes. + compress installed html files with the -9 option of gzip. + improved install-help makefile rule * fix some longstanding problems with the DOS port -DK + fix inability to break out of a hung nameserver lookup or hung connection attempt without aborting lynx entirely. Using the WATT-32 signal handler for this seems to work well. Change the default compile option for DJGPP to -DIGNORE_CTRL_C, causing lynx to ignore SIGINT, so CTRL-BREAK is completely disabled. With this patch CTRL-C stops current actions without quitting lynx. To have a way to abort lynx when necessary, bind ALT-X to SIGQUIT. (The unix default of CTRL-\ is not bound to the same scan code on different international keyboards, while ALT-X is familiar to DOS users for existing programs). Because the WATT-32 signal handler was not available to external programs, a patch to WATT-32 is necessary for the new lynx code to work. The patch for WATT-32 is shown in the INSTALLATION documentation. + added some fixes for "/" vs "\" handling in pathnames so that non-DJGPP programs will see standard DOS pathnames when called. The mailer code was ignoring the environment variable SHELL when calling the mailer, leading to a lack of environment space for the mailer to work -DK + add calls to _eth_release() and _eth_init(), which Gisle Vanem says should not be necessary in this part of lynx. But this seems to fix get intermittent hung nameserver lookup sessions after using CTRL-C. * simplified a loop in HTConfirmCookie() and added CTRACE's to demonstrate that this is working properly (addresses Debian #119751) -TD * add some CTRACE's to curses screen initialization and resizing to provide better diagnosis of problem reported by David Balazic on HP-UX 11.00) -PG * modify configure.in and aclocal.m4 to work with autoconf 2.52 patched with ftp://invisible-island.net/autoconf/autoconf-2.52-20011227.patch.gz (TD). * modify configure macros CF_CURSES_CPPFLAGS and CF_NCURSES_CPPFLAGS to ensure that the (n)curses.h header file is actually found, in case someone tries to build lynx without having installed the development files (based on anonymous posting on comp.os.linux.networking newsgroup) -TD * update config.guess, config.sub from http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ 2001-11-18 (2.8.5dev.5) * modify prompt for file- or directory-name in rename/move operation to provide a default based on the selected file/directory -TD * add -DOK_OVERRIDE to makefile.msc, to allow rename/move of files in the local directory editor -TD * correct delay time for win32's HTAlert, etc., which was in milliseconds rather than seconds -TD * modify check for mbstate_t in CF_WIDEC_CURSES to define HAVE_MBSTATE_T if that type is found, use this ifdef in LYwaddnstr() to make that compile properly on Solaris 2.6 (report by PG) -TD * disable SUPPORT_MULTIBYTE_EDIT ifdef for EBCDIC (i.e., NOT_ASCII) -PG * collect names of lynx.cfg and .lynxrc variables into LYrcFile.h, to simplify checks for matching spelling, e.g., against the values used in LYOptions.c -TD * modify dired support to allow sorting by a variety of things in addition to the existing sort into files versus directories. This is saved in ~/lynxrc as dir_sort_order -TD * if --disable-full-paths is specified, do not use full path for SYSTEM_MAIL (report by IZ) -TD * modify configure script to reduce the number of xxx_PATH definitions compiled into the code if --disable-dired was specified. Change configure script so that dired support for chmod, copy, mkdir, and touch to use built-in functions rather than external programs -TD * modify configure script tests for program pathnames so that if full pathnames are specified and the program is not found, no corresponding xxx_PATH symbol is defined -TD * eliminate duplicate LYGetEnum() in LYrcFile.c, using the variant from LYReadCFG.c which allows abbreviations -TD * change handling of tagsoup option in LYrcFile.c to invoke the corresponding HTSwitchDTD() function, so saved tagsoup initializes properly from ~/.lynxrc (report by Michel Such) -TD * modify some tag-names in LYOptions.c to correspond to the names used in lynx.cfg to make the corresponding names work properly when used in ~/.lynxrc via ENABLE_LYNXRC settings (report by Michel Such) -TD old new ---------------------------- assume_char_set -> assume_charset show_scrollbar -> scrollbar DTD_recovery -> tagsoup show_rate -> show_kb_rate user_agent -> useragent ---------------------------- * correct length passed by LYpaddstr() to LYwaddnstr(), which could be larger than allowed -TD 2001-11-08 (2.8.5dev.4) * if file-upload code is configured, suppress message that indicates it is not implemented, i.e., "[FILE Input] (not implemented)" -TD * modify file-upload submission to send plain text if the file is entirely printable text. Mime encoding is needed if the file contains nulls, etc., but reportedly may confuse some hosts -TD * suppress "charset=" clause on form submission if it is iso-8859-1 -TD * move case for F_FILE_TYPE in HText_SubmitForm() to obtain original behavior of fallthrough for F_SUBMIT_TYPE, F_TEXT_SUBMIT_TYPE, F_IMAGE_SUBMIT_TYPE to translate their character set, etc. (report by KW) -TD * revert 2.8.4dev.21 change to avoid truncating cookie path in LYSetCookie(). The server that wouldn't work with the current lynx behavior is identified as "Oracle_Web_Listener/4.0.8.2.3EnterpriseEdition" -DK * modify LYLegitimizeHREF() change from 2.8.4dev.21 to eliminate newlines from the HREF rather than converting them to spaces. This fixes a problem with www.ebay.com which splits up HREFs with newlines. Changing the newlines to spaces made the HREF no longer match, e.g., when it was built up from a CGI script (report by Morten Bo Johansen) -TD * add two test files for testing UTF-8, based on Markus Kuhn's demos (quickbrown.html and utf-8-demo.html). These work with ncurses 20011103 patch, for wide-characters except for combining characters (more work is needed in ncurses). Tested with XFree86 xterm (patch #163) -TD * modify select_multi_bookmarks() check for interrupt character to limit it to "hard" interrupt characters such as ^G. This fixes a case where "z" would have been treated as an interrupt character in advanced multibookmark mode (reports by Michael Warner, HN, as well as Debian #111463) -TD * modify SUPPORT_MULTIBYTE_EDIT logic in LYUpperCase() and LYLowerCase() to check for a null character following an upper-128 code. This is more likely to occur in EBCDIC, though the multibyte strings should not have a null at this position in any case (report by PG) -TD * for wide-character curses configuration, do not force repainting at the end of display_page() -TD * modify configure test for mkstemp() to check if that function returns distinct values (report by Fr3dY indicates that AmigaOS has a broken version of mkstemp() which always returns the same value) -TD * modify LYwaddstr() to use wide-character curses functions to make UTF-8 output work without relying upon side-effects of narrow-character functions. Note that this relies on the user having set a UTF-8 locale, e.g., en_US.UTF-8 -TD * modify HText_appendCharacter() to not use utfxtra_on_this_line when compiling with WIDEC_CURSES, since the curses library already does this adjustment -TD * correct the following names in LYrcFile.c which were added to allow ENABLE_LYNXRC lines in lynx.cfg to enable them to be saved in ~/.lynxrc old new where-used ------------------------------------- DTD_recovery tagsoup (command-line option and lynx.cfg) show_rate show_kb_rate (lynx.cfg) user_agent useragent (command-line option) ------------------------------------- (report by Michel Such ) -TD * modify LYRefreshEdit() to clear field before repainting (patch by Hataguchi Takeshi) * for CJK configuration, force clearing/repainting in HTUserMsg() (patch by Hataguchi Takeshi) * make HTInfoMsg() sleep condition consistent with other messages by using LYSleepInfo() -TD * reduce clutter with new function utf8_length() -TD * replace !isascii(ch) with new macro is8bits(ch), to reduce clutter, fix some sign-extensions and make it more portable -TD * change some of the "#if" statements to "#ifdef", to work around broken versions (2.96, 3.0.1) of gcc distributed with Mandrake 8.1 (though reportedly this is due to Redhat): the -C option passes through comments as usual, but some comments expand on preprocessor lines, which causes the preprocessor to report an expression error. This prevented "make install-help" from running, though the -C option is not needed for that. However, lacking a working -C option makes the C preprocessor useless for analyzing bugs -TD * modify configure script to accept --with-screen=ncursesw, to build with the wide-character version of ncurses -TD * modify configure script to look for mkdtemp(), to quiet another bogus linker message -TD 2001-10-06 (2.8.5dev.3) * add CF_MKSTEMP configure macro, from vile, to check for a working mkstemp(). This will quiet some bogus warning messages in recent runtime support, but (see 2.8.3) does not affect the security of temporary files in lynx -TD * updated CF_PATH_SYNTAX configure macro, from vile, to handle leading "\\" in a win32 pathname -TD * for configurations that provide scrollbar, add a checkbox to the Options menu to enable or disable it -TD * modify LYGetHostByName() in HTTCP.c to use the threaded _WINDOWS_NSL code for all Cygwin machines. The ability to interrupt nameserver lookup has not worked in Win98 using the Cygwin port, despite defining _WINDOWS_NSL. It looks like the threaded code was only for WinNT. At least under Cygwin, that code also seems to work fine under Win98 -DK * add FIELDS_ARE_NUMBERED as a possible value for DEFAULT_KEYPAD_MODE in lynx.cfg as well as keypad_mode in .lynxrc -TD * add NUMBER_FIELDS_ON_LEFT and NUMBER_LINKS_ON_LEFT to lynx.cfg, use these to control where field- and link-numbering is placed. Caveat: there are some cases where fields that do popup's are truncated, e.g., in the Options menu, when right-alignment is used -TD * support for DJGPP's two forms of file addressing, [a-zA-Z]:[/\\] and /dev/[a-zA-z]/ -DK * add samples/lynxdump script, to illustrate how to use lynx -dump with no link references (prompted by discussion with LV) -TD * add samples/keepviewer script, to illustrate how to retain a temporary file for use in an external viewer -TD * add ifdef's in is_url() to avoid recognizing URLs if they are disabled in the given configuration, i.e., bibp, finger, ftp, gopher, news (report by Frederic L W Meunier) -TD * modify LYrefresh() to take into account whether a popup window exists, so that a search prompt will not overwrite a popup. This bug was introduced by the curses pads (reported by Felicia Neff and Fr3dY ) -TD * add note in keystroke_help.html about CTRL-V as literal-next (lnext) for users who are unfamiliar with stty -TD * add NcFTP-style ftp-URLs which are supported by Netscape and wget (request by Martin Mokrejs) -TD * add traces in LYReadCFG.c and LYrcFile.c to report lines which are not found in the symbol table, to help diagnose when a user adds lynx.cfg information to .lynxrc -TD * define additional -trace-mask option, 8=config -TD * modify LYtouchline() to avoid using wredrawln() for ncurses, since the LYwin variable may be a pad much wider than the screen, which is not handled properly (report by Karl Eichwalder ) -TD * correct beginning of configure script, which was supposed to remove config.cache, but did not, due to a misplaced line when it was added 1998-06-04 (prompted by a report by Fr3dY that the checks for srand/rand did not work) -TD 2001-08-15 (2.8.5dev.2) * several small fixes to HTFile.c to make directory listings work properly on win32, e.g., stat'ing a directory with a trailing slash fails (reported by Hataguchi Takeshi) -TD * adjust definitions in LYCurses.h to get rid of slang-ifdef's for getyx() and wmove() -TD * change order of srandom/random versus srand48/lrand48 -DK * patch to get the DJGPP port to use the configure script -DK It seems to work well in the variations I have tried, including both PDCurses and SLang. revised INSTALLATION for DOS, giving a URL for my DOS patch to openssl. I dropped the reference to goto URL of the form file:///dev/c/path/filename, since this only works in certain parts of lynx (such as lynx.cfg). I'll try to get this working in the future. In fixing makefile.in, I patched the sed script for converting the path to docdir. As far as I can tell, however, from my examination of lynx.cfg, this isn't used for any platform. Does this part of the sed script do anything? Things still needing fixing for DOS: + support for both forms of file addressing, [a-zA-Z]:[/\\] and /dev/[a-zA-z]/. + support for gzipped help files. This works with long file names in a DOS box under Windows, but not in plain DOS, which doesn't allow double extensions. + better handling of local files in root directory. "file:///c:/" takes a long time to work, but "file:///c:/." works fine. I haven't really looked to see why. + no ability to break out of hung nameserver lookups or http requests without closing lynx with SIGINT. This is the biggest complaint I get by email. * modify ifdef for myGetChar() in LYStrings.c to build with PDCurses 2.3 e.g., to use a version which is modified for Japanese input (patch by Hataguchi Takeshi) * review LYSafeGets() calls, stripping newlines from a few places where they were overlooked, and simplifying some places where LYSafeGets() would normally return a buffer ended with a newline (prompted by a report by Brian S Queen for LYTraversal.c) -TD * correct reallocation-size in ProcessMailcapEntry() -TD * modify HTLoadHTTP() to omit "Accept-Encoding: gzip" if command-line "-base" option is given. This makes lynx -base -source excite.com work as expected. Otherwise, excite.com will transmit the document gzip'd, and the ensuing logic in HTSaveToFile() would see the mime-type as gzip rather than text/html, and not prepend the base URL (report by Kai Shih ) -TD * work around defect in move_anchors_in_region() and related logic by changing default for nested-tables to FALSE when Lynx is not configured for color-style. The problem is that when an anchor is shifted right by nested-table logic, if it has a
near the beginning of a table cell and it happens to be split across a line, its size will not be adjusted properly (report by Hataguchi Takeshi) -TD * correct logic used for trimming TEXTAREA introduced in 2.8.4pre.3, which did not trim carriage-return characters if TRIM_INPUT_FIELDS was false. (report by Hataguchi Takeshi) -TD * correct a bug in search logic which happens with pages shorter than the screen, due to improper starting-line value sent to search function. Fixed by adding checks in www_search_backward() and www_search_foreward(), (report by -Frederic L W Meunier) -TD 2001-07-24 (2.8.5dev.1) * modify GetChar() definition for PDCurses to ignore key-modifiers which are passed back from getch() as if they were key codes. Those interfere with shifted commands such as 'Q' -TD * modify parse_style() function to operate on a copy of its parameter, to avoid changing it. Otherwise, when parse_style() is executed as a side effect of start_curses(), its data is modified and not valid on successive calls. This bug existed prior to 2.8.4dev.17 -TD * set return value of edit_current_file() to true if the file is edited. This forces a reload for example if one edits the current html file, and is needed to make PDCurses repaint the screen as well (report by Victor Schneider, bug introduced in 2.8.4dev.21) -TD * add ifdef for wresize() to accommodate FreeBSD 3.x which has resizeterm() but not wresize(). Also, use a 'long' rather than 'attr_t'. These changes are needed to build with the 1.8.6ache patches to ncurses (report by Matt ) -TD 2001-07-17 (2.8.4rel.1) * remove comment in README.ssl directing people to http://www.moxienet.com/lynx/, since that page is moot with 2.8.4 -DK * add an ifdef in CF_CURSES_FUNCS configure macro to avoid confusing ncurses' term.h with other versions -TD * update URL for zlib -Frederic L W Meunier 2001-07-14 (2.8.4pre.5) * document CHARSETS_DIRECTORY and CHARSET_SWITCH_RULES in lynx.cfg -IZ * add a fallback in _Switch_Display_Charset() if no CHARSETS_DIRECTORY was specified -IZ * ensure that config variable names in LYReadCFG.c are in alphabetic order, though only the first character matters (report by IZ) -TD * updated notes on DOS in INSTALLATION -DK * modify ifdef in HTTP.c to build with configure --with-ssl --disable-news (report by Frederic L W Meunier) -TD 2001-07-10 (2.8.4pre.4) * correct red/blue color swapping for PDCurses when built on Unix, which uses X11 -TD * correct order of checks for wrapping in www_search_forward() and www_search_backward(), which would allow an infinite loop if there were no anchors on the current page (report by Frederic L W Meunier) -TD * add a missing chunk to reverted change of SGML_character() -NSH 2001-07-07 (2.8.4pre.3) * review/add descriptions of new command-line options in lynx.man, lynx.hlp and Lynx_users_guide.html -TD * update da.po, ja.po, ru.po, sv.po from http://www.iro.umontreal.ca/contrib/po/maint/lynx/ (report by JES) -TD * add command-line option -curses-pads which can be used to disable the left/right scrolling logic. This is used for testing, e.g., the repaint bug reported below -TD * remove logic in lynx_force_repaint() which reset the window background, since it does not work with the logic used to implement left/right scrolling. Retested older versions of ncurses and did not find a case where this was needed after all (report by IZ) -TD * revert dev.21 change to SGML_character() S_equals case, which has undesirable side effects regarding spacing around '=' (report by ) -TD * define additional -trace-mask option, 1=SGML -TD * add -trim_input_fields command-line option and corresponding TRIM_INPUT_FIELDS to lynx.cfg to suppress trimming of TEXT and TEXTAREA fields in forms. This does not retain trailing blank lines in a TEXTAREA; more work would be needed to do that (reported by VH, most browsers appear to retain trailing blanks) -TD * modify parsing of "" to allow "" comments in SGML_character(). Though the HTML 4.0 spec is fairly clear, other browsers (and some webpages) assume that " and comment -TD * improve logic for nested-tables to handle cases such as www.tin.org -IZ TRST ignores the horizontal alignment *inside* a multi-line cell of a table. This limitation, in conjunction with the nested-tables modifications does not work well when text with a horizontal alignment (e.g.,