ext/raw1394/gstdv1394src.c: distinguish between device not found and could not open...
authorThomas Vander Stichele <thomas@apestaart.org>
Wed, 5 Apr 2006 12:41:14 +0000 (12:41 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Wed, 5 Apr 2006 12:41:14 +0000 (12:41 +0000)
Original commit message from CVS:

* ext/raw1394/gstdv1394src.c:
distinguish between device not found and could not open for
reading

ChangeLog
ext/raw1394/gstdv1394src.c

index d2ab7d4..89ea9e3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/raw1394/gstdv1394src.c:
+         distinguish between device not found and could not open for
+         reading
+
 2006-04-03  Thomas Vander Stichele  <thomas at apestaart dot org>
 
        * Makefile.am:
index 4e1e2e5..d3942d6 100644 (file)
@@ -667,8 +667,14 @@ gst_dv1394src_start (GstBaseSrc * bsrc)
 
   src->handle = raw1394_new_handle ();
 
-  if (!src->handle)
-    goto no_handle;
+  if (!src->handle) {
+    if (errno == EACCES)
+      goto permission_denied;
+    else if (errno == ENOENT)
+      goto not_found;
+    else
+      goto no_handle;
+  }
 
   raw1394_set_userdata (src->handle, src);
 
@@ -708,10 +714,20 @@ socket_pair:
         GST_ERROR_SYSTEM);
     return FALSE;
   }
+permission_denied:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), GST_ERROR_SYSTEM);
+    return FALSE;
+  }
+not_found:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL), GST_ERROR_SYSTEM);
+    return FALSE;
+  }
 no_handle:
   {
-    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL),
-        ("can't get raw1394 handle"));
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
+        ("can't get raw1394 handle (%s)", g_strerror (errno)));
     return FALSE;
   }
 no_ports: