[mythtv] [PATCH] Add support for specifying directory to use forconfiguration

Nathan Neulinger nneul at umr.edu
Sun Feb 13 20:05:30 UTC 2005


> It can be a static routine, so you just call it as 
> MythContext::GetConfDir() instead of gContext->GetConfDir(). Then you 
> don't have to wait for gContext to be created.

> While you're at it, can you mention something about MYTHTVDIR as well? 
> That's the one I mentioned for the prefix directory -- it gets used in 
> the constructor for MythContextPrivate. I had no idea that existed 
> until I went in to add it, so it would be nice to have both of these 
> documented.

Updated patch attached... Should address everything that's been
brought up about the first one.

-- Nathan

------------------------------------------------------------
Nathan Neulinger                       EMail:  nneul at umr.edu
University of Missouri - Rolla         Phone: (573) 341-6679
UMR Information Technology             Fax: (573) 341-4216
-------------- next part --------------
Index: libs/libmyth/mythcontext.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/mythcontext.cpp,v
retrieving revision 1.152
diff -u -r1.152 mythcontext.cpp
--- libs/libmyth/mythcontext.cpp	11 Feb 2005 01:27:43 -0000	1.152
+++ libs/libmyth/mythcontext.cpp	13 Feb 2005 19:55:08 -0000
@@ -288,7 +288,7 @@
 bool MythContextPrivate::WriteSettingsFile(const DatabaseParams &params,
                                            bool overwrite)
 {
-    QString path = QDir::homeDirPath() + "/.mythtv/mysql.txt";
+    QString path = MythContext::GetConfDir() + "/mysql.txt";
     QFile   * f  = new QFile(path);
     
     if (!overwrite && f->exists())
@@ -296,14 +296,14 @@
         return false;
     }
 
-    QString dirpath = QDir::homeDirPath() + "/.mythtv";
+    QString dirpath = MythContext::GetConfDir();
     QDir createDir(dirpath);
 
     if (!createDir.exists())
     {
         if (!createDir.mkdir(dirpath, true))
         {
-            VERBOSE(VB_IMPORTANT, "Could not create ~/.mythtv");
+            VERBOSE(VB_IMPORTANT, QString("Could not create %1").arg(dirpath));
             return false;
         }
     }
@@ -728,6 +728,24 @@
     return d->m_installprefix; 
 }
 
+QString MythContext::GetConfDir(void)
+{
+    char *tmp_confdir = getenv("MYTHCONFDIR");
+    QString dir;
+    if (tmp_confdir)
+    {
+        dir = QString(tmp_confdir);
+    }
+    else
+    {
+        dir = QDir::homeDirPath() + "/.mythtv";
+    }
+
+    VERBOSE(VB_ALL, QString("Using conf dir = %1")
+                                .arg(dir));
+    return dir;
+}
+
 QString MythContext::GetShareDir(void) 
 { 
     return d->m_installprefix + "/share/mythtv/"; 
@@ -881,7 +899,7 @@
 
 void MythContext::ClearOldImageCache(void)
 {
-    QString cachedirname = QDir::homeDirPath() + "/.mythtv/themecache/";
+    QString cachedirname = MythContext::GetConfDir() + "/themecache/";
 
     d->themecachedir = cachedirname + GetSetting("Theme") + "." + 
                        QString::number(d->m_screenwidth) + "." + 
@@ -925,7 +943,7 @@
 
 void MythContext::RemoveCacheDir(const QString &dirname)
 {
-    QString cachedirname = QDir::homeDirPath() + "/.mythtv/themecache/";
+    QString cachedirname = MythContext::GetConfDir() + "/themecache/";
 
     if (!dirname.startsWith(cachedirname))
         return;
@@ -1151,7 +1169,7 @@
 
 QString MythContext::FindThemeDir(const QString &themename)
 {
-    QString testdir = QDir::homeDirPath() + "/.mythtv/themes/" + themename;
+    QString testdir = MythContext::GetConfDir() + "/themes/" + themename;
 
     QDir dir(testdir);
     if (dir.exists())
Index: libs/libmyth/mythcontext.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/mythcontext.h,v
retrieving revision 1.180
diff -u -r1.180 mythcontext.h
--- libs/libmyth/mythcontext.h	31 Jan 2005 17:15:16 -0000	1.180
+++ libs/libmyth/mythcontext.h	13 Feb 2005 19:55:08 -0000
@@ -155,6 +155,7 @@
     QString GetInstallPrefix(void);
     QString GetShareDir(void);
     QString GetLibraryDir(void);
+    static QString GetConfDir(void);
 
     QString GetFilePrefix(void);
 
Index: libs/libmyth/mythdialogs.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/mythdialogs.cpp,v
retrieving revision 1.102
diff -u -r1.102 mythdialogs.cpp
--- libs/libmyth/mythdialogs.cpp	8 Feb 2005 08:38:23 -0000	1.102
+++ libs/libmyth/mythdialogs.cpp	13 Feb 2005 19:55:08 -0000
@@ -45,7 +45,7 @@
 static void *SpawnLirc(void *param)
 {
     MythMainWindow *main_window = (MythMainWindow *)param;
-    QString config_file = QDir::homeDirPath() + "/.mythtv/lircrc";
+    QString config_file = MythContext::GetConfDir() + "/lircrc";
     QString program("mythtv");
     LircClient *cl = new LircClient(main_window);
     if (!cl->Init(config_file, program))
@@ -59,7 +59,7 @@
 static void *SpawnJoystickMenu(void *param)
 {
     MythMainWindow *main_window = (MythMainWindow *)param;
-    QString config_file = QDir::homeDirPath() + "/.mythtv/joystickmenurc";
+    QString config_file = MythContext::GetConfDir() + "/joystickmenurc";
     JoystickMenuClient *js = new JoystickMenuClient(main_window);
     if (!js->Init(config_file))
         js->Process();
Index: libs/libmyth/oldsettings.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/oldsettings.cpp,v
retrieving revision 1.5
diff -u -r1.5 oldsettings.cpp
--- libs/libmyth/oldsettings.cpp	20 Jan 2004 07:12:17 -0000	1.5
+++ libs/libmyth/oldsettings.cpp	13 Feb 2005 19:55:08 -0000
@@ -10,6 +10,7 @@
 
 
 #include "oldsettings.h"
+#include "mythcontext.h"
 #include <qstring.h>
 #include <fstream>
 #include <cstdlib>
@@ -120,7 +121,7 @@
     if (ReadSettings(setname))
          result = true;
 
-    setname = QDir::homeDirPath() + "/.mythtv/" + filename;
+    setname = MythContext::GetConfDir() + "/" + filename;
 
     if (ReadSettings(setname))
          result = true;
Index: libs/libmyth/themedmenu.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/themedmenu.cpp,v
retrieving revision 1.102
diff -u -r1.102 themedmenu.cpp
--- libs/libmyth/themedmenu.cpp	11 Feb 2005 02:37:52 -0000	1.102
+++ libs/libmyth/themedmenu.cpp	13 Feb 2005 19:55:08 -0000
@@ -2306,7 +2306,7 @@
 
 QString ThemedMenuPrivate::findMenuFile(const QString &menuname)
 {
-    QString testdir = QDir::homeDirPath() + "/.mythtv/" + menuname;
+    QString testdir = MythContext::GetConfDir() + "/" + menuname;
     QFile file(testdir);
     if (file.exists())
         return testdir;
Index: libs/libmythtv/osd.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/osd.cpp,v
retrieving revision 1.111
diff -u -r1.111 osd.cpp
--- libs/libmythtv/osd.cpp	10 Feb 2005 07:33:01 -0000	1.111
+++ libs/libmythtv/osd.cpp	13 Feb 2005 19:55:08 -0000
@@ -246,7 +246,7 @@
 
 QString OSD::FindTheme(QString name)
 {
-    QString testdir = QDir::homeDirPath() + "/.mythtv/osd/" + name;
+    QString testdir = MythContext::GetConfDir() + "/osd/" + name;
     
     QDir dir(testdir);
     if (dir.exists())
@@ -267,7 +267,7 @@
 
 TTFFont *OSD::LoadFont(QString name, int size)
 {
-    QString fullname = QDir::homeDirPath() + "/.mythtv/" + name;
+    QString fullname = MythContext::GetConfDir() + "/" + name;
     TTFFont *font = new TTFFont((char *)fullname.ascii(), size, vid_width,
                                 vid_height, hmult);
 
Index: libs/libmythtv/videosource.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/videosource.cpp,v
retrieving revision 1.66
diff -u -r1.66 videosource.cpp
--- libs/libmythtv/videosource.cpp	11 Feb 2005 19:06:14 -0000	1.66
+++ libs/libmythtv/videosource.cpp	13 Feb 2005 19:55:08 -0000
@@ -393,8 +393,8 @@
                                 "list of available channels"));
     pdlg.show();
 
-    QString filename = QString("%1/.mythtv/%2.xmltv")
-        .arg(QDir::homeDirPath()).arg(parent.getSourceName());
+    QString filename = QString("%1/%2.xmltv")
+        .arg(MythContext::GetConfDir()).arg(parent.getSourceName());
     QString command = QString("tv_grab_uk --config-file '%1' --configure --retry-limit %2 --retry-delay %3 --postalcode %4 --provider %5 --auto-new-channels add")
         .arg(filename)
         .arg(2)
@@ -448,8 +448,8 @@
     if (grabber == "tv_grab_de") {
         command = "tv_grab_de --configure";
     } else {
-        QString filename = QString("%1/.mythtv/%2.xmltv")
-            .arg(QDir::homeDirPath()).arg(parent.getSourceName());
+        QString filename = QString("%1/%2.xmltv")
+            .arg(MythContext::GetConfDir()).arg(parent.getSourceName());
 
         command = QString("%1 --config-file '%2' --configure")
             .arg(grabber).arg(filename);
Index: libs/libmythui/mythmainwindow.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythui/mythmainwindow.cpp,v
retrieving revision 1.5
diff -u -r1.5 mythmainwindow.cpp
--- libs/libmythui/mythmainwindow.cpp	11 Sep 2004 15:31:37 -0000	1.5
+++ libs/libmythui/mythmainwindow.cpp	13 Feb 2005 19:55:08 -0000
@@ -30,7 +30,7 @@
 static void *SpawnLirc(void *param)
 {
     MythMainWindow *main_window = (MythMainWindow *)param;
-    QString config_file = QDir::homeDirPath() + "/.mythtv/lircrc";
+    QString config_file = MythContext::GetConfDir() + "/lircrc";
     QString program("mythtv");
     LircClient *cl = new LircClient(main_window);
     if (!cl->Init(config_file, program))
Index: libs/libmythui/oldsettings.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythui/oldsettings.cpp,v
retrieving revision 1.1
diff -u -r1.1 oldsettings.cpp
--- libs/libmythui/oldsettings.cpp	24 Aug 2004 05:03:50 -0000	1.1
+++ libs/libmythui/oldsettings.cpp	13 Feb 2005 19:55:08 -0000
@@ -120,7 +120,7 @@
     if (ReadSettings(setname))
          result = true;
 
-    setname = QDir::homeDirPath() + "/.mythtv/" + filename;
+    setname = MythContext::GetConfDir() + "/" + filename;
 
     if (ReadSettings(setname))
          result = true;
Index: libs/libmythui/themedmenu.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythui/themedmenu.cpp,v
retrieving revision 1.5
diff -u -r1.5 themedmenu.cpp
--- libs/libmythui/themedmenu.cpp	21 Jan 2005 06:50:19 -0000	1.5
+++ libs/libmythui/themedmenu.cpp	13 Feb 2005 19:55:08 -0000
@@ -1956,7 +1956,7 @@
 
 QString ThemedMenuPrivate::findMenuFile(const QString &menuname)
 {
-    QString testdir = QDir::homeDirPath() + "/.mythtv/" + menuname;
+    QString testdir = MythContext::GetConfDir() + "/" + menuname;
     QFile file(testdir);
     if (file.exists())
         return testdir;
Index: programs/mythfilldatabase/filldata.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfilldatabase/filldata.cpp,v
retrieving revision 1.156
diff -u -r1.156 filldata.cpp
--- programs/mythfilldatabase/filldata.cpp	9 Feb 2005 21:35:13 -0000	1.156
+++ programs/mythfilldatabase/filldata.cpp	13 Feb 2005 19:55:09 -0000
@@ -1861,7 +1861,7 @@
 
 static QString SetupIconCacheDirectory()
 {
-    QString fileprefix = QDir::homeDirPath() + "/.mythtv";
+    QString fileprefix = MythContext::GetConfDir();
 
     QDir dir(fileprefix);
     if (!dir.exists())
@@ -2518,7 +2518,7 @@
     QString filename = QString(tempfilename);
 
     QString home = QDir::homeDirPath();
-    QString configfile = QString("%1/.mythtv/%2.xmltv").arg(home)
+    QString configfile = QString("%1/%2.xmltv").arg(MythContext::GetConfDir())
                                                        .arg(source.name);
     QString command;
 
Index: programs/mythfrontend/main.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/main.cpp,v
retrieving revision 1.183
diff -u -r1.183 main.cpp
--- programs/mythfrontend/main.cpp	9 Feb 2005 16:45:34 -0000	1.183
+++ programs/mythfrontend/main.cpp	13 Feb 2005 19:55:09 -0000
@@ -869,7 +869,11 @@
                     "                               of all,none,quiet,record,playback,channel," << endl <<
                     "                               osd,file,schedule,network,commflag,audio,libav" << endl <<
                     "--version                      Version information" << endl <<
-                    "<plugin>                       Initialize and run this plugin" << endl;
+                    "<plugin>                       Initialize and run this plugin" << endl <<
+                    endl <<
+                    "Environment Variables:" << endl <<
+                    "$MYTHTVDIR                     Set the installation prefix" << endl <<
+                    "$MYTHCONFDIR                   Set the config dir (instead of ~/.mythtv)" << endl;
             return -1;
         }
     }
@@ -901,7 +905,7 @@
     if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
         cerr << "Unable to ignore SIGPIPE\n";
 
-    QString fileprefix = QDir::homeDirPath() + "/.mythtv";
+    QString fileprefix = MythContext::GetConfDir();
 
     QDir dir(fileprefix);
     if (!dir.exists())
Index: setup/main.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/setup/main.cpp,v
retrieving revision 1.52
diff -u -r1.52 main.cpp
--- setup/main.cpp	4 Feb 2005 19:36:04 -0000	1.52
+++ setup/main.cpp	13 Feb 2005 19:55:09 -0000
@@ -126,7 +126,7 @@
     gContext->SetSetting("Theme", "blue");
     gContext->LoadQtConfig();
 
-    QString fileprefix = QDir::homeDirPath() + "/.mythtv";
+    QString fileprefix = MythContext::GetConfDir();
 
     QDir dir(fileprefix);
     if (!dir.exists())


More information about the mythtv-dev mailing list