receiver to their ear while entering DTMF.</para>
<argument name="n" required="true" />
</option>
+ <option name="c">
+ <para>Load the specified config file instead of voicemail.conf</para>
+ <argument name="filename" required="true" />
+ </option>
</optionlist>
<note><para>Only one of the <replaceable>f</replaceable>, <replaceable>l</replaceable>, or <replaceable>b</replaceable>
options may be specified. <emphasis>If more than one is specified</emphasis>, then Directory will act as
<description>
<para>This application will present the calling channel with a directory of extensions from which they can search
by name. The list of names and corresponding extensions is retrieved from the
- voicemail configuration file, <filename>voicemail.conf</filename>.</para>
+ voicemail configuration file, <filename>voicemail.conf</filename>, or from the specified filename.</para>
<para>This application will immediately exit if one of the following DTMF digits are
received and the extension to jump to exists:</para>
<para><literal>0</literal> - Jump to the 'o' extension, if it exists.</para>
OPT_PAUSE = (1 << 5),
OPT_NOANSWER = (1 << 6),
OPT_ALIAS = (1 << 7),
+ OPT_CONFIG_FILE = (1 << 8),
};
enum {
OPT_ARG_LASTNAME = 1,
OPT_ARG_EITHER = 2,
OPT_ARG_PAUSE = 3,
+ OPT_ARG_FILENAME = 4,
/* This *must* be the last value in this enum! */
- OPT_ARG_ARRAY_SIZE = 4,
+ OPT_ARG_ARRAY_SIZE = 5,
};
struct directory_item {
AST_APP_OPTION('m', OPT_SELECTFROMMENU),
AST_APP_OPTION('n', OPT_NOANSWER),
AST_APP_OPTION('a', OPT_ALIAS),
+ AST_APP_OPTION_ARG('c', OPT_CONFIG_FILE, OPT_ARG_FILENAME),
});
static int compare(const char *text, const char *template)
AST_THREADSTORAGE(commonbuf);
-static struct ast_config *realtime_directory(char *context)
+static struct ast_config *realtime_directory(char *context, const char *filename)
{
struct ast_config *cfg;
struct ast_config *rtdata = NULL;
}
/* Load flat file config. */
- cfg = ast_config_load(VOICEMAIL_CONFIG, config_flags);
+ cfg = ast_config_load(filename, config_flags);
if (!cfg) {
/* Loading config failed. */
ast_log(LOG_WARNING, "Loading config failed.\n");
return NULL;
} else if (cfg == CONFIG_STATUS_FILEINVALID) {
- ast_log(LOG_ERROR, "Config file %s is in an invalid format. Aborting.\n", VOICEMAIL_CONFIG);
+ ast_log(LOG_ERROR, "Config file %s is in an invalid format. Aborting.\n", filename);
return NULL;
}
if (args.options && ast_app_parse_options(directory_app_options, &flags, opts, args.options))
return -1;
- if (!(cfg = realtime_directory(args.vmcontext))) {
+ cfg = realtime_directory(args.vmcontext, S_OR(opts[OPT_ARG_FILENAME], VOICEMAIL_CONFIG));
+
+ if (!cfg) {
ast_log(LOG_ERROR, "Unable to read the configuration data!\n");
return -1;
}