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

