=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/date.y,v retrieving revision 1.4 retrieving revision 1.5 diff -c -r1.4 -r1.5 *** src/usr.bin/rcs/date.y 2006/05/17 20:38:05 1.4 --- src/usr.bin/rcs/date.y 2007/01/20 06:57:54 1.5 *************** *** 1,5 **** %{ ! /* $OpenBSD: date.y,v 1.4 2006/05/17 20:38:05 xsa Exp $ */ /* ** Originally written by Steven M. Bellovin while --- 1,5 ---- %{ ! /* $OpenBSD: date.y,v 1.5 2007/01/20 06:57:54 ray Exp $ */ /* ** Originally written by Steven M. Bellovin while *************** *** 628,633 **** --- 628,634 ---- static int lookup(char *buff) { + size_t len; char *p, *q; int i, abbrev; const TABLE *tp; *************** *** 646,657 **** return (tMERIDIAN); } /* See if we have an abbreviation for a month. */ ! if (strlen(buff) == 3) abbrev = 1; ! else if (strlen(buff) == 4 && buff[3] == '.') { abbrev = 1; buff[3] = '\0'; } else abbrev = 0; --- 647,660 ---- return (tMERIDIAN); } + len = strlen(buff); /* See if we have an abbreviation for a month. */ ! if (len == 3) abbrev = 1; ! else if (len == 4 && buff[3] == '.') { abbrev = 1; buff[3] = '\0'; + --len; } else abbrev = 0; *************** *** 683,697 **** } /* Strip off any plural and try the units table again. */ ! i = strlen(buff) - 1; ! if (buff[i] == 's') { ! buff[i] = '\0'; for (tp = UnitsTable; tp->name; tp++) if (strcmp(buff, tp->name) == 0) { yylval.Number = tp->value; return (tp->type); } ! buff[i] = 's'; /* Put back for "this" in OtherTable. */ } for (tp = OtherTable; tp->name; tp++) --- 686,699 ---- } /* Strip off any plural and try the units table again. */ ! if (len != 0 && buff[len - 1] == 's') { ! buff[len - 1] = '\0'; for (tp = UnitsTable; tp->name; tp++) if (strcmp(buff, tp->name) == 0) { yylval.Number = tp->value; return (tp->type); } ! buff[len - 1] = 's'; /* Put back for "this" in OtherTable. */ } for (tp = OtherTable; tp->name; tp++) *************** *** 701,707 **** } /* Military timezones. */ ! if (buff[1] == '\0' && isalpha(*buff)) { for (tp = MilitaryTable; tp->name; tp++) if (strcmp(buff, tp->name) == 0) { yylval.Number = tp->value; --- 703,709 ---- } /* Military timezones. */ ! if (len == 1 && isalpha(*buff)) { for (tp = MilitaryTable; tp->name; tp++) if (strcmp(buff, tp->name) == 0) { yylval.Number = tp->value;