OSSP CVS Repository

ossp - Check-in [4541]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 4541
Date: 2004-Apr-23 16:57:09 (local)
2004-Apr-23 14:57:09 (UTC)
User:rse
Branch:
Comment: bugfix parsing and formatting so it now passed representative ,v files from FreeBSD, OSSP, OpenPKG and OpenSSL CVS repositories
Tickets:
Inspections:
Files:
ossp-pkg/cvsfusion/RCS.pm      1.4 -> 1.5     44 inserted, 17 deleted

ossp-pkg/cvsfusion/RCS.pm 1.4 -> 1.5

--- RCS.pm       2004/04/23 13:09:50     1.4
+++ RCS.pm       2004/04/23 14:57:09     1.5
@@ -156,8 +156,8 @@
     my $re_idchar  = qr/[^$,.:;@]/;
     my $re_id      = qr/(?:${re_num})?${re_idchar}+(?:${re_idchar}|${re_num})*/;
     my $re_sym     = qr/\d?${re_idchar}+(?:${re_idchar}|\d)*/;
-    my $re_str     = qr/(?:@@|[^@])*/;
-    my $re_date    = qr/\d{4}\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{2}/;
+    my $re_str     = qr/(?:\@\@|[^@])*/s;
+    my $re_date    = qr/(?:\d{2}|\d{4})\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{2}/;
 
     #   parse header section
     while (1) {
@@ -196,15 +196,23 @@
             $self->{'rcs'}->{'header'}->{'strict'} = "";
             push(@{$self->{'rcs'}->{'header'}->{-order}}, 'strict');
         }
-        elsif ($rcs =~ s/^comment\s+\@($re_str)\@\s*;//s) {
-            $self->{'rcs'}->{'header'}->{'comment'} = &_string_unquote($1);
+        #elsif ($rcs =~ s/^comment\s+\@($re_str)\@\s*;//s) { # would maximally span 32K
+        elsif ($rcs =~ s/^comment\s+\@//s) {
+            my $str = '';
+            1 while ($rcs =~ s/^((?:\@\@|[^@])+)/$str .= $1, ''/se);
+            $rcs =~ s/\@\s*;//s;
+            $self->{'rcs'}->{'header'}->{'comment'} = &_string_unquote($str);
             push(@{$self->{'rcs'}->{'header'}->{-order}}, 'comment');
         }
-        elsif ($rcs =~ s/^expand\s+\@($re_str)\@\s*;//s) {
-            $self->{'rcs'}->{'header'}->{'expand'} = &_string_unquote($1);
+        #elsif ($rcs =~ s/^expand\s+\@($re_str)\@\s*;//s) { # would maximally span 32K
+        elsif ($rcs =~ s/^expand\s+\@//s) {
+            my $str = '';
+            1 while ($rcs =~ s/^((?:\@\@|[^@])+)/$str .= $1, ''/se);
+            $rcs =~ s/\@\s*;//s;
+            $self->{'rcs'}->{'header'}->{'expand'} = &_string_unquote($str);
             push(@{$self->{'rcs'}->{'header'}->{-order}}, 'expand');
         }
-        elsif ($rcs =~ s/^([a-z]+)(\s*[^;]*);//s) {
+        elsif ($rcs =~ s/^([a-z]+)(?:\s*([^;]*));//s) {
             $self->{'rcs'}->{'header'}->{$1} = $2;
             push(@{$self->{'rcs'}->{'header'}->{-order}}, $1);
         }
@@ -240,7 +248,7 @@
                 elsif ($rcs =~ m/^desc\s+/s) {
                     last;
                 }
-                elsif ($rcs =~ s/^([a-z]+)(\s*[^;]*);//s) {
+                elsif ($rcs =~ s/^([a-z]+)(?:\s*([^;]*));//s) {
                     $self->{'rcs'}->{'delta'}->{$rev}->{$1} = $2;
                 }
                 else {
@@ -255,8 +263,12 @@
 
     #   parse description section
     $rcs =~ s|^\s*||s;
-    if ($rcs =~ s/^desc\s+\@($re_str)\@\s*//s) {
-        $self->{'rcs'}->{'header'}->{'desc'} = $1;
+    #if ($rcs =~ s/^desc\s+\@($re_str)\@\s*//s) { # would maximally span 32K
+    if ($rcs =~ s/^desc\s+\@//s) {
+        my $str = '';
+        1 while ($rcs =~ s/^((?:\@\@|[^@])+)/$str .= $1, ''/se);
+        $rcs =~ s/\@\s*//s;
+        $self->{'rcs'}->{'header'}->{'desc'} = &_string_unquote($str);
         push(@{$self->{'rcs'}->{'header'}->{-order}}, 'desc');
     }
 
@@ -271,15 +283,30 @@
             my $textseen = 0;
             while (1) {
                 $rcs =~ s|^\s*||s;
-                if ($rcs =~ s/^log\s+\@($re_str)\@\s*//s) {
-                    $self->{'rcs'}->{'delta'}->{$rev}->{'log'} = &_string_unquote($1);
-                }
-                elsif ($rcs =~ s/^text\s+\@($re_str)\@\s*//s) {
-                    $self->{'rcs'}->{'delta'}->{$rev}->{'text'} = &_string_unquote($1);
+                #if ($rcs =~ s/^log\s+\@($re_str)\@\s*//s) { # would maximally span 32K
+                if ($rcs =~ s/^log\s+\@//s) {
+                    my $str = '';
+                    1 while ($rcs =~ s/^((?:\@\@|[^@])+)/$str .= $1, ''/se);
+                    $rcs =~ s/\@\s*//s;
+                    $self->{'rcs'}->{'delta'}->{$rev}->{'log'} = &_string_unquote($str);
+                }
+                #elsif ($rcs =~ s/^text\s+\@($re_str)\@\s*//s) { # would maximally span 32K
+                elsif ($rcs =~ s/^text\s+\@//s) {
+                    my $str = '';
+                    1 while ($rcs =~ s/^((?:\@\@|[^@])+)/$str .= $1, ''/se);
+                    $rcs =~ s/\@\s*//s;
+                    $self->{'rcs'}->{'delta'}->{$rev}->{'text'} = &_string_unquote($str);
                     $textseen = 1;
                 }
-                elsif ($textseen == 0 and $rcs =~ s/^([a-z]+)(\s*[^;]*);//s) {
-                    $self->{'rcs'}->{'delta'}->{$rev}->{$1} = $2;
+                #elsif ($textseen == 0 and $rcs =~ s/^([a-z]+)(?:\s+\@($re_str)\@\s*)?//s) { # would maximally span 32K
+                elsif ($textseen == 0 and $rcs =~ s/^([a-z]+)(?:\s+(\@))?//s) {
+                    my ($keyword, $with_str) = ($1, $2);
+                    my $str = '';
+                    if ($with_str) { 
+                        1 while ($rcs =~ s/^((?:\@\@|[^@])+)/$str .= $1, ''/se);
+                        $rcs =~ s/\@\s*//s;
+                    }
+                    $self->{'rcs'}->{'delta'}->{$rev}->{$keyword} = $str;
                 }
                 else {
                     last;

CVSTrac 2.0.1