message: Convert GetFilesInFolderHelper to use BFS
  This function has a huge stack frame (> 8k, thanks to tinydir), and is
  called recursively. I have seen this function causing some stack
  overflows. So convert it to BFS to avoid that.
diff: @@ -140,8 +140,11 @@ static void GetFilesInFolderHelper(
  bool recursive,
  std::string output_prefix,
  const std::function<void(const std::string&)>& handler) {
  + std::queue<std::pair<std::string, std::string>> q;
  + q.push(make_pair(folder, output_prefix));
  + while(!q.empty()) {
  tinydir_dir dir;
  - if (tinydir_open(&dir, folder.c_str()) == -1) {
  + if (tinydir_open(&dir, q.front().first.c_str()) == -1) {
  LOG_S(WARNING) << "Unable to open directory " << folder;
  goto bail;
  }
  @@ -166,11 +169,10 @@ static void GetFilesInFolderHelper(
  if (recursive) {
  std::string child_dir = output_prefix + file.name + "/";
  if (!IsSymLink(child_dir))
  - GetFilesInFolderHelper(file.path, true /*recursive*/, child_dir,
  - handler);
  + q.push(make_pair(file.path, child_dir));
  }
  } else {
  - handler(output_prefix + file.name);
  + handler(q.front().second + file.name);
  }
  }
  @@ -183,6 +185,8 @@ static void GetFilesInFolderHelper(
  bail:
  tinydir_close(&dir);
  + q.pop();
  + }
  }
  std::vector<std::string> GetFilesInFolder(std::string folder,
  