summaryrefslogtreecommitdiff
path: root/Build/source/texk/kpathsea/win32/mktextfm.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/kpathsea/win32/mktextfm.c')
-rw-r--r--Build/source/texk/kpathsea/win32/mktextfm.c441
1 files changed, 0 insertions, 441 deletions
diff --git a/Build/source/texk/kpathsea/win32/mktextfm.c b/Build/source/texk/kpathsea/win32/mktextfm.c
deleted file mode 100644
index e09e99237b2..00000000000
--- a/Build/source/texk/kpathsea/win32/mktextfm.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* mktextfm.c
-
- Copyright 2000, 2020 Akira Kakuto.
-
- 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 <http://www.gnu.org/licenses/>.
-
- Assumes the ljfour mode in mf.base .
- Usage: mktextfm [--destdir DESTDIR] name
-*/
-
-#include <kpathsea/kpathsea.h>
-#ifndef __MINGW32__
-#include <web2c/w2c/c-auto.h>
-#endif
-#include "mktex.h"
-
-#define TBUF 512
-
-char *progname;
-
-static void
-usage (void)
-{
- fprintf (stderr, "Usage: %s [--destdir destdir] name\n", progname);
- return;
-}
-
-static void
-version (void)
-{
- fprintf (stderr, "%s, (C version 1.6 --ak 2009-2020)\n", progname);
- fprintf (stderr, KPSEVERSION WEB2CVERSION "\n");
- return;
-}
-
-static void
-help (void)
-{
- fprintf (stderr, "Usage (1): %s name\n", progname);
- fprintf (stderr, " tfm is saved following TDS\n");
- fprintf (stderr, "Usage (2): %s --destdir destdir name\n", progname);
- fprintf (stderr, " destdir must be an absolute path of dir\n");
- fprintf (stderr, "Usage (3): %s --version\n", progname);
- fprintf (stderr, "Usage (4): %s --help\n", progname);
-
- return;
-}
-
-static void
-relmem (char **v)
-{
- int j;
- for (j = 0; j < 4; j++)
- free (v[j]);
- return;
-}
-
-int
-main (int ac, char **av)
-{
- char rbuff[TBUF];
- char buff[TBUF];
- char savebuff[TBUF];
- char cmd[TBUF];
- char mffile[TBUF];
- char *arg[4];
- static char execfile[TBUF];
-
- char kpsedot[TBUF];
- char currdir[TBUF];
- char *tmp;
- int cdrive, tdrive;
-
- FILE *fr, *fw, *fnul;
-
- int i, savo, savi;
- char *p, *fp, *fpp;
- int issetdest;
- char fontname[TBUF];
-
- char texbindir[TBUF];
- char fullbin[TBUF];
- char *extra_info;
-
- kpse_set_program_name (av[0], NULL);
- progname = kpse_program_name;
-
-/*
- * get tex binary dir
- *
- */
- p = kpse_var_value("SELFAUTOLOC");
- if(p == 0) {
- fprintf(stderr, "I cannot get SELFAUTOLOC\n");
- exit(100);
- }
- strcpy(texbindir, p);
- free(p);
- for(p=texbindir; *p; p++) {
- if(*p == '/') *p = '\\';
- }
- *p = '\\';
- *(p+1) = '\0';
-
- tmp = getenv ("TEMP");
- if (!tmp)
- tmp = getenv ("TMP");
- if (!tmp)
- tmp = getenv ("TMPDIR");
- if (!tmp) {
- fprintf (stderr, "Please define TEMP | TMP | TMPDIR.\n");
- return (100);
- }
-
- tmp = xstrdup(tmp);
-
- for (fpp = tmp; *fpp; fpp++) {
- if (IS_KANJI(fpp))
- fpp++;
- else if (*fpp == '\\')
- *fpp = '/';
- }
-/*
-issetdest = 0 : TDS
-issetdest = 1 : user setting
-issetdest = 2 : current directory
-*/
-
- issetdest = 0;
-
- if (ac < 2) {
- usage ();
- free(tmp);
- return (100);
- }
-
- if ((!strcmp (av[1], "--version")) || (!strcmp (av[1], "-version"))) {
- version ();
- free(tmp);
- return (100);
- }
-
- if ((!strcmp (av[1], "--help")) || (!strcmp (av[1], "-help"))) {
- help ();
- free(tmp);
- return (100);
- }
-
- for (i = 0; i < 4; i++)
- arg[i] = (char *) malloc (TBUF);
-
- if ((!strcmp (av[1], "--destdir")) || (!strcmp (av[1], "-destdir"))) {
- if (ac != 4) {
- usage ();
- relmem (arg);
- free(tmp);
- return (100);
- }
- issetdest = 1;
- if (strlen(av[2]) > TBUF - 1 || strlen(av[3]) > TBUF - 150) {
- fprintf (stderr, "Too long a string.\n");
- return (100);
- }
- strcpy (buff, av[2]);
- strcpy (fontname, av[3]);
- for (p = buff; *p; p++) {
- if (IS_KANJI(p))
- p++;
- else if (*p == '\\')
- *p = '/';
- }
- } else {
- if (strlen(av[1]) > TBUF - 150) {
- fprintf (stderr, "Too long a string.\n");
- return (100);
- }
- strcpy (fontname, av[1]);
- }
-
-
- /* fontname = font name
- */
- if ((p = strrchr (fontname, '.')))
- *p = '\0';
-
- /* mffile is METAFONT file name
- */
- strcpy (mffile, fontname);
- strcat (mffile, ".mf");
-
- if (!(fp = kpse_var_value ("MFINPUTS"))) {
- fprintf (stderr, "Cannot get value of MFINPUTS\n");
- relmem (arg);
- free(tmp);
- return (100);
- }
-
- free (fp);
-
- xputenv("MKTEXMF", "1");
- if (!(p = kpse_find_file (mffile, kpse_mf_format, 1))) {
- fprintf (stderr, "Cannot find %s.\n", mffile);
- relmem (arg);
- free(tmp);
- return (100);
- }
-
- fpp = _getcwd (currdir, TBUF);
- if (!fpp) {
- fprintf (stderr, "Failed to get current working directory.\n");
- relmem (arg);
- free(tmp);
- return (100);
- }
- for (fpp = currdir; *fpp; fpp++) {
- if (IS_KANJI(fpp))
- fpp++;
- else if (*fpp == '\\')
- *fpp = '/';
- }
-
- i = (int)strlen (currdir);
- if (currdir[i - 1] == '/')
- currdir[i - 1] = '\0';
- strcpy (kpsedot, "KPSE_DOT=.;");
- strcat (kpsedot, currdir);
- _putenv (kpsedot);
-
- if ((p[0] == '.') && (p[1] == '/') && (issetdest != 1)) {
- issetdest = 2;
- strcpy (buff, currdir);
- }
-
- if (issetdest == 0) {
- /* now path of ${name}.mf is in p */
- strcpy (arg[0], "Dummy");
- strcpy (arg[1], "tfm");
- strcpy (arg[2], p);
-
- if (!(p = getdestdir (3, arg))) {
- fprintf (stderr, "Cannot get destination directory name.\n");
- relmem (arg);
- free(tmp);
- return (100);
- }
- strcpy (buff, p);
- }
-
-/* Now buff is the destdir */
- p = buff;
-
- i = (int)strlen (p);
-
- if (p[i - 1] != '/')
- strcat (p, "/");
- strcat (p, fontname);
- strcat (p, ".tfm");
-
-/* now p (or buff) is the full path name of the tfm font */
-/* check if it exists */
- if (_access (p, 0) == 0) {
- fprintf (stderr, "%s exists\n", p);
- printf ("%s\n", p);
- relmem (arg);
- free(tmp);
- return (0);
- }
-
- cdrive = _getdrive ();
- if (tmp[1] == ':') {
- tdrive = tolower (*tmp) - 'a' + 1;
- _chdrive (tdrive);
- }
- _chdir (tmp);
-
-/* save stdout and stdin */
- savo = _dup (fileno (stdout));
- savi = _dup (fileno (stdin));
-
-/* connect stdout to stderr */
- _dup2 (fileno (stderr), fileno (stdout));
-
-/* connect stdin to nul device */
- if (!(fnul = fopen ("nul", "r"))) {
- fprintf (stderr, "Cannot open nul device to read\n");
- relmem (arg);
- _chdrive (cdrive);
- _chdir (currdir);
- free(tmp);
- return (100);
- }
- _dup2 (fileno (fnul), fileno (stdin));
-
-/* METAFONT command line */
-/*
-The idea here is to provide a programmatic way to get the
-codingscheme and other so-called Xerox-world information into the
-tfm: if the envvar MF_MODE_EXTRA_INFO is set, then modes.mf (as of
-the 3.9 release in January 2020) will arrange for that. We do not
-do this by default because Knuth objected.
-*/
- extra_info = getenv("MF_MODE_EXTRA_INFO");
- strcpy (cmd, "--progname=mf --base=mf ");
- strcat (cmd, "\\mode:=ljfour; mag:=1; ");
- if (extra_info) {
- strcat(cmd, "if known mode_include_extra_info_available: ");
- strcat(cmd, "mode_include_extra_info fi; ");
- }
- strcat (cmd, "nonstopmode; input ");
- strcat (cmd, fontname);
- strcat (cmd, ";");
-
- strcpy (execfile, "mf-nowin.exe");
- fprintf (stderr, "%s %s\n", execfile, cmd);
- strcpy(fullbin, texbindir);
- strcat(fullbin, execfile);
- (void) _spawnlp (_P_WAIT, fullbin, execfile, cmd, NULL);
-
-/* return to original stdout and stdin */
- _dup2 (savo, fileno (stdout));
- close (savo);
- _dup2 (savi, fileno (stdin));
- close (savi);
-
-/* close nul device */
- fclose (fnul);
-
-/* check consistency */
- strcpy (cmd, fontname);
- strcat (cmd, ".600gf");
-
- if (_access (cmd, 0) == -1) {
- fprintf (stderr, "METAFONT failed to make gf font.\n");
- relmem (arg);
- _chdrive (cdrive);
- _chdir (currdir);
- free(tmp);
- return (100);
- }
-
- remove (cmd);
-
- strcpy (cmd, fontname);
- strcat (cmd, ".tfm");
-
-/* copy the tfm file */
- if (!(fr = fopen (cmd, "rb"))) {
- fprintf (stderr, "Cannot open %s to read\n", cmd);
- _chdrive (cdrive);
- _chdir (currdir);
- relmem (arg);
- free(tmp);
- return (100);
- }
- if (!(fw = fopen (buff, "wb"))) {
- fprintf (stderr, "Cannot open %s to write\n", buff);
- _chdrive (cdrive);
- _chdir (currdir);
- relmem (arg);
- free(tmp);
- return (100);
- }
-
- while ((i = (int)fread (rbuff, 1, TBUF, fr)))
- fwrite (rbuff, 1, i, fw);
- fclose (fr);
- fclose (fw);
-
- strcpy(savebuff, buff);
-
-/*
- copy log file into the current directory
- in the case that issetdest == 2,
- because feynmf package requires the
- log file.
-*/
-
- if(issetdest == 2) {
- i = (int)strlen(buff);
- if(i > 3) {
- i -= 4;
- buff[i] = '\0';
- strcat(buff, ".log");
- strcpy(cmd, fontname);
- strcat(cmd, ".log");
- if (!(fr = fopen (cmd, "rb"))) {
- fprintf (stderr, "Cannot open %s to read\n", cmd);
- _chdrive (cdrive);
- _chdir (currdir);
- relmem (arg);
- free(tmp);
- return (100);
- }
- if (!(fw = fopen (buff, "wb"))) {
- fprintf (stderr, "Cannot open %s to write\n", buff);
- _chdrive (cdrive);
- _chdir (currdir);
- relmem (arg);
- free(tmp);
- return (100);
- }
- while ((i = (int)fread (rbuff, 1, TBUF, fr)))
- fwrite (rbuff, 1, i, fw);
- fclose (fr);
- fclose (fw);
- }
- }
-
- relmem (arg);
- if(issetdest != 2)
- mktexupd (savebuff);
-
-/* erase files */
- strcpy (cmd, fontname);
- strcat (cmd, ".log");
- remove (cmd);
-
- strcpy (cmd, fontname);
- strcat (cmd, ".tfm");
- remove (cmd);
-
- _chdrive (cdrive);
- _chdir (currdir);
-
-/* send message to Kpathsea */
- printf ("%s\n", savebuff);
- free(tmp);
-
- return (0);
-}