--- a/src/main.cxx
+++ b/src/main.cxx
@@ -287,7 +287,6 @@
     
     UpMpd::Options opts;
 
-    string cachedir;
     if (!g_configfilename.empty()) {
         g_config = new ConfSimple(g_configfilename.c_str(), 1, true);
         if (!g_config || !g_config->ok()) {
@@ -338,7 +337,7 @@
         }
         g_config->get("iconpath", iconpath);
         g_config->get("presentationhtml", presentationhtml);
-        g_config->get("cachedir", cachedir);
+        g_config->get("cachedir", opts.cachedir);
         g_config->get("pidfile", pidfilename);
         if (!(op_flags & OPT_i)) {
             g_config->get("upnpiface", iface);
@@ -460,19 +459,20 @@
             LOGFAT("Can't write pidfile: " << pidfile.getreason() << endl);
             return 1;
         }
-	if (cachedir.empty())
-            cachedir = "/var/cache/upmpdcli";
+	if (opts.cachedir.empty())
+            opts.cachedir = "/var/cache/upmpdcli";
     } else {
-	if (cachedir.empty())
-            cachedir = path_cat(path_tildexpand("~") , "/.cache/upmpdcli");
+	if (opts.cachedir.empty())
+            opts.cachedir = path_cat(path_tildexpand("~") , "/.cache/upmpdcli");
     }
 
     string& mcfn = opts.cachefn;
     // no cache access needed or desirable for a pure media server
     if (!msonly && ohmetapersist) {
-        opts.cachefn = path_cat(cachedir, "/metacache");
-        if (!path_makepath(cachedir, 0755)) {
-            LOGERR("makepath("<< cachedir << ") : errno : " << errno << endl);
+        opts.cachefn = path_cat(opts.cachedir, "/metacache");
+        if (!path_makepath(opts.cachedir, 0755)) {
+            LOGERR("makepath("<< opts.cachedir << ") : errno : " <<
+                   errno << endl);
         } else {
             int fd;
             if ((fd = open(mcfn.c_str(), O_CREAT|O_RDWR, 0644)) < 0) {
@@ -482,8 +482,10 @@
                 if (geteuid() == 0 && chown(mcfn.c_str(), runas, -1) != 0) {
                     LOGERR("chown("<< mcfn << ") : errno : " << errno << endl);
                 }
-                if (geteuid() == 0 && chown(cachedir.c_str(), runas, -1) != 0) {
-                    LOGERR("chown("<< cachedir << ") : errno : " <<errno<< endl);
+                if (geteuid() == 0 &&
+                    chown(opts.cachedir.c_str(), runas, -1) != 0) {
+                    LOGERR("chown("<< opts.cachedir << ") : errno : " <<
+                           errno << endl);
                 }
             }
         }