The typical way to use Kpathsea in your program goes something like this:
kpse_set_progname
with argv[0]
; This is the only
initialization that is mandatory to take full advantage of
Kpathsea--specifically, for the .program
feature of config
files (see section Config files).
If necessary, kpse_set_progname
sets the global variables
program_invocation_name
and program_invocation_short_name
.
These variables are used in the error message macros defined in
`kpathsea/lib.h'. It also initializes debugging options based on
the environment variable KPATHSEA_DEBUG
(if that is set).
Finally, it sets the variables SELFAUTOLOC
, SELFAUTODIR
and SELFAUTOPARENT
to the location, parent and grandparent
directory of the executable, removing `.' and `..' path
elements and resolving symbolic links. These are used in the default
configuration file to allow people to invoke TeX from anywhere,
specifically from a mounted CD-ROM. (You can use
`--expand-var=\$SELFAUTOLOC', etc., to see the values finds.)
kpathsea_debug
to the number that the user supplies (as in Dviljk
and Web2c), or you can just omit this altogether (people can always set
KPATHSEA_DEBUG
). If you do have runtime debugging already, you
need to merge Kpathsea's options with yours (as in Dvipsk and Xdvik).
client_path
member in
the appropriate element of the kpse_format_info
array. (This
array is indexed by file type; see `tex-file.h'.) See
`resident.c' in Dvipsk for an example.
kpse_init_prog
(see `proginit.c'). It's useful for the
DVI drivers, at least, but for other programs it may be simpler to
extract the parts of it that actually apply. This does not initialize
any paths, it just looks for (and sets) certain environment variables
and other random information. (A search path is always initialized at
the first call to find a file of that type; this eliminates much useless
work, e.g., initializing the BibTeX search paths in a DVI driver.)
kpse_find_format
, defined in `tex-file.h'. These are
macros that expand to a call to `kpse_find_file'. You can call,
say, kpse_find_tfm
after doing only the first of the
initialization steps above--Kpathsea automatically reads the
`texmf.cnf' generic config files, looks for environment variables,
and does expansions at the first lookup.
kpse_find_pk
,
kpse_find_gf
and kpse_find_glyph
, defined in
`tex-glyph.h'. These return a structure in addition to the
resultant filename, because fonts can be found in so many ways. See the
documentation in the source.
kpse_open_file
. This function takes the name to look up and a
Kpathsea file format as arguments, and returns the usual FILE *
.
It always assumes the file must exist, and thus will search the disk if
necessary (unless the search path specified `!!', etc.). In other
words, if you are looking up a VF or some other file that need not
exist, don't use this.
Kpathsea also provides many utility routines. Some are generic: hash
tables, memory allocation, string concatenation and copying, string
lists, reading input lines of arbitrary length, etc. Others are
filename-related: default path, tilde, and variable expansion,
stat
calls, etc. (Perhaps someday I'll move the former to a
separate library.)
The `c-*.h' header files can also help your program adapt to many different systems. You will almost certainly want to use Autoconf for configuring your software if you use Kpathsea; I strongly recommend using Autoconf regardless. It is available from `ftp://prep.ai.mit.edu/pub/gnu/'.
Go to the first, previous, next, last section, table of contents.