]> source.dussan.org Git - tigervnc.git/commitdiff
Get Unicode Windows error strings
authorPierre Ossman <ossman@cendio.se>
Tue, 10 Sep 2024 18:51:02 +0000 (20:51 +0200)
committerPierre Ossman <ossman@cendio.se>
Wed, 6 Nov 2024 20:00:18 +0000 (21:00 +0100)
These seem to always be in ASCII and English, unfortunately, but let's
at least use the API the could give use something more useful.

common/rdr/Exception.cxx

index 6a03fa540a04fd91562b3ca71787336605d2b4bb..4c99d9774830eb1efc11bafd306f10d1750d8021 100644 (file)
@@ -1,6 +1,7 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
  * Copyright (C) 2004 Red Hat Inc.
  * Copyright (C) 2010 TigerVNC Team
+ * Copyright 2014-2024 Pierre Ossman for Cendio AB
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -80,7 +81,15 @@ PosixException::PosixException(const char* s, int err_)
   : Exception("%s", s), err(err_)
 {
   strncat(str_, ": ", len-1-strlen(str_));
+#ifdef _WIN32
+  wchar_t *currStr = new wchar_t[len-strlen(str_)];
+  wcsncpy(currStr, _wcserror(err), len-1-strlen(str_));
+  WideCharToMultiByte(CP_UTF8, 0, currStr, -1, str_+strlen(str_),
+                      len-1-strlen(str_), nullptr, nullptr);
+  delete [] currStr;
+#else
   strncat(str_, strerror(err), len-1-strlen(str_));
+#endif
   strncat(str_, " (", len-1-strlen(str_));
   char buf[20];
     sprintf(buf,"%d",err);