Hello community, here is the log from the commit of package suseRegister checked in at Mon Jul 10 17:29:18 CEST 2006. -------- --- suseRegister/suseRegister.changes 2006-07-07 11:03:08.000000000 +0200 +++ suseRegister/suseRegister.changes 2006-07-10 16:12:37.000000000 +0200 @@ -1,0 +2,6 @@ +Mon Jul 10 16:10:39 CEST 2006 - mc@suse.de + +- use Objects for XML parsing not the tree +- detect FACTORY and exit with a special return code + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ suseRegister.spec ++++++ --- /var/tmp/diff_new_pack.gsCVgo/_old 2006-07-10 17:27:26.000000000 +0200 +++ /var/tmp/diff_new_pack.gsCVgo/_new 2006-07-10 17:27:26.000000000 +0200 @@ -12,7 +12,7 @@ Name: suseRegister Version: 1.0 -Release: 63 +Release: 64 Summary: Registration tool Group: Productivity/Other License: GPL @@ -66,6 +66,9 @@ /usr/lib/suseRegister/bin/* %changelog -n suseRegister +* Mon Jul 10 2006 - mc@suse.de +- use Objects for XML parsing not the tree +- detect FACTORY and exit with a special return code * Fri Jul 07 2006 - mc@suse.de - use uuidgen to create a guid if zmd is not available. * Mon Jul 03 2006 - mc@suse.de ++++++ suseRegister-1.0.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/suseRegister-1.0/suse_register new/suseRegister-1.0/suse_register --- old/suseRegister-1.0/suse_register 2006-07-07 10:49:20.000000000 +0200 +++ new/suseRegister-1.0/suse_register 2006-07-10 16:09:36.000000000 +0200 @@ -470,13 +470,13 @@ print STDERR "LOGIC: $logic\n" if($debug >= 3); print STDERR Data::Dumper->Dump([$tree])."\n" if($debug >= 3); - for (my $i = 0; $i < @{$tree}; $i++) + foreach my $kid (@$tree) { - next if(!defined $tree->[$i]); + my $local_mandatory = $mandatory; - if ($tree->[$i] eq "param") + if (ref($kid) eq "SR::param") { - if (@{$tree->[$i+1]} > 1) + if (@{$kid->{Kids}} > 1) { $nextLogic = "AND"; } @@ -485,54 +485,95 @@ $logic = $nextLogic; } } - elsif ($tree->[$i] eq "select") + elsif (ref($kid) eq "SR::select") { $nextLogic = "OR"; - if($logic eq "") + if($logic eq "") { $logic = $nextLogic; } } - elsif ($tree->[$i] eq "host" || $tree->[$i] eq "guid") + elsif (ref($kid) eq "SR::host" || ref($kid) eq "SR::guid") { # skip host and guid. There are no strings for the user to display. - $i++; next; } - elsif ($tree->[$i] eq "privacy") + elsif (ref($kid) eq "SR::privacy") { - $i++; - my $hash = $tree->[$i]->[0]; - if (exists $hash->{description} && defined $hash->{description}) + if (exists $kid->{description} && defined $kid->{description}) { if(!$yastcall) { $registerPrivPol .= "\nInformation on Novell's Privacy Policy:\n"; - $registerPrivPol .= $hash->{description}."\n"; + $registerPrivPol .= $kid->{description}."\n"; } else { $registerPrivPol .= "<p>Information on Novell's Privacy Policy:<br>\n"; - $registerPrivPol .= $hash->{description}."</p>\n"; + $registerPrivPol .= $kid->{description}."</p>\n"; } } - if (exists $hash->{url} && defined $hash->{url} && $hash->{url} ne "") + if (exists $kid->{url} && defined $kid->{url} && $kid->{url} ne "") { if(!$yastcall) { - $registerPrivPol .= $hash->{url}."\n"; + $registerPrivPol .= $kid->{url}."\n"; } else { - $registerPrivPol .= "<p>{url}."\">"; - $registerPrivPol .= $hash->{url}."</a></p>\n"; + $registerPrivPol .= "<p>{url}."\">"; + $registerPrivPol .= $kid->{url}."</a></p>\n"; } } } - elsif ( ref($tree->[$i]) eq "ARRAY") - { - evalInteractiveArgs($tree->[$i], $nextLogic, $indent, $mandatory); + + if (exists $kid->{class} && + defined $kid->{class} && + $kid->{class} eq "mandatory") + { + $local_mandatory = 1; + $mandstr = "(mandatory)"; + print STDERR "Found mandatory\n" if($debug >= 3); + } + elsif(!$local_mandatory && + !exists $kid->{class}) + { + $mandstr = "(optional)"; + } + + if (ref($kid) ne "SR::privacy" && + @{$kid->{Kids}} == 0 && + defined $kid->{description} && defined $kid->{id} ) + { + if ( ($initnooptional && $local_mandatory) || !$initnooptional) + { + print STDERR "Add instruction\n" if($debug >= 3); + + my $txt = $indent."* ".$kid->{description}." $mandstr"; + if(!$yastcall) + { + $txt .= ":\t".$kid->{id}."=<value>\n"; + } + else + { + $txt .= "\n"; + } + push @registerReadableText, $txt; + } + } + elsif (ref($kid) ne "SR::privacy" && defined $kid->{description}) + { + if ( ($initnooptional && $local_mandatory) || !$initnooptional) + { + print STDERR "Add description\n" if($debug >= 3); + push @registerReadableText, $indent.$kid->{description}." $mandstr with:\n"; + } + } + + if ( exists $kid->{Kids} && @{$kid->{Kids}} > 0 ) + { + evalInteractiveArgs($kid->{Kids}, $nextLogic, $indent, $local_mandatory); $nextLogic = $logic; if (defined $registerReadableText[$#registerReadableText] && $registerReadableText[$#registerReadableText] =~ /^\s*AND|OR\s*$/i) @@ -551,50 +592,7 @@ push @registerReadableText, $indent."$logic\n"; } } - elsif ( ref($tree->[$i]) eq "HASH") - { - if (exists $tree->[$i]->{class} && - defined $tree->[$i]->{class} && - $tree->[$i]->{class} eq "mandatory") - { - $mandatory = 1; - $mandstr = "(mandatory)"; - print STDERR "Found mandatory\n" if($debug >= 3); - } - elsif(!$mandatory && - !exists $tree->[$i]->{class}) - { - $mandstr = "(optional)"; - } - - if (@$tree == 1 && - defined $tree->[$i]->{description} && defined $tree->[$i]->{id} ) - { - if ( ($initnooptional && $mandatory) || !$initnooptional) - { - print STDERR "Add instruction\n" if($debug >= 3); - - my $txt = $indent."* ".$tree->[$i]->{description}." $mandstr"; - if(!$yastcall) - { - $txt .= ":\t".$tree->[$i]->{id}."=<value>\n"; - } - else - { - $txt .= "\n"; - } - push @registerReadableText, $txt; - } - } - elsif (defined $tree->[$i]->{description}) - { - if ( ($initnooptional && $mandatory) || !$initnooptional) - { - print STDERR "Add description\n" if($debug >= 3); - push @registerReadableText, $indent.$tree->[$i]->{description}." $mandstr with:\n"; - } - } - } + } } @@ -609,39 +607,38 @@ { logPrintExit("No data.\n",14); } - - for (my $i = 0; $i < @{$tree}; $i++) + #print Data::Dumper->Dump([$tree])."\n"; + + foreach my $kid (@$tree) { - next if(!defined $tree->[$i]); - - if ( ref($tree->[$i]) eq "ARRAY") - { - $modified = addAutomaticArgs($tree->[$i], $mandatory, $modified); + if (exists $kid->{class} && + defined $kid->{class} && + $kid->{class} eq "mandatory") + { + $mandatory = 1; } - elsif ( ref($tree->[$i]) eq "HASH") + + if (@{$kid->{Kids}} == 0 && + exists $kid->{command} && + exists $kid->{id} && + defined $kid->{command} && + defined $kid->{id}) { - if (exists $tree->[$i]->{class} && - defined $tree->[$i]->{class} && - $tree->[$i]->{class} eq "mandatory") + if( ($nooptional && $mandatory) || !$nooptional) { - $mandatory = 1; - } - - if (@$tree == 1 && - defined $tree->[$i]->{command} && - defined $tree->[$i]->{id}) - { - if( ($nooptional && $mandatory) || !$nooptional) - { - my $ret = evaluateCommand($tree->[$i]->{command}, $mandatory); - if (defined $ret) - { - $args{$tree->[$i]->{id}} = $ret; - $modified = 1; - } + my $ret = evaluateCommand($kid->{command}, $mandatory); + if (defined $ret) + { + $args{$kid->{id}} = $ret; + $modified = 1; } } } + + if (@{$kid->{Kids}} > 0) + { + $modified = addAutomaticArgs($kid->{Kids}, $mandatory, $modified); + } } return $modified; } @@ -658,52 +655,34 @@ logPrintExit("No data.\n", 14); } - for (my $i = 0; $i < @$tree; $i++) + foreach my $kid (@$tree) { - next if(!defined $tree->[$i]); - - if ($tree->[$i] eq "service" && - ref($tree->[$i+1]) eq "ARRAY" && - ref($tree->[$i+1]->[0]) eq "HASH" && - exists $tree->[$i+1]->[0]->{id}) - { - $serviceName = $tree->[$i+1]->[0]->{id}; - if (exists $tree->[$i+1]->[0]->{type}) - { - $zmdConfig->{$serviceName}->{type} = $tree->[$i+1]->[0]->{type}; - } - } - elsif (ref($tree->[$i]) eq "ARRAY") + if (ref($kid) eq "SR::service" && + exists $kid->{id}) { - walkResultZmdconfig($tree->[$i], $serviceName, $paramName, $catalogURL); - - if (defined $paramName) + $serviceName = $kid->{id}; + if (exists $kid->{type} && defined $kid->{type}) { - $paramName = undef; - } - elsif (defined $serviceName) - { - $serviceName = undef; + $zmdConfig->{$serviceName}->{type} = $kid->{type}; } } - elsif ($serviceName && - $tree->[$i] eq "param" && - ref($tree->[$i+1]) eq "ARRAY" && - ref($tree->[$i+1]->[0]) eq "HASH") + + if ($serviceName && + ref($kid) eq "SR::param" ) { - if (exists $tree->[$i+1]->[0]->{id}) - { - $paramName = $tree->[$i+1]->[0]->{id}; + if (exists $kid->{id} && defined $kid->{id}) + { + $paramName = $kid->{id}; } - elsif (exists $tree->[$i+1]->[0]->{name}) + elsif (exists $kid->{name} && defined $kid->{name}) { - $paramName = $tree->[$i+1]->[0]->{name}; + $paramName = $kid->{name}; if($paramName eq "catalog") { - if(exists $tree->[$i+1]->[0]->{url}) + if(exists $kid->{url} && defined $kid->{url}) { - $catalogURL = $tree->[$i+1]->[0]->{url}; + $catalogURL = $kid->{url}; } else { @@ -712,37 +691,57 @@ } } } - elsif ($serviceName && - $paramName && - $tree->[$i] == 0 ) + + if ($serviceName && + $paramName && + ref($kid->{Kids}->[0]) eq "SR::Characters" && + exists $kid->{Kids}->[0]->{Text} && + defined $kid->{Kids}->[0]->{Text}) { - $i++; + my $text = $kid->{Kids}->[0]->{Text}; + if ($paramName eq "catalog") # more than one catalog allowed { - $zmdConfig->{$serviceName}->{catalog}->{$tree->[$i]} = $catalogURL; + $zmdConfig->{$serviceName}->{catalog}->{$text} = $catalogURL; } else { - $zmdConfig->{$serviceName}->{$paramName} = $tree->[$i]; + $zmdConfig->{$serviceName}->{$paramName} = $text; } - return; } - elsif (!defined $serviceName && - $tree->[$i] eq "param" && - ref($tree->[$i+1]) eq "ARRAY" && - ref($tree->[$i+1]->[0]) eq "HASH") + + if (!defined $serviceName && + ref($kid) eq "SR::param") { - if (exists $tree->[$i+1]->[0]->{id}) + if (exists $kid->{id}) { - $paramName = $tree->[$i+1]->[0]->{id}; + $paramName = $kid->{id}; } } - elsif (! defined $serviceName && - $paramName && - $tree->[$i] == 0 ) + + if (! defined $serviceName && + $paramName && + ref($kid->{Kids}->[0]) eq "SR::Characters" && + exists $kid->{Kids}->[0]->{Text} && + defined $kid->{Kids}->[0]->{Text}) { - $i++; - $zmdConfig->{"globalzmdoptions"}->{$paramName} = $tree->[$i]; + $zmdConfig->{"globalzmdoptions"}->{$paramName} = $kid->{Kids}->[0]->{Text}; + } + + if (exists $kid->{Kids} && + ref($kid->{Kids}) eq "ARRAY" && + ref($kid) ne "SR::Characters") #check on Kids does not work in Characters + { + walkResultZmdconfig($kid->{Kids}, $serviceName, $paramName, $catalogURL); + + if (defined $paramName) + { + $paramName = undef; + } + elsif (defined $serviceName) + { + $serviceName = undef; + } } } } @@ -1088,12 +1087,13 @@ $text .= "-a can be used multiple times\n\n"; } - my $p = new XML::Parser(Style => 'Tree'); + my $p = new XML::Parser(Style => 'Objects', Pkg => 'SR'); my $tree = $p->parse($res); #print Data::Dumper->Dump([$tree])."\n"; - if (! defined $tree || $tree->[0] ne "paramlist" || ref($tree->[1]) ne "ARRAY") + if (! defined $tree || ref($tree->[0]) ne "SR::paramlist" || + ! exists $tree->[0]->{Kids} || ref($tree->[0]->{Kids}) ne "ARRAY") { logPrintExit("Unknown format. Cannot show human readable output. Try --xml-output.\n". 6); @@ -1104,34 +1104,28 @@ $text .= "<pre>"; } - for (my $i = 0; $i < @{$tree->[1]}; $i++) + foreach my $kid (@{$tree->[0]->{Kids}}) { #print Data::Dumper->Dump([$tree->[1]->[$i]])."\n\n"; - if (defined $tree->[1]->[$i] && - $tree->[1]->[$i] eq "param" && - ref($tree->[1]->[$i+1]) eq "ARRAY" && - ref($tree->[1]->[$i+1]->[0]) eq "HASH" ) + if (ref($kid) eq "SR::param") { - $i++; - my $hash = $tree->[1]->[$i]->[0]; - - if (exists $hash->{command} && defined $hash->{command} && - $nohwdata && $hash->{command} =~ /^hwinfo/) + if (exists $kid->{command} && defined $kid->{command} && + $nohwdata && $kid->{command} =~ /^hwinfo/) { # skip; --no-hw-data was provided next; } - $text .= "* ".$hash->{description}.": "; + $text .= "* ".$kid->{description}.": "; if(!$yastcall) { - $text .= "\n\t".$hash->{id}."=<value> "; + $text .= "\n\t".$kid->{id}."=<value> "; } - if (exists $hash->{command} && defined $hash->{command} && $hash->{command} ne "") + if (exists $kid->{command} && defined $kid->{command} && $kid->{command} ne "") { - $text .= "(command: ".$hash->{command}.")\n"; + $text .= "(command: ".$kid->{command}.")\n"; } else { @@ -1142,38 +1136,32 @@ $text .= "\n"; } } - elsif (defined $tree->[1]->[$i] && - $tree->[1]->[$i] eq "privacy" && - ref($tree->[1]->[$i+1]) eq "ARRAY" && - ref($tree->[1]->[$i+1]->[0]) eq "HASH" ) + elsif (ref($kid) eq "SR::privacy" ) { - $i++; - my $hash = $tree->[1]->[$i]->[0]; - - if (exists $hash->{description} && defined $hash->{description}) + if (exists $kid->{description} && defined $kid->{description}) { if(!$yastcall) { $privpol .= "\nInformation on Novell's Privacy Policy:\n"; - $privpol .= $hash->{description}."\n"; + $privpol .= $kid->{description}."\n"; } else { $privpol .= "<p>Information on Novell's Privacy Policy:<br>\n"; - $privpol .= $hash->{description}."</p>\n"; + $privpol .= $kid->{description}."</p>\n"; } } - if (exists $hash->{url} && defined $hash->{url} && $hash->{url} ne "") + if (exists $kid->{url} && defined $kid->{url} && $kid->{url} ne "") { if(!$yastcall) { - $privpol .= $hash->{url}."\n"; + $privpol .= $kid->{url}."\n"; } else { - $privpol .= "<p>{url}."\">"; - $privpol .= $hash->{url}."</a></p>\n"; + $privpol .= "<p>{url}."\">"; + $privpol .= $kid->{url}."</a></p>\n"; } } } @@ -1892,12 +1880,13 @@ } $lastResponse = $res; - my $p = new XML::Parser(Style => 'Tree'); + my $p = new XML::Parser(Style => 'Objects', Pkg => 'SR'); my $tree = $p->parse($res); #print Data::Dumper->Dump([$tree])."\n"; - if (defined $tree && $tree->[0] eq "needinfo" && ref($tree->[1]) eq "ARRAY") + if (defined $tree && ref($tree->[0]) eq "SR::needinfo" && + exists $tree->[0]->{Kids} && ref($tree->[0]->{Kids}) eq "ARRAY") { my $ret = addAutomaticArgs($tree); @@ -1923,14 +1912,14 @@ } elsif (!$interactive) { - if (exists $tree->[1]->[0]->{href} && - defined $tree->[1]->[0]->{href} && - $tree->[1]->[0]->{href} ne "") + if (exists $tree->[0]->{href} && + defined $tree->[0]->{href} && + $tree->[0]->{href} ne "") { - $registerManuallyURL = $tree->[1]->[0]->{href}; + $registerManuallyURL = $tree->[0]->{href}; print $registerManuallyURL."\n\n"; } - + evalInteractiveArgs($tree); if ($registerReadableText[$#registerReadableText] =~ /^\s*$/) { @@ -1976,11 +1965,11 @@ my @url = (); - if (exists $tree->[1]->[0]->{href} && - defined $tree->[1]->[0]->{href} && - $tree->[1]->[0]->{href} ne "") + if (exists $tree->[0]->{href} && + defined $tree->[0]->{href} && + $tree->[0]->{href} ne "") { - push @url, $tree->[1]->[0]->{href}; + push @url, $tree->[0]->{href}; } if (@url == 0) @@ -1988,9 +1977,9 @@ logPrintExit("Missing URL.\n", 14); } - print STDERR "Call URL: ".$tree->[1]->[0]->{href}."\n" if($debug); + print STDERR "Call URL: ".$tree->[0]->{href}."\n" if($debug); - if (defined $browser) + if (defined $browser) { if($browser eq "default") { @@ -2093,7 +2082,8 @@ register(); } } - elsif (defined $tree && $tree->[0] eq "zmdconfig" && ref($tree->[1]) eq "ARRAY") + elsif (defined $tree && ref($tree->[0]) eq "SR::zmdconfig" && + exists $tree->[0]->{Kids} && ref($tree->[0]->{Kids}) eq "ARRAY") { # HACK: write <zmdconfig> xml for yast if(defined $dumpxmlfilehack && $dumpxmlfilehack ne "") @@ -2112,7 +2102,7 @@ } # ok => configure zmd - configureZMD($tree->[1]); + configureZMD($tree->[0]->{Kids}); } else { @@ -2140,34 +2130,32 @@ } else { - my $p = new XML::Parser(Style => 'Tree'); + my $p = new XML::Parser(Style => 'Objects', Pkg => 'SR'); my $tree = $p->parse($res); #print Data::Dumper->Dump([$tree])."\n"; - if (! defined $tree || $tree->[0] ne "productlist" || ref($tree->[1]) ne "ARRAY") + if (! defined $tree || ref($tree->[0]) ne "SR::productlist") { logPrintExit("Unknown format. Cannot show human readable output. Try --xml-output.\n". 6); } - - for (my $i = 0; $i < @{$tree->[1]}; $i++) + + foreach my $kid (@{$tree->[0]->{Kids}}) { - #print Data::Dumper->Dump([$tree->[1]->[$i]])."\n\n"; + #print Data::Dumper->Dump([$kid])."\n"; - if (defined $tree->[1]->[$i] && - $tree->[1]->[$i] eq "product" && - ref($tree->[1]->[$i+1]) eq "ARRAY" ) + if (ref($kid) eq "SR::product" && + exists $kid->{Kids} && + exists $kid->{Kids}->[0] && + ref($kid->{Kids}->[0]) eq "SR::Characters" && + exists $kid->{Kids}->[0]->{Text} && + defined $kid->{Kids}->[0]->{Text} && + $kid->{Kids}->[0]->{Text} ne "") { - $i++; #print "SEE:".Data::Dumper->Dump([$tree->[1]->[$i]])."\n\n"; - if($tree->[1]->[$i]->[1] == 0 && - defined $tree->[1]->[$i]->[2] && - $tree->[1]->[$i]->[2] ne "") - { - push @serverKnownProducts, [$tree->[1]->[$i]->[2], "0"]; - } + push @serverKnownProducts, [$kid->{Kids}->[0]->{Text}, "0"]; } } } @@ -2371,6 +2359,13 @@ $products = intersection(\@installedProducts, \@serverKnownProducts); } +if($#installedProducts == 0 && + exists $installedProducts[0]->[0] && + $installedProducts[0]->[0] =~ /FACTORY/i) +{ + logPrintExit("FACTORY cannot be registered\n", 101); +} + if(@$products == 0) { logPrintExit("No products to register\n", 100); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit-unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit-help@opensuse.org