[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