[svn-commits] mmichelson: branch mmichelson/imap_consistency_trunk r134255 - /team/mmichels...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Jul 29 17:10:34 CDT 2008


Author: mmichelson
Date: Tue Jul 29 17:10:33 2008
New Revision: 134255

URL: http://svn.digium.com/view/asterisk?view=rev&rev=134255
Log:
More conflict resolution. Still a lot needs to be
done with regards to retrieval function since greetings
can be retrieved from IMAP.


Modified:
    team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c

Modified: team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c?view=diff&rev=134255&r1=134254&r2=134255
==============================================================================
--- team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c (original)
+++ team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c Tue Jul 29 17:10:33 2008
@@ -150,12 +150,7 @@
 static void set_update(MAILSTREAM * stream);
 static void init_vm_state(struct vm_state *vms);
 static void copy_msgArray(struct vm_state *dst, struct vm_state *src);
-<<<<<<< .working
 static int save_body(BODY *body, struct vm_state *vms, char *section, char *format, char *altfile);
-static int make_gsm_file(char *dest, size_t len, char *imapuser, char *dir, int num, char *prefix);
-=======
-static int save_body(BODY *body, struct vm_state *vms, char *section, char *format);
->>>>>>> .merge-right.r134223
 static void get_mailbox_delimiter(MAILSTREAM *stream);
 static void mm_parsequota (MAILSTREAM *stream, unsigned char *msg, QUOTALIST *pquota);
 static void imap_mailbox_name(char *spec, size_t len, struct vm_state *vms, int box, int target);
@@ -459,13 +454,9 @@
 #define DELETE(a,b,c,d) (delete_file(a,b))
 #else
 #ifdef IMAP_STORAGE
-<<<<<<< .working
 #define DISPOSE(a,b) (imap_remove_file(a,b))
 #define STORE(a,b,c,d,e,f,g,h,i,j,k) (imap_store_file(a,b,c,d,e,f,g,h,i,j,k))
-=======
 #define RETRIEVE(a,b,c) imap_retrieve_file(a,b,c)
-#define DISPOSE(a,b) remove_file(a,b)
->>>>>>> .merge-right.r134223
 #define EXISTS(a,b,c,d) (ast_fileexists(c,NULL,d) > 0)
 #define RENAME(a,b,c,d,e,f,g,h) (rename_file(g,h));
 #define COPY(a,b,c,d,e,f,g,h) (copy_file(g,h));
@@ -4567,13 +4558,9 @@
 #else
 	char urgdir[PATH_MAX];
 #endif
-<<<<<<< .working
 	char txtfile[PATH_MAX];
 	char tmptxtfile[PATH_MAX];
-=======
 	struct vm_state *vms = NULL;
-	char txtfile[PATH_MAX], tmptxtfile[PATH_MAX];
->>>>>>> .merge-right.r134223
 	char callerid[256];
 	FILE *txt;
 	char date[256];
@@ -5937,16 +5924,7 @@
 static int forward_message(struct ast_channel *chan, char *context, struct vm_state *vms, struct ast_vm_user *sender, char *fmt, int is_new_message, signed char record_gain, int urgent)
 {
 #ifdef IMAP_STORAGE
-<<<<<<< .working
-	BODY *body;
-	char *header_content;
-	char *temp;
-	char todir[256], introtmp[256];
-	char tmpcmd[512];
-	int todircount = 0, two_part = -1;
-=======
 	int todircount=0;
->>>>>>> .merge-right.r134223
 	struct vm_state *dstvms;
 	char tmpdir[PATH_MAX];
 #endif
@@ -6135,55 +6113,6 @@
 			AST_LIST_TRAVERSE_SAFE_BEGIN(&extensions, vmtmp, list) {
 #ifdef IMAP_STORAGE
 				int attach_user_voicemail;
-<<<<<<< .working
-
-				/* Need to get message content */
-				ast_debug(3, "Before mail_fetchheaders, curmsg is: %d, imap messages is %lu\n", vms->curmsg, vms->msgArray[vms->curmsg]);
-				if (!vms->msgArray[vms->curmsg]) {
-					ast_log(AST_LOG_WARNING, "Trying to access unknown message\n");
-					return -1;
-				}
-
-				/* This will only work for new messages... */
-				header_content = mail_fetchheader (vms->mailstream, vms->msgArray[vms->curmsg]);
-
-				/* empty string means no valid header */
-				if (ast_strlen_zero(header_content)) {
-					ast_log(AST_LOG_ERROR, "Could not fetch header for message number %ld\n", vms->msgArray[vms->curmsg]);
-					return -1;
-				}
-				/* Get header info needed by sendmail */
-				if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Duration:", buf, sizeof(buf))))
-					duration = atoi(temp);
-				else
-					duration = 0;
-				
-				/* Attach only the first format */
-				if ((fmt = ast_strdupa(fmt))) {
-					stringp = fmt;
-					strsep(&stringp, "|");
-				} else {
-					ast_log(AST_LOG_ERROR, "audio format not set. Default to WAV\n");
-					fmt = "WAV";
-				}
-				if (!strcasecmp(fmt, "wav49"))
-					fmt = "WAV";
-				ast_debug(3, "**** format set to %s, vmfmts set to %s\n", fmt, vmfmts);
-				snprintf(todir, sizeof(todir), "%s%s/%s/tmp", VM_SPOOL_DIR, vmtmp->context, vmtmp->mailbox);
-				make_gsm_file(vms->fn, sizeof(vms->fn), vms->imapuser, todir, vms->curmsg, "msg");
-
-				ast_debug(3, "Before mail_fetchstructure, message number is %ld, filename is:%s\n", vms->msgArray[vms->curmsg], vms->fn);
-				mail_fetchstructure(vms->mailstream, vms->msgArray[vms->curmsg], &body);
-				/* should not assume "fmt" here! */
-				save_body(body, vms, "2", fmt, vms->fn);
-  
-				/* second attachment would be body if intro, otherwise null
-				 * two_part will be set to 0 if there are two parts, otherwise -1 */
-				snprintf(introtmp, sizeof(introtmp), "%stmp",vms->intro);
-				two_part = save_body(body,vms,"3",fmt, introtmp);
-
-=======
->>>>>>> .merge-right.r134223
 				/* If there are two parts to the existing 
 				 * message, merge them together into one message before sending */
 				if (two_part == 0) {
@@ -6202,13 +6131,8 @@
 					if (!dstvms->mailstream) {
 						ast_log(AST_LOG_ERROR, "IMAP mailstream for %s is NULL\n", vmtmp->mailbox);
 					} else {
-<<<<<<< .working
-						STORE(todir, vmtmp->mailbox, vmtmp->context, dstvms->curmsg, chan, vmtmp, fmt, duration, dstvms, tmptxtfile, urgent_str);
+						STORE(vmstmp.curdir, vmtmp->mailbox, vmtmp->context, dstvms->curmsg, chan, vmtmp, fmt, duration, dstvms, tmptxtfile, urgent_str);
 						run_externnotify(vmtmp->context, vmtmp->mailbox, urgent_str); 
-=======
-						STORE(vmstmp.curdir, vmtmp->mailbox, vmtmp->context, dstvms->curmsg, chan, vmtmp, fmt, duration, dstvms);
-						run_externnotify(vmtmp->context, vmtmp->mailbox); 
->>>>>>> .merge-right.r134223
 					}
 				} else {
 					ast_log(AST_LOG_ERROR, "Could not find state information for mailbox %s\n", vmtmp->mailbox);
@@ -6468,181 +6392,7 @@
 
 static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
 {
-<<<<<<< .working
-	BODY *body;
-	char *header_content;
-	char cid[256], cidN[256];
-	char context[256];
-	char origtime[32];
-	char duration[16];
-	char category[32];
-	char todir[PATH_MAX];
-=======
->>>>>>> .merge-right.r134223
-	int res = 0, two_part = -1;
-<<<<<<< .working
-	char *attachedfilefmt;
-	char *temp;
-	char buf[1024];
-	char flag[80];
-
-	vms->starting = 0; 
-	ast_debug(3,"Before mail_fetchheaders, curmsg is: %d, imap messages is %lu\n",vms->curmsg, vms->msgArray[vms->curmsg]);
-
-	if (!vms->msgArray[vms->curmsg]) {
-		ast_log(AST_LOG_WARNING, "Trying to access unknown message\n");
-		return -1;
-	}
-
-	/* This will only work for new messages... */
-	header_content = mail_fetchheader (vms->mailstream, vms->msgArray[vms->curmsg]);
-	/* empty string means no valid header */
-	if (ast_strlen_zero(header_content)) {
-		ast_log(AST_LOG_ERROR, "Could not fetch header for message number %ld\n", vms->msgArray[vms->curmsg]);
-		return -1;
-	}
-
-	/* Get Urgent flag from headers */
-	temp = get_header_by_tag(header_content, "X-Asterisk-VM-Flag:", buf, sizeof(buf));
-	ast_debug(3,"Voicemail FLAG set to %s\n",temp);
-
-	if (temp)
-		ast_copy_string(flag, temp, sizeof(flag));
-	else
-		flag[0] = '\0';
-
-	snprintf(todir, sizeof(todir), "%s%s/%s/tmp", VM_SPOOL_DIR, vmu->context, vmu->mailbox);
-	make_gsm_file(vms->fn, sizeof(vms->fn), vms->imapuser, todir, vms->curmsg, "msg");
-	make_gsm_file(vms->intro, sizeof(vms->intro), vms->imapuser, todir, vms->curmsg, "msgintro");
-
-	mail_fetchstructure (vms->mailstream,vms->msgArray[vms->curmsg],&body);
-	
-	/* We have the body, now we extract the file name of the first attachment. */
-	if (body->nested.part && body->nested.part->next && body->nested.part->next->body.parameter->value) {
-		attachedfilefmt = ast_strdupa(body->nested.part->next->body.parameter->value);
-	} else {
-		ast_log(AST_LOG_ERROR, "There is no file attached to this IMAP message.\n");
-		return -1;
-	}
-	
-	/* Find the format of the attached file */
-	strsep(&attachedfilefmt, ".");
-	if (!attachedfilefmt) {
-		ast_log(AST_LOG_ERROR, "File format could not be obtained from IMAP message attachment\n");
-		return -1;
-	}
-	save_body(body, vms, "2", attachedfilefmt, vms->fn); /* save first attachment */
-	two_part = save_body(body, vms, "3", attachedfilefmt, vms->intro); /* save forwarded intro if present */
-
-	adsi_message(chan, vms);
-	ast_debug(5,"**************  About to check urgent flag, set to:%s\n", flag);
-	if (!strcasecmp(chan->language, "he")) {	/* HEBREW FORMAT */
-		/*
-		 * The syntax in hebrew for counting the number of message is up side down
-		 * in comparison to english.
-		 */
-		if (!vms->curmsg) {
-			res = wait_file2(chan, vms, "vm-message");
-			res = wait_file2(chan, vms, "vm-first");    /* "First" */
-		} else if (vms->curmsg == vms->lastmsg) {
-			res = wait_file2(chan, vms, "vm-message");
-			res = wait_file2(chan, vms, "vm-last");     /* "last" */
-		} else {
-			res = wait_file2(chan, vms, "vm-message");  /* "message" */
-			if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
-				ast_log(LOG_DEBUG, "curmsg: %s\n", vms->curmsg);
-				ast_log(LOG_DEBUG, "lagmsg: %s\n", vms->lastmsg);
-				if (!res) {
-					res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, "f");
-				}
-			}
-		}
-	} else {
-		if (!vms->curmsg)
-			res = wait_file2(chan, vms, "vm-first");	/* "First" */
-		else if (vms->curmsg == vms->lastmsg)
-			res = wait_file2(chan, vms, "vm-last");		/* "last" */
-	}
-	/* Play the word urgent if we are listening to urgent messages */
-	if (!ast_strlen_zero(flag) && !strcmp(flag, "Urgent")) {
-		res = wait_file2(chan, vms, "vm-Urgent");	/* "urgent" */
-	}
-
-	if (!res) {
-		res = wait_file2(chan, vms, "vm-message");	/* "message" */
-		if (vms->curmsg && (vms->curmsg != vms->lastmsg)) {
-			if (!res)
-				res = ast_say_number(chan, vms->curmsg + 1, AST_DIGIT_ANY, chan->language, NULL);
-		}
-	}
-
-	/* Get info from headers!! */
-	if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Caller-ID-Name:", buf, sizeof(buf))))
-		ast_copy_string(cidN, temp, sizeof(cidN));
-	else
-		cidN[0] = '\0';
-
-	if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Caller-ID-Num:", buf, sizeof(buf))))
-		snprintf(cid, sizeof(cid), "\"%s\" <%s>", cidN, temp);
-	else
-		cid[0] = '\0';
-
-	if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Context:", buf, sizeof(buf))))
-		ast_copy_string(context, temp, sizeof(context)); 
-	else
-		context[0] = '\0';
-
-	if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Orig-time:", buf, sizeof(buf))))
-		ast_copy_string(origtime, temp, sizeof(origtime));
-	else
-		origtime[0] = '\0';
-
-	if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Duration:", buf, sizeof(buf))))
-		ast_copy_string(duration,temp, sizeof(duration));
-	else
-		duration[0] = '\0';
-	
-	if ((temp = get_header_by_tag(header_content, "X-Asterisk-VM-Category:", buf, sizeof(buf))))
-		ast_copy_string(category,temp, sizeof(category));
-	else
-		category[0] = '\0';
-
-	if (res == '1')
-		res = 0;
-
-	if ((!res) && !ast_strlen_zero(category)) {
-		res = play_message_category(chan, category);
-	}
-
-	if ((!res) && (ast_test_flag(vmu, VM_ENVELOPE)) && origtime[0] != '\0')
-		res = play_message_datetime(chan, vmu, origtime, "IMAP_STORAGE");
-	if ((!res) && (ast_test_flag(vmu, VM_SAYCID)) && cid[0] !='\0' && context[0] !='\0')
-		res = play_message_callerid(chan, vms, cid, context, 0);
-
-	if ((!res) && (ast_test_flag(vmu, VM_SAYDURATION)) && duration[0] != '\0')
-		res = play_message_duration(chan, vms, duration, vmu->saydurationm);
-
-	res = 0;
-
-	if (!res) {
-		vms->heard[vms->curmsg] = 1;
-		if (two_part == 0) {   /* If there are two parts */
-			wait_file(chan, vms, vms->fn);
-			res = wait_file(chan, vms, vms->intro);
-		} else {
-			res = wait_file(chan, vms, vms->fn);
-		}
-	}
-	DISPOSE(vms->curdir, vms->curmsg);
-	DELETE(0, 0, vms->fn);
-	return res;
-}
-#else
-static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
-{
 	int res = 0;
-=======
->>>>>>> .merge-right.r134223
 	char filename[256], *cid;
 	const char *origtime, *context, *category, *duration, *flag;
 	struct ast_config *msg_cfg;




More information about the svn-commits mailing list