Hypens are allowed as key names in RFC822-style data.
authorMichael Vrable <mvrable@cs.ucsd.edu>
Mon, 2 Jun 2008 21:11:53 +0000 (14:11 -0700)
committerMichael Vrable <mvrable@turin.ucsd.edu>
Mon, 2 Jun 2008 21:11:53 +0000 (14:11 -0700)
Update the parsers for the RFC822-style key-value lists.  Allow a hyphen in
key names.  Previously, the "Backup-Intent" field was being ignored because
its name was considered invalid; this change should fix that.

contrib/clean-segments.pl
contrib/restore.pl
lbs.py

index 5af3ae3..8f9aa80 100755 (executable)
@@ -31,7 +31,7 @@ foreach (glob "*.lbs") {
     while (defined($line = <DESCRIPTOR>)) {
         chomp $line;
 
-        if ($line =~ m/^(\w+):\s*(.*)$/) {
+        if ($line =~ m/^([-\w]+):\s*(.*)$/) {
             $descriptor{$1} = $2;
             $last_key = $1;
         } elsif ($line =~/^\s/ && defined $last_key) {
index 5562974..98ae277 100755 (executable)
@@ -359,7 +359,7 @@ sub process_metadata {
         # Try to parse the data as "key: value" pairs of file metadata.  Also
         # handle continuation lines, which start with whitespace and continue
         # the previous "key: value" pair.
-        if ($line =~ m/^(\w+):\s*(.*)$/) {
+        if ($line =~ m/^([-\w]+):\s*(.*)$/) {
             $info{$1} = $2;
             $last_key = $1;
         } elsif ($line =~/^\s/ && defined $last_key) {
@@ -409,7 +409,7 @@ while (defined($line = <DESCRIPTOR>)) {
     # lines.
     chomp $line;
 
-    if ($line =~ m/^(\w+):\s*(.*)$/) {
+    if ($line =~ m/^([-\w]+):\s*(.*)$/) {
         $descriptor{$1} = $2;
         $last_key = $1;
     } elsif ($line =~/^\s/ && defined $last_key) {
diff --git a/lbs.py b/lbs.py
index 392bb04..507b9e1 100644 (file)
--- a/lbs.py
+++ b/lbs.py
@@ -263,7 +263,7 @@ def parse(lines, terminate=None):
             last_key = None
             continue
 
-        m = re.match(r"^(\w+):\s*(.*)$", l)
+        m = re.match(r"^([-\w]+):\s*(.*)$", l)
         if m:
             dict[m.group(1)] = m.group(2)
             last_key = m.group(1)