micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1 | <!-- |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2 | **************************************************************************** |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 3 | * Copyright 2018-2023,2024 Thomas E. Dickey * |
| 4 | * Copyright 2008-2016,2017 Free Software Foundation, Inc. * |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 5 | * * |
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a * |
| 7 | * copy of this software and associated documentation files (the * |
| 8 | * "Software"), to deal in the Software without restriction, including * |
| 9 | * without limitation the rights to use, copy, modify, merge, publish, * |
| 10 | * distribute, distribute with modifications, sublicense, and/or sell * |
| 11 | * copies of the Software, and to permit persons to whom the Software is * |
| 12 | * furnished to do so, subject to the following conditions: * |
| 13 | * * |
| 14 | * The above copyright notice and this permission notice shall be included * |
| 15 | * in all copies or substantial portions of the Software. * |
| 16 | * * |
| 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| 18 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| 20 | * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| 21 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| 22 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| 23 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| 24 | * * |
| 25 | * Except as contained in this notice, the name(s) of the above copyright * |
| 26 | * holders shall not be used in advertising or otherwise to promote the * |
| 27 | * sale, use or other dealings in this Software without prior written * |
| 28 | * authorization. * |
| 29 | **************************************************************************** |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 30 | * @Id: tabs.1,v 1.59 2024/04/20 19:08:15 tom Exp @ |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 31 | --> |
| 32 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
| 33 | <HTML> |
| 34 | <HEAD> |
| 35 | <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 36 | <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> |
| 37 | <TITLE>tabs 1 2024-04-20 ncurses 6.5 User commands</TITLE> |
| 38 | <link rel="author" href="mailto:bug-ncurses@gnu.org"> |
| 39 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 40 | </HEAD> |
| 41 | <BODY> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 42 | <H1 class="no-header">tabs 1 2024-04-20 ncurses 6.5 User commands</H1> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 43 | <PRE> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 44 | <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> User commands <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 45 | |
| 46 | |
| 47 | |
| 48 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 49 | </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> |
| 50 | <STRONG>tabs</STRONG> - set terminal tab stops |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 51 | |
| 52 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 53 | </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> |
| 54 | <STRONG>tabs</STRONG> [<EM>options</EM>] [<EM>tabstop-list</EM>] |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 55 | |
| 56 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 57 | </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> |
| 58 | The <STRONG>tabs</STRONG> program clears and sets tab-stops on the terminal. This uses |
| 59 | the terminfo <STRONG>clear_all_tabs</STRONG> and <STRONG>set_tab</STRONG> capabilities. If either is |
| 60 | absent, <STRONG>tabs</STRONG> is unable to clear/set tab-stops. The terminal should be |
| 61 | configured to use hard tabs, e.g., |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 62 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 63 | stty tab0 |
| 64 | |
| 65 | Like <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>tabs</STRONG> writes to the standard output. You can redirect |
| 66 | the standard output to a file (which prevents <STRONG>tabs</STRONG> from actually |
| 67 | changing the tabstops), and later <STRONG>cat</STRONG> the file to the screen, setting |
| 68 | tabstops at that point. |
| 69 | |
| 70 | These are hardware tabs, which cannot be queried rapidly by |
| 71 | applications running in the terminal, if at all. Curses and other |
| 72 | full-screen applications may use hardware tabs in optimizing their |
| 73 | output to the terminal. If the hardware tabstops differ from the |
| 74 | information in the terminal database, the result is unpredictable. |
| 75 | Before running curses programs, you should either reset tab-stops to |
| 76 | the standard interval |
| 77 | |
| 78 | tabs -8 |
| 79 | |
| 80 | or use the <STRONG>reset</STRONG> program, since the normal initialization sequences do |
| 81 | not ensure that tab-stops are reset. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 82 | |
| 83 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 84 | </PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 85 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 86 | </PRE><H3><a name="h3-General-Options">General Options</a></H3><PRE> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 87 | <STRONG>-T</STRONG><EM>name</EM> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 88 | Tell <STRONG>tabs</STRONG> which terminal type to use. If this option is not |
| 89 | given, <STRONG>tabs</STRONG> will use the <STRONG>$TERM</STRONG> environment variable. If that is |
| 90 | not set, it will use the <EM>ansi+tabs</EM> entry. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 91 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 92 | <STRONG>-d</STRONG> The debugging option shows a ruler line, followed by two data |
| 93 | lines. The first data line shows the expected tab-stops marked |
| 94 | with asterisks. The second data line shows the actual tab-stops, |
| 95 | marked with asterisks. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 96 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 97 | <STRONG>-n</STRONG> This option tells <STRONG>tabs</STRONG> to check the options and run any debugging |
| 98 | option, but not to modify the terminal settings. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 99 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 100 | <STRONG>-V</STRONG> reports the version of <EM>ncurses</EM> which was used in this program, and |
| 101 | exits. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 102 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 103 | The <STRONG>tabs</STRONG> program processes a single list of tab stops. The last option |
| 104 | to be processed which defines a list is the one that determines the |
| 105 | list to be processed. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 106 | |
| 107 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 108 | </PRE><H3><a name="h3-Implicit-Lists">Implicit Lists</a></H3><PRE> |
| 109 | Use a single number as an option, e.g., "<STRONG>-5</STRONG>" to set tabs at the given |
| 110 | interval (in this case 1, 6, 11, 16, 21, etc.). Tabs are repeated up |
| 111 | to the right margin of the screen. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 112 | |
| 113 | Use "<STRONG>-0</STRONG>" to clear all tabs. |
| 114 | |
| 115 | Use "<STRONG>-8</STRONG>" to set tabs to the standard interval. |
| 116 | |
| 117 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 118 | </PRE><H3><a name="h3-Explicit-Lists">Explicit Lists</a></H3><PRE> |
| 119 | An explicit list can be defined after the options (this does not use a |
| 120 | "-"). The values in the list must be in increasing numeric order, and |
| 121 | greater than zero. They are separated by a comma or a blank, for |
| 122 | example, |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 123 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 124 | tabs 1,6,11,16,21 |
| 125 | tabs 1 6 11 16 21 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 126 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 127 | Use a "+" to treat a number as an increment relative to the previous |
| 128 | value, e.g., |
| 129 | |
| 130 | tabs 1,+5,+5,+5,+5 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 131 | |
| 132 | which is equivalent to the 1,6,11,16,21 example. |
| 133 | |
| 134 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 135 | </PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab Stops</a></H3><PRE> |
| 136 | POSIX defines several predefined lists of tab stops. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 137 | |
| 138 | <STRONG>-a</STRONG> Assembler, IBM S/370, first format |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 139 | 1,10,16,36,72 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 140 | |
| 141 | <STRONG>-a2</STRONG> Assembler, IBM S/370, second format |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 142 | 1,10,16,40,72 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 143 | |
| 144 | <STRONG>-c</STRONG> COBOL, normal format |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 145 | 1,8,12,16,20,55 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 146 | |
| 147 | <STRONG>-c2</STRONG> COBOL compact format |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 148 | 1,6,10,14,49 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 149 | |
| 150 | <STRONG>-c3</STRONG> COBOL compact format extended |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 151 | 1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 152 | |
| 153 | <STRONG>-f</STRONG> FORTRAN |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 154 | 1,7,11,15,19,23 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 155 | |
| 156 | <STRONG>-p</STRONG> PL/I |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 157 | 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 158 | |
| 159 | <STRONG>-s</STRONG> SNOBOL |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 160 | 1,10,55 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 161 | |
| 162 | <STRONG>-u</STRONG> UNIVAC 1100 Assembler |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 163 | 1,12,20,44 |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 164 | |
| 165 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 166 | </PRE><H3><a name="h3-Margins">Margins</a></H3><PRE> |
| 167 | A few terminals expose a means of changing their left and right |
| 168 | margins. <STRONG>tabs</STRONG> supports this feature with an option. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 169 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 170 | <STRONG>+m</STRONG> <EM>margin</EM> |
| 171 | The effect depends on whether the terminal has the margin |
| 172 | capabilities: |
| 173 | |
| 174 | <STRONG>o</STRONG> If the terminal provides the capability for setting the left |
| 175 | margin, <STRONG>tabs</STRONG> uses this, and adjusts the available tab stop |
| 176 | widths. |
| 177 | |
| 178 | <STRONG>o</STRONG> If the terminal does not provide the margin capabilities, <STRONG>tabs</STRONG> |
| 179 | imitates their effect, putting tab stops at appropriate places |
| 180 | on each line. The terminal's left margin is not modified. |
| 181 | |
| 182 | If the <EM>margin</EM> parameter is omitted, the default is 10. Use <STRONG>+m0</STRONG> to |
| 183 | reset the left margin, that is, to make it the left edge of the |
| 184 | terminal's display. Before setting a left margin, <STRONG>tabs</STRONG> resets the |
| 185 | margin to reduce problems that might arise from moving the cursor |
| 186 | to the left of the current left margin. |
| 187 | |
| 188 | When setting or resetting the left margin, <STRONG>tabs</STRONG> may also reset the |
| 189 | right margin. |
| 190 | |
| 191 | |
| 192 | </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> |
| 193 | <EM>/usr/share/tabset</EM> |
| 194 | tab stop initialization database |
| 195 | |
| 196 | |
| 197 | </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> |
| 198 | IEEE Std 1003.1/The Open Group Base Specifications Issue 7 |
| 199 | (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility. However, |
| 200 | |
| 201 | <STRONG>o</STRONG> this standard describes a <STRONG>+m</STRONG> option to set a terminal's left |
| 202 | margin. Very few of the entries in the terminal database provide |
| 203 | the <STRONG>set_left_margin</STRONG> (<STRONG>smgl</STRONG>) or <STRONG>set_left_margin_parm</STRONG> (<STRONG>smglp</STRONG>) |
| 204 | capabilities needed to support the feature. |
| 205 | |
| 206 | <STRONG>o</STRONG> There is no counterpart in X/Open Curses Issue 7 for this utility, |
| 207 | unlike <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>. |
| 208 | |
| 209 | The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are <EM>ncurses</EM> extensions not |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 210 | provided by other implementations. |
| 211 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 212 | |
| 213 | </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> |
| 214 | A <STRONG>tabs</STRONG> utility appeared in PWB/Unix 1.0 (1977). A reduced version |
| 215 | shipped in Seventh Edition Unix (early 1979) and in 3BSD (later the |
| 216 | same year); it supported a "-n" option to set the first tab stop at the |
| 217 | left margin. That option is not specified by POSIX. |
| 218 | |
| 219 | The PWB/Unix <STRONG>tabs</STRONG> utility returned in System III (1980), and used |
| 220 | built-in tables to support a half-dozen hardcopy terminal (printer) |
| 221 | types. It also had logic to support setting the left margin, as well |
| 222 | as a feature for copying the tab settings from a file. |
| 223 | |
| 224 | Versions of the program in later releases of AT&T Unix, such as SVr4, |
| 225 | added support for the terminal database, but retained the tables to |
| 226 | support the printers. By this time, System V <STRONG>tput</STRONG> had incorporated the |
| 227 | tab stop initialization feature of BSD's <STRONG>tset</STRONG> from 1982, but employed |
| 228 | the <EM>terminfo</EM> database to do so. |
| 229 | |
| 230 | The <STRONG>+m</STRONG> option was documented in the POSIX Base Specifications Issue 5 |
| 231 | (Unix98, 1997), then omitted in Issue 6 (Unix03, 2004) without express |
| 232 | motivation, though an introductory comment "and optionally adjusts the |
| 233 | margin" remains, overlooked in the removal. The <STRONG>tabs</STRONG> utility |
| 234 | documented in Issues 6 and later has no mechanism for setting margins. |
| 235 | The <STRONG>+m</STRONG> option in <EM>ncurses</EM> <STRONG>tabs</STRONG> differs from the SVr4 feature by using |
| 236 | terminal capabilities rather than built-in tables. |
| 237 | |
| 238 | POSIX documents no limit on the number of tab stops. Other |
| 239 | implementations impose one; the limit is 20 in PWB/Unix's <STRONG>tabs</STRONG> utility. |
| 240 | While some terminals may not accept an arbitrary number of tab stops, |
| 241 | <EM>ncurses</EM> <STRONG>tabs</STRONG> attempts to set tab stops up to the right margin if the |
| 242 | list thereof is sufficiently long. |
| 243 | |
| 244 | The "Rationale" section of the Issue 6 <STRONG>tabs</STRONG> reference page details how |
| 245 | the committee considered redesigning the <STRONG>tabs</STRONG> and <STRONG>tput</STRONG> utilities, |
| 246 | without settling on an improved solution. It claims that |
| 247 | |
| 248 | "no known historical version of <EM>tabs</EM> supports the capability of |
| 249 | setting arbitrary tab stops." |
| 250 | |
| 251 | The feature described in subsection "Explicit Lists" above was |
| 252 | implemented in PWB/Unix, and permitted the setting of abitrary tab |
| 253 | stops nevertheless. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 254 | |
| 255 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 256 | </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> |
| 257 | <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 258 | |
| 259 | |
| 260 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 261 | ncurses 6.5 2024-04-20 <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 262 | </PRE> |
| 263 | <div class="nav"> |
| 264 | <ul> |
| 265 | <li><a href="#h2-NAME">NAME</a></li> |
| 266 | <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> |
| 267 | <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> |
| 268 | <li><a href="#h2-OPTIONS">OPTIONS</a> |
| 269 | <ul> |
| 270 | <li><a href="#h3-General-Options">General Options</a></li> |
| 271 | <li><a href="#h3-Implicit-Lists">Implicit Lists</a></li> |
| 272 | <li><a href="#h3-Explicit-Lists">Explicit Lists</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 273 | <li><a href="#h3-Predefined-Tab-Stops">Predefined Tab Stops</a></li> |
| 274 | <li><a href="#h3-Margins">Margins</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 275 | </ul> |
| 276 | </li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 277 | <li><a href="#h2-FILES">FILES</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 278 | <li><a href="#h2-PORTABILITY">PORTABILITY</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 279 | <li><a href="#h2-HISTORY">HISTORY</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 280 | <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> |
| 281 | </ul> |
| 282 | </div> |
| 283 | </BODY> |
| 284 | </HTML> |