Skip to content

Commit b089f9e

Browse files
committed
Merge pull request monero-project#9434
7cb69fa epee: string_tools: keep full path in cut_off_extension (tobtoht) c7d4bf4 epee: string_tools: remove dot from get_extension (tobtoht)
2 parents c6d17a0 + 7cb69fa commit b089f9e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

contrib/epee/src/string_tools.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,18 @@ namespace string_tools
201201

202202
std::string get_extension(const std::string& str)
203203
{
204-
return boost::filesystem::path(str).extension().string();
204+
std::string ext_with_dot = boost::filesystem::path(str).extension().string();
205+
206+
if (ext_with_dot.empty())
207+
return {};
208+
209+
return ext_with_dot.erase(0, 1);
205210
}
206211

207212
//----------------------------------------------------------------------------
208213
std::string cut_off_extension(const std::string& str)
209214
{
210-
return boost::filesystem::path(str).stem().string();
215+
return boost::filesystem::path(str).replace_extension("").string();
211216
}
212217

213218
#ifdef _WIN32

tests/unit_tests/epee_utils.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,6 +1427,21 @@ TEST(StringTools, GetIpInt32)
14271427
EXPECT_EQ(htonl(0xff0aff00), ip);
14281428
}
14291429

1430+
TEST(StringTools, GetExtension)
1431+
{
1432+
EXPECT_EQ(std::string{}, epee::string_tools::get_extension(""));
1433+
EXPECT_EQ(std::string{}, epee::string_tools::get_extension("."));
1434+
EXPECT_EQ(std::string{"keys"}, epee::string_tools::get_extension("wallet.keys"));
1435+
EXPECT_EQ(std::string{"3"}, epee::string_tools::get_extension("1.2.3"));
1436+
}
1437+
1438+
TEST(StringTools, CutOffExtension)
1439+
{
1440+
EXPECT_EQ(std::string{}, epee::string_tools::cut_off_extension(""));
1441+
EXPECT_EQ(std::string{"/home/user/Monero/wallets/wallet"}, epee::string_tools::cut_off_extension("/home/user/Monero/wallets/wallet"));
1442+
EXPECT_EQ(std::string{"/home/user/Monero/wallets/wallet"}, epee::string_tools::cut_off_extension("/home/user/Monero/wallets/wallet.keys"));
1443+
}
1444+
14301445
TEST(NetUtils, IPv4NetworkAddress)
14311446
{
14321447
static_assert(epee::net_utils::ipv4_network_address::get_type_id() == epee::net_utils::address_type::ipv4, "bad ipv4 type id");

0 commit comments

Comments
 (0)