diff -ur lcdf-typetools-2.108/liblcdf/filename.cc lcdf-typetools-src/liblcdf/filename.cc --- lcdf-typetools-2.108/liblcdf/filename.cc Mon Jan 28 03:39:19 2019 +++ lcdf-typetools-src/liblcdf/filename.cc Thu Jan 31 06:16:24 2019 @@ -126,5 +126,5 @@ if (_actual || !_path) return _actual; else - return fopen(_path.c_str(), binary ? "wb" : "w"); + return fopen(_path.c_str(), "wb"); } diff -ur lcdf-typetools-2.108/otftotfm/automatic.cc lcdf-typetools-src/otftotfm/automatic.cc --- lcdf-typetools-2.108/otftotfm/automatic.cc Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/otftotfm/automatic.cc Thu Jan 31 06:35:14 2019 @@ -39,7 +39,9 @@ #include #ifdef WIN32 -# define mkdir(dir, access) mkdir(dir) +# include +# include +# define mkdir(dir, access) _mkdir(dir) # define COPY_CMD "copy" # define CMD_SEP "&" #else @@ -124,7 +126,18 @@ static void find_writable_texdir(ErrorHandler *errh, const char *) { +#if defined(W32TEX) +// W32TeX does not have TEXMFVAR + char *p = kpsei_var_value("TEXMFVAR"); + if (p == NULL) // W32TeX + look_for_writable_texdir("$TEXMFLOCAL", true); + else { // TeXLive + free (p); + look_for_writable_texdir("$TEXMFVAR", true); + } +#else look_for_writable_texdir("$TEXMFVAR", true); +#endif if (!writable_texdir) look_for_writable_texdir("$VARTEXMF", false); if (!writable_texdir) @@ -313,7 +326,7 @@ String ls_r = writable_texdir + "ls-R"; bool success = false; if (access(ls_r.c_str(), R_OK) >= 0) // make sure it already exists - if (FILE *f = fopen(ls_r.c_str(), "a")) { + if (FILE *f = fopen(ls_r.c_str(), "ab")) { fprintf(f, "./%s:\n%s\n", directory.c_str(), file.c_str()); success = true; fclose(f); @@ -323,7 +336,11 @@ if (!success && writable_texdir.find_left('\'') < 0 && directory.find_left('\'') < 0 && file.find_left('\'') < 0) { // look for mktexupd script if (!mktexupd_tried) { +#ifdef _WIN32 + mktexupd = "mktexupd.exe"; +#else mktexupd = kpsei_string(kpsei_find_file("mktexupd", KPSEI_FMT_WEB2C)); +#endif mktexupd_tried = true; } @@ -677,7 +694,7 @@ #endif { fclose(f); - f = fopen(map_file.c_str(), "w"); + f = fopen(map_file.c_str(), "wb"); fd = fileno(f); } diff -ur lcdf-typetools-2.108/otftotfm/kpseinterface.c lcdf-typetools-src/otftotfm/kpseinterface.c --- lcdf-typetools-2.108/otftotfm/kpseinterface.c Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/otftotfm/kpseinterface.c Thu Jan 31 06:37:34 2019 @@ -21,6 +21,9 @@ #include #include #include +#ifdef W32TEX +#include +#endif #include "kpseinterface.h" int kpsei_env_sep_char = ENV_SEP; @@ -86,3 +89,11 @@ { kpathsea_debug = flags; } + +#ifdef W32TEX +char* +kpsei_var_value(const char *name) +{ + return kpse_var_value(name); +} +#endif diff -ur lcdf-typetools-2.108/otftotfm/kpseinterface.h lcdf-typetools-src/otftotfm/kpseinterface.h --- lcdf-typetools-2.108/otftotfm/kpseinterface.h Thu Jun 23 21:25:52 2016 +++ lcdf-typetools-src/otftotfm/kpseinterface.h Thu Jan 31 06:38:40 2019 @@ -13,6 +13,10 @@ char* kpsei_find_file(const char* name, int format); void kpsei_set_debug_flags(unsigned flags); +#ifdef W32TEX +char* kpsei_var_value(const char *name); +#endif + #ifdef __cplusplus } #endif diff -ur lcdf-typetools-2.108/otftotfm/otftotfm.cc lcdf-typetools-src/otftotfm/otftotfm.cc --- lcdf-typetools-2.108/otftotfm/otftotfm.cc Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/otftotfm/otftotfm.cc Thu Jan 31 06:40:59 2019 @@ -63,6 +63,9 @@ #ifdef HAVE_FCNTL_H # include #endif +#ifdef _MSC_VER +# include +#endif using namespace Efont; @@ -590,7 +593,7 @@ if (verbose) errh->message("creating %s", filename.c_str()); - FILE *f = fopen(filename.c_str(), "w"); + FILE *f = fopen(filename.c_str(), "wb"); if (!f) { errh->error("%s: %s", filename.c_str(), strerror(errno)); return; @@ -1048,7 +1051,7 @@ #endif { fclose(f); - f = fopen(filename.c_str(), "w"); + f = fopen(filename.c_str(), "wb"); fd = fileno(f); } diff -ur lcdf-typetools-2.108/t1dotlessj/t1dotlessj.cc lcdf-typetools-src/t1dotlessj/t1dotlessj.cc --- lcdf-typetools-2.108/t1dotlessj/t1dotlessj.cc Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/t1dotlessj/t1dotlessj.cc Thu Jan 31 06:43:35 2019 @@ -410,10 +410,10 @@ // write it to output if (!outputf) outputf = stdout; - if (binary) { #if defined(_MSDOS) || defined(_WIN32) - _setmode(_fileno(outputf), _O_BINARY); + _setmode(_fileno(outputf), _O_BINARY); #endif + if (binary) { Type1PFBWriter w(outputf); dotless_font->write(w); } else { diff -ur lcdf-typetools-2.108/t1rawafm/t1rawafm.cc lcdf-typetools-src/t1rawafm/t1rawafm.cc --- lcdf-typetools-2.108/t1rawafm/t1rawafm.cc Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/t1rawafm/t1rawafm.cc Thu Jan 31 06:44:47 2019 @@ -359,6 +359,9 @@ if (!outf) errh->fatal("%s: %s", output_file, strerror(errno)); } +#if defined(_MSDOS) || defined(_WIN32) + _setmode(_fileno(outf), _O_BINARY); +#endif write_afm(outf, font); diff -ur lcdf-typetools-2.108/t1reencode/t1reencode.cc lcdf-typetools-src/t1reencode/t1reencode.cc --- lcdf-typetools-2.108/t1reencode/t1reencode.cc Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/t1reencode/t1reencode.cc Thu Jan 31 06:46:38 2019 @@ -1094,10 +1094,10 @@ if (!outf) errh->fatal("%s: %s", output_file, strerror(errno)); } - if (binary) { #if defined(_MSDOS) || defined(_WIN32) - _setmode(_fileno(outf), _O_BINARY); + _setmode(_fileno(outf), _O_BINARY); #endif + if (binary) { Type1PFBWriter w(outf); font->write(w); } else { diff -ur lcdf-typetools-2.108/t1testpage/t1testpage.cc lcdf-typetools-src/t1testpage/t1testpage.cc --- lcdf-typetools-2.108/t1testpage/t1testpage.cc Mon Jan 28 03:39:20 2019 +++ lcdf-typetools-src/t1testpage/t1testpage.cc Thu Jan 31 06:47:51 2019 @@ -665,6 +665,9 @@ if (!outf) errh->fatal("%s: %s", output_file, strerror(errno)); } +#if defined(_MSDOS) || defined(_WIN32) + _setmode(_fileno(outf), _O_BINARY); +#endif //font->undo_synthetic();