]> source.dussan.org Git - tigervnc.git/commitdiff
[Development] Rename function "gethomedir" to "getvnchomedir" and rewrite it in
authorAdam Tkac <atkac@redhat.com>
Mon, 7 Feb 2011 10:45:15 +0000 (10:45 +0000)
committerAdam Tkac <atkac@redhat.com>
Mon, 7 Feb 2011 10:45:15 +0000 (10:45 +0000)
platform-intependent manner.

Thanks to Guillaume Destuynder.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4252 3789f03b-4d11-0410-bbf8-ca57d06f2519

common/os/os.cxx
common/os/os.h
common/rfb/CSecurityTLS.cxx
unix/vncpasswd/vncpasswd.cxx
unix/vncviewer/vncviewer.cxx

index fb07dcf65ca0c9b2d68c30990ddd3d21e3e1de92..c08b57289c46adef28511779e008a48022b138ca 100644 (file)
@@ -36,7 +36,7 @@
 #include <shlobj.h>
 #endif
 
-int gethomedir(char **dirp)
+int getvnchomedir(char **dirp)
 {
 #ifndef WIN32
        char *homedir, *dir;
@@ -62,12 +62,13 @@ int gethomedir(char **dirp)
                homedir = passwd->pw_dir;
        }
 
-       len = strlen(homedir) + 1;
-       dir = new char[len];
+       len = strlen(homedir);
+       dir = new char[len+7];
        if (dir == NULL)
                return -1;
 
        memcpy(dir, homedir, len);
+       memcpy(dir + len, "/.vnc/\0", 7);
 #else
        dir = new TCHAR[MAX_PATH];
        if (dir == NULL)
@@ -78,10 +79,8 @@ int gethomedir(char **dirp)
                delete [] dir;
                return -1;
        }
-
-       
+       memcpy(dir+strlen(dir), (TCHAR *)"\\vnc\\\0", 6);
 #endif
-
        *dirp = dir;
        return 0;
 }
index 18e61e23f92931a42b98d851769b2e0b1f966372..d011764e849f460360ad6b1c2d4bf9e755f5f760 100644 (file)
@@ -24,7 +24,8 @@
 #endif
 
 /*
- * Get home directory. If HOME environment variable is set then it is returned.
+ * Get VNC home directory ($HOME/.vnc or %APPDATA%/vnc/).
+ * If HOME environment variable is set then it is used.
  * Otherwise home directory is obtained via getpwuid function.
  *
  * Note for Windows:
@@ -34,6 +35,6 @@
  * 0 - Success
  * -1 - Failure
  */
-int gethomedir(char **dirp);
+int getvnchomedir(char **dirp);
 
 #endif /* OS_OS_H */
index 884086860de7ff945af9736069334105832a739d..427d2005c55d576a31cccd8e7b9a3c602ab4fc77 100644 (file)
@@ -89,25 +89,20 @@ void CSecurityTLS::setDefaults()
 {
   char* homeDir = NULL;
 
-  if (gethomedir(&homeDir) == -1) {
-    vlog.error("Could not obtain home directory path");
+  if (getvnchomedir(&homeDir) == -1) {
+    vlog.error("Could not obtain VNC home directory path");
     return;
   }
 
-  CharArray caDefault(strlen(homeDir)+17);
-  sprintf(caDefault.buf, "%s/.vnc/x509_certs", homeDir);
+  int len = strlen(homeDir) + 1;
+  CharArray caDefault(len + 7);
+  CharArray crlDefault(len + 8);
+  sprintf(caDefault.buf, "%sx509_ca", homeDir);
+  sprintf(crlDefault.buf, "%s509_crl", homeDir);
   delete [] homeDir;
 
-#ifndef WIN32
-  /* XXX Do we need access() check here? */
-  if (!access(caDefault.buf, R_OK))
-    x509ca.setDefaultStr(strdup(caDefault.buf));
-  else
-    vlog.error("Failed to open ~/.vnc/x509_certs");
-#else
-  /* Windows doesn't have access() function. */
   x509ca.setDefaultStr(strdup(caDefault.buf));
-#endif
+  x509crl.setDefaultStr(strdup(crlDefault.buf));
 }
 
 void CSecurityTLS::shutdown()
@@ -349,13 +344,13 @@ void CSecurityTLS::checkSession()
          < 0)
         AuthFailureException("certificate issuer unknown, and certificate "
                             "export failed");
-      
-      if (gethomedir(&homeDir) == -1)
-        vlog.error("Could not obtain home directory path");
+
+      if (getvnchomedir(&homeDir) == -1)
+        vlog.error("Could not obtain VNC home directory path");
       else {
        FILE *f;
-        CharArray caSave(strlen(homeDir)+17);
-       sprintf(caSave.buf, "%s/.vnc/x509_certs", homeDir);
+       CharArray caSave(strlen(homeDir) + 11);
+       sprintf(caSave.buf, "%sx509_certs", homeDir);
        delete [] homeDir;
                f = fopen(caSave.buf, "a+");
        if (!f)
index 4cdff57ca90b87d510bf79b47721aa131d279efd..7ba0b2257a324351ff3b18845fa232fb241488fd 100644 (file)
@@ -102,14 +102,13 @@ int main(int argc, char** argv)
 
   if (!fname) {
     char *homeDir = NULL;
-    if (gethomedir(&homeDir) == -1) {
-      fprintf(stderr, "Can't obtain home directory\n");
+    if (getvnchomedir(&homeDir) == -1) {
+      fprintf(stderr, "Can't obtain VNC home directory\n");
       exit(1);
     }
-    fname = new char[strlen(homeDir) + 20];
-    sprintf(fname, "%s/.vnc", homeDir);
-    mkdir(fname, 0777);
-    sprintf(fname, "%s/.vnc/passwd", homeDir);
+    mkdir(homeDir, 0777);
+    fname = new char[strlen(homeDir) + 7];
+    sprintf(fname, "%spasswd", homeDir);
     delete [] homeDir;
   }
 
index f3a5e01ae6685f67a4ce9052166a1f590eb116ce..8b741c0d5714f29edba1fe11024bbe13c42c4de5 100644 (file)
@@ -328,14 +328,13 @@ int main(int argc, char** argv)
 
   // Create .vnc in the user's home directory if it doesn't already exist
   char* homeDir = NULL;
-  if (gethomedir(&homeDir) == -1)
-    vlog.error("Could not create .vnc directory: can't obtain home directory path.");
-  else {
-    CharArray vncDir(strlen(homeDir)+6);
-    sprintf(vncDir.buf, "%s/.vnc", homeDir);
-    int result =  mkdir(vncDir.buf, 0755);
+  if (getvnchomedir(&homeDir) == -1) {
+    vlog.error("Could not create VNC home directory: can't obtain home "
+              "directory path.");
+  } else {
+    int result =  mkdir(homeDir, 0755);
     if (result == -1 && errno != EEXIST)
-      vlog.error("Could not create .vnc directory: %s.", strerror(errno));
+      vlog.error("Could not create VNC home directory: %s.", strerror(errno));
     delete [] homeDir;
   }