LCOV - code coverage report
Current view: top level - src/client - backup.c (source / functions) Hit Total Coverage
Test: burp-coverage-clean.info Lines: 0 24 0.0 %
Date: 2020-09-29 03:54:16 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #include "../burp.h"
       2             : #include "../action.h"
       3             : #include "../asfd.h"
       4             : #include "../async.h"
       5             : #include "../cntr.h"
       6             : #include "../conf.h"
       7             : #include "../handy.h"
       8             : #include "../log.h"
       9             : #include "backup_phase1.h"
      10             : #include "cvss.h"
      11             : #include "protocol1/backup_phase2.h"
      12             : #include "protocol2/backup_phase2.h"
      13             : #include "backup.h"
      14             : 
      15             : #ifdef HAVE_WIN32
      16             : static void set_priority(int priority, const char *str)
      17             : {
      18             :         if(SetThreadPriority(GetCurrentThread(), priority))
      19             :                 logp("Set %s\n", str);
      20             :         else
      21             :                 logp("Failed to set %s\n", str);
      22             : }
      23             : 
      24             : static void set_low_priority(void)
      25             : {
      26             :         // Run timed backups with lower priority. I found that this has to be
      27             :         // done after the snapshot, or the snapshot never finishes. At least, I
      28             :         // waited 30 minutes with nothing happening.
      29             : #if defined(B_VSS_XP) || defined(B_VSS_W2K3)
      30             :         set_priority(THREAD_PRIORITY_LOWEST,
      31             :                 "thread_priority_lowest");
      32             : #else
      33             :         set_priority(THREAD_MODE_BACKGROUND_BEGIN,
      34             :                 "thread_mode_background_begin");
      35             : #endif
      36             : }
      37             : 
      38             : static void unset_low_priority(void)
      39             : {
      40             :         set_priority(THREAD_MODE_BACKGROUND_END,
      41             :                 "thread_mode_background_end");
      42             : }
      43             : #endif
      44             : 
      45             : // Return 0 for OK, -1 for error.
      46           0 : int do_backup_client(struct asfd *asfd, struct conf **confs, enum action action,
      47             :         int resume)
      48             : {
      49           0 :         int ret=-1;
      50           0 :         int breaking=get_int(confs[OPT_BREAKPOINT]);
      51             : 
      52           0 :         if(action==ACTION_ESTIMATE)
      53           0 :                 logp("do estimate client\n");
      54             :         else
      55             :         {
      56           0 :                 logp("do backup client\n");
      57           0 :                 if(get_protocol(confs)==PROTO_1)
      58           0 :                         logp("Using librsync hash %s\n",
      59             :                           rshash_to_str(get_e_rshash(confs[OPT_RSHASH])));
      60             :         }
      61             : 
      62             : #ifdef HAVE_WIN32
      63             :         win32_enable_backup_privileges();
      64             : #ifdef WIN32_VSS
      65             :         if(win32_start_vss(asfd, confs))
      66             :         {
      67             :                 log_and_send(asfd, "Problem with VSS\n");
      68             :                 return ret;
      69             :         }
      70             : #endif
      71             :         if(action==ACTION_BACKUP_TIMED) set_low_priority();
      72             : #endif
      73             : 
      74             :         // Scan the file system and send the results to the server.
      75             :         // Skip phase1 if the server wanted to resume.
      76           0 :         if(!resume)
      77             :         {
      78           0 :                 if(breaking==1)
      79             :                 {
      80           0 :                         breakpoint(breaking, __func__);
      81           0 :                         goto end;
      82             :                 }
      83           0 :                 if(backup_phase1_client(asfd, confs))
      84             :                         goto end;
      85             :         }
      86             : 
      87           0 :         switch(action)
      88             :         {
      89             :                 case ACTION_DIFF:
      90             :                 case ACTION_DIFF_LONG:
      91             :                         ret=1;
      92             :                         goto end;
      93             :                 case ACTION_ESTIMATE:
      94           0 :                         cntr_print(get_cntr(confs), ACTION_ESTIMATE);
      95           0 :                         break;
      96             :                 default:
      97             :                         // Now, the server will be telling us what data we need
      98             :                         // to send.
      99           0 :                         if(breaking==2)
     100             :                         {
     101           0 :                                 breakpoint(breaking, __func__);
     102           0 :                                 goto end;
     103             :                         }
     104             : 
     105           0 :                         if(get_protocol(confs)==PROTO_1)
     106           0 :                                 ret=backup_phase2_client_protocol1(asfd,
     107             :                                         confs, resume);
     108             :                         else
     109           0 :                                 ret=backup_phase2_client_protocol2(asfd,
     110             :                                         confs, resume);
     111           0 :                         if(ret) goto end;
     112             :                         break;
     113             :         }
     114             : 
     115             :         ret=0;
     116             : end:
     117             : #if defined(HAVE_WIN32)
     118             :         if(action==ACTION_BACKUP_TIMED) unset_low_priority();
     119             : #if defined(WIN32_VSS)
     120             :         win32_stop_vss();
     121             : #endif
     122             : #endif
     123           0 :         return ret;
     124             : }

Generated by: LCOV version 1.13