aboutsummaryrefslogtreecommitdiffstats
path: root/vncviewer/vncviewer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vncviewer/vncviewer.cxx')
-rw-r--r--vncviewer/vncviewer.cxx33
1 files changed, 31 insertions, 2 deletions
diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
index 413260d9..fabd665a 100644
--- a/vncviewer/vncviewer.cxx
+++ b/vncviewer/vncviewer.cxx
@@ -349,8 +349,9 @@ static void usage(const char *programName)
fprintf(stderr,
"\nusage: %s [parameters] [host:displayNum] [parameters]\n"
- " %s [parameters] -listen [port] [parameters]\n",
- programName, programName);
+ " %s [parameters] -listen [port] [parameters]\n"
+ " %s [parameters] [.tigervnc file]\n",
+ programName, programName, programName);
fprintf(stderr,"\n"
"Parameters can be turned on with -<param> or off with -<param>=0\n"
"Parameters which take a value can be specified as "
@@ -368,6 +369,31 @@ static void usage(const char *programName)
exit(1);
}
+static void
+potentiallyLoadConfigurationFile(char *vncServerName)
+{
+ const bool hasPathSeparator = (strchr(vncServerName, '/') != NULL ||
+ (strchr(vncServerName, '\\')) != NULL);
+
+ if (hasPathSeparator) {
+ try {
+ strncpy(vncServerName, loadViewerParameters(vncServerName),
+ VNCSERVERNAMELEN);
+ if (vncServerName[0] == '\0') {
+ vlog.error("Unable to load the server name from given file");
+ if (alertOnFatalError)
+ fl_alert("Unable to load the server name from given file");
+ exit(EXIT_FAILURE);
+ }
+ } catch (rfb::Exception& e) {
+ vlog.error("%s", e.str());
+ if (alertOnFatalError)
+ fl_alert("%s", e.str());
+ exit(EXIT_FAILURE);
+ }
+ }
+}
+
#ifndef WIN32
static int
interpretViaParam(char *remoteHost, int *remotePort, int localPort)
@@ -516,6 +542,9 @@ int main(int argc, char** argv)
i++;
}
+ // Check if the server name in reality is a configuration file
+ potentiallyLoadConfigurationFile(vncServerName);
+
mkvnchomedir();
#if !defined(WIN32) && !defined(__APPLE__)