some error checking added into g and a option
authorMatt O'Gorman <mogorman@digium.com>
Thu, 12 Jan 2006 19:45:38 +0000 (19:45 +0000)
committerMatt O'Gorman <mogorman@digium.com>
Thu, 12 Jan 2006 19:45:38 +0000 (19:45 +0000)
if there is no parens.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8030 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 71112c5..690f8cd 100644 (file)
@@ -340,8 +340,7 @@ static char *descrip_vmain =
 "    g(#) - Use the specified amount of gain when recording a voicemail\n"
 "           message. The units are whole-number decibels (dB).\n"
 "    s    - Skip checking the passcode for the mailbox.\n"
-"    a(#) - Automatically play messages in the specified folder.\n"
-"           Defaults to INBOX";
+"    a(#) - Skip folder prompt and go directly to folder specified, defaults to 1\n";
 
 static char *synopsis_vm_box_exists =
 "Check to see if Voicemail mailbox exists";
@@ -5065,26 +5064,30 @@ static int vm_execmain(struct ast_channel *chan, void *data)
                        }
                        if (ast_test_flag(&flags, OPT_RECORDGAIN)) {
                                int gain;
-
-                               if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
-                                       ast_log(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
-                                       LOCAL_USER_REMOVE(u);
-                                       return -1;
+                               if(opts[OPT_ARG_PLAYFOLDER]) {
+                                       if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
+                                               ast_log(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
+                                               LOCAL_USER_REMOVE(u);
+                                               return -1;
+                                       } else {
+                                               record_gain = (signed char) gain;
+                                       }
                                } else {
-                                       record_gain = (signed char) gain;
+                                       ast_log(LOG_WARNING, "Invalid Gain level set with option g\n");
                                }
                        }
                        if (ast_test_flag(&flags, OPT_AUTOPLAY) ) {
                                play_auto = 1;
-                               if (sscanf(opts[OPT_ARG_PLAYFOLDER], "%d", &play_folder) != 1) {
-                                       ast_log(LOG_WARNING, "Invalid value '%s' provided for folder autoplay option\n", opts[OPT_ARG_PLAYFOLDER]);
-                                       LOCAL_USER_REMOVE(u);
-                                       return -1;
-                               }
-                               else if ( play_folder > 9 || play_folder < 0) {
+                               if(opts[OPT_ARG_PLAYFOLDER]) {
+                                       if (sscanf(opts[OPT_ARG_PLAYFOLDER], "%d", &play_folder) != 1) {
+                                               ast_log(LOG_WARNING, "Invalid value '%s' provided for folder autoplay option\n", opts[OPT_ARG_PLAYFOLDER]);
+                                       }
+                               } else {
+                                       ast_log(LOG_WARNING, "Invalid folder set with option a\n");
+                               }       
+                               if ( play_folder > 9 || play_folder < 0) {
                                        ast_log(LOG_WARNING, "Invalid value '%d' provided for folder autoplay option\n", play_folder);
-                                       LOCAL_USER_REMOVE(u);
-                                       return -1;
+                                       play_folder = 0;
                                }
                        }
                } else {