/* tex-file.h: find files in a particular format.
Copyright 1993, 1994, 1995, 1996, 2007, 2008, 2009, 2010, 2013,
2014 Karl Berry.
Copyright 1998-2005 Olaf Weber.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, see . */
#ifndef KPATHSEA_TEX_FILE_H
#define KPATHSEA_TEX_FILE_H
#include
#include
#include
#ifdef __cplusplus
extern "C" {
#endif
#ifdef MAKE_KPSE_DLL /* libkpathsea internal only */
/* This initializes the fallback resolution list. If ENVVAR
is set, it is used; otherwise, the envvar `TEXSIZES' is looked at; if
that's not set either, a compile-time default is used. */
extern void kpathsea_init_fallback_resolutions (kpathsea kpse, string envvar);
#endif /* MAKE_KPSE_DLL */
/* If LEVEL is >= FMT's `program_enable_level', set `program_enabled_p'
for FMT to VALUE. */
extern KPSEDLL void kpathsea_set_program_enabled (kpathsea kpse,
kpse_file_format_type fmt, boolean value, kpse_src_type level);
/* Call kpse_set_program_enabled with VALUE and the format corresponding
to FMTNAME. */
extern KPSEDLL void kpathsea_maketex_option (kpathsea kpse,
const_string fmtname, boolean value);
/* Change the list of searched suffixes for FORMAT to ... (alternate
suffixes if ALTERNATE is true). */
extern KPSEDLL void kpathsea_set_suffixes (kpathsea kpse,
kpse_file_format_type format, boolean alternate, ...);
/* Initialize the info for the given format, returning the final search
path. This is called automatically by `kpse_find_file', but the
glyph searching (for example) can't use that function, so it
must also be available separately. */
extern KPSEDLL const_string kpathsea_init_format (kpathsea kpse,
kpse_file_format_type format);
/* Like kpathsea_init_format, but return the list of (environment/config)
variable names considered, which is not otherwise saved. This is
only used by kpsewhich --help. */
extern KPSEDLL const_string kpathsea_init_format_return_varlist (kpathsea kpse,
kpse_file_format_type format);
/* If FORMAT has a non-null `suffix' member, append it to NAME "."
and call `kpse_path_search' with the result and the other arguments.
If that fails, try just NAME. */
extern KPSEDLL string kpathsea_find_file (kpathsea kpse, const_string name,
kpse_file_format_type format, boolean must_exist);
/* Ditto, allowing ALL parameter and hence returning a NULL-terminated
list of results. */
extern KPSEDLL string *kpathsea_find_file_generic (kpathsea kpse,
const_string name, kpse_file_format_type format, boolean must_exist,
boolean all);
/* Return true if FNAME is acceptable to open for reading or writing.
If not acceptable, write a message to stderr. */
extern KPSEDLL boolean kpathsea_in_name_ok (kpathsea kpse, const_string fname);
extern KPSEDLL boolean kpathsea_out_name_ok (kpathsea kpse, const_string fname);
/* As above, but no error message. */
extern KPSEDLL boolean kpathsea_in_name_ok_silent
(kpathsea kpse, const_string fname);
extern KPSEDLL boolean kpathsea_out_name_ok_silent
(kpathsea kpse, const_string fname);
/* Don't just look up the name, actually open the file. */
extern KPSEDLL FILE *kpathsea_open_file (kpathsea kpse, const_string name,
kpse_file_format_type format);
/* This function is used to set kpse_program_name (from progname.c) to
a different value. It will clear the path searching information, to
ensure that the search paths are appropriate to the new name. */
extern KPSEDLL void kpathsea_reset_program_name (kpathsea kpse,
const_string progname);
#if defined (KPSE_COMPAT_API)
extern void kpse_init_fallback_resolutions (string envvar);
extern KPSEDLL void kpse_set_program_enabled (kpse_file_format_type fmt,
boolean value, kpse_src_type level);
extern KPSEDLL void kpse_maketex_option (const_string fmtname, boolean value);
extern KPSEDLL void kpse_set_suffixes (kpse_file_format_type format,
boolean alternate, ...);
extern KPSEDLL const_string kpse_init_format (kpse_file_format_type);
extern KPSEDLL string kpse_find_file (const_string name,
kpse_file_format_type format, boolean must_exist);
extern KPSEDLL string *kpse_find_file_generic
(const_string name, kpse_file_format_type format,
boolean must_exist, boolean all);
extern KPSEDLL boolean kpse_in_name_ok (const_string fname);
extern KPSEDLL boolean kpse_out_name_ok (const_string fname);
/* Here are some abbreviations. */
#define kpse_find_mf(name) kpse_find_file (name, kpse_mf_format, true)
#define kpse_find_mft(name) kpse_find_file (name, kpse_mft_format, true)
#define kpse_find_pict(name) kpse_find_file (name, kpse_pict_format, true)
#define kpse_find_tex(name) kpse_find_file (name, kpse_tex_format, true)
#define kpse_find_tfm(name) kpse_find_file (name, kpse_tfm_format, true)
#define kpse_find_ofm(name) kpse_find_file (name, kpse_ofm_format, true)
/* The `false' is correct for DVI translators, which should clearly not
require vf files for every font (e.g., cmr10.vf). But it's wrong for
VF translators, such as vftovp. */
#define kpse_find_vf(name) kpse_find_file (name, kpse_vf_format, false)
#define kpse_find_ovf(name) kpse_find_file (name, kpse_ovf_format, false)
extern KPSEDLL FILE *kpse_open_file (const_string, kpse_file_format_type);
extern KPSEDLL void kpse_reset_program_name (const_string progname);
#endif
#ifdef __cplusplus
}
#endif
#endif /* not KPATHSEA_TEX_FILE_H */