1 |
Author: fuzzyray |
2 |
Date: 2009-04-24 16:37:09 +0000 (Fri, 24 Apr 2009) |
3 |
New Revision: 549 |
4 |
|
5 |
Modified: |
6 |
trunk/ChangeLog |
7 |
trunk/src/ekeyword/ChangeLog |
8 |
trunk/src/ekeyword/ekeyword |
9 |
Log: |
10 |
Fix ekeyword to handle multiline KEYWORDS |
11 |
|
12 |
Modified: trunk/ChangeLog |
13 |
=================================================================== |
14 |
--- trunk/ChangeLog 2009-02-21 01:59:02 UTC (rev 548) |
15 |
+++ trunk/ChangeLog 2009-04-24 16:37:09 UTC (rev 549) |
16 |
@@ -1,3 +1,6 @@ |
17 |
+2009-04-24: Paul Varner <fuzzyray@g.o> |
18 |
+ * ekeyword: Fix to handle multiline KEYWORDS (Bug #267250) |
19 |
+ |
20 |
2009-01-08: Paul Varner <fuzzyray@g.o> |
21 |
* equery: Fix package.py to account for PORTDIR being a symbolic link |
22 |
when checking if a package is in an overlay. (Bug #253968) |
23 |
|
24 |
Modified: trunk/src/ekeyword/ChangeLog |
25 |
=================================================================== |
26 |
--- trunk/src/ekeyword/ChangeLog 2009-02-21 01:59:02 UTC (rev 548) |
27 |
+++ trunk/src/ekeyword/ChangeLog 2009-04-24 16:37:09 UTC (rev 549) |
28 |
@@ -1,3 +1,6 @@ |
29 |
+24 Apr 2009 Paul Varner <fuzzyray@g.o> |
30 |
+ * Handle multiline KEYWORDS |
31 |
+ |
32 |
07 Jan 2009 Mike Frysinger <vapier@g.o> |
33 |
* Support intended KEYWORDS |
34 |
* Convert every instance of KEYWORDS in the file |
35 |
|
36 |
Modified: trunk/src/ekeyword/ekeyword |
37 |
=================================================================== |
38 |
--- trunk/src/ekeyword/ekeyword 2009-02-21 01:59:02 UTC (rev 548) |
39 |
+++ trunk/src/ekeyword/ekeyword 2009-04-24 16:37:09 UTC (rev 549) |
40 |
@@ -41,66 +41,74 @@ |
41 |
select O; |
42 |
|
43 |
while (<I>) { |
44 |
- /^\s*KEYWORDS=/ or print, next; |
45 |
+ if (/^\s*KEYWORDS=/) { |
46 |
|
47 |
- # extract the quoted section from KEYWORDS |
48 |
- (my $quoted = $_) =~ s/^.*?["'](.*?)["'].*/$1/s; |
49 |
+ # extract the quoted section from KEYWORDS |
50 |
+ while (not /^KEYWORDS=["'].*?["']/) { |
51 |
+ chomp; |
52 |
+ my $next = <I>; |
53 |
+ $_ = join "", $_, $next; |
54 |
+ } |
55 |
+ (my $quoted = $_) =~ s/^.*?["'](.*?)["'].*/$1/s; |
56 |
|
57 |
- # replace -* with -STAR for our convenience below |
58 |
- $quoted =~ s/-\*/-STAR/; |
59 |
+ # replace -* with -STAR for our convenience below |
60 |
+ $quoted =~ s/-\*/-STAR/; |
61 |
|
62 |
- for my $k (@kw) { |
63 |
- my ($leader, $arch, $star) = ($k =~ /$kw_re/o); |
64 |
+ for my $k (@kw) { |
65 |
+ my ($leader, $arch, $star) = ($k =~ /$kw_re/o); |
66 |
|
67 |
- # handle -* and ^* |
68 |
- if (defined $star) { |
69 |
- $leader = substr $star,0,1; |
70 |
- $arch = 'STAR'; |
71 |
- } |
72 |
- |
73 |
- # remove keywords |
74 |
- if ($leader eq '^') { |
75 |
- if ($arch eq 'all') { |
76 |
- $quoted = ''; |
77 |
- } else { |
78 |
- $quoted =~ s/[-~]?\Q$arch\E\b//; |
79 |
+ # handle -* and ^* |
80 |
+ if (defined $star) { |
81 |
+ $leader = substr $star,0,1; |
82 |
+ $arch = 'STAR'; |
83 |
} |
84 |
|
85 |
- # add or modify keywords |
86 |
- } else { |
87 |
- if ($arch eq 'all') { |
88 |
- # modify all non-masked keywords in the list |
89 |
- $quoted =~ s/(^|\s)~?(?=\w)/$1$leader/g; |
90 |
+ # remove keywords |
91 |
+ if ($leader eq '^') { |
92 |
+ if ($arch eq 'all') { |
93 |
+ $quoted = ''; |
94 |
+ } else { |
95 |
+ $quoted =~ s/[-~]?\Q$arch\E\b//; |
96 |
+ } |
97 |
+ |
98 |
+ # add or modify keywords |
99 |
} else { |
100 |
- # modify or add keyword |
101 |
- unless ($quoted =~ s/[-~]?\Q$arch\E(\s|$)/$leader$arch$1/) { |
102 |
- # modification failed, need to add |
103 |
- if ($arch eq 'STAR') { |
104 |
- $quoted = "$leader$arch $quoted"; |
105 |
- } else { |
106 |
- $quoted .= " $leader$arch"; |
107 |
+ if ($arch eq 'all') { |
108 |
+ # modify all non-masked keywords in the list |
109 |
+ $quoted =~ s/(^|\s)~?(?=\w)/$1$leader/g; |
110 |
+ } else { |
111 |
+ # modify or add keyword |
112 |
+ unless ($quoted =~ s/[-~]?\Q$arch\E(\s|$)/$leader$arch$1/) { |
113 |
+ # modification failed, need to add |
114 |
+ if ($arch eq 'STAR') { |
115 |
+ $quoted = "$leader$arch $quoted"; |
116 |
+ } else { |
117 |
+ $quoted .= " $leader$arch"; |
118 |
+ } |
119 |
} |
120 |
} |
121 |
} |
122 |
} |
123 |
- } |
124 |
|
125 |
- # replace -STAR with -* |
126 |
- $quoted =~ s/-STAR\b/-*/; |
127 |
+ # replace -STAR with -* |
128 |
+ $quoted =~ s/-STAR\b/-*/; |
129 |
|
130 |
- # sort keywords and fix spacing |
131 |
- $quoted = join " ", sort { |
132 |
- (my $sa = $a) =~ s/^\W//; |
133 |
- (my $sb = $b) =~ s/^\W//; |
134 |
- return -1 if $sa eq '*'; |
135 |
- return +1 if $sb eq '*'; |
136 |
- $sa cmp $sb; |
137 |
- } split " ", $quoted; |
138 |
+ # sort keywords and fix spacing |
139 |
+ $quoted = join " ", sort { |
140 |
+ (my $sa = $a) =~ s/^\W//; |
141 |
+ (my $sb = $b) =~ s/^\W//; |
142 |
+ return -1 if $sa eq '*'; |
143 |
+ return +1 if $sb eq '*'; |
144 |
+ $sa cmp $sb; |
145 |
+ } split " ", $quoted; |
146 |
|
147 |
- # re-insert quoted to KEYWORDS |
148 |
- s/(["']).*?["']/$1$quoted$1/; |
149 |
+ # re-insert quoted to KEYWORDS |
150 |
+ s/(["']).*?["']/$1$quoted$1/; |
151 |
|
152 |
- print $_ or die "Can't write $f.new: $!\n"; |
153 |
+ print $_ or die "Can't write $f.new: $!\n"; |
154 |
+ } else { |
155 |
+ print, next; |
156 |
+ } |
157 |
} |
158 |
|
159 |
close I; |
160 |
@@ -109,7 +117,7 @@ |
161 |
|
162 |
system "diff -U 0 $f $f.new | sed -n '/KEYWORDS=/s:^: :p'"; |
163 |
rename "$f.new", "$f" or die "Can't rename: $!\n"; |
164 |
- $files++; |
165 |
+ $files++; |
166 |
} |
167 |
|
168 |
if ($files == 0) { |