Index: trunk/ippScripts/scripts/receive_source.pl
===================================================================
--- trunk/ippScripts/scripts/receive_source.pl	(revision 23892)
+++ trunk/ippScripts/scripts/receive_source.pl	(revision 23894)
@@ -55,5 +55,5 @@
 $uri .= "/index.txt" unless $uri =~ m|/index.txt$|;
 my $command = "dsproductls --uri $uri"; # Command to execute
-$command .= "--last_fileset $last_fileset" if defined $last_fileset;
+$command .= " --last_fileset $last_fileset" if defined $last_fileset;
 
 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -61,7 +61,8 @@
 die "Unable to get source listing from $source for $product\n" unless $success;
 
-# Add filesets
-my $last;                   # Last fileset seen
-foreach my $line (@$stdout_buf) {
+# Parse list of filesets
+my @filesets = ();              # Filesets to add
+my @lines = split(/\n/, join "", @$stdout_buf); # Lines from output
+foreach my $line ( @lines ) {
     $line =~ s/\#.*//g;
     next unless $line =~ /\S+/;
@@ -69,30 +70,35 @@
     my @fields = split(/\s+/, $line); # Fields in line
     my $fileset = $fields[1];
-    next if not defined $fileset;
-
-    my $command = "receivetool -addfileset"; # Command to execute
-    $command .= " -source_id $source_id";
-    $command .= " -fileset $fileset";
-    $command .= " -dbname $dbname" if defined $dbname;
-
-    unless (defined $no_update) {
-        my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
-            run(command => $command, verbose => $verbose);
-        die "Unable to add fileset $fileset\n" unless $success;
-        $last = $fileset;
-    }
+    push @filesets, $fileset if defined $fileset and $fileset =~ /\S+/;
 }
 
-# Update the last fileset seen
-if (defined $last and (not defined $last_fileset or $last ne $last_fileset)) {
-    my $command = "receivetool -updatelast"; # Command to execute
-    $command .= " -source_id $source_id";
-    $command .= " -fileset $last";
-    $command .= " -dbname $dbname" if defined $dbname;
+if (scalar @filesets > 0) {
+    # Add filesets
+    {
+        my $command = "receivetool -addfileset"; # Command to execute
+        $command .= " -src_id $source_id";
+        $command .= " -fileset " . join(' -fileset ', @filesets);
+        $command .= " -dbname $dbname" if defined $dbname;
 
-    unless (defined $no_update) {
-        my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
-            run(command => $command, verbose => $verbose);
-        die "Unable to update last fileset to $last\n" unless $success;
+        unless (defined $no_update) {
+            my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
+                run(command => $command, verbose => $verbose);
+            die "Unable to add filesets from $source for $product\n" unless $success;
+        }
+    }
+
+    # Update the last fileset seen
+    {
+        my $command = "receivetool -updatelast"; # Command to execute
+        $command .= " -src_id $source_id";
+        my $last = pop @filesets; # Last fileset
+        $command .= " -fileset $last";
+        $command .= " -dbname $dbname" if defined $dbname;
+
+        unless (defined $no_update) {
+            my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
+                run(command => $command, verbose => $verbose);
+            die "Unable to update last fileset to $last\n" unless $success;
+        }
     }
 }
