Switch to std::filesystem
Change-Id: Idd88815c8971a1dd6a592ac9d3f46d5925afd21b
diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh
index bac6927..3f3235a 100755
--- a/.jenkins.d/00-deps.sh
+++ b/.jenkins.d/00-deps.sh
@@ -7,7 +7,6 @@
libboost-chrono-dev
libboost-date-time-dev
libboost-dev
- libboost-filesystem-dev
libboost-iostreams-dev
libboost-log-dev
libboost-program-options-dev
diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py
index 9899d05..090e65d 100644
--- a/.waf-tools/default-compiler-flags.py
+++ b/.waf-tools/default-compiler-flags.py
@@ -136,7 +136,7 @@
return {
'CXXFLAGS': [],
'LINKFLAGS': [],
- 'DEFINES': ['BOOST_ASIO_NO_DEPRECATED', 'BOOST_FILESYSTEM_NO_DEPRECATED'],
+ 'DEFINES': ['BOOST_ASIO_NO_DEPRECATED'],
}
def getOptimizedFlags(self, conf):
diff --git a/src/conf-file-processor.cpp b/src/conf-file-processor.cpp
index af0ad52..29f22cf 100644
--- a/src/conf-file-processor.cpp
+++ b/src/conf-file-processor.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2023, The University of Memphis,
+ * Copyright (c) 2014-2024, The University of Memphis,
* Regents of the University of California,
* Arizona Board of Regents.
*
@@ -29,16 +29,16 @@
#include <ndn-cxx/util/io.hpp>
#include <boost/algorithm/string.hpp>
-#include <boost/filesystem.hpp>
#include <boost/property_tree/info_parser.hpp>
+#include <filesystem>
#include <fstream>
#include <iostream>
-namespace bf = boost::filesystem;
-
namespace nlsr {
+namespace fs = std::filesystem;
+
template <class T>
class ConfigurationVariable
{
@@ -330,14 +330,14 @@
return false;
}
+ // state-dir
try {
- std::string stateDir = section.get<std::string>("state-dir");
- if (bf::exists(stateDir)) {
- if (bf::is_directory(stateDir)) {
+ fs::path stateDir(section.get<std::string>("state-dir"));
+ if (fs::exists(stateDir)) {
+ if (fs::is_directory(stateDir)) {
// copying nlsr.conf file to a user-defined directory for possible modification
- std::string conFileDynamic = (bf::path(stateDir) / "nlsr.conf").string();
-
- if (m_confFileName == conFileDynamic) {
+ auto conFileDynamic = stateDir / "nlsr.conf";
+ if (m_confFileName == conFileDynamic.string()) {
std::cerr << "Please use nlsr.conf stored at another location "
<< "or change the state-dir in the configuration." << std::endl;
std::cerr << "The file at " << conFileDynamic <<
@@ -347,45 +347,39 @@
return false;
}
- m_confParam.setConfFileNameDynamic(conFileDynamic);
+ m_confParam.setConfFileNameDynamic(conFileDynamic.string());
try {
- bf::copy_file(m_confFileName, conFileDynamic,
-#if BOOST_VERSION >= 107400
- bf::copy_options::overwrite_existing
-#else
- bf::copy_option::overwrite_if_exists
-#endif
- );
+ fs::copy_file(m_confFileName, conFileDynamic, fs::copy_options::overwrite_existing);
}
- catch (const bf::filesystem_error& e) {
- std::cerr << "Error copying conf file to the state directory: " << e.what() << std::endl;
+ catch (const fs::filesystem_error& e) {
+ std::cerr << "Error copying conf file to state-dir: " << e.what() << std::endl;
return false;
}
- std::string testFileName = (bf::path(stateDir) / "test.seq").string();
- std::ofstream testOutFile(testFileName);
- if (testOutFile) {
- m_confParam.setStateFileDir(stateDir);
+ auto testFilePath = stateDir / "test.seq";
+ std::ofstream testFile(testFilePath);
+ if (testFile) {
+ m_confParam.setStateFileDir(stateDir.string());
}
else {
- std::cerr << "NLSR does not have read/write permission on the state directory" << std::endl;
+ std::cerr << "NLSR does not have read/write permission on state-dir" << std::endl;
return false;
}
- testOutFile.close();
- remove(testFileName.c_str());
+ testFile.close();
+ fs::remove(testFilePath);
}
else {
- std::cerr << "Provided path '" << stateDir << "' is not a directory" << std::endl;
+ std::cerr << "Provided state-dir " << stateDir << " is not a directory" << std::endl;
return false;
}
}
else {
- std::cerr << "Provided state directory '" << stateDir << "' does not exist" << std::endl;
+ std::cerr << "Provided state-dir " << stateDir << " does not exist" << std::endl;
return false;
}
}
catch (const std::exception& ex) {
- std::cerr << "You must configure state directory" << std::endl;
+ std::cerr << "You must configure state-dir" << std::endl;
std::cerr << ex.what() << std::endl;
return false;
}
@@ -654,20 +648,19 @@
return false;
}
- std::string file = it->second.data();
- bf::path certfilePath = absolute(file, bf::path(m_confFileName).parent_path());
- std::ifstream ifs(certfilePath.string());
+ fs::path certPath = fs::canonical(fs::path(m_confFileName).parent_path() / it->second.data());
+ std::ifstream ifs(certPath);
ndn::security::Certificate idCert;
try {
idCert = ndn::io::loadTlv<ndn::security::Certificate>(ifs);
}
catch (const std::exception& e) {
- std::cerr << "Error: Cannot load cert-to-publish '" << file << "': " << e.what() << std::endl;
+ std::cerr << "Error: Cannot load cert-to-publish " << certPath << ": " << e.what() << std::endl;
return false;
}
- m_confParam.addCertPath(certfilePath.string());
+ m_confParam.addCertPath(certPath.string());
m_confParam.loadCertToValidator(idCert);
}
}
diff --git a/tests/key-chain-fixture.cpp b/tests/key-chain-fixture.cpp
index f29153f..bae6ca7 100644
--- a/tests/key-chain-fixture.cpp
+++ b/tests/key-chain-fixture.cpp
@@ -27,7 +27,8 @@
#include <ndn-cxx/util/io.hpp>
-#include <boost/filesystem/operations.hpp>
+#include <filesystem>
+#include <system_error>
namespace nlsr::tests {
@@ -40,9 +41,9 @@
KeyChainFixture::~KeyChainFixture()
{
- boost::system::error_code ec;
+ std::error_code ec;
for (const auto& certFile : m_certFiles) {
- boost::filesystem::remove(certFile, ec); // ignore error
+ std::filesystem::remove(certFile, ec); // ignore error
}
}
diff --git a/tests/security/test-certificate-store.cpp b/tests/security/test-certificate-store.cpp
index 484959e..b00744f 100644
--- a/tests/security/test-certificate-store.cpp
+++ b/tests/security/test-certificate-store.cpp
@@ -26,11 +26,11 @@
#include "tests/io-key-chain-fixture.hpp"
#include "tests/test-common.hpp"
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/property_tree/info_parser.hpp>
+#include <filesystem>
+
namespace nlsr::tests {
class CertificateStoreFixture : public IoKeyChainFixture
@@ -50,7 +50,7 @@
, nlsr(face, m_keyChain, conf)
, lsdb(nlsr.getLsdb())
, certStore(face, conf, lsdb)
- , ROOT_CERT_PATH(boost::filesystem::current_path() / "root.cert")
+ , ROOT_CERT_PATH(std::filesystem::current_path() / "root.cert")
{
rootId = m_keyChain.createIdentity(rootIdName);
siteIdentity = addSubCertificate(siteIdentityName, rootId);
@@ -112,7 +112,7 @@
ndn::security::Certificate certificate;
ndn::Name certificateKey;
security::CertificateStore certStore;
- const boost::filesystem::path ROOT_CERT_PATH;
+ const std::filesystem::path ROOT_CERT_PATH;
};
BOOST_FIXTURE_TEST_SUITE(TestCertificateStore, CertificateStoreFixture)
diff --git a/tests/test-lsa-rule.cpp b/tests/test-lsa-rule.cpp
index 87f915d..ddd5969 100644
--- a/tests/test-lsa-rule.cpp
+++ b/tests/test-lsa-rule.cpp
@@ -25,12 +25,12 @@
#include "tests/io-key-chain-fixture.hpp"
#include "tests/test-common.hpp"
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/property_tree/info_parser.hpp>
#include <boost/property_tree/ptree.hpp>
+#include <filesystem>
+
namespace nlsr::tests {
using namespace ndn;
@@ -48,7 +48,7 @@
, confProcessor(confParam, SyncProtocol::PSYNC, HYPERBOLIC_STATE_OFF,
"/ndn/", "/edu/test-site", "/%C1.Router/router1")
, lsdb(face, m_keyChain, confParam)
- , ROOT_CERT_PATH(boost::filesystem::current_path() / std::string("root.cert"))
+ , ROOT_CERT_PATH(std::filesystem::current_path() / "root.cert")
{
rootId = m_keyChain.createIdentity(rootIdName);
siteIdentity = addSubCertificate(siteIdentityName, rootId);
@@ -92,7 +92,7 @@
DummyConfFileProcessor confProcessor;
Lsdb lsdb;
- const boost::filesystem::path ROOT_CERT_PATH;
+ const std::filesystem::path ROOT_CERT_PATH;
};
BOOST_FIXTURE_TEST_SUITE(TestLsaDataValidation, LsaRuleFixture)
diff --git a/tests/test-sequencing-manager.cpp b/tests/test-sequencing-manager.cpp
index dd098c0..9941d1d 100644
--- a/tests/test-sequencing-manager.cpp
+++ b/tests/test-sequencing-manager.cpp
@@ -23,8 +23,9 @@
#include "tests/boost-test.hpp"
-#include <boost/filesystem/operations.hpp>
+#include <filesystem>
#include <fstream>
+#include <system_error>
namespace nlsr::tests {
@@ -33,22 +34,17 @@
class SequencingManagerFixture
{
public:
- SequencingManagerFixture()
- : m_seqManager("/tmp", HYPERBOLIC_STATE_OFF)
- {
- }
-
~SequencingManagerFixture()
{
- boost::filesystem::remove(seqFile);
+ std::error_code ec;
+ std::filesystem::remove(m_seqFile, ec); // ignore error
}
void
writeToFile(const std::string& testSeq)
{
- std::ofstream outputFile(seqFile, std::ofstream::trunc);
+ std::ofstream outputFile(m_seqFile, std::ofstream::trunc);
outputFile << testSeq;
- outputFile.close();
}
void
@@ -66,8 +62,10 @@
}
public:
- std::string seqFile = "/tmp/nlsrSeqNo.txt";
- SequencingManager m_seqManager;
+ SequencingManager m_seqManager{"/tmp", HYPERBOLIC_STATE_OFF};
+
+private:
+ std::filesystem::path m_seqFile{"/tmp/nlsrSeqNo.txt"};
};
BOOST_FIXTURE_TEST_SUITE(TestSequencingManager, SequencingManagerFixture)
diff --git a/tests/update/test-prefix-update-processor.cpp b/tests/update/test-prefix-update-processor.cpp
index 493d73d..229e2d3 100644
--- a/tests/update/test-prefix-update-processor.cpp
+++ b/tests/update/test-prefix-update-processor.cpp
@@ -29,12 +29,12 @@
#include <ndn-cxx/security/interest-signer.hpp>
#include <ndn-cxx/security/signing-helpers.hpp>
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/property_tree/info_parser.hpp>
#include <boost/property_tree/ptree.hpp>
+#include <filesystem>
+
namespace nlsr::tests {
using namespace ndn;
@@ -50,7 +50,7 @@
, confProcessor(conf)
, nlsr(face, m_keyChain, conf)
, namePrefixList(conf.getNamePrefixList())
- , SITE_CERT_PATH(boost::filesystem::current_path() / std::string("site.cert"))
+ , SITE_CERT_PATH(std::filesystem::current_path() / "site.cert")
{
// Site cert
siteIdentity = m_keyChain.createIdentity(siteIdentityName);
@@ -139,7 +139,7 @@
Nlsr nlsr;
NamePrefixList& namePrefixList;
- const boost::filesystem::path SITE_CERT_PATH;
+ const std::filesystem::path SITE_CERT_PATH;
};
BOOST_FIXTURE_TEST_SUITE(TestPrefixUpdateProcessor, PrefixUpdateFixture)
diff --git a/tests/update/test-save-delete-prefix.cpp b/tests/update/test-save-delete-prefix.cpp
index ef38cef..5c582cd 100644
--- a/tests/update/test-save-delete-prefix.cpp
+++ b/tests/update/test-save-delete-prefix.cpp
@@ -30,10 +30,10 @@
#include <ndn-cxx/security/interest-signer.hpp>
#include <ndn-cxx/security/signing-helpers.hpp>
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
#include <boost/property_tree/info_parser.hpp>
+#include <filesystem>
+
namespace nlsr::tests {
namespace bpt = boost::property_tree;
@@ -49,7 +49,7 @@
, conf(face, m_keyChain, testConfFile)
, confProcessor(conf)
, nlsr(face, m_keyChain, conf)
- , SITE_CERT_PATH(boost::filesystem::current_path() / std::string("site.cert"))
+ , SITE_CERT_PATH(std::filesystem::current_path() / "site.cert")
, counter(0)
{
std::ifstream source("nlsr.conf", std::ios::binary);
@@ -69,6 +69,7 @@
std::ifstream inputFile;
inputFile.open(testConfFile);
BOOST_REQUIRE(inputFile.is_open());
+
bpt::ptree pt;
bpt::read_info(inputFile, pt);
// Loads section and file name
@@ -164,7 +165,7 @@
ConfParameter conf;
DummyConfFileProcessor confProcessor;
Nlsr nlsr;
- const boost::filesystem::path SITE_CERT_PATH;
+ const std::filesystem::path SITE_CERT_PATH;
ndn::Name sessionTime;
int counter;
};
diff --git a/wscript b/wscript
index fbadf9f..be9030c 100644
--- a/wscript
+++ b/wscript
@@ -72,7 +72,7 @@
conf.check_cfg(package='libndn-cxx', args=['libndn-cxx >= 0.9.0', '--cflags', '--libs'],
uselib_store='NDN_CXX', pkg_config_path=pkg_config_path)
- conf.check_boost(lib='filesystem', mt=True)
+ conf.check_boost()
if conf.env.BOOST_VERSION_NUMBER < 107100:
conf.fatal('The minimum supported version of Boost is 1.71.0.\n'
'Please upgrade your distribution or manually install a newer version of Boost.\n'