[asterisk-commits] branch 1.2 - r7272 /branches/1.2/apps/app_voicemail.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Dec 1 18:39:00 CST 2005


Author: kpfleming
Date: Thu Dec  1 18:39:00 2005
New Revision: 7272

URL: http://svn.digium.com/view/asterisk?rev=7272&view=rev
Log:
properly handle password changes when mailbox is last line of config file and not followed by a newline (issue #5870)
reformat password changing code to conform to coding guidelines (issue #5870)

Modified:
    branches/1.2/apps/app_voicemail.c

Modified: branches/1.2/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/apps/app_voicemail.c?rev=7272&r1=7271&r2=7272&view=diff
==============================================================================
--- branches/1.2/apps/app_voicemail.c (original)
+++ branches/1.2/apps/app_voicemail.c Thu Dec  1 18:39:00 2005
@@ -660,91 +660,89 @@
 	}
 
 	while (!feof(configin)) {
+		char *user = NULL, *pass = NULL, *rest = NULL, *comment = NULL, *tmpctx = NULL, *tmpctxend = NULL;
+
 		/* Read in the line */
 		fgets(inbuf, sizeof(inbuf), configin);
 		linenum++;
-		if (!feof(configin)) {
-			char *user = NULL, *pass = NULL, *rest = NULL,
-				*comment = NULL, *tmpctx = NULL, *tmpctxend = NULL;
-			
-			if (ast_strlen_zero(inbuf)) {
-				fprintf(configout, "\n");
-				continue;
-			}
-
-			/* Make a backup of it */
-			ast_copy_string(orig, inbuf, sizeof(orig));
-			
-			/*
-			  Read the file line by line, split each line into a comment and command section
-			  only parse the command portion of the line
-			*/
-			if (inbuf[strlen(inbuf) - 1] == '\n')
-				inbuf[strlen(inbuf) - 1] = '\0';
-
-			if ((comment = strchr(inbuf, ';')))
-				*comment++ = '\0'; /* Now inbuf is terminated just before the comment */
-
-			if (ast_strlen_zero(inbuf)) {
+
+		if (ast_strlen_zero(inbuf)) {
+			fprintf(configout, "\n");
+			continue;
+		}
+
+		/* Make a backup of it */
+		ast_copy_string(orig, inbuf, sizeof(orig));
+
+		/*
+		  Read the file line by line, split each line into a comment and command section
+		  only parse the command portion of the line
+		*/
+		if (inbuf[strlen(inbuf) - 1] == '\n')
+			inbuf[strlen(inbuf) - 1] = '\0';
+
+		if ((comment = strchr(inbuf, ';')))
+			*comment++ = '\0'; /* Now inbuf is terminated just before the comment */
+
+		if (ast_strlen_zero(inbuf)) {
+			fprintf(configout, "%s", orig);
+			continue;
+		}
+
+		/* Check for a context, first '[' to first ']' */
+		if ((tmpctx = strchr(inbuf, '['))) {
+			tmpctxend = strchr(tmpctx, ']');
+			if (tmpctxend) {
+				/* Valid context */
+				ast_copy_string(currcontext, tmpctx + 1, tmpctxend - tmpctx);
 				fprintf(configout, "%s", orig);
 				continue;
 			}
-			
-			/* Check for a context, first '[' to first ']' */
-			if ((tmpctx = strchr(inbuf, '['))) {
-				tmpctxend = strchr(tmpctx, ']');
-				if (tmpctxend) {
-					/* Valid context */
-					ast_copy_string(currcontext, tmpctx + 1, tmpctxend - tmpctx);
-					fprintf(configout, "%s", orig);
-					continue;
-				}
-			}
-				
-			/* This isn't a context line, check for MBX => PSWD... */
-			user = inbuf;
-			if ((pass = strchr(user, '='))) {
-				/* We have a line in the form of aaaaa=aaaaaa */
+		}
+
+		/* This isn't a context line, check for MBX => PSWD... */
+		user = inbuf;
+		if ((pass = strchr(user, '='))) {
+			/* We have a line in the form of aaaaa=aaaaaa */
+			*pass++ = '\0';
+
+			user = ast_strip(user);
+
+			if (*pass == '>')
 				*pass++ = '\0';
-				
-				user = ast_strip(user);
-
-				if (*pass == '>')
-					*pass++ = '\0';
-
-				pass = ast_skip_blanks(pass);
-				
-				/* 
-				   Since no whitespace allowed in fields, or more correctly white space
-				   inside the fields is there for a purpose, we can just terminate pass
-				   at the comma or EOL whichever comes first.
-				*/
-				if ((rest = strchr(pass, ',')))
-					*rest++ = '\0';
+
+			pass = ast_skip_blanks(pass);
+
+			/* 
+			   Since no whitespace allowed in fields, or more correctly white space
+			   inside the fields is there for a purpose, we can just terminate pass
+			   at the comma or EOL whichever comes first.
+			*/
+			if ((rest = strchr(pass, ',')))
+				*rest++ = '\0';
+		} else {
+			user = NULL;
+		}			
+
+		/* Compare user, pass AND context */
+		if (!ast_strlen_zero(user) && !strcmp(user, vmu->mailbox) &&
+		    !ast_strlen_zero(pass) && !strcmp(pass, vmu->password) &&
+		    !strcasecmp(currcontext, vmu->context)) {
+			/* This is the line */
+			if (rest) {
+				fprintf(configout, "%s => %s,%s", user, newpassword, rest);
 			} else {
-				user = NULL;
-			}			
-			
-			/* Compare user, pass AND context */
-			if (!ast_strlen_zero(user) && !strcmp(user, vmu->mailbox) &&
-			    !ast_strlen_zero(pass) && !strcmp(pass, vmu->password) &&
-			    !strcasecmp(currcontext, vmu->context)) {
-				/* This is the line */
-				if (rest) {
-					fprintf(configout, "%s => %s,%s", user, newpassword, rest);
-				} else {
-					fprintf(configout, "%s => %s", user, newpassword);
-				}
-				/* If there was a comment on the line print it out */
-				if (comment) {
-					fprintf(configout, ";%s\n", comment);
-				} else {
-					fprintf(configout, "\n");
-				}
+				fprintf(configout, "%s => %s", user, newpassword);
+			}
+			/* If there was a comment on the line print it out */
+			if (comment) {
+				fprintf(configout, ";%s\n", comment);
 			} else {
-				/* Put it back like it was */
-				fprintf(configout, "%s", orig);
-			}
+				fprintf(configout, "\n");
+			}
+		} else {
+			/* Put it back like it was */
+			fprintf(configout, "%s", orig);
 		}
 	}
 	fclose(configin);



More information about the asterisk-commits mailing list