void -rc fscan (pchar path, pchar mask, fscanproc fp)    
{
  vb target, pchar str_target = alloc (T_STRING, path, "/", mask);

  files_in (str_target, (pchar name) [mask, fp] {
                                                  if (name->is_directory ()) 
                                                    fscan (name, mask, fp);
                                                  else 
                                                    fp (name);
                                                });
}
/
{
  free (&target, &str_target);
}