time_t ngx_http_parse_time() { enum { sw_start = 0, } state; state = sw_start; while () { switch (state) { case sw_start: if (ch == ' ') { ansi = 1; state = sw_month; } else if (ch == ',') state = sw_day_first_digit; break; case sw_day_first_digit: if (ch == ' ') break; if (ch >= '0' && ch <= '9') { day = ch - '0'; state = sw_day; break; } return NGX_ERROR; case sw_day: if (ansi && ch == ' ') { state = sw_hour_first_digit; break; } if (ch >= '0' && ch <= '9') { day = ch - '0'; state = ansi ? sw_space_before_hour : sw_before_month; break; } return NGX_ERROR; case sw_before_month: if (ch == ' ') { rfc822 = 1; } if (ch == '-') { rfc850 = 1; } case sw_space_before_hour: } } }