[Bio] / FigKernelPackages / RAST_submission.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/RAST_submission.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.22, Tue Mar 30 21:53:54 2010 UTC revision 1.23, Thu Apr 1 20:25:29 2010 UTC
# Line 1047  Line 1047 
1047      my $to_name = $params->{-toName};      my $to_name = $params->{-toName};
1048      my $from = $params->{-from};      my $from = $params->{-from};
1049      my $type = $params->{-type};      my $type = $params->{-type};
1050        my $chunk_num = $params->{-chunkNum};
1051        my $total_size = $params->{-totalSize};
1052    
1053      if ($to_name eq ''  || $to_name =~ m,/,)      if ($to_name eq ''  || $to_name =~ m,/,)
1054      {      {
# Line 1091  Line 1093 
1093      }      }
1094      &FIG::verify_dir($dest);      &FIG::verify_dir($dest);
1095    
1096      if ($type eq 'file')      my $spool_file;
1097        if ($type eq 'tar')
1098      {      {
1099          if (!open(F, ">", "$dest/$to_name"))          $spool_file = "$dest/$to_name.tar";
1100        }
1101        else
1102        {
1103            $spool_file = "$dest/$to_name";
1104        }
1105    
1106        if (defined($total_size))
1107        {
1108            my $spool_size = -s $spool_file;
1109            if ($spool_size != $total_size)
1110            {
1111                return { status => 'error', error_msg => "Size mismatch at end, $spool_size != $total_size" };
1112            }
1113    
1114            if ($type eq 'tar')
1115            {
1116                my $rc = system("tar", "-x", "-f", $spool_file, "-C", $dest);
1117                if ($rc == 0)
1118                {
1119                    return { status => 'ok' };
1120                }
1121                else
1122                {
1123                    return { status => 'error', error_msg => "Untar failed with rc=$rc" };
1124                }
1125            }
1126            else
1127            {
1128                return { status => 'ok' };
1129            }
1130        }
1131    
1132        if ($chunk_num == 0)
1133        {
1134            open(F, ">", $spool_file);
1135        }
1136        else
1137          {          {
1138              warn "Cannot open $dest/$to_name: $!";          open(F, ">>", $spool_file);
             return { status => 'error', error_msg => 'Cannot write destination file'};  
1139          }          }
1140          warn "Copying to $dest/$to_name\n";  
1141          warn Dumper($from);      warn "Copying chunk $chunk_num to $dest/$to_name\n";
1142        if (ref($from))
1143        {
1144          my $buf;          my $buf;
1145          while (read($from, $buf, 4096))          my $nread = 0;
1146            while (my $size = read($from, $buf, 4096))
1147          {          {
1148              print F $buf;              print F $buf;
1149                $nread += $size;
1150          }          }
1151          close(F);          warn "Read $nread\n";
1152        }
1153        else
1154        {
1155            my $s = length($from);
1156            warn "Read2 $s\n";
1157            print F $from;
1158      }      }
1159    
1160        close(F);
1161    
1162      return { status => 'ok' };      return { status => 'ok' };
1163  }  }
1164    

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3