|
|
|
@ -35,12 +35,15 @@ |
|
|
|
|
|
|
|
|
|
#ifdef GPR_WIN32 |
|
|
|
|
|
|
|
|
|
#include <stdio.h> |
|
|
|
|
#include <stdarg.h> |
|
|
|
|
|
|
|
|
|
#include <grpc/support/alloc.h> |
|
|
|
|
#include <grpc/support/log_win32.h> |
|
|
|
|
#include <grpc/support/log.h> |
|
|
|
|
#include <grpc/support/alloc.h> |
|
|
|
|
#include <grpc/support/time.h> |
|
|
|
|
#include <stdio.h> |
|
|
|
|
#include <stdarg.h> |
|
|
|
|
|
|
|
|
|
#include "src/core/support/string_win32.h" |
|
|
|
|
|
|
|
|
|
void gpr_log(const char *file, int line, gpr_log_severity severity, |
|
|
|
|
const char *format, ...) { |
|
|
|
@ -93,25 +96,6 @@ void gpr_default_log(gpr_log_func_args *args) { |
|
|
|
|
args->file, args->line, args->message); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Arguable, this could become a public function. But hardly
|
|
|
|
|
* anything beside the Windows implementation should use |
|
|
|
|
* it, so, never mind...*/ |
|
|
|
|
#if defined UNICODE || defined _UNICODE |
|
|
|
|
static char *tchar_to_char(LPWSTR input) { |
|
|
|
|
char *ret; |
|
|
|
|
int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL); |
|
|
|
|
if (needed == 0) return NULL; |
|
|
|
|
ret = gpr_malloc(needed + 1); |
|
|
|
|
WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL); |
|
|
|
|
ret[needed] = 0; |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
#else |
|
|
|
|
static char *tchar_to_char(LPSTR input) { |
|
|
|
|
return gpr_strdup(input); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
char *gpr_format_message(DWORD messageid) { |
|
|
|
|
LPTSTR tmessage; |
|
|
|
|
char *message; |
|
|
|
@ -121,7 +105,7 @@ char *gpr_format_message(DWORD messageid) { |
|
|
|
|
NULL, messageid, |
|
|
|
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
|
|
|
|
(LPTSTR)(&tmessage), 0, NULL); |
|
|
|
|
message = tchar_to_char(tmessage); |
|
|
|
|
message = gpr_tchar_to_char(tmessage); |
|
|
|
|
LocalFree(tmessage); |
|
|
|
|
return message; |
|
|
|
|
} |
|
|
|
|