diff options
author | Hironobu Yamashita <h.y.acetaminophen@gmail.com> | 2019-02-23 22:34:30 +0000 |
---|---|---|
committer | Hironobu Yamashita <h.y.acetaminophen@gmail.com> | 2019-02-23 22:34:30 +0000 |
commit | 389adc225b81ce6f44e82455cd7ec72402c2ed13 (patch) | |
tree | 3fa3a637208d652c9294ac3ac87f223379c2b730 /Build/source/texk/makejvf/main.c | |
parent | 86ffc22eba4103f3f056180b2eb16e078d76bb90 (diff) |
makejvf: forbid invalid usages
git-svn-id: svn://tug.org/texlive/trunk@50106 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/makejvf/main.c')
-rw-r--r-- | Build/source/texk/makejvf/main.c | 95 |
1 files changed, 68 insertions, 27 deletions
diff --git a/Build/source/texk/makejvf/main.c b/Build/source/texk/makejvf/main.c index 86c0a0d6202..ade05cf4bf3 100644 --- a/Build/source/texk/makejvf/main.c +++ b/Build/source/texk/makejvf/main.c @@ -27,7 +27,6 @@ int main(int argc, char ** argv) while ((c = getopt (argc, argv, "k:K:Ca:b:mu:3J:U:Hiet:")) != -1) switch (c) { - case 'k': kanatume = atoi(optarg); break; @@ -111,25 +110,78 @@ int main(int argc, char ** argv) exit(0); } - atfmname = xmalloc(strlen(argv[optind])+4); - strcpy(atfmname, argv[optind]); - - { - const char *p = xbasename(argv[optind]); - vfname = xmalloc(strlen(p)+4); - strcpy(vfname, p); - } - if (FILESTRCASEEQ(&vfname[strlen(vfname)-4], ".tfm")) { - vfname[strlen(vfname)-4] = '\0'; + atfmname = xstrdup(argv[optind]); + if (FILESTRCASEEQ(&atfmname[strlen(atfmname)-4], ".tfm")) { + atfmname[strlen(atfmname)-4] = '\0'; } + + const char *atfmname_base = xbasename(atfmname); + vfname = xmalloc(strlen(atfmname_base)+4); + strcpy(vfname, atfmname_base); strcat(vfname,".vf"); vtfmname = xstrdup(argv[optind+1]); if (FILESTRCASEEQ(&vtfmname[strlen(vtfmname)-4], ".tfm")) { vtfmname[strlen(vtfmname)-4] = '\0'; } + if (FILESTRCASEEQ(&vtfmname[0], &atfmname_base[0])) { + fprintf(stderr,"Invalid usage: input TFM and output TFM must be different.\n"); + exit(100); + } - tfmget(atfmname); + if (kanatfm) { + if (FILESTRCASEEQ(&kanatfm[strlen(kanatfm)-4], ".tfm")) { + kanatfm[strlen(kanatfm)-4] = '\0'; + } + if (FILESTRCASEEQ(&kanatfm[0], &atfmname_base[0])) { + fprintf(stderr,"Invalid usage: input TFM and output TFM must be different.\n"); + exit(100); + } + } + + if (!ucs) { + if (jistfm) { + fprintf(stderr,"[Warning] Option -J invalid in non-UCS mode, ignored.\n"); + jistfm = NULL; + } + if (ucsqtfm) { + fprintf(stderr,"[Warning] Option -U invalid in non-UCS mode, ignored.\n"); + ucsqtfm = NULL; + } + if (useset3) { + fprintf(stderr,"[Warning] Option -3 invalid in non-UCS mode, ignored.\n"); + useset3 = 0; + } + if (hankana) { + fprintf(stderr,"[Warning] Option -H invalid in non-UCS mode, ignored.\n"); + hankana = 0; + } + } + + if (jistfm && ucsqtfm) { + fprintf(stderr,"Options -J and -U at the same time? I'm confused.\n"); + exit(100); + } + + if (jistfm) { + if (FILESTRCASEEQ(&jistfm[strlen(jistfm)-4], ".tfm")) { + jistfm[strlen(jistfm)-4] = '\0'; + } + if (FILESTRCASEEQ(&jistfm[0], &atfmname_base[0])) { + fprintf(stderr,"Invalid usage: input TFM and output TFM must be different.\n"); + exit(100); + } + } + + if (ucsqtfm) { + if (FILESTRCASEEQ(&ucsqtfm[strlen(ucsqtfm)-4], ".tfm")) { + ucsqtfm[strlen(ucsqtfm)-4] = '\0'; + } + if (FILESTRCASEEQ(&ucsqtfm[0], &atfmname_base[0])) { + fprintf(stderr,"Invalid usage: input TFM and output TFM must be different.\n"); + exit(100); + } + } if (usertable) { get_usertable(usertable); @@ -144,6 +196,8 @@ int main(int argc, char ** argv) exit(101); } + tfmget(atfmname); + vfp = vfopen(vfname); pstfm_nt=1; /* initialize */ @@ -164,9 +218,6 @@ int main(int argc, char ** argv) vfclose(vfp); if (kanatfm) { - if (FILESTRCASEEQ(&kanatfm[strlen(kanatfm)-4], ".tfm")) { - kanatfm[strlen(kanatfm)-4] = '\0'; - } maketfm(kanatfm); pstfm_nt=1; /* already done*/ } @@ -174,19 +225,9 @@ int main(int argc, char ** argv) maketfm(vtfmname); pstfm_nt=1; /* already done*/ - if (jistfm) { - if (FILESTRCASEEQ(&jistfm[strlen(jistfm)-4], ".tfm")) { - jistfm[strlen(jistfm)-4] = '\0'; - } - maketfm(jistfm); - } + if (jistfm) maketfm(jistfm); - if (ucsqtfm) { - if (FILESTRCASEEQ(&ucsqtfm[strlen(ucsqtfm)-4], ".tfm")) { - ucsqtfm[strlen(ucsqtfm)-4] = '\0'; - } - maketfm(ucsqtfm); - } + if (ucsqtfm) maketfm(ucsqtfm); exit(0); } |