diff options
author | automerge <automerge@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-04 00:09:00 +0000 |
---|---|---|
committer | automerge <automerge@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-04 00:09:00 +0000 |
commit | 76e4cfd5d8deb0fb39b05150b0952b90285c160e (patch) | |
tree | 22cb26bb48e412d05e7374916d5e8aaa6539331b /apps | |
parent | 05d7c07a42cdf38a4f4ae50b3a3da249ff694180 (diff) |
automerge commit
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2-netsec@49387 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_voicemail.c | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index a8477724c..c92ee96a3 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -869,7 +869,12 @@ static int retrieve_file(char *dir, int msgnum) else ast_copy_string(fn, dir, sizeof(fn)); snprintf(full_fn, sizeof(full_fn), "%s.txt", fn); - f = fopen(full_fn, "w+"); + + if (!(f = fopen(full_fn, "w+"))) { + ast_log(LOG_WARNING, "Failed to open/create '%s'\n", full_fn); + goto yuck; + } + snprintf(full_fn, sizeof(full_fn), "%s.%s", fn, fmt); res = SQLAllocHandle(SQL_HANDLE_STMT, obj->con, &stmt); if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) { @@ -1938,7 +1943,15 @@ static int invent_message(struct ast_channel *chan, char *context, char *ext, in { int res; char fn[256]; + char dest[256]; + snprintf(fn, sizeof(fn), "%s%s/%s/greet", VM_SPOOL_DIR, context, ext); + + if (!(res = create_dirpath(dest,256,context,ext,"greet"))) { + ast_log(LOG_WARNING, "Failed to make directory(%s)\n", fn); + return -1; + } + RETRIEVE(fn, -1); if (ast_fileexists(fn, NULL, NULL) > 0) { res = ast_streamfile(chan, fn, chan->language); @@ -2386,6 +2399,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_ int ouseexten = 0; char date[256]; char dir[256], tmpdir[260]; + char dest[256]; char fn[256]; char prefile[256]=""; char tempfile[256]=""; @@ -2423,17 +2437,23 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_ pbx_builtin_setvar_helper(chan, "VMSTATUS", "FAILED"); return res; } - /* Setup pre-file if appropriate */ if (strcmp(vmu->context, "default")) snprintf(ext_context, sizeof(ext_context), "%s@%s", ext, vmu->context); else ast_copy_string(ext_context, vmu->context, sizeof(ext_context)); - if (ast_test_flag(options, OPT_BUSY_GREETING)) + if (ast_test_flag(options, OPT_BUSY_GREETING)) { + res = create_dirpath(dest, 256, vmu->context, ext, "busy"); snprintf(prefile, sizeof(prefile), "%s%s/%s/busy", VM_SPOOL_DIR, vmu->context, ext); - else if (ast_test_flag(options, OPT_UNAVAIL_GREETING)) + } else if (ast_test_flag(options, OPT_UNAVAIL_GREETING)) { + res = create_dirpath(dest, 256, vmu->context, ext, "unavail"); snprintf(prefile, sizeof(prefile), "%s%s/%s/unavail", VM_SPOOL_DIR, vmu->context, ext); + } snprintf(tempfile, sizeof(tempfile), "%s%s/%s/temp", VM_SPOOL_DIR, vmu->context, ext); + if (!(res = create_dirpath(dest, 256, vmu->context, ext, "temp"))) { + ast_log(LOG_WARNING, "Failed to make directory (%s)\n", tempfile); + return -1; + } RETRIEVE(tempfile, -1); if (ast_fileexists(tempfile, NULL, NULL) > 0) ast_copy_string(prefile, tempfile, sizeof(prefile)); @@ -3568,8 +3588,7 @@ static int forward_message(struct ast_channel *chan, char *context, char *dir, i } else { /* Forward VoiceMail */ long duration = 0; - - RETRIEVE(dir, curmsg); + RETRIEVE(dir, curmsg); cmd = vm_forwardoptions(chan, sender, dir, curmsg, vmfmts, context, record_gain, &duration); if (!cmd) { while (!res && vmtmp) { @@ -4784,11 +4803,13 @@ static int vm_options(struct ast_channel *chan, struct ast_vm_user *vmu, struct static int vm_tempgreeting(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, char *fmtc, signed char record_gain) { + int res; int cmd = 0; int retries = 0; int duration = 0; char prefile[256]=""; unsigned char buf[256]; + char dest[256]; int bytes=0; if (adsi_available(chan)) @@ -4801,6 +4822,10 @@ static int vm_tempgreeting(struct ast_channel *chan, struct ast_vm_user *vmu, st adsi_transmit_message(chan, buf, bytes, ADSI_MSG_DISPLAY); } snprintf(prefile,sizeof(prefile), "%s%s/%s/temp", VM_SPOOL_DIR, vmu->context, vms->username); + if (!(res = create_dirpath(dest, 256, vmu->context, vms->username, "temp"))) { + ast_log(LOG_WARNING, "Failed to create directory (%s).\n", prefile); + return -1; + } while((cmd >= 0) && (cmd != 't')) { if (cmd) retries = 0; |