summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2002-12-03 09:39:52 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2002-12-03 09:39:52 +0000
commita03ceeadcbf4c99be28f9daa7c667ff1ce07a6af (patch)
tree7e039df85d1e0203cae9aba0ff13b83f09547203 /sys
parent2c758796f5edd377fc7918ceccbab8f3bee433c5 (diff)
more useful error messages
Original commit message from CVS: more useful error messages - how about i18n ? - is this really the best way to pass user-visible error messages ?
Diffstat (limited to 'sys')
-rw-r--r--sys/oss/gstosssink.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index 66e5b61b..f8abd1c9 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -28,6 +28,7 @@
#include <sys/soundcard.h>
#include <unistd.h>
#include <errno.h>
+#include <string.h>
#include <gstosssink.h>
@@ -810,6 +811,7 @@ gst_osssink_open_audio (GstOssSink *sink)
GST_INFO (GST_CAT_PLUGIN_INFO, "osssink: attempting to open sound device");
/* first try to open the sound card */
+ /* FIXME: this code is dubious, why do we need to open and close this ?*/
sink->fd = open (sink->device, O_WRONLY | O_NONBLOCK);
if (errno == EBUSY) {
g_warning ("osssink: unable to open the sound device (in use ?)\n");
@@ -822,10 +824,38 @@ gst_osssink_open_audio (GstOssSink *sink)
sink->fd = open (sink->device, O_WRONLY);
if (sink->fd < 0) {
- g_warning ("osssink: unable to open the sound device (errno=%d)\n", errno);
+ switch (errno) {
+ case EISDIR:
+ gst_element_error (GST_ELEMENT (sink),
+ "osssink: Device %s is a directory",
+ sink->device);
+ break;
+ case EACCES:
+ case ETXTBSY:
+ gst_element_error (GST_ELEMENT (sink),
+ "osssink: Cannot access %s, check permissions",
+ sink->device);
+ break;
+ case ENXIO:
+ case ENODEV:
+ case ENOENT:
+ gst_element_error (GST_ELEMENT (sink),
+ "osssink: Cannot access %s, does it exist ?",
+ sink->device);
+ break;
+ case EROFS:
+ gst_element_error (GST_ELEMENT (sink),
+ "osssink: Cannot access %s, read-only filesystem ?",
+ sink->device);
+ default:
+ /* FIXME: strerror is not threadsafe */
+ gst_element_error (GST_ELEMENT (sink),
+ "osssink: Cannot open %s, generic error: %s",
+ sink->device, strerror (errno));
+ break;
+ }
return FALSE;
}
-
/* we have it, set the default parameters and go have fun */
/* set card state */
ioctl (sink->fd, SNDCTL_DSP_GETCAPS, &caps);