Skip to content
Snippets Groups Projects
Commit 8fc1a923 authored by Florian Schmaus's avatar Florian Schmaus
Browse files

Add apps/dirwalk

parent e90f271d
No related branches found
No related tags found
No related merge requests found
Pipeline #78823 failed
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright © 2022 Florian Schmaus
#include <cstdlib>
#include <filesystem>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include "Fiber.hpp"
#include "Fibril.hpp"
#include "Runtime.hpp"
#include "emper-common.h"
namespace fs = std::filesystem;
// NOLINTNEXTLINE(clang-diagnostic-unknown-attributes)
emper_fibril void fibril_recursive_directory_print_walk(const fs::path* dirpath) {
std::cout << "DIR: " << *dirpath << std::endl;
std::vector<fs::path> subdirs;
for (const auto& path : fs::directory_iterator(*dirpath)) {
if (path.is_directory()) {
subdirs.push_back(path);
continue;
}
std::cout << path << std::endl;
}
Fibril fibril;
for (const auto& subdir : subdirs) {
fibril.spawn(fibril_recursive_directory_print_walk, &subdir);
}
}
auto main(UNUSED_ARG int argc, UNUSED_ARG char* argv[]) -> int {
Runtime runtime;
auto* fiber = Fiber::from([] {
auto cwd = fs::current_path();
fibril_recursive_directory_print_walk(&cwd);
Runtime::getRuntime()->initiateTermination();
});
runtime.scheduleFromAnywhere(*fiber);
runtime.waitUntilFinished();
return EXIT_SUCCESS;
}
...@@ -40,6 +40,12 @@ qsort = executable( ...@@ -40,6 +40,12 @@ qsort = executable(
dependencies: emper_dep, dependencies: emper_dep,
) )
qsort = executable(
'dirwalk',
'Dirwalk.cpp',
dependencies: emper_dep,
)
boost_program_options_dep = dependency('boost', modules: ['program_options']) boost_program_options_dep = dependency('boost', modules: ['program_options'])
boost_program_options_code = ''' boost_program_options_code = '''
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment