Changeset 2325 in MondoRescue for branches/2.2.10/mondo/src/common
- Timestamp:
- Aug 18, 2009, 3:19:15 PM (16 years ago)
- Location:
- branches/2.2.10/mondo/src/common
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.10/mondo/src/common/libmondo-archive.c
r2324 r2325 561 561 if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) { 562 562 mr_asprintf(tape_size_sz, "%ld", bkpinfo->media_size[1]); 563 ntapedev = get_non_rewind_dev(bkpinfo->media_device); 563 if (bkpinfo->media_device) { 564 ntapedev = get_non_rewind_dev(bkpinfo->media_device); 565 } 564 566 if ((bkpinfo->use_obdr) && (ntapedev != NULL)) { 565 strncpy(bkpinfo->media_device,ntapedev,(size_t)(MAX_STR_LEN / 4)); 567 mr_free(bkpinfo->media_device); 568 mr_asprintf(bkpinfo->media_device,"%s",ntapedev); 566 569 } else { 567 570 if (ntapedev == NULL) { … … 569 572 } 570 573 } 571 paranoid_free(ntapedev); 572 mr_asprintf(tape_device, "%s", bkpinfo->media_device); 574 mr_free(ntapedev); 575 if (bkpinfo->media_device) { 576 mr_asprintf(tape_device, "%s", bkpinfo->media_device); 577 } else { 578 mr_asprintf(tape_device, ""); 579 } 573 580 } else { 574 581 mr_asprintf(tape_size_sz, "%ld", 0L);; … … 759 766 fatal_error("Unknown backup_media_type"); 760 767 } 761 if ( bkpinfo->backup_media_type == usb) {768 if ((bkpinfo->backup_media_type == usb) && (bkpinfo->media_device)) { 762 769 mr_asprintf(tmp2, "--usb %s", bkpinfo->media_device); 763 770 } else { … … 1197 1204 mr_free(data_disks_file); 1198 1205 1199 mr_asprintf(command, "rm -f %s/%s/%s-[1-9]*.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix); 1200 paranoid_system(command); 1201 mr_free(command); 1206 if ((bkpinfo->isodir != NULL) && (bkpinfo->prefix != NULL)) { 1207 if (bkpinfo->nfs_remote_dir) { 1208 // NFS 1209 mr_asprintf(command, "rm -f %s/%s/%s-[1-9]*.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix); 1210 } else { 1211 // ISO 1212 mr_asprintf(command, "rm -f %s/%s-[1-9]*.iso", bkpinfo->isodir, bkpinfo->prefix); 1213 } 1214 paranoid_system(command); 1215 mr_free(command); 1216 } 1202 1217 1203 1218 wipe_archives(bkpinfo->scratchdir); … … 1516 1531 log_msg(1, message_to_screen); 1517 1532 1518 mr_asprintf(tmp1, "%s1", bkpinfo->media_device); 1533 if (bkpinfo->media_device) { 1534 mr_asprintf(tmp1, "%s1", bkpinfo->media_device); 1535 } else { 1536 mr_asprintf(tmp1, ""); 1537 } 1519 1538 if (is_this_device_mounted(tmp1)) { 1520 1539 log_msg(1, "USB device mounted. Remounting it at the right place"); … … 1700 1719 } 1701 1720 pause_for_N_seconds(5, "Letting DVD drive settle"); 1702 mr_asprintf(sz_blank_disk, "dvd+rw-format -force %s", bkpinfo->media_device); 1721 if (bkpinfo->media_device) { 1722 mr_asprintf(sz_blank_disk, "dvd+rw-format -force %s", bkpinfo->media_device); 1723 } else { 1724 mr_asprintf(sz_blank_disk, "dvd+rw-format"); 1725 } 1703 1726 log_msg(3, "sz_blank_disk = '%s'", sz_blank_disk); 1704 res = 1705 run_external_binary_with_percentage_indicator_NEW 1706 ("Blanking DVD disk", sz_blank_disk); 1727 res = run_external_binary_with_percentage_indicator_NEW("Blanking DVD disk", sz_blank_disk); 1707 1728 if (res) { 1708 1729 log_to_screen … … 1820 1841 || bkpinfo->backup_media_type == cdrw) { 1821 1842 if (is_this_device_mounted(bkpinfo->media_device)) { 1822 log_msg(2, 1823 "Warning - %s mounted. I'm unmounting it before I burn to it.", 1824 bkpinfo->media_device); 1843 log_msg(2, "Warning - %s mounted. I'm unmounting it before I burn to it.", bkpinfo->media_device); 1825 1844 mr_asprintf(tmp, "umount %s", bkpinfo->media_device); 1826 1845 run_program_and_log_output(tmp, FALSE); … … 2604 2623 /*@ buffers ********************************************* */ 2605 2624 char *tmp = NULL; 2606 char *cdrom_dev ;2625 char *cdrom_dev = NULL; 2607 2626 char *cdrw_dev; 2608 2627 char *our_serial_str = NULL; … … 2616 2635 char *mds = NULL; 2617 2636 2618 malloc_string(cdrom_dev);2619 2637 malloc_string(cdrw_dev); 2620 2638 malloc_string(szcdno); … … 2634 2652 gotos_make_me_puke: 2635 2653 ok_go_ahead_burn_it = TRUE; 2636 if ( !find_cdrom_device(cdrom_dev, FALSE)) {2637 /* When enabled, it made CD eject-and-retract when wrong CD inserted.. Weird2638 2639 2640 */2654 if ((cdrom_dev = find_cdrom_device(FALSE)) != NULL) { 2655 /* When enabled, it made CD eject-and-retract when wrong CD inserted.. Weird 2656 log_msg(2, "paafcd: Retracting CD-ROM drive if possible" ); 2657 retract_CD_tray_and_defeat_autorun(); 2658 */ 2641 2659 mr_asprintf(tmp, "umount %s", cdrom_dev); 2642 2660 run_program_and_log_output(tmp, 1); … … 2718 2736 popup_and_OK(tmp); 2719 2737 mr_free(tmp); 2738 mr_free(cdrom_dev); 2720 2739 goto gotos_make_me_puke; 2721 2740 } else { 2722 2741 log_msg(2, "paafcd: OK, going ahead and burning it."); 2723 2742 } 2743 mr_free(cdrom_dev); 2724 2744 2725 2745 mds = media_descriptor_string(g_backup_media_type); … … 2730 2750 mr_free(mds); 2731 2751 2732 paranoid_free(cdrom_dev);2733 2752 paranoid_free(cdrw_dev); 2734 2753 paranoid_free(mtpt); … … 3187 3206 3188 3207 /*@ buffers ***************************************************** */ 3189 char *tmp ;3190 char *tmp1 ;3208 char *tmp = NULL; 3209 char *tmp1 = NULL; 3191 3210 char *cdno_fname = NULL; 3192 3211 char *lastcd_fname = NULL; … … 3200 3219 /*@ int *********************************************************** */ 3201 3220 int res = 0; 3202 3203 malloc_string(tmp);3204 3221 3205 3222 assert(bkpinfo != NULL); … … 3246 3263 log_to_screen("Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.", (long) space_occupied_by_cd(bkpinfo->scratchdir), (long) bkpinfo->media_size[g_current_media_number]); 3247 3264 } 3248 mr_asprintf(isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number); 3265 if (((bkpinfo->isodir == NULL) && (bkpinfo->nfs_remote_dir == NULL)) || (bkpinfo->prefix == NULL)) { 3266 fatal_error("Something wrong in your environement. Report to dev team"); 3267 } 3268 if (bkpinfo->nfs_remote_dir) { 3269 // NFS 3270 mr_asprintf(isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number); 3271 } else { 3272 // ISO 3273 mr_asprintf(isofile, "%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->prefix, g_current_media_number); 3274 } 3249 3275 for (that_one_was_ok = FALSE; !that_one_was_ok;) { 3250 3276 if (bkpinfo->backup_media_type != usb) { … … 3256 3282 && (bkpinfo->backup_media_type == cdr 3257 3283 || bkpinfo->backup_media_type == cdrw)) { 3258 if ( find_cdrom_device(tmp, FALSE)) // make sure find_cdrom_device() finds, records CD-R's loc3259 {3284 if ((tmp = find_cdrom_device(FALSE)) == NULL) { 3285 // make sure find_cdrom_device() finds, records CD-R's loc 3260 3286 log_msg(3, "*Sigh* Mike, I hate your computer."); 3287 // if it can't be found then force pausing 3261 3288 bkpinfo->manual_cd_tray = TRUE; 3262 } // if it can't be found then force pausing 3263 else { 3289 } else { 3264 3290 log_msg(3, "Great. Found Mike's CD-ROM drive."); 3265 3291 } 3292 mr_free(tmp); 3266 3293 } 3267 3294 if (bkpinfo->verify_data && !res) { 3268 3295 mds = media_descriptor_string(g_backup_media_type); 3269 log_to_screen 3270 ("Please reboot from the 1st %s in Compare Mode, as a precaution.", mds); 3296 log_to_screen("Please reboot from the 1st %s in Compare Mode, as a precaution.", mds); 3271 3297 mr_free(mds); 3272 3298 chdir("/"); … … 3320 3346 3321 3347 bkpinfo->verify_data = orig_vfy_flag_val; 3322 mr_free(tmp);3323 3348 return (0); 3324 3349 } … … 3353 3378 "Verifying archives against live filesystem"); 3354 3379 if (bkpinfo->backup_media_type == cdstream) { 3355 strcpy(bkpinfo->media_device, "/dev/cdrom"); 3380 mr_free(bkpinfo->media_device); 3381 mr_asprintf(bkpinfo->media_device, "/dev/cdrom"); 3356 3382 } 3357 3383 verify_tape_backups(); … … 3368 3394 g_current_media_number = cdno; 3369 3395 if (bkpinfo->backup_media_type != iso) { 3370 find_cdrom_device(bkpinfo->media_device, FALSE); // replace 0,0,0 with /dev/cdrom 3396 mr_free(bkpinfo->media_device); 3397 bkpinfo->media_device = find_cdrom_device(FALSE); // replace 0,0,0 with /dev/cdrom 3371 3398 } 3372 3399 chdir("/"); -
branches/2.2.10/mondo/src/common/libmondo-cli.c
r2324 r2325 114 114 } 115 115 } 116 mr_asprintf(tmp, "rm -Rf %s/tmp.mondo.*", bkpinfo->tmpdir);117 paranoid_system(tmp);118 mr_free(tmp);119 120 mr_asprintf(tmp, "rm -Rf %s/mondo.scratch.*", bkpinfo->scratchdir);121 paranoid_system(tmp);122 mr_free(tmp);123 124 mr_strcat(bkpinfo->scratchdir, "/mondo.scratch.%ld", random() % 32767);125 126 116 mr_asprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir); 127 117 paranoid_system(tmp); … … 889 879 if ((flag_set['t'] && !flag_set['d']) && (! bkpinfo->restore_data)) { 890 880 log_it("Hmm! No tape drive specified. Let's see what we can do."); 891 p = mr_find_tape_device(); 892 if (!p) { 881 if ((tmp1 = find_tape_device_and_size(NULL)) == NULL) { 893 882 fatal_error("Tape device not specified. I couldn't find it either."); 894 883 } 884 strcpy(flag_val['d'], tmp1); 885 mr_free(tmp1); 895 886 flag_set['d'] = TRUE; 896 887 strcpy(flag_val['d'], p); … … 917 908 } 918 909 if (!flag_set['d']) { 919 if (!find_dvd_device(flag_val['d'], FALSE)) { 910 if ((tmp = find_dvd_device(flag_val['d'])) != NULL) { 911 strcpy(flag_val['d'],tmp); 912 mr_free(tmp); 920 913 flag_set['d'] = TRUE; 921 914 log_to_screen("I guess DVD drive is at %s", flag_val['d']); … … 923 916 } 924 917 if (strchr(flag_val['d'], ',')) { 925 fatal_error 926 ("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag."); 918 fatal_error("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag."); 927 919 } 928 920 if (! bkpinfo->restore_data) { 929 921 if (!find_home_of_exe("growisofs")) { 930 fatal_error 931 ("Please install growisofs (probably part of dvd+rw-tools). If you want DVD support, you need it."); 922 fatal_error("Please install growisofs (probably part of dvd+rw-tools). If you want DVD support, you need it."); 932 923 } 933 924 if (!find_home_of_exe("dvd+rw-format")) { 934 fatal_error 935 ("Please install dvd+rw-format (probably part of dvd+rw-tools). If you want DVD support, you need it."); 925 fatal_error("Please install dvd+rw-format (probably part of dvd+rw-tools). If you want DVD support, you need it."); 936 926 } 937 927 if (!flag_set['s']) { 938 928 sprintf(flag_val['s'], "%d", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4582 MB 939 929 strcat(flag_val['s'], "m"); 940 log_to_screen 941 ("You did not specify a size (-s) for DVD. I'm guessing %s.", 942 flag_val['s']); 930 log_to_screen("You did not specify a size (-s) for DVD. I'm guessing %s.", flag_val['s']); 943 931 flag_set['s'] = 1; 944 932 } … … 948 936 if (flag_set['t'] || flag_set['u']) { /* tape size */ 949 937 if (strchr(flag_val['d'], ',')) { 950 fatal_error 951 ("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag."); 938 fatal_error("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag."); 952 939 } 953 940 if ((flag_set['O']) && (! bkpinfo->restore_data)) { … … 981 968 982 969 if (flag_set['n']) { 983 strncpy(bkpinfo->nfs_mount, flag_val['n'], MAX_STR_LEN); 970 mr_free(bkpinfo->nfs_mount); 971 mr_asprintf(bkpinfo->nfs_mount, "%s", flag_val['n']); 984 972 if (!flag_set['d']) { 985 strncpy(bkpinfo->nfs_remote_dir, "/", MAX_STR_LEN); 973 mr_free(bkpinfo->nfs_remote_dir); 974 mr_asprintf(bkpinfo->nfs_remote_dir, "/"); 986 975 } 987 976 /* test if we specified a user for the NFS dialog */ … … 989 978 if (p != NULL) { 990 979 /* User found. Store the 2 values */ 980 bkpinfo->nfs_user = bkpinfo->nfs_mount; 991 981 p++; 992 982 /* new NFS mount */ 993 strcpy(tmp,p);983 bkpinfo->nfs_mount = p; 994 984 p--; 995 985 *p = '\0'; 996 mr_asprintf(bkpinfo->nfs_user,"%s",p);997 strcpy(bkpinfo->nfs_mount,tmp);998 986 } 999 987 mr_asprintf(tmp1, "mount | grep -E \"^%s[/]* .*\" | cut -d' ' -f3", bkpinfo->nfs_mount); … … 1221 1209 mr_free(tmp1); 1222 1210 } else if (flag_set['n']) { 1223 strncpy(bkpinfo->nfs_remote_dir, flag_val['d'], MAX_STR_LEN); 1211 mr_free(bkpinfo->nfs_remote_dir); 1212 mr_asprintf(bkpinfo->nfs_remote_dir, "%s", flag_val['d']); 1224 1213 } else { /* backup device (if tape/CD-R/CD-RW) */ 1225 strncpy(bkpinfo->media_device, flag_val['d'], MAX_STR_LEN / 4); 1214 mr_free(bkpinfo->media_device); 1215 mr_asprintf(bkpinfo->media_device, "%s", flag_val['d']); 1226 1216 } 1227 1217 } … … 1245 1235 } 1246 1236 1247 if (!flag_set['d'] 1248 && (flag_set['c'] || flag_set['w'] || flag_set['C'])) { 1237 if (!flag_set['d'] && (flag_set['c'] || flag_set['w'] || flag_set['C'])) { 1249 1238 if (g_kernel_version >= 2.6) { 1250 1239 tmp2 = popup_and_get_string("Device", "Please specify the device", bkpinfo->media_device); 1251 1240 if (tmp2 == NULL) { 1241 fatal_error("User opted to cancel."); 1242 } 1243 bkpinfo->media_device = tmp2; 1244 } else { 1245 bkpinfo->media_device = find_cdrw_device(); 1246 if (bkpinfo->media_device == NULL) { 1252 1247 retval++; 1253 log_to_screen("User opted to cancel."); 1254 } 1255 mr_free(tmp2); 1256 } else if (find_cdrw_device(bkpinfo->media_device)) { 1257 retval++; 1258 log_to_screen 1259 ("Tried and failed to find CD-R[W] drive automatically.\n"); 1260 } else { 1261 flag_set['d'] = TRUE; 1262 strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4); 1248 log_to_screen("Tried and failed to find CD-R[W] drive automatically.\n"); 1249 } else { 1250 flag_set['d'] = TRUE; 1251 strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4); 1252 } 1263 1253 } 1264 1254 } … … 1288 1278 1289 1279 if (i) { 1290 retval++;1291 1280 log_to_screen("Please specify a tempdir which I can write to. :)"); 1292 1281 fatal_error("I cannot write to the tempdir you specified."); … … 1467 1456 /*@ ints ** */ 1468 1457 int opt = 0; 1469 char *tmp = NULL;1470 1458 int i = 0; 1471 1459 int len; -
branches/2.2.10/mondo/src/common/libmondo-devices-EXT.h
r2321 r2325 9 9 extern int find_and_mount_actual_cd( 10 10 char *mountpoint); 11 extern int find_cdrom_device(char *output,bool try_to_mount);12 extern int find_dvd_device(char *output, bool try_to_mount);11 extern char *find_cdrom_device(bool try_to_mount); 12 extern char *find_dvd_device(); 13 13 extern long get_phys_size_of_drive(char *drive); 14 14 extern bool is_this_a_valid_disk_format(char *format); … … 16 16 extern int find_device_in_mountlist(struct mountlist_itself *mountlist, 17 17 char *device); 18 extern int mount_CDROM_here(char *device, c har *mountpoint);18 extern int mount_CDROM_here(char *device, const char *mountpoint); 19 19 extern long long size_of_specific_device_in_mountlist(struct 20 20 mountlist_itself … … 28 28 29 29 30 extern int find_cdrw_device(char *cdrw_device);30 extern char *find_cdrw_device(); 31 31 32 32 … … 52 52 53 53 54 extern bool set_dev_to_this_if_rx_OK(char *,char *);54 extern char *set_dev_to_this_if_rx_OK(char *); 55 55 56 56 extern void retract_CD_tray_and_defeat_autorun(void); -
branches/2.2.10/mondo/src/common/libmondo-devices.c
r2324 r2325 64 64 65 65 66 void set_g_cdrom_and_g_dvd_to_bkpinfo_value() 67 { 68 strcpy(g_cdrom_drive_is_here, bkpinfo->media_device); // just in case 69 strcpy(g_dvd_drive_is_here, bkpinfo->media_device); // just in case 66 void set_g_cdrom_and_g_dvd_to_bkpinfo_value() { 67 68 if (bkpinfo->media_device) { 69 strcpy(g_cdrom_drive_is_here, bkpinfo->media_device); // just in case 70 strcpy(g_dvd_drive_is_here, bkpinfo->media_device); // just in case 71 } 70 72 } 71 73 … … 205 207 int res1 = 0, res2 = 0; 206 208 209 if (dev == NULL) { 210 return (1); 211 } 212 207 213 if (IS_THIS_A_STREAMING_BACKUP(g_backup_media_type) 208 214 && g_backup_media_type != udev) { … … 243 249 char *command = NULL; 244 250 int i; 251 252 if (dev == NULL) { 253 return (1); 254 } 245 255 246 256 #ifdef __FreeBSD__ … … 429 439 * Try to mount CD-ROM at @p mountpoint. If the CD-ROM is not found or has 430 440 * not been specified, call find_cdrom_device() to find it. 431 * @param bkpinfo The backup information structure. The only field used is @c bkpinfo->media_device.432 441 * @param mountpoint Where to mount the CD-ROM. 433 442 * @return 0 for success, nonzero for failure. 434 443 * @see mount_CDROM_here 435 444 */ 436 int find_and_mount_actual_cd(char *mountpoint) 437 { 445 int find_and_mount_actual_cd(char *mountpoint) { 446 438 447 /*@ buffers ***************************************************** */ 439 448 440 449 /*@ int's ****************************************************** */ 441 450 int res; 442 char *dev ;451 char *dev = NULL; 443 452 char *p = NULL; 444 453 445 454 /*@ end vars **************************************************** */ 446 455 447 malloc_string(dev);448 456 assert(bkpinfo != NULL); 449 457 assert_string_is_neither_NULL_nor_zerolength(mountpoint); 450 458 451 459 if (g_backup_media_type == dvd) { 452 strcpy(dev, g_dvd_drive_is_here); 453 if (!dev[0]) { 454 find_dvd_device(dev, FALSE); 460 if (g_dvd_drive_is_here[0]) { 461 mr_asprintf(dev, "%s", g_dvd_drive_is_here); 462 } 463 if (dev == NULL) { 464 dev = find_dvd_device(); 455 465 } 456 466 } else { 457 strcpy(dev, g_cdrom_drive_is_here); 458 if (!dev[0]) { 459 find_cdrom_device(dev, FALSE); 467 if (g_cdrom_drive_is_here[0]) { 468 mr_asprintf(dev, "%s", g_cdrom_drive_is_here); 469 } 470 if (dev == NULL) { 471 dev = find_cdrom_device(FALSE); 460 472 } 461 473 } … … 465 477 } 466 478 467 if ( !dev[0]|| (res = mount_CDROM_here(dev, mountpoint))) {479 if ((dev == NULL) || (res = mount_CDROM_here(dev, mountpoint))) { 468 480 p = popup_and_get_string ("CD-ROM device", "Please enter your CD-ROM's /dev device",dev); 469 481 if (p == NULL) { … … 479 491 log_msg(1, "mount succeeded with %s", dev); 480 492 } 481 paranoid_free(dev);493 mr_free(dev); 482 494 return (res); 483 495 } … … 493 505 * @return 0 for success, nonzero for failure. 494 506 */ 495 int find_cdrw_device(char *cdrw_device)507 char *find_cdrw_device() 496 508 { 497 509 /*@ buffers ************************ */ … … 499 511 char *cdr_exe = NULL; 500 512 char *command = NULL; 513 char *cdrw_device = NULL; 501 514 502 515 if (g_cdrw_drive_is_here[0]) { 503 strcpy(cdrw_device, g_cdrw_drive_is_here);516 mr_asprintf(cdrw_device, g_cdrw_drive_is_here); 504 517 log_msg(3, "Been there, done that. Returning %s", cdrw_device); 505 return (0);518 return(cdrw_device); 506 519 } 507 520 if (g_backup_media_type == dvd) { 508 log_msg(1, 509 "This is dumb. You're calling find_cdrw_device() but you're backing up to DVD. WTF?"); 510 return (1); 521 log_msg(1, "This is dumb. You're calling find_cdrw_device() but you're backing up to DVD. WTF?"); 522 return(NULL); 511 523 } 512 524 run_program_and_log_output("insmod ide-scsi", -1); … … 524 536 mr_free(tmp); 525 537 mr_free(cdr_exe); 526 return 1;538 return(NULL); 527 539 } else { 528 strcpy(cdrw_device, tmp);540 cdrw_device = tmp; 529 541 log_it("Found CDRW device - %s", cdrw_device); 530 542 strcpy(g_cdrw_drive_is_here, cdrw_device); 531 mr_free(tmp);532 543 mr_free(cdr_exe); 533 return ( 0);544 return (cdrw_device); 534 545 } 535 546 } … … 545 556 * @return 0 for success, nonzero for failure. 546 557 */ 547 int find_cdrom_device(char *output,bool try_to_mount)558 char *find_cdrom_device(bool try_to_mount) 548 559 { 549 560 /*@ pointers **************************************************** */ … … 552 563 char *q; 553 564 char *r; 554 int retval = 0;555 565 556 566 /*@ bool's ****************************************************** */ … … 558 568 559 569 /*@ buffers ***************************************************** */ 560 char *tmp ;570 char *tmp = NULL; 561 571 char *tmp1 = NULL; 572 char *output = NULL; 562 573 char *cdr_exe = NULL; 563 char *phrase_one ;564 char *phrase_two ;574 char *phrase_one = NULL; 575 char *phrase_two = NULL; 565 576 char *command = NULL; 566 577 #ifndef __FreeBSD__ … … 571 582 572 583 /*@ intialize *************************************************** */ 573 malloc_string(tmp); 574 malloc_string(phrase_one); 575 malloc_string(phrase_two); 576 577 output[0] = '\0'; 578 phrase_one[0] = '\0'; 579 phrase_two[0] = '\0'; 584 585 output = NULL; 580 586 #ifndef __FreeBSD__ 581 587 mr_asprintf(dvd_last_resort, "%s", "");; … … 585 591 586 592 if (g_cdrom_drive_is_here[0] && !isdigit(g_cdrom_drive_is_here[0])) { 587 strcpy(output, g_cdrom_drive_is_here);593 mr_asprintf(output, "%s", g_cdrom_drive_is_here); 588 594 log_msg(3, "Been there, done that. Returning %s", output); 589 retval = 0; 590 goto end_of_find_cdrom_device; 595 return(output); 591 596 } 592 597 if (the_last_place_i_found_it[0] != '\0' && !try_to_mount) { 593 strcpy(output, the_last_place_i_found_it); 594 log_msg(3, 595 "find_cdrom_device() --- returning last found location - '%s'", 596 output); 597 retval = 0; 598 goto end_of_find_cdrom_device; 598 mr_asprintf(output, "%s", the_last_place_i_found_it); 599 log_msg(3, "find_cdrom_device() --- returning last found location - '%s'", output); 600 return(output); 599 601 } 600 602 … … 607 609 mr_asprintf(cdr_exe, "dvdrecord"); 608 610 } 609 tmp[0] = '\0'; 611 610 612 if (!find_home_of_exe(cdr_exe)) { 611 strcpy(output, "/dev/cdrom");613 mr_asprintf(output, "/dev/cdrom"); 612 614 log_msg(4, "Can't find cdrecord; assuming %s", output); 615 mr_free(cdr_exe); 613 616 if (!does_device_exist(output)) { 614 617 log_msg(4, "That didn't work. Sorry."); 615 retval = 1;616 goto end_of_find_cdrom_device;618 mr_free(output); 619 return(output); 617 620 } else { 618 retval = 0; 619 goto end_of_find_cdrom_device; 621 return(output); 620 622 } 621 623 } … … 629 631 log_OS_error("Cannot popen command"); 630 632 mr_free(cdr_exe); 631 return (1); 632 } 633 633 return(NULL); 634 } 635 636 malloc_string(phrase_one); 637 phrase_one[0] = '\0'; 638 malloc_string(phrase_two); 639 phrase_two[0] = '\0'; 640 641 malloc_string(tmp); 642 tmp[0] = '\0'; 634 643 for ((void)fgets(tmp, MAX_STR_LEN, fin); !feof(fin); 635 644 (void)fgets(tmp, MAX_STR_LEN, fin)) { … … 656 665 } 657 666 paranoid_pclose(fin); 667 paranoid_free(phrase_one); 658 668 659 669 #ifndef __FreeBSD__ … … 678 688 mr_free(dvd_last_resort); 679 689 mr_asprintf(dvd_last_resort, "/dev/%s", tmp); 680 log_msg(4, 681 "Ignoring '%s' because it's a DVD drive", 682 tmp); 690 log_msg(4, "Ignoring '%s' because it's a DVD drive", tmp); 683 691 } else { 684 sprintf(output, "/dev/%s", tmp);692 mr_asprintf(output, "/dev/%s", tmp); 685 693 found_it = TRUE; 686 694 } … … 691 699 } 692 700 } 701 paranoid_free(phrase_two); 702 paranoid_free(tmp); 693 703 694 704 #endif … … 696 706 if (!found_it) { 697 707 log_msg(4, "OK, approach 2"); 698 if (!(found_it = set_dev_to_this_if_rx_OK(output, "/dev/cdrom"))) { 699 if (! 700 (found_it = 701 set_dev_to_this_if_rx_OK(output, "/dev/cdrom1"))) { 702 if (! 703 (found_it = 704 set_dev_to_this_if_rx_OK(output, "/dev/dvd"))) { 705 if (! 706 (found_it = 707 set_dev_to_this_if_rx_OK(output, "/dev/acd0"))) { 708 if (! 709 (found_it = 710 set_dev_to_this_if_rx_OK(output, 711 "/dev/cd01"))) { 712 if (! 713 (found_it = 714 set_dev_to_this_if_rx_OK(output, 715 "/dev/acd1"))) { 716 if (! 717 (found_it = 718 set_dev_to_this_if_rx_OK(output, 719 "/dev/cd1"))) 720 { 721 retval = 1; 722 goto end_of_find_cdrom_device; 708 if (!(output = set_dev_to_this_if_rx_OK("/dev/cdrom"))) { 709 if (!(output = set_dev_to_this_if_rx_OK("/dev/cdrom1"))) { 710 if (!(output = set_dev_to_this_if_rx_OK("/dev/dvd"))) { 711 if (!(output = set_dev_to_this_if_rx_OK("/dev/acd0"))) { 712 if (!(output = set_dev_to_this_if_rx_OK("/dev/cd01"))) { 713 if (!(output = set_dev_to_this_if_rx_OK("/dev/acd1"))) { 714 if (!(output = set_dev_to_this_if_rx_OK("/dev/cd1"))) { 715 mr_free(cdr_exe); 716 return(NULL); 723 717 } 724 718 } … … 732 726 if (!found_it && strlen(dvd_last_resort) > 0) { 733 727 log_msg(4, "Well, I'll use the DVD - %s - as a last resort", dvd_last_resort); 734 strcpy(output, dvd_last_resort);728 mr_asprintf(output, "%s", dvd_last_resort); 735 729 found_it = TRUE; 736 730 } 737 731 mr_free(dvd_last_resort); 732 738 733 if (found_it) { 739 sprintf(tmp, "grep \"%s=ide-scsi\" /proc/cmdline &> /dev/null", 740 strrchr(output, '/') + 1); 741 if (system(tmp) == 0) { 742 log_msg(4, 743 "%s is not right. It's being SCSI-emulated. Continuing.", 744 output); 734 mr_asprintf(tmp1, "grep \"%s=ide-scsi\" /proc/cmdline &> /dev/null", strrchr(output, '/') + 1); 735 if (system(tmp1) == 0) { 736 log_msg(4, "%s is not right. It's being SCSI-emulated. Continuing.", output); 745 737 found_it = FALSE; 746 output[0] = '\0'; 747 } 738 mr_free(output); 739 } 740 mr_free(tmp1); 748 741 } 749 742 … … 753 746 found_it = FALSE; 754 747 log_msg(4, "OK, I was wrong, I haven't found it... yet."); 748 mr_free(output); 755 749 } 756 750 } … … 758 752 if (!found_it) { 759 753 log_msg(4, "OK, approach 2"); 760 if (!(found_it = set_dev_to_this_if_rx_OK(output, "/dev/scd0"))) { 761 if (!(found_it = set_dev_to_this_if_rx_OK(output, "/dev/sr0"))) { 762 if (! 763 (found_it = 764 set_dev_to_this_if_rx_OK(output, "/dev/cdrom"))) { 765 if (! 766 (found_it = 767 set_dev_to_this_if_rx_OK(output, 768 "/dev/cdrom0"))) { 769 if (! 770 (found_it = 771 set_dev_to_this_if_rx_OK(output, 772 "/dev/cdrom1"))) { 773 if (! 774 (found_it = 775 set_dev_to_this_if_rx_OK(output, 776 "/dev/sr1"))) { 777 if (! 778 (found_it = 779 set_dev_to_this_if_rx_OK(output, 780 "/dev/dvd"))) 781 { 782 if (! 783 (found_it = 784 set_dev_to_this_if_rx_OK(output, 785 g_cdrw_drive_is_here))) 786 { 787 retval = 1; 788 goto end_of_find_cdrom_device; 754 if (!(output = set_dev_to_this_if_rx_OK("/dev/scd0"))) { 755 if (!(output = set_dev_to_this_if_rx_OK("/dev/sr0"))) { 756 if (!(output = set_dev_to_this_if_rx_OK("/dev/cdrom"))) { 757 if (!(output = set_dev_to_this_if_rx_OK("/dev/cdrom0"))) { 758 if (!(output = set_dev_to_this_if_rx_OK("/dev/cdrom1"))) { 759 if (!(output = set_dev_to_this_if_rx_OK("/dev/sr1"))) { 760 if (!(output = set_dev_to_this_if_rx_OK("/dev/dvd"))) { 761 if (!(output = set_dev_to_this_if_rx_OK(g_cdrw_drive_is_here))) { 762 mr_free(cdr_exe); 763 return(NULL); 789 764 } 790 765 } … … 802 777 log_msg(4, "[Cardigans] I've changed my mind"); 803 778 found_it = FALSE; 779 mr_free(output); 804 780 } else { 805 sprintf(tmp, "%s/archives", mountpoint);781 mr_asprintf(tmp1, "%s/archives", mountpoint); 806 782 if (!does_file_exist(tmp)) { 807 783 log_msg(4, "[Cardigans] I'll take it back"); 808 784 found_it = FALSE; 785 mr_free(output); 809 786 } else { 810 787 mr_asprintf(command, "umount %s", output); … … 814 791 log_msg(4, "I'm confident the Mondo CD is in %s", output); 815 792 } 793 mr_free(tmp1); 816 794 } 817 795 } … … 822 800 if (!does_file_exist(output)) { 823 801 log_msg(3, "I still haven't found it."); 824 return (1); 802 mr_free(cdr_exe); 803 mr_free(output); 804 return (NULL); 825 805 } 826 806 log_msg(3, "(find_cdrom_device) --> '%s'", output); 827 807 strcpy(the_last_place_i_found_it, output); 828 808 strcpy(g_cdrom_drive_is_here, output); 829 retval = 0;830 goto end_of_find_cdrom_device;809 mr_free(cdr_exe); 810 return (output); 831 811 } 832 812 833 813 mr_asprintf(command, "%s -scanbus | grep \"[0-9],[0-9],[0-9]\" | grep \"[D|C][V|D]\" | grep -n \"\" | grep \"%s\" | cut -d':' -f2", cdr_exe, g_cdrw_drive_is_here); 814 mr_free(cdr_exe); 815 834 816 log_msg(1, "command=%s", command); 835 817 mr_asprintf(tmp1, "%s", call_program_and_get_last_line_of_output(command)); 836 818 mr_free(command); 837 819 820 mr_free(output); 838 821 if (strlen(tmp1) > 0) { 839 strcpy(output, tmp1);822 mr_asprintf(output, "%s", tmp1); 840 823 log_msg(4, "Finally found it at %s", output); 841 retval = 0;842 824 } else { 843 825 log_msg(4, "Still couldn't find it."); 844 retval = 1;845 826 } 846 827 mr_free(tmp1); 847 828 848 end_of_find_cdrom_device: 849 paranoid_free(tmp); 850 mr_free(cdr_exe); 851 paranoid_free(phrase_one); 852 paranoid_free(phrase_two); 853 return (retval); 854 } 855 856 857 858 859 860 int find_dvd_device(char *output, bool try_to_mount) 829 return (output); 830 } 831 832 833 char *find_dvd_device() 861 834 { 862 835 char *tmp = NULL; 863 int retval = 0, devno = -1; 836 int devno = -1; 837 char *output = NULL; 864 838 865 839 if (g_dvd_drive_is_here[0]) { 866 strcpy(output, g_dvd_drive_is_here);840 mr_asprintf(output, g_dvd_drive_is_here); 867 841 log_msg(3, "Been there, done that. Returning %s", output); 868 return (0); 869 } 870 871 mr_asprintf(tmp, "%s", call_program_and_get_last_line_of_output("dvdrecord -scanbus 2> /dev/null | grep \") '\" | grep -n \"\" | grep DVD | cut -d':' -f1") 872 ); 842 return (output); 843 } 844 845 mr_asprintf(tmp, "%s", call_program_and_get_last_line_of_output("dvdrecord -scanbus 2> /dev/null | grep \") '\" | grep -n \"\" | grep DVD | cut -d':' -f1")); 873 846 log_msg(5, "tmp = '%s'", tmp); 874 847 if (!tmp[0]) … … 882 855 883 856 if (devno >= 0) { 884 retval = 0; 885 sprintf(output, "/dev/scd%d", devno); 857 mr_asprintf(output, "/dev/scd%d", devno); 886 858 strcpy(g_dvd_drive_is_here, output); 887 859 log_msg(2, "I think DVD is at %s", output); 888 860 } else { 889 861 log_msg(2, "I cannot find DVD"); 890 retval = 1; 891 } 892 893 if (try_to_mount) { 894 log_msg(1, "Ignoring the fact that try_to_mount==TRUE"); 895 } 896 return (retval); 862 } 863 864 return (output); 897 865 } 898 866 … … 1079 1047 /*@ end vars **************************************************** */ 1080 1048 1049 if (device_raw == NULL) { 1050 return(FALSE); 1051 } 1052 1081 1053 malloc_string(incoming); 1082 assert(device_raw != NULL);1083 1054 if (device_raw[0] != '/' && !strstr(device_raw, ":/")) { 1084 1055 log_msg(1, "%s needs to have a '/' prefixed - I'll do it", … … 1213 1184 return(1); 1214 1185 } 1215 log_msg(4, "(mount_USB_here --- device=%s, mountpoint=%s", device, 1216 mountpoint); 1186 log_msg(4, "(mount_USB_here --- device=%s, mountpoint=%s", device, mountpoint); 1217 1187 1218 1188 #ifdef __FreeBSD__ … … 1237 1207 * @return 0 for success, nonzero for failure. 1238 1208 */ 1239 int mount_CDROM_here(char *device, c har *mountpoint)1209 int mount_CDROM_here(char *device, const char *mountpoint) 1240 1210 { 1241 1211 /*@ buffer ****************************************************** */ … … 1248 1218 #endif 1249 1219 1250 assert_string_is_neither_NULL_nor_zerolength(device);1251 1220 assert_string_is_neither_NULL_nor_zerolength(mountpoint); 1252 1221 1253 1222 make_hole_for_dir(mountpoint); 1254 1223 1255 if (isdigit(device[0])) { 1256 find_cdrom_device(device, FALSE); 1224 if ((device == NULL) || (isdigit(device[0]))) { 1225 mr_free(device); 1226 device = find_cdrom_device(FALSE); 1257 1227 } 1258 1228 #ifndef __FreeBSD__ … … 1268 1238 fatal_error(command); 1269 1239 } 1270 strcpy(device, dev);1271 paranoid_free(dev);1240 mr_free(device); 1241 device = dev; 1272 1242 #else 1273 1243 mr_strcat(options, ",loop"); … … 1275 1245 1276 1246 } 1277 log_msg(4, "(mount_CDROM_here --- device=%s, mountpoint=%s", device, 1278 mountpoint); 1247 log_msg(4, "(mount_CDROM_here --- device=%s, mountpoint=%s", device, mountpoint); 1279 1248 /*@ end vars *************************************************** */ 1280 1249 … … 1293 1262 retval = system(command); 1294 1263 log_msg(1, "system(%s) returned %d", command, retval); 1295 paranoid_free(command);1264 mr_free(command); 1296 1265 1297 1266 return (retval); … … 1324 1293 /*@ buffers ********************************************************* */ 1325 1294 char *tmp = NULL; 1326 char *p = NULL;1327 1295 char *mds = NULL; 1328 1296 char *request = NULL; … … 1342 1310 mr_free(tmp); 1343 1311 1344 if (g_ISO_restore_mode || bkpinfo->backup_media_type == iso 1345 || bkpinfo->backup_media_type == nfs) { 1312 if (g_ISO_restore_mode || bkpinfo->backup_media_type == iso || bkpinfo->backup_media_type == nfs) { 1313 // BERLIOS --- I'm tempted to do something about this... 1314 // Why unmount and remount again and again? 1346 1315 log_msg(3, "Remounting CD"); 1347 1316 g_ISO_restore_mode = TRUE; 1348 // FIXME --- I'm tempted to do something about this...1349 // Why unmount and remount again and again?1350 1317 if (is_this_device_mounted(MNT_CDROM)) { 1351 1318 run_program_and_log_output("umount " MNT_CDROM, 5); … … 1355 1322 mr_free(tmp); 1356 1323 1357 mr_asprintf(tmp, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, cd_number_i_want); 1324 if (((bkpinfo->isodir == NULL) && (bkpinfo->nfs_remote_dir == NULL)) || (bkpinfo->prefix == NULL)) { 1325 fatal_error("Unable to prepare ISO file name. Please report to dev team"); 1326 } 1327 if (bkpinfo->nfs_remote_dir) { 1328 // NFS 1329 mr_asprintf(tmp, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, cd_number_i_want); 1330 } else { 1331 // ISO 1332 mr_asprintf(tmp, "%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->prefix, cd_number_i_want); 1333 } 1358 1334 if (!does_file_exist(tmp)) { 1359 1335 mr_free(tmp); 1360 mr_asprintf(tmp, "%s/isodir/%s/%s-%d.iso", bkpinfo->tmpdir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, cd_number_i_want); 1336 if (bkpinfo->nfs_remote_dir) { 1337 // NFS 1338 mr_asprintf(tmp, "%s/isodir/%s/%s-%d.iso", bkpinfo->tmpdir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, cd_number_i_want); 1339 } else { 1340 // ISO 1341 mr_asprintf(tmp, "%s/isodir/%s-%d.iso", bkpinfo->tmpdir, bkpinfo->prefix, cd_number_i_want); 1342 } 1361 1343 if (does_file_exist(tmp)) { 1362 1344 log_msg(1, "FIXME - hacking bkpinfo->isodir from '%s' to %s/isodir", bkpinfo->isodir, bkpinfo->tmpdir); … … 1373 1355 } 1374 1356 if ((res = what_number_cd_is_this()) != cd_number_i_want) { 1375 log_msg(3, "Currently, we hold %d but we want %d", res, 1376 cd_number_i_want); 1357 log_msg(3, "Currently, we hold %d but we want %d", res, cd_number_i_want); 1377 1358 mds = media_descriptor_string(bkpinfo->backup_media_type); 1378 1359 log_msg(3, "Insisting on %s #%d", mds, cd_number_i_want); … … 1490 1471 mds = media_descriptor_string(bkpinfo->backup_media_type); 1491 1472 mr_asprintf(comment, "What speed is your %s (re)writer?", mds); 1473 mr_free(bkpinfo->media_device); 1492 1474 if (bkpinfo->backup_media_type == dvd) { 1493 find_dvd_device(bkpinfo->media_device, FALSE);1475 bkpinfo->media_device = find_dvd_device(); 1494 1476 mr_asprintf(tmp, "1"); 1495 1477 mr_asprintf(sz_size, "%d", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4482 MB 1496 1478 log_msg(1, "Setting to DVD defaults"); 1497 1479 } else { 1498 strcpy(bkpinfo->media_device, VANILLA_SCSI_CDROM);1480 mr_asprintf(bkpinfo->media_device, "%s", VANILLA_SCSI_CDROM); 1499 1481 mr_asprintf(tmp, "4"); 1500 1482 mr_asprintf(sz_size, "%d", 650); … … 1542 1524 mds = media_descriptor_string(bkpinfo->backup_media_type); 1543 1525 1526 mr_free(bkpinfo->media_device); 1544 1527 if ((bkpinfo->disaster_recovery) && (bkpinfo->backup_media_type != usb)) { 1545 strcpy(bkpinfo->media_device, "/dev/cdrom"); 1546 log_msg(2, "CD-ROM device assumed to be at %s", 1547 bkpinfo->media_device); 1548 } else if ((bkpinfo->restore_data && (bkpinfo->backup_media_type != usb)) 1549 || bkpinfo->backup_media_type == dvd) { 1550 if (!bkpinfo->media_device[0]) { 1551 strcpy(bkpinfo->media_device, "/dev/cdrom"); 1552 } // just for the heck of it :) 1553 log_msg(1, "bkpinfo->media_device = %s", 1554 bkpinfo->media_device); 1555 if (bkpinfo->backup_media_type == dvd 1556 || find_cdrom_device(bkpinfo->media_device, FALSE)) { 1557 log_msg(1, "bkpinfo->media_device = %s", 1558 bkpinfo->media_device); 1528 mr_asprintf(bkpinfo->media_device, "/dev/cdrom"); 1529 log_msg(2, "CD-ROM device assumed to be at %s", bkpinfo->media_device); 1530 } else if ((bkpinfo->restore_data && (bkpinfo->backup_media_type != usb)) || bkpinfo->backup_media_type == dvd) { 1531 if ((bkpinfo->backup_media_type == dvd) || ((bkpinfo->media_device = find_cdrom_device(FALSE)) != NULL)) { 1559 1532 mr_asprintf(comment, "Please specify your %s drive's /dev entry", mds); 1560 1533 p = popup_and_get_string("Device?", comment, bkpinfo->media_device); … … 1565 1538 finish(1); 1566 1539 } 1567 strcpy(bkpinfo->media_device, p); 1568 mr_free(p); 1569 } 1570 log_msg(2, "%s device found at %s", mds, bkpinfo->media_device); 1540 mr_free(bkpinfo->media_device); 1541 bkpinfo->media_device = p; 1542 } 1543 if (bkpinfo->media_device != NULL) { 1544 log_msg(2, "%s device found at %s", mds, bkpinfo->media_device); 1545 } else { 1546 log_msg(2, "%s device not found (bkpinfo->media_device is NULL)", mds); 1547 } 1571 1548 } else { 1572 if (( find_cdrw_device(bkpinfo->media_device)) && (bkpinfo->backup_media_type != usb)) {1573 bkpinfo->media_device[0] = '\0';1574 } 1575 if (bkpinfo->media_device [0]) {1549 if (((bkpinfo->media_device = find_cdrw_device()) != NULL) && (bkpinfo->backup_media_type != usb)) { 1550 mr_free(bkpinfo->media_device); 1551 } 1552 if (bkpinfo->media_device != NULL) { 1576 1553 if (bkpinfo->backup_media_type == usb) { 1577 1554 mr_asprintf(tmp, "I think your %s media corresponds to %s. Is this correct?", mds, bkpinfo->media_device); … … 1580 1557 } 1581 1558 if (!ask_me_yes_or_no(tmp)) { 1582 bkpinfo->media_device[0] = '\0';1559 mr_free(bkpinfo->media_device); 1583 1560 } 1584 1561 mr_free(tmp); 1585 1562 } 1586 if (!bkpinfo->media_device [0]) {1563 if (!bkpinfo->media_device) { 1587 1564 if (bkpinfo->backup_media_type == usb) { 1588 p = popup_and_get_string("/dev entry?", "What is the /dev entry of your USB Disk/Key, please?", bkpinfo->media_device);1565 p = popup_and_get_string("/dev entry?", "What is the /dev entry of your USB Disk/Key, please?", NULL); 1589 1566 } else { 1590 1567 if (g_kernel_version < 2.6) { 1591 p = popup_and_get_string("Device node?", "What is the SCSI node of your CD (re)writer, please?", bkpinfo->media_device);1568 p = popup_and_get_string("Device node?", "What is the SCSI node of your CD (re)writer, please?", NULL); 1592 1569 } else { 1593 p = popup_and_get_string("/dev entry?", "What is the /dev entry of your CD (re)writer, please?", bkpinfo->media_device);1570 p = popup_and_get_string("/dev entry?", "What is the /dev entry of your CD (re)writer, please?", NULL); 1594 1571 } 1595 1572 } … … 1598 1575 finish(1); 1599 1576 } 1600 strcpy(bkpinfo->media_device, p); 1601 mr_free(p); 1577 bkpinfo->media_device = p; 1602 1578 } 1603 1579 } … … 1618 1594 case tape: 1619 1595 1620 if ((!bkpinfo->restore_mode) && (!mr_find_tape_device())) { 1596 mr_free(bkpinfo->media_device); 1597 if ((!bkpinfo->restore_mode) && ((bkpinfo->media_device = find_tape_device_and_size(NULL)) == NULL)) { 1621 1598 log_msg(3, "Ok, using vanilla scsi tape."); 1622 strcpy(bkpinfo->media_device, VANILLA_SCSI_TAPE);1599 mr_asprintf(bkpinfo->media_device, "%s", VANILLA_SCSI_TAPE); 1623 1600 if ((fin = fopen(bkpinfo->media_device, "r"))) { 1624 1601 paranoid_fclose(fin); 1625 1602 } else { 1626 strcpy(bkpinfo->media_device, "/dev/osst0"); 1627 } 1628 } 1629 if (bkpinfo->media_device[0]) { 1603 mr_free(bkpinfo->media_device); 1604 mr_asprintf(bkpinfo->media_device, "/dev/osst0"); 1605 } 1606 } 1607 if (bkpinfo->media_device != NULL) { 1630 1608 if ((fin = fopen(bkpinfo->media_device, "r"))) { 1631 1609 paranoid_fclose(fin); 1632 1610 } else { 1633 1611 if (does_file_exist("/tmp/mondo-restore.cfg")) { 1634 read_cfg_var("/tmp/mondo-restore.cfg", "media-dev",1635 bkpinfo->media_device);1612 mr_free(bkpinfo->media_device); 1613 bkpinfo->media_device = read_cfg_var("/tmp/mondo-restore.cfg", "media-dev"); 1636 1614 } 1637 1615 } 1638 1616 } 1639 if (bkpinfo->media_device [0]) {1617 if (bkpinfo->media_device != NULL) { 1640 1618 mr_asprintf(tmp, "I think I've found your tape streamer at %s; am I right on the money?", bkpinfo->media_device); 1641 1619 if (!ask_me_yes_or_no(tmp)) { 1642 bkpinfo->media_device[0] = '\0';1620 mr_free(bkpinfo->media_device); 1643 1621 } 1644 1622 mr_free(tmp); 1645 1623 } 1646 if ( !bkpinfo->media_device[0]) {1624 if (bkpinfo->media_device == NULL) { 1647 1625 p = popup_and_get_string("Device name?", "What is the /dev entry of your tape streamer?", bkpinfo->media_device); 1648 1626 if (p == NULL) { … … 1650 1628 finish(1); 1651 1629 } 1652 strcpy(bkpinfo->media_device, p); 1653 mr_free(p); 1630 bkpinfo->media_device = p; 1654 1631 } 1655 1632 mr_asprintf(tmp, "ls -l %s", bkpinfo->media_device); … … 1686 1663 1687 1664 /* Initiate bkpinfo nfs_mount path from running environment if not already done */ 1688 if (!bkpinfo->nfs_mount[0]) { 1689 strcpy(bkpinfo->nfs_mount, 1690 call_program_and_get_last_line_of_output 1691 ("mount | grep \":\" | cut -d' ' -f1 | head -n1")); 1665 if (bkpinfo->nfs_mount == NULL) { 1666 mr_asprintf(bkpinfo->nfs_mount, "%s", call_program_and_get_last_line_of_output("mount | grep \":\" | cut -d' ' -f1 | head -n1")); 1692 1667 } 1693 1668 #ifdef __FreeBSD__ … … 1702 1677 finish(1); 1703 1678 } 1704 strcpy(bkpinfo->nfs_mount, p);1705 mr_free(p);1679 mr_free(bkpinfo->nfs_mount); 1680 bkpinfo->nfs_mount = p; 1706 1681 if (!bkpinfo->restore_data) { 1707 1682 if ((bkpinfo->compression_level = … … 1713 1688 // check whether already mounted - we better remove 1714 1689 // surrounding spaces and trailing '/' for this 1715 strip_spaces(bkpinfo->nfs_mount);1690 mr_strip_spaces(bkpinfo->nfs_mount); 1716 1691 if (bkpinfo->nfs_mount[strlen(bkpinfo->nfs_mount) - 1] == '/') 1717 1692 bkpinfo->nfs_mount[strlen(bkpinfo->nfs_mount) - 1] = '\0'; … … 1752 1727 finish(1); 1753 1728 } 1754 strcpy(bkpinfo->nfs_mount, p);1755 mr_free(p);1729 mr_free(bkpinfo->nfs_mount); 1730 bkpinfo->nfs_mount = p; 1756 1731 } 1757 1732 /* Initiate bkpinfo isodir path from running environment if mount already done */ … … 1782 1757 finish(1); 1783 1758 } 1784 strcpy(bkpinfo->nfs_remote_dir, p);1785 mr_free(p);1759 mr_free(bkpinfo->nfs_remote_dir); 1760 bkpinfo->nfs_remote_dir = p; 1786 1761 1787 1762 // check whether writable - we better remove surrounding spaces for this 1788 strip_spaces(bkpinfo->nfs_remote_dir);1763 mr_strip_spaces(bkpinfo->nfs_remote_dir); 1789 1764 1790 1765 p = popup_and_get_string("Prefix.", "Please enter the prefix that will be prepended to your ISO filename. Example: machine1 to obtain machine1-[1-9]*.iso files", bkpinfo->prefix); … … 1998 1973 } 1999 1974 log_it("isodir = %s", bkpinfo->isodir); 2000 log_it("nfs_mount = '%s'", bkpinfo->nfs_mount); 1975 if (bkpinfo->nfs_mount) { 1976 log_it("nfs_mount = '%s'", bkpinfo->nfs_mount); 1977 } 2001 1978 if (bkpinfo->nfs_user) { 2002 1979 log_it("nfs_user = '%s'", bkpinfo->nfs_user); … … 2135 2112 fatal_error("I couldn't figure out the scratchdir!"); 2136 2113 } 2114 2115 /* Cleaning a potential previous scratchdir */ 2116 if (bkpinfo->scratchdir) { 2117 mr_asprintf(command, "rm -Rf %s", bkpinfo->scratchdir); 2118 paranoid_system(command); 2119 mr_free(command); 2120 } 2137 2121 mr_free(bkpinfo->scratchdir); 2122 2138 2123 mr_asprintf(bkpinfo->scratchdir , "%s/mondo.scratch.%d", tmp, (int) (random() % 32768)); 2139 2124 log_it("bkpinfo->scratchdir is being set to %s", bkpinfo->scratchdir); 2140 2125 2126 /* Cleaning potential previous scratchdir */ 2141 2127 mr_asprintf(command, "rm -Rf %s/mondo.scratch.*", tmp); 2142 2128 mr_free(tmp); … … 2156 2142 */ 2157 2143 /** 2158 * If we can read @p dev, set @ poutput to it.2159 * If @p dev cannot be read, set @p output to "".2144 * If we can read @p dev, set @return output to it. 2145 * If @p dev cannot be read, set @p output to NULL. 2160 2146 * @param dev The device to check for. 2161 * @param output Set to @p dev if @p dev exists, "" otherwise. 2162 * @return TRUE if @p dev exists, FALSE if it doesn't. 2163 */ 2164 bool set_dev_to_this_if_rx_OK(char *output, char *dev) 2147 * @return output Set to @p dev if @p dev exists, NULL otherwise. 2148 */ 2149 char *set_dev_to_this_if_rx_OK(char *dev) 2165 2150 { 2166 2151 char *command = NULL; 2167 bool res;2152 char *output = NULL; 2168 2153 2169 2154 if (!dev || dev[0] == '\0') { 2170 output[0] = '\0'; 2171 return (FALSE); 2155 return(NULL); 2172 2156 } 2173 2157 log_msg(10, "Injecting %s", dev); … … 2175 2159 if (!does_file_exist(dev)) { 2176 2160 log_msg(10, "%s doesn't exist. Returning FALSE.", dev); 2177 return (FALSE);2161 return(NULL); 2178 2162 } 2179 2163 mr_asprintf(command, "dd bs=%ld count=1 if=%s of=/dev/null &> /dev/null", 512L, dev); 2180 2164 if (!run_program_and_log_output(command, FALSE) 2181 2165 && !run_program_and_log_output(command, FALSE)) { 2182 strcpy(output, dev);2166 mr_asprintf(output, "%s", dev); 2183 2167 log_msg(4, "Found it - %s", dev); 2184 res = TRUE;2185 2168 } else { 2186 output[0] = '\0';2187 2169 log_msg(4, "It's not %s", dev); 2188 res = FALSE;2189 2170 } 2190 2171 mr_free(command); 2191 return( res);2172 return(output); 2192 2173 } 2193 2174 … … 2221 2202 } 2222 2203 2223 mr_asprintf(mountdev, "%s", bkpinfo->media_device); 2224 if (!mountdev[0]) { 2204 if (bkpinfo->media_device) { 2205 mr_asprintf(mountdev, "%s", bkpinfo->media_device); 2206 } 2207 if (!mountdev) { 2225 2208 log_it("(what_number_cd_is_this) Warning - media_device unknown. Finding out..."); 2226 find_cdrom_device(bkpinfo->media_device, FALSE); 2209 mr_free(bkpinfo->media_device); 2210 bkpinfo->media_device = find_cdrom_device(FALSE); 2211 mr_asprintf(mountdev, "%s", bkpinfo->media_device); 2227 2212 } 2228 2213 if (!is_this_device_mounted(MNT_CDROM)) { -
branches/2.2.10/mondo/src/common/libmondo-devices.h
r2321 r2325 8 8 bool does_string_exist_in_boot_block(char *dev, char *str); 9 9 int find_and_mount_actual_cd(char *mountpoint); 10 int find_cdrom_device(char *output,bool try_to_mount);11 int find_dvd_device(char *output, bool try_to_mount);10 char *find_cdrom_device(bool try_to_mount); 11 char *find_dvd_device(); 12 12 long get_phys_size_of_drive(char *drive); 13 13 bool is_this_a_valid_disk_format(char *format); 14 int mount_CDROM_here(char *device, c har *mountpoint);14 int mount_CDROM_here(char *device, const char *mountpoint); 15 15 int find_device_in_mountlist(struct mountlist_itself *mountlist, 16 16 char *device); … … 23 23 24 24 25 int find_cdrw_device(char *cdrw_device);25 char *find_cdrw_device(); 26 26 27 27 int interactively_obtain_media_parameters_from_user(bool); … … 44 44 45 45 46 bool set_dev_to_this_if_rx_OK(char *output,char *dev);46 char *set_dev_to_this_if_rx_OK(char *dev); 47 47 48 48 -
branches/2.2.10/mondo/src/common/libmondo-filelist.c
r2324 r2325 693 693 /** 694 694 * Get the number of the last fileset in the backup. 695 * @param bkpinfo The backup information structure. Only the @c bkpinfo->tmpdir field is used.696 695 * @return The last filelist number. 697 696 * @note This function should only be called at restore-time. … … 700 699 { 701 700 /*@ buffers ***************************************************** */ 702 char val_sz[MAX_STR_LEN];701 char *val_sz = NULL; 703 702 char *cfg_fname = NULL; 704 703 … … 710 709 assert(bkpinfo != NULL); 711 710 712 strcpy(val_sz,"");713 711 mr_asprintf(cfg_fname, "%s/mondo-restore.cfg", bkpinfo->tmpdir); 714 read_cfg_var(cfg_fname, "last-filelist-number", val_sz);712 val_sz = read_cfg_var(cfg_fname, "last-filelist-number"); 715 713 mr_free(cfg_fname); 716 714 715 if (val_sz == NULL) { 716 mr_asprintf(val_sz, ""); 717 } 717 718 val_i = atoi(val_sz); 719 mr_free(val_sz); 720 718 721 if (val_i <= 0) { 719 722 val_i = 500; -
branches/2.2.10/mondo/src/common/libmondo-files-EXT.h
r2053 r2325 42 42 43 43 44 extern int make_hole_for_dir(c har *outdir_fname);44 extern int make_hole_for_dir(const char *outdir_fname); 45 45 46 46 extern long size_of_partition_in_mountlist_K(char *tmpdir, char *dev); -
branches/2.2.10/mondo/src/common/libmondo-files.c
r2324 r2325 622 622 * @return The return value of @c mkdir. 623 623 */ 624 int make_hole_for_dir(c har *outdir_fname)624 int make_hole_for_dir(const char *outdir_fname) 625 625 { 626 626 char *tmp = NULL; … … 1097 1097 char *p; 1098 1098 1099 if (! bkpinfo->nfs_mount) { 1100 fatal_error("No nfs_mount found !"); 1101 } 1102 1099 1103 log_it("Storing NFS configuration"); 1100 1104 mr_asprintf(tmp, "%s", bkpinfo->nfs_mount); -
branches/2.2.10/mondo/src/common/libmondo-files.h
r2053 r2325 44 44 45 45 46 int make_hole_for_dir(c har *outdir_fname);46 int make_hole_for_dir(const char *outdir_fname); 47 47 long size_of_partition_in_mountlist_K(char *tmpdir, char *dev); 48 48 int make_grub_install_scriptlet(char *outfile); -
branches/2.2.10/mondo/src/common/libmondo-fork.c
r2324 r2325 355 355 char *command = NULL; 356 356 char *lockfile = NULL; 357 char tmp1[MAX_STR_LEN *2];358 357 359 358 /*@ end vars *************************************************** */ -
branches/2.2.10/mondo/src/common/libmondo-stream-EXT.h
r2321 r2325 5 5 extern int closein_tape(); 6 6 extern int closeout_tape(); 7 extern char * mr_find_tape_device(void);7 extern char *find_tape_device_and_size(char *siz); 8 8 extern void insist_on_this_tape_number(int tapeno); 9 9 extern void log_tape_pos(void); -
branches/2.2.10/mondo/src/common/libmondo-stream.c
r2324 r2325 138 138 paranoid_pclose(g_tape_stream); 139 139 log_it("closein_tape() -- leaving"); 140 /*141 for(i=0; i < g_tapecatalog->entries; i++)142 {143 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);144 }145 */146 140 if (!bkpinfo->please_dont_eject) { 147 141 eject_device(bkpinfo->media_device); … … 222 216 g_tapecatalog->el[i].tape_posK); 223 217 } 224 // if (!bkpinfo->please_dont_eject)225 // { eject_device(bkpinfo->media_device); }226 218 paranoid_free(blk); 227 219 paranoid_free(g_tapecatalog); … … 261 253 char *dev = NULL; 262 254 int res; 255 char *dev = NULL; 263 256 264 257 log_to_screen("I am looking for your tape streamer. Please wait."); … … 296 289 mr_free(command); 297 290 298 mr_asprintf(&dev, "%s", VANILLA_SCSI_TAPE); 299 dev[strlen(dev) - 1] = '\0';291 292 mr_asprintf(dev, "%s", "/dev/st"); 300 293 mr_strcat(dev, tmp); // e.g. '/dev/st0' becomes '/dev/stN' 301 294 mr_free(tmp); 302 303 295 res = 0; 304 296 if (!mt_says_tape_exists(dev)) { … … 314 306 mr_asprintf(&dev, "/dev/osst0"); 315 307 if (!mt_says_tape_exists(dev)) { 308 mr_free(dev); 316 309 res++; 317 310 } else { … … 322 315 } 323 316 324 log_it("At this point, dev = %s and res = %d", dev, res); 317 if (dev) { 318 log_it("At this point, dev = %s and res = %d", dev, res); 319 } else { 320 log_it("At this point, dev is NULL and res = %d", dev, res); 321 } 325 322 326 323 mr_asprintf(&tmp, call_program_and_get_last_line_of_output("cdrecord -scanbus 2> /dev/null | tr -s '\t' ' ' | grep \"[0-9]*,[0-9]*,[0-9]*\" | grep -v \"[0-9]*) \\*\" | grep -i TAPE | awk '{for(i=1; i<NF; i++) { if (index($i, \"GB\")>0) { print $i;};};};'")); … … 338 335 res = 0; 339 336 } else { 337 mr_free(dev); 340 338 res++; 341 339 } … … 610 608 int res; 611 609 610 if (bkpinfo->media_device == NULL) { 611 return(1); 612 } 613 612 614 if (strncmp(bkpinfo->media_device, "/dev/", 5)) { 613 log_msg(1, 614 "Not using 'mt setblk'. This isn't an actual /dev entry."); 615 log_msg(1, "Not using 'mt setblk'. This isn't an actual /dev entry."); 615 616 return (0); 616 617 } … … 683 684 int res = 0; 684 685 686 if (bkpinfo->media_device == NULL) { 687 return(1); 688 } 689 685 690 log_it("Skipping OBDR headers"); 686 691 mr_asprintf(command, "mt -f %s rewind",bkpinfo->media_device); … … 708 713 char *command = NULL; 709 714 int res = 0; 715 716 if (bkpinfo->media_device == NULL) { 717 return(1); 718 } 710 719 711 720 log_it("Creating OBDR headers"); … … 770 779 /*@ end vars *************************************************** */ 771 780 772 assert_string_is_neither_NULL_nor_zerolength(bkpinfo->media_device); 773 if (!(g_tapecatalog = malloc(sizeof(struct s_tapecatalog)))) { 774 fatal_error("Cannot alloc mem for tape catalog"); 775 } 781 g_tapecatalog = mr_malloc(sizeof(struct s_tapecatalog)); 776 782 g_tapecatalog->entries = 0; 777 783 g_tape_posK = 0; … … 790 796 if (bkpinfo->media_device == NULL) { 791 797 log_it("Not able to skip OBDR - Restore will have to be done manually"); 798 return (1); 792 799 } 793 800 set_tape_block_size_with_mt(bkpinfo->internal_tape_block_size); … … 798 805 make_hole_for_file(outfname); 799 806 800 // start_buffer_process( bkpinfo->media_device, g_tape_fifo, FALSE);801 807 log_it("Opening IN tape"); 802 if (! 803 (g_tape_stream = 804 open_device_via_buffer(bkpinfo->media_device, 'r', 805 bkpinfo->internal_tape_block_size))) { 808 if (!(g_tape_stream = open_device_via_buffer(bkpinfo->media_device, 'r', bkpinfo->internal_tape_block_size))) { 806 809 log_OS_error(g_tape_fifo); 807 810 log_to_screen("Cannot openin stream device"); … … 884 887 /*@ end vars *************************************************** */ 885 888 889 if (cddev == NULL) { 890 log_to_screen("Failed to openout NULL cddev"); 891 return (1); 892 } 886 893 /* add 'dummy' if testing */ 887 894 mr_asprintf(command, "cdrecord -eject dev=%s speed=%d fs=24m -waiti - >> %s 2>> %s", cddev, speed, MONDO_LOGFILE, MONDO_LOGFILE); … … 923 930 return (0); 924 931 } 925 if (!(g_tapecatalog = malloc(sizeof(struct s_tapecatalog)))) { 926 fatal_error("Cannot alloc mem for tape catalog"); 927 } 932 if (bkpinfo->media_device == NULL) { 933 log_it("Unable to openout NULL dvice"); 934 return(1); 935 } 936 g_tapecatalog = mr_malloc(sizeof(struct s_tapecatalog)); 928 937 g_tapecatalog->entries = 0; 929 938 g_tape_posK = 0; … … 935 944 } 936 945 log_it("Opening OUT tape"); 937 if (! 938 (g_tape_stream = 939 open_device_via_buffer(bkpinfo->media_device, 'w', bkpinfo->internal_tape_block_size))) { 946 if (!(g_tape_stream = open_device_via_buffer(bkpinfo->media_device, 'w', bkpinfo->internal_tape_block_size))) { 940 947 log_OS_error(g_tape_fifo); 941 948 log_to_screen("Cannot openin stream device"); … … 950 957 /** 951 958 * Copy a file from the opened stream (CD or tape) to @p outfile. 952 * @param bkpinfo The backup information structure. @c bkpinfo->media_device is the only field used.953 959 * @param outfile The file to write to. 954 960 * @param size The size of the file in the input stream. … … 1422 1428 /*@ end vars *************************************************** */ 1423 1429 1430 if (bkpinfo->media_device == NULL) { 1431 log_it("Unable to open in from NULL device"); 1432 return (1); 1433 } 1434 1424 1435 paranoid_pclose(g_tape_stream); 1425 1436 sync(); … … 1429 1440 insist_on_this_tape_number(g_current_media_number + 1); // will increment it, too 1430 1441 log_it("Opening IN the next tape"); 1431 if (! 1432 (g_tape_stream = 1433 open_device_via_buffer(bkpinfo->media_device, 'r', 1434 bkpinfo->internal_tape_block_size))) { 1442 if (!(g_tape_stream = open_device_via_buffer(bkpinfo->media_device, 'r', bkpinfo->internal_tape_block_size))) { 1435 1443 log_OS_error(g_tape_fifo); 1436 1444 log_to_screen("Cannot openin stream device"); … … 1464 1472 int res = 0; 1465 1473 char *command = NULL; 1474 1475 if (bkpinfo->media_device == NULL) { 1476 log_it("Unable to open out from NULL device"); 1477 return (1); 1478 } 1466 1479 1467 1480 paranoid_pclose(g_tape_stream); … … 1489 1502 } else { 1490 1503 log_it("Opening OUT to next tape"); 1491 if (! 1492 (g_tape_stream = 1493 open_device_via_buffer(bkpinfo->media_device, 'w', 1494 bkpinfo->internal_tape_block_size))) { 1504 if (!(g_tape_stream = open_device_via_buffer(bkpinfo->media_device, 'w', bkpinfo->internal_tape_block_size))) { 1495 1505 log_OS_error(g_tape_fifo); 1496 1506 log_to_screen("Cannot openin stream device"); -
branches/2.2.10/mondo/src/common/libmondo-stream.h
r2321 r2325 7 7 int closein_tape(); 8 8 int closeout_tape(); 9 char * mr_find_tape_device(void);9 char *find_tape_device_and_size(char *siz); 10 10 void insist_on_this_tape_number(int tapeno); 11 11 void log_tape_pos(void); -
branches/2.2.10/mondo/src/common/libmondo-tools-EXT.h
r2321 r2325 10 10 const char *szFunction, int nLine, 11 11 const char *fmt, ...); 12 extern int read_cfg_var(char *config_file, char *label, char *value);12 extern char *read_cfg_var(char *config_file, char *label); 13 13 extern int write_cfg_var(char *config_file, char *label, char *value); 14 14 extern void init_bkpinfo(); -
branches/2.2.10/mondo/src/common/libmondo-tools.c
r2324 r2325 419 419 char *p = NULL; 420 420 char call_before_iso_user[MAX_STR_LEN] = "\0"; 421 /*422 long avm = 0;423 int rdsiz_MB;424 */425 421 char *iso_dev = NULL; 426 422 char *iso_mnt = NULL; … … 449 445 if (bkpinfo->backup_media_type == tape) { 450 446 log_msg(1, "Bar"); 447 if (bkpinfo->media_device == NULL) { 448 return(1); 449 } 451 450 mr_asprintf(tmp, "mt -f %s status", bkpinfo->media_device); 452 451 log_msg(1, "tmp = '%s'", tmp); … … 526 525 // -m isn't supported by growisofs, BTW... 527 526 } else { 527 if (bkpinfo->media_device == NULL) { 528 return(1); 529 } 528 530 sprintf(bkpinfo->call_make_iso, 529 531 "%s %s -Z %s . 2>> _ERR_", … … 594 596 } 595 597 log_it("bkpinfo->call_before_iso = %s", bkpinfo->call_before_iso); 598 if (bkpinfo->media_device == NULL) { 599 return(1); 600 } 596 601 sprintf(bkpinfo->call_make_iso, 597 602 "%s %s -v %s fs=4m dev=%s speed=%d %s/"MONDO_TMPISOS, … … 667 672 668 673 if (bkpinfo->backup_media_type == nfs) { 669 strcpy(hostname, bkpinfo->nfs_mount); 674 if (bkpinfo->nfs_mount) { 675 strcpy(hostname, bkpinfo->nfs_mount); 676 } else { 677 log_it("nfs_mount is NULL"); 678 retval++; 679 strcpy(hostname, ""); 680 } 670 681 colon = strchr(hostname, ':'); 671 682 if (!colon) { … … 678 689 hent = gethostbyname(hostname); 679 690 if (!hent) { 680 log_it("Can't resolve NFS mount (%s): %s", hostname, 681 hstrerror(h_errno)); 691 log_it("Can't resolve NFS mount (%s): %s", hostname, hstrerror(h_errno)); 682 692 retval++; 683 693 } else { 684 694 mr_asprintf(ip_address, "%s", inet_ntoa((struct in_addr) *((struct in_addr *) hent->h_addr))); 685 695 mr_strcat(ip_address, strchr(bkpinfo->nfs_mount, ':')); 686 strcpy(bkpinfo->nfs_mount, ip_address);687 paranoid_free(ip_address);696 mr_free(bkpinfo->nfs_mount); 697 bkpinfo->nfs_mount = ip_address; 688 698 } 689 699 } … … 746 756 } 747 757 g_current_media_number = 1; 748 bkpinfo->postnuke_tarball[0] = bkpinfo->nfs_mount[0] ='\0';758 bkpinfo->postnuke_tarball[0] = '\0'; 749 759 return (res); 750 760 } … … 787 797 void mr_free_bkpinfo() { 788 798 799 mr_free(bkpinfo->media_device); 800 mr_free(bkpinfo->isodir); 801 mr_free(bkpinfo->prefix); 789 802 mr_free(bkpinfo->scratchdir); 790 803 mr_free(bkpinfo->tmpdir); 791 804 mr_free(bkpinfo->include_paths); 792 805 mr_free(bkpinfo->exclude_paths); 806 mr_free(bkpinfo->nfs_mount); 807 mr_free(bkpinfo->nfs_remote_dir); 793 808 mr_free(bkpinfo->nfs_user); 794 809 … … 804 819 { 805 820 int i; 806 char *p = NULL;807 808 821 log_msg(1, "Hi"); 809 822 810 823 /* Initialized in same order as in the structure declaration to detect errors more easily */ 811 bkpinfo->media_device [0] = '\0';824 bkpinfo->media_device = NULL; 812 825 for (i = 0; i <= MAX_NOOF_MEDIA; i++) { 813 826 bkpinfo->media_size[i] = -1; … … 846 859 bkpinfo->call_after_iso[0] = '\0'; 847 860 bkpinfo->kernel_path[0] = '\0'; 848 bkpinfo->nfs_mount [0] = '\0';849 bkpinfo->nfs_remote_dir [0] = '\0';861 bkpinfo->nfs_mount = NULL; 862 bkpinfo->nfs_remote_dir = NULL; 850 863 bkpinfo->nfs_user = NULL; 851 864 bkpinfo->postnuke_tarball[0] = '\0'; … … 1072 1085 * @return 0 for success, 1 for failure. 1073 1086 */ 1074 int read_cfg_var(char *config_file, char *label, char *value)1087 char *read_cfg_var(char *config_file, char *label) 1075 1088 { 1076 1089 /*@ buffer ****************************************************** */ 1077 1090 char *command = NULL; 1091 char *value = NULL; 1078 1092 1079 1093 /*@ end vars *************************************************** */ … … 1083 1097 if (!does_file_exist(config_file)) { 1084 1098 log_to_screen("(read_cfg_var) Cannot find %s config file", config_file); 1085 value[0] = '\0';1086 return (1);1099 return (NULL); 1100 /* BERLIOS: not sure the sage of this one ? 1087 1101 } else if ((value != NULL) && (strstr(value, "/dev/") && strstr(value, "t0") && !strcmp(label, "media-dev"))) { 1088 1102 log_msg(2, "FYI, I can't read new value for %s - already got %s", label, value); 1089 1103 return (0); 1104 */ 1090 1105 } else { 1091 1106 mr_asprintf(command, "grep '%s .*' %s| cut -d' ' -f2,3,4,5", label, config_file); 1092 strcpy(value, call_program_and_get_last_line_of_output(command));1107 mr_asprintf(value, "%s", call_program_and_get_last_line_of_output(command)); 1093 1108 mr_free(command); 1094 1109 1095 1110 if (strlen(value) == 0) { 1096 return ( 1);1111 return (NULL); 1097 1112 } else { 1098 return ( 0);1113 return (value); 1099 1114 } 1100 1115 } -
branches/2.2.10/mondo/src/common/libmondo-tools.h
r2321 r2325 13 13 const char *szFunction, int nLine, 14 14 const char *fmt, ...); 15 int read_cfg_var(char *config_file, char *label, char *value);15 char *read_cfg_var(char *config_file, char *label); 16 16 int write_cfg_var(char *config_file, char *label, char *value); 17 17 void init_bkpinfo(); -
branches/2.2.10/mondo/src/common/libmondo-verify.c
r2324 r2325 924 924 assert(bkpinfo != NULL); 925 925 926 if (bkpinfo->media_device == NULL) { 927 return(1); 928 } 929 926 930 mr_asprintf(fname, "%s1", bkpinfo->media_device); 927 931 if (is_this_device_mounted(fname)) { … … 1022 1026 assert(bkpinfo != NULL); 1023 1027 1028 if (bkpinfo->media_device == NULL) { 1029 return(1); 1030 } 1031 1024 1032 mr_asprintf(mountpoint, "%s/cdrom", bkpinfo->tmpdir); 1025 mr_asprintf(fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number); 1033 if (((bkpinfo->isodir == NULL) && (bkpinfo->nfs_remote_dir == NULL)) || (bkpinfo->prefix == NULL)) { 1034 fatal_error("No iso filename preparation possible"); 1035 } 1036 if (bkpinfo->nfs_remote_dir) { 1037 // NFS 1038 mr_asprintf(fname, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number); 1039 } else { 1040 // ISO 1041 mr_asprintf(fname, "%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->prefix, g_current_media_number); 1042 } 1026 1043 1027 1044 mkdir(mountpoint, 1777); … … 1106 1123 mr_free(command); 1107 1124 1108 if (!bkpinfo->please_dont_eject 1109 && eject_device(bkpinfo->media_device)) { 1125 if (!bkpinfo->please_dont_eject && eject_device(bkpinfo->media_device)) { 1110 1126 log_msg(2, "Failed to eject CD-ROM drive"); 1111 1127 } -
branches/2.2.10/mondo/src/common/libmondo-verify.h
r2316 r2325 28 28 extern void fatal_error(char *); 29 29 extern int find_and_mount_actual_cd(char *); 30 extern int find_cdrom_device(char *,bool);30 extern char *find_cdrom_device(bool); 31 31 extern void finish(int); 32 32 extern int get_last_filelist_number(); -
branches/2.2.10/mondo/src/common/mondostructures.h
r2323 r2325 339 339 * If backup_media_type is anything else, this should be blank. 340 340 */ 341 char media_device[MAX_STR_LEN / 4];341 char *media_device; 342 342 343 343 /** … … 553 553 * address form. (Domain names will be resolved in post_param_configuration().) 554 554 */ 555 char nfs_mount[MAX_STR_LEN];555 char *nfs_mount; 556 556 557 557 /** … … 559 559 * the backups in. 560 560 */ 561 char nfs_remote_dir[MAX_STR_LEN];561 char *nfs_remote_dir; 562 562 563 563 /**
Note:
See TracChangeset
for help on using the changeset viewer.