1
/* pykpathsea.c: Copyright 2003-2011 Jörg Lehmann, André Wobst
3
* This program is free software; you can redistribute it and/or modify
4
* it under the terms of the GNU General Public License as published by
5
* the Free Software Foundation; either version 2 of the License, or
6
* (at your option) any later version.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program; if not, write to the Free Software
15
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
21
#include <kpathsea/tex-file.h>
22
#include <kpathsea/progname.h>
24
static PyObject *py_kpse_find_file(PyObject *self, PyObject *args)
28
char *completefilename;
29
PyObject *returnvalue;
30
kpse_file_format_type kpse_file_format;
32
if (PyArg_ParseTuple(args, "ss", &filename, &format)) {
34
/* if (!strcmp(format, "gf")) kpse_file_format = kpse_gf_format; else */
35
/* if (!strcmp(format, "pk")) kpse_file_format = kpse_pk_format; else */
36
/* if (!strcmp(format, "bitmap font")) kpse_file_format = kpse_any_glyph_format; else */
37
if (!strcmp(format, "tfm")) kpse_file_format = kpse_tfm_format; else
38
if (!strcmp(format, "afm")) kpse_file_format = kpse_afm_format; else
39
/* if (!strcmp(format, "base")) kpse_file_format = kpse_base_format; else */
40
/* if (!strcmp(format, "bib")) kpse_file_format = kpse_bib_format; else */
41
/* if (!strcmp(format, "bst")) kpse_file_format = kpse_bst_format; else */
42
/* if (!strcmp(format, "cnf")) kpse_file_format = kpse_cnf_format; else */
43
/* if (!strcmp(format, "ls-R")) kpse_file_format = kpse_db_format; else */
44
/* if (!strcmp(format, "fmt")) kpse_file_format = kpse_fmt_format; else */
45
if (!strcmp(format, "map")) kpse_file_format = kpse_fontmap_format; else
46
/* if (!strcmp(format, "mem")) kpse_file_format = kpse_mem_format; else */
47
/* if (!strcmp(format, "mf")) kpse_file_format = kpse_mf_format; else */
48
/* if (!strcmp(format, "mfpool")) kpse_file_format = kpse_mfpool_format; else */
49
/* if (!strcmp(format, "mft")) kpse_file_format = kpse_mft_format; else */
50
/* if (!strcmp(format, "mp")) kpse_file_format = kpse_mp_format; else */
51
/* if (!strcmp(format, "mppool")) kpse_file_format = kpse_mppool_format; else */
52
/* if (!strcmp(format, "MetaPost support")) kpse_file_format = kpse_mpsupport_format; else */
53
/* if (!strcmp(format, "ocp")) kpse_file_format = kpse_ocp_format; else */
54
/* if (!strcmp(format, "ofm")) kpse_file_format = kpse_ofm_format; else */
55
/* if (!strcmp(format, "opl")) kpse_file_format = kpse_opl_format; else */
56
/* if (!strcmp(format, "otp")) kpse_file_format = kpse_otp_format; else */
57
/* if (!strcmp(format, "ovf")) kpse_file_format = kpse_ovf_format; else */
58
/* if (!strcmp(format, "ovp")) kpse_file_format = kpse_ovp_format; else */
59
if (!strcmp(format, "graphics/figure")) kpse_file_format = kpse_pict_format; else
60
/* if (!strcmp(format, "tex")) kpse_file_format = kpse_tex_format; else */
61
/* if (!strcmp(format, "TeX system documentation")) kpse_file_format = kpse_texdoc_format; else */
62
/* if (!strcmp(format, "texpool")) kpse_file_format = kpse_texpool_format; else */
63
/* if (!strcmp(format, "TeX system sources")) kpse_file_format = kpse_texsource_format; else */
64
if (!strcmp(format, "PostScript header")) kpse_file_format = kpse_tex_ps_header_format; else
65
/* if (!strcmp(format, "Troff fonts")) kpse_file_format = kpse_troff_font_format; else */
66
if (!strcmp(format, "type1 fonts")) kpse_file_format = kpse_type1_format; else
67
if (!strcmp(format, "vf")) kpse_file_format = kpse_vf_format; else
68
if (!strcmp(format, "dvips config")) kpse_file_format = kpse_dvips_config_format; else
69
/* if (!strcmp(format, "ist")) kpse_file_format = kpse_ist_format; else */
70
/* if (!strcmp(format, "truetype fonts")) kpse_file_format = kpse_truetype_format; else */
71
/* if (!strcmp(format, "type42 fonts")) kpse_file_format = kpse_type42_format; else */
72
/* if (!strcmp(format, "web2c files")) kpse_file_format = kpse_web2c_format; else */
73
/* if (!strcmp(format, "other text files")) kpse_file_format = kpse_program_text_format; else */
74
/* if (!strcmp(format, "other binary files")) kpse_file_format = kpse_program_binary_format; else */
75
/* if (!strcmp(format, "misc fonts")) kpse_file_format = kpse_miscfonts_format; else */
78
completefilename = kpse_find_file(filename, kpse_file_format, 1);
79
returnvalue = Py_BuildValue("s", completefilename);
80
/* XXX: free(completefilename); */
88
/* exported methods */
90
static PyMethodDef pykpathsea_methods[] = {
91
{"find_file", py_kpse_find_file, METH_VARARGS},
95
#define AddFormat(key, value) PyDict_SetItemString(format, PyString_FromString(key), PyInt_FromLong(value))
97
void initpykpathsea(void)
99
Py_InitModule("pykpathsea", pykpathsea_methods);
100
kpse_set_program_name("dvips", "dvips");