[Goodies-commits] r4719 - xfburn/trunk/xfburn
David Mohr
squisher at xfce.org
Sat May 3 09:14:03 CEST 2008
Author: squisher
Date: 2008-05-03 07:14:03 +0000 (Sat, 03 May 2008)
New Revision: 4719
Modified:
xfburn/trunk/xfburn/xfburn-blank-dialog.c
xfburn/trunk/xfburn/xfburn-perform-burn.c
Log:
Adding error catching code to blanking
Modified: xfburn/trunk/xfburn/xfburn-blank-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-blank-dialog.c 2008-05-03 06:45:21 UTC (rev 4718)
+++ xfburn/trunk/xfburn/xfburn-blank-dialog.c 2008-05-03 07:14:03 UTC (rev 4719)
@@ -163,6 +163,16 @@
enum burn_disc_status disc_state;
struct burn_progress progress;
+ int ret;
+ gboolean error = FALSE;
+ int error_code;
+ char msg_text[BURN_MSGS_MESSAGE_LEN];
+ int os_errno;
+ char severity[80];
+ const char *final_status_text;
+ XfburnProgressDialogStatus final_status;
+ const char *final_message;
+
if (!burn_initialize ()) {
g_critical ("Unable to initialize libburn");
g_free (params);
@@ -206,6 +216,12 @@
goto cleanup;
}
+ /* set us up to receive fatal errors */
+ ret = burn_msgs_set_severities ("ALL", "NEVER", "libburn");
+
+ if (ret <= 0)
+ g_warning ("Failed to set libburn message severities, burn errors might not get detected!");
+
burn_disc_erase(drive, params->blank_type);
sleep(1);
@@ -220,8 +236,31 @@
usleep(500000);
}
- xfburn_progress_dialog_set_status_with_text (XFBURN_PROGRESS_DIALOG (dialog_progress), XFBURN_PROGRESS_DIALOG_STATUS_COMPLETED, _("Done"));
+ /* check the libburn message queue for errors */
+#ifdef DEBUG
+ while ((ret = burn_msgs_obtain ("ALL", &error_code, msg_text, &os_errno, severity)) == 1) {
+ g_warning ("[%s] %d: %s (%d)", severity, error_code, msg_text, os_errno);
+ }
+#endif
+ while ((ret = burn_msgs_obtain ("FAILURE", &error_code, msg_text, &os_errno, severity)) == 1) {
+ g_warning ("[%s] %d: %s (%d)", severity, error_code, msg_text, os_errno);
+ error = TRUE;
+ }
+ if (ret < 0)
+ g_warning ("Fatal error while trying to retrieve libburn message!");
+
+ if (G_LIKELY (!error)) {
+ final_message = _("Done");
+ final_status = XFBURN_PROGRESS_DIALOG_STATUS_COMPLETED;
+ } else {
+ final_status_text = _("Failure");
+ final_status = XFBURN_PROGRESS_DIALOG_STATUS_FAILED;
+ final_message = g_strdup_printf ("%s: %s", final_status_text, msg_text);
+ }
+
+ xfburn_progress_dialog_set_status_with_text (XFBURN_PROGRESS_DIALOG (dialog_progress), final_status, final_message);
+
cleanup:
burn_drive_release (drive, params->eject ? 1 : 0);
end:
Modified: xfburn/trunk/xfburn/xfburn-perform-burn.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-perform-burn.c 2008-05-03 06:45:21 UTC (rev 4718)
+++ xfburn/trunk/xfburn/xfburn-perform-burn.c 2008-05-03 07:14:03 UTC (rev 4719)
@@ -54,8 +54,8 @@
char media_name[80];
int media_no;
int factor;
+
int ret;
-
gboolean error = FALSE;
int error_code;
char msg_text[BURN_MSGS_MESSAGE_LEN];
@@ -160,6 +160,12 @@
xfburn_progress_dialog_set_buffer_bar_fraction (XFBURN_PROGRESS_DIALOG (dialog_progress), -1);
xfburn_progress_dialog_set_writing_speed (XFBURN_PROGRESS_DIALOG (dialog_progress), -1);
break;
+ case BURN_DRIVE_FORMATTING:
+ xfburn_progress_dialog_set_status_with_text (XFBURN_PROGRESS_DIALOG (dialog_progress),
+ XFBURN_PROGRESS_DIALOG_STATUS_RUNNING, _("Formatting..."));
+ xfburn_progress_dialog_set_buffer_bar_fraction (XFBURN_PROGRESS_DIALOG (dialog_progress), -1);
+ xfburn_progress_dialog_set_writing_speed (XFBURN_PROGRESS_DIALOG (dialog_progress), -1);
+ break;
default:
DBG ("Status %d not supported", status);
break;
@@ -168,15 +174,16 @@
}
/* check the libburn message queue for errors */
- while ((ret = burn_msgs_obtain ("FAILURE", &error_code, msg_text, &os_errno, severity)) == 1) {
- g_warning ("[%s] %d: %s (%d)", severity, error_code, msg_text, os_errno);
- error = TRUE;
- }
#ifdef DEBUG
while ((ret = burn_msgs_obtain ("ALL", &error_code, msg_text, &os_errno, severity)) == 1) {
g_warning ("[%s] %d: %s (%d)", severity, error_code, msg_text, os_errno);
}
#endif
+ while ((ret = burn_msgs_obtain ("FAILURE", &error_code, msg_text, &os_errno, severity)) == 1) {
+ g_warning ("[%s] %d: %s (%d)", severity, error_code, msg_text, os_errno);
+ error = TRUE;
+ }
+
if (ret < 0)
g_warning ("Fatal error while trying to retrieve libburn message!");
More information about the Goodies-commits
mailing list