Changeset 1175 in MondoRescue
- Timestamp:
- Feb 16, 2007, 2:15:30 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mondo/src/common/libmondo-stream.c
r1174 r1175 130 130 } 131 131 sleep(1); 132 paranoid_system("sync");132 sync(); 133 133 sleep(1); 134 134 paranoid_pclose(g_tape_stream); 135 135 log_it("closein_tape() -- leaving"); 136 /*137 for(i=0; i < g_tapecatalog->entries; i++)138 {139 log_it("i=%d type=%s num=%d aux=%ld", i, (g_tapecatalog->el[i].type==fileset)?"fileset":"bigslice", g_tapecatalog->el[i].number, g_tapecatalog->el[i].aux);140 }141 */142 136 if (!bkpinfo->please_dont_eject) { 143 137 eject_device(bkpinfo->media_device); … … 161 155 /*@ int's ******************************************************* */ 162 156 int retval = 0; 163 // int res = 0;164 // int ctrl_chr = '\0';165 166 /*@ buffers ***************************************************** */167 // char fname[MAX_STR_LEN];168 157 169 158 /*@ long long's ************************************************* */ 170 // long long size; 171 int i; 172 char *blk; 159 int i = 0; 160 char *blk = NULL; 173 161 174 162 blk = (char *) mr_malloc(256 * 1024); 175 163 176 164 sleep(1); 177 paranoid_system("sync");165 sync(); 178 166 sleep(1); 179 167 log_it("closeout_tape() -- entering"); … … 182 170 BLK_END_OF_BACKUP); 183 171 retval += write_header_block_to_stream((off_t)0, "end-of-tape", BLK_END_OF_TAPE); /* just in case */ 184 /* write 1MB of crap */172 /* write 1MB of crap */ 185 173 for (i = 0; i < 256 * 1024; i++) { 186 174 blk[i] = (int) (random() & 0xFF); … … 193 181 } 194 182 } 195 /* write 1MB of zeroes */196 /*197 for (i = 0; i < 256*1024; i++)198 {199 blk[i] = 0;200 }201 for (i = 0; i < 4; i++)202 {203 fwrite (blk, 1, 256*1024, g_tape_stream);204 if (should_we_write_to_next_tape (bkpinfo->media_size[g_current_media_number], 256*1024))205 {206 start_to_write_to_next_tape (bkpinfo);207 }208 }209 */210 183 sleep(2); 211 184 paranoid_pclose(g_tape_stream); … … 218 191 g_tapecatalog->el[i].tape_posK); 219 192 } 220 // if (!bkpinfo->please_dont_eject)221 // { eject_device(bkpinfo->media_device); }222 193 mr_free(blk); 223 194 mr_free(g_tapecatalog); … … 232 203 int res; 233 204 234 malloc_string(command); 235 sprintf(command, "mt -f %s status", dev); 205 mr_asprintf(&command, "mt -f %s status", dev); 236 206 res = run_program_and_log_output(command, 1); 237 207 mr_free(command); … … 255 225 { 256 226 char tmp[MAX_STR_LEN]; 257 char command[MAX_STR_LEN * 2];227 char *command = NULL; 258 228 char cdr_exe[MAX_STR_LEN]; 259 // char tape_description_[MAX_STR_LEN];260 // char tape_manufacturer_cdr[MAX_STR_LEN];261 // FILE*fin;262 229 int res; 263 230 … … 269 236 strcpy(cdr_exe, "dvdrecord"); 270 237 } 271 sprintf(command, "%s -scanbus 2> /dev/null | grep -i tape | wc -l",238 mr_asprintf(&command, "%s -scanbus 2> /dev/null | grep -i tape | wc -l", 272 239 cdr_exe); 273 240 strcpy(tmp, call_program_and_get_last_line_of_output(command)); 241 mr_free(command); 274 242 if (atoi(tmp) != 1) { 275 243 log_it … … 278 246 return 1; 279 247 } 280 sprintf(command,248 mr_asprintf(&command, 281 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", 282 250 cdr_exe); 283 251 strcpy(tmp, call_program_and_get_last_line_of_output(command)); 252 mr_free(command); 284 253 if (strlen(tmp) < 2) { 285 254 log_it("Could not find tape device"); 286 255 return 1; 287 256 } 288 sprintf(command,257 mr_asprintf(&command, 289 258 "%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", 290 259 cdr_exe); 291 260 strcpy(tmp, call_program_and_get_last_line_of_output(command)); 261 mr_free(command); 262 292 263 strcpy(dev, VANILLA_SCSI_TAPE); 293 264 dev[strlen(dev) - 1] = '\0'; … … 350 321 351 322 352 353 354 355 356 323 int read_EXAT_files_from_tape(struct s_bkpinfo *bkpinfo, 357 324 long long *ptmp_size, char *tmp_fname, … … 379 346 mr_msg(1, "Got xattr"); 380 347 } 381 // acl348 // acl 382 349 if (g_getfacl) { 383 350 res = read_header_block_from_stream(ptmp_size, fname, pctrl_chr); … … 399 366 mr_msg(1, "Got acl"); 400 367 } 401 // tarball itself368 // tarball itself 402 369 res = read_header_block_from_stream(ptmp_size, tmp_fname, pctrl_chr); 403 370 mr_msg(1, "now looking for afioball"); … … 443 410 { 444 411 int i; 445 char tmp[MAX_STR_LEN];412 char *tmp = NULL; 446 413 447 414 log_it("Insisting on tape #%d", tapeno); 448 415 if (g_current_media_number != tapeno) { 449 416 // log_it("g_current_media_number = %d", g_current_media_number); 450 sprintf(tmp,451 "When the tape drive goes quiet, please insert volume %d in this series.",452 tapeno);417 mr_asprintf(&tmp, 418 _("When the tape drive goes quiet, please insert volume %d in this series."), 419 tapeno); 453 420 popup_and_OK(tmp); 454 open_evalcall_form("Waiting while the tape drive settles"); 455 } else { 456 open_evalcall_form("Waiting while the tape drive rewinds"); 421 mr_free(tmp); 422 open_evalcall_form(_("Waiting while the tape drive settles")); 423 } else { 424 open_evalcall_form(_("Waiting while the tape drive rewinds")); 457 425 } 458 426 … … 470 438 471 439 472 473 474 440 /** 475 441 * Debugging aid - log the offset we're at on the tape (reading or writing). … … 477 443 void log_tape_pos(void) 478 444 { 479 /*@ buffers ***************************************************** */480 481 482 /*@ end vars *************************************************** */483 484 445 log_it("Tape position -- %ld KB (%ld MB)", (long) g_tape_posK, 485 446 (long) g_tape_posK >> 10); 486 447 } 487 488 489 448 490 449 … … 506 465 int last, curr, i; 507 466 t_archtype type = other; 508 char command[MAX_STR_LEN]; 509 char tmpdir[MAX_STR_LEN]; 510 char old_fname[MAX_STR_LEN]; 511 char *p; 512 char suffix[16]; 467 char *command = NULL; 468 char *tmpdir = NULL; 469 char *old_fname = NULL; 513 470 514 471 bufsize_K = (long long) (1024LL * (1 + g_tape_buffer_size_MB)); 515 sprintf(tmpdir, "%s/tmpfs/backcatalog", td);516 if ((p = strrchr(latest_fname, '.'))) {517 strcpy(suffix, ++p);518 } else {519 suffix[0] = '\0';520 }521 472 if (strstr(latest_fname, ".afio.") || strstr(latest_fname, ".star.")) { 522 473 type = fileset; … … 528 479 ("Unknown type. Internal error in maintain_collection_of_recent_archives()"); 529 480 } 481 482 mr_asprintf(&tmpdir, "%s/tmpfs/backcatalog", td); 530 483 mkdir(tmpdir, 0x700); 531 sprintf(command, "cp -f %s %s", latest_fname, tmpdir);484 mr_asprintf(&command, "cp -f %s %s", latest_fname, tmpdir); 532 485 if (run_program_and_log_output(command, 6)) { 533 486 log_it("Warning - failed to copy %s to backcatalog at %s", 534 487 latest_fname, tmpdir); 535 488 } 489 mr_free(command); 490 536 491 last = g_tapecatalog->entries - 1; 537 492 if (last <= 0) { … … 556 511 557 512 for (i = curr - 1; i >= 0 && curr - i < 10; i--) { 558 sprintf(old_fname, "%s/%s", tmpdir, g_tapecatalog->el[i].fname);513 mr_asprintf(&old_fname, "%s/%s", tmpdir, g_tapecatalog->el[i].fname); 559 514 unlink(old_fname); 560 } 515 mr_free(old_fname); 516 } 517 mr_free(tmpdir); 561 518 return (0); 562 519 } 563 564 565 520 566 521 … … 575 530 return (openin_tape(bkpinfo)); 576 531 } 577 578 /**579 * FIFO used to read/write to the tape device.580 * @bug This seems obsolete now that we call an external @c buffer program. Please look onto this.581 */582 char g_tape_fifo[MAX_STR_LEN];583 584 532 585 533 … … 595 543 return (0); 596 544 } 597 m alloc_string(tmp);598 sprintf(tmp, "mt -f %s setblk %ld", tapedev,internal_tape_block_size);545 mr_asprintf(&tmp, "mt -f %s setblk %ld", tapedev, 546 internal_tape_block_size); 599 547 res = run_program_and_log_output(tmp, 3); 600 548 mr_free(tmp); 601 549 return (res); 602 550 } 603 604 551 605 552 … … 616 563 /*@ buffer ***************************************************** */ 617 564 char fname[MAX_STR_LEN]; 618 char *datablock ;619 char tmp[MAX_STR_LEN];565 char *datablock = NULL; 566 char *tmp = NULL; 620 567 char old_cwd[MAX_STR_LEN]; 621 char outfname[MAX_STR_LEN];568 char *outfname = NULL; 622 569 /*@ int ******************************************************* */ 623 570 int i; … … 646 593 } 647 594 insist_on_this_tape_number(1); 648 sprintf(outfname, "%s/tmp/all.tar.gz", bkpinfo->tmpdir);595 mr_asprintf(&outfname, "%s/tmp/all.tar.gz", bkpinfo->tmpdir); 649 596 make_hole_for_file(outfname); 650 597 … … 652 599 bkpinfo->internal_tape_block_size); 653 600 654 // start_buffer_process( bkpinfo->media_device, g_tape_fifo, FALSE);655 601 log_it("Opening IN tape"); 656 602 if (! … … 658 604 open_device_via_buffer(bkpinfo->media_device, 'r', 659 605 bkpinfo->internal_tape_block_size))) { 660 log_OS_error(g_tape_fifo); 661 log_to_screen("Cannot openin stream device"); 606 log_to_screen(_("Cannot openin stream device")); 662 607 return (1); 663 608 } 664 log_to_screen( "Reading stream");609 log_to_screen(_("Reading stream")); 665 610 log_it("stream device = '%s'", bkpinfo->media_device); 666 /* skip data disks */611 /* skip data disks */ 667 612 open_evalcall_form("Skipping data disks on stream"); 668 log_to_screen( "Skipping data disks on stream");613 log_to_screen(_("Skipping data disks on stream")); 669 614 if (!(fout = fopen(outfname, "w"))) { 670 615 log_OS_error(outfname); 671 log_to_screen( "Cannot openout datadisk all.tar.gz file");616 log_to_screen(_("Cannot openout datadisk all.tar.gz file")); 672 617 return (-1); 673 618 } … … 690 635 paranoid_fclose(fout); 691 636 mr_free(datablock); 692 /* find initial blocks */637 /* find initial blocks */ 693 638 res = read_header_block_from_stream(&size, fname, &ctrl_chr); 694 639 retval += res; … … 705 650 (void) getcwd(old_cwd, MAX_STR_LEN); 706 651 chdir(bkpinfo->tmpdir); 707 sprintf(tmp, "tar -zxf %s tmp/mondo-restore.cfg 2> /dev/null",708 outfname);652 mr_asprintf(&tmp, "tar -zxf %s tmp/mondo-restore.cfg 2> /dev/null", 653 outfname); 709 654 paranoid_system(tmp); 655 mr_free(tmp); 710 656 paranoid_system("cp -f tmp/mondo-restore.cfg . 2> /dev/null"); 711 657 chdir(old_cwd); 712 658 unlink(outfname); 659 mr_free(outfname); 713 660 return (retval); 714 661 } … … 725 672 { 726 673 /*@ buffers ***************************************************** */ 727 char command[MAX_STR_LEN * 2];674 char *command = NULL; 728 675 729 676 /*@ end vars *************************************************** */ 730 677 731 /* add 'dummy' if testing */732 sprintf(command,733 "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s",734 cddev, speed, MONDO_LOGFILE, MONDO_LOGFILE);735 /* initialise the catalog */678 /* add 'dummy' if testing */ 679 mr_asprintf(&command, 680 "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s", 681 cddev, speed, MONDO_LOGFILE, MONDO_LOGFILE); 682 /* initialise the catalog */ 736 683 g_current_media_number = 1; 737 684 g_tapecatalog = mr_malloc(sizeof(struct s_tapecatalog)); 738 685 g_tapecatalog->entries = 0; 739 /* log stuff */686 /* log stuff */ 740 687 log_it("Opening OUT cdstream with the command"); 741 688 log_it(command); 742 /* log_it("Let's see what happens, shall we?"); */689 /* log_it("Let's see what happens, shall we?"); */ 743 690 g_tape_stream = popen(command, "w"); 691 mr_free(command); 744 692 if (g_tape_stream) { 745 693 return (0); 746 694 } else { 747 log_to_screen( "Failed to openout to cdstream (fifo)");695 log_to_screen(_("Failed to openout to cdstream (fifo)")); 748 696 return (1); 749 697 } 750 698 } 699 751 700 752 701 /** … … 759 708 int openout_tape(char *tapedev, long internal_tape_block_size) 760 709 { 761 // char sz_call_to_buffer[MAX_STR_LEN];762 763 710 g_current_media_number = 1; 764 711 if (g_tape_stream) { … … 775 722 (g_tape_stream = 776 723 open_device_via_buffer(tapedev, 'w', internal_tape_block_size))) { 777 log_OS_error(g_tape_fifo); 778 log_to_screen("Cannot openin stream device"); 724 log_to_screen(_("Cannot openin stream device")); 779 725 return (1); 780 726 } 781 727 return (0); 782 728 } 783 784 785 729 786 730 … … 806 750 return (res); 807 751 } 808 809 752 810 753 … … 828 771 829 772 res = read_file_from_stream_FULL(bkpinfo, NULL, fout, size); 830 /* fflush(g_tape_stream);831 fflush(fout);*/832 773 return (res); 833 774 } 834 835 775 836 776 … … 852 792 { 853 793 /*@ buffers ***************************************************** */ 854 char *tmp ;855 char *datablock ;794 char *tmp = NULL; 795 char *datablock = NULL; 856 796 char *temp_fname; 857 797 char *temp_cksum; 858 char *actual_cksum; 859 // char *pA, *pB; 798 char *actual_cksum = NULL; 860 799 861 800 /*@ int ********************************************************* */ … … 871 810 872 811 /*@ long ***************************************************** */ 873 long bytes_to_write = 0 /*,i */ ; 874 // long bytes_successfully_read_in_this_time = 0; 812 long bytes_to_write = 0; 875 813 876 814 /*@ long long *************************************************** */ … … 880 818 long long where_I_was_before_tape_change = 0; 881 819 /*@ unsigned int ************************************************ */ 882 /* unsigned int ch; */883 820 unsigned int crc16; 884 821 unsigned int crctt; … … 887 824 888 825 /*@ init ******************************************************* */ 889 malloc_string(tmp);890 826 malloc_string(temp_fname); 891 827 malloc_string(temp_cksum); 892 malloc_string(actual_cksum);893 828 datablock = mr_malloc(TAPE_BLOCK_SIZE); 894 829 crc16 = 0; … … 900 835 res = read_header_block_from_stream(&temp_size, temp_fname, &ctrl_chr); 901 836 if (orig_size != temp_size && orig_size != -1) { 902 sprintf(tmp,903 "output file's size should be %ld K but is apparently %ld K",904 (long) size >> 10, (long) temp_size >> 10);837 mr_asprintf(&tmp, 838 "output file's size should be %ld K but is apparently %ld K", 839 (long) size >> 10, (long) temp_size >> 10); 905 840 log_to_screen(tmp); 841 mr_free(tmp); 906 842 } 907 843 if (ctrl_chr != BLK_START_FILE) { … … 909 845 return (1); 910 846 } 911 sprintf(tmp, "Reading file from tape; writing to '%s'; %ld KB", 912 outfname, (long) size >> 10); 847 mr_asprintf(&tmp, "Reading file from tape; writing to '%s'; %ld KB", 848 outfname, (long) size >> 10); 849 log_to_screen(tmp); 850 mr_free(tmp); 913 851 914 852 if (foutstream) { … … 919 857 if (!fout) { 920 858 log_OS_error(outfname); 921 log_to_screen( "Cannot openout file");859 log_to_screen(_("Cannot openout file")); 922 860 return (1); 923 861 } … … 966 904 mr_msg(6, ".......................... Should be %lld", orig_size); 967 905 g_tape_posK += total_read_from_tape_for_this_file / 1024; 968 sprintf(actual_cksum, "%04x%04x", crc16, crctt);906 mr_asprintf(&actual_cksum, "%04x%04x", crc16, crctt); 969 907 if (foutstream) { /*log_it("Finished writing to foutstream"); */ 970 908 } else { … … 977 915 } 978 916 if (strcmp(temp_cksum, actual_cksum)) { 979 sprintf(tmp, "actual cksum=%s; recorded cksum=%s", actual_cksum,980 temp_cksum);917 mr_asprintf(&tmp, _("actual cksum=%s; recorded cksum=%s"), actual_cksum, 918 temp_cksum); 981 919 log_to_screen(tmp); 982 sprintf(tmp, "%s (%ld K) is corrupt on tape", temp_fname, 983 (long) orig_size >> 10); 920 mr_free(tmp); 921 922 mr_asprintf(&tmp, _("%s (%ld K) is corrupt on tape"), temp_fname, 923 (long) orig_size >> 10); 984 924 log_to_screen(tmp); 925 mr_free(tmp); 985 926 retval++; 986 } else { 987 sprintf(tmp, "%s is GOOD on tape", temp_fname); 988 /* log_it(tmp); */ 989 } 927 } 928 mr_free(actual_cksum); 990 929 mr_free(datablock); 991 mr_free(tmp);992 930 mr_free(temp_fname); 993 931 mr_free(temp_cksum); 994 mr_free(actual_cksum);995 932 return (retval); 996 933 } 997 998 934 999 935 … … 1031 967 g_tape_stream) / 1024; 1032 968 } 1033 /* memcpy((char*)plength_of_incoming_file,(char*)tempblock+7001,sizeof(long long)); */1034 /* for(*plen=0,i=7;i>=0;i--) {*plen<<=8; *plen |= tempblock[7001+i];} */1035 969 memcpy((char *) plen, tempblock + 7001, sizeof(long long)); 1036 970 if (strcmp(tempblock + 6000 + *pcontrol_char, "Mondolicious, baby")) { … … 1038 972 } 1039 973 strcpy(filename, tempblock + 1000); 1040 /* strcpy(cksum,tempblock+5555);*/1041 /* log_it( "%s (reading) fname=%s, filesize=%ld K",1042 marker_to_string (*pcontrol_char), filename,1043 (long) ((*plen) >> 10));1044 */1045 974 if (*pcontrol_char == BLK_ABORTED_BACKUP) { 1046 975 log_to_screen("I can't verify an aborted backup."); … … 1061 990 return (retval); 1062 991 } 1063 1064 992 1065 993 … … 1107 1035 1108 1036 1109 1110 1111 1037 /** 1112 1038 * Decide whether we should start a new tape. This is TRUE if we've run out of tape … … 1134 1060 log_it("mediasize = %ld", mediasize); 1135 1061 we_need_a_new_tape = TRUE; 1136 log_to_screen( "Should have started a new tape/CD already");1062 log_to_screen(_("Should have started a new tape/CD already")); 1137 1063 } 1138 1064 if ((g_tape_posK + length_of_incoming_file / 1024) >> 10 >= … … 1280 1206 1281 1207 paranoid_pclose(g_tape_stream); 1282 sy stem("sync");1283 sy stem("sync");1284 sy stem("sync");1208 sync(); 1209 sync(); 1210 sync(); 1285 1211 log_it("Next tape requested."); 1286 1212 insist_on_this_tape_number(g_current_media_number + 1); // will increment it, too … … 1290 1216 open_device_via_buffer(bkpinfo->media_device, 'r', 1291 1217 bkpinfo->internal_tape_block_size))) { 1292 log_OS_error(g_tape_fifo); 1293 log_to_screen("Cannot openin stream device"); 1218 log_to_screen(_("Cannot openin stream device")); 1294 1219 return (1); 1295 1220 } … … 1311 1236 1312 1237 1313 1314 1238 /** 1315 1239 * Start to write to the next tape. Assume the user has already inserted it. … … 1320 1244 { 1321 1245 int res = 0; 1322 char command[MAX_STR_LEN * 2]; 1246 char *command = NULL; 1247 1323 1248 paranoid_pclose(g_tape_stream); 1324 sy stem("sync");1325 sy stem("sync");1326 sy stem("sync");1249 sync(); 1250 sync(); 1251 sync(); 1327 1252 log_it("New tape requested."); 1328 1253 insist_on_this_tape_number(g_current_media_number + 1); // will increment g_current_media, too 1329 1254 if (g_current_media_number > MAX_NOOF_MEDIA) { 1330 1255 res++; 1331 log_to_screen( "Too many tapes. Man, you need to use nfs!");1256 log_to_screen(_("Too many tapes. Man, you need to use nfs!")); 1332 1257 } 1333 1258 if (bkpinfo->backup_media_type == cdstream) { 1334 sprintf(command,1335 "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s",1336 bkpinfo->media_device, bkpinfo->cdrw_speed, MONDO_LOGFILE,1337 MONDO_LOGFILE);1259 mr_asprintf(&command, 1260 "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s", 1261 bkpinfo->media_device, bkpinfo->cdrw_speed, MONDO_LOGFILE, 1262 MONDO_LOGFILE); 1338 1263 log_it("Opening OUT to next CD with the command"); 1339 1264 log_it(command); 1340 1265 log_it("Let's see what happens, shall we?"); 1341 1266 g_tape_stream = popen(command, "w"); 1267 mr_free(command); 1342 1268 if (!g_tape_stream) { 1343 log_to_screen( "Failed to openout to cdstream (fifo)");1269 log_to_screen(_("Failed to openout to cdstream (fifo)")); 1344 1270 return (1); 1345 1271 } … … 1350 1276 open_device_via_buffer(bkpinfo->media_device, 'w', 1351 1277 bkpinfo->internal_tape_block_size))) { 1352 log_OS_error(g_tape_fifo); 1353 log_to_screen("Cannot openin stream device"); 1278 log_to_screen(_("Cannot openin stream device")); 1354 1279 return (1); 1355 1280 } … … 1361 1286 return (res); 1362 1287 } 1363 1364 1365 1288 1366 1289 … … 1380 1303 { 1381 1304 int i, last, res = 0; 1382 char *fname ;1305 char *fname = NULL; 1383 1306 1384 1307 mr_msg(2, "I am now writing back catalog to tape"); 1385 malloc_string(fname);1386 1308 last = g_tapecatalog->entries - 1; 1387 1309 for (i = 0; i <= last; i++) { 1388 sprintf(fname, "%s/tmpfs/backcatalog/%s", bkpinfo->tmpdir,1389 g_tapecatalog->el[i].fname);1310 mr_asprintf(&fname, "%s/tmpfs/backcatalog/%s", bkpinfo->tmpdir, 1311 g_tapecatalog->el[i].fname); 1390 1312 if (!does_file_exist(fname)) { 1391 1313 mr_msg(6, "Can't write %s - it doesn't exist.", fname); … … 1405 1327 } 1406 1328 } 1407 }1408 mr_free(fname);1329 mr_free(fname); 1330 } 1409 1331 mr_msg(2, "Finished writing back catalog to tape"); 1410 1332 return (res); … … 1412 1334 1413 1335 1414 1415 1336 /** 1416 1337 * Write all.tar.gz (produced by Mindi) to the first 32M of the first tape. … … 1421 1342 { 1422 1343 /*@ pointers *************************************************** */ 1423 FILE *fin ;1424 char tmp[MAX_STR_LEN];1344 FILE *fin = NULL; 1345 char *tmp = NULL; 1425 1346 1426 1347 /*@ long ******************************************************* */ … … 1436 1357 /*@ end vars *************************************************** */ 1437 1358 1438 open_evalcall_form( "Writing data disks to tape");1439 log_to_screen( "Writing data disks to tape");1359 open_evalcall_form(_("Writing data disks to tape")); 1360 log_to_screen(_("Writing data disks to tape")); 1440 1361 log_it("Data disks = %s", fname); 1441 1362 if (!does_file_exist(fname)) { 1442 sprintf(tmp, "Cannot find %s", fname);1363 mr_asprintf(&tmp, _("Cannot find %s"), fname); 1443 1364 log_to_screen(tmp); 1365 mr_free(tmp); 1444 1366 return (1); 1445 1367 } … … 1473 1395 1474 1396 1475 1476 1477 1397 /** 1478 1398 * Copy @p infile to the opened stream (CD or tape). … … 1484 1404 { 1485 1405 /*@ buffers **************************************************** */ 1486 char tmp[MAX_STR_LEN];1406 char *tmp = NULL; 1487 1407 char datablock[TAPE_BLOCK_SIZE]; 1488 char checksum[MAX_STR_LEN];1489 char *infile_basename ;1408 char *checksum = NULL; 1409 char *infile_basename = NULL; 1490 1410 1491 1411 /*@ int ******************************************************** */ … … 1514 1434 crc16 = 0; 1515 1435 crctt = 0; 1516 1517 1518 1436 1519 1437 /*@ end vars *************************************************** */ … … 1537 1455 p++; 1538 1456 } 1539 sprintf(tmp, "Writing file '%s' to tape (%ld KB)", p,1540 (long) filesize >> 10);1457 mr_asprintf(&tmp, "Writing file '%s' to tape (%ld KB)", p, 1458 (long) filesize >> 10); 1541 1459 log_it(tmp); 1460 mr_free(tmp); 1461 1542 1462 write_header_block_to_stream(filesize, infile_basename, 1543 1463 BLK_START_FILE); … … 1558 1478 } 1559 1479 (void) fread(datablock, 1, (size_t) bytes_to_read, fin); 1560 g_tape_posK += 1561 fwrite(datablock, 1, /*bytes_to_read */ 1562 (size_t) TAPE_BLOCK_SIZE, 1563 g_tape_stream) / 1024; 1480 g_tape_posK += fwrite(datablock, 1, /*bytes_to_read */ 1481 (size_t) TAPE_BLOCK_SIZE, 1482 g_tape_stream) / 1024; 1564 1483 if (g_sigpipe) { 1565 1484 iamhere("Sigpipe occurred recently. I'll start a new tape."); … … 1579 1498 } 1580 1499 paranoid_fclose(fin); 1581 sprintf(checksum, "%04x%04x", crc16, crctt);1500 mr_asprintf(&checksum, "%04x%04x", crc16, crctt); 1582 1501 /* BERLIOS: what does it do ??? */ 1583 1502 write_header_block_to_stream((off_t)g_current_media_number, checksum, 1584 1503 BLK_STOP_FILE); 1504 mr_free(checksum); 1585 1505 // log_it("File '%s' written to tape.", infile); 1586 1506 return (retval); 1587 1507 } 1588 1589 1590 1591 1508 1592 1509 … … 1608 1525 /*@ buffers **************************************************** */ 1609 1526 char tempblock[TAPE_BLOCK_SIZE]; 1610 char tmp[MAX_STR_LEN];1611 1527 char *p; 1612 1528 … … 1628 1544 if (!g_tape_stream) { 1629 1545 log_to_screen 1630 ( "You're not backing up to tape. Why write a tape header?");1546 (_("You're not backing up to tape. Why write a tape header?")); 1631 1547 return (1); 1632 1548 } … … 1636 1552 sprintf(tempblock + 6000 + control_char, "Mondolicious, baby"); 1637 1553 tempblock[7000] = control_char; 1638 /* for(i=0;i<8;i++) {tempblock[7001+i]=olen&0xff; olen>>=8;} */1639 1554 memcpy(tempblock + 7001, (char *) &olen, sizeof(off_t)); 1640 /* if (length_of_incoming_file) {memcpy(tempblock+7001,(char*)&length_of_incoming_file,sizeof(long long));} */1641 1555 strcpy(tempblock + 1000, filename); 1642 /* strcpy(tempblock+5555,cksum); */1643 1556 g_tape_posK += 1644 1557 fwrite(tempblock, 1, (size_t) TAPE_BLOCK_SIZE, 1645 1558 g_tape_stream) / 1024; 1646 sprintf(tmp, "%s (fname=%s, size=%ld K)",1559 mr_msg(6, "%s (fname=%s, size=%ld K)", 1647 1560 marker_to_string(control_char), p, 1648 1561 (long) length_of_incoming_file >> 10); 1649 mr_msg(6, tmp);1650 /* log_tape_pos(); */1651 1562 return (0); 1652 1563 } 1653 1654 1655 1656 1657 1658 1659 1660 1661 1564 1662 1565 … … 1669 1572 { 1670 1573 /*@ buffer ***************************************************** */ 1671 char tmp[MAX_STR_LEN];1574 char *tmp = NULL; 1672 1575 1673 1576 1674 1577 /*@ end vars *************************************************** */ 1675 sprintf(tmp, "Wrong marker! (Should be %s, ", 1676 marker_to_string(should_be)); 1677 sprintf(tmp + strlen(tmp), "is actually %s)", marker_to_string(it_is)); 1578 mr_asprintf(&tmp, _("Wrong marker! (Should be %s, is actually %s)"), 1579 marker_to_string(should_be), marker_to_string(it_is)); 1678 1580 log_to_screen(tmp); 1581 mr_free(tmp); 1679 1582 } 1680 1583
Note:
See TracChangeset
for help on using the changeset viewer.