Changeset 900 in MondoRescue for trunk/mondo/src/common/libmondo-stream.c
- Timestamp:
- Oct 24, 2006, 8:49:18 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mondo/src/common/libmondo-stream.c
r783 r900 22 22 #include "libmondo-tools-EXT.h" 23 23 #include "libmondo-fifo-EXT.h" 24 #include "mr_mem.h" 24 25 25 26 #define EXTRA_TAPE_CHECKSUMS … … 126 127 eject_device(bkpinfo->media_device); 127 128 } 128 paranoid_free(blk);129 paranoid_free(g_tapecatalog);129 mr_free(blk); 130 mr_free((void *)g_tapecatalog); 130 131 return (retval); 131 132 } … … 180 181 g_tapecatalog->el[i].tape_posK); 181 182 } 182 paranoid_free(blk);183 paranoid_free(g_tapecatalog);183 mr_free(blk); 184 mr_free((void *)g_tapecatalog); 184 185 return (retval); 185 186 } … … 192 193 int res; 193 194 194 asprintf(&command, "mt -f %s status", dev);195 mr_asprintf(&command, "mt -f %s status", dev); 195 196 res = run_program_and_log_output(command, 1); 196 paranoid_free(command);197 mr_free(command); 197 198 if (res) { 198 199 return (FALSE); … … 224 225 tmp = find_home_of_exe("cdrecord"); 225 226 if (tmp) { 226 asprintf(&cdr_exe, "cdrecord");227 } else { 228 asprintf(&cdr_exe, "dvdrecord");229 } 230 paranoid_free(tmp);231 232 asprintf(&command, "%s -scanbus 2> /dev/null | grep -i tape | wc -l",227 mr_asprintf(&cdr_exe, "cdrecord"); 228 } else { 229 mr_asprintf(&cdr_exe, "dvdrecord"); 230 } 231 mr_free(tmp); 232 233 mr_asprintf(&command, "%s -scanbus 2> /dev/null | grep -i tape | wc -l", 233 234 cdr_exe); 234 235 tmp = call_program_and_get_last_line_of_output(command); 235 paranoid_free(command);236 mr_free(command); 236 237 237 238 if (atoi(tmp) != 1) { 238 239 log_it 239 240 ("Either too few or too many tape streamers for me to detect..."); 240 asprintf(&dev, VANILLA_SCSI_TAPE"0");241 paranoid_free(tmp);242 paranoid_free(cdr_exe);241 mr_asprintf(&dev, VANILLA_SCSI_TAPE"0"); 242 mr_free(tmp); 243 mr_free(cdr_exe); 243 244 return 1; 244 245 } 245 paranoid_free(tmp);246 247 asprintf(&command,246 mr_free(tmp); 247 248 mr_asprintf(&command, 248 249 "%s -scanbus 2> /dev/null | tr -s '\t' ' ' | grep \"[0-9]*,[0-9]*,[0-9]*\" | grep -v \"[0-9]*) \\*\" | grep -i TAPE | cut -d' ' -f2 | head -n1", 249 250 cdr_exe); 250 251 tmp = call_program_and_get_last_line_of_output(command); 251 paranoid_free(command);252 mr_free(command); 252 253 if (strlen(tmp) < 2) { 253 254 log_it("Could not find tape device"); 254 paranoid_free(tmp);255 paranoid_free(cdr_exe);255 mr_free(tmp); 256 mr_free(cdr_exe); 256 257 return 1; 257 258 } 258 paranoid_free(tmp);259 260 asprintf(&command,259 mr_free(tmp); 260 261 mr_asprintf(&command, 261 262 "%s -scanbus 2> /dev/null | tr -s '\t' ' ' | grep \"[0-9]*,[0-9]*,[0-9]*\" | grep -v \"[0-9]*) \\*\" | grep -i TAPE | cut -d' ' -f3 | cut -d')' -f1 | head -n1", 262 263 cdr_exe); 263 paranoid_free(cdr_exe);264 mr_free(cdr_exe); 264 265 265 266 tmp = call_program_and_get_last_line_of_output(command); 266 paranoid_free(command);267 268 asprintf(&dev, VANILLA_SCSI_TAPE"%s", tmp);269 paranoid_free(tmp);267 mr_free(command); 268 269 mr_asprintf(&dev, VANILLA_SCSI_TAPE"%s", tmp); 270 mr_free(tmp); 270 271 271 272 if (!mt_says_tape_exists(dev)) { 272 paranoid_free(dev);273 274 asprintf(&dev, ALT_TAPE"%s", tmp);273 mr_free(dev); 274 275 mr_asprintf(&dev, ALT_TAPE"%s", tmp); 275 276 if (!mt_says_tape_exists(dev)) { 276 277 log_it("Cannot openin %s", dev); 277 paranoid_free(dev);278 279 asprintf(&dev, VANILLA_SCSI_TAPE"0");278 mr_free(dev); 279 280 mr_asprintf(&dev, VANILLA_SCSI_TAPE"0"); 280 281 if (!mt_says_tape_exists(dev)) { 281 282 log_it("Cannot openin %s", dev); 282 paranoid_free(dev);283 284 asprintf(&dev, "/dev/osst0");283 mr_free(dev); 284 285 mr_asprintf(&dev, "/dev/osst0"); 285 286 if (!mt_says_tape_exists(dev)) { 286 287 res++; … … 303 304 } else { 304 305 log_it("Turning %s", dev); 305 paranoid_free(tmp);306 asprintf(&tmp1,306 mr_free(tmp); 307 mr_asprintf(&tmp1, 307 308 (strrchr(dev, '/') != NULL) ? strrchr(dev, '/') : dev); 308 paranoid_free(dev);309 asprintf(&dev, "/dev/os%s", tmp1);310 paranoid_free(tmp1);309 mr_free(dev); 310 mr_asprintf(&dev, "/dev/os%s", tmp1); 311 mr_free(tmp1); 311 312 312 313 log_it("...into %s", dev); … … 321 322 322 323 if (res) { 323 paranoid_free(tmp);324 mr_free(tmp); 324 325 return (res); 325 326 } … … 327 328 if (strlen(tmp) < 2) { 328 329 log_it("Warning - size of tape unknown"); 329 paranoid_free(tmp);330 mr_free(tmp); 330 331 return (0); 331 332 } else { … … 352 353 fatal_error("Wrong order, sunshine."); 353 354 } 354 paranoid_free(fname);355 mr_free(fname); 355 356 fname = (char *)&res; 356 357 read_file_from_stream_to_file(bkpinfo, xattr_fname, *ptmp_size); … … 364 365 fatal_error("Wrong order, sunshine."); 365 366 } 366 paranoid_free(fname);367 mr_free(fname); 367 368 fname = (char *)&res; 368 369 if (*pctrl_chr != BLK_START_EXAT_FILE) { … … 425 426 if (g_current_media_number != tapeno) { 426 427 // log_it("g_current_media_number = %d", g_current_media_number); 427 asprintf(&tmp,428 mr_asprintf(&tmp, 428 429 _("When the tape drive goes quiet, please insert volume %d in this series."), 429 430 tapeno); 430 431 popup_and_OK(tmp); 431 paranoid_free(tmp);432 mr_free(tmp); 432 433 open_evalcall_form(_("Waiting while the tape drive settles")); 433 434 } else { … … 482 483 483 484 bufsize_K = (long long) (1024LL * (1 + g_tape_buffer_size_MB)); 484 asprintf(&tmpdir, "%s/tmpfs/backcatalog", td);485 mr_asprintf(&tmpdir, "%s/tmpfs/backcatalog", td); 485 486 if (strstr(latest_fname, ".afio.") || strstr(latest_fname, ".star.")) { 486 487 type = fileset; … … 493 494 } 494 495 mkdir(tmpdir, 0x700); 495 asprintf(&command, "cp -f %s %s", latest_fname, tmpdir);496 mr_asprintf(&command, "cp -f %s %s", latest_fname, tmpdir); 496 497 if (run_program_and_log_output(command, 6)) { 497 498 log_it("Warning - failed to copy %s to backcatalog at %s", 498 499 latest_fname, tmpdir); 499 500 } 500 paranoid_free(command);501 mr_free(command); 501 502 502 503 last = g_tapecatalog->entries - 1; … … 522 523 523 524 for (i = curr - 1; i >= 0 && curr - i < 10; i--) { 524 asprintf(&old_fname, "%s/%s", tmpdir, g_tapecatalog->el[i].fname);525 mr_asprintf(&old_fname, "%s/%s", tmpdir, g_tapecatalog->el[i].fname); 525 526 unlink(old_fname); 526 paranoid_free(old_fname);527 } 528 paranoid_free(tmpdir);527 mr_free(old_fname); 528 } 529 mr_free(tmpdir); 529 530 return (0); 530 531 } … … 554 555 return (0); 555 556 } 556 asprintf(&tmp, "mt -f %s setblk %ld", tapedev,557 mr_asprintf(&tmp, "mt -f %s setblk %ld", tapedev, 557 558 internal_tape_block_size); 558 559 res = run_program_and_log_output(tmp, 3); 559 paranoid_free(tmp);560 mr_free(tmp); 560 561 return (res); 561 562 } … … 605 606 } 606 607 insist_on_this_tape_number(1); 607 asprintf(&outfname, "%s/tmp/all.tar.gz", bkpinfo->tmpdir);608 mr_asprintf(&outfname, "%s/tmp/all.tar.gz", bkpinfo->tmpdir); 608 609 make_hole_for_file(outfname); 609 610 … … 649 650 } 650 651 paranoid_fclose(fout); 651 paranoid_free(datablock);652 mr_free(datablock); 652 653 /* find initial blocks */ 653 654 res = read_header_block_from_stream(&size, NULL, &ctrl_chr); … … 665 666 (void) getcwd(old_cwd, MAX_STR_LEN); 666 667 chdir(bkpinfo->tmpdir); 667 asprintf(&tmp, "tar -zxf %s tmp/mondo-restore.cfg 2> /dev/null",668 mr_asprintf(&tmp, "tar -zxf %s tmp/mondo-restore.cfg 2> /dev/null", 668 669 outfname); 669 670 paranoid_system(tmp); 670 paranoid_free(tmp);671 mr_free(tmp); 671 672 paranoid_system("cp -f tmp/mondo-restore.cfg . 2> /dev/null"); 672 673 chdir(old_cwd); 673 674 unlink(outfname); 674 paranoid_free(outfname);675 mr_free(outfname); 675 676 return (retval); 676 677 } … … 692 693 693 694 /* add 'dummy' if testing */ 694 asprintf(&command,695 mr_asprintf(&command, 695 696 "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s", 696 697 cddev, speed, MONDO_LOGFILE, MONDO_LOGFILE); … … 706 707 /* log_it("Let's see what happens, shall we?"); */ 707 708 g_tape_stream = popen(command, "w"); 708 paranoid_free(command);709 mr_free(command); 709 710 if (g_tape_stream) { 710 711 return (0); … … 852 853 res = read_header_block_from_stream(&temp_size, temp_fname, &ctrl_chr); 853 854 if (orig_size != temp_size && orig_size != -1) { 854 asprintf(&tmp,855 mr_asprintf(&tmp, 855 856 "output file's size should be %ld K but is apparently %ld K", 856 857 (long) size >> 10, (long) temp_size >> 10); 857 858 log_to_screen(tmp); 858 paranoid_free(tmp);859 mr_free(tmp); 859 860 } 860 861 if (ctrl_chr != BLK_START_FILE) { … … 862 863 return (1); 863 864 } 864 asprintf(&tmp, "Reading file from tape; writing to '%s'; %ld KB",865 mr_asprintf(&tmp, "Reading file from tape; writing to '%s'; %ld KB", 865 866 outfname, (long) size >> 10); 866 867 log_to_screen(tmp); 867 paranoid_free(tmp);868 mr_free(tmp); 868 869 869 870 if (foutstream) { … … 921 922 log_msg(6, ".......................... Should be %lld", orig_size); 922 923 g_tape_posK += total_read_from_tape_for_this_file / 1024; 923 asprintf(&actual_cksum, "%04x%04x", crc16, crctt);924 mr_asprintf(&actual_cksum, "%04x%04x", crc16, crctt); 924 925 if (foutstream) { /*log_it("Finished writing to foutstream"); */ 925 926 } else { … … 932 933 } 933 934 if (strcmp(temp_cksum, actual_cksum)) { 934 asprintf(&tmp, _("actual cksum=%s; recorded cksum=%s"), actual_cksum,935 mr_asprintf(&tmp, _("actual cksum=%s; recorded cksum=%s"), actual_cksum, 935 936 temp_cksum); 936 937 log_to_screen(tmp); 937 paranoid_free(tmp);938 939 asprintf(&tmp, _("%s (%ld K) is corrupt on tape"), temp_fname,938 mr_free(tmp); 939 940 mr_asprintf(&tmp, _("%s (%ld K) is corrupt on tape"), temp_fname, 940 941 (long) orig_size >> 10); 941 942 log_to_screen(tmp); 942 paranoid_free(tmp);943 mr_free(tmp); 943 944 retval++; 944 945 } 945 paranoid_free(actual_cksum);946 paranoid_free(datablock);947 paranoid_free(temp_fname);948 paranoid_free(temp_cksum);946 mr_free(actual_cksum); 947 mr_free(datablock); 948 mr_free(temp_fname); 949 mr_free(temp_cksum); 949 950 return (retval); 950 951 } … … 992 993 * something (allocate) */ 993 994 if (filename != NULL) { 994 asprintf(&filename, tempblock + 1000);995 mr_asprintf(&filename, tempblock + 1000); 995 996 } 996 997 if (*pcontrol_char == BLK_ABORTED_BACKUP) { … … 1009 1010 marker_to_string(*pcontrol_char), tempblock + 1000, 1010 1011 (long) (*plen) >> 10); 1011 paranoid_free(tempblock);1012 mr_free(tempblock); 1012 1013 return (retval); 1013 1014 } … … 1133 1134 wrong_marker(BLK_START_AN_AFIO_OR_SLICE, ctrl_chr); 1134 1135 log_msg(3, "Still trying to re-sync w/ tape"); 1135 paranoid_free(temp_fname);1136 mr_free(temp_fname); 1136 1137 temp_fname = (char *)&res; 1137 1138 } … … 1148 1149 /* Do not desallocate when the while condition is met */ 1149 1150 if (ctrl_chr != BLK_START_FILE) { 1150 paranoid_free(temp_fname);1151 mr_free(temp_fname); 1151 1152 temp_fname = (char *)&res; 1152 1153 } … … 1174 1175 } 1175 1176 1176 paranoid_free(temp_fname);1177 mr_free(temp_fname); 1177 1178 temp_fname = (char *)&res; 1178 1179 res = read_header_block_from_stream(&temp_size, NULL, &ctrl_chr); … … 1211 1212 log_msg(2, "Reading %s (it matches %s)", temp_fname, 1212 1213 the_file_I_was_reading); 1213 paranoid_free(temp_fname);1214 paranoid_free(datablock);1214 mr_free(temp_fname); 1215 mr_free(datablock); 1215 1216 return (0); 1216 1217 } … … 1281 1282 } 1282 1283 if (bkpinfo->backup_media_type == cdstream) { 1283 asprintf(&command,1284 mr_asprintf(&command, 1284 1285 "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s", 1285 1286 bkpinfo->media_device, bkpinfo->cdrw_speed, MONDO_LOGFILE, … … 1289 1290 log_it("Let's see what happens, shall we?"); 1290 1291 g_tape_stream = popen(command, "w"); 1291 paranoid_free(command);1292 mr_free(command); 1292 1293 if (!g_tape_stream) { 1293 1294 log_to_screen(_("Failed to openout to cdstream (fifo)")); … … 1332 1333 last = g_tapecatalog->entries - 1; 1333 1334 for (i = 0; i <= last; i++) { 1334 asprintf(&fname, "%s/tmpfs/backcatalog/%s", bkpinfo->tmpdir,1335 mr_asprintf(&fname, "%s/tmpfs/backcatalog/%s", bkpinfo->tmpdir, 1335 1336 g_tapecatalog->el[i].fname); 1336 1337 if (!does_file_exist(fname)) { … … 1351 1352 } 1352 1353 } 1353 paranoid_free(fname);1354 mr_free(fname); 1354 1355 } 1355 1356 log_msg(2, "Finished writing back catalog to tape"); … … 1385 1386 log_it("Data disks = %s", fname); 1386 1387 if (!does_file_exist(fname)) { 1387 asprintf(&tmp, _("Cannot find %s"), fname);1388 mr_asprintf(&tmp, _("Cannot find %s"), fname); 1388 1389 log_to_screen(tmp); 1389 paranoid_free(tmp);1390 mr_free(tmp); 1390 1391 return (1); 1391 1392 } … … 1479 1480 p++; 1480 1481 } 1481 asprintf(&tmp, "Writing file '%s' to tape (%ld KB)", p,1482 mr_asprintf(&tmp, "Writing file '%s' to tape (%ld KB)", p, 1482 1483 (long) filesize >> 10); 1483 1484 log_it(tmp); 1484 paranoid_free(tmp);1485 mr_free(tmp); 1485 1486 1486 1487 write_header_block_to_stream(filesize, infile_basename, … … 1522 1523 } 1523 1524 paranoid_fclose(fin); 1524 asprintf(&checksum, "%04x%04x", crc16, crctt);1525 mr_asprintf(&checksum, "%04x%04x", crc16, crctt); 1525 1526 /* BERLIOS: what does it do ??? */ 1526 1527 write_header_block_to_stream((off_t)g_current_media_number, checksum, 1527 1528 BLK_STOP_FILE); 1528 paranoid_free(checksum);1529 mr_free(checksum); 1529 1530 // log_it("File '%s' written to tape.", infile); 1530 1531 return (retval); … … 1582 1583 fwrite(tempblock, 1, (size_t) TAPE_BLOCK_SIZE, 1583 1584 g_tape_stream) / 1024; 1584 asprintf(&tmp, "%s (fname=%s, size=%ld K)",1585 mr_asprintf(&tmp, "%s (fname=%s, size=%ld K)", 1585 1586 marker_to_string(control_char), p, 1586 1587 (long) length_of_incoming_file >> 10); 1587 1588 log_msg(6, tmp); 1588 paranoid_free(tmp);1589 mr_free(tmp); 1589 1590 return (0); 1590 1591 } … … 1603 1604 1604 1605 /*@ end vars *************************************************** */ 1605 asprintf(&tmp, _("Wrong marker! (Should be %s, is actually %s)"),1606 mr_asprintf(&tmp, _("Wrong marker! (Should be %s, is actually %s)"), 1606 1607 marker_to_string(should_be), marker_to_string(it_is)); 1607 1608 log_to_screen(tmp); 1608 paranoid_free(tmp);1609 mr_free(tmp); 1609 1610 } 1610 1611
Note:
See TracChangeset
for help on using the changeset viewer.