--- /dev/null
+--- xine-lib-1-rc3a/src/audio_out/audio_oss_out.c.orig 2003-12-14 23:13:22.000000000 +0100
++++ xine-lib-1-rc3a/src/audio_out/audio_oss_out.c 2003-12-31 02:07:58.260704624 +0100
+@@ -57,10 +57,8 @@
+ # include <sys/soundcard.h>
+ # endif
+ #else
+-# if defined(__linux__)
+-# include <linux/config.h> /* Check for DEVFS */
+-# endif
+ # include <sys/soundcard.h>
++# include <sys/stat.h>
+ #endif
+ #include <sys/ioctl.h>
+ #include <inttypes.h>
+@@ -108,11 +106,8 @@
+ #define OSS_SYNC_SOFTSYNC 3
+ #define OSS_SYNC_PROBEBUFFER 4
+
+-#ifdef CONFIG_DEVFS_FS
+-#define DSP_TEMPLATE "/dev/sound/dsp%d"
+-#else
+-#define DSP_TEMPLATE "/dev/dsp%d"
+-#endif
++#define DSP_TEMPLATE_DEVFS "/dev/sound/dsp%d"
++#define DSP_TEMPLATE_DEV "/dev/dsp%d"
+
+ typedef struct oss_driver_s {
+
+@@ -684,17 +679,15 @@
+ config_values_t *config = class->config;
+ oss_driver_t *this;
+ int caps;
+-#ifdef CONFIG_DEVFS_FS
+ char devname[] = "/dev/sound/dsp\0\0\0";
+-#else
+- char devname[] = "/dev/dsp\0\0\0";
+-#endif
+ int best_rate;
+ int rate ;
+ int devnum;
+ int audio_fd;
+ int num_channels, bits, status, arg;
+ static char *sync_methods[] = {"auto", "getodelay", "getoptr", "softsync", "probebuffer", NULL};
++ struct stat statbuf;
++ int havedevfs = 0;
+
+ this = (oss_driver_t *) xine_xmalloc (sizeof (oss_driver_t));
+
+@@ -709,8 +702,11 @@
+ _("/dev/dsp# device to use for oss output, -1 => auto_detect"),
+ NULL, 10, NULL, NULL);
+
++ if (!stat("/dev/sound", &statbuf) && (statbuf.st_mode & S_IFDIR))
++ havedevfs = 1;
++
+ if (devnum >= 0) {
+- sprintf (this->audio_dev, DSP_TEMPLATE, devnum);
++ sprintf (this->audio_dev, (havedevfs ? DSP_TEMPLATE_DEVFS : DSP_TEMPLATE_DEV), devnum);
+ devnum = 30; /* skip while loop */
+ } else {
+ devnum = 0;
+@@ -738,7 +734,7 @@
+ this->audio_dev, strerror(errno));
+ */
+
+- sprintf(devname, DSP_TEMPLATE, devnum);
++ sprintf(devname, (havedevfs ? DSP_TEMPLATE_DEVFS : DSP_TEMPLATE_DEV), devnum);
+ devnum++;
+ }
+