]> source.dussan.org Git - tigervnc.git/commitdiff
Merge branch 'unix' of https://github.com/CendioOssman/tigervnc
authorPierre Ossman <ossman@cendio.se>
Tue, 29 May 2018 14:46:19 +0000 (16:46 +0200)
committerPierre Ossman <ossman@cendio.se>
Tue, 29 May 2018 14:50:55 +0000 (16:50 +0200)
1  2 
vncviewer/vncviewer.cxx

index e305d798b06b3f3caf4d18304e752256150ee478,f22648d4f734a59bf8c1348c181f5982942fb919..6c0c7384cae2edb360628b62829603a6cb8052fb
@@@ -369,28 -368,6 +369,40 @@@ static void usage(const char *programNa
    exit(1);
  }
  
 +static void
 +potentiallyLoadConfigurationFile(char *vncServerName)
 +{
 +  const bool hasPathSeparator = (strchr(vncServerName, '/') != NULL ||
 +                                 (strchr(vncServerName, '\\')) != NULL);
 +
 +  if (hasPathSeparator) {
++#ifndef WIN32
++    struct stat sb;
++
++    // This might be a UNIX socket, we need to check
++    if (stat(vncServerName, &sb) == -1) {
++      // Some access problem; let loadViewerParameters() deal with it...
++    } else {
++      if ((sb.st_mode & S_IFMT) == S_IFSOCK)
++        return;
++    }
++#endif
++
 +    try {
 +      const char* newServerName;
 +      newServerName = loadViewerParameters(vncServerName);
 +      // This might be empty, but we still need to clear it so we
 +      // don't try to connect to the filename
 +      strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
 +    } 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)