Просмотр исходного кода

Dpkg::Shlibs::SymbolFile::create_symbol(): new function

This new function will be used in non-regression tests, it avoids
duplicating parse+initialize multiple times.

Signed-off-by: Modestas Vainius <modax@debian.org>
Signed-off-by: Raphaël Hertzog <hertzog@debian.org>
Modestas Vainius лет назад: 16
Родитель
Сommit
b22337ebf9
2 измененных файлов с 15 добавлено и 3 удалено
  1. 1 1
      scripts/Dpkg/Shlibs/Symbol.pm
  2. 14 2
      scripts/Dpkg/Shlibs/SymbolFile.pm

+ 1 - 1
scripts/Dpkg/Shlibs/Symbol.pm

@@ -140,7 +140,7 @@ sub parse {
 
 # A hook for symbol initialization (typically processing of tags). The code
 # here may even change symbol name. Called from
-# Dpkg::Shlibs::SymbolFile::load().
+# Dpkg::Shlibs::SymbolFile::create_symbol().
 sub initialize {
     my $self = shift;
 

+ 14 - 2
scripts/Dpkg/Shlibs/SymbolFile.pm

@@ -106,6 +106,19 @@ sub clear_except {
     }
 }
 
+# Create a symbol from the supplied string specification.
+sub create_symbol {
+    my $self = shift;
+    my $spec = shift;
+    my $symbol = shift || Dpkg::Shlibs::Symbol->new();
+
+    if ($symbol->parse($spec)) {
+	$symbol->initialize(arch => $self->{arch});
+	return $symbol;
+    }
+    return undef;
+}
+
 sub add_symbol {
     my ($self, $soname, $symbol) = @_;
     my $object = (ref $soname) ? $soname : $self->{objects}{$soname};
@@ -170,8 +183,7 @@ sub load {
 	    # Symbol specification
 	    my $deprecated = ($1) ? $1 : 0;
 	    my $sym = new_symbol($base_symbol, deprecated => $deprecated);
-	    if ($sym->parse($2)) {
-		$sym->initialize(arch => $self->{arch});
+	    if ($self->create_symbol($2, $sym)) {
 		$self->add_symbol($$obj_ref, $sym);
 	    } else {
 		warning(_g("Failed to parse line in %s: %s"), $file, $_);