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

