]> source.dussan.org Git - tigervnc.git/commitdiff
[Development] Use gethomedir() function in vncpasswd and vncviewer.
authorAdam Tkac <atkac@redhat.com>
Fri, 29 Oct 2010 12:17:19 +0000 (12:17 +0000)
committerAdam Tkac <atkac@redhat.com>
Fri, 29 Oct 2010 12:17:19 +0000 (12:17 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4177 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/vncpasswd/Makefile.am
unix/vncpasswd/vncpasswd.cxx
unix/vncviewer/Makefile.am
unix/vncviewer/vncviewer.cxx

index 00951be310a8d7b9c043d5025f997112596c20bd..7acc89ff2816242fbe70356cca7941f2a72bc147 100644 (file)
@@ -7,6 +7,7 @@ vncpasswd_SOURCES = vncpasswd.cxx
 vncpasswd_CPPFLAGS = -I$(top_srcdir)/common
 
 vncpasswd_LDADD = $(top_builddir)/common/rfb/librfb.la \
-       $(top_builddir)/common/rdr/librdr.la
+       $(top_builddir)/common/rdr/librdr.la \
+       $(top_builddir)/common/os/libos.la
 
 EXTRA_DIST = vncpasswd.man
index d21ea94224945353bb8f735d4f015c900e1d7a37..4cdff57ca90b87d510bf79b47721aa131d279efd 100644 (file)
@@ -23,6 +23,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <os/os.h>
 #include <rfb/Password.h>
 #include <rfb/util.h>
 
@@ -100,14 +101,16 @@ int main(int argc, char** argv)
   }
 
   if (!fname) {
-    if (!getenv("HOME")) {
-      fprintf(stderr,"HOME is not set\n");
+    char *homeDir = NULL;
+    if (gethomedir(&homeDir) == -1) {
+      fprintf(stderr, "Can't obtain home directory\n");
       exit(1);
     }
-    fname = new char[strlen(getenv("HOME")) + 20];
-    sprintf(fname, "%s/.vnc", getenv("HOME"));
+    fname = new char[strlen(homeDir) + 20];
+    sprintf(fname, "%s/.vnc", homeDir);
     mkdir(fname, 0777);
-    sprintf(fname, "%s/.vnc/passwd", getenv("HOME"));
+    sprintf(fname, "%s/.vnc/passwd", homeDir);
+    delete [] homeDir;
   }
 
   while (true) {
index cfbe430f5782be9438428b1df29f91429a6f6e95..32d5c6cc53ff65294a3bb9b601cebed00f7d3653 100644 (file)
@@ -16,6 +16,7 @@ vncviewer_LDADD = $(top_builddir)/unix/tx/libtx.la \
        $(top_builddir)/common/rfb/librfb.la \
        $(top_builddir)/common/network/libnetwork.la \
        $(top_builddir)/common/rdr/librdr.la \
+       $(top_builddir)/common/os/libos.la \
        @X_PRE_LIBS@ @X_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@ @GNUTLS_LIBS@ # @LIBINTL@
 
 if INCLUDED_ZLIB
index 80d65c55a54e3b067c74971319fc7a48f25f9abf..9edb80d30837fb8ffae4f49bdf95d86001068d60 100644 (file)
@@ -31,6 +31,7 @@
 #include <errno.h>
 #include <signal.h>
 #include <locale.h>
+#include <os/os.h>
 #include <rfb/Logger_stdio.h>
 #include <rfb/LogWriter.h>
 #include <network/TcpSocket.h>
@@ -323,15 +324,17 @@ int main(int argc, char** argv)
   }
 
   // Create .vnc in the user's home directory if it doesn't already exist
-  char* homeDir = getenv("HOME");
-  if (homeDir) {
+  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 (result == -1 && errno != EEXIST)
       vlog.error("Could not create .vnc directory: %s.", strerror(errno));
-  } else
-    vlog.error("Could not create .vnc directory: environment variable $HOME not set.");
+    delete [] homeDir;
+  }
 
   if (!::autoSelect.hasBeenSet()) {
     // Default to AutoSelect=0 if -PreferredEncoding or -FullColor is used