Преглед на файлове

Cron fixes (#1884)

* Fix cron values >32

* Fix crontab description items order
Yury Popov преди 7 години
родител
ревизия
92cfbb45c3
променени са 1 файла, в които са добавени 3 реда и са изтрити 3 реда
  1. 3 3
      app/modules/cron.c

+ 3 - 3
app/modules/cron.c

@@ -53,7 +53,7 @@ static uint64_t lcron_parsepart(lua_State *L, char *str, char **end, uint8_t min
       if (val < min || val > max) {
         return luaL_error(L, "invalid spec (val %d out of range %d..%d)", val, min, max);
       }
-      res |= (1 << (val - min));
+      res |= (uint64_t)1 << (val - min);
       if (**end != ',') break;
       str = *end + 1;
     }
@@ -67,11 +67,11 @@ static int lcron_parsedesc(lua_State *L, char *str, struct cronent_desc *desc) {
   if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str);
   desc->hour = lcron_parsepart(L, s + 1, &s, 0, 23);
   if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str);
-  desc->dow = lcron_parsepart(L, s + 1, &s, 0, 6);
-  if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str);
   desc->dom = lcron_parsepart(L, s + 1, &s, 1, 31);
   if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str);
   desc->mon = lcron_parsepart(L, s + 1, &s, 1, 12);
+  if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str);
+  desc->dow = lcron_parsepart(L, s + 1, &s, 0, 6);
   if (*s != 0) return luaL_error(L, "invalid spec (trailing @%d)", s - str);
   return 0;
 }