diff options
Diffstat (limited to 'Build/source/texk/kpathsea/win32/mktexupd.c')
-rw-r--r-- | Build/source/texk/kpathsea/win32/mktexupd.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Build/source/texk/kpathsea/win32/mktexupd.c b/Build/source/texk/kpathsea/win32/mktexupd.c new file mode 100644 index 00000000000..343891f979f --- /dev/null +++ b/Build/source/texk/kpathsea/win32/mktexupd.c @@ -0,0 +1,94 @@ +/* mktexupd.c + + Copyright 2000, 2016 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/>. +*/ + +#include <kpathsea/kpathsea.h> +#include "mktex.h" + +#define MBUF 512 +#define SBUF 512 +#define LBUF 512 + +void +mktexupd (char *s) +{ + char fname[MBUF]; + char lsrname[SBUF]; + char path[LBUF]; + char **pathbuff; + int i, j, numtree; + char *pa, *pb; + int existflag = 0; + FILE *f; + + if (!(pathbuff = mkpaths (&numtree))) { + fprintf (stderr, "Maybe you are not using ls-R.\n"); + return; + } + + for (i = 0; i < numtree; i++) { + j = (int)strlen (pathbuff[i]); + if (pathbuff[i][j - 1] == '/') + pathbuff[i][j - 1] = '\0'; + } + + strcpy (path, s); + pa = strrchr (path, '/'); + if (pa == NULL) { + fprintf (stderr, "Path name of the file may be incorrect.\n"); + for (i = 0; i < numtree; i++) + free (pathbuff[i]); + free (pathbuff); + return; + } + + *pa = '\0'; + pa++; + strcpy (fname, pa); + + for (i = 0; i < numtree; i++) { + j = (int)strlen (pathbuff[i]); + if (j && strnicmp (path, pathbuff[i], j) == 0) { + existflag = 1; + break; + } + } + + if (existflag) { + strcpy (lsrname, pathbuff[i]); + strcat (lsrname, "/ls-R"); + if (_access (lsrname, 0) != 0) { + for (j = 0; j < numtree; j++) + free (pathbuff[j]); + free (pathbuff); + return; + } + pa = path; + pb = pathbuff[i]; + while (tolower (*pa) == tolower (*pb) && *pb) { + pa++; + pb++; + } + f = fopen (lsrname, "ab"); + fprintf (f, "\n.%s:\n%s\n", pa, fname); + fclose (f); + } else + fprintf(stderr, "mktexupd failed\n"); + for (i = 0; i < numtree; i++) + free (pathbuff[i]); + free (pathbuff); +} |