crond: code shrink
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 19 Aug 2007 18:49:21 +0000 (18:49 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 19 Aug 2007 18:49:21 +0000 (18:49 -0000)
miscutils/crond.c

index 3c73c733729af3f405e5a51e19720e466103f2c0..fa7b3da08359a5898d994e0e44f8271030c0cfec 100644 (file)
@@ -287,56 +287,19 @@ static void startlogger(void)
 }
 
 
-static const char *const DowAry[] = {
-       "sun",
-       "mon",
-       "tue",
-       "wed",
-       "thu",
-       "fri",
-       "sat",
-
-       "Sun",
-       "Mon",
-       "Tue",
-       "Wed",
-       "Thu",
-       "Fri",
-       "Sat",
-       NULL
-};
-
-static const char *const MonAry[] = {
-       "jan",
-       "feb",
-       "mar",
-       "apr",
-       "may",
-       "jun",
-       "jul",
-       "aug",
-       "sep",
-       "oct",
-       "nov",
-       "dec",
-
-       "Jan",
-       "Feb",
-       "Mar",
-       "Apr",
-       "May",
-       "Jun",
-       "Jul",
-       "Aug",
-       "Sep",
-       "Oct",
-       "Nov",
-       "Dec",
-       NULL
-};
+static const char DowAry[] ALIGN1 =
+       "sun""mon""tue""wed""thu""fri""sat"
+       /* "Sun""Mon""Tue""Wed""Thu""Fri""Sat" */
+;
+
+static const char MonAry[] ALIGN1 =
+       "jan""feb""mar""apr""may""jun""jul""aug""sep""oct""nov""dec"
+       /* "Jan""Feb""Mar""Apr""May""Jun""Jul""Aug""Sep""Oct""Nov""Dec" */
+;
 
 static char *ParseField(char *user, char *ary, int modvalue, int off,
-                                               const char *const *names, char *ptr)
+                               const char *names, char *ptr)
+/* 'names' is a pointer to a set of 3-char abbreviations */
 {
        char *base = ptr;
        int n1 = -1;
@@ -366,20 +329,19 @@ static char *ParseField(char *user, char *ary, int modvalue, int off,
                } else if (names) {
                        int i;
 
-                       for (i = 0; names[i]; ++i) {
-                               if (strncmp(ptr, names[i], strlen(names[i])) == 0) {
+                       for (i = 0; names[i]; i += 3) {
+                               /* was using strncmp before... */
+                               if (strncasecmp(ptr, &names[i], 3) == 0) {
+                                       ptr += 3;
+                                       if (n1 < 0) {
+                                               n1 = i / 3;
+                                       } else {
+                                               n2 = i / 3;
+                                       }
+                                       skip = 1;
                                        break;
                                }
                        }
-                       if (names[i]) {
-                               ptr += strlen(names[i]);
-                               if (n1 < 0) {
-                                       n1 = i;
-                               } else {
-                                       n2 = i;
-                               }
-                               skip = 1;
-                       }
                }
 
                /* handle optional range '-' */