[asterisk-commits] tilghman: branch 1.6.0 r244303 - in /branches/1.6.0: ./ apps/app_voicemail.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Feb 1 17:30:22 CST 2010


Author: tilghman
Date: Mon Feb  1 17:30:19 2010
New Revision: 244303

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=244303
Log:
Merged revisions 244243 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r244243 | tilghman | 2010-02-01 17:16:12 -0600 (Mon, 01 Feb 2010) | 18 lines
  
  Merged revisions 244242 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r244242 | tilghman | 2010-02-01 17:13:44 -0600 (Mon, 01 Feb 2010) | 11 lines
    
    Backup and restore original textfile, for prosthesis (gerund of prepend).
    
    Also, fix menuselect such that changing voicemail build options correctly
    causes rebuild.
    
    (closes issue #16415)
     Reported by: tomo1657
     Patches: 
           prepention.patch uploaded by tomo1657 (license 484)
           (with modifications by me to backport to 1.4)
  ........
................

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/apps/app_voicemail.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/apps/app_voicemail.c?view=diff&rev=244303&r1=244302&r2=244303
==============================================================================
--- branches/1.6.0/apps/app_voicemail.c (original)
+++ branches/1.6.0/apps/app_voicemail.c Mon Feb  1 17:30:19 2010
@@ -5508,15 +5508,17 @@
 		struct ast_flags config_flags = { CONFIG_FLAG_NOCACHE };
 		struct ast_config *msg_cfg;
 		const char *duration_str;
-		char msgfile[PATH_MAX], backup[PATH_MAX];
+		char msgfile[PATH_MAX], backup[PATH_MAX], backup_textfile[PATH_MAX];
 		char textfile[PATH_MAX];
 
 		/* Must always populate duration correctly */
 		make_file(msgfile, sizeof(msgfile), curdir, curmsg);
 		strcpy(textfile, msgfile);
 		strcpy(backup, msgfile);
+		strcpy(backup_textfile, msgfile);
 		strncat(textfile, ".txt", sizeof(textfile) - strlen(textfile) - 1);
 		strncat(backup, "-bak", sizeof(backup) - strlen(backup) - 1);
+		strncat(backup_textfile, "-bak.txt", sizeof(backup_textfile) - strlen(backup_textfile) - 1);
 
 		if ((msg_cfg = ast_config_load(textfile, config_flags)) && (duration_str = ast_variable_retrieve(msg_cfg, "message", "duration"))) {
 			*duration = atoi(duration_str);
@@ -5539,10 +5541,13 @@
 				}
 
 				/* Back up the original file, so we can retry the prepend */
-				if (already_recorded)
+				if (already_recorded) {
 					ast_filecopy(backup, msgfile, NULL);
-				else
+					copy(backup_textfile, textfile);
+				} else {
 					ast_filecopy(msgfile, backup, NULL);
+					copy(textfile,backup_textfile);
+				}
 				already_recorded = 1;
 
 				if (record_gain)
@@ -5590,10 +5595,12 @@
 
 		if (msg_cfg)
 			ast_config_destroy(msg_cfg);
-		if (already_recorded)
-			ast_filedelete(backup, NULL);
 		if (prepend_duration)
 			*duration = prepend_duration;
+		if (already_recorded) {
+			ast_filerename(backup, msgfile, NULL);
+			rename(backup_textfile, textfile);
+		}
 
 		if (cmd == 't' || cmd == 'S')
 			cmd = 0;
@@ -5691,6 +5698,8 @@
 #ifdef IMAP_STORAGE
 		int todircount = 0;
 		struct vm_state *dstvms;
+#else
+		char textfile[PATH_MAX], backup[PATH_MAX], backup_textfile[PATH_MAX];
 #endif
 		char username[70] = "";
 		char fn[PATH_MAX]; /* for playback of name greeting */
@@ -5911,7 +5920,21 @@
 					if (!res)
 						res = ast_play_and_wait(chan, "vm-saved"); */
 					res = ast_play_and_wait(chan, "vm-msgsaved");
-				}	
+				}
+#ifndef IMAP_STORAGE
+				/* Restore original message without prepended message if backup exists */
+				make_file(msgfile, sizeof(msgfile), dir, curmsg);
+				strcpy(textfile, msgfile);
+				strcpy(backup, msgfile);
+				strcpy(backup_textfile, msgfile);
+				strncat(textfile, ".txt", sizeof(textfile) - strlen(textfile) - 1);
+				strncat(backup, "-bak", sizeof(backup) - strlen(backup) - 1);
+				strncat(backup_textfile, "-bak.txt", sizeof(backup_textfile) - strlen(backup_textfile) - 1);
+				if (ast_fileexists(backup, NULL, NULL) > 0) {
+					ast_filerename(backup, msgfile, NULL);
+					rename(backup_textfile, textfile);
+				}
+#endif
 			}
 			/* Remove surrogate file */
 			DISPOSE(dir, curmsg);




More information about the asterisk-commits mailing list