void kpathsea_init_prog (kpathsea kpse, const_string prefix, unsigned dpi, const_string mode, const_string fallback) { string font_var = concat (prefix, "FONTS"); string header_var = concat (prefix, "HEADERS"); string makepk_var = concat (prefix, "MAKEPK"); string size_var = concat (prefix, "SIZES"); /* Do both `pk_format' and `any_glyph_format' for the sake of xdvi; in general, mktexpk might apply to either, and the program will ask for the one it wants. */ /* Might have a program-specific name for mktexpk itself. */ if (getenv (makepk_var)) { /* If we did, we want to enable the program, I think. */ kpathsea_set_program_enabled (kpse, kpse_pk_format, 1, kpse_src_env); kpathsea_set_program_enabled (kpse, kpse_any_glyph_format, 1,kpse_src_env); kpse->format_info[kpse_pk_format].program = kpse->format_info[kpse_any_glyph_format].program = getenv (makepk_var); } /* A couple font paths have traditionally had application-specific environment variables to override all else; namely, XDVIFONTS and DVIPSHEADERS. So set those if we have them. */ kpse->format_info[kpse_pk_format].override_path = kpse->format_info[kpse_gf_format].override_path = kpse->format_info[kpse_any_glyph_format].override_path = kpse->format_info[kpse_tfm_format].override_path = getenv (font_var); kpse->format_info[kpse_tex_ps_header_format].override_path = getenv (header_var); kpathsea_init_fallback_resolutions (kpse, size_var); kpathsea_xputenv_int (kpse, "MAKETEX_BASE_DPI", dpi); kpse->fallback_font = fallback; /* Ugliness. See comments in kpse_make_tex in kpathsea/tex-make.c. */ kpathsea_xputenv (kpse, "MAKETEX_MODE", mode ? mode : DIR_SEP_STRING); free (font_var); free (header_var); free (makepk_var); free (size_var); }
void kpathsea_maketex_option (kpathsea kpse, const_string fmtname, boolean value) { kpse_file_format_type fmt = kpse_last_format; /* Trying to match up with the suffix lists unfortunately doesn't work well, since that would require initializing the formats. */ if (FILESTRCASEEQ (fmtname, "pk")) { fmt = kpse_pk_format; } else if (FILESTRCASEEQ (fmtname, "mf")) { fmt = kpse_mf_format; } else if (FILESTRCASEEQ (fmtname, "tex")) { fmt = kpse_tex_format; } else if (FILESTRCASEEQ (fmtname, "tfm")) { fmt = kpse_tfm_format; } else if (FILESTRCASEEQ (fmtname, "fmt")) { fmt = kpse_fmt_format; } else if (FILESTRCASEEQ (fmtname, "ofm")) { fmt = kpse_ofm_format; } else if (FILESTRCASEEQ (fmtname, "ocp")) { fmt = kpse_ocp_format; } else { fprintf (stderr, "\nkpathsea: Unknown mktex format: %s\n", fmtname); } if (fmt != kpse_last_format) { kpathsea_set_program_enabled (kpse, fmt, value, kpse_src_cmdline); } }
int main (int argc, char **argv) { kpathsea kpse = xcalloc(1, sizeof(kpathsea_instance)); kpathsea_set_program_name(kpse, argv[0], NULL); kpathsea_xputenv (kpse, "KPATHSEA_DPI", "781"); /* call mktexpk */ kpathsea_xputenv (kpse,"MAKETEX_BASE_DPI", "300"); /* call mktexpk */ kpathsea_set_program_enabled(kpse, kpse_pk_format, 1, kpse_src_env); test_make_tex (kpse, kpse_pk_format, "cmr10"); /* Fail with mktextfm. */ kpathsea_set_program_enabled(kpse, kpse_tfm_format, 1, kpse_src_env); test_make_tex (kpse, kpse_tfm_format, "foozler99"); /* Call something disabled. */ test_make_tex (kpse, kpse_bst_format, "no-way"); return 0; }
static void init_maketex (kpathsea kpse, kpse_file_format_type fmt, const_string dflt_prog, ...) { kpse_format_info_type *f = &(kpse->format_info[fmt]); const_string prog = f->program ? f->program : dflt_prog; /* mktexpk */ string PROG = uppercasify (prog); /* MKTEXPK */ string progval = kpathsea_var_value (kpse, PROG); /* $ENV/cnf{"MKTEXPK"} */ const_string arg; va_list ap; /* Doesn't hurt to always set this info. */ f->program = prog; /* Set up the argument vector. */ f->argc = 0; f->argv = XTALLOC (2, const_string); f->argv[f->argc++] = dflt_prog; va_start (ap, dflt_prog); while ((arg = va_arg (ap, string)) != NULL) { f->argc++; f->argv = (const_string *) xrealloc ((void *) f->argv, (f->argc + 1) * sizeof(const_string)); f->argv[f->argc - 1] = arg; } va_end (ap); f->argv[f->argc] = NULL; if (progval && *progval) { /* This might actually be from an environment variable value, but in that case, we'll have previously set it from kpse_init_prog. */ kpathsea_set_program_enabled (kpse, fmt, *progval == '1', kpse_src_client_cnf); } free (PROG); }
void kpse_set_program_enabled (kpse_file_format_type fmt, boolean value, kpse_src_type level) { kpathsea_set_program_enabled (kpse_def, fmt, value, level); }