[yast-commit] r40724 - in /trunk/packager: package/yast2-packager.changes src/modules/AddOnProduct.ycp

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.c... ============================================================================== --- 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... ============================================================================== --- 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 <string, string> params + * + * @example + * MakeMapFromParams ("device=sda3&login=aaa&password=bbb") -> $[ + * "device" : "sda3", + * "login" : "aaa", + * "password" : "bbb" + * ] + */ +map <string, string> MakeMapFromParams (string params) { + list <string> params_list = splitstring (params, "&"); + + params_list = filter (string one_param, params_list, { + return (one_param != "" && one_param != nil); + }); + + map <string, string> 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 <string, string> base_params_map = MakeMapFromParams (base_params); + map <string, string> added_params_map = MakeMapFromParams (added_params); + map <string, string> final_params_map = (map <string, string>) 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
participants (1)
-
locilka@svn.opensuse.org