@dircategory TeX @direntry * Kpathsea: (kpathsea). File lookup along search paths. * kpsewhich: (kpathsea)Invoking kpsewhich. TeX file searching. * MakeTeXMF: (kpathsea)MakeTeX scripts. MF source generation. * MakeTeXPK: (kpathsea)MakeTeX scripts. PK bitmap generation. * MakeTeXTeX: (kpathsea)MakeTeX scripts. TeX source generation. * MakeTeXTFM: (kpathsea)MakeTeX scripts. TeX font metric generation. * MakeTeXls-R: (kpathsea)Filename database. Update ls-R. Copyright (C) 1993, 94, 95, 96, 97 K. Berry. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. 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 Free Software Foundation.
This manual corresponds to version 3.0 of the Kpathsea library, released in February 1997 . 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 looking up program names to execute. The following software, all of which I maintain, uses this library:
Other software that I do not maintain also uses it. I am still actively maintaining the library (and probably always will be, despite my hopes). If you have comments or suggestions, please send them to me (see section Reporting bugs). I distribute the library under the GNU Library General Public License (LGPL), with one exception (see below). 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 I hope you will. The exception is the part of the file `expand.c' which implements brace expansion. I took this from Bash, which is covered by the GNU General Public License (GPL). Therefore, if you wish to redistribute the library under the LGPL, you must remove this code. (If you write a replacement I can distribute, I hope you'll share it with me.) See the files `COPYING' and `COPYING.LIB' for the text of the GNU licenses. If you know enough about TeX to be reading this manual, then you (or your institution) should consider joining the TeX Users Group (if you're already a member, great!). TUG produces the periodical TUGboat, sponsors an annual meeting and publishes the proceedings, and arranges courses on TeX for all levels of users throughout the world. Anyway, here is the address:
TeX Users Group 870 Market St. #801 San Francisco, CA 94102 USA phone: +1 (415) 982-8449 fax: +1 (415) 982-8559 email: @email{tug@tug.org}
(This section is for those people who are curious about how the library
came about.) (If you like to read historical accounts of software, I
urge you to seek out the GNU Autoconf manual and the "Errors of
TeX" paper by Don Knuth, published in Software--Practice and
Experience 19(7), July 1989.)
My first ChangeLog entry for Web2c seems to be February 1990, but I may
have done some work before then. In any case, Tim Morgan and I were
jointly maintaining it for a time. (I should mention here that Tim had
made Web2c into a real distribution long before I had ever used it or
even heard of it, and Tom Rokicki did the original implementation. I
was using pxp
and pc
on VAX 11/750's and the hot new Sun 2
machines.)
It must have been later in 1990 and 1991 that I started working on
TeX for the Impatient. Dvips, Xdvi, Web2c, and the GNU
fontutils (which I was also writing at the time) all used different
environment variables, and, more importantly, had different bugs in
their path searching. This became extremely painful, as I was stressing
everything to the limit working on the book. I also desperately wanted
to implement subdirectory searching, since I couldn't stand putting
everything in one big directory, and also couldn't stand having to
explicitly specify `cm', `pandora', ... in a path.
In the first incarnation, I just hacked separately on each
program--that was the original subdirectory searching code in both Xdvi
and Dvips, though I think Paul Vojta has completely rewritten Xdvi's
support by now. That is, I tried to go with the flow in each program,
rather than changing the program's calling sequences to conform to
common routines.
Then, as bugs inevitably appeared, I found I was fixing the same thing
three times (Web2c and fontutils were always sharing code, since I
maintained those--there was no Dvipsk or Xdvik or Dviljk at this
point). After a while, I finally started sharing source files. They
weren't yet a library, though. I just kept things up to date with shell
scripts. (I was developing on a 386 running ISC 2.2 at the time, and so
didn't have symbolic links. An awful experience.)
The ChangeLogs for Xdvik and Dvipsk record initial releases of those
distributions in May and June 1992. I think it was because I was tired
of the different configuration strategies of each program, not so much
because of the path searching. (Autoconf was being developed by David
MacKenzie and others, and I was adapting it to TeX and friends.)
I started to make a separate library that other programs could link with
on my birthday in April 1993, according to the ChangeLog. I don't
remember exactly why I finally took the time to make it a separate
library; a conversation with david zuhn that initiated it. Just seemed
like it was time.
Dviljk got started in March 1994 after I bought a Laserjet 4. (Kpathsea
work got suspended while Norm Walsh and I, with Gustaf Neumann's help,
implemented a way for TeX to get at all those neat builtin LJ4 fonts
... such a treat to have something to typeset in besides Palatino!)
By spring of 1995, I had implemented just about all the path-searching
features in Kpathsea that I plan to, driven beyond my initial goals by
Thomas Esser and others. I then started to integrate Web2c with
Kpathsea. After the release of a stable Web2c, I hope to be able to stop
development, and turn most of my attention back to making fonts for GNU.
(Always assuming Micros**t hasn't completely obliterated Unix by then,
or that software patents haven't stopped software development by anybody
smaller than a company with a million-dollar-a-year legal budget. Which
is actually what I think is likely to happen, but that's another
story...)
Go to the first, previous, next, last section, table of contents.