rem: int i; int abbrev;
add: bool period_found; bool abbrev;
context: lookup_word (parser_control const *pc, char *word){  char *p;  char *q;  size_t wordlen;  table const *tp;  int i;  int abbrev;  /* Make it uppercase.  */  for (p = word; *p; p++)    if (ISLOWER ((unsigned char) *p))      *p = toupper ((unsigned char) *p);  for (tp = meridian_table; tp->name; tp++)    if (strcmp (word, tp->name) == 0)      return tp;  /* See if we have an abbreviation for a month. */  wordlen = strlen (word);  abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');  for (tp = month_and_day_table; tp->name; tp++)    if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)      return tp;  if ((tp = lookup_zone (pc, word)))    return tp;  if (strcmp (word, dst_table[0].name) == 0)    return dst_table;  for (tp = time_units_table; tp->name; tp++)    if (strcmp (word, tp->name) == 0)      return tp;  /* Strip off any plural and try the units table again. */  if (word[wordlen - 1] == 'S')    {      word[wordlen - 1] = '\0';      for (tp = time_units_table; tp->name; tp++)	if (strcmp (word, tp->name) == 0)	  return tp;      word[wordlen - 1] = 'S';	/* For "this" in relative_time_table.  */    }  for (tp = relative_time_table; tp->name; tp++)    if (strcmp (word, tp->name) == 0)      return tp;  /* Military time zones. */  if (wordlen == 1)    for (tp = military_table; tp->name; tp++)      if (word[0] == tp->name[0])	return tp;  /* Drop out any periods and try the time zone table again. */  for (i = 0, p = q = word; (*p = *q); q++)    if (*q == '.')      i = 1;    else      p++;  if (i && (tp = lookup_zone (pc, word)))    return tp;  return 0;}