/* setup a file monitor on the rpmdb, if we're operating on the native / */
if (g_strcmp0(priv->install_root, "/") == 0) {
- rpmdb_path = g_build_filename(priv->install_root, "var/lib/rpm/Packages", NULL);
- file_rpmdb = g_file_new_for_path(rpmdb_path);
- priv->monitor_rpmdb = g_file_monitor_file(file_rpmdb,
- G_FILE_MONITOR_NONE,
- NULL,
- error);
+ /* Try home directory first. */
+ gchar *home_dir = g_strdup(g_get_home_dir());
+
+ priv->monitor_rpmdb = NULL;
+
+ if (home_dir) {
+ rpmdb_path = g_build_filename(priv->install_root, home_dir, ".rpmdb/Packages", NULL);
+
+ g_free(home_dir);
+ home_dir = NULL;
+
+ file_rpmdb = g_file_new_for_path(rpmdb_path);
+ priv->monitor_rpmdb = g_file_monitor_file(file_rpmdb,
+ G_FILE_MONITOR_NONE,
+ NULL,
+ error);
+ }
+
+ if (!priv->monitor_rpmdb) {
+ rpmdb_path = g_build_filename(priv->install_root, "var/lib/rpm/Packages", NULL);
+ file_rpmdb = g_file_new_for_path(rpmdb_path);
+ priv->monitor_rpmdb = g_file_monitor_file(file_rpmdb,
+ G_FILE_MONITOR_NONE,
+ NULL,
+ error);
+ }
+
if (priv->monitor_rpmdb == NULL)
return FALSE;
g_signal_connect(priv->monitor_rpmdb, "changed",