texlive[50953] Build/source/texk/dvipdfm-x: support file names always

commits+kakuto at tug.org commits+kakuto at tug.org
Fri May 3 01:09:48 CEST 2019


Revision: 50953
          http://tug.org/svn/texlive?view=revision&revision=50953
Author:   kakuto
Date:     2019-05-03 01:09:47 +0200 (Fri, 03 May 2019)
Log Message:
-----------
support file names always in default code page of OS

Modified Paths:
--------------
    trunk/Build/source/texk/dvipdfm-x/ChangeLog
    trunk/Build/source/texk/dvipdfm-x/dpxfile.c
    trunk/Build/source/texk/dvipdfm-x/mfileio.h
    trunk/Build/source/texk/dvipdfm-x/pdfximage.c

Modified: trunk/Build/source/texk/dvipdfm-x/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/ChangeLog	2019-05-02 22:54:42 UTC (rev 50952)
+++ trunk/Build/source/texk/dvipdfm-x/ChangeLog	2019-05-02 23:09:47 UTC (rev 50953)
@@ -1,3 +1,9 @@
+2019-05-03  Akira Kakuto  <kakuto at w32tex.org>
+
+	* dpxfile.c, mfileio.h, pdfximage.c: Support non-ascii file
+	names in default code page of OS irrespective of values of a
+	variable 'command_line_encoding' (Windows only).
+
 2019-05-03  Shunsaku Hirata  <shunsaku.hirata74 at gmail.com>
 
 	* pdfobj.c, pdfobj.h: Add support for ASCIIHex and ASCII85

Modified: trunk/Build/source/texk/dvipdfm-x/dpxfile.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/dpxfile.c	2019-05-02 22:54:42 UTC (rev 50952)
+++ trunk/Build/source/texk/dvipdfm-x/dpxfile.c	2019-05-02 23:09:47 UTC (rev 50953)
@@ -1,5 +1,5 @@
 /* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
-    Copyright (C) 2007-2018 by Jin-Hwan Cho and Shunsaku Hirata,
+    Copyright (C) 2007-2019 by Jin-Hwan Cho and Shunsaku Hirata,
     the dvipdfmx project team.
     
     Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks at kettering.edu>
@@ -159,6 +159,10 @@
 static char  _tmpbuf[PATH_MAX+1];
 #endif /* MIKTEX */
 
+#if defined(WIN32)
+extern int utf8name_failed;
+#endif /* WIN32 */
+
 static int exec_spawn (char *cmd)
 {
   char **cmdv, **qv;
@@ -240,15 +244,32 @@
   ret = _spawnvp(_P_WAIT, *cmdv, (const char* const*)cmdv); 
 #else
   cmdvw = xcalloc (i + 2, sizeof (wchar_t *));
-  qv = cmdv;
-  qvw = cmdvw;
-  while (*qv) {
-    *qvw = get_wstring_from_fsyscp(*qv, *qvw=NULL);
-    qv++;
-    qvw++;
+  if (utf8name_failed == 0) {
+    qv = cmdv;
+    qvw = cmdvw;
+    while (*qv) {
+      *qvw = get_wstring_from_fsyscp(*qv, *qvw=NULL);
+      qv++;
+      qvw++;
+    }
+    *qvw = NULL;
+    ret = _wspawnvp (_P_WAIT, *cmdvw, (const wchar_t* const*) cmdvw);
+  } else {
+    int tmpcp;
+    tmpcp = file_system_codepage;
+    file_system_codepage = win32_codepage;
+    qv = cmdv;
+    qvw = cmdvw;
+    while (*qv) {
+      *qvw = get_wstring_from_fsyscp(*qv, *qvw=NULL);
+      qv++;
+      qvw++;
+    }
+    *qvw = NULL;
+    file_system_codepage = tmpcp;
+    utf8name_failed = 0;
+    ret = _wspawnvp (_P_WAIT, *cmdvw, (const wchar_t* const*) cmdvw);
   }
-  *qvw = NULL;
-  ret = _wspawnvp (_P_WAIT, *cmdvw, (const wchar_t* const*) cmdvw);
   if (cmdvw) {
     qvw = cmdvw;
     while (*qvw) {
@@ -1242,3 +1263,21 @@
 
   return  r;
 }
+
+#if defined(WIN32)
+FILE *generic_fsyscp_fopen (const char *filename, const char *mode)
+{
+  FILE *f;
+
+  f = fsyscp_fopen (filename, mode);
+
+  if (f == NULL && file_system_codepage != win32_codepage) {
+    int tmpcp = file_system_codepage;
+    file_system_codepage = win32_codepage;
+    f = fsyscp_fopen (filename, mode);
+    file_system_codepage = tmpcp;
+  }
+
+  return f;
+}
+#endif /* WIN32 */

Modified: trunk/Build/source/texk/dvipdfm-x/mfileio.h
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/mfileio.h	2019-05-02 22:54:42 UTC (rev 50952)
+++ trunk/Build/source/texk/dvipdfm-x/mfileio.h	2019-05-02 23:09:47 UTC (rev 50953)
@@ -1,6 +1,6 @@
 /* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
 
-    Copyright (C) 2002-2016 by Jin-Hwan Cho and Shunsaku Hirata,
+    Copyright (C) 2002-2019 by Jin-Hwan Cho and Shunsaku Hirata,
     the dvipdfmx project team.
     
     Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks at kettering.edu>
@@ -36,7 +36,8 @@
    mfclose((file),__FUNCTION__,__LINE__)
 #else
 #if defined(WIN32)
-#define MFOPEN(name,mode) fsyscp_fopen((name),(mode))
+extern FILE *generic_fsyscp_fopen(const char *fname, const char *mode);
+#define MFOPEN(name,mode) generic_fsyscp_fopen((name),(mode))
 #else
 #define MFOPEN(name,mode) fopen((name),(mode))
 #endif

Modified: trunk/Build/source/texk/dvipdfm-x/pdfximage.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/pdfximage.c	2019-05-02 22:54:42 UTC (rev 50952)
+++ trunk/Build/source/texk/dvipdfm-x/pdfximage.c	2019-05-02 23:09:47 UTC (rev 50953)
@@ -1,6 +1,6 @@
 /* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
 
-    Copyright (C) 2007-2018 by Jin-Hwan Cho and Shunsaku Hirata,
+    Copyright (C) 2007-2019 by Jin-Hwan Cho and Shunsaku Hirata,
     the dvipdfmx project team.
     
     Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks at kettering.edu>
@@ -363,6 +363,10 @@
 #define dpx_fopen(n,m) (MFOPEN((n),(m)))
 #define dpx_fclose(f)  (MFCLOSE((f)))
 
+#if defined(WIN32)
+int utf8name_failed = 0;
+#endif /* WIN32 */
+
 int
 pdf_ximage_findresource (const char *ident, load_options options)
 {
@@ -394,8 +398,23 @@
     strcpy(fullname, f);
   } else {
     /* try loading image */
+#if defined(WIN32)
+    utf8name_failed = 0;
+#endif /* WIN32 */
     fullname = dpx_find_file(ident, "_pic_", "");
+#if defined(WIN32)
+    if (!fullname && file_system_codepage != win32_codepage) {
+      int tmpcp = file_system_codepage;
+      utf8name_failed = 1;
+      file_system_codepage = win32_codepage;
+      fullname = dpx_find_file(ident, "_pic_", "");
+      file_system_codepage = tmpcp;
+    }
+#endif /* WIN32 */
     if (!fullname) {
+#if defined(WIN32)
+      utf8name_failed = 0;
+#endif /* WIN32 */
       WARN("Error locating image file \"%s\"", ident);
       return  -1;
     }



More information about the tex-live-commits mailing list