1.1 --- a/app-manager/app-manager.c Mon Aug 31 07:12:39 2020 +0100
1.2 +++ b/app-manager/app-manager.c Tue Jun 29 10:08:33 2021 +0100
1.3 @@ -211,10 +211,42 @@
1.4 gtk_window_set_default_icon_name(LOGO_NAME);
1.5 }
1.6
1.7 +static gboolean uri_validate(const char *uri)
1.8 +{
1.9 + char *s;
1.10 + s=razor_path_relative_to_uri(uri,".",NULL);
1.11 + free(s);
1.12 + return !!s;
1.13 +}
1.14 +
1.15 +char *uri_from_base(const char *base,gboolean use_paths)
1.16 +{
1.17 + char *retval;
1.18 + if (use_paths)
1.19 + {
1.20 + retval=razor_path_to_uri(base);
1.21 + if (!retval)
1.22 + {
1.23 + g_printerr("%s: Not a valid path\n",base);
1.24 + exit(1);
1.25 + }
1.26 + }
1.27 + else if (!uri_validate(base))
1.28 + {
1.29 + g_printerr("%s: Not a valid URI\n",base);
1.30 + exit(1);
1.31 + }
1.32 + else
1.33 + retval=strdup(base);
1.34 + return retval;
1.35 +}
1.36 +
1.37 int main(int argc,char **argv)
1.38 {
1.39 + gboolean use_paths=FALSE;
1.40 GError *err=0;
1.41 GtkWidget *w;
1.42 + char *uri;
1.43 gchar *s,*database_uri,*contents;
1.44 gchar *database=NULL,*setup_base=NULL,*update_base=NULL;
1.45 gchar *default_action_base=NULL;
1.46 @@ -226,12 +258,14 @@
1.47 GOptionEntry options[]={
1.48 {"database",0,0,G_OPTION_ARG_STRING,&database,
1.49 "Operate on a distribution-local database","vendor/distribution"},
1.50 + {"paths",0,0,G_OPTION_ARG_NONE,&use_paths,
1.51 + "Interpret locations as paths rather than URIs",NULL},
1.52 {"setup",0,0,G_OPTION_ARG_STRING,&setup_base,
1.53 - "Setup from installation media","uri"},
1.54 + "Setup from installation media","location"},
1.55 {"update",0,0,G_OPTION_ARG_STRING,&update_base,
1.56 - "Update from upgrade media","uri"},
1.57 + "Update from upgrade media","location"},
1.58 {"default-action",0,0,G_OPTION_ARG_STRING,&default_action_base,
1.59 - "Install, remove or update from repository","uri"},
1.60 + "Install, remove or update from repository","location"},
1.61 {NULL}
1.62 };
1.63 #ifdef WIN32
1.64 @@ -295,11 +329,23 @@
1.65 gtk_builder_connect_signals(ui,NULL);
1.66 gtk_link_button_set_uri_hook(show_uri,NULL,NULL);
1.67 if (setup_base)
1.68 - started=setup(setup_base);
1.69 + {
1.70 + uri=uri_from_base(setup_base,use_paths);
1.71 + started=setup(uri);
1.72 + free(uri);
1.73 + }
1.74 else if (update_base)
1.75 - started=update(update_base);
1.76 + {
1.77 + uri=uri_from_base(update_base,use_paths);
1.78 + started=update(uri);
1.79 + free(uri);
1.80 + }
1.81 else if (default_action_base)
1.82 - started=default_action(default_action_base);
1.83 + {
1.84 + uri=uri_from_base(default_action_base,use_paths);
1.85 + started=default_action(uri);
1.86 + free(uri);
1.87 + }
1.88 else
1.89 {
1.90 if (database)
2.1 --- a/plover-gtk/stockicons.c Mon Aug 31 07:12:39 2020 +0100
2.2 +++ b/plover-gtk/stockicons.c Tue Jun 29 10:08:33 2021 +0100
2.3 @@ -115,7 +115,7 @@
2.4 #endif
2.5 if (!prefix)
2.6 prefix=g_strdup("/usr");
2.7 - datadir=g_strconcat(prefix,"share",NULL);
2.8 + datadir=g_build_filename(prefix,"share",NULL);
2.9 g_free(prefix);
2.10 }
2.11 if (plover_pixbuf_supports_svg())
3.1 --- a/plover-gtk/transactionhelper.c Mon Aug 31 07:12:39 2020 +0100
3.2 +++ b/plover-gtk/transactionhelper.c Tue Jun 29 10:08:33 2021 +0100
3.3 @@ -492,10 +492,12 @@
3.4 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.5 if (!helper->installed)
3.6 {
3.7 - comps=plover_transaction_helper_get_comps(helper,NULL);
3.8 + comps=plover_transaction_helper_get_comps(helper,&error);
3.9 if (!comps)
3.10 {
3.11 - g_warning("plover_transaction_helper_get_installed: No comps");
3.12 + g_warning("plover_transaction_helper_get_installed: No comps: %s",
3.13 + error->message);
3.14 + g_error_free(error);
3.15 return NULL;
3.16 }
3.17 install_root=getenv("RAZOR_ROOT");
3.18 @@ -656,13 +658,22 @@
3.19 plover_transaction_helper_get_comps(PloverTransactionHelper *helper,
3.20 GError **error)
3.21 {
3.22 - gchar *s;
3.23 + char *s;
3.24 + GError *tmp_err=NULL;
3.25 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.26 if (!helper->comps && helper->base_uri)
3.27 {
3.28 - s=g_strconcat(helper->base_uri,"/repodata/comps.xml",NULL);
3.29 - helper->comps=plover_comps_new_from_uri(s,error);
3.30 - g_free(s);
3.31 + s=razor_path_relative_to_uri(helper->base_uri,"repodata/comps.xml",
3.32 + NULL);
3.33 + helper->comps=plover_comps_new_from_uri(s,&tmp_err);
3.34 + if (!helper->comps)
3.35 + {
3.36 + g_warning(
3.37 + "PloverTransactionHelper: Failed to get comps at '%s': %s",
3.38 + s,tmp_err->message);
3.39 + g_propagate_error(error,tmp_err);
3.40 + }
3.41 + free(s);
3.42 }
3.43 return helper->comps;
3.44 }
4.1 --- a/setup/setup.js.in Mon Aug 31 07:12:39 2020 +0100
4.2 +++ b/setup/setup.js.in Tue Jun 29 10:08:33 2021 +0100
4.3 @@ -57,7 +57,7 @@
4.4 {
4.5 path = FileSystemObject.BuildPath(install_prefix,
4.6 "bin\\app-manager.exe");
4.7 - WshShell.Run("\"" + path + "\" --setup \"" + ScriptPath + "\"");
4.8 + WshShell.Run("\"" + path + "\" --paths --setup \"" + ScriptPath + "\"");
4.9 }
4.10 else
4.11 {
5.1 --- a/update/update.js.in Mon Aug 31 07:12:39 2020 +0100
5.2 +++ b/update/update.js.in Tue Jun 29 10:08:33 2021 +0100
5.3 @@ -49,7 +49,8 @@
5.4 {
5.5 path = FileSystemObject.BuildPath(install_prefix,
5.6 "bin\\app-manager.exe");
5.7 - WshShell.Run("\"" + path + "\" --update \"" + ScriptPath + "\"");
5.8 + WshShell.Run("\"" + path + "\" --paths "
5.9 + + "--update \"" + ScriptPath + "\"");
5.10 }
5.11 else
5.12 {