Taken from FreeBSD Ports. diff -Nur esound-0.2.41.orig/esddsp.c esound-0.2.41/esddsp.c --- esound-0.2.41.orig/esddsp.c 2008-11-19 05:35:19 +0900 +++ esound-0.2.41/esddsp.c 2009-05-20 00:23:52 +0900 @@ -70,6 +70,7 @@ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__bsdi__) typedef unsigned long request_t; +typedef off_t off64_t; #else typedef int request_t; #endif @@ -228,16 +229,19 @@ const char *pathname, int flags, ...) { va_list args; - mode_t mode; + mode_t mode = 0; dsp_init (); - va_start (args, flags); - if (sizeof (mode_t) < sizeof (int)) + if ((flags & O_CREAT) != 0) + { + va_start (args, flags); + if (sizeof (mode_t) < sizeof (int)) mode = va_arg (args, int); - else + else mode = va_arg (args, mode_t); - va_end (args); + va_end (args); + } if (!strcmp (pathname, "/dev/dsp")) { @@ -268,7 +272,7 @@ { static int (*func) (const char *, int, mode_t) = NULL; va_list args; - mode_t mode; + mode_t mode = 0; DPRINTF ("open\n"); @@ -283,9 +287,12 @@ } } - va_start (args, flags); - mode = va_arg (args, mode_t); - va_end (args); + if ((flags & O_CREAT) != 0) + { + va_start (args, flags); + mode = va_arg (args, mode_t); + va_end (args); + } return open_wrapper(func, pathname, flags, mode); } @@ -295,7 +302,7 @@ { static int (*func) (const char *, int, mode_t) = NULL; va_list args; - mode_t mode; + mode_t mode = 0; DPRINTF ("open64\n"); @@ -310,9 +317,12 @@ } } - va_start (args, flags); - mode = va_arg (args, mode_t); - va_end (args); + if ((flags & O_CREAT) != 0) + { + va_start (args, flags); + mode = va_arg (args, mode_t); + va_end (args); + } return open_wrapper(func, pathname, flags, mode); } diff -Nur esound-0.2.41.orig/esddsp.in esound-0.2.41/esddsp.in --- esound-0.2.41.orig/esddsp.in 2008-11-19 02:33:39 +0900 +++ esound-0.2.41/esddsp.in 2009-05-20 00:24:01 +0900 @@ -106,7 +106,7 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ -LD_PRELOAD="libesddsp.so.@ESD_MAJOR_VERSION@ libesd.so.@ESD_MAJOR_VERSION@ $LD_PRELOAD" +LD_PRELOAD="libesddsp.so libesd.so $LD_PRELOAD" export LD_PRELOAD # invoke the program with the args given