texlive[49075] Build/source/texk/web2c/lib: cleanup for non-ascii

commits+kakuto at tug.org commits+kakuto at tug.org
Sun Nov 4 07:58:24 CET 2018


Revision: 49075
          http://tug.org/svn/texlive?view=revision&revision=49075
Author:   kakuto
Date:     2018-11-04 07:58:24 +0100 (Sun, 04 Nov 2018)
Log Message:
-----------
cleanup for non-ascii file names (w32 only)

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/lib/ChangeLog
    trunk/Build/source/texk/web2c/lib/openclose.c

Modified: trunk/Build/source/texk/web2c/lib/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/lib/ChangeLog	2018-11-04 04:53:47 UTC (rev 49074)
+++ trunk/Build/source/texk/web2c/lib/ChangeLog	2018-11-04 06:58:24 UTC (rev 49075)
@@ -1,3 +1,7 @@
+2018-11-04  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	* openclose.c: cleanup for non-ascii file names (w32 only)
+
 2018-06-28  Karl Berry  <karl at freefriends.org>
 
 	* openclose.c (open_input_with_dirname): do not prepend the

Modified: trunk/Build/source/texk/web2c/lib/openclose.c
===================================================================
--- trunk/Build/source/texk/web2c/lib/openclose.c	2018-11-04 04:53:47 UTC (rev 49074)
+++ trunk/Build/source/texk/web2c/lib/openclose.c	2018-11-04 06:58:24 UTC (rev 49075)
@@ -12,12 +12,59 @@
 #include <ptexenc/ptexenc.h>
 #endif
 
-#ifdef WIN32
+#ifdef _WIN32
+static int fsyscp_remove(char *s)
+{
+  wchar_t *sw = NULL;
+  int ret;
+
+  if(!file_system_codepage)
+    return remove(s);
+
+  sw = get_wstring_from_fsyscp(s, sw);
+  ret = _wremove(sw);
+  if(sw) free(sw);
+  return ret;
+}
+
+static int fsyscp_rename(char *s1, char *s2)
+{
+  wchar_t *sw1 = NULL, *sw2 = NULL;
+  int ret;
+
+  if(!file_system_codepage)
+    return rename(s1, s2);
+
+  sw1 = get_wstring_from_fsyscp(s1, sw1);
+  sw2 = get_wstring_from_fsyscp(s2, sw2);
+  ret = _wrename(sw1, sw2);
+  if(sw1) free(sw1);
+  if(sw2) free(sw2);
+  return ret;
+}
+
+static FILE *f_fsyscp_fopen(const char *filename, const char *mode)
+{
+  if(!file_system_codepage)
+    return fopen(filename, mode);
+
+  return fsyscp_fopen(filename, mode);
+}
+
+static FILE *f_fsyscp_xfopen(const char *filename, const char *mode)
+{
+  if(!file_system_codepage)
+    return xfopen(filename, mode);
+
+  return fsyscp_xfopen(filename, mode);
+}
 #undef fopen
 #undef xfopen
-#define fopen fsyscp_fopen
-#define xfopen fsyscp_xfopen
-#endif
+#define fopen f_fsyscp_fopen
+#define xfopen f_fsyscp_xfopen
+#define rename fsyscp_rename
+#define remove fsyscp_remove
+#endif /* _WIN32 */
 
 /* The globals we use to communicate.  */
 extern string nameoffile;
@@ -87,9 +134,9 @@
      return;
 
    /* On windows, an opened file cannot be renamed. */
-#if defined(WIN32)
+#if defined(_WIN32)
    fclose (recorder_file);
-#endif
+#endif /* _WIN32 */
 
    /* If an output directory was specified, use it.  */
    if (output_directory) {
@@ -98,9 +145,9 @@
    }
 
    /* On windows, renaming fails if a file with new_name exists. */
-#if defined(WIN32)
+#if defined(_WIN32)
    remove (new_name);
-#endif
+#endif /* _WIN32 */
 
    rename(recorder_name, new_name);
    free(recorder_name);
@@ -107,9 +154,9 @@
    recorder_name = xstrdup(new_name);
 
    /* reopen the recorder file by FOPEN_A_MODE. */
-#if defined(WIN32)
-   recorder_file = fsyscp_xfopen (recorder_name, FOPEN_A_MODE);
-#endif
+#if defined(_WIN32)
+   recorder_file = xfopen (recorder_name, FOPEN_A_MODE);
+#endif /* _WIN32 */
 
    if (temp)
      free (temp);



More information about the tex-live-commits mailing list