diff options
author | Thomas Vander Stichele <thomas@apestaart.org> | 2002-12-03 09:39:52 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2002-12-03 09:39:52 +0000 |
commit | a03ceeadcbf4c99be28f9daa7c667ff1ce07a6af (patch) | |
tree | 7e039df85d1e0203cae9aba0ff13b83f09547203 /sys | |
parent | 2c758796f5edd377fc7918ceccbab8f3bee433c5 (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.c | 34 |
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); |