src/tool_parsecfg.c | 42 ++++++++++++++++--------------------------
 1 file changed, 16 insertions(+), 26 deletions(-)

diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c
index 6da5a9250..e6f7ad786 100644
--- a/src/tool_parsecfg.c
+++ b/src/tool_parsecfg.c
@@ -45,29 +45,20 @@ static const char *unslashquote(const char *line, char *param);
 static bool my_get_line(FILE *fp, struct curlx_dynbuf *, bool *error);
 
 #ifdef _WIN32
-static FILE *execpath(const char *filename, char **pathp)
+static FILE *execpath(const TCHAR *filename)
 {
-  static char filebuffer[512];
-  /* Get the filename of our executable. GetModuleFileName is already declared
-   * via inclusions done in setup header file. We assume that we are using
-   * the ASCII version here.
-   */
-  unsigned long len = GetModuleFileNameA(0, filebuffer, sizeof(filebuffer));
-  if(len > 0 && len < sizeof(filebuffer)) {
-    /* We got a valid filename - get the directory part */
-    char *lastdirchar = strrchr(filebuffer, '\\');
+  static const size_t BUFFSIZE = 512;
+  TCHAR filebuffer[BUFFSIZE];
+  unsigned long len = GetModuleFileName(0, filebuffer, BUFFSIZE);
+  if((len > 0) && (len < BUFFSIZE)) {
+    TCHAR *lastdirchar = _tcsrchr(filebuffer, TEXT('\\'));
     if(lastdirchar) {
-      size_t remaining;
-      *lastdirchar = 0;
-      /* If we have enough space, build the RC filename */
-      remaining = sizeof(filebuffer) - strlen(filebuffer);
-      if(strlen(filename) < remaining - 1) {
-        FILE *f;
-        msnprintf(lastdirchar, remaining, "%s%s", DIR_CHAR, filename);
-        *pathp = filebuffer;
-        f = fopen(filebuffer, FOPEN_READTEXT);
-        return f;
-      }
+      *lastdirchar = TEXT('\0');
+    }
+    if (_tcslen(filebuffer) + _tcslen(filename) + 2U < BUFFSIZE) {
+      _tcscat(filebuffer, TEXT("\\"));
+      _tcscat(filebuffer, filename);
+      return _tfopen(filebuffer, TEXT(FOPEN_READTEXT));
     }
   }
 
@@ -87,7 +78,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
 
   if(!filename) {
     /* NULL means load .curlrc from homedir! */
-    char *curlrc = findfile(".curlrc", CURLRC_DOTSCORE);
+    char *curlrc = NULL; /* findfile(".curlrc", CURLRC_DOTSCORE); */
     if(curlrc) {
       file = fopen(curlrc, FOPEN_READTEXT);
       if(!file) {
@@ -98,14 +89,13 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
     }
 #ifdef _WIN32 /* Windows */
     else {
-      char *fullp;
       /* check for .curlrc then _curlrc in the dir of the executable */
-      file = execpath(".curlrc", &fullp);
+      file = execpath(TEXT(".curlrc") /*,&fullp*/);
       if(!file)
-        file = execpath("_curlrc", &fullp);
+        file = execpath(TEXT("_curlrc") /*,&fullp*/);
       if(file)
         /* this is the filename we read from */
-        filename = fullp;
+        filename = ".curlrc";
     }
 #endif
   }