summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/cjk/utils/cjklatex/cjklatex.c
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/cjk/utils/cjklatex/cjklatex.c')
-rw-r--r--Master/texmf-dist/source/latex/cjk/utils/cjklatex/cjklatex.c290
1 files changed, 0 insertions, 290 deletions
diff --git a/Master/texmf-dist/source/latex/cjk/utils/cjklatex/cjklatex.c b/Master/texmf-dist/source/latex/cjk/utils/cjklatex/cjklatex.c
deleted file mode 100644
index 6750bd4f4d1..00000000000
--- a/Master/texmf-dist/source/latex/cjk/utils/cjklatex/cjklatex.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- Purpose: call latex after preprocessing of the .tex file by
- the cjk conversion tool. The old f_name.bat script
- is not working anymore.
- Author : F. Popineau <Fabrice.Popineau@supelec.fr>
- Date : <29/06/2001>
-*/
-
-/*
- Copyright (C) 2001-2008 F. Popineau <Fabrice.Popineau@supelec.fr>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program in doc/COPYING; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- MA 02110-1301 USA
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <win32lib.h>
-
-#include <kpathsea/config.h>
-#include <kpathsea/lib.h>
-#include <kpathsea/getopt.h>
-
-static char *cjklatex_version_string = "1.0";
-
-static const char *usage_str[] = {
- "Usage: %s OPTIONS FILE\n",
- "Calls `latex' on FILE after conversion by the filter\n",
- "specified by OPTIONS.\n",
- "--conv=bg5\tfor traditional Chinese, encoding Big 5,\n",
- "--conv=bg5p\tfor Chinese, encoding Big 5+,\n",
- "--conv=cef\tfor Chinese Encoding Framework, encoding CEF,\n",
- "--conv=cef5\tidem CEF, also converts Big5 characters,\n",
- "--conv=cefs\tidem CEF, also converts SJIS characters,\n",
- "--conv=sjis\tfor Japanese, SJIS encoding,\n",
- "--conv=gbk\tfor Chinese, encoding GBK.",
- "\nAlternatively, for compatibility with the previous DOS batch files,\n",
- "you can also copy this program to any of the following names:\n",
- "bg5latex.exe,bg5pltx.exe,cef5ltx.exe,ceflatex.exe,cefsltx.exe,\n",
- "gbklatex.exe and sjisltx.exe .\n",
- "Then running one of these programs will be identical to specify\n",
- "the corresponding option.\n",
- "\nAdditional options:\n",
- "--verbose\tbe a bit more verbose about what is happening,\n",
- "--nocleanup\tdo not remove intermediate files,\n",
- "--latex=engine\tuse `engine' instead of `latex' to process the file.\n",
- NULL
-};
-
-static char *progname = NULL;
-
-static struct _conv_table {
- char *progname;
- char *processor;
-} CJKtable[] = {
- { "cjklatex", "" },
- { "bg5latex", "bg5conv" },
- { "bg5pltx", "extconv" },
- { "cef5ltx", "cef5conv" },
- { "ceflatex", "cefconv" },
- { "cefsltx", "cefsconv" },
- { "gbklatex", "extconv" },
- { "sjisltx", "sjisconv" }
-};
-
-#define PROGRAM_IS(p) FILESTRCASEEQ (p, progname)
-#define ARGUMENT_IS(a) STREQ (long_options[option_index].name, a)
-
-static int program_number = -1;
-static int opt_verbose = 0;
-static int opt_nocleanup = 0;
-static char *texname, *cjkname, *texengine;
-
-static struct option long_options [] = {
- { "debug", 1, 0, 0},
- { "help", 0, 0, 0},
- { "version", 0, 0, 0},
- { "verbose", 0, 0, 0},
- { "nocleanup", 0, 0, 0},
- { "latex", 1, 0, 0},
- { "conv", 1, 0, 0},
- {0, 0, 0, 0}
-};
-
-BOOL sigint_handler(DWORD dwCtrlType)
-{
- /* Fix me : there is a problem if a system() command is running.
- We should wait for the son process to be interrupted.
- Only way I can think of to do that : rewrite system() based on
- spawn() with parsing of the command line and set a global pid
- Next cwait(pid) in the HandlerRoutine.
- */
-
- /* This is not that good, but else we would need to wait for
- the child processes to finish ! */
- Sleep(250);
-
- fprintf(stderr, "Sending Ctrl+Break!\n");
- GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, 0);
-
- if (! opt_nocleanup)
- unlink(cjkname);
-
- exit(1);
-
- return FALSE; /* return value obligatory */
-}
-
-void usage()
-{
- int i;
- fprintf(stderr, "CJKlatex version %s\n", cjklatex_version_string);
- fprintf(stderr,usage_str[0], progname );
- fputs("\n", stderr);
- for(i = 1; usage_str[i]; ++i)
- fputs(usage_str[i], stderr);
-}
-
-int do_process(char *processor, char *filename)
-{
- char *ext, *p;
- char cmd[_MAX_PATH*3];
- DWORD dwFA;
- int ret;
-
- if (strlen(filename) > 4 && _strnicmp(filename + strlen(filename) - 4, ".tex", 4) == 0) {
- texname = xstrdup(filename);
- }
- else {
- texname = concat(filename, ".tex");
- }
- for (p = texname; p && *p; p++)
- *p = (*p == '\\' ? '/' : *p);
-
- dwFA = GetFileAttributes(texname);
- if (dwFA == 0xFFFFFFFF || (dwFA & FILE_ATTRIBUTE_DIRECTORY)) {
- fprintf(stderr, "%s: %s is an invalid input file.\n",
- progname, texname);
- ret = 1;
- }
- else {
- cjkname = xstrdup(texname);
- ext = strrchr(cjkname, '.');
- assert(ext != NULL);
- strcpy(cjkname + (ext - cjkname), ".cjk");
-
- sprintf(cmd, "%s < %s > %s", processor, texname, cjkname);
- if (opt_verbose)
- fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
- ret = system(cmd);
- if (ret == 0) {
- sprintf(cmd, "%s %s", texengine, cjkname);
- if (opt_verbose)
- fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
- ret = system(cmd);
- if (! opt_nocleanup)
- unlink(cjkname);
- }
- }
-
- free(texname);
- free(cjkname);
-
- return ret;
-}
-
-void main(int argc, char *argv[])
-{
- int g; /* getopt return code */
- int i;
- int option_index;
- char *filename;
-
- if (!progname)
- progname = argv[0];
-
- kpse_set_program_name (progname, NULL);
- progname = kpse_program_name;
-
- for (i = 0; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number < 0; i++) {
- if (STREQ(progname, CJKtable[i].progname)
-#if 0
- || (STREQ(progname, CJKtable[i].progname)
- && STREQ(progname+strlen(CJKtable[i].progname), ".exe"))
-#endif
- ) {
- program_number = i;
- }
- }
-
- if (program_number == -1) {
- fprintf(stderr, "%s: this program has been incorrecty copied to the name %s.\n", progname, progname);
- usage();
- exit(1);
- }
-
- for(;;) {
- g = getopt_long_only (argc, argv, "", long_options, &option_index);
-
- if (g == EOF)
- break;
-
- if (g == '?') {
- usage(); /* Unknown option. */
- exit(1);
- }
-
- /* assert (g == 0); */ /* We have no short option names. */
- /*
- FIXME : try 'mktexpk --mfmode --bdpi 600 ...'
- */
- if (ARGUMENT_IS ("debug")) {
- kpathsea_debug |= atoi (optarg);
- }
- else if (ARGUMENT_IS ("help")) {
- usage();
- exit(0);
- }
- else if (ARGUMENT_IS ("verbose")) {
- opt_verbose = 1;
- }
- else if (ARGUMENT_IS ("nocleanup")) {
- opt_nocleanup = 1;
- }
- else if (ARGUMENT_IS ("latex")) {
- texengine = xstrdup(optarg);
- }
- else if (ARGUMENT_IS ("version")) {
- fprintf(stderr, "%s of %s.\n", progname, cjklatex_version_string);
- exit(0);
- }
- else if (PROGRAM_IS("cjklatex")) {
- if (ARGUMENT_IS("conv")) {
- for (i = 1; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number <= 0; i++) {
- if (STRNEQ(optarg, CJKtable[i].progname, strlen(optarg))) {
- program_number = i;
- }
- }
- }
- }
- }
-
- /* shifting options from argv[] list */
- for (i = 1; optind < argc; i++, optind++)
- argv[i] = argv[optind];
- argv[i] = NULL;
-
- argc = i;
-
- if (argc < 2) {
- fprintf (stderr, "%s: Missing argument(s).\nTry `%s --help' for more information.\n", progname, kpse_program_name);
- exit(1);
- }
-
- if (argc > 2) {
- fprintf(stderr, "%s: Extra arguments", progname);
- for (i = 2; i < argc; i++)
- fprintf (stderr, " \"%s\"", argv[i]);
- fprintf (stderr, "\nTry `%s --help' for more information.\n",
- kpse_program_name);
- exit(1);
- }
-
- SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigint_handler, TRUE);
-
- filename = xstrdup(argv[1]);
-
- assert(program_number > 0);
-
- if (! texengine) {
- texengine = xstrdup("latex");
- }
-
- do_process(CJKtable[program_number].processor, filename);
-
- free(filename);
- free(texengine);
-}