]> source.dussan.org Git - tigervnc.git/commitdiff
Add more usage of SystemException
authorPierre Ossman <ossman@cendio.se>
Tue, 3 Sep 2024 07:10:14 +0000 (09:10 +0200)
committerPierre Ossman <ossman@cendio.se>
Wed, 4 Sep 2024 10:52:53 +0000 (12:52 +0200)
Prefer this exception for failures involving errno as it gives a better
error description.

common/rfb/SSecurityRSAAES.cxx
vncviewer/ServerDialog.cxx
vncviewer/UserDialog.cxx
vncviewer/parameters.cxx

index 5b3a04d2e69f7cde945d1f75c5c7483ad97bb162..92b332d6f85b81d3a51774868051f8128d1ae5fc 100644 (file)
@@ -24,6 +24,7 @@
 #error "This source should not be compiled without HAVE_NETTLE defined"
 #endif
 
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <assert.h>
@@ -155,7 +156,7 @@ void SSecurityRSAAES::loadPrivateKey()
 {
   FILE* file = fopen(keyFile, "rb");
   if (!file)
-    throw Exception("failed to open key file");
+    throw rdr::SystemException("failed to open key file", errno);
   fseek(file, 0, SEEK_END);
   size_t size = ftell(file);
   if (size == 0 || size > MaxKeyFileSize) {
@@ -166,7 +167,7 @@ void SSecurityRSAAES::loadPrivateKey()
   std::vector<uint8_t> data(size);
   if (fread(data.data(), 1, data.size(), file) != size) {
     fclose(file);
-    throw Exception("failed to read key");
+    throw rdr::SystemException("failed to read key", errno);
   }
   fclose(file);
 
index d51b871355a273f8016aa03a91ad47f338f052be..f9e3ffb3bbf2edec2de3d92a5ac33a758d833f25 100644 (file)
@@ -38,6 +38,7 @@
 #include <os/os.h>
 #include <rfb/Exception.h>
 #include <rfb/LogWriter.h>
+#include <rfb/util.h>
 
 #include "fltk/layout.h"
 #include "ServerDialog.h"
@@ -329,8 +330,8 @@ void ServerDialog::loadServerHistory()
       // no history file
       return;
     }
-    throw Exception(_("Could not open \"%s\": %s"),
-                    filepath, strerror(errno));
+    std::string msg = format(_("Could not open \"%s\""), filepath);
+    throw rdr::SystemException(msg.c_str(), errno);
   }
 
   int lineNr = 0;
@@ -344,8 +345,9 @@ void ServerDialog::loadServerHistory()
         break;
 
       fclose(f);
-      throw Exception(_("Failed to read line %d in file %s: %s"),
-                      lineNr, filepath, strerror(errno));
+      std::string msg = format(_("Failed to read line %d in "
+                                 "file \"%s\""), lineNr, filepath);
+      throw rdr::SystemException(msg.c_str(), errno);
     }
 
     int len = strlen(line);
@@ -390,9 +392,10 @@ void ServerDialog::saveServerHistory()
 
   /* Write server history to file */
   FILE* f = fopen(filepath, "w+");
-  if (!f)
-    throw Exception(_("Could not open \"%s\": %s"),
-                    filepath, strerror(errno));
+  if (!f) {
+    std::string msg = format(_("Could not open \"%s\""), filepath);
+    throw rdr::SystemException(msg.c_str(), errno);
+  }
 
   // Save the last X elements to the config file.
   for(size_t idx=0; idx < serverHistory.size() && idx <= SERVER_HISTORY_SIZE; idx++)
index 13821a9c54f022d979fc43a596cf20fcc2a0c595..6ea67d6decc156f6fe63cba4429bbf7bb003c93d 100644 (file)
@@ -21,6 +21,7 @@
 #endif
 
 #include <assert.h>
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -114,7 +115,7 @@ void UserDialog::getUserPasswd(bool secure_, std::string* user,
 
     fp = fopen(passwordFileName, "rb");
     if (!fp)
-      throw rfb::Exception(_("Opening password file failed"));
+      throw rdr::SystemException(_("Opening password file failed"), errno);
 
     obfPwd.resize(fread(obfPwd.data(), 1, obfPwd.size(), fp));
     fclose(fp);
index 2e8ad7a13569067b5ca4abf0482c7d75294a0135..e40391a2af2269b047947ec9da600e39143df260 100644 (file)
@@ -36,6 +36,7 @@
 #include <rfb/Exception.h>
 #include <rfb/LogWriter.h>
 #include <rfb/SecurityClient.h>
+#include <rfb/util.h>
 
 #include <FL/fl_utf8.h>
 
@@ -640,9 +641,10 @@ void saveViewerParameters(const char *filename, const char *servername) {
 
   /* Write parameters to file */
   FILE* f = fopen(filepath, "w+");
-  if (!f)
-    throw Exception(_("Could not open \"%s\": %s"),
-                    filepath, strerror(errno));
+  if (!f) {
+    std::string msg = format(_("Could not open \"%s\""), filepath);
+    throw rdr::SystemException(msg.c_str(), errno);
+  }
 
   fprintf(f, "%s\n", IDENTIFIER_STRING);
   fprintf(f, "\n");
@@ -747,8 +749,8 @@ char* loadViewerParameters(const char *filename) {
   if (!f) {
     if (!filename)
       return nullptr; // Use defaults.
-    throw Exception(_("Could not open \"%s\": %s"),
-                    filepath, strerror(errno));
+    std::string msg = format(_("Could not open \"%s\""), filepath);
+    throw rdr::SystemException(msg.c_str(), errno);
   }
   
   int lineNr = 0;
@@ -761,8 +763,9 @@ char* loadViewerParameters(const char *filename) {
         break;
 
       fclose(f);
-      throw Exception(_("Failed to read line %d in file %s: %s"),
-                      lineNr, filepath, strerror(errno));
+      std::string msg = format(_("Failed to read line %d in "
+                                 "file \"%s\""), lineNr, filepath);
+      throw rdr::SystemException(msg.c_str(), errno);
     }
 
     if (strlen(line) == (sizeof(line) - 1)) {