[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v5] scripts/add_maintainers.pl: New script



(Fixed the Subject line.)

Ian Jackson writes ("[PATCH] scripts/add_maintainers.pl: New script"):
> Changes since v4:
> - Strip some trailing whitespace from the code
> - writefile() now uses the .tmp-and-rename pattern to avoid data loss
> - Provide --get-maintainers= option to specify replacement for
>   get_maintainers.pl.  This is useful for Ian's usecase, since it
>   allows --get-maintainers=true, to avoid adding any MAINTAINERS-based
>   info anywhere while still adding other CCs (eg from -t) everywhere.
> - Refactor normalize() somewhat so that it uses only %seen, and
>   does not any longer modify its argument arrays.
> - De-dupe case-insensitively (by making normalize use lc).

Here's the diff for my changes.

diff --git a/scripts/add_maintainers.pl b/scripts/add_maintainers.pl
index b4134e9..0f4a4cf 100755
--- a/scripts/add_maintainers.pl
+++ b/scripts/add_maintainers.pl
@@ -223,6 +223,7 @@ if (!GetOptions(
                 't|tags'           => \$tags,
                 'tagscc'           => \$tagscc,
                 'a|arg=s'          => \@get_maintainer_args,
+                'get-maintainers=s' => \$get_maintainer,
                 'verbose'          => \$verbose,
                 'h|help'           => \$help,
                 )) {
@@ -345,7 +346,7 @@ if ($has_cover_letter) {
     my @ccpatch;    # Cc: entries in *.patch
 
     print "Processing: ".basename($cover_letter_file)."\n";
-    
+
     # Read all lines with CC & TO from the patch file such that subsequent
     # calls don't lead to duplication
     gettagsfrompatch($cover_letter_file, \@headerpatch, \@ccpatch);
@@ -467,21 +468,20 @@ sub hastag ($$) {
 }
 
 sub normalize ($$) {
-    # This function is used to normalize lists of tags or CC / TO lists
-    # - It removes duplicates in the input arrays
-    # - It ensures that elements in the second list are not in the first
     my ($ra, $rb) = @_;
+    # This function is used to normalize lists of tags or CC / TO lists
+    # It returns a list of the unique elements
+    # in @$ra, excluding any which are in @$rb.
+    # Comparisons are case-insensitive.
     my @aonly = ();
     my %seen;
     my $item;
 
-    @$ra = uniq @$ra;
-    @$rb = uniq @$rb;
     foreach $item (@$rb) {
-        $seen{$item} = 1;
+        $seen{lc($item)} = 1;
     }
     foreach $item (@$ra) {
-        unless ($seen{$item}) {
+        unless ($seen{lc($item)}++) {
             # it's not in %seen, so add to @aonly
             push @aonly, $item;
         }
@@ -506,10 +506,11 @@ sub readfile ($) {
 sub writefile ($$) {
     my ($content, $file) = @_;
     my $fh;
-    open($fh, ">", $file)
-         or die "Could not open file '$file' $!";
+    open($fh, ">", "$file.tmp")
+         or die "Could not open file '$file.tmp' $!";
     print $fh $content or die $!;
     close $fh or die $!;
+    rename "$file.tmp", $file or die "Could not rename '$file' into place $!";
 }
 
 sub insert ($$$$) {

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.