
void foo(void)
	{
	int a = 0;
	while (a < 3)
		{
		a++;
		}

	while (b < a) // trailing C++ comment
		b++;

	do // trailing C++ comment
		{
		a--;
		}
	while (a > 0);

	do
		a--;
	while (a > 0);

	for (a = 0; a < 10; a++) // trailing C++ comment
		{
		printf("a=%d\n", a);
		}

	if (a == 10) // trailing C++ comment
		{
		printf("a looks good\n");
		}
	else // trailing C++ comment
		{
		printf("not so good\n");
		}

	if (state == ST_RUN)
		{
		if ((foo < bar) &&
		    (bar > foo2))
			{
			if (a < 5)
				{
				a *= a;
				}
			else if (b != 0)
				a /= b;
			else // trailing C++ comment
				a += b;
			}
		}

	list_for_each(k)
		{
		if (a)
			if (b)
				{
				c++;
				}
		}


	while (1)
		; /* hang forever */
	}

void f()
	{
	if (buf[0] == '~' && strchr(tmp, '/') == NULL)
		{
		buf = mallocstrcpy(buf, tmp);
		matches = username_tab_completion(tmp, &num_matches);
		}
	/* If we're in the middle of the original line, copy the string
	   only up to the cursor position into buf, so tab completion
	   will result in buf's containing only the tab-completed
	   path/filename. */
	else if (strlen(buf) > strlen(tmp))
		buf = mallocstrcpy(buf, tmp);
	}

void f()
	{
	}
void g()
	{
	}

