app-manager --update and --setup are documented to take URIs but they are not treated as such
1.1 --- a/app-manager/setup.c Tue Jul 14 18:03:26 2020 +0100
1.2 +++ b/app-manager/setup.c Wed Jul 15 16:04:47 2020 +0100
1.3 @@ -38,7 +38,7 @@
1.4 if (!helper)
1.5 {
1.6 helper=plover_transaction_helper_new(ui);
1.7 - plover_transaction_helper_set_base(helper,base);
1.8 + plover_transaction_helper_set_base_uri(helper,base);
1.9 prefix=plover_transaction_helper_get_prefix(helper,&error);
1.10 if (error)
1.11 g_clear_error(&error);
2.1 --- a/app-manager/update.c Tue Jul 14 18:03:26 2020 +0100
2.2 +++ b/app-manager/update.c Wed Jul 15 16:04:47 2020 +0100
2.3 @@ -39,7 +39,7 @@
2.4 if (!helper)
2.5 {
2.6 helper=plover_transaction_helper_new(ui);
2.7 - plover_transaction_helper_set_base(helper,base);
2.8 + plover_transaction_helper_set_base_uri(helper,base);
2.9 prefix=plover_transaction_helper_get_prefix(helper,&error);
2.10 if (error)
2.11 g_clear_error(&error);
3.1 --- a/plover-gtk/transactionhelper.c Tue Jul 14 18:03:26 2020 +0100
3.2 +++ b/plover-gtk/transactionhelper.c Wed Jul 15 16:04:47 2020 +0100
3.3 @@ -68,6 +68,7 @@
3.4 g_free(priv->default_prefix);
3.5 g_free(helper->error_primary_text);
3.6 g_free(helper->base);
3.7 + g_free(helper->base_uri);
3.8 g_free(helper->unsatisfied);
3.9 if (helper->comps)
3.10 plover_comps_free(helper->comps);
3.11 @@ -583,12 +584,12 @@
3.12 plover_transaction_helper_get_upstream(PloverTransactionHelper *helper,
3.13 GError **error)
3.14 {
3.15 - const char *base;
3.16 + const char *base_uri;
3.17 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.18 if (!helper->upstream)
3.19 {
3.20 - base=plover_transaction_helper_get_base(helper);
3.21 - helper->upstream=plover_repository_new_from_yum(base,error);
3.22 + base_uri=plover_transaction_helper_get_base_uri(helper);
3.23 + helper->upstream=plover_repository_new_from_yum_uri(base_uri,error);
3.24 }
3.25 return helper->upstream;
3.26 }
3.27 @@ -602,18 +603,53 @@
3.28 helper->upstream=g_object_ref(upstream);
3.29 }
3.30
3.31 +const char *
3.32 + plover_transaction_helper_get_base_uri(PloverTransactionHelper *helper)
3.33 +{
3.34 + g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.35 + return helper->base_uri;
3.36 +}
3.37 +
3.38 +static gboolean plover_gtk__uri_validate(const char *uri)
3.39 +{
3.40 + char *s;
3.41 + s=razor_path_relative_to_uri(uri,".",NULL);
3.42 + free(s);
3.43 + return !!s;
3.44 +}
3.45 +
3.46 +void plover_transaction_helper_set_base_uri(PloverTransactionHelper *helper,
3.47 + const char *base_uri)
3.48 +{
3.49 + g_return_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper));
3.50 + g_return_if_fail(helper->transactions == NULL);
3.51 + g_return_if_fail(plover_gtk__uri_validate(base_uri));
3.52 + g_free(helper->base_uri);
3.53 + helper->base_uri=g_strdup(base_uri);
3.54 + g_free(helper->base);
3.55 + helper->base=NULL;
3.56 +}
3.57 +
3.58 const char *plover_transaction_helper_get_base(PloverTransactionHelper *helper)
3.59 {
3.60 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.61 + if (helper->base_uri && !helper->base)
3.62 + helper->base=razor_path_from_uri(helper->base_uri,NULL);
3.63 return helper->base;
3.64 }
3.65
3.66 void plover_transaction_helper_set_base(PloverTransactionHelper *helper,
3.67 const char *base)
3.68 {
3.69 + gchar *base_uri;
3.70 g_return_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper));
3.71 g_return_if_fail(helper->transactions == NULL);
3.72 - g_free(helper->base);
3.73 + if (base)
3.74 + base_uri=razor_path_to_uri(base);
3.75 + else
3.76 + base_uri=NULL;
3.77 + plover_transaction_helper_set_base_uri(helper,base_uri);
3.78 + g_free(base_uri);
3.79 helper->base=g_strdup(base);
3.80 }
3.81
3.82 @@ -623,13 +659,10 @@
3.83 {
3.84 gchar *s;
3.85 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.86 - if (!helper->comps && helper->base)
3.87 + if (!helper->comps && helper->base_uri)
3.88 {
3.89 - s=g_strconcat(helper->base,"/repodata/comps.xml",NULL);
3.90 - helper->comps=plover_comps_new_from_file(s);
3.91 - if (!helper->comps)
3.92 - g_set_error(error,PLOVER_GENERAL_ERROR,
3.93 - PLOVER_GENERAL_ERROR_FAILED,"%s: %s",s,g_strerror(errno));
3.94 + s=g_strconcat(helper->base_uri,"/repodata/comps.xml",NULL);
3.95 + helper->comps=plover_comps_new_from_uri(s,error);
3.96 g_free(s);
3.97 }
3.98 return helper->comps;
3.99 @@ -643,9 +676,9 @@
3.100 struct comps *comps;
3.101 PloverTransactionHelperPrivate *priv;
3.102 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.103 - g_return_val_if_fail(helper->base != NULL || plover_transaction_helper_get_installed(helper) != NULL,NULL);
3.104 + g_return_val_if_fail(helper->base_uri != NULL || plover_transaction_helper_get_installed(helper) != NULL,NULL);
3.105 priv=PLOVER_TRANSACTION_HELPER_GET_PRIVATE(helper);
3.106 - if (helper->base)
3.107 + if (helper->base_uri)
3.108 {
3.109 comps=plover_transaction_helper_get_comps(helper,error);
3.110 if (!comps)
3.111 @@ -951,7 +984,7 @@
3.112 GError **error)
3.113 {
3.114 gboolean ok;
3.115 - const char *base,*prefix;
3.116 + const char *base_uri,*prefix;
3.117 GError *tmp_error=NULL;
3.118 PloverTransaction *transaction;
3.119 g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
3.120 @@ -969,8 +1002,9 @@
3.121 ok=plover_transaction_set_upstream(transaction,helper->upstream,error);
3.122 else
3.123 {
3.124 - base=plover_transaction_helper_get_base(helper);
3.125 - ok=plover_transaction_set_upstream_from_yum(transaction,base,error);
3.126 + base_uri=plover_transaction_helper_get_base_uri(helper);
3.127 + ok=plover_transaction_set_upstream_from_yum_uri(transaction,base_uri,
3.128 + error);
3.129 }
3.130 if (!ok)
3.131 {
4.1 --- a/plover-gtk/transactionhelper.h Tue Jul 14 18:03:26 2020 +0100
4.2 +++ b/plover-gtk/transactionhelper.h Wed Jul 15 16:04:47 2020 +0100
4.3 @@ -36,7 +36,7 @@
4.4 PloverPackageSet *alternate_installed,*installed;
4.5 PloverRepository *upstream;
4.6 PloverPackageSet *relocated_upstream;
4.7 - gchar *base;
4.8 + gchar *base_uri,*base;
4.9 gchar *unsatisfied;
4.10 struct comps *comps;
4.11 gboolean check_vendor;
4.12 @@ -67,6 +67,10 @@
4.13 GError **error);
4.14 void plover_transaction_helper_set_upstream(PloverTransactionHelper *helper,
4.15 PloverRepository *upstream);
4.16 +const char *
4.17 + plover_transaction_helper_get_base_uri(PloverTransactionHelper *helper);
4.18 +void plover_transaction_helper_set_base_uri(PloverTransactionHelper *helper,
4.19 + const char *base);
4.20 const char *plover_transaction_helper_get_base(PloverTransactionHelper *helper);
4.21 void plover_transaction_helper_set_base(PloverTransactionHelper *helper,
4.22 const char *base);