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

