]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/bextract.c
Status cleanup and cancelling FD
[bacula/bacula] / bacula / src / stored / bextract.c
index c5a5554d7622626af6eb2599b1ff90fdda5670ad..3ecadbdc569461c35b17703150eb69a0aeae9003 100644 (file)
@@ -234,6 +234,7 @@ static void do_extract(char *devname)
  */
 static void record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
 {
+   int stat;
 
    if (rec->FileIndex < 0) {
       return;                         /* we don't want labels */
@@ -361,14 +362,22 @@ static void record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
 
          /*          Pmsg1(000, "Restoring: %s\n", ofile); */
 
-        extract = create_file(jcr, fname, ofile, lname, type, stream,
-                              &statp, attribsEx, &ofd);
-        num_files++;
-
-        if (extract) {
-            print_ls_output(ofile, lname, type, &statp);   
-            fileAddr = 0;
-        }
+        extract = FALSE;
+        stat = create_file(jcr, fname, ofile, lname, type, stream,
+                           &statp, attribsEx, &ofd, REPLACE_ALWAYS);
+        switch (stat) {
+        case CF_ERROR:
+        case CF_SKIP:
+           break;
+        case CF_EXTRACT:
+           extract = TRUE;
+           /* Fall-through wanted */
+        case CF_CREATED:
+           print_ls_output(ofile, lname, type, &statp);   
+           num_files++;
+           fileAddr = 0;
+           break;
+        }  
       }
 
    /* Data stream and extracting */