[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