aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-31 19:37:26 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-31 19:37:26 +0000
commit256c086f862bb5397e7bbdfe77b882614b2a5534 (patch)
tree9f2bf6659b160a18795e681a211d997082b46b55 /apps
parent8be3958fd483c8238acbb5248444f2d51a7ec57f (diff)
Get app_ices working again
(closes issue #12981) Reported by: dlogan Patches: 20080709__app_ices_v2_update_trunk.diff uploaded by bbryant (license 36) 20080709__app_ices_v2_update_14.diff uploaded by bbryant (license 36) Tested by: bbryant git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@134915 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_ices.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/apps/app_ices.c b/apps/app_ices.c
index 8c6d5e7e5..01f9675de 100644
--- a/apps/app_ices.c
+++ b/apps/app_ices.c
@@ -48,8 +48,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/translate.h"
#include "asterisk/options.h"
-#define ICES "/usr/bin/ices"
-#define LOCAL_ICES "/usr/local/bin/ices"
+#define path_BIN "/usr/bin/"
+#define path_LOCAL "/usr/local/bin/"
static char *app = "ICES";
@@ -58,8 +58,7 @@ static char *synopsis = "Encode and stream using 'ices'";
static char *descrip =
" ICES(config.xml) Streams to an icecast server using ices\n"
"(available separately). A configuration file must be supplied\n"
-"for ices (see examples/asterisk-ices.conf). \n";
-
+"for ices (see contrib/asterisk-ices.xml). \n";
static int icesencode(char *filename, int fd)
{
@@ -89,13 +88,24 @@ static int icesencode(char *filename, int fd)
if ((x != STDIN_FILENO) && (x != STDOUT_FILENO))
close(x);
}
- /* Most commonly installed in /usr/local/bin */
- execl(ICES, "ices", filename, (char *)NULL);
- /* But many places has it in /usr/bin */
- execl(LOCAL_ICES, "ices", filename, (char *)NULL);
- /* As a last-ditch effort, try to use PATH */
- execlp("ices", "ices", filename, (char *)NULL);
- ast_log(LOG_WARNING, "Execute of ices failed\n");
+
+ /* Most commonly installed in /usr/local/bin
+ * But many places has it in /usr/bin
+ * As a last-ditch effort, try to use PATH
+ */
+ execl(path_LOCAL "ices2", "ices", filename, NULL);
+ execl(path_BIN "ices2", "ices", filename, NULL);
+ execlp("ices2", "ices", filename, NULL);
+
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Couldn't find ices version 2, attempting to use ices version 1.");
+
+ execl(path_LOCAL "ices", "ices", filename, NULL);
+ execl(path_BIN "ices", "ices", filename, NULL);
+ execlp("ices", "ices", filename, NULL);
+
+ ast_log(LOG_WARNING, "Execute of ices failed, could not be found.\n");
+ close(fd);
_exit(0);
}
@@ -161,7 +171,6 @@ static int ices_exec(struct ast_channel *chan, void *data)
if (c)
*c = '\0';
res = icesencode(filename, fds[0]);
- close(fds[0]);
if (res >= 0) {
pid = res;
for (;;) {
@@ -192,6 +201,7 @@ static int ices_exec(struct ast_channel *chan, void *data)
ast_frfree(f);
}
}
+ close(fds[0]);
close(fds[1]);
if (pid > -1)