Lines Matching +full:embedded +full:- +full:trace +full:- +full:extension
1 <!--
4 * Copyright 2019-2020,2022 Thomas E. Dickey *
5 * Copyright 2000-2013,2017 Free Software Foundation, Inc. *
31 -->
32 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
38 <link rel="author" href="mailto:bugs-ncurses@gnu.org">
39 <meta http-equiv="Content-Type" content=
40 "text/html; charset=us-ascii"><!--
41 This document is self-contained, *except* that there is one relative link to
42 the ncurses-intro.html document, expected to be in the same directory with
44 -->
47 <h1 class="no-header">A Hacker's Guide to NCURSES</h1>
93 Non-<strong>use</strong> Capabilities</a></li>
97 <li><a href="#translation">Source-Form Translation</a></li>
122 provide a free software API for character-cell terminals and
126 <li>Source-compatible with historical curses implementations
132 <li>High-quality — stable and reliable code, wide
147 <p>We used System V curses as a model, reverse-engineering their
157 base-level XSI conformance.</p>
168 nonstandard extension a feature macro, so that ncurses client
170 requires the <strong>ncurses</strong> extension.</p>
182 ANSI-standard C compiler and POSIX-compatible OS interface. It
183 may also assume the presence of a System-V-compatible
187 friendly to less-capable UNIX environments wherever possible.</p>
189 <p>We encourage developers to support OS-specific optimizations
204 portability issues. The right way to leverage an OS-specific
216 <li>Package-internal files (README, INSTALL, TO-DO etc.)</li>
226 <li><strong>Maintain package-internal files in plain
228 an editor window; there is no point in elaborate mark-up.</li>
242 <p>The reason for choosing HTML is that it is (a) well-adapted
243 for on-line browsing through viewers that are everywhere; (b)
244 more easily readable as plain text than most other mark-ups, if
246 you can generate a nice-looking printed version from it. Also, of
254 "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>. This is a
256 <code>bug-ncurses-request@gnu.org</code> with a message
259 <pre class="code-block">
265 hand-holding. We rely on intelligent cooperation from our users.
270 <p>In order to use our bug-fixing time efficiently, we put people
290 using a traditional asynchronous terminal or PC-based
307 <li><p>Generate and examine a trace file for the broken behavior.
309 libraries. Insert a <code>trace()</code> call with the
311 "ncurses-intro.html#debugging">"Writing Programs with
312 NCURSES"</a> for details on trace levels.) Reproduce your
313 bug, then look at the trace file to see what the library was
318 virtual screen. Looking at the virtual-screen dumps in the
319 trace file will tell you immediately if this is happening,
324 <p>If the virtual-screen dumps look correct but the bug
325 persists, it is possible to crank up the trace level to give
335 screen-update logic quite exactly.</p>
350 <p>If your bug produces a bad update, include a trace file.
351 Try to make the trace at the <em>least</em> voluminous level
354 (actually they are better than un-munched ones because they
357 <p>If your bug produces a core-dump, please include a
358 symbolic stack trace generated by gdb(1) or your local
379 frame for the cursor-movement optimization code. With this
384 command-driven and has on-line help.</p>
386 <p>If you think the vertical-scroll optimization is broken, or
390 out. You can also test the hardware-scrolling optimization
433 unless you want to introduce a new debug trace level for some
502 used to match multiple-character input sequences against
503 special-key capabilities; also to implement pushback via
515 that some BSD selects do not return a reliable time-left value.
530 without going through the function-key machinery would be just
532 somewhere in the function-key capabilities at terminal-type
538 forgotten experiment in-house at Bell Labs that did not leave any
539 traces in the publicly-distributed System V terminfo files. If
546 lower level that accepts event reports in a device-dependent
561 reports (low-level events) into a gesture (a high-level or
567 <code>wgetnstr()</code> call (which simulates cooked-mode line
587 newscr structure. These are modified by vertical-motion and
588 clear operations, and both are re-initialized after each
589 update. To this change-journalling information, the hashmap
603 to do line-by-line transformations of <code>curscr</code>
606 This routine does cursor-movement optimization, attempting to
613 the fact that (in the trace-enabled version of the library)
614 enabling the <code>TRACE_TIMES</code> trace level causes a report
619 <p>In the trace-enabled version of the library, it is also
620 possible to disable and re-enable various optimizations at
631 built-in form field type TYPE_REGEXP will recognize.</p>
638 assist in porting u386mon 2.0 (comp.sources.misc v14i001-4) to
652 <p>The implementation therefore starts with a table-driven,
653 dual-mode lexical analyzer (in <code>comp_scan.c</code>). The
661 Non-<strong>use</strong> Capabilities</a></h3>
683 <a href="#translation">Source-Form Translation</a>.</p>
700 embedded version cannot go promiscuously writing everything it
702 be running with non-root permissions.</p>
705 terminfo file into a doubly-linked circular list of entry
706 structures in-core, and then do <strong>use</strong> resolution
707 in-memory before writing everything out. This design has other
708 advantages: it makes forward and back use-references equally easy
712 <p>And this is exactly how the embedded version works. But the
713 stand-alone user-accessible version of <strong>tic</strong>
718 <p>This is strictly a core-economy kluge, implemented because the
719 terminfo master file is large enough that some core-poor systems
726 entry-parser a hook that <em>immediately</em> writes out the
728 loop refrains from adding the entry to the in-core list when this
740 <h3><a name="translation" id="translation">Source-Form
772 the same entry-dumping code used by <strong>tic</strong> for
777 De-compilation case and entry difference reporting.</p>
785 <p>See the TO-DO file in the top-level directory of the source
800 <p>Do not try to auto-detect OS features in the main body of the
803 <p>To hold down complexity, do make your code data-driven.
807 is still preferable to ad-hoc code — that is why the fifth
822 they should not need to be modified for single-terminal
849 <p>This modules assist in POSIX emulation on non-POSIX
859 single-terminal-type port.</p>
879 <dd>used to write trace data to the logfile</dd>
886 contain assumptions inappropriate for a memory-mapped port.</p>
910 <p>The following modules use UNIX-specific calls:</p>
931 <dd>various tty-manipulation and system calls</dd>
935 <dd>various tty-manipulation calls</dd>
939 <dd>various tty-manipulation calls</dd>
943 <dd>various tty-manipulation calls</dd>
947 <dd>signal-manipulation calls</dd>