tweak prior commit

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3826 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Anthony Minessale II
2004-09-23 16:39:33 +00:00
parent ab67420c37
commit 2a896e5d3c
2 changed files with 34 additions and 11 deletions

5
app.c
View File

@@ -437,13 +437,16 @@ int ast_control_streamfile(struct ast_channel *chan, char *file, char *fwd, char
if (chan) if (chan)
ast_stopstream(chan); ast_stopstream(chan);
if(file) { if(file) {
end = strchr(file,':'); if((end = strchr(file,':'))) {
if(!strcasecmp(end,":end")) { if(!strcasecmp(end,":end")) {
*end = '\0'; *end = '\0';
end++; end++;
} }
} }
}
for (;;) { for (;;) {
gettimeofday(&started,NULL); gettimeofday(&started,NULL);

View File

@@ -56,7 +56,7 @@ static int record_exec(struct ast_channel *chan, void *data)
char fil[256]; char fil[256];
char tmp[256]; char tmp[256];
char ext[10]; char ext[10];
char * vdata; /* Used so I don't have to typecast every use of *data */ char *vdata;
int i = 0; int i = 0;
int j = 0; int j = 0;
@@ -78,14 +78,31 @@ static int record_exec(struct ast_channel *chan, void *data)
int option_skip = 0; int option_skip = 0;
int option_noanswer = 0; int option_noanswer = 0;
int rfmt = 0; int rfmt = 0;
int flags;
char *end=NULL;
char *p=NULL;
vdata = data; /* explained above */
/* The next few lines of code parse out the filename and header from the input string */ /* The next few lines of code parse out the filename and header from the input string */
if (!vdata) { /* no data implies no filename or anything is present */ if (!data) { /* no data implies no filename or anything is present */
ast_log(LOG_WARNING, "Record requires an argument (filename)\n"); ast_log(LOG_WARNING, "Record requires an argument (filename)\n");
return -1; return -1;
} }
vdata = ast_strdupa(data);
p = vdata;
while(p && (p=strchr(p,':'))) {
end=p;
if(!strcasecmp(end,":end")) {
*end='\0';
end++;
break;
}
p++;
end=NULL;
}
for (; vdata[i] && (vdata[i] != ':') && (vdata[i] != '|'); i++ ) { for (; vdata[i] && (vdata[i] != ':') && (vdata[i] != '|'); i++ ) {
if ((vdata[i] == '%') && (vdata[i+1] == 'd')) { if ((vdata[i] == '%') && (vdata[i+1] == 'd')) {
@@ -205,7 +222,10 @@ static int record_exec(struct ast_channel *chan, void *data)
ast_dsp_set_threshold(sildet, 256); ast_dsp_set_threshold(sildet, 256);
} }
s = ast_writefile( tmp, ext, NULL, O_CREAT|O_TRUNC|O_WRONLY , 0, 0644);
flags = end ? O_CREAT|O_APPEND|O_WRONLY : O_CREAT|O_TRUNC|O_WRONLY;
s = ast_writefile( tmp, ext, NULL, flags , 0, 0644);
if (s) { if (s) {
if (maxduration > 0) if (maxduration > 0)