[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r3423: If vidalia.conf doesn't exist in Vidalia's data directory, t (vidalia/trunk/src/vidalia)



Author: edmanm
Date: 2009-01-11 22:33:41 -0500 (Sun, 11 Jan 2009)
New Revision: 3423

Modified:
   vidalia/trunk/src/vidalia/vidalia.cpp
   vidalia/trunk/src/vidalia/vidalia.h
Log:
If vidalia.conf doesn't exist in Vidalia's data directory, then try to copy
one from the application bundle if one exists there. (OS X only)


Modified: vidalia/trunk/src/vidalia/vidalia.cpp
===================================================================
--- vidalia/trunk/src/vidalia/vidalia.cpp	2009-01-12 03:19:16 UTC (rev 3422)
+++ vidalia/trunk/src/vidalia/vidalia.cpp	2009-01-12 03:33:41 UTC (rev 3423)
@@ -27,6 +27,10 @@
 #include <html.h>
 #include <stdlib.h>
 
+#ifdef Q_OS_MACX
+#include <Carbon/Carbon.h>
+#endif
+
 #include "vidalia.h"
 
 /* Available command-line arguments. */
@@ -91,6 +95,10 @@
   if (_args.contains(ARG_RESET))
     VidaliaSettings::reset();
 
+  /* See if we should load a default configuration file. */
+  if (! VidaliaSettings::settingsFileExists())
+    copyDefaultSettingsFile();
+
   /* Handle the -loglevel and -logfile options. */
   if (_args.contains(ARG_LOGFILE))
     _log.open(_args.value(ARG_LOGFILE));
@@ -428,3 +436,32 @@
   return false;
 }
 
+/** Copies a default settings file (if one exists) to Vidalia's data
+ * directory. */
+void
+Vidalia::copyDefaultSettingsFile() const
+{
+#ifdef Q_OS_MACX
+  CFURLRef confUrlRef;
+  CFStringRef pathRef;
+  const char *path;
+
+  confUrlRef = CFBundleCopyResourceURL(CFBundleGetMainBundle(), 
+                                       CFSTR("vidalia"), CFSTR("conf"), NULL);
+  if (confUrlRef == NULL)
+    return;
+
+  pathRef = CFURLCopyFileSystemPath(confUrlRef, kCFURLPOSIXPathStyle);
+  path    = CFStringGetCStringPtr(pathRef, CFStringGetSystemEncoding());
+
+  if (path) {
+    QString defaultConfFile = QString::fromLocal8Bit(path);
+    QFileInfo fi(defaultConfFile);
+    if (fi.exists())
+      QFile::copy(defaultConfFile, VidaliaSettings::settingsFile());
+  }
+  CFRelease(confUrlRef);
+  CFRelease(pathRef);
+#endif
+}
+

Modified: vidalia/trunk/src/vidalia/vidalia.h
===================================================================
--- vidalia/trunk/src/vidalia/vidalia.h	2009-01-12 03:19:16 UTC (rev 3422)
+++ vidalia/trunk/src/vidalia/vidalia.h	2009-01-12 03:33:41 UTC (rev 3423)
@@ -128,6 +128,9 @@
   bool winEventFilter(MSG *msg, long *result);
 #endif
 
+  /** Copies a default settings file (if one exists) to Vidalia's data
+   * directory. */
+  void copyDefaultSettingsFile() const;
   /** Removes all currently installed QTranslators. */
   static void removeAllTranslators();