Changeset 2972 in MondoRescue for branches/3.0
- Timestamp:
- Mar 27, 2012, 2:48:08 PM (12 years ago)
- Location:
- branches/3.0/mondo/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.0/mondo/src/common/libmondo-filelist.c
r2970 r2972 1337 1337 char *skip_these; 1338 1338 char *new_with_pipe; 1339 char *strtmp ;1340 char *token ;1339 char *strtmp = NULL; 1340 char *token = NULL; 1341 1341 char *find_excludes = NULL; 1342 1342 static char *name_of_evalcall_form; … … 1366 1366 malloc_string(name_of_evalcall_form); 1367 1367 malloc_string(find_skeleton_marker); 1368 while((token = mr_strtok(sth, delims, &lastpos))) { 1369 mr_asprintf(&strtmp,"%s", find_excludes); 1370 paranoid_free(find_excludes); 1371 mr_asprintf(&find_excludes,"%s -path %s -prune -o", strtmp, token); 1372 paranoid_free(strtmp); 1368 while((token = mr_strtok(sth, delims, &lastpos)) != NULL) { 1369 mr_strcat(find_excludes," -path %s -prune -o", token); 1373 1370 mr_free(token); 1374 1371 } -
branches/3.0/mondo/src/lib/mr_str.c
r2970 r2972 30 30 31 31 if (instr == NULL) { 32 *lastpos = 0; 33 return token; 34 } 35 36 if (delims == NULL) { 32 37 *lastpos = 0; 33 38 return token; -
branches/3.0/mondo/src/mondorestore/mondo-prep.c
r2943 r2972 556 556 int i = 0; 557 557 int j = 0; 558 int v = 0; 558 559 int res = 0; 559 560 560 561 /** buffers ***********************************************************/ 561 562 char *devices = NULL; 562 char *strtmp = NULL;563 563 char *level = NULL; 564 564 char *program = NULL; … … 590 590 mr_asprintf(&devices, "%s", raidlist->el[i].data_disks.el[0].device); 591 591 for (j = 1; j < raidlist->el[i].data_disks.entries; j++) { 592 mr_asprintf(&strtmp, "%s", devices); 593 paranoid_free(devices); 594 mr_asprintf(&devices, "%s %s", strtmp, 595 raidlist->el[i].data_disks.el[j].device); 596 paranoid_free(strtmp); 592 mr_strcat(devices, " %s", raidlist->el[i].data_disks.el[j].device); 597 593 } 598 594 for (j = 0; j < raidlist->el[i].spare_disks.entries; j++) { 599 mr_asprintf(&strtmp, "%s", devices); 600 paranoid_free(devices); 601 mr_asprintf(&devices, "%s %s", strtmp, 602 raidlist->el[i].spare_disks.el[j].device); 603 paranoid_free(strtmp); 595 mr_strcat(devices, " %s", raidlist->el[i].spare_disks.el[j].device); 604 596 } 605 597 // translate RAID level … … 641 633 mr_asprintf(&program, "mdadm --create --force --run --auto=yes %s --level=%s --raid-devices=%d %s", raidlist->el[i].raid_device, level, raidlist->el[i].data_disks.entries, oldmd); 642 634 mr_free(oldmd); 635 mr_free(level); 636 // Restoring the UUID stored at backup time of present 637 for (v = 0; v++ ; v <= raidlist->el[i].additional_vars.entries) { 638 if ((raidlist->el[i].additional_vars.el[v].label != NULL) && (strcmp(raidlist->el[i].additional_vars.el[v].label,"UUID") == 0)) { 639 // We have a UUID to handle 640 if (raidlist->el[i].additional_vars.el[v].value != NULL) { 641 // force its restoration in order to avoid modifying all conf files using it 642 mr_strcat(program, " --update=uuid --uuid %s",raidlist->el[i].additional_vars.el[v].value); 643 break; 644 } 645 } 646 } 643 647 if (raidlist->el[i].parity != -1) { 644 mr_asprintf(&strtmp, "%s", program);645 paranoid_free(program);646 648 switch(raidlist->el[i].parity) { 647 649 case 0: 648 mr_ asprintf(&program, "%s --parity=%s", strtmp, "la");650 mr_strcat(program, " --parity=%s", "la"); 649 651 break; 650 652 case 1: 651 mr_ asprintf(&program, "%s --parity=%s", strtmp, "ra");653 mr_strcat(program, " --parity=%s", "ra"); 652 654 break; 653 655 case 2: 654 mr_ asprintf(&program, "%s --parity=%s", strtmp, "ls");656 mr_strcat(program, " --parity=%s", "ls"); 655 657 break; 656 658 case 3: 657 mr_ asprintf(&program, "%s --parity=%s", strtmp, "rs");659 mr_strcat(program, " --parity=%s", "rs"); 658 660 break; 659 661 default: … … 661 663 break; 662 664 } 663 paranoid_free(strtmp);664 665 } 665 666 if (raidlist->el[i].chunk_size != -1) { 666 mr_asprintf(&strtmp, "%s", program); 667 paranoid_free(program); 668 mr_asprintf(&program, "%s --chunk=%d", strtmp, raidlist->el[i].chunk_size); 669 paranoid_free(strtmp); 667 mr_strcat(program, " --chunk=%d", raidlist->el[i].chunk_size); 670 668 } 671 669 if (raidlist->el[i].spare_disks.entries > 0) { 672 mr_asprintf(&strtmp, "%s", program); 673 paranoid_free(program); 674 mr_asprintf(&program, "%s --spare-devices=%d", strtmp, 675 raidlist->el[i].spare_disks.entries); 676 paranoid_free(strtmp); 670 mr_strcat(program, " --spare-devices=%d", raidlist->el[i].spare_disks.entries); 677 671 } 678 mr_asprintf(&strtmp, "%s", program); 679 paranoid_free(program); 680 mr_asprintf(&program, "%s %s", strtmp, devices); 681 paranoid_free(strtmp); 672 mr_strcat(program, " %s", devices); 682 673 res = run_program_and_log_output(program, 1); 683 674 // free memory 684 paranoid_free(devices); 685 paranoid_free(level); 686 paranoid_free(program); 675 mr_free(devices); 676 mr_free(program); 687 677 // return to calling instance 688 678 return res;
Note:
See TracChangeset
for help on using the changeset viewer.