summaryrefslogtreecommitdiff
path: root/Build/source/texk/kpathsea/knj.c
diff options
context:
space:
mode:
authorTakuji Tanaka <ttk@t-lab.opal.ne.jp>2020-12-05 04:56:57 +0000
committerTakuji Tanaka <ttk@t-lab.opal.ne.jp>2020-12-05 04:56:57 +0000
commitfdfd72a0140c77f696caca8485d4ac50968f822c (patch)
tree94c6c47f8b3d0b0632eaa995caf0c69ad3f43400 /Build/source/texk/kpathsea/knj.c
parent1264a5c78919c58e6aab959da0c951d7921efac6 (diff)
kpathsea: Add win32_fprintf(), win32_perror() (Windows only)
git-svn-id: svn://tug.org/texlive/trunk@57072 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/kpathsea/knj.c')
-rw-r--r--Build/source/texk/kpathsea/knj.c55
1 files changed, 54 insertions, 1 deletions
diff --git a/Build/source/texk/kpathsea/knj.c b/Build/source/texk/kpathsea/knj.c
index 32d5885e8ea..6aed564ed9f 100644
--- a/Build/source/texk/kpathsea/knj.c
+++ b/Build/source/texk/kpathsea/knj.c
@@ -1,7 +1,7 @@
/* knj.c: check for 2-Byte Kanji (CP 932, SJIS) codes.
Copyright 2010, 2016, 2018 Akira Kakuto.
- Copyright 2013, 2016 TANAKA Takuji.
+ Copyright 2013, 2016, 2020 TANAKA Takuji.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -558,6 +558,23 @@ kpathsea_win32_vfprintf(kpathsea kpse, FILE *fp, const char *format, va_list arg
}
int
+kpathsea_win32_fprintf(kpathsea kpse, FILE *fp, const char *format, ...)
+{
+ int ret, count;
+ va_list argp;
+
+ count = 0;
+ va_start(argp, format);
+ ret = kpathsea_win32_vfprintf(kpse, fp, format, argp);
+ if (ret==EOF) {
+ return EOF;
+ }
+ count += ret;
+ va_end(argp);
+ return count;
+}
+
+int
kpathsea_win32_puts(kpathsea kpse, const char *str)
{
if (kpathsea_win32_fputs(kpse, str, stdout)==EOF) {
@@ -613,6 +630,19 @@ kpathsea_win32_putc(kpathsea kpse, int c, FILE *fp)
return c;
}
+void
+kpathsea_win32_perror(kpathsea kpse, const char *str)
+{
+ wchar_t *wstr;
+
+ if (kpse->File_system_codepage != CP_UTF8)
+ return perror(str);
+
+ wstr = get_wstring_from_utf8(str, wstr=NULL);
+ _wperror(wstr);
+ free(wstr);
+}
+
int
kpathsea_IS_KANJI(kpathsea kpse, const char *p)
{
@@ -710,6 +740,23 @@ win32_vfprintf(FILE *fp, const char *format, va_list argp)
}
int
+win32_fprintf(FILE *fp, const char *format, ...)
+{
+ int ret, count;
+ va_list argp;
+
+ count = 0;
+ va_start(argp, format);
+ ret = kpathsea_win32_vfprintf(kpse_def, fp, format, argp);
+ if (ret==EOF) {
+ return EOF;
+ }
+ count += ret;
+ va_end(argp);
+ return count;
+}
+
+int
win32_puts(const char *str)
{
return kpathsea_win32_puts(kpse_def, str);
@@ -721,6 +768,12 @@ win32_putc(int c, FILE *fp)
return kpathsea_win32_putc(kpse_def, c, fp);
}
+void
+win32_perror(const char *str)
+{
+ kpathsea_win32_perror(kpse_def, str);
+}
+
int
IS_KANJI(const char *p)
{