1 /* pykpathsea.c: Copyright 2003 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 init_pykpathsea(void)
99 Py_InitModule("_pykpathsea", pykpathsea_methods
);
100 kpse_set_program_name("dvips", "dvips");