summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/filesystem/example/simple_ls.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/filesystem/example/simple_ls.cpp')
-rw-r--r--src/boost/libs/filesystem/example/simple_ls.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/boost/libs/filesystem/example/simple_ls.cpp b/src/boost/libs/filesystem/example/simple_ls.cpp
new file mode 100644
index 00000000..c914a51e
--- /dev/null
+++ b/src/boost/libs/filesystem/example/simple_ls.cpp
@@ -0,0 +1,92 @@
+// simple_ls program -------------------------------------------------------//
+
+// Copyright Jeff Garland and Beman Dawes, 2002
+
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/filesystem for documentation.
+
+#define BOOST_FILESYSTEM_VERSION 3
+
+// As an example program, we don't want to use any deprecated features
+#ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+# define BOOST_FILESYSTEM_NO_DEPRECATED
+#endif
+#ifndef BOOST_SYSTEM_NO_DEPRECATED
+# define BOOST_SYSTEM_NO_DEPRECATED
+#endif
+
+#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/directory.hpp>
+#include <boost/filesystem/path.hpp>
+#include <iostream>
+
+namespace fs = boost::filesystem;
+
+int main(int argc, char* argv[])
+{
+ fs::path p(fs::current_path());
+
+ if (argc > 1)
+ p = fs::system_complete(argv[1]);
+ else
+ std::cout << "\nusage: simple_ls [path]" << std::endl;
+
+ unsigned long file_count = 0;
+ unsigned long dir_count = 0;
+ unsigned long other_count = 0;
+ unsigned long err_count = 0;
+
+ if (!fs::exists(p))
+ {
+ std::cout << "\nNot found: " << p << std::endl;
+ return 1;
+ }
+
+ if (fs::is_directory(p))
+ {
+ std::cout << "\nIn directory: " << p << "\n\n";
+ fs::directory_iterator end_iter;
+ for (fs::directory_iterator dir_itr(p);
+ dir_itr != end_iter;
+ ++dir_itr)
+ {
+ try
+ {
+ if (fs::is_directory(dir_itr->status()))
+ {
+ ++dir_count;
+ std::cout << dir_itr->path().filename() << " [directory]\n";
+ }
+ else if (fs::is_regular_file(dir_itr->status()))
+ {
+ ++file_count;
+ std::cout << dir_itr->path().filename() << "\n";
+ }
+ else
+ {
+ ++other_count;
+ std::cout << dir_itr->path().filename() << " [other]\n";
+ }
+
+ }
+ catch (const std::exception & ex)
+ {
+ ++err_count;
+ std::cout << dir_itr->path().filename() << " " << ex.what() << std::endl;
+ }
+ }
+ std::cout << "\n" << file_count << " files\n"
+ << dir_count << " directories\n"
+ << other_count << " others\n"
+ << err_count << " errors\n";
+ }
+ else // must be a file
+ {
+ std::cout << "\nFound: " << p << "\n";
+ }
+
+ return 0;
+}