texlive[47973] Build/source/texk: pdfTeX: Allow non-ascii file names

commits+takuji at tug.org commits+takuji at tug.org
Sun Jun 10 08:12:42 CEST 2018


Revision: 47973
          http://tug.org/svn/texlive?view=revision&revision=47973
Author:   takuji
Date:     2018-06-10 08:12:41 +0200 (Sun, 10 Jun 2018)
Log Message:
-----------
pdfTeX: Allow non-ascii file names with UTF-8 source files (Windows only)

Modified Paths:
--------------
    trunk/Build/source/texk/kpathsea/ChangeLog
    trunk/Build/source/texk/kpathsea/Makefile.am
    trunk/Build/source/texk/kpathsea/Makefile.in
    trunk/Build/source/texk/kpathsea/knj.h
    trunk/Build/source/texk/kpathsea/kpsewhich.c
    trunk/Build/source/texk/kpathsea/progname.c
    trunk/Build/source/texk/kpathsea/types.h
    trunk/Build/source/texk/web2c/lib/ChangeLog
    trunk/Build/source/texk/web2c/lib/texmfmp.c
    trunk/Build/source/texk/web2c/pdftexdir/ChangeLog
    trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc
    trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc
    trunk/Build/source/texk/web2c/pdftexdir/ptexlib.h
    trunk/Build/source/texk/web2c/synctexdir/ChangeLog
    trunk/Build/source/texk/web2c/synctexdir/synctex.c

Modified: trunk/Build/source/texk/kpathsea/ChangeLog
===================================================================
--- trunk/Build/source/texk/kpathsea/ChangeLog	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/ChangeLog	2018-06-10 06:12:41 UTC (rev 47973)
@@ -1,3 +1,9 @@
+2018-06-10  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* progname.c, types.h, knj.h: Add a variable W32_codepage.
+	* kpsewhich.c: Allow Unicode file name for pdftex in kpsewhich.
+	(Windows only)
+
 2018-05-29  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	* kpsewhich.c: Revert. Since "command_line_encoding=utf8" is

Modified: trunk/Build/source/texk/kpathsea/Makefile.am
===================================================================
--- trunk/Build/source/texk/kpathsea/Makefile.am	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/Makefile.am	2018-06-10 06:12:41 UTC (rev 47973)
@@ -283,7 +283,7 @@
 if !WIN32
 	@for f in $(dist_noinst_SCRIPTS); do \
 	  if grep "original $$f --" "$(DESTDIR)$(bindir)/$$f" >/dev/null 2>&1; then \
-	    echo " rm\xA0-f '$(DESTDIR)$(bindir)/$$f'"; \
+	    echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
 	    rm -f "$(DESTDIR)$(bindir)/$$f"; \
 	  else :; fi; \
 	done
@@ -290,7 +290,7 @@
 endif !WIN32
 	@for f in $(dist_noinst_DATA); do \
 	  if grep "original $$f --" "$(DESTDIR)$(web2cdir)/$$f" >/dev/null 2>&1; then \
-	    echo " rm\xA0-f '$(DESTDIR)$(web2cdir)/$$f'"; \
+	    echo " rm -f '$(DESTDIR)$(web2cdir)/$$f'"; \
 	    rm -f "$(DESTDIR)$(web2cdir)/$$f"; \
 	  else :; fi; \
 	done

Modified: trunk/Build/source/texk/kpathsea/Makefile.in
===================================================================
--- trunk/Build/source/texk/kpathsea/Makefile.in	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/Makefile.in	2018-06-10 06:12:41 UTC (rev 47973)
@@ -2497,13 +2497,13 @@
 uninstall-local:
 @WIN32_FALSE@	@for f in $(dist_noinst_SCRIPTS); do \
 @WIN32_FALSE@	  if grep "original $$f --" "$(DESTDIR)$(bindir)/$$f" >/dev/null 2>&1; then \
- at WIN32_FALSE@	    echo " rm\xA0-f '$(DESTDIR)$(bindir)/$$f'"; \
+ at WIN32_FALSE@	    echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
 @WIN32_FALSE@	    rm -f "$(DESTDIR)$(bindir)/$$f"; \
 @WIN32_FALSE@	  else :; fi; \
 @WIN32_FALSE@	done
 	@for f in $(dist_noinst_DATA); do \
 	  if grep "original $$f --" "$(DESTDIR)$(web2cdir)/$$f" >/dev/null 2>&1; then \
-	    echo " rm\xA0-f '$(DESTDIR)$(web2cdir)/$$f'"; \
+	    echo " rm -f '$(DESTDIR)$(web2cdir)/$$f'"; \
 	    rm -f "$(DESTDIR)$(web2cdir)/$$f"; \
 	  else :; fi; \
 	done

Modified: trunk/Build/source/texk/kpathsea/knj.h
===================================================================
--- trunk/Build/source/texk/kpathsea/knj.h	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/knj.h	2018-06-10 06:12:41 UTC (rev 47973)
@@ -46,6 +46,7 @@
 #if defined (KPSE_COMPAT_API)
 #define is_cp932_system kpse_def->Is_cp932_system
 #define file_system_codepage kpse_def->File_system_codepage
+#define win32_codepage kpse_def->Win32_codepage
 
 extern KPSEDLL int isknj(int c);
 extern KPSEDLL int isknj2(int c);

Modified: trunk/Build/source/texk/kpathsea/kpsewhich.c
===================================================================
--- trunk/Build/source/texk/kpathsea/kpsewhich.c	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/kpsewhich.c	2018-06-10 06:12:41 UTC (rev 47973)
@@ -773,6 +773,7 @@
 #ifdef WIN32
   if(strstr(kpse->program_name,"xetex") || strstr(kpse->program_name,"xelatex")
      || strstr(kpse->program_name,"uptex") || strstr(kpse->program_name,"uplatex")
+     || strstr(kpse->program_name,"pdftex") || strstr(kpse->program_name,"pdflatex")
      || strstr(kpse->program_name,"dvipdfm") || strstr(kpse->program_name,"extractbb")
      || strstr(kpse->program_name,"xbb") || strstr(kpse->program_name,"ebb")
      || strstr(kpse->program_name,"dvips") || strstr(kpse->program_name,"upmendex"))

Modified: trunk/Build/source/texk/kpathsea/progname.c
===================================================================
--- trunk/Build/source/texk/kpathsea/progname.c	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/progname.c	2018-06-10 06:12:41 UTC (rev 47973)
@@ -496,7 +496,7 @@
 #if defined(WIN32)
   if (!kpse->File_system_codepage)
     kpse->File_system_codepage = AreFileApisANSI() ? GetACP() : GetOEMCP();
-  cp = kpse->File_system_codepage;
+  cp = kpse->Win32_codepage = kpse->File_system_codepage;
   if (cp == 932 || cp == 936 || cp == 950) {
     kpse->Is_cp932_system = cp;
   }

Modified: trunk/Build/source/texk/kpathsea/types.h
===================================================================
--- trunk/Build/source/texk/kpathsea/types.h	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/kpathsea/types.h	2018-06-10 06:12:41 UTC (rev 47973)
@@ -294,7 +294,7 @@
 #endif /* WIN32 && !__MINGW32__ */
 #if defined(WIN32)
     int Is_cp932_system;
-    int File_system_codepage;
+    int File_system_codepage, Win32_codepage;
     int getc_len;
     int getc_buff[4];
     wchar_t wcbuf;

Modified: trunk/Build/source/texk/web2c/lib/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/lib/ChangeLog	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/lib/ChangeLog	2018-06-10 06:12:41 UTC (rev 47973)
@@ -1,3 +1,8 @@
+2018-06-10  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* texmfmp.c: Allow non-ascii file names for pdfTeX
+	with UTF-8 source files (w32 only).
+
 2018-06-09  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* texmfmp.c, openclose.c: Support UTF-8 file names

Modified: trunk/Build/source/texk/web2c/lib/texmfmp.c
===================================================================
--- trunk/Build/source/texk/web2c/lib/texmfmp.c	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/lib/texmfmp.c	2018-06-10 06:12:41 UTC (rev 47973)
@@ -674,7 +674,7 @@
 maininit (int ac, string *av)
 {
   string main_input_file;
-#if (IS_upTeX || defined(XeTeX)) && defined(WIN32)
+#if (IS_upTeX || defined(XeTeX) || defined(pdfTeX)) && defined(WIN32)
   string enc;
 #endif
   /* Save to pass along to topenin.  */
@@ -703,10 +703,10 @@
   kpse_set_program_name (argv[0], NULL);
   initkanji ();
 #endif
-#if defined(XeTeX) && defined(WIN32)
+#if (defined(XeTeX) || defined(pdfTeX)) && defined(WIN32)
   kpse_set_program_name (argv[0], NULL);
 #endif
-#if (IS_upTeX || defined(XeTeX)) && defined(WIN32)
+#if (IS_upTeX || defined(XeTeX) || defined(pdfTeX)) && defined(WIN32)
   enc = kpse_var_value("command_line_encoding");
   get_command_line_args_utf8(enc, &argc, &argv);
 #endif
@@ -717,7 +717,7 @@
   /* If the user says --help or --version, we need to notice early.  And
      since we want the --ini option, have to do it before getting into
      the web (which would read the base file, etc.).  */
-#if ((IS_upTeX || defined(XeTeX)) && defined(WIN32)) || (IS_pTeX && !IS_upTeX && !defined(WIN32))
+#if ((IS_upTeX || defined(XeTeX) || defined(pdfTeX)) && defined(WIN32)) || (IS_pTeX && !IS_upTeX && !defined(WIN32))
   parse_options (argc, argv);
 #else
   parse_options (ac, av);
@@ -741,7 +741,7 @@
   /* Do this early so we can inspect kpse_invocation_name and
      kpse_program_name below, and because we have to do this before
      any path searching.  */
-#if IS_pTeX || (defined(XeTeX) && defined(WIN32))
+#if IS_pTeX || ((defined(XeTeX) || defined(pdfTeX)) && defined(WIN32))
   if (user_progname)
     kpse_reset_program_name (user_progname);
 #else

Modified: trunk/Build/source/texk/web2c/pdftexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/ChangeLog	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/pdftexdir/ChangeLog	2018-06-10 06:12:41 UTC (rev 47973)
@@ -1,3 +1,10 @@
+2018-06-10  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* ptexlib.h, pdftoepdf.cc, pdftoepdf-newpoppler.cc:
+	Allow non-ascii file names for pdfTeX with UTF-8 source files
+	(w32 only). The function is enabled by setting
+	'command_line_encoding=utf-8' in texmf.cnf.
+
 2018-05-29  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	* ptexlib.h: Discard the changes on 2018-05-11, since

Modified: trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc	2018-06-10 06:12:41 UTC (rev 47973)
@@ -147,6 +147,15 @@
 static PdfDocument *find_add_document(char *file_name)
 {
     PdfDocument *p = pdfDocuments;
+#ifdef _WIN32
+    wchar_t *fnamew;
+    if (file_system_codepage == CP_UTF8 && win32_codepage != CP_UTF8) {
+        fnamew = get_wstring_from_mbstring(CP_UTF8, file_name, fnamew=NULL);
+        xfree(file_name);
+        file_name = get_mbstring_from_wstring(win32_codepage, fnamew, file_name=NULL);
+        xfree(fnamew);
+    }
+#endif
     while (p && strcmp(p->file_name, file_name) != 0)
         p = p->next;
     if (p) {

Modified: trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/pdftexdir/pdftoepdf.cc	2018-06-10 06:12:41 UTC (rev 47973)
@@ -166,6 +166,15 @@
 static PdfDocument *find_add_document(char *file_name)
 {
     PdfDocument *p = pdfDocuments;
+#ifdef _WIN32
+    wchar_t *fnamew;
+    if (file_system_codepage == CP_UTF8 && win32_codepage != CP_UTF8) {
+        fnamew = get_wstring_from_mbstring(CP_UTF8, file_name, fnamew=NULL);
+        xfree(file_name);
+        file_name = get_mbstring_from_wstring(win32_codepage, fnamew, file_name=NULL);
+        xfree(fnamew);
+    }
+#endif
     while (p && strcmp(p->file_name, file_name) != 0)
         p = p->next;
     if (p) {

Modified: trunk/Build/source/texk/web2c/pdftexdir/ptexlib.h
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/ptexlib.h	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/pdftexdir/ptexlib.h	2018-06-10 06:12:41 UTC (rev 47973)
@@ -20,6 +20,13 @@
 #ifndef PDFTEXLIB
 #  define PDFTEXLIB
 
+#ifdef _WIN32
+#undef fopen
+#undef xfopen
+#define fopen fsyscp_fopen
+#define xfopen fsyscp_xfopen
+#endif
+
 /* WEB2C macros and prototypes */
 #  if !defined(PDFTEXCOERCE) && !defined(PDFETEXCOERCE)
 #    ifdef pdfTeX

Modified: trunk/Build/source/texk/web2c/synctexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/synctexdir/ChangeLog	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/synctexdir/ChangeLog	2018-06-10 06:12:41 UTC (rev 47973)
@@ -1,3 +1,8 @@
+2018-06-10  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
+
+	* synctex.c: Allow non-ascii file names for pdfTeX
+	with UTF-8 source files (w32 only).
+
 2018-05-29  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	* synctex.c: Discard the changes on 2018-05-11, since

Modified: trunk/Build/source/texk/web2c/synctexdir/synctex.c
===================================================================
--- trunk/Build/source/texk/web2c/synctexdir/synctex.c	2018-06-10 02:08:37 UTC (rev 47972)
+++ trunk/Build/source/texk/web2c/synctexdir/synctex.c	2018-06-10 06:12:41 UTC (rev 47973)
@@ -292,7 +292,7 @@
 #       define SYNCTEX_OFFSET_IS_PDF 0
 #   endif
 
-#if defined(_WIN32) && (defined(upTeX) || defined(eupTeX) || defined(XeTeX))
+#if defined(_WIN32) && (defined(pdfTeX) || defined(upTeX) || defined(eupTeX) || defined(XeTeX))
 #define W32UPTEXSYNCTEX 1
 #include <wchar.h>
 static char *chgto_oem(char *src);



More information about the tex-live-commits mailing list