int main (int argc, char *argv[]) { TrackerConfig *config; TrackerController *controller; GOptionContext *context; GMainLoop *loop; GError *error = NULL; gchar *log_filename; guint shutdown_timeout; g_type_init (); /* Set up locale */ setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* Translators: this messagge will apper immediately after the * usage string - Usage: COMMAND <THIS_MESSAGE> */ context = g_option_context_new (_("- start the tracker writeback service")); g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, &error); g_option_context_free (context); if (version) { g_print ("\n" ABOUT "\n" LICENSE "\n"); return EXIT_SUCCESS; } /* Initialize logging */ config = tracker_config_new (); if (verbosity > -1) { tracker_config_set_verbosity (config, verbosity); } tracker_log_init (tracker_config_get_verbosity (config), &log_filename); g_print ("Starting log:\n File:'%s'\n", log_filename); g_free (log_filename); sanity_check_option_values (config); if (disable_shutdown) { shutdown_timeout = 0; } else { shutdown_timeout = QUIT_TIMEOUT; } controller = tracker_controller_new (shutdown_timeout, &error); if (error) { g_critical ("Error creating controller: %s", error->message); g_error_free (error); return EXIT_FAILURE; } g_message ("Main thread is: %p", g_thread_self ()); loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); tracker_log_shutdown (); g_object_unref (controller); g_main_loop_unref (loop); g_object_unref (config); return EXIT_SUCCESS; }
int main (int argc, char *argv[]) { GOptionContext *context; GError *error = NULL; TrackerExtract *extract; TrackerDecorator *decorator; TrackerExtractController *controller; gchar *log_filename = NULL; GMainLoop *my_main_loop; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* Translators: this message will appear immediately after the */ /* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE> */ context = g_option_context_new (_("- Extract file meta data")); g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, &error); if (!filename && mime_type) { gchar *help; g_printerr ("%s\n\n", _("Filename and mime type must be provided together")); help = g_option_context_get_help (context, TRUE, NULL); g_option_context_free (context); g_printerr ("%s", help); g_free (help); return EXIT_FAILURE; } g_option_context_free (context); if (version) { g_print ("\n" ABOUT "\n" LICENSE "\n"); return EXIT_SUCCESS; } g_set_application_name ("tracker-extract"); setlocale (LC_ALL, ""); config = tracker_config_new (); /* Set conditions when we use stand alone settings */ if (filename) { return run_standalone (config); } /* Initialize subsystems */ initialize_directories (); /* Extractor command line arguments */ if (verbosity > -1) { tracker_config_set_verbosity (config, verbosity); } tracker_log_init (tracker_config_get_verbosity (config), &log_filename); if (log_filename != NULL) { g_message ("Using log file:'%s'", log_filename); g_free (log_filename); } sanity_check_option_values (config); /* This makes sure we don't steal all the system's resources */ initialize_priority_and_scheduling (tracker_config_get_sched_idle (config), tracker_db_manager_get_first_index_done () == FALSE); extract = tracker_extract_new (TRUE, force_module); if (!extract) { g_object_unref (config); tracker_log_shutdown (); return EXIT_FAILURE; } decorator = tracker_extract_decorator_new (extract, NULL, &error); if (error) { g_critical ("Could not start decorator: %s\n", error->message); g_object_unref (config); tracker_log_shutdown (); return EXIT_FAILURE; } #ifdef THREAD_ENABLE_TRACE g_debug ("Thread:%p (Main) --- Waiting for extract requests...", g_thread_self ()); #endif /* THREAD_ENABLE_TRACE */ tracker_locale_init (); controller = tracker_extract_controller_new (decorator); tracker_miner_start (TRACKER_MINER (decorator)); /* Main loop */ main_loop = g_main_loop_new (NULL, FALSE); initialize_signal_handler (); g_main_loop_run (main_loop); my_main_loop = main_loop; main_loop = NULL; g_main_loop_unref (my_main_loop); tracker_miner_stop (TRACKER_MINER (decorator)); /* Shutdown subsystems */ tracker_locale_shutdown (); g_object_unref (extract); g_object_unref (decorator); g_object_unref (controller); tracker_log_shutdown (); g_object_unref (config); return EXIT_SUCCESS; }
int main (gint argc, gchar *argv[]) { TrackerMiner *miner_applications; GOptionContext *context; GError *error = NULL; gchar *log_filename = NULL; main_loop = NULL; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* Set timezone info */ tzset (); /* Translators: this messagge will apper immediately after the * usage string - Usage: COMMAND <THIS_MESSAGE> */ context = g_option_context_new (_("— start the application data miner")); g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, &error); g_option_context_free (context); if (error) { g_printerr ("%s\n", error->message); g_error_free (error); return EXIT_FAILURE; } if (version) { g_print ("\n" ABOUT "\n" LICENSE "\n"); return EXIT_SUCCESS; } tracker_log_init (verbosity, &log_filename); if (log_filename) { g_message ("Using log file:'%s'", log_filename); g_free (log_filename); } /* This makes sure we don't steal all the system's resources */ initialize_priority_and_scheduling (TRACKER_SCHED_IDLE_ALWAYS, FALSE); main_loop = g_main_loop_new (NULL, FALSE); g_message ("Checking if we're running as a daemon:"); g_message (" %s %s", no_daemon ? "No" : "Yes", no_daemon ? "(forced by command line)" : ""); /* Create miner for applications */ miner_applications = tracker_miner_applications_new (&error); if (!miner_applications) { g_critical ("Couldn't create new applications miner, '%s'", error ? error->message : "unknown error"); tracker_log_shutdown (); return EXIT_FAILURE; } g_signal_connect (miner_applications, "finished", G_CALLBACK (miner_finished_cb), NULL); initialize_signal_handler (); /* Go, go, go! */ tracker_miner_start (miner_applications); g_main_loop_run (main_loop); g_message ("Shutdown started"); g_main_loop_unref (main_loop); g_object_unref (G_OBJECT (miner_applications)); tracker_log_shutdown (); g_print ("\nOK\n\n"); return EXIT_SUCCESS; }
int main (gint argc, gchar *argv[]) { TrackerConfig *config; TrackerMiner *miner_files; TrackerMinerFilesIndex *miner_files_index; GOptionContext *context; GError *error = NULL; gchar *log_filename = NULL; gboolean do_mtime_checking; gboolean do_crawling; gboolean force_mtime_checking = FALSE; gboolean store_available; g_type_init(); main_loop = NULL; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* Set timezone info */ tzset (); /* Translators: this messagge will apper immediately after the * usage string - Usage: COMMAND <THIS_MESSAGE> */ context = g_option_context_new (_("- start the tracker indexer")); disable_options = g_array_new (FALSE, FALSE, sizeof (gint)); g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, &error); g_option_context_free (context); if (error) { g_printerr ("%s\n", error->message); g_error_free (error); g_array_free (disable_options, TRUE); return EXIT_FAILURE; } if (version) { g_print ("\n" ABOUT "\n" LICENSE "\n"); g_array_free (disable_options, TRUE); return EXIT_SUCCESS; } if (eligible) { check_eligible (); g_array_free (disable_options, TRUE); return EXIT_SUCCESS; } initialize_signal_handler (); /* Initialize logging */ config = tracker_config_new (); if (verbosity > -1) { tracker_config_set_verbosity (config, verbosity); } if (initial_sleep > -1) { tracker_config_set_initial_sleep (config, initial_sleep); } tracker_log_init (tracker_config_get_verbosity (config), &log_filename); if (log_filename) { g_message ("Using log file:'%s'", log_filename); g_free (log_filename); } sanity_check_option_values (config); /* This makes sure we don't steal all the system's resources */ initialize_priority_and_scheduling (tracker_config_get_sched_idle (config), tracker_db_manager_get_first_index_done () == FALSE); main_loop = g_main_loop_new (NULL, FALSE); g_message ("Checking if we're running as a daemon:"); g_message (" %s %s", no_daemon ? "No" : "Yes", no_daemon ? "(forced by command line)" : ""); /* Create new TrackerMinerFiles object */ miner_files = tracker_miner_files_new (config, &error); if (!miner_files) { g_critical ("Couldn't create new Files miner: '%s'", error ? error->message : "unknown error"); g_object_unref (config); tracker_log_shutdown (); g_array_free (disable_options, TRUE); return EXIT_FAILURE; } tracker_writeback_init (TRACKER_MINER_FILES (miner_files), config, &error); if (error) { g_critical ("Couldn't create writeback handling: '%s'", error ? error->message : "unknown error"); g_object_unref (config); g_object_unref (miner_files); tracker_log_shutdown (); g_array_free (disable_options, TRUE); return EXIT_FAILURE; } /* Create new TrackerMinerFilesIndex object */ miner_files_index = tracker_miner_files_index_new (TRACKER_MINER_FILES (miner_files)); if (!miner_files_index) { g_object_unref (miner_files); tracker_writeback_shutdown (); g_object_unref (config); tracker_log_shutdown (); g_array_free (disable_options, TRUE); return EXIT_FAILURE; } /* Check if we should crawl and if we should force mtime * checking based on the config. */ do_crawling = should_crawl (config, &force_mtime_checking); /* Get the last shutdown state to see if we need to perform a * full mtime check against the db or not. * * Set to TRUE here in case we crash and miss file system * events. */ g_message ("Checking whether to force mtime checking during crawling (based on last clean shutdown):"); /* Override the shutdown state decision based on the config */ if (force_mtime_checking) { do_mtime_checking = TRUE; } else { do_mtime_checking = tracker_db_manager_get_need_mtime_check (); } g_message (" %s %s", do_mtime_checking ? "Yes" : "No", force_mtime_checking ? "(forced from config)" : ""); /* Set the need for an mtime check to TRUE so we check in the * event of a crash, this is changed back on shutdown if * everything appears to be fine. */ tracker_db_manager_set_need_mtime_check (TRUE); /* Configure files miner */ tracker_miner_fs_set_initial_crawling (TRACKER_MINER_FS (miner_files), do_crawling); tracker_miner_fs_set_mtime_checking (TRACKER_MINER_FS (miner_files), do_mtime_checking); g_signal_connect (miner_files, "finished", G_CALLBACK (miner_finished_cb), NULL); miners = g_slist_prepend (miners, miner_files); tracker_thumbnailer_init (); miner_handle_first (config, do_mtime_checking); /* Go, go, go! */ g_main_loop_run (main_loop); g_message ("Shutdown started"); store_available = store_is_available (); if (miners_timeout_id == 0 && !miner_needs_check (miner_files, store_available)) { tracker_db_manager_set_need_mtime_check (FALSE); } g_main_loop_unref (main_loop); g_object_unref (config); g_object_unref (miner_files_index); tracker_thumbnailer_shutdown (); g_slist_foreach (miners, (GFunc) finalize_miner, NULL); g_slist_free (miners); tracker_writeback_shutdown (); tracker_log_shutdown (); g_array_free (disable_options, TRUE); g_print ("\nOK\n\n"); return EXIT_SUCCESS; }
int main (int argc, char **argv) { gchar *log_filename; GMainLoop *loop; GOptionContext *context; TrackerMinerRSS *miner; GError *error = NULL; const gchar *error_message; g_type_init(); setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); tzset (); /* Translators: this messagge will apper immediately after the * usage string - Usage: COMMAND <THIS_MESSAGE> */ context = g_option_context_new (_("- start the feeds indexer")); g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, NULL); if ((add_feed && !title) || (!add_feed && title)) { error_message = _("Adding a feed requires --add-feed and --title"); } else { error_message = NULL; } if (error_message) { gchar *help; g_printerr ("%s\n\n", error_message); help = g_option_context_get_help (context, TRUE, NULL); g_option_context_free (context); g_printerr ("%s", help); g_free (help); return EXIT_FAILURE; } g_option_context_free (context); /* Command line stuff doesn't use logging, so we're using g_print*() */ if (add_feed && title) { TrackerSparqlConnection *connection; const gchar *query; g_print ("Adding feed:\n" " title:'%s'\n" " url:'%s'\n", title, add_feed); connection = tracker_sparql_connection_get (NULL, &error); if (!connection) { g_printerr ("%s: %s\n", _("Could not establish a connection to Tracker"), error ? error->message : _("No error given")); g_clear_error (&error); return EXIT_FAILURE; } /* FIXME: Make interval configurable */ query = g_strdup_printf ("INSERT {" " _:FeedSettings a mfo:FeedSettings ;" " mfo:updateInterval 20 ." " _:Feed a nie:DataObject, mfo:FeedChannel ;" " mfo:feedSettings _:FeedSettings ;" " nie:url \"%s\" ;" " nie:title \"%s\" . " "}", add_feed, title); tracker_sparql_connection_update (connection, query, G_PRIORITY_DEFAULT, NULL, &error); if (error) { g_printerr ("%s, %s\n", _("Could not add feed"), error->message); g_error_free (error); g_object_unref (connection); return EXIT_FAILURE; } g_print ("Done\n"); return EXIT_SUCCESS; } tracker_log_init (verbosity, &log_filename); if (log_filename != NULL) { g_message ("Using log file:'%s'", log_filename); g_free (log_filename); } miner = tracker_miner_rss_new (&error); if (!miner) { g_critical ("Could not create new RSS miner: '%s', exiting...\n", error ? error->message : "unknown error"); return EXIT_FAILURE; } tracker_miner_start (TRACKER_MINER (miner)); loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); tracker_log_shutdown (); g_main_loop_unref (loop); g_object_unref (miner); return EXIT_SUCCESS; }