return htmlGetByte(input, state);
return endTag(a, input, state);
readTag(void *a, Input *input, HTMLState *state){	unsigned short	c;	mark(input, -1);	reportHTML(a, input);	c = htmlGetByte(input, state);	if (c == '!')	{		c = htmlGetByte(input, state);		if (c == '-')		{			c = htmlGetByte(input, state);			if (c == '-')			{				const unsigned char *beginningOfComment =					current(input);				while (1)				{					c = htmlGetByte(input, state);					if (c == '-')					{						c = htmlGetByte(input, state);						if (c == '-')						{							c = htmlGetByte(input,							state);							if (c == '>')							{							    return htmlGetByte(input, state);							}							else if (c == '-')							{							  do							  {							    c = htmlGetByte(input, state);							  } while (c == '-');							  if (c == '>')							  {							    return htmlGetByte(input, state);							  }							}						}					}					if (c == 256)					{					    set(input, beginningOfComment);					    while (1)					    {						c = htmlGetByte(input, state);						if (c == '>')						{						    return htmlGetByte(input, state);						}						else if (c == 256)						{						    fprintf(stderr,							"bad comment\n");						    mark(input, -1);						    FREE(state->html->tag);						    state->html->tag =							copyString((unsigned								char *) "!--");						    state->html->tagIsKnown = 1;						    reportHTMLTag(a,							state->html, input);						    return c;						}					    }					}				}			}			else			{				htmlUnGetByte(state);			}		}		else		{			htmlUnGetByte(state);		}	}	else	{		htmlUnGetByte(state);	}	do	{		c = htmlGetByte(input, state);	}	while	(		(c != 256) &&		(c != '>') &&		(c != ' ') &&		(c != '\t') &&		(c != '\r') &&		(c != '\n')	);	mark(input, -1);	FREE(state->html->tag);	state->html->tag = copyLower(input);	if (hashLookup(knownTagTable, (*state->html->tag == '/') ?		state->html->tag + 1 : state->html->tag))	{		state->html->tagIsKnown = 1;	}	else	{		state->html->tagIsKnown = 0;	}	reportHTMLTag(a, state->html, input);	if (c == 256)	{		return c;	}	else if (c == '>')	{		return htmlGetByte(input, state);	}	c = eatWhiteSpace(input, state, c);	if (c == 256)	{		return c;	}	else if (c == '>')	{		return htmlGetByte(input, state);	}	do	{		c = readAttribute(a, input, state, c);	} while ((c != 256) && (c != '>'));	state->html->currentAttribute = NULL;	if (tagHandler)	{		(*tagHandler)(a, state->html);	}	if (c == '>')	{		return htmlGetByte(input, state);	}	return c;}