diff options
author | Karl Berry <karl@freefriends.org> | 2018-03-30 22:27:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-03-30 22:27:37 +0000 |
commit | 455506ec711f0d6edd259c0b7c5e5a533d34ecee (patch) | |
tree | 6a4f46b633f148e55c3c025c05d8604d7fdea3aa /Master/texmf-dist/doc/kpathsea | |
parent | 80cdd301189d43155d7e22400db1b0b72dd1bb02 (diff) |
doc updates
git-svn-id: svn://tug.org/texlive/trunk@47198 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/kpathsea')
-rw-r--r-- | Master/texmf-dist/doc/kpathsea/kpathsea.html | 446 | ||||
-rw-r--r-- | Master/texmf-dist/doc/kpathsea/kpathsea.pdf | bin | 376884 -> 388425 bytes |
2 files changed, 346 insertions, 100 deletions
diff --git a/Master/texmf-dist/doc/kpathsea/kpathsea.html b/Master/texmf-dist/doc/kpathsea/kpathsea.html index d533e3c5b67..1099a4a469a 100644 --- a/Master/texmf-dist/doc/kpathsea/kpathsea.html +++ b/Master/texmf-dist/doc/kpathsea/kpathsea.html @@ -2,7 +2,7 @@ <html> <!-- This file documents the Kpathsea library for path searching. -Copyright (C) 1996-2017 Karl Berry & Olaf Weber. +Copyright (C) 1996-2018 Karl Berry & Olaf Weber. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -18,8 +18,9 @@ Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the TeX Users Group. --> -<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ --> +<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> <head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Kpathsea: A library for path searching</title> <meta name="description" content="Kpathsea: A library for path searching"> @@ -27,7 +28,6 @@ approved by the TeX Users Group. --> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="#Top" rel="start" title="Top"> <link href="#Index" rel="index" title="Index"> <link href="#SEC_Contents" rel="contents" title="Table of Contents"> @@ -103,18 +103,23 @@ ul.no-bullet {list-style: none} <li><a name="toc-KPSE_005fDOT-expansion-1" href="#KPSE_005fDOT-expansion">5.3.5 <code>KPSE_DOT</code> expansion</a></li> <li><a name="toc-Subdirectory-expansion-1" href="#Subdirectory-expansion">5.3.6 Subdirectory expansion</a></li> </ul></li> - <li><a name="toc-Filename-database-_0028ls_002dR_0029" href="#Filename-database">5.4 Filename database (<code>ls-R</code>)</a> + <li><a name="toc-Casefolding-search-1" href="#Casefolding-search">5.4 Casefolding search</a> + <ul class="no-bullet"> + <li><a name="toc-Casefolding-rationale-1" href="#Casefolding-rationale">5.4.1 Casefolding rationale</a></li> + <li><a name="toc-Casefolding-examples-1" href="#Casefolding-examples">5.4.2 Casefolding examples</a></li> + </ul></li> + <li><a name="toc-Filename-database-_0028ls_002dR_0029" href="#Filename-database">5.5 Filename database (<code>ls-R</code>)</a> <ul class="no-bullet"> - <li><a name="toc-ls_002dR-1" href="#ls_002dR">5.4.1 <samp>ls-R</samp></a></li> - <li><a name="toc-Filename-aliases-1" href="#Filename-aliases">5.4.2 Filename aliases</a></li> - <li><a name="toc-Database-format-1" href="#Database-format">5.4.3 Database format</a></li> + <li><a name="toc-ls_002dR-1" href="#ls_002dR">5.5.1 <samp>ls-R</samp></a></li> + <li><a name="toc-Filename-aliases-1" href="#Filename-aliases">5.5.2 Filename aliases</a></li> + <li><a name="toc-Database-format-1" href="#Database-format">5.5.3 Database format</a></li> </ul></li> - <li><a name="toc-kpsewhich_003a-Standalone-path-searching" href="#Invoking-kpsewhich">5.5 <code>kpsewhich</code>: Standalone path searching</a> + <li><a name="toc-kpsewhich_003a-Standalone-path-searching" href="#Invoking-kpsewhich">5.6 <code>kpsewhich</code>: Standalone path searching</a> <ul class="no-bullet"> - <li><a name="toc-Path-searching-options-1" href="#Path-searching-options">5.5.1 Path searching options</a></li> - <li><a name="toc-Specially_002drecognized-files-for-kpsewhich" href="#Specially_002drecognized-files">5.5.2 Specially-recognized files for <code>kpsewhich</code></a></li> - <li><a name="toc-Auxiliary-tasks-1" href="#Auxiliary-tasks">5.5.3 Auxiliary tasks</a></li> - <li><a name="toc-Standard-options-1" href="#Standard-options">5.5.4 Standard options</a></li> + <li><a name="toc-Path-searching-options-1" href="#Path-searching-options">5.6.1 Path searching options</a></li> + <li><a name="toc-Specially_002drecognized-files-for-kpsewhich" href="#Specially_002drecognized-files">5.6.2 Specially-recognized files for <code>kpsewhich</code></a></li> + <li><a name="toc-Auxiliary-tasks-1" href="#Auxiliary-tasks">5.6.3 Auxiliary tasks</a></li> + <li><a name="toc-Standard-options-1" href="#Standard-options">5.6.4 Standard options</a></li> </ul></li> </ul></li> <li><a name="toc-TeX-support-1" href="#TeX-support">6 TeX support</a> @@ -171,8 +176,8 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Up: <a <h1 class="top">Kpathsea library</h1> <p>This manual documents the Kpathsea library for path searching. It -corresponds to version 6.2.3, released in -April 2017. +corresponds to version 6.3.0, released in +February 2018. </p> <table class="menu" border="0" cellspacing="0"> <tr><td align="left" valign="top">• <a href="#Introduction" accesskey="1">Introduction</a>:</td><td> </td><td align="left" valign="top">Overview and history. @@ -216,8 +221,8 @@ Next: <a href="#unixtex_002eftp" accesskey="n" rel="next">unixtex.ftp</a>, Previ <a name="index-introduction"></a> <a name="index-fundamental-purpose-of-Kpathsea"></a> -<p>This manual corresponds to version 6.2.3 of the Kpathsea -library, released in April 2017. +<p>This manual corresponds to version 6.3.0 of the Kpathsea +library, released in February 2018. </p> <p>The library’s fundamental purpose is to return a filename from a list of directories specified by the user, similar to what shells do when @@ -235,12 +240,12 @@ this library: </li><li> Xdvik (see the ‘<samp>xdvi</samp>’ man page) </li></ul> -<p>Other software that we do not maintain also uses it. +<p>Other software that we do not maintain also uses it. </p> <p>Kpathsea is now maintained as part of the TeX Live distribution -(<a href="http://tug.org/texlive">http://tug.org/texlive</a>). For information on configuration, -building, installing, and more, see <cite><a href="http://tug.org/texinfohtml/tlbuild.html#Top">Building TeX -Live</a></cite>. +(<a href="http://tug.org/texlive">http://tug.org/texlive</a>), which includes several more +Kpathsea-using programs. For information on configuration, building, +installing, and more, see <cite><a href="http://tug.org/texinfohtml/tlbuild.html#Top">Building TeX Live</a></cite>. </p> <a name="index-interface_002c-not-frozen"></a> <a name="index-comments_002c-making"></a> @@ -252,13 +257,14 @@ suggestions, please send along (see <a href="#Reporting-bugs">Reporting bugs</a> <a name="index-license-for-using-the-library"></a> <a name="index-GNU-General-Public-License"></a> <p>The Kpathsea library is distributed under the GNU Library General -Public License (LGPL). In short, this means if you write a program -using the library, you must (offer to) distribute the source to the -library, along with any changes you have made, and allow anyone to -modify the library source and distribute their modifications. It does -not mean you have to distribute the source to your program, although -we hope you will. See accompanying files for the text of the GNU -licenses, or <a href="http://www.gnu.org/licenses">http://www.gnu.org/licenses</a>. +Public License (LGPL), version 2.1 or (at your option) any later +version. In short, this means if you write a program using the +library, you must (offer to) distribute the source to the library, +along with any changes you have made, and allow anyone to modify the +library source and distribute their modifications. It does not mean +you have to distribute the source to your program using the library, +although we hope you will. See accompanying files for the text of the +GNU licenses, or <a href="http2://www.gnu.org/licenses">http2://www.gnu.org/licenses</a>. </p> <a name="index-TeX-Users-Group"></a> <p>If you know enough about TeX to be reading this manual, then you (or @@ -266,7 +272,7 @@ your institution) should consider joining the TeX Users Group (if you’re already a member, thanks!). TUG produces the periodical <cite>TUGboat</cite>, sponsors an annual meeting and publishes the proceedings, and arranges courses on TeX for all levels of users -throughout the world. See <a href="http://tug.org">http://tug.org</a> for information. +throughout the world. See <a href="https://tug.org">https://tug.org</a> for information. </p> <table class="menu" border="0" cellspacing="0"> <tr><td align="left" valign="top">• <a href="#History" accesskey="1">History</a>:</td><td> </td><td align="left" valign="top"> @@ -374,14 +380,14 @@ part of the burden, and I volunteered. <a name="index-Hoekwater_002c-Taco"></a> <a name="index-Breitenlohner_002c-Peter"></a> <p>[Karl writes again.] Indeed, time goes on. As of 2006 or so, Olaf’s -available time for Kpathsea became rather reduced, and I started -taking overall care of it again, although I did not do any significant -new development. In 2009, Taco Hoekwater made a major rearrangement -to make the library suitable for use within the MetaPost library -(see <a href="#Programming-overview">Programming overview</a>). Also, for some years now, Peter -Breitenlohner has made many improvements to the infrastructure and -kept up-to-date with respect to the overall TeX Live build, where -Kpathsea is now maintained. +available time for Kpathsea was reduced, and I started taking overall +care of it again, although I did not do any significant new +development. In 2009, Taco Hoekwater implemented a major +rearrangement to make the library suitable for use within the MetaPost +library (see <a href="#Programming-overview">Programming overview</a>). Also, for some years now, +Peter Breitenlohner has made many improvements to the infrastructure +and kept it up-to-date with respect to the overall TeX Live build, +where Kpathsea is now maintained. </p> @@ -402,18 +408,17 @@ Next: <a href="#Security" accesskey="n" rel="next">Security</a>, Previous: <a hr <a name="index-www_002etug_002eorg"></a> <a name="index-ftp_002etug_002eorg"></a> <p>This -is <a href="ftp://ftp.tug.org/tex/unixtex.ftp">ftp://ftp.tug.org/tex/unixtex.ftp</a>, last updated 13 June -2010. Also available as <a href="http://www.tug.org/unixtex.ftp">http://www.tug.org/unixtex.ftp</a>. Email -<a href="mailto:tex-k@tug.org">tex-k@tug.org</a> with comments or questions. +is <a href="https://tug.org/tex/unixtex.ftp">https://tug.org/tex/unixtex.ftp</a>, last updated 28 November +2017. Email <a href="mailto:tex-k@tug.org">tex-k@tug.org</a> with comments or questions. </p> <p>The principal free TeX distribution for Unix-like systems is TeX Live, on the web at <a href="http://tug.org/texlive">http://tug.org/texlive</a>. The pages there -describe many ways to acquire and build TeX, over the Internet or -on physical media, both the sources and precompiled binaries for many -systems, either standalone or as part of various operating system +describe many ways to acquire and.or build TeX, over the Internet +or on physical media, both the sources and precompiled binaries for +many systems, either standalone or as part of various operating system distributions. </p> -<p>Web2C, Kpathsea, Dvips, and Dviljk are no longer released as a +<p>Web2c, Kpathsea, Dvips, and Dviljk are no longer released as a separate packages. Their sources are now maintained as part of TeX Live. </p> @@ -422,16 +427,16 @@ Live. <a name="index-Knuth_002c-Donald-E_002e_002c-archive-of-programs-by"></a> <p>The host <tt>ftp.cs.stanford.edu</tt> is the original source for the files for which Donald Knuth is directly responsible: <samp>tex.web</samp>, -<samp>plain.tex</samp>, etc. However, unless you want to undertake the very -significant project of building your TeX installation from scratch, -it is far more reliable and less work to retrieve these files as part -of a larger package +<samp>plain.tex</samp>, etc. However, unless you want to undertake the +project of building your TeX installation from scratch, it is more +reliable and less work to retrieve these files as part of a larger +package. </p> <p>In any case, the Stanford ftp site is not the canonical source for anything except what was created as part of Knuth’s original TeX, so do not rely on any other files available there being up-to-date. The best place to check for up-to-date files is CTAN (the -Comprehensive TeX Archive Network), <a href="http://www.ctan.org">http://www.ctan.org</a>. +Comprehensive TeX Archive Network), <a href="https://ctan.org">https://ctan.org</a>. </p> @@ -629,9 +634,11 @@ provides. For information about searching for particular file types </td></tr> <tr><td align="left" valign="top">• <a href="#Path-expansion" accesskey="3">Path expansion</a>:</td><td> </td><td align="left" valign="top">Special constructs in search paths. </td></tr> -<tr><td align="left" valign="top">• <a href="#Filename-database" accesskey="4">Filename database</a>:</td><td> </td><td align="left" valign="top">Using an externally-built list to search. +<tr><td align="left" valign="top">• <a href="#Casefolding-search" accesskey="4">Casefolding search</a>:</td><td> </td><td align="left" valign="top">Fallback to case-insensitive search. </td></tr> -<tr><td align="left" valign="top">• <a href="#Invoking-kpsewhich" accesskey="5">Invoking kpsewhich</a>:</td><td> </td><td align="left" valign="top">Standalone path lookup. +<tr><td align="left" valign="top">• <a href="#Filename-database" accesskey="5">Filename database</a>:</td><td> </td><td align="left" valign="top">Using an externally-built list to search. +</td></tr> +<tr><td align="left" valign="top">• <a href="#Invoking-kpsewhich" accesskey="6">Invoking kpsewhich</a>:</td><td> </td><td align="left" valign="top">Standalone path lookup. </td></tr> </table> @@ -695,11 +702,17 @@ be wrong to search the disk for them. Therefore, if you fail to update <samp>ls-R</samp> when you install a new VF file, it will not be found. </p> -<p>Each path element is checked in turn: first the database, then the disk. -If a match is found, the search stops and the result is returned. This +<p>Each path element is checked in turn: first the database, then the +disk. If a match is found, the search stops and the result is +returned (unless the search explicitly requested all matches). This avoids possibly-expensive processing of path specifications that are -never needed on a particular run. (Unless the search explicitly -requested all matches.) +never needed on a particular run. +</p> +<p>On Unix-like systems, if no match is found by any of the above, and +the path element allows checking the filesystem (per the above), a +final check is made for a case-insensitive match. Thus, looking for a +name like ‘<samp>./FooBar.TeX</samp>’ will match a file ‘<samp>./foobar.tex</samp>’, +and vice versa. This is not done on Windows. See <a href="#Casefolding-search">Casefolding search</a>. </p> <a name="index-expansion_002c-path-element"></a> <p>Although the simplest and most common path element is a directory name, @@ -717,7 +730,8 @@ order as the sections. <a name="index-filenames_002c-absolute-or-explicitly-relative"></a> <p>Exception to all of the above: If the filename being searched for is absolute or explicitly relative, i.e., starts with ‘<samp>/</samp>’ or ‘<samp>./</samp>’ -or ‘<samp>../</samp>’, Kpathsea simply checks if that file exists. +or ‘<samp>../</samp>’, Kpathsea simply checks if that file exists, with a +fallback to a casefolding match if needed and enabled, as described above. </p> <a name="index-permission-denied"></a> <a name="index-unreadable-files"></a> @@ -749,8 +763,8 @@ Next: <a href="#Path-expansion" accesskey="n" rel="next">Path expansion</a>, Pre <a name="index-path-sources"></a> <a name="index-sources-for-search-paths"></a> -<p>A search path can come from many sources. In the order in which -Kpathsea uses them: +<p>A search path or other configuration value can come from many sources. +In the order in which Kpathsea looks for them: </p> <ol> <li> <a name="index-environment-variable_002c-source-for-path"></a> @@ -911,7 +925,7 @@ couldn’t affect its parent’s environment. <a name="Path-expansion"></a> <div class="header"> <p> -Next: <a href="#Filename-database" accesskey="n" rel="next">Filename database</a>, Previous: <a href="#Path-sources" accesskey="p" rel="prev">Path sources</a>, Up: <a href="#Path-searching" accesskey="u" rel="up">Path searching</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="#Casefolding-search" accesskey="n" rel="next">Casefolding search</a>, Previous: <a href="#Path-sources" accesskey="p" rel="prev">Path sources</a>, Up: <a href="#Path-searching" accesskey="u" rel="up">Path searching</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Path-expansion-1"></a> <h3 class="section">5.3 Path expansion</h3> @@ -923,8 +937,9 @@ Next: <a href="#Filename-database" accesskey="n" rel="next">Filename database</a search paths, similar to that in shells. As a general example: ‘<samp>~$USER/{foo,bar}//baz</samp>’ expands to all subdirectories under directories <samp>foo</samp> and <samp>bar</samp> in <tt>$USER</tt>’s home directory that -contain a directory or file <samp>baz</samp>. These expansions are explained -in the sections below. +contain a directory or file <samp>baz</samp>. +</p> +<p>These expansions are explained in the sections below. </p> <table class="menu" border="0" cellspacing="0"> <tr><td align="left" valign="top">• <a href="#Default-expansion" accesskey="1">Default expansion</a>:</td><td> </td><td align="left" valign="top">a: or :a or a::b expands to a default. @@ -1247,13 +1262,203 @@ let me know. </p> <hr> +<a name="Casefolding-search"></a> +<div class="header"> +<p> +Next: <a href="#Filename-database" accesskey="n" rel="next">Filename database</a>, Previous: <a href="#Path-expansion" accesskey="p" rel="prev">Path expansion</a>, Up: <a href="#Path-searching" accesskey="u" rel="up">Path searching</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Casefolding-search-1"></a> +<h3 class="section">5.4 Casefolding search</h3> + +<a name="index-casefolding-search"></a> +<a name="index-search_002c-case_002dinsensitive"></a> + +<p>In Kpathsea version 6.3.0 (released with TeX Live 2018), a new +fallback search was implemented on Unix-like systems, including Macs: +for each path element in turn, if no match is found by the normal +search, and the path element allows for checking the filesystem, a +second check is made for a case-insensitive match. +</p> +<a name="index-texmf_005fcasefold_005fsearch"></a> +<p>This is enabled at compile-time on Unix systems, and enabled at +runtime by setting the configuration variable +<code>texmf_casefold_search</code>, to a true value, e.g., ‘<samp>1</samp>’; this is +done by default in TeX Live. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="#Casefolding-rationale" accesskey="1">Rationale</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="#Casefolding-examples" accesskey="2">Examples</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="Casefolding-rationale"></a> +<div class="header"> +<p> +Next: <a href="#Casefolding-examples" accesskey="n" rel="next">Casefolding examples</a>, Up: <a href="#Casefolding-search" accesskey="u" rel="up">Casefolding search</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Casefolding-rationale-1"></a> +<h4 class="subsection">5.4.1 Casefolding rationale</h4> + +<a name="index-casefolding-fallback-rationale"></a> +<a name="index-rationale-for-casefolding-fallback"></a> +<a name="index-system_002ddependent-casefolding-behavior"></a> + +<a name="index-filesystem_002c-case_002d_0028in_0029sensitive"></a> +<a name="index-Apple-filesystem_002c-case_002dinsensitive"></a> +<a name="index-Mac-filesystem_002c-case_002dinsensitive"></a> +<p>The purpose of the fallback casefolding search is to ease moving +complex documents between case-insensitive (file)systems and +case-sensitive ones. In particular, Apple decided to make the default +filesystem on Macs be case-insensitive some years ago, and this has +exacerbated a problem of people creating documents that use, say, an +image under the name <samp>foo.jpg</samp>, while the actual file is named +<samp>foo.JPG</samp> or <samp>Foo.jpg</samp>. It works on the Mac but if the +document is transferred and run on a standard case-sensitive Unix +(file)system, the file can’t be found, due only to differences in +case. +</p> +<p>This same problematic scenario has always existed on Windows, but for +whatever reason, it has become much more common since Apple also went +to a case-insensitive filesystem. Hence the move to change the +Kpathsea behavior now. +</p> +<a name="index-Windows-and-casefolding"></a> +<p>The fallback case-insensitive search is omitted at compile-time on +Windows, where (for practical purposes) all file names are +case-insensitive at the kernel level, and so the normal search will +already have definitively matched or not. Therefore, search results +in unusual cases can be different on Windows and Unix—but this has +always been true. +</p> + +<hr> +<a name="Casefolding-examples"></a> +<div class="header"> +<p> +Previous: <a href="#Casefolding-rationale" accesskey="p" rel="prev">Casefolding rationale</a>, Up: <a href="#Casefolding-search" accesskey="u" rel="up">Casefolding search</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Casefolding-examples-1"></a> +<h4 class="subsection">5.4.2 Casefolding examples</h4> + +<a name="index-casefolding-examples"></a> +<a name="index-examples_002c-of-casefolding-searches"></a> + +<p>The casefolding implementation prefers exact matches to casefolded +matches within a given path element, so as to retain most +compatibility. Backward compatibility is not perfect, however, as a +casefolded match may be found in an earlier path element than an exact +match was previously found (see example #4 below). Still, preferring +the match in the earlier element seemed potentially less confusing +than otherwise, and is in fact consistent with past behavior on +Windows. Since case mismatches are rare to begin with, and name +collisions with respect only to case thus even more rare, the hope is +that it will not cause difficulties in practice. +</p> +<p>If it’s desirable in a given situation to have the exact same search +behavior as previously, that can be accomplished by setting the +configuration variable <code>texmf_casefold_search</code> to ‘<samp>0</samp>’ +(see <a href="#Path-sources">Path sources</a>). +</p> +<p>Some examples to illustrate the new behavior follow. +</p> +<p>Example #1: suppose the file <samp>./foobar.tex</samp> exists. Now, +searching for <samp>./FooBar.TeX</samp> (or any other case variation) will +succeed, returning <samp>./foobar.tex</samp>—the name as stored on disk. +In previous releases, or if <code>texmf_casefold_search</code> is false, the +search would fail. +</p> +<p>Example #2: suppose we are using a case-sensitive (file)system, and +the search path is ‘<samp>.:/somedir</samp>’, and the files +<samp>./foobar.tex</samp> and <samp>/somedir/FooBar.TeX</samp> both exist. Both +now and previously, searching for <samp>foobar.tex</samp> returns +<samp>./foobar.tex</samp>. However, searching for <samp>FooBar.TeX</samp> now +returns <samp>./foobar.tex</samp> instead of <samp>/somedir/FooBar.TeX</samp>; +this is the incompatibility mentioned above. Also (as expected), +searching for <samp>FOOBAR.TEX</samp> (or whatever variation) will now +return <samp>./foobar.tex</samp>, whereas before it would fail. Searching +for all (‘<samp>kpsewhich --all</samp>’) <samp>foobar.tex</samp> will return both +matches. +</p> +<p>Example #3: same as example #2, but on a case-insensitive +(file)system: both now and previously, searching for <samp>FooBar.TeX</samp> +returns <samp>./foobar.tex</samp>, since the system considers that a match. +The Kpathsea casefolding never comes into play. +</p> +<p>Example #4: if we have (on a case-sensitive system) both +<samp>./foobar.tex</samp> and <samp>./FOOBAR.TEX</samp>, searching with the exact +case returns that exact match, now and previously. Searching for +<samp>FooBar.tex</samp> will now return one or the other (chosen +arbitrarily), rather than failing. Perhaps unexpectedly, searching +for all <samp>foobar.tex</samp> or <samp>FooBar.tex</samp> will also return only +one or the other, not both (see more below). +</p> +<p>Example #5: the font file <samp>STIX-Regular.otf</samp> is included in +TeX Live in the system directory +<samp>texmf-dist/fonts/opentype/public/stix</samp>. Because Kpathsea never +searches the disk in the big system directory, the casefolding is not +done, and a search for ‘<samp>stix-regular.otf</samp>’ will fail (on +case-sensitive systems), as it always has. +</p> +<p>The caveat about not searching the disk amounts to saying that +casefolding does not happen in the trees specified with ‘<samp>!!</samp>’ +(see <a href="#ls_002dR">ls-R</a>), that is, where only database (<samp>ls-R</samp>) searching +is done. In TeX Live, that is the ‘<samp>texmf-local</samp>’ and +‘<samp>texmf-dist</samp>’ trees (also <code>$TEXMFSYSCONFIG</code> and +<code>$TEXMFSYSVAR</code>, but those are rarely noticed). The rationale for +this is that in practice, case mangling happens with user-created +files, not with packages distributed as part of the TeX system. +</p> +<p>One more caveat: the purpose of <code>kpsewhich</code> is to exercise the +path searching in Kpathsea as it is actually done. Therefore, as +shown above, ‘<samp>kpsewhich --all</samp>’ will not return all matches +regardless of case within a given path element. If you want to find +all matches in all directories, <code>find</code> is the best tool, although +the setup takes a couple steps: +</p> +<div class="example"> +<pre class="example">kpsewhich -show-path=tex >/tmp/texpath # search path specification +kpsewhich -expand-path="`cat /tmp/texpath`" >/tmp/texdirs # all dirs +tr ':' '\n' </tmp/texdirs >/tmp/texdirlist # colons to newlines +find `cat /tmp/texdirlist` -iname somefile.tex -print </tmp/texdirlist +</pre></div> + +<a name="index-Findutils_002c-GNU-package"></a> +<a name="index-_002diname_002c-find-predicate"></a> +<p>Sorry that it’s annoyingly lengthy, but implementing this inside +Kpathsea would be a lot of error-prone trouble for something that is +only useful for debugging. If your <code>find</code> does not support +<code>-iname</code>, you can get GNU Find from +<a href="https://www.gnu.org/software/findutils">https://www.gnu.org/software/findutils</a>. +</p> +<p>The casefolding search is implemented in the source file +<samp>kpathsea/pathsearch.c</samp>. Two implementation points: +</p> +<ul> +<li> <a name="index-access-system-call"></a> +Kpathsea never tries to check if a given directory resides on a +case-insensitive filesystem, because there is no efficient and +portable way to do so. All it does is try to see if a potential file +name is a readable normal file (with, usually, the <code>access</code> +system call). + +</li><li> Kpathsea does not do any case-insensitive matching of the directories +along the path. It’s not going to find <samp>/Some/Random/file.tex</samp> +when looking for <samp>/some/random/file.tex</samp>. The casefolding only +happens with the elements of the leaf directory. + +</li></ul> + + +<hr> <a name="Filename-database"></a> <div class="header"> <p> -Next: <a href="#Invoking-kpsewhich" accesskey="n" rel="next">Invoking kpsewhich</a>, Previous: <a href="#Path-expansion" accesskey="p" rel="prev">Path expansion</a>, Up: <a href="#Path-searching" accesskey="u" rel="up">Path searching</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="#Invoking-kpsewhich" accesskey="n" rel="next">Invoking kpsewhich</a>, Previous: <a href="#Casefolding-search" accesskey="p" rel="prev">Casefolding search</a>, Up: <a href="#Path-searching" accesskey="u" rel="up">Path searching</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Filename-database-_0028ls_002dR_0029"></a> -<h3 class="section">5.4 Filename database (<code>ls-R</code>)</h3> +<h3 class="section">5.5 Filename database (<code>ls-R</code>)</h3> <a name="index-filename-database"></a> <a name="index-database_002c-for-filenames"></a> @@ -1292,7 +1497,7 @@ source file <samp>kpathsea/db.c</samp>. Next: <a href="#Filename-aliases" accesskey="n" rel="next">Filename aliases</a>, Up: <a href="#Filename-database" accesskey="u" rel="up">Filename database</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="ls_002dR-1"></a> -<h4 class="subsection">5.4.1 <samp>ls-R</samp></h4> +<h4 class="subsection">5.5.1 <samp>ls-R</samp></h4> <a name="index-ls_002dR-database-file"></a> <a name="index-TEXMFDBS"></a> @@ -1380,7 +1585,7 @@ is not in any of the default search paths. Next: <a href="#Database-format" accesskey="n" rel="next">Database format</a>, Previous: <a href="#ls_002dR" accesskey="p" rel="prev">ls-R</a>, Up: <a href="#Filename-database" accesskey="u" rel="up">Filename database</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Filename-aliases-1"></a> -<h4 class="subsection">5.4.2 Filename aliases</h4> +<h4 class="subsection">5.5.2 Filename aliases</h4> <a name="index-filename-aliases"></a> <a name="index-aliases_002c-for-filenames"></a> @@ -1417,7 +1622,7 @@ aliases. Previous: <a href="#Filename-aliases" accesskey="p" rel="prev">Filename aliases</a>, Up: <a href="#Filename-database" accesskey="u" rel="up">Filename database</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Database-format-1"></a> -<h4 class="subsection">5.4.3 Database format</h4> +<h4 class="subsection">5.5.3 Database format</h4> <a name="index-format-of-external-database"></a> <a name="index-database_002c-format-of"></a> @@ -1471,7 +1676,7 @@ btxdoc.bib Previous: <a href="#Filename-database" accesskey="p" rel="prev">Filename database</a>, Up: <a href="#Path-searching" accesskey="u" rel="up">Path searching</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="kpsewhich_003a-Standalone-path-searching"></a> -<h3 class="section">5.5 <code>kpsewhich</code>: Standalone path searching</h3> +<h3 class="section">5.6 <code>kpsewhich</code>: Standalone path searching</h3> <a name="index-kpsewhich"></a> <a name="index-path-searching_002c-standalone"></a> @@ -1512,7 +1717,7 @@ abbreviation is accepted. Next: <a href="#Specially_002drecognized-files" accesskey="n" rel="next">Specially-recognized files</a>, Up: <a href="#Invoking-kpsewhich" accesskey="u" rel="up">Invoking kpsewhich</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Path-searching-options-1"></a> -<h4 class="subsection">5.5.1 Path searching options</h4> +<h4 class="subsection">5.6.1 Path searching options</h4> <a name="index-path-searching-options"></a> @@ -1529,6 +1734,19 @@ filename, and returns the first file found. than one match, just one will be reported (chosen effectively at random). </p> </dd> +<dt>‘<samp>--casefold-search</samp>’</dt> +<dt>‘<samp>--no-casefold-search</samp>’</dt> +<dd><a name="index-_002d_002dcasefold_002dsearch"></a> +<a name="index-_002d_002dno_002dcasefold_002dsearch"></a> +<p>Explicitly enable or disable the fallback to a case-insensitive search +on Unix platforms (see <a href="#Casefolding-search">Casefolding search</a>); no effect on Windows. +The default is enabled, set in <code>texmf.cnf</code>. Disabling +(<code>--no-casefold-search</code>) does not mean that searches magically +become case-sensitive when the underlying (file)system is +case-insensitive, it merely means that Kpathsea does not do any +casefolding itself. +</p> +</dd> <dt>‘<samp>--dpi=<var>num</var></samp>’</dt> <dd><a name="index-_002d_002ddpi_003dnum"></a> <a name="index-_002dD-num"></a> @@ -1778,7 +1996,7 @@ in <samp>/some/coincidental/pkg1/path/</samp>, and we wouldn’t want to mat Next: <a href="#Auxiliary-tasks" accesskey="n" rel="next">Auxiliary tasks</a>, Previous: <a href="#Path-searching-options" accesskey="p" rel="prev">Path searching options</a>, Up: <a href="#Invoking-kpsewhich" accesskey="u" rel="up">Invoking kpsewhich</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Specially_002drecognized-files-for-kpsewhich"></a> -<h4 class="subsection">5.5.2 Specially-recognized files for <code>kpsewhich</code></h4> +<h4 class="subsection">5.6.2 Specially-recognized files for <code>kpsewhich</code></h4> <p><code>kpsewhich</code> recognizes a few special filenames on the command line and defaults to using the ‘known’ file formats for them, merely @@ -1857,7 +2075,7 @@ information about the above configuration files (among others). Next: <a href="#Standard-options" accesskey="n" rel="next">Standard options</a>, Previous: <a href="#Specially_002drecognized-files" accesskey="p" rel="prev">Specially-recognized files</a>, Up: <a href="#Invoking-kpsewhich" accesskey="u" rel="up">Invoking kpsewhich</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Auxiliary-tasks-1"></a> -<h4 class="subsection">5.5.3 Auxiliary tasks</h4> +<h4 class="subsection">5.6.3 Auxiliary tasks</h4> <a name="index-auxiliary-tasks"></a> @@ -1945,7 +2163,7 @@ the previous section. Previous: <a href="#Auxiliary-tasks" accesskey="p" rel="prev">Auxiliary tasks</a>, Up: <a href="#Invoking-kpsewhich" accesskey="u" rel="up">Invoking kpsewhich</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p> </div> <a name="Standard-options-1"></a> -<h4 class="subsection">5.5.4 Standard options</h4> +<h4 class="subsection">5.6.4 Standard options</h4> <a name="index-standard-options"></a> @@ -1972,22 +2190,23 @@ Next: <a href="#Programming" accesskey="n" rel="next">Programming</a>, Previous: <a name="index-TeX-support"></a> -<p>Although the basic features in Kpathsea can be used for any type of path -searching, it came about (like all libraries) with a specific -application in mind: I wrote Kpathsea specifically for TeX system -programs. I had been struggling with the programs I was using (Dvips, -Xdvi, and TeX itself) having slightly different notions of how to -specify paths; and debugging was painful, since no code was shared. +<p>Although the basic features in Kpathsea can be used for any type of +path searching, it came about, as usual, with a specific application +in mind: I wrote Kpathsea specifically for TeX system programs. I +had been struggling with the programs I was using (Dvips, Xdvi, and +TeX itself) having slightly different notions of how to specify +paths; and debugging was painful, since no code was shared. </p> -<p>Therefore, Kpathsea provides some TeX-specific formats and features. -Indeed, many of the supposedly generic path searching features were -provided because they seemed useful in that conTeXt (font lookup, -particularly). +<p>Therefore, Kpathsea provides some TeX-specific formats and +features. Indeed, many of the purportedly generic path searching +features were provided because they seemed useful in that conTeXt +(font lookup, particularly). </p> <p>Kpathsea provides a standard way to search for files of any of the -supported file types; glyph fonts are a bit different than all the rest. -Searches are based solely on filenames, not file contents—if a GF -file is named <samp>cmr10.600pk</samp>, it will be found as a PK file. +supported file types; glyph fonts are a bit different than all the +rest. Searches are based solely on names of files, not their +contents—if a GF file is (mis)named <samp>cmr10.600pk</samp>, it will be +found as a PK file. </p> <table class="menu" border="0" cellspacing="0"> <tr><td align="left" valign="top">• <a href="#Supported-file-formats" accesskey="1">Supported file formats</a>:</td><td> </td><td align="left" valign="top">File types Kpathsea knows about. @@ -2714,16 +2933,24 @@ file is; TeX documents will find their favorite name. </p> <ul> <li> <a name="index-comments_002c-in-fontmap-files"></a> -Comments start with ‘<samp>%</samp>’ and continue to the end of the line. +Comments start with the last ‘<samp>%</samp>’ on a line and continue to +the end of the line. (This provides for names that include a %, +ill-advised as that may be.) + </li><li> <a name="index-whitespace_002c-in-fontmap-files"></a> Blank lines are ignored. + </li><li> Each nonblank line is broken up into a series of <em>words</em>: a sequence of non-whitespace characters. + </li><li> <a name="index-include-fontmap-directive"></a> If the first word is ‘<samp>include</samp>’, the second word is used as a filename, and it is searched for and read. + </li><li> Otherwise, the first word on each line is the true filename; + </li><li> the second word is the alias; + </li><li> subsequent words are ignored. </li></ul> @@ -3238,7 +3465,6 @@ script. </dl> - <hr> <a name="Programming"></a> <div class="header"> @@ -3249,7 +3475,8 @@ Next: <a href="#Reporting-bugs" accesskey="n" rel="next">Reporting bugs</a>, Pre <h2 class="chapter">7 Programming</h2> <p>This chapter is for programmers who wish to use Kpathsea. -See <a href="#Introduction">Introduction</a>, for the conditions under which you may do so. +See <a href="#Introduction">Introduction</a>, for the conditions under which you may do so (in +short, it is released under LGPLv2.1 or later). </p> <table class="menu" border="0" cellspacing="0"> <tr><td align="left" valign="top">• <a href="#Programming-overview" accesskey="1">Overview</a>:</td><td> </td><td align="left" valign="top">Introduction. @@ -3276,24 +3503,26 @@ Next: <a href="#Calling-sequence" accesskey="n" rel="next">Calling sequence</a>, <a name="index-overview-of-programming-with-Kpathsea"></a> <p>Aside from this manual, your best source of information is the source -to the programs that use Kpathsea (see <a href="#Introduction">Introduction</a>). Of those, -Dviljk is probably the simplest, and hence a good place to start. -Xdvik adds VF support and the complication of X resources. Dvipsk -adds the complication of its own config files. Web2c is source code I -also maintain, so it uses Kpathsea rather straightforwardly, but is of -course complicated by the Web to C translation. Finally, Kpsewhich is -a small utility program whose sole purpose is to exercise the main -path-searching functionality. +to the programs that use Kpathsea (see <a href="#Introduction">Introduction</a>). First, +Kpsewhich is a small utility program whose sole purpose is to exercise +the main path-searching functionality. Of the drivers, Dviljk is +probably the simplest full application program. Xdvik adds VF support +and the complication of X resources. Dvipsk adds the complication of +its own config files. Web2c is source code I also maintain, so it +uses Kpathsea rather straightforwardly, but is of course complicated +by the Web to C translation. </p> <a name="index-re_002dentrant-API"></a> <a name="index-API_002c-re_002dentrant"></a> <p>When looking at these program sources, you should know that previous -versions of the library had a different programming interface, to -support re-entrancy. In that interface the library function names -were prefixed with <code>kpse_</code> instead of <code>kpathsea_</code>, and they -did not need an instance variable as first argument. This change was -made in 2009. Some of the programs mentioned above may still be using -the previous interface. +versions of the library had a different programming interface; the +current interface supports re-entrancy. Historically, the library +function names were prefixed with <code>kpse_</code> instead of +<code>kpathsea_</code>, and they did not need an instance variable as first +argument. This change was made in 2009. The old functions will never +disappear, and can reliably continue to be used when they suffice, as +they do for the programs above. The main application using the +re-entrant API is the MetaPost library used by MetaPost and LuaTeX. </p> <a name="index-pathsearch_002eh"></a> <a name="index-tex_002dfile_002eh"></a> @@ -4288,6 +4517,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_symbol-3">-</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dall"><code>--all</code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-_002d_002dcasefold_002dsearch"><code>--casefold-search</code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dcolor_003dtty"><code>--color=tty</code></a>:</td><td> </td><td valign="top"><a href="#ls_002dR">ls-R</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002ddebug_003dnum"><code>--debug=<var>num</var></code></a>:</td><td> </td><td valign="top"><a href="#Auxiliary-tasks">Auxiliary tasks</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002ddpi_003dnum"><code>--dpi=<var>num</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> @@ -4302,6 +4532,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-_002d_002dmktex_003dfiletype"><code>--mktex=<var>filetype</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dmode_003dstring"><code>--mode=<var>string</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dmust_002dexist"><code>--must-exist</code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dcasefold_002dsearch"><code>--no-casefold-search</code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dmktex_003dfiletype"><code>--no-mktex=<var>filetype</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dpath_003dstring"><code>--path=<var>string</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002d_002dprogname_003dname"><code>--progname=<var>name</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> @@ -4321,6 +4552,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-_002d1-debugging-value"><code>-1 <span class="roman">debugging value</span></code></a>:</td><td> </td><td valign="top"><a href="#Debugging">Debugging</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002dA-option-to-ls"><code>-A <span class="roman">option to <code>ls</code></span></code></a>:</td><td> </td><td valign="top"><a href="#ls_002dR">ls-R</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002dD-num"><code>-D <var>num</var></code></a>:</td><td> </td><td valign="top"><a href="#Path-searching-options">Path searching options</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-_002diname_002c-find-predicate"><code>-iname<span class="roman">, find predicate</span></code></a>:</td><td> </td><td valign="top"><a href="#Casefolding-examples">Casefolding examples</a></td></tr> <tr><td></td><td valign="top"><a href="#index-_002dL-option-to-ls"><code>-L <span class="roman">option to <code>ls</code></span></code></a>:</td><td> </td><td valign="top"><a href="#ls_002dR">ls-R</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_symbol-4">.</a></th><td></td><td></td></tr> @@ -4408,6 +4640,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_letter-A">A</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="#index-absolute-filenames">absolute filenames</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-access-system-call"><code>access <span class="roman">system call</span></code></a>:</td><td> </td><td valign="top"><a href="#Casefolding-examples">Casefolding examples</a></td></tr> <tr><td></td><td valign="top"><a href="#index-access-warnings">access warnings</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> <tr><td></td><td valign="top"><a href="#index-AFMFONTS"><code>AFMFONTS</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> <tr><td></td><td valign="top"><a href="#index-aliases-for-fonts">aliases for fonts</a>:</td><td> </td><td valign="top"><a href="#Fontmap">Fontmap</a></td></tr> @@ -4419,6 +4652,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-API_002c-re_002dentrant">API, re-entrant</a>:</td><td> </td><td valign="top"><a href="#Programming-overview">Programming overview</a></td></tr> <tr><td></td><td valign="top"><a href="#index-append_002donly-directories-and-mktexpk">append-only directories and <code>mktexpk</code></a>:</td><td> </td><td valign="top"><a href="#Security">Security</a></td></tr> <tr><td></td><td valign="top"><a href="#index-appendonlydir"><code>appendonlydir</code></a>:</td><td> </td><td valign="top"><a href="#mktex-configuration">mktex configuration</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-Apple-filesystem_002c-case_002dinsensitive">Apple filesystem, case-insensitive</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> <tr><td></td><td valign="top"><a href="#index-arguments-to-mktex">arguments to <samp>mktex</samp></a>:</td><td> </td><td valign="top"><a href="#mktex-script-arguments">mktex script arguments</a></td></tr> <tr><td></td><td valign="top"><a href="#index-argv_005b0_005d"><code>argv[0]</code></a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> <tr><td></td><td valign="top"><a href="#index-autoconf_002c-recommended"><code>autoconf<span class="roman">, recommended</span></code></a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> @@ -4448,6 +4682,9 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-c_002dauto_002eh"><code>c-auto.h</code></a>:</td><td> </td><td valign="top"><a href="#Programming-overview">Programming overview</a></td></tr> <tr><td></td><td valign="top"><a href="#index-cache-of-fonts_002c-local">cache of fonts, local</a>:</td><td> </td><td valign="top"><a href="#Security">Security</a></td></tr> <tr><td></td><td valign="top"><a href="#index-calling-sequence">calling sequence</a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-casefolding-examples">casefolding examples</a>:</td><td> </td><td valign="top"><a href="#Casefolding-examples">Casefolding examples</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-casefolding-fallback-rationale">casefolding fallback rationale</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-casefolding-search">casefolding search</a>:</td><td> </td><td valign="top"><a href="#Casefolding-search">Casefolding search</a></td></tr> <tr><td></td><td valign="top"><a href="#index-ChangeLog-entry"><code>ChangeLog <span class="roman">entry</span></code></a>:</td><td> </td><td valign="top"><a href="#Bug-checklist">Bug checklist</a></td></tr> <tr><td></td><td valign="top"><a href="#index-checklist-for-bug-reports">checklist for bug reports</a>:</td><td> </td><td valign="top"><a href="#Bug-checklist">Bug checklist</a></td></tr> <tr><td></td><td valign="top"><a href="#index-checksum"><code>checksum</code></a>:</td><td> </td><td valign="top"><a href="#Suppressing-warnings">Suppressing warnings</a></td></tr> @@ -4534,6 +4771,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-environment-variables_002c-old">environment variables, old</a>:</td><td> </td><td valign="top"><a href="#Unable-to-find-files">Unable to find files</a></td></tr> <tr><td></td><td valign="top"><a href="#index-epoch_002c-seconds-since">epoch, seconds since</a>:</td><td> </td><td valign="top"><a href="#Logging">Logging</a></td></tr> <tr><td></td><td valign="top"><a href="#index-error-message-macros">error message macros</a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-examples_002c-of-casefolding-searches">examples, of casefolding searches</a>:</td><td> </td><td valign="top"><a href="#Casefolding-examples">Casefolding examples</a></td></tr> <tr><td></td><td valign="top"><a href="#index-excessive-startup-time">excessive startup time</a>:</td><td> </td><td valign="top"><a href="#Slow-path-searching">Slow path searching</a></td></tr> <tr><td></td><td valign="top"><a href="#index-expand_002ec"><code>expand.c</code></a>:</td><td> </td><td valign="top"><a href="#Brace-expansion">Brace expansion</a></td></tr> <tr><td></td><td valign="top"><a href="#index-expanding-symlinks">expanding symlinks</a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> @@ -4563,6 +4801,8 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-filenames_002c-absolute-or-explicitly-relative">filenames, absolute or explicitly relative</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> <tr><td></td><td valign="top"><a href="#index-files_002c-unable-to-find">files, unable to find</a>:</td><td> </td><td valign="top"><a href="#Unable-to-find-files">Unable to find files</a></td></tr> <tr><td></td><td valign="top"><a href="#index-filesystem-search">filesystem search</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-filesystem_002c-case_002d_0028in_0029sensitive">filesystem, case-(in)sensitive</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-Findutils_002c-GNU-package">Findutils, GNU package</a>:</td><td> </td><td valign="top"><a href="#Casefolding-examples">Casefolding examples</a></td></tr> <tr><td></td><td valign="top"><a href="#index-floating-directories">floating directories</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> <tr><td></td><td valign="top"><a href="#index-fmtutil"><code>fmtutil</code></a>:</td><td> </td><td valign="top"><a href="#mktex-script-names">mktex script names</a></td></tr> <tr><td></td><td valign="top"><a href="#index-fmtutil_002ecnf"><code>fmtutil.cnf</code></a>:</td><td> </td><td valign="top"><a href="#Specially_002drecognized-files">Specially-recognized files</a></td></tr> @@ -4682,6 +4922,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-ls_002dR_002c-simplest-build"><code>ls-R<span class="roman">, simplest build</span></code></a>:</td><td> </td><td valign="top"><a href="#ls_002dR">ls-R</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_letter-M">M</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="#index-Mac-filesystem_002c-case_002dinsensitive">Mac filesystem, case-insensitive</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> <tr><td></td><td valign="top"><a href="#index-MacKenzie_002c-David">MacKenzie, David</a>:</td><td> </td><td valign="top"><a href="#History">History</a></td></tr> <tr><td></td><td valign="top"><a href="#index-MacKenzie_002c-David-1">MacKenzie, David</a>:</td><td> </td><td valign="top"><a href="#Subdirectory-expansion">Subdirectory expansion</a></td></tr> <tr><td></td><td valign="top"><a href="#index-magic-characters">magic characters</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> @@ -4789,6 +5030,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-quoting-variable-values">quoting variable values</a>:</td><td> </td><td valign="top"><a href="#Variable-expansion">Variable expansion</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_letter-R">R</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="#index-rationale-for-casefolding-fallback">rationale for casefolding fallback</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> <tr><td></td><td valign="top"><a href="#index-re_002dentrant-API">re-entrant API</a>:</td><td> </td><td valign="top"><a href="#Programming-overview">Programming overview</a></td></tr> <tr><td></td><td valign="top"><a href="#index-readable"><code>readable</code></a>:</td><td> </td><td valign="top"><a href="#Suppressing-warnings">Suppressing warnings</a></td></tr> <tr><td></td><td valign="top"><a href="#index-reading-arbitrary_002dlength-lines">reading arbitrary-length lines</a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> @@ -4810,6 +5052,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-Sauter-fonts_002c-and-dynamic-source-creation">Sauter fonts, and dynamic source creation</a>:</td><td> </td><td valign="top"><a href="#mktex-scripts">mktex scripts</a></td></tr> <tr><td></td><td valign="top"><a href="#index-scripts-for-file-creation">scripts for file creation</a>:</td><td> </td><td valign="top"><a href="#mktex-scripts">mktex scripts</a></td></tr> <tr><td></td><td valign="top"><a href="#index-search-path_002c-defined">search path, defined</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-search_002c-case_002dinsensitive">search, case-insensitive</a>:</td><td> </td><td valign="top"><a href="#Casefolding-search">Casefolding search</a></td></tr> <tr><td></td><td valign="top"><a href="#index-searching-for-files">searching for files</a>:</td><td> </td><td valign="top"><a href="#File-lookup">File lookup</a></td></tr> <tr><td></td><td valign="top"><a href="#index-searching-for-glyphs">searching for glyphs</a>:</td><td> </td><td valign="top"><a href="#Glyph-lookup">Glyph lookup</a></td></tr> <tr><td></td><td valign="top"><a href="#index-searching-overview">searching overview</a>:</td><td> </td><td valign="top"><a href="#Searching-overview">Searching overview</a></td></tr> @@ -4854,6 +5097,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-symbolic-links_002c-and-ls_002dR">symbolic links, and <samp>ls-R</samp></a>:</td><td> </td><td valign="top"><a href="#ls_002dR">ls-R</a></td></tr> <tr><td></td><td valign="top"><a href="#index-symlinks_002c-resolving">symlinks, resolving</a>:</td><td> </td><td valign="top"><a href="#Calling-sequence">Calling sequence</a></td></tr> <tr><td></td><td valign="top"><a href="#index-system-C-compiler-bugs">system C compiler bugs</a>:</td><td> </td><td valign="top"><a href="#TeX-or-Metafont-failing">TeX or Metafont failing</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-system_002ddependent-casefolding-behavior">system-dependent casefolding behavior</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_letter-T">T</a></th><td></td><td></td></tr> <tr><td></td><td valign="top"><a href="#index-T1FONTS"><code>T1FONTS</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> @@ -4907,6 +5151,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-TEXMFSCRIPTS"><code>TEXMFSCRIPTS</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> <tr><td></td><td valign="top"><a href="#index-texmfvar"><code>texmfvar</code></a>:</td><td> </td><td valign="top"><a href="#mktex-configuration">mktex configuration</a></td></tr> <tr><td></td><td valign="top"><a href="#index-TEXMFVAR"><code>TEXMFVAR</code></a>:</td><td> </td><td valign="top"><a href="#mktex-configuration">mktex configuration</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-texmf_005fcasefold_005fsearch"><code>texmf_casefold_search</code></a>:</td><td> </td><td valign="top"><a href="#Casefolding-search">Casefolding search</a></td></tr> <tr><td></td><td valign="top"><a href="#index-TEXPICTS"><code>TEXPICTS</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> <tr><td></td><td valign="top"><a href="#index-TEXPKS"><code>TEXPKS</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> <tr><td></td><td valign="top"><a href="#index-TEXPOOL"><code>TEXPOOL</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> @@ -4969,6 +5214,7 @@ Previous: <a href="#Reporting-bugs" accesskey="p" rel="prev">Reporting bugs</a>, <tr><td></td><td valign="top"><a href="#index-WEBINPUTS"><code>WEBINPUTS</code></a>:</td><td> </td><td valign="top"><a href="#Supported-file-formats">Supported file formats</a></td></tr> <tr><td></td><td valign="top"><a href="#index-whitespace_002c-in-fontmap-files">whitespace, in fontmap files</a>:</td><td> </td><td valign="top"><a href="#Fontmap">Fontmap</a></td></tr> <tr><td></td><td valign="top"><a href="#index-whitespace_002c-not-ignored-on-continuation-lines">whitespace, not ignored on continuation lines</a>:</td><td> </td><td valign="top"><a href="#Config-files">Config files</a></td></tr> +<tr><td></td><td valign="top"><a href="#index-Windows-and-casefolding">Windows and casefolding</a>:</td><td> </td><td valign="top"><a href="#Casefolding-rationale">Casefolding rationale</a></td></tr> <tr><td></td><td valign="top"><a href="#index-www_002etug_002eorg"><code>www.tug.org</code></a>:</td><td> </td><td valign="top"><a href="#unixtex_002eftp">unixtex.ftp</a></td></tr> <tr><td colspan="4"> <hr></td></tr> <tr><th><a name="Index_cp_letter-X">X</a></th><td></td><td></td></tr> diff --git a/Master/texmf-dist/doc/kpathsea/kpathsea.pdf b/Master/texmf-dist/doc/kpathsea/kpathsea.pdf Binary files differindex 484c7ea177d..cf88c22dea7 100644 --- a/Master/texmf-dist/doc/kpathsea/kpathsea.pdf +++ b/Master/texmf-dist/doc/kpathsea/kpathsea.pdf |