1.1 --- a/app-manager/app-manager.c Mon Jun 13 12:18:42 2016 +0100
1.2 +++ b/app-manager/app-manager.c Tue Apr 24 20:58:03 2018 +0100
1.3 @@ -215,17 +215,20 @@
1.4 {
1.5 GError *err=0;
1.6 GtkWidget *w;
1.7 - gchar *s,*contents;
1.8 - gchar *setup_base=NULL,*update_base=NULL;
1.9 + gchar *s,*database_uri,*contents;
1.10 + gchar *database=NULL,*setup_base=NULL,*update_base=NULL;
1.11 gsize len;
1.12 - PloverPackageSet *set;
1.13 + struct comps *comps;
1.14 + PloverPackageSet *set=NULL;
1.15 GSList *objects,*lnk;
1.16 gboolean started;
1.17 GOptionEntry options[]={
1.18 - {"setup",0,0,G_OPTION_ARG_FILENAME,&setup_base,
1.19 - "Setup from installation media","path"},
1.20 - {"update",0,0,G_OPTION_ARG_FILENAME,&update_base,
1.21 - "Update from upgrade media","path"},
1.22 + {"database",0,0,G_OPTION_ARG_STRING,&database,
1.23 + "Operate on a distribution-local database","vendor/distribution"},
1.24 + {"setup",0,0,G_OPTION_ARG_STRING,&setup_base,
1.25 + "Setup from installation media","uri"},
1.26 + {"update",0,0,G_OPTION_ARG_STRING,&update_base,
1.27 + "Update from upgrade media","uri"},
1.28 {NULL}
1.29 };
1.30 #ifdef WIN32
1.31 @@ -285,30 +288,52 @@
1.32 g_error("%s",err->message);
1.33 exit(0);
1.34 }
1.35 - if (prefix)
1.36 - {
1.37 - relocations=razor_relocations_create();
1.38 - razor_relocations_add(relocations,"/usr",prefix);
1.39 - }
1.40 gtk_builder_connect_signals(ui,NULL);
1.41 gtk_link_button_set_uri_hook(show_uri,NULL,NULL);
1.42 - installed=GTK_TREE_MODEL(plover_package_store_new());
1.43 - set=plover_package_set_new();
1.44 - (void)plover_package_set_open(set,"",TRUE,NULL);
1.45 - plover_package_store_add_set(PLOVER_PACKAGE_STORE(installed),set);
1.46 - if (plover_package_set_get_no_details(set))
1.47 - {
1.48 - w=GTK_WIDGET(gtk_builder_get_object(ui,"ViewFiles"));
1.49 - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),TRUE);
1.50 - }
1.51 - applications=plover_applications_model_new(installed);
1.52 - set_package_model(applications);
1.53 if (setup_base)
1.54 - started=setup(set,setup_base);
1.55 + started=setup(setup_base);
1.56 else if (update_base)
1.57 - started=update(set,update_base);
1.58 + started=update(update_base);
1.59 else
1.60 {
1.61 + if (database)
1.62 + {
1.63 + g_free(prefix);
1.64 + prefix=NULL;
1.65 + s=strchr(database,'/');
1.66 + if (*s)
1.67 + *s++='\0';
1.68 + comps=plover_comps_new();
1.69 + plover_comps_set_vendor(comps,database);
1.70 + if (s)
1.71 + {
1.72 + plover_comps_set_distribution(comps,s);
1.73 + *--s='/';
1.74 + }
1.75 + prefix=plover_comps_get_default_prefix(comps);
1.76 + plover_comps_free(comps);
1.77 + s=g_strconcat(prefix,"/var/lib/razor",NULL);
1.78 + database_uri=razor_path_to_uri(s);
1.79 + g_free(s);
1.80 + razor_set_database_uri(database_uri);
1.81 + g_free(database_uri);
1.82 + }
1.83 + if (prefix)
1.84 + {
1.85 + relocations=razor_relocations_create();
1.86 + razor_relocations_add(relocations,"/usr",prefix);
1.87 + }
1.88 + installed=GTK_TREE_MODEL(plover_package_store_new());
1.89 + set=plover_package_set_new();
1.90 + (void)plover_package_set_open(set,"",TRUE,NULL);
1.91 + plover_package_store_add_set(PLOVER_PACKAGE_STORE(installed),set);
1.92 + if (plover_package_set_get_no_details(set))
1.93 + {
1.94 + w=GTK_WIDGET(gtk_builder_get_object(ui,"ViewFiles"));
1.95 + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),TRUE);
1.96 + }
1.97 + applications=plover_applications_model_new(installed);
1.98 + set_package_model(applications);
1.99 w=GTK_WIDGET(gtk_builder_get_object(ui,"MainWindow"));
1.100 gtk_widget_show(w);
1.101 started=TRUE;
1.102 @@ -332,6 +357,7 @@
1.103 g_free(prefix);
1.104 g_free(setup_base);
1.105 g_free(update_base);
1.106 + g_free(database);
1.107 exit(0);
1.108 }
1.109