Fix various compiler warnings (bug #322)
[asterisk/asterisk.git] / res / res_musiconhold.c
index 3dc78fb..5ca4f5f 100755 (executable)
@@ -40,7 +40,6 @@
 #endif
 #include <unistd.h>
 #include <sys/ioctl.h>
-#include <sys/wait.h>
 
 #include <pthread.h>
 
@@ -94,17 +93,10 @@ static struct mohclass *mohclasses;
 
 static ast_mutex_t moh_lock = AST_MUTEX_INITIALIZER;
 
+#define LOCAL_MPG_123 "/usr/local/bin/mpg123"
 #define MPG_123 "/usr/bin/mpg123"
 #define MAX_MP3S 256
 
-static void child_handler(int sig)
-{
-       int status;
-       if (wait4(-1,&status, WNOHANG, NULL)<1) 
-               if (option_debug)       
-                       ast_log(LOG_DEBUG, "Huh?  Child handler, but nobody there?\n");
-}
-
 static int spawn_mp3(struct mohclass *class)
 {
        int fds[2];
@@ -121,7 +113,7 @@ static int spawn_mp3(struct mohclass *class)
                ast_log(LOG_WARNING, "%s is not a valid directory\n", class->dir);
                return -1;
        }
-       argv[0] = MPG_123;
+       argv[0] = "mpg123";
        argv[1] = "-q";
        argv[2] = "-s";
        argv[3] = "--mono";
@@ -190,7 +182,12 @@ static int spawn_mp3(struct mohclass *class)
                        close(x);
                /* Child */
                chdir(class->dir);
+               /* Default install is /usr/local/bin */
+               execv(LOCAL_MPG_123, argv);
+               /* Many places have it in /usr/bin */
                execv(MPG_123, argv);
+               /* Check PATH as a last-ditch effort */
+               execvp("mpg123", argv);
                ast_log(LOG_WARNING, "Exec failed: %s\n", strerror(errno));
                exit(1);
        } else {
@@ -220,7 +217,6 @@ static void *monmp3thread(void *data)
        tv.tv_usec = 0;
        error_sec = 0;
        error_usec = 0;
-       signal(SIGCHLD, child_handler);
        for(;/* ever */;) {
                /* Spawn mp3 player if it's not there */
                if (class->srcfd < 0)  {