
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()
{
}

