Improve documentation of app_record (bug #942)
[asterisk/asterisk.git] / apps / app_record.c
index cc0e41e..732922e 100755 (executable)
@@ -30,10 +30,13 @@ static char *app = "Record";
 static char *synopsis = "Record to a file";
 
 static char *descrip = 
-"  Record(filename:extension|silence): Records from the  channel into a given\n"
-"filename. If the file exists it will be overwritten. The 'extension'\n"
-"is the extension of the file type  to  be  recorded (wav, gsm, etc).\n"
-"'silence' is the number of seconds of silence to allow before returning.\n"
+"  Record(filename:extension|silence): Records from the channel into a given\n"
+"filename. If the file exists it will be overwritten. \n"
+"- 'extension' is the extension of the file type to be recorded (wav, gsm, etc).\n"
+"- 'silence' is the number of seconds of silence to allow before returning.\n\n"
+"If filename contains '%d', these characters will be replaced with a number\n"
+"incremented by one each time the file is recorded. \n\n"
+"Extensions: g723, g729, gsm, h263, ulaw, alaw, vox, wav, WAV\n\n"
 "Returns -1 when the user hangs up.\n";
 
 STANDARD_LOCAL_USER;
@@ -56,14 +59,14 @@ static int record_exec(struct ast_channel *chan, void *data)
        struct localuser *u;
        struct ast_frame *f = NULL;
        
-       struct ast_dsp *sildet;         /* silence detector dsp */
+       struct ast_dsp *sildet = NULL;          /* silence detector dsp */
        int totalsilence = 0;
        int dspsilence = 0;
        int silence = 0;                /* amount of silence to allow */
        int gotsilence = 0;             /* did we timeout for silence? */
        char silencestr[5];
        int k = 0;
-       int rfmt;
+       int rfmt = 0;
 
        vdata = data; /* explained above */
 
@@ -222,7 +225,8 @@ static int record_exec(struct ast_channel *chan, void *data)
                res = ast_set_read_format(chan, rfmt);
                if (res)
                        ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
-               ast_dsp_free(sildet);
+               if (sildet)
+                       ast_dsp_free(sildet);
        }
        return res;
 }