summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/kpathsea/kpathsea.html
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-03-30 22:27:37 +0000
committerKarl Berry <karl@freefriends.org>2018-03-30 22:27:37 +0000
commit455506ec711f0d6edd259c0b7c5e5a533d34ecee (patch)
tree6a4f46b633f148e55c3c025c05d8604d7fdea3aa /Master/texmf-dist/doc/kpathsea/kpathsea.html
parent80cdd301189d43155d7e22400db1b0b72dd1bb02 (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/kpathsea.html')
-rw-r--r--Master/texmf-dist/doc/kpathsea/kpathsea.html446
1 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">&bull; <a href="#Introduction" accesskey="1">Introduction</a>:</td><td>&nbsp;&nbsp;</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&rsquo;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 &lsquo;<samp>xdvi</samp>&rsquo; 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&nbsp;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&rsquo;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">&bull; <a href="#History" accesskey="1">History</a>:</td><td>&nbsp;&nbsp;</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&rsquo;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&rsquo;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">&bull; <a href="#Path-expansion" accesskey="3">Path expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special constructs in search paths.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Filename-database" accesskey="4">Filename database</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using an externally-built list to search.
+<tr><td align="left" valign="top">&bull; <a href="#Casefolding-search" accesskey="4">Casefolding search</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fallback to case-insensitive search.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Invoking-kpsewhich" accesskey="5">Invoking kpsewhich</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Standalone path lookup.
+<tr><td align="left" valign="top">&bull; <a href="#Filename-database" accesskey="5">Filename database</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using an externally-built list to search.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Invoking-kpsewhich" accesskey="6">Invoking kpsewhich</a>:</td><td>&nbsp;&nbsp;</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 &lsquo;<samp>./FooBar.TeX</samp>&rsquo; will match a file &lsquo;<samp>./foobar.tex</samp>&rsquo;,
+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 &lsquo;<samp>/</samp>&rsquo; or &lsquo;<samp>./</samp>&rsquo;
-or &lsquo;<samp>../</samp>&rsquo;, Kpathsea simply checks if that file exists.
+or &lsquo;<samp>../</samp>&rsquo;, 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&rsquo;t affect its parent&rsquo;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> &nbsp; [<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> &nbsp; [<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:
&lsquo;<samp>~$USER/{foo,bar}//baz</samp>&rsquo; expands to all subdirectories under
directories <samp>foo</samp> and <samp>bar</samp> in <tt>$USER</tt>&rsquo;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">&bull; <a href="#Default-expansion" accesskey="1">Default expansion</a>:</td><td>&nbsp;&nbsp;</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> &nbsp; [<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., &lsquo;<samp>1</samp>&rsquo;; this is
+done by default in TeX Live.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#Casefolding-rationale" accesskey="1">Rationale</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Casefolding-examples" accesskey="2">Examples</a>:</td><td>&nbsp;&nbsp;</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> &nbsp; [<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&rsquo;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&mdash;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> &nbsp; [<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&rsquo;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 &lsquo;<samp>0</samp>&rsquo;
+(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>&mdash;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 &lsquo;<samp>.:/somedir</samp>&rsquo;, 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 (&lsquo;<samp>kpsewhich --all</samp>&rsquo;) <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 &lsquo;<samp>stix-regular.otf</samp>&rsquo; 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 &lsquo;<samp>!!</samp>&rsquo;
+(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 &lsquo;<samp>texmf-local</samp>&rsquo; and
+&lsquo;<samp>texmf-dist</samp>&rsquo; 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, &lsquo;<samp>kpsewhich --all</samp>&rsquo; 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 &gt;/tmp/texpath # search path specification
+kpsewhich -expand-path=&quot;`cat /tmp/texpath`&quot; &gt;/tmp/texdirs # all dirs
+tr ':' '\n' &lt;/tmp/texdirs &gt;/tmp/texdirlist # colons to newlines
+find `cat /tmp/texdirlist` -iname somefile.tex -print &lt;/tmp/texdirlist
+</pre></div>
+
+<a name="index-Findutils_002c-GNU-package"></a>
+<a name="index-_002diname_002c-find-predicate"></a>
+<p>Sorry that it&rsquo;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&rsquo;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> &nbsp; [<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> &nbsp; [<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> &nbsp; [<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> &nbsp; [<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> &nbsp; [<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> &nbsp; [<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> &nbsp; [<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>&lsquo;<samp>--casefold-search</samp>&rsquo;</dt>
+<dt>&lsquo;<samp>--no-casefold-search</samp>&rsquo;</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>&lsquo;<samp>--dpi=<var>num</var></samp>&rsquo;</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&rsquo;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> &nbsp; [<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 &lsquo;known&rsquo; 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> &nbsp; [<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> &nbsp; [<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&mdash;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&mdash;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">&bull; <a href="#Supported-file-formats" accesskey="1">Supported file formats</a>:</td><td>&nbsp;&nbsp;</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 &lsquo;<samp>%</samp>&rsquo; and continue to the end of the line.
+Comments start with the last &lsquo;<samp>%</samp>&rsquo; 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 &lsquo;<samp>include</samp>&rsquo;, 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">&bull; <a href="#Programming-overview" accesskey="1">Overview</a>:</td><td>&nbsp;&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>