$NetBSD: patch-ah,v 1.2 2000/02/03 16:01:15 abs Exp $ --- linuxdoom-1.10/i_sound.c.orig Mon Dec 22 19:57:15 1997 +++ linuxdoom-1.10/i_sound.c Thu Feb 3 02:56:08 2000 @@ -41,8 +41,11 @@ #include #include +#ifdef LINUX // Linux voxware output. #include +#endif + // Timer stuff. Experimental. #include @@ -482,8 +485,12 @@ #ifdef SNDSERV if (sndserver) { - fprintf(sndserver, "p%2.2x%2.2x%2.2x%2.2x\n", id, pitch, vol, sep); - fflush(sndserver); + if (fprintf(sndserver, "p%2.2x%2.2x%2.2x%2.2x\n", id, pitch, vol, sep) + <= 0 || fflush(sndserver) ) + { + fprintf(stderr, "Unable to write to sndserver - closing\n"); + sndserver = 0; + } } // warning: control reaches end of non-void function. return id; @@ -745,13 +752,25 @@ getenv("DOOMWADDIR"), sndserver_filename); else - sprintf(buffer, "%s", sndserver_filename); +#ifdef INSTALL_PREFIX + { + sprintf(buffer, INSTALL_PREFIX"/bin/%s", sndserver_filename); + /* sndserver won't find its wadfile if DOMMWADDIR isn't set - HF */ + if(!getenv("DOOMWADDIR")) + setenv("DOOMWADDIR", INSTALL_PREFIX"/share/doom", 1); + } +#else + strcpy(buffer, sndserver_filename); +#endif + // start sound process - if ( !access(buffer, X_OK) ) + if (!access(buffer, X_OK) ) { strcat(buffer, " -quiet"); sndserver = popen(buffer, "w"); + /* Don't die with SIGPIPE if the sndserver has problems */ + signal(SIGPIPE, (void (*)(int)) SIG_IGN); } else fprintf(stderr, "Could not start sound server [%s]\n", buffer);