diff -pur xcdroast-0.98alpha15.orig/src/create.c xcdroast-0.98alpha15/src/create.c --- xcdroast-0.98alpha15.orig/src/create.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/create.c 2006-11-12 08:37:51.000000000 +0100 @@ -523,7 +523,7 @@ GtkWidget *scrolled_win, *list; gtk_widget_show(tbl); vbox = gtk_vbox_new(FALSE,10); gtk_table_attach_defaults(GTK_TABLE(tbl),vbox,1,2,0,1); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("CD-Information")); } else { f1 = gtk_frame_new(_("CD/DVD-Information")); @@ -1260,7 +1260,7 @@ GtkWidget *scrolled_win, *img_list; gtk_widget_show(tbl); vbox = gtk_vbox_new(FALSE,10); gtk_table_attach_defaults(GTK_TABLE(tbl),vbox,0,1,0,1); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("CD-Information")); } else { f1 = gtk_frame_new(_("CD/DVD-Information")); @@ -2979,7 +2979,7 @@ GtkTargetEntry target_entry[3]; GTK_SIGNAL_FUNC(fixate_clicked), NULL); define_tooltip(b1,_("Just fixate (close) the CD, if for some reason the CD has been written but not fixated.")); - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_button_new_with_label(_("Blank CD-RW")); } else { b1 = gtk_button_new_with_label(_("Blank CD/DVD+-RW")); @@ -3086,7 +3086,7 @@ GtkTargetEntry target_entry[3]; gtk_widget_show (menu_item); i++; } - if (curset.isProDVD) { + if (curset.isDVD) { i = 0; tmpval = curset.cdrtype; while (dvdtypes[i] != 0) { @@ -5774,7 +5774,7 @@ GtkObject *adj; bootable_frame1 = NULL; bootable_frame2 = NULL; - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("Options to create a bootable CD")); } else { f1 = gtk_frame_new(_("Options to create a bootable CD/DVD")); @@ -5794,7 +5794,7 @@ GtkObject *adj; gtk_box_pack_start(GTK_BOX(vbox),tbl,FALSE,FALSE,0); gtk_widget_show(tbl); - if (!curset.isProDVD) { + if (!curset.isDVD) { l1 = rightjust_gtk_label_new(_("Make CD bootable?")); } else { l1 = rightjust_gtk_label_new(_("Make CD/DVD bootable?")); @@ -6792,7 +6792,7 @@ gint sel, btn; fill_session_available(); /* force recalc of session size if dvd */ /* so he will get the multisession warning */ - if (curset.cdrtype >= 1000 && curset.isProDVD == 1 && curset.multisession == 1) { + if (curset.cdrtype >= 1000 && curset.isDVD == 1 && curset.multisession == 1) { set_sessionsize_unknown(); } break; @@ -7023,7 +7023,7 @@ gchar tmp2[MAXLINE]; gtk_widget_show (menu_item); i++; } - if (curset.isProDVD) { + if (curset.isDVD) { i = 0; tmpval = curset.cdrtype; while (dvdtypes[i] != 0) { @@ -7174,7 +7174,7 @@ gchar tmp2[MAXLINE]; gtk_widget_show(b1); define_tooltip(b1,_("Set additional write options for advanced users.")); /* blank button */ - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_button_new_with_label(_("Blank CD-RW")); } else { b1 = gtk_button_new_with_label(_("Blank CD/DVD+-RW")); diff -pur xcdroast-0.98alpha15.orig/src/duplicate.c xcdroast-0.98alpha15/src/duplicate.c --- xcdroast-0.98alpha15.orig/src/duplicate.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/duplicate.c 2006-11-12 08:37:51.000000000 +0100 @@ -1156,7 +1156,7 @@ GtkWidget *scrolled_win; gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(actionspace),tbl,TRUE,TRUE,10); gtk_widget_show(tbl); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("CD-Information")); } else { f1 = gtk_frame_new(_("CD/DVD-Information")); @@ -1739,7 +1739,7 @@ GtkWidget *tbl, *check; gtk_widget_show(tbl); vbox = gtk_vbox_new(FALSE,10); gtk_table_attach_defaults(GTK_TABLE(tbl),vbox,0,1,0,1); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("CD-Information")); } else { f1 = gtk_frame_new(_("CD/DVD-Information")); @@ -2241,7 +2241,7 @@ GtkWidget *tbl, *omenu, *check; gtk_widget_show(tbl); vbox = gtk_vbox_new(FALSE,10); gtk_table_attach_defaults(GTK_TABLE(tbl),vbox,0,1,0,1); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("CD-Information")); } else { f1 = gtk_frame_new(_("CD/DVD-Information")); @@ -3090,7 +3090,7 @@ gint menuidx, menuhistory; gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(actionspace),tbl,TRUE,TRUE,10); gtk_widget_show(tbl); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("CD to write")); } else { f1 = gtk_frame_new(_("CD/DVD to write")); @@ -3107,7 +3107,7 @@ gint menuidx, menuhistory; hbox = gtk_hbox_new(TRUE,10); gtk_box_pack_start(GTK_BOX(actionspace),hbox,FALSE,TRUE,5); gtk_widget_show(hbox); - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_button_new_with_label(_("Write CD")); } else { b1 = gtk_button_new_with_label(_("Write CD/DVD")); @@ -3118,7 +3118,7 @@ gint menuidx, menuhistory; GTK_SIGNAL_FUNC(writetracks_clicked), NULL); define_tooltip(b1,_("Writes all tracks specified by the TOC file to a CD.")); - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_button_new_with_label(_("Blank CD-RW")); } else { b1 = gtk_button_new_with_label(_("Blank CD/DVD+-RW")); @@ -3239,7 +3239,7 @@ gint menuidx, menuhistory; gtk_widget_show (menu_item); i++; } - if (curset.isProDVD) { + if (curset.isDVD) { i = 0; tmpval = curset.cdrtype; while (dvdtypes[i] != 0) { @@ -3984,7 +3984,7 @@ GtkWidget *b1; side_widgets[0] = b1; define_tooltip(b1,_("Displays information about the currently inserted CD and tracks stored on the harddrive.")); - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_toggle_button_new_with_label(_("Read CD")); } else { b1 = gtk_toggle_button_new_with_label(_("Read CD/DVD")); @@ -3996,7 +3996,7 @@ GtkWidget *b1; side_widgets[1] = b1; define_tooltip(b1,_("Reads all tracks of a CD and copy them to the harddrive.")); - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_toggle_button_new_with_label(_("Verify CD")); } else { b1 = gtk_toggle_button_new_with_label(_("Verify CD/DVD")); @@ -4016,7 +4016,7 @@ GtkWidget *b1; side_widgets[3] = b1; define_tooltip(b1,_("Plays audio tracks (.wav files) from the harddrive via soundcard.")); - if (!curset.isProDVD) { + if (!curset.isDVD) { b1 = gtk_toggle_button_new_with_label(_("Write CD")); } else { b1 = gtk_toggle_button_new_with_label(_("Write CD/DVD")); diff -pur xcdroast-0.98alpha15.orig/src/init.c xcdroast-0.98alpha15/src/init.c --- xcdroast-0.98alpha15.orig/src/init.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/init.c 2006-11-12 08:37:51.000000000 +0100 @@ -80,8 +80,10 @@ gint c_locale_is_utf8; gchar *language = NULL; GdkFont *fixedfont; +#ifndef CDRECORDDVD_IS_FREE /* ProDVD key in global variable to let solaris-putenv access it */ gchar security_key[MAXLINE]; +#endif /* give the setupdata-structure valid startvalues */ @@ -136,7 +138,9 @@ gint fullaccess; setupdata.root_option_change_imagedirs = fullaccess; setupdata.root_option_change_logoptions = fullaccess; +#ifndef CDRECORDDVD_IS_FREE setupdata.ProDVDkey = g_strdup(""); +#endif setupdata.mainwindow.x = -1; setupdata.mainwindow.y = -1; @@ -156,7 +160,7 @@ static void init_curset() { gint cdrtypes[] = CDR_TYPES_MIN; gint i; - curset.isProDVD = 0; + curset.isDVD = 0; curset.support_ontheflyaudio = 0; curset.writer_devnr = -1; curset.reader_devnr = -1; @@ -391,16 +395,16 @@ gint second; } /* check if needed binaries are installed */ -/* return if proDVD version found */ +/* return if (pro)DVD version found */ static gint check_binaries(gint noversioncheck) { gchar tmp[MAXLINE]; gchar ver[MAXLINE]; gchar link[MAXLINE]; gint stat; -gint out, isProDVD; +gint out, isDVD; - isProDVD = 0; + isDVD = 0; check_executable(UNAME,UNAME2,0); check_executable(DF,DF2,0); @@ -416,7 +420,7 @@ gint out, isProDVD; } stat = check_version_cdrecord(CDRECORD_VERSION, 0, ver, &out); if (stat == 1 && !noversioncheck) { - g_warning("Invalid cdrecord version %s found.\n\tExpecting at least version %s\n\tStart xcdroast with the -n option to override (not recommended!)", ver, CDRECORD_VERSION); + g_warning("Invalid " CDRECORD_NAME " version %s found.\n\tExpecting at least version %s\n\tStart xcdroast with the -n option to override (not recommended!)", ver, CDRECORD_VERSION); gtk_exit(1); } if (stat == 2) { @@ -424,8 +428,8 @@ gint out, isProDVD; gtk_exit(1); } - /* check optional installation of ProDVD version */ - get_spawn_path(CDRECORDPRODVD,tmp); + /* check optional installation of (Pro)DVD version */ + get_spawn_path(CDRECORDDVD,tmp); if (is_file(tmp)) { if (check_islink(tmp, link)) { #if 0 @@ -434,9 +438,9 @@ gint out, isProDVD; dodebug(3, "%s is a link to %s\n", tmp, link); #endif } - stat = check_version_cdrecord(CDRECORD_PRODVD_VERSION, 1, ver, &isProDVD); + stat = check_version_cdrecord(CDRECORDDVD_VERSION, 1, ver, &isDVD); if (stat == 1 && !noversioncheck) { - g_warning("Invalid cdrecord-ProDVD version %s found.\n\tExpecting at least version %s\n\tStart xcdroast with the -n option to override (not recommended!)", ver, CDRECORD_PRODVD_VERSION); + g_warning("Invalid " CDRECORDDVD_NAME " version %s found.\n\tExpecting at least version %s\n\tStart xcdroast with the -n option to override (not recommended!)", ver, CDRECORDDVD_VERSION); gtk_exit(1); } } @@ -508,7 +512,7 @@ gint out, isProDVD; g_snprintf(tmp,MAXLINE,"%s/%s", sharedir, CDDBTOOL); check_executable(tmp,NULL,1); - return isProDVD; + return isDVD; } @@ -701,7 +705,7 @@ gint nofail; } /* check prodvd only when it is installed */ - get_spawn_path(CDRECORDPRODVD,tmp); + get_spawn_path(CDRECORDDVD,tmp); if (is_file(tmp)) { if (check_nonroot_mode_cdrtools(tmp) == 0) { nofail = 0; @@ -768,7 +772,8 @@ static void usage(gchar *cmd) { /* g_print("\t-r (currently: %s)\n", rootconfig); */ g_print("\t-o : Disable multibyte font support\n"); g_print("\t-n : Disable cdrtools version check (use at own risk)\n"); - g_print("\t-w : Don't use cdrecord-ProDVD, even when it is available.\n"); + if (strcmp(CDRECORD, CDRECORDDVD)) + g_print("\t-w : Don't use " CDRECORDDVD_NAME ", even when it is available.\n"); #if (defined(__MACH__) && defined(__APPLE__)) g_print("\t-a : Don't display the autodiskmount daemon handling at startup\n"); #else @@ -796,7 +801,7 @@ gchar *mylocale; gchar *p1; gchar *alt_dev_string; gint c, usercnf, stat; -gint isProDVD, ignoreProDVD; +gint isDVD, ignoreDVD; if (!language) language = g_strdup(""); @@ -806,7 +811,7 @@ gint isProDVD, ignoreProDVD; no_versioncheck = 0; support_ontheflyaudio = 0; c_locale_is_utf8 = 0; - ignoreProDVD = 0; + ignoreDVD = 0; alt_dev_string = NULL; strncpy(configdir, CONFIGDIR, MAXLINE); g_snprintf(rootconfig, MAXLINE, "%s/%s", SYSCONFDIR, ROOTCONFIG); @@ -867,7 +872,7 @@ gint isProDVD, ignoreProDVD; break; case 'w': - ignoreProDVD = 1; + ignoreDVD = 1; break; case 'f': @@ -967,17 +972,19 @@ gint isProDVD, ignoreProDVD; #endif dodebug(3, "Checking for helper binaries (noversioncheck = %d)\n", no_versioncheck); - isProDVD = check_binaries(no_versioncheck); + isDVD = check_binaries(no_versioncheck); - if (isProDVD) { - if (ignoreProDVD) { - isProDVD = 0; - dodebug(1,"-> cdrecord.ProDVD detected but disabled\n"); - } else { - dodebug(1,"-> cdrecord.ProDVD detected\n"); + if (strcmp(CDRECORD, CDRECORDDVD)) { + if (isDVD) { + if (ignoreDVD) { + isDVD = 0; + dodebug(1,"-> " CDRECORDDVD_NAME " detected but disabled\n"); + } else { + dodebug(1,"-> " CDRECORDDVD_NAME " detected\n"); + } + } else { + dodebug(1,"-> " CDRECORDDVD_NAME " not detected\n"); } - } else { - dodebug(1,"-> cdrecord.ProDVD not detected\n"); } if (support_ontheflyaudio == 1) { dodebug(1, " Enabled support for on-the-fly audio\n"); @@ -1018,7 +1025,7 @@ gint isProDVD, ignoreProDVD; tocfiles = (GList *) NULL; strcpy(xcdroast_version_loaded, ""); - curset.isProDVD = isProDVD; + curset.isDVD = isDVD; curset.support_ontheflyaudio = support_ontheflyaudio; /* load iso-options if available */ @@ -1139,7 +1146,8 @@ gint isProDVD, ignoreProDVD; } #endif - if (curset.isProDVD == 1) { +#ifndef CDRECORDDVD_IS_FREE + if (curset.isDVD == 1) { /* set key if we got one from the config-file */ if (strcmp(setupdata.ProDVDkey,"")) { @@ -1152,6 +1160,7 @@ gint isProDVD, ignoreProDVD; #endif } } +#endif if (usercnf == 0) { /* load ok */ diff -pur xcdroast-0.98alpha15.orig/src/io.c xcdroast-0.98alpha15/src/io.c --- xcdroast-0.98alpha15.orig/src/io.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/io.c 2006-11-12 08:37:51.000000000 +0100 @@ -693,7 +693,7 @@ gint found; strncpy(tmp2,dev,MAXLINE); convert_escape(tmp2); - g_snprintf(tmp,MAXLINE," -scanbus dev= \"%s\" 2>&1",tmp2); + g_snprintf(tmp,MAXLINE," -scanbus dev= \"%s\" 2>/dev/null",tmp2); strcat(line,tmp); dodebug(1, "calling: %s\n", line); @@ -912,7 +912,7 @@ scsi_devices_t **scsidevices; /* traditional scanning first */ get_wrap_path_cdrecord(line); - strcat(line," -scanbus 2>&1"); + strcat(line," -scanbus 2>/dev/null"); dodebug(1, "calling: %s\n", line); if ((fpin = popen(line,"r")) == NULL) { @@ -963,7 +963,7 @@ scsi_devices_t **scsidevices; scsicount = 0; get_wrap_path_cdrecord(line); - g_snprintf(tmp,MAXLINE," dev=%s -scanbus 2>&1", transport); + g_snprintf(tmp,MAXLINE," dev=%s -scanbus 2>/dev/null", transport); strcat(line, tmp); dodebug(1, "calling: %s\n", line); @@ -1272,7 +1272,7 @@ FILE *fpin; drvcount = 0; get_wrap_path_cdrecord(line); - strcat(line," driver=help 2>&1"); + strcat(line," driver=help 2>&1 | sed -n '/Driver types:/,//p'"); dodebug(1, "calling: %s\n", line); if ((fpin = popen(line,"r")) == NULL) { @@ -1479,9 +1479,9 @@ gchar *p; if (!dev) return; - /* if prodvd available use it to get additional info */ - if (curset.isProDVD) { - get_wrap_path("CDRECORDPRODVD", tmp); + /* if (pro)dvd available use it to get additional info */ + if (curset.isDVD) { + get_wrap_path("CDRECORDDVD", tmp); } else { get_wrap_path("CDRECORD", tmp); } @@ -2099,9 +2099,11 @@ gint count; g_snprintf(tmp,MAXLINE,"OPTION_SELECTIONMODE = %d\n",setupdata.option_selectionmode); fputs(tmp,fd); +#ifndef CDRECORDDVD_IS_FREE strcpy(tmp2,setupdata.ProDVDkey); g_snprintf(tmp,MAXLINE,"PRODVD_KEY = \"%s\"\n",convert_escape(tmp2)); fputs(tmp,fd); +#endif /* save geometry data? */ if (setupdata.option_savepos) { @@ -2216,6 +2218,7 @@ gint count, i, newadded; if (fgets(line,MAXLINE,fd) == NULL) break; +#ifndef CDRECORDDVD_IS_FREE /* special case here to protect pro-dvd-key */ if (strstr(line, "PRODVD_KEY") && strlen(line) > 50) { strncpy(tmp,line,50); @@ -2224,6 +2227,7 @@ gint count, i, newadded; } else { dodebug(10,"config: %s", line); } +#endif /* skip empty or hashed lines */ strip_string(line); @@ -2503,6 +2507,7 @@ gint count, i, newadded; if (strcmp("OPTION_SELECTIONMODE",id) == 0) { setupdata.option_selectionmode = atoi(value); } +#ifndef CDRECORDDVD_IS_FREE if (strcmp("PRODVD_KEY",id) == 0) { /* dont overwrite evtuelly set value with empty key */ if (strcmp(value,"") != 0) { @@ -2510,6 +2515,7 @@ gint count, i, newadded; setupdata.ProDVDkey = g_strdup(value); } } +#endif if (setupdata.option_savepos) { if (strcmp("GEOMETRY_MAINWINDOW_X",id) == 0) { setupdata.mainwindow.x = atoi(value); @@ -5545,8 +5551,8 @@ gint found_atip,errcount; } /* build command line */ - if (curset.isProDVD) { - get_wrap_path("CDRECORDPRODVD", tmp3); + if (curset.isDVD) { + get_wrap_path("CDRECORDDVD", tmp3); } else { get_wrap_path("CDRECORD", tmp3); } @@ -5855,7 +5861,7 @@ FILE *fpin; drvcount = 0; get_wrap_path_cdrecord(line); - strcat(line," blank=help 2>&1"); + strcat(line," blank=help 2>&1 | sed -n '/Blanking options:/,//p'"); dodebug(1, "calling: %s\n", line); @@ -5979,11 +5985,12 @@ gchar tmp[MAXLINE]; dialog_done = -1; } +#ifndef CDRECORDDVD_IS_FREE /* or cdrecord died by signal? e.g. SIGALRM */ if (WIFSIGNALED(ret) && read_done == 0) { /* most likely invalid prodvd key */ - if (curset.isProDVD) { + if (curset.isDVD) { strncpy(tmp, "\nReceived ALARM from cdrecord-ProDVD. Aborting blank...\nInvalid ProDVD key?\n", MAXLINE); convert_for_gtk2_textwidget(tmp); @@ -5992,6 +5999,7 @@ gchar tmp[MAXLINE]; read_done = 1; } } +#endif dodebug(10,"Finished in read_blank_out with status: %d\n", read_done); @@ -6157,8 +6165,8 @@ gint ret; strcat(tmp3, tmp4); } - if (curset.isProDVD) { - get_wrap_path("CDRECORDPRODVD", tmp5); + if (curset.isDVD) { + get_wrap_path("CDRECORDDVD", tmp5); } else { get_wrap_path("CDRECORD", tmp5); } @@ -6366,14 +6374,16 @@ gint cdrecord_stderr; dialog_done = -1; } +#ifndef CDRECORDDVD_IS_FREE /* or cdrecord died by signal? e.g. SIGALRM */ if (WIFSIGNALED(ret) && read_done == 0) { /* most likely invalid prodvd key */ - if (curset.isProDVD && curset.cdrtype > 1000) { + if (curset.isDVD && curset.cdrtype > 1000) { read_done = 2; } } +#endif dodebug(10,"Finished in read_write_out with status: %d\n", read_done); @@ -6399,8 +6409,9 @@ gint cdrecord_stderr; return; } +#ifndef CDRECORDDVD_IS_FREE /* prodvd and beginning to write soon? */ - if (curset.isProDVD && curset.cdrtype > 1000) { + if (curset.isDVD && curset.cdrtype > 1000) { if (strstr(line,"Last chance to quit")) { cdrtimer = gtk_timeout_add(1000, cdrtimer_callback, NULL); @@ -6415,6 +6426,7 @@ gint cdrecord_stderr; } } } +#endif /* skip all lines that contain "seconds." */ if (n > 8) { @@ -6705,6 +6717,7 @@ gchar *p; } +#ifndef CDRECORDDVD_IS_FREE /* display an error when useing prodvd and cdrecord aborts */ static void display_invalid_prodvdkey() { @@ -6713,6 +6726,7 @@ static void display_invalid_prodvdkey() show_dialog(ICO_WARN, _("cdrecord-ProDVD terminated.\n\nMost likely because you have entered\nan invalid key. Please check if it is correct."), T_OK, NULL, NULL, 0); } } +#endif /* call cdrecord to write some tracks */ @@ -6961,10 +6975,12 @@ gint wrmode; if (read_done != 0 || read_output_ctrl == 5) { gtk_label_set_text(GTK_LABEL(readtrack_info_label), _("Error writing tracks")); gtk_label_set_text(GTK_LABEL(readtrack_small_info),_("Write-Error:")); +#ifndef CDRECORDDVD_IS_FREE if (read_done == 2) { /* invalid cdrecord key - show window */ display_invalid_prodvdkey(); } +#endif return 1; } else { /* all ok */ @@ -7559,10 +7575,12 @@ gfloat per; if (read_done != 0 || read_output_ctrl == 5) { gtk_label_set_text(GTK_LABEL(readtrack_info_label), _("Error writing tracks")); gtk_label_set_text(GTK_LABEL(readtrack_small_info),_("Write-Error:")); +#ifndef CDRECORDDVD_IS_FREE if (read_done == 2) { /* invalid cdrecord key - show window */ display_invalid_prodvdkey(); } +#endif return 1; } else { /* all ok */ @@ -7728,10 +7746,12 @@ gint wrmode; if (read_done != 0 || read_output_ctrl == 5) { gtk_label_set_text(GTK_LABEL(readtrack_info_label), _("Error writing tracks")); gtk_label_set_text(GTK_LABEL(readtrack_small_info),_("Write-Error:")); +#ifndef CDRECORDDVD_IS_FREE if (read_done == 2) { /* invalid cdrecord key - show window */ display_invalid_prodvdkey(); } +#endif return 1; } else { /* all ok */ @@ -9881,10 +9901,12 @@ gint wrmode; if (read_done != 0 || read_output_ctrl == 5) { gtk_label_set_text(GTK_LABEL(readtrack_info_label), _("Error writing tracks")); gtk_label_set_text(GTK_LABEL(readtrack_small_info),_("Write-Error:")); +#ifndef CDRECORDDVD_IS_FREE if (read_done == 2) { /* invalid cdrecord key - show window */ display_invalid_prodvdkey(); } +#endif return 1; } else { /* all ok */ @@ -9898,21 +9920,21 @@ gint wrmode; /* check the version of cdrecord */ /* return 1 if not correct (to old) */ -gint check_version_cdrecord(gchar *match, gint dvd, gchar *found, gint *isProDVD) { +gint check_version_cdrecord(gchar *match, gint dvd, gchar *found, gint *isDVD) { gchar line[MAXLINE]; gchar vline[MAXLINE]; gchar ver[MAXLINE]; FILE *fpin; gchar *p; - *isProDVD = 0; + *isDVD = 0; strcpy(ver,""); if (dvd) { - get_wrap_path("CDRECORDPRODVD",line); + get_wrap_path("CDRECORDDVD",line); } else { get_wrap_path("CDRECORD",line); } - strcat(line," -version 2>/dev/null"); + strcat(line," -version 2>&1"); dodebug(1, "calling: %s\n", line); if ((fpin = popen(line,"r")) == NULL) { @@ -9953,7 +9975,7 @@ gchar *p; } else { p = strstr(vline, "Cdrecord-ProDVD-Clone"); if (p != NULL) { - *isProDVD = 1; + *isDVD = 1; p = strtok(p+22, " "); if (p != NULL) { strcpy(ver,p); @@ -9967,6 +9989,9 @@ gchar *p; p = strtok(NULL, " "); if (p) { strcpy(ver,p); + if (strstr(ver,"-dvd")) { + *isDVD = 1; + } } } } @@ -10136,7 +10161,7 @@ gchar *p; strcpy(ver,""); get_wrap_path("READCD",line); - strcat(line," -version 2>/dev/null"); + strcat(line," -version 2>/dev/null | head -n 1"); dodebug(1, "calling: %s\n", line); if ((fpin = popen(line,"r")) == NULL) { diff -pur xcdroast-0.98alpha15.orig/src/main.c xcdroast-0.98alpha15/src/main.c --- xcdroast-0.98alpha15.orig/src/main.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/main.c 2006-11-12 08:37:51.000000000 +0100 @@ -226,7 +226,7 @@ gchar tmp[MAXLINE]; gtk_box_pack_start(GTK_BOX(sidespace), side_t,TRUE,TRUE,0); side_t_btn1 = gtk_button_new_with_label (_("Setup")); - if (!curset.isProDVD) { + if (!curset.isDVD) { side_t_btn2 = gtk_button_new_with_label (_("Duplicate CD")); side_t_btn3 = gtk_button_new_with_label (_("Create CD")); } else { @@ -581,18 +581,20 @@ gint stat; */ /* warn about non-existing LFS support in dvd mode */ - if (curset.isProDVD == 1 && sizeof(off_t) != 8) { + if (curset.isDVD == 1 && sizeof(off_t) != 8) { show_dialog(ICO_WARN, _("Warning: Your system is not able to create files larger\nthan 2 GB. Writing DVDs will therefore not possible."), T_OK, NULL, NULL, 0); } +#ifndef CDRECORDDVD_IS_FREE /* if we are in DVD mode, check if the security-key is set */ - if (curset.isProDVD == 1) { + if (curset.isDVD == 1) { keyenv = getenv("CDR_SECURITY"); if (keyenv == NULL) { show_dialog(ICO_WARN, _("Warning: You have not entered a cdrecord-ProDVD key in setup.\nPlease see the FAQ on how to obtain your free key.\nYou also have to renew the key every few months because it got an\nexpire date. You will not be able to properly write DVDs without it."), T_OK, NULL, NULL, 0); } } +#endif dolog(1,"Starting X-CD-Roast\n"); diff -pur xcdroast-0.98alpha15.orig/src/main.h xcdroast-0.98alpha15/src/main.h --- xcdroast-0.98alpha15.orig/src/main.h 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/main.h 2006-11-12 08:37:51.000000000 +0100 @@ -194,7 +194,7 @@ gint show_and_start_master(); gint start_master_action(); gint start_onthefly_master_action(gint write_devnr); -gint check_version_cdrecord(gchar *match, gint dvd, gchar *found, gint *isProDVD); +gint check_version_cdrecord(gchar *match, gint dvd, gchar *found, gint *isDVD); gint check_version_mkisofs(gchar *match, gchar *found); gint check_version_cdda2wav(gchar *match, gchar *found); gint check_version_readcd(gchar *match, gchar *found); diff -pur xcdroast-0.98alpha15.orig/src/menus.c xcdroast-0.98alpha15/src/menus.c --- xcdroast-0.98alpha15.orig/src/menus.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/menus.c 2006-11-12 08:37:51.000000000 +0100 @@ -2701,7 +2701,7 @@ static const gchar *blanktrans[] = BLANK gtk_container_set_border_width (GTK_CONTAINER (box1), 5); gtk_container_add(GTK_CONTAINER(dialog),box1); - if (!curset.isProDVD) { + if (!curset.isDVD) { f1 = gtk_frame_new(_("Blank CD-RW")); } else { f1 = gtk_frame_new(_("Blank CD/DVD+-RW")); @@ -2811,7 +2811,7 @@ static const gchar *blanktrans[] = BLANK gtk_box_pack_start(GTK_BOX(box1),box3,FALSE,TRUE,5); gtk_widget_show(box3); - if (!curset.isProDVD) { + if (!curset.isDVD) { button1 = gtk_button_new_with_label(_("Blank CD-RW")); } else { button1 = gtk_button_new_with_label(_("Blank CD/DVD+-RW")); diff -pur xcdroast-0.98alpha15.orig/src/setup.c xcdroast-0.98alpha15/src/setup.c --- xcdroast-0.98alpha15.orig/src/setup.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/setup.c 2006-11-12 08:37:51.000000000 +0100 @@ -132,8 +132,10 @@ gint i,j; g_free(bak_setupdata.cddb_proxy_host); setupdata.logfile = g_strdup(bak_setupdata.logfile); g_free(bak_setupdata.logfile); +#ifndef CDRECORDDVD_IS_FREE setupdata.ProDVDkey = g_strdup(bak_setupdata.ProDVDkey); g_free(bak_setupdata.ProDVDkey); +#endif /* restore and free also writerreader structure copy */ if (bak_writerreader) { @@ -263,6 +265,7 @@ gchar *buf, *locreturn, *p; /* check_tilde(tmp); */ setupdata.logfile = g_strdup(tmp); +#ifndef CDRECORDDVD_IS_FREE g_free(setupdata.ProDVDkey); n = gtk_text_get_length(GTK_TEXT(prodvdkey_txt)); buf = gtk_editable_get_chars(GTK_EDITABLE(prodvdkey_txt),0,n); @@ -281,6 +284,7 @@ gchar *buf, *locreturn, *p; #else putenv(security_key); #endif +#endif /* save the current window size if we are asked to */ if (setupdata.option_savepos) { @@ -305,8 +309,8 @@ gchar tmp[MAXLINE]; dolog(2, "Confirm setup\n"); /* some lasts checks and warnings */ - if (is_dvdwriter(setupdata.writer_devnr) && !curset.isProDVD) { - ret = show_dialog(ICO_WARN, _("Please note that you have to install ProDVD support before\nyou can write DVDs. Currently you will only be able to\nwrite regular CDs with your DVD-Writer."), T_OK,T_CANCEL, NULL, 0); + if (is_dvdwriter(setupdata.writer_devnr) && !curset.isDVD) { + ret = show_dialog(ICO_WARN, _("Please note that you have to install DVD support before\nyou can write DVDs. Currently you will only be able to\nwrite regular CDs with your DVD-Writer."), T_OK,T_CANCEL, NULL, 0); if (ret == 1) { /* abort */ return; @@ -330,7 +334,9 @@ gchar tmp[MAXLINE]; return; /* free memory of backup-config */ +#ifndef CDRECORDDVD_IS_FREE g_free(bak_setupdata.ProDVDkey); +#endif g_free(bak_setupdata.logfile); g_free(bak_setupdata.cddb_host); g_free(bak_setupdata.cddb_proxy_host); @@ -1137,7 +1143,7 @@ static const gchar *helpwritemodes[] = H gtk_box_pack_start(GTK_BOX(vbox2),tbl,FALSE,TRUE,0); gtk_widget_show(tbl); - if (!curset.isProDVD) { + if (!curset.isDVD) { l1 = rightjust_gtk_label_new(_("CD Writer Device:")); } else { l1 = rightjust_gtk_label_new(_("CD/DVD Writer Device:")); @@ -2737,6 +2743,7 @@ GtkWidget *check; define_tooltip(check, _("When enabled, then multiple selections in lists are handled like the lists in Windows (hold CTRL-Key to select more than one entry and use SHIFT to select a whole range of entries).")); +#ifndef CDRECORDDVD_IS_FREE f1 = gtk_frame_new(_("cdrecord-ProDVD key")); set_font_and_color_frame(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(vbox),f1,TRUE,TRUE,10); @@ -2779,6 +2786,7 @@ GtkWidget *check; gtk_widget_set_sensitive(l1, FALSE); gtk_widget_set_sensitive(txt, FALSE); } +#endif // !defined(CDRECORDDVD_IS_FREE) } @@ -3183,7 +3191,7 @@ gchar tmp[MAXLINE]; gtk_container_add (GTK_CONTAINER (f1), tbl); gtk_widget_show(tbl); - if (!curset.isProDVD) { + if (!curset.isDVD) { check = gtk_check_button_new_with_label(_("change CD Writer Device")); } else { check = gtk_check_button_new_with_label(_("change CD/DVD Writer Device")); @@ -3205,7 +3213,7 @@ gchar tmp[MAXLINE]; gtk_widget_show(check); define_tooltip(check, _("If enabled, then the user is allowed the change the write parameters for the CD Writer (e.g. Speed and FIFO-Buffer-Size).")); - if (!curset.isProDVD) { + if (!curset.isDVD) { check = gtk_check_button_new_with_label(_("change CD Reader Device")); } else { check = gtk_check_button_new_with_label(_("change CD/DVD Reader Device")); @@ -3287,7 +3295,9 @@ gint i; bak_setupdata.cddb_host = g_strdup(setupdata.cddb_host); bak_setupdata.cddb_proxy_host = g_strdup(setupdata.cddb_proxy_host); bak_setupdata.logfile = g_strdup(setupdata.logfile); +#ifndef CDRECORDDVD_IS_FREE bak_setupdata.ProDVDkey = g_strdup(setupdata.ProDVDkey); +#endif /* backup the dynamic part of the readerwriter structure too */ bak_writerreader = g_new0(writerreader_bak_t *, MAXDEVICES); @@ -3372,7 +3382,7 @@ gint i; gtk_notebook_append_page(GTK_NOTEBOOK (notebook),f1,l1); draw_scsi_scan(f1); - if (!curset.isProDVD) { + if (!curset.isDVD) { l2 = gtk_label_new(_("CD Settings")); } else { l2 = gtk_label_new(_("CD/DVD Settings")); diff -pur xcdroast-0.98alpha15.orig/src/xcdrdata.h xcdroast-0.98alpha15/src/xcdrdata.h --- xcdroast-0.98alpha15.orig/src/xcdrdata.h 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/xcdrdata.h 2006-11-12 08:37:51.000000000 +0100 @@ -60,7 +60,9 @@ typedef struct setup_data { gboolean root_option_change_imagedirs; gboolean root_option_change_logoptions; +#ifndef CDRECORDDVD_IS_FREE gchar *ProDVDkey; +#endif geometry_t mainwindow; geometry_t burnwindow; @@ -120,7 +122,7 @@ typedef struct writer_driver { } writer_driver_t; typedef struct current_set { - gint isProDVD; + gint isDVD; gint support_ontheflyaudio; gint writer_devnr; gint reader_devnr; diff -pur xcdroast-0.98alpha15.orig/src/xcdroast.h xcdroast-0.98alpha15/src/xcdroast.h --- xcdroast-0.98alpha15.orig/src/xcdroast.h 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/xcdroast.h 2006-11-12 08:37:51.000000000 +0100 @@ -112,19 +112,23 @@ then in $PREFIX (e.g. /usr/bin/cdrecord instead of /usr/local/lib/xcdroast-0.98/bin/cdrecord) */ #define CDRECORD "bin/cdrecord" -#define CDRECORDPRODVD "bin/cdrecord.prodvd" +#define CDRECORDDVD "bin/cdrecord" #define CDDA2WAV "bin/cdda2wav" #define READCD "bin/readcd" #define MKISOFS "bin/mkisofs" +#define CDRECORD_NAME "cdrecord" +#define CDRECORDDVD_NAME "cdrecord" +#define CDRECORDDVD_IS_FREE + /* MINIMUM required versions. Greater versions are now silently accepted. Distribution-Vendors: DO NOT TOUCH THESE! IT WONT WORK WITH LOWER VERSIONS, EVEN WHEN YOU THINK IT DOES! */ #define CDRECORD_VERSION "1.11a34" -#define CDRECORD_PRODVD_VERSION "2.01.01" +#define CDRECORDDVD_VERSION "2.01.01" #define CDRECORD_VERSION_WITH_ONTHFLYAUDIO "2.01.01" #define MKISOFS_VERSION "1.15a17" #define CDDA2WAV_VERSION "1.11a34" diff -pur xcdroast-0.98alpha15.orig/src/xcdrwrap.c xcdroast-0.98alpha15/src/xcdrwrap.c --- xcdroast-0.98alpha15.orig/src/xcdrwrap.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/xcdrwrap.c 2006-11-12 08:37:51.000000000 +0100 @@ -276,8 +276,8 @@ char tmp[MAXLINE]; strcpy(ret, CDRECORD); return ret; } - if (strncmp(cmd,"CDRECORDPRODVD",MAXLINE) == 0) { - strcpy(ret, CDRECORDPRODVD); + if (strncmp(cmd,"CDRECORDDVD",MAXLINE) == 0) { + strcpy(ret, CDRECORDDVD); return ret; } if (strncmp(cmd,"CDDA2WAV",MAXLINE) == 0) { @@ -312,9 +312,9 @@ char tmp[MAXLINE]; #endif /* show found paths of helper apps */ get_spawn_path(CDRECORD, tmp, 1); - printf("cdrecord found at: %s\n", tmp); - get_spawn_path(CDRECORDPRODVD, tmp, 1); - printf("cdrecord-ProDVD found at: %s\n", tmp); + printf(CDRECORD_NAME " found at: %s\n", tmp); + get_spawn_path(CDRECORDDVD, tmp, 1); + printf(CDRECORDDVD_NAME " found at: %s\n", tmp); get_spawn_path(CDDA2WAV, tmp, 1); printf("cdda2wav found at: %s\n", tmp); get_spawn_path(READCD, tmp, 1); diff -pur xcdroast-0.98alpha15.orig/src/xtools.c xcdroast-0.98alpha15/src/xtools.c --- xcdroast-0.98alpha15.orig/src/xtools.c 2006-11-12 08:37:47.000000000 +0100 +++ xcdroast-0.98alpha15/src/xtools.c 2006-11-12 08:39:45.000000000 +0100 @@ -2384,7 +2384,7 @@ struct stat buf; /* reroute a command through the wrapper */ /* cmd is one of "CDRECORD", "MKISOFS", "CDDA2WAV", "READCD" - or "CDRECORDPRODVD" */ + or "CDRECORDDVD" */ gchar *get_wrap_path(gchar *cmd, gchar *ret) { gchar tmp[MAXLINE]; @@ -2396,15 +2396,15 @@ gchar tmp[MAXLINE]; } /* reroute the cdrecord command through the wrapper */ -/* determine automatically if proDVD version is needed or not */ +/* determine automatically if (pro)DVD version is needed or not */ gchar *get_wrap_path_cdrecord(gchar *ret) { gchar tmp[MAXLINE]; /* use DVD version if installed and media type > 1GB */ - if (curset.isProDVD && curset.cdrtype > 1000) { + if (curset.isDVD && curset.cdrtype > 1000) { g_snprintf(tmp,MAXLINE,"%s/%s %s", sharedir, WRAPPER, - "CDRECORDPRODVD"); + "CDRECORDDVD"); } else { g_snprintf(tmp,MAXLINE,"%s/%s %s", sharedir, WRAPPER, "CDRECORD"); @@ -2419,7 +2419,7 @@ gchar tmp[MAXLINE]; gint get_gracetime() { - if (curset.isProDVD && curset.cdrtype > 1000) { + if (curset.isDVD && curset.cdrtype > 1000) { /* use 10 seconds for prodvd, because the keycheck can take a while... */ return 10; @@ -3530,7 +3530,7 @@ gint count; /* return whether we have a empty CD-R or DVD-R in the drive */ /* we are sure that there IS a medium there - but we dont know which type */ -/* check only if device is dvdwriter and we have prodvd installed */ +/* check only if device is dvdwriter and we have (pro)dvd installed */ gchar *return_media_type(gint devnr) { gchar drvflags[MAXLINE], drvmodes[MAXLINE]; @@ -3540,7 +3540,7 @@ gint isdvd,i; isdvd = 0; i = get_writerreaderdevs_index(devnr); - if (i >= 0 && curset.isProDVD && writerreaderdevs[i]->is_dvdwriter) { + if (i >= 0 && curset.isDVD && writerreaderdevs[i]->is_dvdwriter) { if (convert_devnr2busid(devnr,tmp) != 0) { g_error("non existing cdrom?"); }