Changeset 3191 in MondoRescue for branches/3.2/mondo/src/common/libmondo-filelist.c
- Timestamp:
- Sep 25, 2013, 8:55:45 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/mondo/src/common/libmondo-filelist.c
r3185 r3191 86 86 87 87 /*@ pointers ********************** */ 88 char *ptr ;88 char *ptr = NULL; 89 89 FILE *fout; 90 90 … … 116 116 mr_free(tempfile); 117 117 118 log_it(bkpinfo->image_devs); 119 120 ptr = bkpinfo->image_devs; 121 122 malloc_string(dev); 123 while (ptr && *ptr) { 124 strcpy(dev, ptr); 125 log_it("Examining imagedev %s", dev); 126 for (i = 0; i < (int) strlen(dev) && dev[i] != ' '; i++); 127 dev[i] = '\0'; 128 if (!strlen(dev)) { 129 continue; 130 } 131 fprintf(fout, "%s\n", dev); 132 log_it("Adding '%s' to biggielist", dev); 133 if ((ptr = strchr(ptr, ' '))) { 134 ptr++; 118 if (bkpinfo->image_devs) { 119 log_it("image_devs : %s", bkpinfo->image_devs); 120 121 ptr = bkpinfo->image_devs; 122 123 while (ptr && *ptr) { 124 mr_asprintf(dev, "%s", ptr); 125 log_it("Examining imagedev %s", dev); 126 for (i = 0; i < (int) strlen(dev) && dev[i] != ' '; i++); 127 dev[i] = '\0'; 128 if (!strlen(dev)) { 129 mr_free(dev); 130 continue; 131 } 132 fprintf(fout, "%s\n", dev); 133 log_it("Adding '%s' to biggielist", dev); 134 if ((ptr = strchr(ptr, ' '))) { 135 ptr++; 136 } 137 mr_free(dev); 135 138 } 136 139 } … … 138 141 mvaddstr_and_log_it(g_currentY++, 74, "Done."); 139 142 140 paranoid_free(dev);141 143 return (retval); 142 144 } … … 158 160 159 161 mr_asprintf(tmp_fname, "%s/sortfile", bkpinfo->tmpdir); 160 161 162 mr_asprintf(command, "sort %s > %s 2>> %s", orig_fname, tmp_fname, MONDO_LOGFILE); 162 163 retval = system(command); … … 331 332 332 333 if (curr_set_no == 0) { 333 mr_asprintf(tmp, "Only one fileset. Fine.");334 log_msg(1, "Only one fileset. Fine."); 334 335 } else { 335 mr_asprintf(tmp, "Filelist divided into %ld sets", curr_set_no + 1); 336 } 337 log_msg(1, tmp); 338 mr_free(tmp); 336 log_msg(1, "Filelist divided into %ld sets", curr_set_no + 1); 337 } 339 338 close_evalcall_form(); 340 339 /* This is to work around an obscure bug in Newt; open a form, close it, … … 342 341 then update_progress_form() won't show the "time taken / time remaining" 343 342 line. The bug only crops up AFTER the call to chop_filelist(). Weird. */ 344 #ifndef _XWIN345 343 if (!g_text_mode) { 346 344 open_progress_form("", "", "", "", 100); … … 349 347 newtPopWindow(); 350 348 } 351 #endif352 349 return (err ? 0 : curr_set_no + 1); 353 350 } … … 410 407 int call_exe_and_pipe_output_to_fd(char *syscall, FILE * pout) 411 408 { 412 FILE *pattr; 413 char *tmp; 414 char *p; 409 FILE *pattr = NULL; 410 char *tmp = NULL; 415 411 416 412 pattr = popen(syscall, "r"); … … 424 420 return (2); 425 421 } 426 malloc_string(tmp); 427 for (p = fgets(tmp, MAX_STR_LEN, pattr); !feof(pattr) && (p != NULL); 428 p = fgets(tmp, MAX_STR_LEN, pattr)) { 422 for (mr_getline(tmp, pattr); !feof(pattr); mr_getline(tmp, pattr)) { 429 423 fputs(tmp, pout); 430 } 424 mr_free(tmp); 425 } 426 mr_free(tmp); 431 427 paranoid_pclose(pattr); 432 paranoid_free(tmp);433 428 return (0); 434 429 } … … 439 434 char *auxlist_fname) 440 435 { 441 FILE *fin ;442 FILE *pout ;436 FILE *fin = NULL; 437 FILE *pout = NULL; 443 438 char *pout_command = NULL; 444 char *syscall ;445 char *file_to_analyze ;439 char *syscall = NULL; 440 char *file_to_analyze = NULL; 446 441 char *strtmp = NULL; 447 442 char *tmp = NULL; 448 char *p = NULL;449 443 int i; 450 444 … … 462 456 mr_free(pout_command); 463 457 464 malloc_string(file_to_analyze); 465 for (p = fgets(file_to_analyze, MAX_STR_LEN, fin); !feof(fin) && (p != NULL); 466 p = fgets(file_to_analyze, MAX_STR_LEN, fin)) { 458 for (mr_getline(file_to_analyze, fin); !feof(fin); mr_getline(file_to_analyze, fin)) { 467 459 i = strlen(file_to_analyze); 468 460 if (i > 0 && file_to_analyze[i - 1] < 32) { … … 472 464 tmp = mr_stresc(file_to_analyze, "'", '\\', '\''); 473 465 mr_asprintf(syscall, "%s '%s' 2>> /dev/null", syscall_sprintf, tmp); // " MONDO_LOGFILE); 474 paranoid_free(tmp);466 mr_free(tmp); 475 467 log_msg(20,"calling %s\n",syscall); 476 468 call_exe_and_pipe_output_to_fd(syscall, pout); 477 paranoid_free(syscall); 478 } 469 mr_free(syscall); 470 mr_free(file_to_analyze); 471 } 472 mr_free(file_to_analyze); 479 473 paranoid_fclose(fin); 480 474 paranoid_pclose(pout); 481 paranoid_free(file_to_analyze);482 475 return (0); 483 476 } … … 522 515 char *syscall_pin = NULL; 523 516 char *syscall_pout = NULL; 524 char *incoming; 525 char *current_subset_file, *current_master_file; 517 char *incoming = NULL; 518 char *current_subset_file = NULL; 519 char *current_master_file = NULL; 526 520 char *masklist = NULL; 527 521 int retval = 0; 528 522 int i; 529 char *p, *q , *r;523 char *p, *q; 530 524 char *tmp = NULL; 531 525 FILE *pin, *pout, *faclin; 532 526 533 log_msg(1, "set_EXAT_list(%s, %s, %s)", orig_msklist, 534 original_exat_fname, executable); 527 log_msg(1, "set_EXAT_list(%s, %s, %s)", orig_msklist, original_exat_fname, executable); 535 528 if (!orig_msklist || !orig_msklist[0] 536 529 || !does_file_exist(orig_msklist)) { … … 552 545 } 553 546 if (length_of_file(original_exat_fname) <= 0) { 554 log_msg(1, 555 "original_exat_fname %s is empty or missing, so no need to set EXAT list", 556 original_exat_fname); 547 log_msg(1, "original_exat_fname %s is empty or missing, so no need to set EXAT list", original_exat_fname); 557 548 return (0); 558 549 } 559 malloc_string(incoming);560 malloc_string(current_subset_file);561 malloc_string(current_master_file);562 550 mr_asprintf(masklist, "%s/masklist", bkpinfo->tmpdir); 563 551 mr_asprintf(command, "cp -f %s %s", orig_msklist, masklist); … … 566 554 567 555 sort_file(masklist); 568 current_subset_file[0] = current_master_file[0] = '\0';569 556 570 557 mr_asprintf(syscall_pout, "%s --restore - 2>> %s", executable, MONDO_LOGFILE); … … 599 586 // printf("Hi there. Starting the loop\n"); 600 587 601 r = fgets(current_subset_file, MAX_STR_LEN, faclin); 602 r = fgets(incoming, MAX_STR_LEN, pin); 603 while (!feof(pin) && !feof(faclin) && (r != NULL)) { 604 // printf("incoming = %s", incoming); 605 606 strcpy(current_master_file, incoming + 8); 588 mr_getline(current_subset_file, faclin); 589 mr_getline(incoming, pin); 590 while (!feof(pin) && !feof(faclin)) { 591 mr_asprintf(current_master_file, "%s", incoming + 8); 607 592 608 593 p = current_subset_file; … … 632 617 if (i < 0) { // read another subset file in. 633 618 log_msg(my_depth, "Reading next subset line in\n\n"); 634 r = fgets(current_subset_file, MAX_STR_LEN, faclin); 619 mr_free(current_subset_file); 620 mr_getline(current_subset_file, faclin); 635 621 continue; 636 622 } … … 639 625 fputs(incoming, pout); 640 626 } 641 r = fgets(incoming, MAX_STR_LEN, pin); 627 mr_free(incoming); 628 mr_getline(incoming, pin); 642 629 if (!i) { 643 630 log_msg(my_depth, "Copying master %s", q); 644 631 } 645 // if (!i) { printf("Match --- %s\n", q); }646 632 647 633 while (!feof(pin) && strncmp(incoming, "# file: ", 8)) { 648 634 if (!i) { 649 650 // printf("%s", incoming);651 652 635 fputs(incoming, pout); 653 636 } 654 r = fgets(incoming, MAX_STR_LEN, pin); 637 mr_free(incoming); 638 mr_getline(incoming, pin); 655 639 } 656 640 if (!i) { 657 r = fgets(current_subset_file, MAX_STR_LEN, faclin); 658 } 659 } 660 while (!feof(pin)) { 661 r = fgets(incoming, MAX_STR_LEN, pin); 662 } 641 mr_free(current_subset_file); 642 mr_getline(current_subset_file, faclin); 643 } 644 mr_free(current_master_file); 645 } 646 mr_free(current_subset_file); 647 mr_free(incoming); 663 648 fclose(faclin); 664 649 pclose(pin); 665 650 pclose(pout); 666 651 667 // printf("OK, loop is done\n");668 669 652 unlink(masklist); 670 653 mr_free(masklist); 671 654 672 paranoid_free(current_subset_file);673 paranoid_free(current_master_file);674 paranoid_free(incoming);675 655 return (retval); 676 656 } … … 770 750 noof_chars = strlen(string_to_add) + 1; /* we include the '\0' */ 771 751 772 /* walk across tree if necessary */752 /* walk across tree if necessary */ 773 753 node = startnode; 774 754 char_to_add = string_to_add[0]; … … 779 759 } 780 760 781 /* walk down tree if appropriate */761 /* walk down tree if appropriate */ 782 762 if (node->down != NULL && node->ch == char_to_add) { 783 763 log_msg(7, "depth=%d char=%c --- going DOWN", depth, char_to_add); … … 793 773 } 794 774 795 /* add here */775 /* add here */ 796 776 if (!(newnode = (struct s_node *) malloc(sizeof(struct s_node)))) { 797 777 log_to_screen("failed to malloc"); … … 864 844 /*@ buffers **************************************************** */ 865 845 char *command_to_open_fname = NULL; 866 char fname[MAX_STR_LEN];867 char tmp[MAX_STR_LEN];846 char *fname = NULL; 847 char *tmp = NULL; 868 848 char *tmp1 = NULL; 869 849 int pos_in_fname; … … 911 891 912 892 open_evalcall_form("Loading filelist from disk"); 913 for (tmp1 = fgets(fname, MAX_STR_LEN, pin); !feof(pin); 914 tmp1 = fgets(fname, MAX_STR_LEN, pin)) { 915 if (((fname[strlen(fname) - 1] == 13) || (fname[strlen(fname) - 1] == 10)) && (strlen(fname) > 0)) { 893 for (mr_getline(fname, pin); !feof(pin); mr_getline(fname, pin)) { 894 if ((strlen(fname) > 0) && (fname[strlen(fname) - 1] == 13 || fname[strlen(fname) - 1] == 10)) { 916 895 fname[strlen(fname) - 1] = '\0'; 917 896 } 918 // strip_spaces (fname);919 897 if (!strlen(fname)) { 898 mr_free(fname); 920 899 continue; 921 900 } … … 924 903 continue; 925 904 } 926 strcpy(tmp, fname);905 mr_asprintf(tmp, "%s", fname); 927 906 tmp[pos_in_fname] = '\0'; 928 907 if (strlen(tmp)) { 929 908 add_string_at_node(filelist, tmp); 930 909 } 910 mr_free(tmp); 931 911 } 932 912 add_string_at_node(filelist, fname); 913 933 914 if (!(++lino % 1111)) { 934 915 percentage = (int) (lino * 100 / lines_in_filelist); 935 916 update_evalcall_form(percentage); 936 917 } 937 } 918 mr_free(fname); 919 } 920 mr_free(fname); 921 938 922 paranoid_pclose(pin); 939 923 close_evalcall_form(); … … 1297 1281 1298 1282 1299 1300 1301 1283 /** 1302 1284 * Number of entries in the skeleton filelist. … … 1314 1296 * @bug Return value should be @c void. 1315 1297 */ 1316 int open_and_list_dir(char *dir1, char *sth, FILE * fout, 1317 time_t time_of_last_full_backup) 1318 { 1298 int open_and_list_dir(char *dir1, char *sth, FILE * fout, time_t time_of_last_full_backup) { 1299 1319 1300 const char delims[] = "|"; 1320 1301 … … 1323 1304 struct stat statbuf; 1324 1305 char *new; 1325 char *tmp ;1306 char *tmp = NULL; 1326 1307 char *dir = NULL; 1327 1308 static int percentage = 0; 1328 char *skip_these ;1309 char *skip_these = NULL; 1329 1310 char *new_with_pipe; 1330 1311 char *strtmp = NULL; 1331 1312 char *token = NULL; 1332 1313 char *find_excludes = NULL; 1333 static char *name_of_evalcall_form; 1314 char *name_of_evalcall_form = NULL; 1315 char *find_skeleton_marker = NULL; 1334 1316 int i; 1335 1317 int lastpos = 0; … … 1338 1320 static int counter = 0; 1339 1321 static int uberctr = 0; 1340 static char *find_skeleton_marker; 1341 static long skeleton_lino = 0; 1342 static time_t last_time = 0; 1322 static long skeleton_lino = 0L; 1323 static time_t last_time = (time_t)0; 1343 1324 time_t this_time; 1344 1325 … … 1355 1336 1356 1337 if (!depth) { 1357 malloc_string(name_of_evalcall_form);1358 malloc_string(find_skeleton_marker);1359 1338 while((token = mr_strtok(sth, delims, &lastpos)) != NULL) { 1360 1339 mr_strcat(find_excludes," -path %s -prune -o", token); … … 1375 1354 mr_asprintf(strtmp, "find '%s' -maxdepth %d -fstype mvfs -prune -o -path /proc -prune -o %s -type d -print > %s 2> /dev/null", dir, MAX_SKEL_DEPTH, find_excludes, g_skeleton_filelist); 1376 1355 #endif 1377 paranoid_free(find_excludes); 1356 mr_free(find_excludes); 1357 1378 1358 log_msg(5, "find command = %s", strtmp); 1379 1359 paranoid_system(strtmp); 1380 paranoid_free(strtmp); 1360 mr_free(strtmp); 1361 1381 1362 mr_asprintf(tmp, "wc -l %s | awk '{print $1;}'", g_skeleton_filelist); 1382 g_skeleton_entries = 1383 1 + atol(call_program_and_get_last_line_of_output(tmp));1384 paranoid_free(tmp); 1385 sprintf(name_of_evalcall_form, "Making catalog of %s", dir1);1363 g_skeleton_entries = 1 + atol(call_program_and_get_last_line_of_output(tmp)); 1364 mr_free(tmp); 1365 1366 mr_asprintf(name_of_evalcall_form, "Making catalog of %s", dir1); 1386 1367 open_evalcall_form(name_of_evalcall_form); 1387 find_skeleton_marker[0] = '\0'; 1368 mr_free(name_of_evalcall_form); 1369 1388 1370 skeleton_lino = 1; 1389 1371 log_msg(5, "entries = %ld", g_skeleton_entries); … … 1391 1373 } else if (depth <= MAX_SKEL_DEPTH) // update evalcall form if appropriate 1392 1374 { 1393 sprintf(find_skeleton_marker, 1394 "grep -Fv '%s' %s > %s.new 2> /dev/null", dir, 1395 g_skeleton_filelist, g_skeleton_filelist); 1396 // log_msg(0, "fsm = %s", find_skeleton_marker); 1375 mr_asprintf(find_skeleton_marker, "grep -Fv '%s' %s > %s.new 2> /dev/null", dir, g_skeleton_filelist, g_skeleton_filelist); 1397 1376 if (!system(find_skeleton_marker)) { 1398 1377 percentage = (int) (skeleton_lino * 100 / g_skeleton_entries); 1399 1378 skeleton_lino++; 1400 // log_msg(5, "Found %s", dir); 1401 // log_msg(2, "Incrementing skeleton_lino; now %ld/%ld (%d%%)", skeleton_lino, g_skeleton_entries, percentage); 1402 sprintf(find_skeleton_marker, "mv -f %s.new %s", 1403 g_skeleton_filelist, g_skeleton_filelist); 1404 // log_msg(6, "fsm = %s", find_skeleton_marker); 1379 mr_free(find_skeleton_marker); 1380 1381 mr_asprintf(find_skeleton_marker, "mv -f %s.new %s", g_skeleton_filelist, g_skeleton_filelist); 1405 1382 paranoid_system(find_skeleton_marker); 1406 1383 time(&this_time); 1407 1384 if (this_time != last_time) { 1408 1385 last_time = this_time; 1409 #ifndef _XWIN1410 1386 if (!g_text_mode) { 1411 1387 int cols, rows; … … 1415 1391 mr_free(tmp); 1416 1392 } 1417 #endif1418 1393 update_evalcall_form(percentage); 1419 1394 } 1420 1395 } 1396 mr_free(find_skeleton_marker); 1421 1397 } 1422 1398 … … 1430 1406 mr_asprintf(tmp,"opendir %s", dir1); 1431 1407 log_OS_error(tmp); 1432 paranoid_free(tmp);1408 mr_free(tmp); 1433 1409 } else if (strstr(skip_these, new_with_pipe)) { 1434 1410 log_msg(10, "Found dir ***%s**** excluded", dir1); … … 1444 1420 mr_asprintf(new,"%s%s",dir1,dit->d_name); 1445 1421 } 1446 paranoid_free(new_with_pipe);1422 mr_free(new_with_pipe); 1447 1423 mr_asprintf(new_with_pipe, "|%s|", new); 1448 1424 if (strstr(skip_these, new_with_pipe)) { 1449 1425 fprintf(fout, "%s\n", new); 1450 1426 log_msg(10, "Found child dir ***%s**** excluded", new); 1451 paranoid_free(new_with_pipe);1427 mr_free(new_with_pipe); 1452 1428 } else { 1453 paranoid_free(new_with_pipe);1429 mr_free(new_with_pipe); 1454 1430 if (!lstat(new, &statbuf)) { 1455 1431 if (!S_ISLNK(statbuf.st_mode) 1456 1432 && S_ISDIR(statbuf.st_mode)) { 1457 1433 log_msg(10, "Found child dir ***%s**** parsed", new); 1458 open_and_list_dir(new, skip_these, fout, 1459 time_of_last_full_backup); 1434 open_and_list_dir(new, skip_these, fout, time_of_last_full_backup); 1460 1435 } else { 1461 if (time_of_last_full_backup == 0 1462 || time_of_last_full_backup < 1463 statbuf.st_ctime) { 1436 if (time_of_last_full_backup == 0 || time_of_last_full_backup < statbuf.st_ctime) { 1464 1437 log_msg(10, "Found child file ***%s**** parsed", new); 1465 1438 fprintf(fout, "%s\n", new); … … 1468 1441 uberctr++; 1469 1442 mr_asprintf(tmp, " %c ", special_dot_char(uberctr)); 1470 #ifndef _XWIN1471 1443 if (!g_text_mode) { 1472 newtDrawRootText(77, g_noof_rows - 3, 1473 tmp); 1444 newtDrawRootText(77, g_noof_rows - 3, tmp); 1474 1445 newtRefresh(); 1475 1446 } 1476 #endif 1477 paranoid_free(tmp); 1447 mr_free(tmp); 1478 1448 } 1479 1449 } … … 1481 1451 } 1482 1452 } 1483 paranoid_free(new);1484 } 1485 } 1486 paranoid_free(new_with_pipe);1487 paranoid_free(skip_these);1453 mr_free(new); 1454 } 1455 } 1456 mr_free(new_with_pipe); 1457 mr_free(skip_these); 1488 1458 mr_free(dir); 1489 1459 … … 1496 1466 if (!depth) { 1497 1467 close_evalcall_form(); 1498 paranoid_free(name_of_evalcall_form);1499 paranoid_free(find_skeleton_marker);1500 1468 unlink(g_skeleton_filelist); 1501 1469 log_msg(5, "g_skeleton_entries = %ld", g_skeleton_entries); … … 1525 1493 char *p, *q; 1526 1494 char *sz_datefile; 1527 char *sz_filelist , *tmp;1495 char *sz_filelist; 1528 1496 char *exclude_paths = NULL; 1529 1497 FILE *fout; … … 1534 1502 char *tmp2 = NULL; 1535 1503 1536 malloc_string(tmp);1537 malloc_string(g_skeleton_filelist);1538 1504 mr_asprintf(sz_datefile,MONDO_CACHE"/difflevel.%d" , 0); 1539 1505 if (!include_paths && !userdef_filelist) { 1540 fatal_error 1541 ("Please supply either include_paths or userdef_filelist"); 1542 } 1543 // make hole for filelist 1506 fatal_error("Please supply either include_paths or userdef_filelist"); 1507 } 1508 // make hole for filelist 1544 1509 mr_asprintf(command, "mkdir -p %s/archives", scratchdir); 1545 1510 paranoid_system(command); … … 1557 1522 // backup last known good datefile just in case :) 1558 1523 if (does_file_exist(sz_datefile)) { 1559 mr_asprintf(command, "mv -f %s %s.aborted", sz_datefile, 1560 sz_datefile); 1524 mr_asprintf(command, "mv -f %s %s.aborted", sz_datefile, sz_datefile); 1561 1525 paranoid_system(command); 1562 1526 mr_free(command); … … 1567 1531 ("date +%s")); 1568 1532 } else if (lstat(sz_datefile, &statbuf)) { 1569 log_msg(2, 1570 "Warning - unable to find date of previous backup. Full backup instead."); 1533 log_msg(2, "Warning - unable to find date of previous backup. Full backup instead."); 1571 1534 differential = 0; 1572 1535 time_of_last_full_backup = 0; … … 1579 1542 // use user-specified filelist (if specified) 1580 1543 if (userdef_filelist) { 1581 log_msg(1, 1582 "Using the user-specified filelist - %s - instead of calculating one", 1583 userdef_filelist); 1544 log_msg(1, "Using the user-specified filelist - %s - instead of calculating one", userdef_filelist); 1584 1545 mr_asprintf(command, "cp -f %s %s", userdef_filelist, sz_filelist); 1585 1546 if (run_program_and_log_output(command, 3)) { … … 1589 1550 mr_free(command); 1590 1551 } else { 1591 log_msg(2, "include_paths = '%s'", include_paths); 1552 if (include_paths) { 1553 log_msg(2, "include_paths = '%s'", include_paths); 1554 } 1592 1555 log_msg(1, "Calculating filelist"); 1593 1556 mr_asprintf(tmp2, "%s", call_program_and_get_last_line_of_output("mount | grep -Ew 'ntfs|ntfs-3g|fat|vfat|dos' | awk '{print $3}'")); … … 1597 1560 log_msg(2, "Found windows FS: %s",tmp2); 1598 1561 mr_asprintf(tmp1, "find %s -name '/win386.swp' -o -name '/hiberfil.sys' -o -name '/pagefile.sys' 2> /dev/null\n",tmp2); 1599 paranoid_free(tmp2);1562 mr_free(tmp2); 1600 1563 mr_asprintf(tmp2, "%s", call_program_and_get_last_line_of_output(tmp1)); 1601 1564 log_msg(2, "Found windows files: %s",tmp2); 1602 1565 } 1603 paranoid_free(tmp1);1566 mr_free(tmp1); 1604 1567 1605 1568 mr_asprintf(exclude_paths, MONDO_CACHE"|%s|%s|%s|.|..|"MNT_CDROM"|"MNT_FLOPPY"|/media|/tmp|/proc|/sys|/run|/dev/shm|"MINDI_CACHE, tmp2, (tmpdir[0] == '/' && tmpdir[1] == '/') ? (tmpdir + 1) : tmpdir, (scratchdir[0] == '/' && scratchdir[1] == '/') ? (scratchdir + 1) : scratchdir); … … 1607 1570 mr_strcat(exclude_paths,"|%s",excp); 1608 1571 } 1609 paranoid_free(tmp2);1572 mr_free(tmp2); 1610 1573 1611 1574 log_msg(2, "Excluding paths = '%s'", exclude_paths); 1612 log_msg(2, 1613 "Generating skeleton filelist so that we can track our progress"); 1614 sprintf(g_skeleton_filelist, "%s/tmpfs/skeleton.txt", tmpdir); 1575 log_msg(2, "Generating skeleton filelist so that we can track our progress"); 1576 mr_asprintf(g_skeleton_filelist, "%s/tmpfs/skeleton.txt", tmpdir); 1615 1577 make_hole_for_file(g_skeleton_filelist); 1578 1616 1579 log_msg(4, "g_skeleton_entries = %ld", g_skeleton_entries); 1617 1580 log_msg(2, "Opening out filelist to %s", sz_filelist); … … 1619 1582 fatal_error("Cannot openout to sz_filelist"); 1620 1583 } 1621 if ( strlen(include_paths) == 0) {1584 if ((include_paths != NULL) && (strlen(include_paths) == 0)) { 1622 1585 log_msg(1, "Including only '/' in %s", sz_filelist); 1623 1586 open_and_list_dir("/", exclude_paths, fout, … … 1637 1600 } 1638 1601 } 1602 mr_free(exclude_paths); 1639 1603 paranoid_fclose(fout); 1640 1604 } … … 1654 1618 paranoid_free(sz_filelist); 1655 1619 log_msg(2, "Freeing variables"); 1656 paranoid_free(exclude_paths); 1657 paranoid_free(tmp); 1658 paranoid_free(g_skeleton_filelist); 1620 mr_free(g_skeleton_filelist); 1659 1621 log_msg(2, "Exiting"); 1660 1622 return (0); 1661 1623 } 1624 1662 1625 1663 1626 /** … … 1680 1643 1681 1644 assert(bkpinfo != NULL); 1682 log_it("tmpdir=%s; scratchdir=%s", bkpinfo->tmpdir, 1683 bkpinfo->scratchdir); 1645 log_it("tmpdir=%s; scratchdir=%s", bkpinfo->tmpdir, bkpinfo->scratchdir); 1684 1646 if (bkpinfo->make_filelist) { 1685 1647 mvaddstr_and_log_it(g_currentY, 0, … … 1792 1754 FILE *fin; 1793 1755 FILE *fout; 1794 char *fname; 1795 char *tmp; 1796 size_t len = 0; // Scrub's patch doesn't work without that 1797 1798 // log_msg(1, "use_star = %s", (use_star)?"TRUE":"FALSE"); 1799 malloc_string(fname); 1800 malloc_string(tmp); 1756 char *fname = NULL; 1757 char *tmp = NULL; 1758 1801 1759 log_msg(5, "starting"); 1802 1760 log_msg(5, "needles_list_fname = %s", needles_list_fname); … … 1809 1767 } 1810 1768 while (!feof(fin)) { 1811 // fscanf(fin, "%s\n", fname); 1812 len = MAX_STR_LEN - 1; 1813 if (getline(&fname, &len, fin)) { 1814 // FIXME 1815 } 1769 mr_getline(fname, fin); 1816 1770 if (!use_star) { 1817 1771 if (fname[0] == '/') { 1818 strcpy(tmp, fname);1772 mr_asprintf(tmp, "%s", fname); 1819 1773 } else { 1820 tmp[0] = '/'; 1821 strcpy(tmp + 1, fname); 1774 mr_asprintf(tmp, "/%s", fname); 1822 1775 } 1823 strcpy(fname, tmp); 1776 mr_free(fname); 1777 fname = tmp; 1824 1778 } 1825 1779 while (strlen(fname) > 0 && fname[strlen(fname) - 1] < 32) { … … 1832 1786 if (found_node->selected) { 1833 1787 if (fname[0] == '/') { 1834 strcpy(tmp, fname + 1); 1835 strcpy(fname, tmp); 1788 mr_asprintf(tmp, "%s", fname + 1); 1789 mr_free(fname); 1790 fname = tmp; 1836 1791 } 1837 1792 log_msg(5, "Found '%s'", fname); 1838 turn_wildcard_chars_into_literal_chars(tmp, fname); 1839 fprintf(fout, "%s\n", tmp); 1793 tmp = mr_stresc(fname, "[]*?", '\\', "'"); 1794 mr_free(fname); 1795 fname = tmp; 1796 fprintf(fout, "%s\n", fname); 1840 1797 retval++; 1841 1798 } 1842 1799 } 1800 mr_free(fname); 1843 1801 } 1844 1802 paranoid_fclose(fout); 1845 1803 paranoid_fclose(fin); 1846 paranoid_free(fname);1847 paranoid_free(tmp);1848 1804 return (retval); 1849 1805 } 1850 1851 1852 1853 1806 1854 1807 … … 1865 1818 char *list_of_files_fname, bool flag_em) 1866 1819 { 1867 FILE *fin; 1868 char *tmp; 1869 char *p; 1870 struct s_node *nod; 1871 1872 malloc_string(tmp); 1820 FILE *fin = NULL; 1821 char *tmp = NULL; 1822 struct s_node *nod = NULL; 1823 1873 1824 log_msg(3, "Adding %s to filelist", list_of_files_fname); 1874 1825 if (!(fin = fopen(list_of_files_fname, "r"))) { … … 1876 1827 return (1); 1877 1828 } 1878 for (p = fgets(tmp, MAX_STR_LEN, fin); !feof(fin) && (p != NULL); 1879 p = fgets(tmp, MAX_STR_LEN, fin)) { 1829 for (mr_getline(tmp, fin); !feof(fin); mr_getline(tmp, fin)) { 1880 1830 if (!tmp[0]) { 1831 mr_free(tmp); 1881 1832 continue; 1882 1833 } 1883 if ((tmp[strlen(tmp) - 1] == 13 || tmp[strlen(tmp) - 1] == 10) 1884 && strlen(tmp) > 0) { 1834 if ((strlen(tmp) > 0) && (tmp[strlen(tmp) - 1] == 13 || tmp[strlen(tmp) - 1] == 10)) { 1885 1835 tmp[strlen(tmp) - 1] = '\0'; 1886 1836 } 1887 1837 log_msg(2, "tmp = '%s'", tmp); 1888 1838 if (!tmp[0]) { 1839 mr_free(tmp); 1889 1840 continue; 1890 1841 } … … 1900 1851 log_msg(5, "Flagged '%s'", tmp); 1901 1852 } 1902 } 1853 mr_free(tmp); 1854 } 1855 mr_free(tmp); 1903 1856 paranoid_fclose(fin); 1904 paranoid_free(tmp);1905 1857 return (0); 1906 1858 }
Note:
See TracChangeset
for help on using the changeset viewer.