]> arthur.barton.de Git - netatalk.git/blobdiff - etc/netatalk/netatalk.c
Fix for empty volume list
[netatalk.git] / etc / netatalk / netatalk.c
index 085aa4d1c33f22ec4bbea0831330f1baa2738f18..9aaa3a742603eede7b5b68a2e34fa7f6e509b79d 100644 (file)
@@ -60,6 +60,7 @@ static struct event_base *base;
 struct event *sigterm_ev, *sigquit_ev, *sigchld_ev, *timer_ev;
 static int in_shutdown;
 static const char *dbus_path;
+static char *trackerd_loglev;
 
 /******************************************************************
  * Misc stuff
@@ -77,15 +78,21 @@ static int set_sl_volumes(void)
     EC_NULL_LOG( volumes = getvolumes() );
 
     for (vol = volumes; vol; vol = vol->v_next) {
-        bstring volnamequot = bformat("'%s'", vol->v_path);
-        bstrListPush(vollist, volnamequot);
+        if (vol->v_flags & AFPVOL_SPOTLIGHT) {
+            bstring volnamequot = bformat("'%s'", vol->v_path);
+            bstrListPush(vollist, volnamequot);
+        }
     }
 
     volnamelist = bjoin(vollist, sep);
-    cmd = bformat("gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories \"[%s]\"", bdata(volnamelist));
+    cmd = bformat("gsettings set org.freedesktop.Tracker.Miner.Files index-recursive-directories \"[%s]\"",
+                  bdata(volnamelist) ? bdata(volnamelist) : "");
     LOG(log_debug, logtype_sl, "set_sl_volumes: %s", bdata(cmd));
     system(bdata(cmd));
 
+    /* Disable default root user home indexing */
+    system("gsettings set org.freedesktop.Tracker.Miner.Files index-single-directories \"[]\"");
+
 EC_CLEANUP:
     if (cmd)
         bdestroy(cmd);
@@ -233,6 +240,7 @@ static void timer_cb(evutil_socket_t fd, short what, void *arg)
         }
     }
 
+#ifdef HAVE_TRACKER
     if (dbus_pid == -1) {
         dbus_restarts++;
         LOG(log_note, logtype_afpd, "Restarting 'dbus' (restarts: %u)", dbus_restarts);
@@ -240,12 +248,13 @@ static void timer_cb(evutil_socket_t fd, short what, void *arg)
             LOG(log_error, logtype_default, "Error starting '%s'", dbus_path);
         }
     }
+#endif
 
-#ifdef HAVE_TRACKER_0_6
+#ifdef HAVE_TRACKER_RDF
     if (trackerd_pid == -1) {
         trackerd_restarts++;
         LOG(log_note, logtype_afpd, "Restarting 'trackerd' (restarts: %u)", trackerd_restarts);
-        if ((trackerd_pid = run_process(TRACKER_0_6_PREFIX "/bin/trackerd", "--verbosity=3", NULL)) == -1) {
+        if ((trackerd_pid = run_process(TRACKERD_PATH, trackerd_loglev, NULL)) == -1) {
             LOG(log_error, logtype_default, "Error starting '%s'", "/usr/bin/trackerd");
         }
     }
@@ -283,7 +292,8 @@ static void netatalk_exit(int ret)
 static pid_t run_process(const char *path, ...)
 {
     int ret, i = 0;
-    char *myargv[10];
+#define MYARVSIZE 64
+    char *myargv[MYARVSIZE];
     va_list args;
     pid_t pid;
 
@@ -295,8 +305,10 @@ static pid_t run_process(const char *path, ...)
     if (pid == 0) {
         myargv[i++] = (char *)path;
         va_start(args, path);
-        while ((myargv[i++] = va_arg(args, char *)) != NULL)
-            ;
+        while (i < MYARVSIZE) {
+            if ((myargv[i++] = va_arg(args, char *)) == NULL)
+                break;
+        }
         va_end(args);
 
         ret = execv(path, myargv);
@@ -359,7 +371,7 @@ int main(int argc, char **argv)
     LOG(log_note, logtype_default, "Netatalk AFP server starting");
 
     if ((afpd_pid = run_process(_PATH_AFPD, "-d", "-F", obj.options.configfile, NULL)) == -1) {
-        LOG(log_error, logtype_afpd, "Error starting 'cnid_metad'");
+        LOG(log_error, logtype_afpd, "Error starting 'afpd'");
         netatalk_exit(EXITERR_CONF);
     }
 
@@ -396,15 +408,10 @@ int main(int argc, char **argv)
 
 #ifdef HAVE_TRACKER
     setenv("DBUS_SESSION_BUS_ADDRESS", "unix:path=/tmp/spotlight.ipc", 1);
-#endif
-#if 0
-    setenv("XDG_DATA_DIRS", TRACKER_PREFIX "/share/:/usr/share/", 1);
-    setenv("TRACKER_DB_ONTOLOGIES_DIR", TRACKER_PREFIX "/share/tracker/ontologies", 1);
-    setenv("TRACKER_EXTRACTOR_RULES_DIR", TRACKER_PREFIX "/share/tracker/extract-rules", 1);
-    setenv("TRACKER_LANGUAGE_STOPWORDS_DIR", TRACKER_PREFIX "/share/tracker/languages", 1);
-#endif
+    setenv("XDG_DATA_HOME", _PATH_STATEDIR, 0);
+    setenv("XDG_CACHE_HOME", _PATH_STATEDIR, 0);
 
-    dbus_path = iniparser_getstring(obj.iniconfig, INISEC_GLOBAL, "dbus daemon path", "/bin/dbus-daemon");
+    dbus_path = iniparser_getstring(obj.iniconfig, INISEC_GLOBAL, "dbus daemon", DBUS_DAEMON_PATH);
     LOG(log_debug, logtype_default, "DBUS: '%s'", dbus_path);
     if ((dbus_pid = run_process(dbus_path, "--config-file=" _PATH_CONFDIR "dbus-session.conf", NULL)) == -1) {
         LOG(log_error, logtype_default, "Error starting '%s'", dbus_path);
@@ -413,14 +420,21 @@ int main(int argc, char **argv)
 
     /* Allow dbus some time to start up */
     sleep(1);
+#endif
 
 #ifdef HAVE_TRACKER_SPARQL
+#ifdef SOLARIS
+    setenv("XDG_DATA_DIRS", TRACKER_PREFIX "/share", 0);
+    setenv("TRACKER_DB_ONTOLOGIES_DIR", TRACKER_PREFIX "/share/tracker/ontologies", 0);
+    setenv("TRACKER_EXTRACTOR_RULES_DIR", TRACKER_PREFIX "/share/tracker/extract-rules", 0);
+    setenv("TRACKER_LANGUAGE_STOPWORDS_DIR", TRACKER_PREFIX "/share/tracker/languages", 0);
+#endif
     set_sl_volumes();
     system(TRACKER_PREFIX "/bin/tracker-control -s");
 #endif
-#ifdef HAVE_TRACKER_0_6
-    if ((trackerd_pid = run_process(TRACKER_0_6_PREFIX "/bin/trackerd", "--verbosity=3", NULL)) == -1) {
-        LOG(log_error, logtype_default, "Error starting '%s'", TRACKER_0_6_PREFIX "/bin/trackerd");
+#ifdef HAVE_TRACKER_RDF
+    if ((trackerd_pid = run_process(TRACKERD_PATH, trackerd_loglev, NULL)) == -1) {
+        LOG(log_error, logtype_default, "Error starting '%s'", TRACKERD_PATH);
         netatalk_exit(EXITERR_CONF);
     }
 #endif