Author: benjimanw Date: Tue Nov 27 14:02:23 2007 New Revision: 42436 URL: http://svn.opensuse.org/viewcvs/yast?rev=42436&view=rev Log: Fix for bug 341840. Modified: trunk/metapackage/package/yast2-metapackage-handler.changes trunk/metapackage/src/OneClickInstall.ycp trunk/metapackage/src/OneClickInstallUI.ycp trunk/metapackage/src/YPX.pm Modified: trunk/metapackage/package/yast2-metapackage-handler.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/metapackage/package/yast2-metapackage-handler.changes?rev=42436&r1=42435&r2=42436&view=diff ============================================================================== --- trunk/metapackage/package/yast2-metapackage-handler.changes (original) +++ trunk/metapackage/package/yast2-metapackage-handler.changes Tue Nov 27 14:02:23 2007 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Tue Nov 27 13:00:00 GMT 2007 - benji.weber@gmail.com + +- Catch errors caused by invalid XML. (341840) +- Fall back to xdg_menu_su on xdg_su failure. + +------------------------------------------------------------------- Mon Nov 19 17:02:49 CET 2007 - locilka@suse.cz - Fixed used terminology (repositories) (FATE #302970). Modified: trunk/metapackage/src/OneClickInstall.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/metapackage/src/OneClickInstall.ycp?rev=42436&r1=42435&r2=42436&view=diff ============================================================================== --- trunk/metapackage/src/OneClickInstall.ycp (original) +++ trunk/metapackage/src/OneClickInstall.ycp Tue Nov 27 14:02:23 2007 @@ -89,6 +89,9 @@ { //Load the XML from file. any xml = YPX::Load(url); + //Load returns false on error + if (xml == false) + return; //Try and load the name. name = YPX::SelectValue(xml,"/metapackage/group[@distversion='" + Product::name + "']/name"); Modified: trunk/metapackage/src/OneClickInstallUI.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/metapackage/src/OneClickInstallUI.ycp?rev=42436&r1=42435&r2=42436&view=diff ============================================================================== --- trunk/metapackage/src/OneClickInstallUI.ycp (original) +++ trunk/metapackage/src/OneClickInstallUI.ycp Tue Nov 27 14:02:23 2007 @@ -14,6 +14,8 @@ list args = WFM::Args(); string SU_CMD = "xdg-su -c"; + integer SU_CMD_FAILURE_CODE = 3; + string FALLBACK_SU_CMD = "xdg_menu_su"; string SEPARATOR = "/"; string metaPackageUrl = "http://opensuse.org/repos.ymp"; @@ -74,6 +76,7 @@ string WILL_NOT_REMAIN_SUBSCRIBED = _("These repositories will only be added during installation, you will not remain subscribed."); string NB = _("Note:"); string NOTHING = _("There is nothing to do."); + string NOTHING_EXPLANATION = _("The 'one click install' link you used was probably malformed, please report this to the author.") ; string REQUIRE_ADVANCED = _("Advanced mode with ability to change settings."); string SPLASH_HEADING = _("Welcome"); // %1: software package @@ -139,7 +142,8 @@ term nothing = `VBox ( - `Heading(NOTHING) + `Heading(NOTHING), + `RichText(NOTHING_EXPLANATION) ); term confirm = `HBox( @@ -595,6 +599,8 @@ } else { integer ret = (integer)SCR::Execute (.target.bash, SU_CMD + " '/sbin/yast2 OneClickInstallWorker " + communication_file + "'"); + if (ret == SU_CMD_FAILURE_CODE) + ret = (integer)SCR::Execute (.target.bash, FALLBACK_SU_CMD + " '/sbin/yast2 OneClickInstallWorker " + communication_file + "'"); } //Load the response. Modified: trunk/metapackage/src/YPX.pm URL: http://svn.opensuse.org/viewcvs/yast/trunk/metapackage/src/YPX.pm?rev=42436&r1=42435&r2=42436&view=diff ============================================================================== --- trunk/metapackage/src/YPX.pm (original) +++ trunk/metapackage/src/YPX.pm Tue Nov 27 14:02:23 2007 @@ -5,36 +5,65 @@ #use Data::Dumper; use XML::XPath; use XML::XPath::XMLParser; +use YaST::YCP; our %TYPEINFO; BEGIN { $TYPEINFO{Load} = ["function","any","string"]; } - sub Load { - my ($package,$url) = @_; - return XML::XPath->new(filename => $url); + my $xml_result; + #try + eval + { + my ($package,$url) = @_; + $xml_result = XML::XPath->new(filename => $url); + }; + #catch (Throwable t) + if ($@) + { + return YaST::YCP::Boolean(0); + }; + return $xml_result; } BEGIN { $TYPEINFO{SelectValue} = ["function","string","any","string"]; } sub SelectValue { - my ($package,$xp,$xpath) = @_; - my $value = $xp->getNodeText($xpath)->value(); - return $value; + my $xml_result; + #try + eval + { + my ($package,$xp,$xpath) = @_; + $xml_result = $xp->getNodeText($xpath)->value(); + }; + #catch (Throwable t) + if ($@) + { + return; + }; + return $xml_result; } BEGIN { $TYPEINFO{SelectValues} = ["function",["list","string"],"any","string"]; } sub SelectValues { - my ($package,$xp,$xpath) = @_; - my $nodes = $xp->findnodes($xpath); - my $values = []; - foreach my $node ($nodes->get_nodelist) { - push(@$values,$node->string_value()); - } - - return $values; + my $xml_result = []; + #try + eval + { + my ($package,$xp,$xpath) = @_; + my $nodes = $xp->findnodes($xpath); + foreach my $node ($nodes->get_nodelist) { + push(@$xml_result,$node->string_value()); + } + }; + #catch (Throwable t) + if ($@) + { + return; + }; + return $xml_result; } -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org