Author: locilka
Date: Mon Sep 3 16:43:14 2007
New Revision: 40724
URL: http://svn.opensuse.org/viewcvs/yast?rev=40724&view=rev
Log:
- Correctly evaluating relurl:// parameters, such as
relurl://.../?device=sda5 (#306670).
- 2.15.74
Modified:
trunk/packager/package/yast2-packager.changes
trunk/packager/src/modules/AddOnProduct.ycp
Modified: trunk/packager/package/yast2-packager.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/packager/package/yast2-packager.changes?rev=40724&r1=40723&r2=40724&view=diff
==============================================================================
--- trunk/packager/package/yast2-packager.changes (original)
+++ trunk/packager/package/yast2-packager.changes Mon Sep 3 16:43:14 2007
@@ -1,10 +1,16 @@
-------------------------------------------------------------------
+Mon Sep 3 16:41:26 CEST 2007 - locilka@suse.cz
+
+- Correctly evaluating relurl:// parameters, such as
+ relurl://.../?device=sda5 (#306670).
+- 2.15.74
+
+-------------------------------------------------------------------
Mon Sep 3 16:36:13 CEST 2007 - lslezak@suse.cz
- use gif animation for the busy indicator (works also in Gtk UI)
(#296945), do not restart the animation too often (wait at least
3 seconds)
-- 2.15.74
-------------------------------------------------------------------
Mon Sep 3 14:07:53 CEST 2007 - lslezak@suse.cz
Modified: trunk/packager/src/modules/AddOnProduct.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/packager/src/modules/AddOnProduct.ycp?rev=40724&r1=40723&r2=40724&view=diff
==============================================================================
--- trunk/packager/src/modules/AddOnProduct.ycp (original)
+++ trunk/packager/src/modules/AddOnProduct.ycp Mon Sep 3 16:43:14 2007
@@ -105,6 +105,47 @@
}
/**
+ * Reads list of HTTP params and returns them as map
+ *
+ * @params string params
+ * @return map params
+ *
+ * @example
+ * MakeMapFromParams ("device=sda3&login=aaa&password=bbb") -> $[
+ * "device" : "sda3",
+ * "login" : "aaa",
+ * "password" : "bbb"
+ * ]
+ */
+map MakeMapFromParams (string params) {
+ list <string> params_list = splitstring (params, "&");
+
+ params_list = filter (string one_param, params_list, {
+ return (one_param != "" && one_param != nil);
+ });
+
+ map ret = $[];
+ integer eq_pos = nil;
+ string opt = "";
+ string val = "";
+
+ foreach (string one_param, params_list, {
+ eq_pos = search (one_param, "=");
+
+ if (eq_pos == nil) {
+ ret[one_param] = "";
+ } else {
+ opt = substring (one_param, 0, eq_pos);
+ val = substring (one_param, (eq_pos + 1));
+
+ ret[opt] = val;
+ }
+ });
+
+ return ret;
+}
+
+/**
* Returns an absolute URL from base + relative url.
* Relative URL needs to start with 'reulrl://' othewise
* it is not considered being relative and it's returned
@@ -135,11 +176,28 @@
return url;
}
+ // bugzilla #306670
+ integer base_params_pos = search (base_url, "?");
+ string base_params = "";
+
+ if (base_params_pos != nil && base_params_pos >= 0) {
+ base_params = substring (base_url, (base_params_pos + 1));
+ base_url = substring (base_url, 0, base_params_pos);
+ }
+
+ integer added_params_pos = search (url, "?");
+ string added_params = "";
+
+ if (added_params_pos != nil && added_params_pos >= 0) {
+ added_params = substring (url, (added_params_pos + 1));
+ url = substring (url, 0, added_params_pos);
+ }
+
if (! regexpmatch (base_url, "/$")) {
base_url = base_url + "/";
}
- y2milestone ("Merging '%1' to '%2'", url, base_url);
+ y2milestone ("Merging '%1' (params '%2') to '%3' (params '%4')", url, added_params, base_url, base_params);
url = regexpsub (url, "^relurl://(.*)$", "\\1");
url = sformat ("%1%2", base_url, url);
@@ -173,6 +231,29 @@
url = regexpsub (url, "^(.*)/\\./(.*)", "\\1/\\2");
}
+ map base_params_map = MakeMapFromParams (base_params);
+ map added_params_map = MakeMapFromParams (added_params);
+ map final_params_map = (map ) union (base_params_map, added_params_map);
+
+ if (size (final_params_map) > 0) {
+ y2milestone ("%1 merge %2 -> %3", base_params_map, added_params_map, final_params_map);
+
+ string url_add = "";
+
+ foreach (string opt, string val, final_params_map, {
+ url_add =
+ url_add +
+ // add '&' if needed
+ (size (url_add) > 0 ? "&" : "") +
+ opt +
+ // define 'opt=val' if val is set
+ // otherwise don't use '=val' at all
+ (size (val) > 0 ? "=" + val : "");
+ });
+
+ url = url + "?" + url_add;
+ }
+
y2milestone ("Final URL: '%1'", url);
return url;
}
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org