diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2006-11-15 11:49:00 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2006-11-15 11:49:00 +0000 |
commit | 2a353c054d97436a52ac5d558558da7a7d5d45f3 (patch) | |
tree | be8e99a5b4a1697439bc22e1c12a6b3a09087711 | |
parent | b3955aba69dc59ee4e0295a0bfaa37662c379799 (diff) | |
download | perl-URPM-2a353c054d97436a52ac5d558558da7a7d5d45f3.tar perl-URPM-2a353c054d97436a52ac5d558558da7a7d5d45f3.tar.gz perl-URPM-2a353c054d97436a52ac5d558558da7a7d5d45f3.tar.bz2 perl-URPM-2a353c054d97436a52ac5d558558da7a7d5d45f3.tar.xz perl-URPM-2a353c054d97436a52ac5d558558da7a7d5d45f3.zip |
add a wrapper in perl around parse_hdlist and parse_synthesis
-rw-r--r-- | URPM.pm | 17 | ||||
-rw-r--r-- | URPM.xs | 4 |
2 files changed, 19 insertions, 2 deletions
@@ -158,6 +158,23 @@ sub traverse_tag { $count; } +sub parse_hdlist_or_synthesis { + my ($parse_func, $urpm, $file, %options) = @_; + + my $previous_indice = @{$urpm->{depslist}}; + if (my ($start, $end) = $parse_func->($urpm, $file, %options)) { + ($start, $end); + } else { + #- parse_hdlist__XS may have added some pkgs to {depslist}, + #- but we don't want those pkgs since reading hdlist failed later. + #- so we need to drop them + splice(@{$urpm->{depslist}}, $previous_indice); + (); + } +} +sub parse_synthesis { parse_hdlist_or_synthesis(\&parse_synthesis__XS, @_) } +sub parse_hdlist { parse_hdlist_or_synthesis(\&parse_hdlist__XS, @_) } + sub add_macro { my ($s) = @_; #- quote for rpmlib, *sigh* @@ -2992,7 +2992,7 @@ Urpm_ranges_overlap(a, b, b_nopromote=1) RETVAL void -Urpm_parse_synthesis(urpm, filename, ...) +Urpm_parse_synthesis__XS(urpm, filename, ...) SV *urpm char *filename PPCODE: @@ -3066,7 +3066,7 @@ Urpm_parse_synthesis(urpm, filename, ...) } else croak("first argument should be a reference to a HASH"); void -Urpm_parse_hdlist(urpm, filename, ...) +Urpm_parse_hdlist__XS(urpm, filename, ...) SV *urpm char *filename PPCODE: |