diff options
Diffstat (limited to 'vncviewer/vncviewer.cxx')
-rw-r--r-- | vncviewer/vncviewer.cxx | 33 |
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__) |