Fix bug causing convtime to loop forever on "w" (week) specification.
authorEric Allman <eric@ucbvax.Berkeley.EDU>
Wed, 20 Apr 1983 10:20:44 +0000 (02:20 -0800)
committerEric Allman <eric@ucbvax.Berkeley.EDU>
Wed, 20 Apr 1983 10:20:44 +0000 (02:20 -0800)
SCCS-mr: usr.sbin/sendmail/src/convtime.c 228
SCCS-mr: usr.sbin/sendmail/src/version.c 228
SCCS-vsn: usr.sbin/sendmail/src/convtime.c 3.4
SCCS-vsn: usr.sbin/sendmail/src/version.c 3.334

usr/src/usr.sbin/sendmail/src/convtime.c
usr/src/usr.sbin/sendmail/src/version.c

index e7d3688..a6a3d2a 100644 (file)
@@ -1,7 +1,7 @@
 # include <ctype.h>
 # include "useful.h"
 
 # include <ctype.h>
 # include "useful.h"
 
-SCCSID(@(#)convtime.c  3.3             %G%);
+SCCSID(@(#)convtime.c  3.4             %G%);
 
 /*
 **  CONVTIME -- convert time
 
 /*
 **  CONVTIME -- convert time
@@ -30,22 +30,21 @@ convtime(p)
        char *p;
 {
        register time_t t, r;
        char *p;
 {
        register time_t t, r;
+       register char c;
 
        r = 0;
        while (*p != '\0')
        {
                t = 0;
 
        r = 0;
        while (*p != '\0')
        {
                t = 0;
-               while (isdigit(*p))
-                       t = t * 10 + (*p++ - '0');
-               switch (*p++)
+               while (isdigit(c = *p++))
+                       t = t * 10 + (c - '0');
+               if (c == '\0')
+                       p--;
+               switch (c)
                {
                  case 'w':             /* weeks */
                        t *= 7;
 
                {
                  case 'w':             /* weeks */
                        t *= 7;
 
-                 case '\0':
-                       p--;
-                       /* fall through... */
-
                  case 'd':             /* days */
                  default:
                        t *= 24;
                  case 'd':             /* days */
                  default:
                        t *= 24;
index f5bb174..1871334 100644 (file)
@@ -1,5 +1,5 @@
 # ifndef lint
 # ifndef lint
-static char    SccsId[] = "@(#)SendMail version 3.333 of %G%";
+static char    SccsId[] = "@(#)SendMail version 3.334 of %G%";
 # endif lint
 
 # endif lint
 
-char   Version[] = "3.333";
+char   Version[] = "3.334";