diff options
Diffstat (limited to 'Build/source/texk/dvipdfm-x/dvipdfmx.c')
-rw-r--r-- | Build/source/texk/dvipdfm-x/dvipdfmx.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/Build/source/texk/dvipdfm-x/dvipdfmx.c b/Build/source/texk/dvipdfm-x/dvipdfmx.c index ce2ba0e60a6..92da42f591b 100644 --- a/Build/source/texk/dvipdfm-x/dvipdfmx.c +++ b/Build/source/texk/dvipdfm-x/dvipdfmx.c @@ -134,15 +134,21 @@ set_default_pdf_filename(void) size_t len = 0; dvi_base = xbasename(dvi_filename); - len = strlen(dvi_base) - strlen(".dvi"); - suffix = dvi_base + len; - if (dpx_conf.compat_mode == dpx_mode_mpost_mode && len > 0 && + + suffix = strrchr(dvi_base, '.'); + /* suffix can be dvi_base if dvi_base is like ".abcde" */ + + if (suffix == NULL || suffix == dvi_base) { + suffix = dvi_base + strlen(dvi_base); + } + len = strlen(dvi_base) - strlen(suffix); + + if (dpx_conf.compat_mode == dpx_mode_mpost_mode && FILESTRCASEEQ(".mps", suffix)) { pdf_filename = NEW(len+strlen(".pdf")+1, char); strncpy(pdf_filename, dvi_base, len); pdf_filename[len] = '\0'; - } else if (len > 0 && - (FILESTRCASEEQ(".dvi", suffix) || + } else if ((FILESTRCASEEQ(".dvi", suffix) || FILESTRCASEEQ(".xdv", suffix))) { pdf_filename = NEW(len+strlen(".pdf")+1, char); strncpy(pdf_filename, dvi_base, len); |