Patch from Andrew Kuchling: allow multiple include/exclude patterns
for all commands except 'prune' and 'graft'.
diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index f3cc041..59dd624 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -310,24 +310,25 @@
             # for the given action (which is the first word)
             if action in ('include','exclude',
                           'global-include','global-exclude'):
-                if len (words) != 2:
+                if len (words) < 2:
                     template.warn \
                         ("invalid manifest template line: " +
-                         "'%s' expects a single <pattern>" %
+                         "'%s' expects <pattern1> <pattern2> ..." %
                          action)
                     continue
 
-                pattern = native_path (words[1])
+                pattern_list = map(native_path, words[1:])
 
             elif action in ('recursive-include','recursive-exclude'):
-                if len (words) != 3:
+                if len (words) < 3:
                     template.warn \
                         ("invalid manifest template line: " +
-                         "'%s' expects <dir> <pattern>" %
+                         "'%s' expects <dir> <pattern1> <pattern2> ..." %
                          action)
                     continue
 
-                (dir, pattern) = map (native_path, words[1:3])
+                dir = native_path(words[1])
+                pattern_list = map (native_path, words[2:])
 
             elif action in ('graft','prune'):
                 if len (words) != 2:
@@ -352,58 +353,64 @@
             # digging stuff up out of 'words'.
 
             if action == 'include':
-                print "include", pattern
-                files = select_pattern (all_files, pattern, anchor=1)
-                if not files:
-                    template.warn ("no files found matching '%s'" % pattern)
-                else:
-                    self.files.extend (files)
+                print "include", string.join(pattern_list)
+                for pattern in pattern_list:
+                    files = select_pattern (all_files, pattern, anchor=1)
+                    if not files:
+                        template.warn ("no files found matching '%s'" % pattern)
+                    else:
+                        self.files.extend (files)
 
             elif action == 'exclude':
-                print "exclude", pattern
-                num = exclude_pattern (self.files, pattern, anchor=1)
-                if num == 0:
-                    template.warn \
-                        ("no previously-included files found matching '%s'" %
-                         pattern)
+                print "exclude", string.join(pattern_list)
+                for pattern in pattern_list:
+                    num = exclude_pattern (self.files, pattern, anchor=1)
+                    if num == 0:
+                        template.warn (
+                            "no previously-included files found matching '%s'"%
+                            pattern)
 
             elif action == 'global-include':
-                print "global-include", pattern
-                files = select_pattern (all_files, pattern, anchor=0)
-                if not files:
-                    template.warn (("no files found matching '%s' " +
-                                    "anywhere in distribution") %
-                                   pattern)
-                else:
-                    self.files.extend (files)
+                print "global-include", string.join(pattern_list)
+                for pattern in pattern_list:
+                    files = select_pattern (all_files, pattern, anchor=0)
+                    if not files:
+                        template.warn (("no files found matching '%s' " +
+                                        "anywhere in distribution") %
+                                       pattern)
+                    else:
+                        self.files.extend (files)
 
             elif action == 'global-exclude':
-                print "global-exclude", pattern
-                num = exclude_pattern (self.files, pattern, anchor=0)
-                if num == 0:
-                    template.warn \
-                        (("no previously-included files matching '%s' " +
-                          "found anywhere in distribution") %
-                         pattern)
+                print "global-exclude", string.join(pattern_list)
+                for pattern in pattern_list:
+                    num = exclude_pattern (self.files, pattern, anchor=0)
+                    if num == 0:
+                        template.warn \
+                            (("no previously-included files matching '%s' " +
+                              "found anywhere in distribution") %
+                             pattern)
 
             elif action == 'recursive-include':
-                print "recursive-include", dir, pattern
-                files = select_pattern (all_files, pattern, prefix=dir)
-                if not files:
-                    template.warn (("no files found matching '%s' " +
-                                    "under directory '%s'") %
-                                   (pattern, dir))
-                else:
-                    self.files.extend (files)
+                print "recursive-include", dir, string.join(pattern_list)
+                for pattern in pattern_list:
+                    files = select_pattern (all_files, pattern, prefix=dir)
+                    if not files:
+                        template.warn (("no files found matching '%s' " +
+                                        "under directory '%s'") %
+                                       (pattern, dir))
+                    else:
+                        self.files.extend (files)
 
             elif action == 'recursive-exclude':
-                print "recursive-exclude", dir, pattern
-                num = exclude_pattern (self.files, pattern, prefix=dir)
-                if num == 0:
-                    template.warn \
-                        (("no previously-included files matching '%s' " +
-                          "found under directory '%s'") %
-                         (pattern, dir))
+                print "recursive-exclude", dir, string.join(pattern_list)
+                for pattern in pattern_list:
+                    num = exclude_pattern (self.files, pattern, prefix=dir)
+                    if num == 0:
+                        template.warn \
+                            (("no previously-included files matching '%s' " +
+                              "found under directory '%s'") %
+                             (pattern, dir))
 
             elif action == 'graft':
                 print "graft", dir_pattern