cURL-build-win32/patch/curl_tool_parsecfg.diff

72 lines
2.4 KiB
Diff
Raw Normal View History

2021-06-09 19:47:18 +02:00
diff --git "a/D:\\_Sandbox\\curl\\curl-src\\src\\tool_parsecfg.c.orig" "b/D:\\_Sandbox\\curl\\curl-src\\src\\tool_parsecfg.c"
index d26774f..ab1d28f 100644
2021-06-09 16:54:23 +02:00
--- "a/src/tool_parsecfg.c"
+++ "b/src/tool_parsecfg.c"
2021-06-09 19:47:18 +02:00
@@ -47,28 +47,39 @@ static bool my_get_line(FILE *fp, struct curlx_dynbuf *, bool *error);
2021-06-09 16:11:19 +02:00
#ifdef WIN32
static FILE *execpath(const char *filename)
{
- char filebuffer[512];
2021-06-09 19:47:18 +02:00
- /* Get the filename of our executable. GetModuleFileName is already declared
2021-06-09 16:11:19 +02:00
- * via inclusions done in setup header file. We assume that we are using
- * the ASCII version here.
2021-06-09 19:47:18 +02:00
- */
2021-06-09 16:11:19 +02:00
- unsigned long len = GetModuleFileNameA(0, filebuffer, sizeof(filebuffer));
- if(len > 0 && len < sizeof(filebuffer)) {
- /* We got a valid filename - get the directory part */
2021-06-09 19:47:18 +02:00
+ static const size_t BUFFSIZE = 512;
+ FILE *file = NULL;
+ TCHAR filebuffer[BUFFSIZE];
+
+ unsigned long len = GetModuleFileName(0, filebuffer, BUFFSIZE);
+ if(len > 0 && len < BUFFSIZE) {
+#ifdef UNICODE
2021-06-09 20:10:16 +02:00
+ char *exedir_utf8 = curlx_convert_wchar_to_UTF8(filebuffer);
+ if (exedir_utf8) {
+ char *lastdirchar = strrchr(exedir_utf8, '\\');
2021-06-09 19:47:18 +02:00
+ if(lastdirchar) {
+ *lastdirchar = '\0';
+ }
2021-06-09 20:10:16 +02:00
+ char *full_path = curl_maprintf("%s%s%s", exedir_utf8, DIR_CHAR, filename);
2021-06-09 19:47:18 +02:00
+ if (full_path) {
+ file = fopen(full_path, FOPEN_READTEXT);
+ free(full_path);
+ }
2021-06-09 20:10:16 +02:00
+ free(exedir_utf8);
2021-06-09 19:47:18 +02:00
+ }
+#else
char *lastdirchar = strrchr(filebuffer, '\\');
if(lastdirchar) {
2021-06-09 16:11:19 +02:00
- size_t remaining;
- *lastdirchar = 0;
- /* If we have enough space, build the RC filename */
- remaining = sizeof(filebuffer) - strlen(filebuffer);
- if(strlen(filename) < remaining - 1) {
- msnprintf(lastdirchar, remaining, "%s%s", DIR_CHAR, filename);
- return fopen(filebuffer, FOPEN_READTEXT);
2021-06-09 19:47:18 +02:00
- }
+ *lastdirchar = '\0';
+ }
+ char *full_path = curl_maprintf("%s%s%s", filebuffer, DIR_CHAR, filename);
+ if (full_path) {
+ file = fopen(full_path, FOPEN_READTEXT);
+ free(full_path);
2021-06-09 16:11:19 +02:00
}
2021-06-09 19:47:18 +02:00
+#endif
2021-06-09 16:11:19 +02:00
}
2021-06-09 19:47:18 +02:00
-
2021-06-09 16:11:19 +02:00
- return NULL;
+ return file;
}
#endif
2021-06-09 19:47:18 +02:00
@@ -85,7 +96,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
2021-06-08 22:24:45 +02:00
if(!filename || !*filename) {
/* NULL or no file name attempts to load .curlrc from the homedir! */
- char *home = homedir(".curlrc");
+ char *home = NULL; /* homedir(".curlrc"); */
#ifndef WIN32
if(home) {
pathalloc = curl_maprintf("%s%s.curlrc", home, DIR_CHAR);