Changeset 1594 in MondoRescue for branches/stable/mondo/src/mondoarchive
- Timestamp:
- Aug 26, 2007, 12:26:06 PM (17 years ago)
- Location:
- branches/stable/mondo/src/mondoarchive
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mondo/src/mondoarchive/mondo-cli.c
r1582 r1594 93 93 flag_set[i] = FALSE; 94 94 } 95 bkpinfo->media_size = (long)650; 96 res = 97 retrieve_switches_from_command_line(argc, argv, flag_val, 95 res = retrieve_switches_from_command_line(argc, argv, flag_val, 98 96 flag_set); 99 97 retval += res; … … 152 150 assert(value != NULL); 153 151 154 bkpinfo->media_size = 0L; /* dummy value */155 152 mr_asprintf(&tmp, value); 156 153 q = strchr(tmp, ','); … … 211 208 212 209 /* compulsory */ 213 i = flag_set[' c'] + flag_set['i'] + flag_set['n'] +210 i = flag_set['i'] + flag_set['n'] + 214 211 flag_set['t'] + flag_set['u'] + flag_set['r'] + 215 212 flag_set['w'] + flag_set['C'] + flag_set['U']; … … 316 313 317 314 if (g_kernel_version >= 2.6 && !flag_set['d'] 318 && (flag_set['c'] || flag_set['w'])) {315 && flag_set['w']) { 319 316 fatal_error 320 317 ("If you are using the 2.6.x kernel, please specify the CD-R(W) device."); … … 331 328 } 332 329 333 if (flag_set[' c'] || flag_set['w'] || flag_set['C'] || flag_set['r']) {330 if (flag_set['w'] || flag_set['C'] || flag_set['r']) { 334 331 if (!flag_set['r'] && g_kernel_version <= 2.5 335 332 && strstr(flag_val['d'], "/dev/")) { … … 352 349 ("Please install dvdrecord/cdrecord and try again."); 353 350 } 354 if (flag_set['C']) { 355 bkpinfo->cdrw_speed = atoi(flag_val['C']); 356 if (bkpinfo->cdrw_speed < 1) { 357 fatal_error 358 ("You specified a silly speed for a CD-R[W] drive"); 359 } 360 if (!flag_set['L']) { 361 log_to_screen 362 (_("You must use -L with -C. Therefore I am setting it for you.")); 363 flag_set['L'] = 1; 364 flag_val['L'][0] = '\0'; 365 } 366 } else { 367 mr_msg(3, "flag_val['c'] = %s", flag_val['c']); 351 if (flag_set['w']) { 368 352 mr_msg(3, "flag_val['w'] = %s", flag_val['w']); 369 if (flag_set['c']) { 370 bkpinfo->cdrw_speed = atoi(flag_val['c']); 371 } else if (flag_set['w']) { 372 bkpinfo->cdrw_speed = atoi(flag_val['w']); 373 } else if (flag_set['r']) { 374 bkpinfo->cdrw_speed = 1; /*atoi(flag_val['r']); */ 375 } 376 377 if (bkpinfo->cdrw_speed < 1) { 378 fatal_error 379 ("You specified a silly speed for a CD-R[W] drive"); 380 } 353 bkpinfo->writer_speed = atoi(flag_val['w']); 354 } 355 356 if (bkpinfo->writer_speed < 1) { 357 fatal_error 358 ("You specified a silly speed for a burner"); 381 359 } 382 360 } … … 431 409 fatal_error 432 410 ("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag."); 433 }434 if (!flag_set['s']) {435 sprintf(flag_val['s'], "%d", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4482 MB436 strcat(flag_val['s'], "m");437 log_to_screen438 (_("You did not specify a size (-s) for DVD. I'm guessing %s."),439 flag_val['s']);440 flag_set['s'] = 1;441 411 } 442 412 } … … 457 427 } 458 428 } else if (flag_set['u'] || flag_set['t']) { 429 /* Force autidetection */ 459 430 bkpinfo->media_size = 0L; 460 431 } else { … … 492 463 } 493 464 494 if (flag_set['c']) {495 bkpinfo->backup_media_type = cdr;496 }497 465 if (flag_set['C']) { 498 466 bkpinfo->backup_media_type = cdstream; … … 659 627 strncpy(bkpinfo->nfs_remote_dir, flag_val['d'], MAX_STR_LEN); 660 628 } else { /* backup device (if tape/CD-R/CD-RW) */ 661 strncpy(bkpinfo->media_device, flag_val['d'], MAX_STR_LEN / 4); 629 mr_asprintf(&tmp2,flag_val['d']); 630 mr_free(bkpinfo->media_device); 631 bkpinfo->media_device = tmp2; 662 632 } 663 633 } … … 678 648 679 649 if (!flag_set['d'] 680 && (flag_set['c'] || flag_set['w'] || flag_set['C'] || flag_set['U'])) { 681 if (g_kernel_version >= 2.6) { 682 if (popup_and_get_string 683 (_("Device"), _("Please specify the device"), 684 bkpinfo->media_device, MAX_STR_LEN / 4)) { 685 retval++; 686 log_to_screen(_("User opted to cancel.")); 687 } 688 } else if (find_cdrw_device(bkpinfo->media_device)) { 689 retval++; 690 log_to_screen 691 (_("Tried and failed to find CD-R[W] drive automatically.\n")); 650 && (flag_set['w'] || flag_set['C'] || flag_set['U'])) { 651 if (bkpinfo->media_device) { 652 mr_msg(4, "Using device %s", bkpinfo->media_device); 653 strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4); 654 flag_set['d'] = TRUE; 692 655 } else { 693 flag_set['d'] = TRUE; 694 strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4); 656 fatal_error(_("No device provided either on command line or in the configuration file")); 695 657 } 696 658 } -
branches/stable/mondo/src/mondoarchive/mondoarchive.c
r1592 r1594 96 96 mr_msg(7, "Seven..."); 97 97 mr_msg(8, "Eight..."); 98 printf( "See %s for details of backup run.\n", MONDO_LOGFILE);98 printf(_("See %s for details of backup run.\n"), MONDO_LOGFILE); 99 99 } 100 100 … … 133 133 } 134 134 135 /* reset/empty the mr_ar_conf structure from mondo's conf file */ 136 static void mr_ar_reset_conf(struct mr_ar_conf *mr_cnf) { 137 138 /* This should correspond to the default conf file */ 139 /* Especially for boolean values */ 140 mr_cnf->iso_creation_cmd = NULL; 141 mr_cnf->iso_creation_opt = NULL; 142 mr_cnf->iso_burning_cmd = NULL; 143 mr_cnf->iso_burning_opt = NULL; 144 mr_cnf->iso_burning_dev = NULL; 145 mr_cnf->iso_burning_speed = 0; 146 mr_cnf->media_size = 0; 147 mr_cnf->media_device = NULL; 148 mr_cnf->iso_burning_dev = NULL; 149 mr_cnf->manual_tray = FALSE; 150 mr_cnf->log_level = 0; 151 mr_cnf->prefix = NULL; 152 mr_cnf->external_tape_blocksize = 0; 153 mr_cnf->internal_tape_blocksize = 0; 154 mr_cnf->slice_size = 0; 155 mr_cnf->deplist_file = NULL; 156 mr_cnf->create_mindi_cd = FALSE; 157 mr_cnf->kernel = NULL; 158 mr_cnf->additional_modules = NULL; 159 mr_cnf->boot_loader = NULL; 160 mr_cnf->differential = FALSE; 161 mr_cnf->compression_tool = NULL; 162 mr_cnf->compression_level = 0; 163 mr_cnf->exclude_paths = NULL; 164 mr_cnf->include_paths = NULL; 165 mr_cnf->ui_mode = NULL; 166 mr_cnf->automatic_restore = FALSE; 167 mr_cnf->scratch_dir = NULL; 168 mr_cnf->tmp_dir = NULL; 169 mr_cnf->images_dir = NULL; 170 } 171 135 172 /* fill the mr_ar_conf structure from mindi's conf file */ 136 173 static void mr_ar_store_conf_mindi(struct mr_ar_conf *mr_cnf) { … … 153 190 char *p = NULL; 154 191 155 mr_asprintf(&p, mr_conf_sread("mondo_iso_burning_cmd")); 156 mr_cnf->iso_burning_cmd = p; 157 p = NULL; 158 159 mr_asprintf(&p, mr_conf_sread("mondo_iso_burning_opt")); 160 mr_cnf->iso_burning_opt = p; 161 p = NULL; 162 163 mr_cnf->iso_burning_speed = mr_conf_iread("mondo_iso_burning_speed"); 164 mr_cnf->media_size = mr_conf_iread("mondo_media_size"); 165 166 mr_asprintf(&p, mr_conf_sread("mondo_media_device")); 167 mr_cnf->media_device = p; 168 p = NULL; 169 170 mr_cnf->manual_tray = mr_conf_bread("mondo_manual_tray"); 171 mr_cnf->log_level = mr_conf_iread("mondo_log_level"); 172 173 mr_asprintf(&p, mr_conf_sread("mondo_prefix")); 174 mr_cnf->prefix = p; 175 p = NULL; 176 177 mr_cnf->external_tape_blocksize = mr_conf_iread("mondo_external_tape_blocksize"); 178 mr_cnf->internal_tape_blocksize = mr_conf_iread("mondo_internal_tape_blocksize"); 179 mr_cnf->slice_size = mr_conf_iread("mondo_slice_size"); 180 181 mr_asprintf(&p, mr_conf_sread("mondo_deplist_file")); 182 mr_cnf->deplist_file = p; 183 p = NULL; 184 185 mr_cnf->create_mindi_cd = mr_conf_bread("mondo_create_mindi_cd"); 186 187 mr_asprintf(&p, mr_conf_sread("mondo_kernel")); 188 mr_cnf->kernel = p; 189 p = NULL; 190 191 mr_asprintf(&p, mr_conf_sread("mondo_additional_modules")); 192 mr_cnf->additional_modules = p; 193 p = NULL; 194 195 mr_asprintf(&p, mr_conf_sread("mondo_boot_loader")); 196 mr_cnf->boot_loader = p; 197 p = NULL; 198 199 mr_cnf->differential = mr_conf_bread("mondo_differential"); 200 201 mr_asprintf(&p, mr_conf_sread("mondo_compression_tool")); 202 mr_cnf->compression_tool = p; 203 p = NULL; 204 205 mr_cnf->compression_level = mr_conf_iread("mondo_compression_level"); 206 207 mr_asprintf(&p, mr_conf_sread("mondo_exclude_paths")); 208 mr_cnf->exclude_paths = p; 209 p = NULL; 210 211 mr_asprintf(&p, mr_conf_sread("mondo_include_paths")); 212 mr_cnf->include_paths = p; 213 p = NULL; 214 215 mr_asprintf(&p, mr_conf_sread("mondo_ui_mode")); 216 mr_cnf->ui_mode = p; 217 p = NULL; 218 219 mr_cnf->automatic_restore = mr_conf_bread("mondo_automatic_restore"); 220 221 mr_asprintf(&p, mr_conf_sread("mondo_scratch_dir")); 222 mr_cnf->scratch_dir = p; 223 p = NULL; 224 225 mr_asprintf(&p, mr_conf_sread("mondo_tmp_dir")); 226 mr_cnf->tmp_dir = p; 227 p = NULL; 228 229 mr_asprintf(&p, mr_conf_sread("mondo_images_dir")); 230 mr_cnf->images_dir = p; 231 p = NULL; 192 p = mr_conf_sread("mondo_iso_burning_cmd"); 193 if (p != NULL) { 194 mr_cnf->iso_burning_cmd = p; 195 } 196 197 p = mr_conf_sread("mondo_iso_burning_opt"); 198 if (p != NULL) { 199 mr_cnf->iso_burning_opt = p; 200 } 201 202 p = mr_conf_sread("mondo_iso_burning_dev"); 203 if (p != NULL) { 204 mr_cnf->iso_burning_dev = p; 205 } 206 207 p = mr_conf_iread("mondo_iso_burning_speed"); 208 if (p != NULL ) { 209 mr_cnf->iso_burning_speed = atoi(p); 210 mr_free(p); 211 } 212 213 p = mr_conf_iread("mondo_media_size"); 214 if (p != NULL ) { 215 mr_cnf->media_size = atoi(p); 216 mr_free(p); 217 } 218 219 p = mr_conf_sread("mondo_media_device"); 220 if (p != NULL) { 221 mr_cnf->media_device = p; 222 } 223 /* If no specific device name for the burning command (a la ATAPI:0,0,0), 224 * then use the normal device name (a la /dev/hda) */ 225 if ((mr_cnf->iso_burning_dev == NULL) && (mr_cnf->media_device != NULL)) { 226 mr_asprintf(&p, mr_cnf->media_device); 227 mr_cnf->iso_burning_dev = p; 228 } 229 230 p = mr_conf_bread("mondo_manual_tray"); 231 if (p != NULL) { 232 mr_cnf->manual_tray = mr_atob(p); 233 mr_free(p); 234 } 235 236 p = mr_conf_iread("mondo_log_level"); 237 if (p != NULL) { 238 mr_cnf->log_level = atoi(p); 239 mr_free(p); 240 } 241 242 p = mr_conf_sread("mondo_prefix"); 243 if (p != NULL) { 244 mr_cnf->prefix = p; 245 } 246 247 p = mr_conf_iread("mondo_external_tape_blocksize"); 248 if (p != NULL) { 249 mr_cnf->external_tape_blocksize = atoi(p); 250 mr_free(p); 251 } 252 253 p = mr_conf_iread("mondo_internal_tape_blocksize"); 254 if (p != NULL) { 255 mr_cnf->internal_tape_blocksize = atoi(p); 256 mr_free(p); 257 } 258 259 p = mr_conf_iread("mondo_slice_size"); 260 if (p != NULL) { 261 mr_cnf->slice_size = atoi(p); 262 mr_free(p); 263 } 264 265 p = mr_conf_sread("mondo_deplist_file"); 266 if (p != NULL) { 267 mr_cnf->deplist_file = p; 268 } 269 270 p = mr_conf_bread("mondo_create_mindi_cd"); 271 if (p != NULL) { 272 mr_cnf->create_mindi_cd = mr_atob(p); 273 mr_free(p); 274 } 275 276 p = mr_conf_sread("mondo_kernel"); 277 if (p != NULL) { 278 mr_cnf->kernel = p; 279 } 280 281 p = mr_conf_sread("mondo_additional_modules"); 282 if (p != NULL) { 283 mr_cnf->additional_modules = p; 284 } 285 286 p = mr_conf_sread("mondo_boot_loader"); 287 if (p != NULL) { 288 mr_cnf->boot_loader = p; 289 } 290 291 p = mr_conf_bread("mondo_differential"); 292 if (p != NULL) { 293 mr_cnf->differential = mr_atob(p); 294 mr_free(p); 295 } 296 297 p = mr_conf_sread("mondo_compression_tool"); 298 if (p != NULL) { 299 mr_cnf->compression_tool = p; 300 } 301 302 p = mr_conf_iread("mondo_compression_level"); 303 if (p != NULL) { 304 mr_cnf->compression_level = atoi(p); 305 mr_free(p); 306 } 307 308 p = mr_conf_sread("mondo_exclude_paths"); 309 if (p != NULL) { 310 mr_cnf->exclude_paths = p; 311 } 312 313 p = mr_conf_sread("mondo_include_paths"); 314 if (p != NULL) { 315 mr_cnf->include_paths = p; 316 } 317 318 p = mr_conf_sread("mondo_ui_mode"); 319 if (p != NULL) { 320 mr_cnf->ui_mode = p; 321 } 322 323 p = mr_conf_bread("mondo_automatic_restore"); 324 if (p != NULL) { 325 mr_cnf->automatic_restore = mr_atob(p); 326 mr_free(p); 327 } 328 329 p = mr_conf_sread("mondo_scratch_dir"); 330 if (p != NULL) { 331 mr_cnf->scratch_dir = p; 332 } 333 334 p = mr_conf_sread("mondo_tmp_dir"); 335 if (p != NULL) { 336 mr_cnf->tmp_dir = p; 337 } 338 339 p = mr_conf_sread("mondo_images_dir"); 340 if (p != NULL) { 341 mr_cnf->images_dir = p; 342 } 232 343 mr_msg(5, "Directory for images is %s", mr_cnf->images_dir); 233 344 } … … 242 353 mr_free(mr_cnf->iso_creation_opt); 243 354 mr_free(mr_cnf->iso_burning_cmd); 355 mr_free(mr_cnf->iso_burning_dev); 244 356 mr_free(mr_cnf->iso_burning_opt); 245 357 mr_free(mr_cnf->media_device); … … 301 413 (void) textdomain("mondo"); 302 414 #endif 303 printf(_("Initializing... "));415 printf(_("Initializing...\n")); 304 416 305 417 /* Reference a dummy cleanup function for mr_exit temporarily */ … … 327 439 328 440 /* Conf file management */ 441 mr_conf = mr_malloc(sizeof(struct mr_ar_conf)); 442 mr_ar_reset_conf(mr_conf); 329 443 /* Check md5 sum before */ 330 444 /* Get content */ … … 332 446 mr_log_exit(-1, "Unable to open "MONDO_CONF_DIR"/mondo.conf.dist"); 333 447 } 334 mr_conf = malloc(sizeof(struct mr_ar_conf));335 448 mr_ar_store_conf(mr_conf); 336 449 /* Reference the right cleanup function for mr_exit now it's allocated */ 337 450 mr_cleanup = &mr_ar_cleanup; 338 339 451 mr_conf_close(); 452 453 if (mr_conf_open(MONDO_CONF_DIR"/mondo.conf") == 0) { 454 mr_ar_store_conf(mr_conf); 455 mr_conf_close(); 456 } 340 457 341 458 /* Check md5 sum before */
Note:
See TracChangeset
for help on using the changeset viewer.