pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
megacmd: fix crash on NetBSD-11
Module Name: pkgsrc-wip
Committed By: kikadf <kikadf.01%gmail.com@localhost>
Pushed By: kikadf
Date: Sun Jan 4 16:54:44 2026 +0100
Changeset: 31bc76be6b208b90c568bb0af2f59e77e9911701
Modified Files:
megacmd/distinfo
megacmd/patches/patch-sdk_src_posix_fs.cpp
megacmd/patches/patch-src_megacmdcommonutils.cpp
Added Files:
megacmd/patches/patch-sdk_src_node.cpp
megacmd/patches/patch-sdk_src_syncfilter.cpp
megacmd/patches/patch-sdk_src_utils.cpp
megacmd/patches/patch-src_megacmdutils.cpp
megacmd/patches/patch-src_updater_UpdateTask.cpp
Log Message:
megacmd: fix crash on NetBSD-11
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=31bc76be6b208b90c568bb0af2f59e77e9911701
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
megacmd/distinfo | 9 +++--
megacmd/patches/patch-sdk_src_node.cpp | 15 +++++++++
megacmd/patches/patch-sdk_src_posix_fs.cpp | 43 ++++++++++++++++++------
megacmd/patches/patch-sdk_src_syncfilter.cpp | 15 +++++++++
megacmd/patches/patch-sdk_src_utils.cpp | 15 +++++++++
megacmd/patches/patch-src_megacmdcommonutils.cpp | 14 ++++++--
megacmd/patches/patch-src_megacmdutils.cpp | 15 +++++++++
megacmd/patches/patch-src_updater_UpdateTask.cpp | 26 ++++++++++++++
8 files changed, 137 insertions(+), 15 deletions(-)
diffs:
diff --git a/megacmd/distinfo b/megacmd/distinfo
index 64ad61c715..d696946167 100644
--- a/megacmd/distinfo
+++ b/megacmd/distinfo
@@ -16,7 +16,12 @@ SHA1 (patch-sdk_include_mega_posix_megafs.h) = a87e49a8a9d387f5325bf41df3fbd27ec
SHA1 (patch-sdk_include_mega_sync.h) = 7b73c2619a5fbf33a4df012164876cc4dccfdb84
SHA1 (patch-sdk_include_megaapi__impl.h) = cd5cd30d989d11d58d0030ebb7a34b3b0963d6fb
SHA1 (patch-sdk_src_filesystem.cpp) = 3890ea10a66cd2a99925af57b0a3558c617cd6e3
-SHA1 (patch-sdk_src_posix_fs.cpp) = b8516bc9291c79e3f3903491cd19eac506413637
-SHA1 (patch-src_megacmdcommonutils.cpp) = 6128e295e1a816ad4d7ea1ec59fa963391eb3bfb
+SHA1 (patch-sdk_src_node.cpp) = c9fe20a7825edd0345dd28b4947097b3d141493b
+SHA1 (patch-sdk_src_posix_fs.cpp) = 7b3923a465dfd98d86dc2ceabf914450b62dc066
+SHA1 (patch-sdk_src_syncfilter.cpp) = 15d5209c9df3925ad45214c6a327938297f9d69b
+SHA1 (patch-sdk_src_utils.cpp) = a96bb75ab6de83bb5dc838726f3c183d06aafbb2
+SHA1 (patch-src_megacmdcommonutils.cpp) = 92bb24ee05c541f6040577e3ddad0fa7414f0868
SHA1 (patch-src_megacmdcommonutils.h) = 194d991a02e8e48c9c31c60384549c276e4ee735
SHA1 (patch-src_megacmdshell_megacmdshellcommunications.cpp) = ff794d128ffa6e0626296a504b22f391e0fc923b
+SHA1 (patch-src_megacmdutils.cpp) = 5130d6d5c7a86a341764674a4203ce64a8d99fd0
+SHA1 (patch-src_updater_UpdateTask.cpp) = 3b284b57109c94279c91ca96c78f89ff16bad05d
diff --git a/megacmd/patches/patch-sdk_src_node.cpp b/megacmd/patches/patch-sdk_src_node.cpp
new file mode 100644
index 0000000000..d7f176c214
--- /dev/null
+++ b/megacmd/patches/patch-sdk_src_node.cpp
@@ -0,0 +1,15 @@
+$NetBSD$
+
+* Fix ctype(3) tolower usage
+
+--- sdk/src/node.cpp.orig 2026-01-03 22:32:23.317953423 +0000
++++ sdk/src/node.cpp
+@@ -197,7 +197,7 @@ bool Node::getExtension(std::string& ext
+ ext = nodeName.substr(dotPos + 1);
+ for (auto& c : ext)
+ {
+- c = static_cast<char>(tolower(c));
++ c = static_cast<char>(tolower(static_cast<unsigned char>(c)));
+ }
+ return true;
+ }
diff --git a/megacmd/patches/patch-sdk_src_posix_fs.cpp b/megacmd/patches/patch-sdk_src_posix_fs.cpp
index c937a0d5b8..7f6e47737a 100644
--- a/megacmd/patches/patch-sdk_src_posix_fs.cpp
+++ b/megacmd/patches/patch-sdk_src_posix_fs.cpp
@@ -4,6 +4,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
* Don't use mntent features on BSDs
* O_NOATIME not available on BSDs
* Fallback funcs
+* Fix ctype(3) tolower usage
--- sdk/src/posix/fs.cpp.orig 2025-04-02 09:16:59.000000000 +0200
+++ sdk/src/posix/fs.cpp
@@ -46,7 +47,27 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
#endif // __linux__
-@@ -1749,6 +1765,16 @@ void LinuxDirNotify::removeWatch(WatchMa
+@@ -1417,7 +1433,8 @@ string getDistro()
+ {
+ distro = distro.substr(0, 20);
+ }
+- transform(distro.begin(), distro.end(), distro.begin(), ::tolower);
++ transform(distro.begin(), distro.end(), distro.begin(),
++ [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
+ return distro;
+ }
+
+@@ -1433,7 +1450,8 @@ string getDistroVersion()
+ {
+ version = version.substr(0, 10);
+ }
+- transform(version.begin(), version.end(), version.begin(), ::tolower);
++ transform(version.begin(), version.end(), version.begin(),
++ [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
+ return version;
+ }
+ #endif
+@@ -1749,6 +1767,16 @@ void LinuxDirNotify::removeWatch(WatchMa
}
#endif // USE_INOTIFY
@@ -63,7 +84,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
#endif // __linux__
#endif //ENABLE_SYNC
-@@ -1805,8 +1831,8 @@ private:
+@@ -1805,8 +1833,8 @@ private:
// open with O_NOATIME if possible
int open(const char *path)
{
@@ -74,7 +95,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
int fd = ::open(path, O_RDONLY) ;
#else
// for sync in particular, try to open without setting access-time
-@@ -2065,6 +2091,7 @@ ScanResult PosixFileSystemAccess::direct
+@@ -2065,6 +2093,7 @@ ScanResult PosixFileSystemAccess::direct
}
#ifndef __APPLE__
@@ -82,7 +103,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
// Determine which device contains the specified path.
static std::string deviceOf(const std::string& database,
-@@ -2233,6 +2260,7 @@ static std::string deviceOf(const std::s
+@@ -2233,6 +2262,7 @@ static std::string deviceOf(const std::s
// No database has a mapping for this path.
return std::string();
}
@@ -90,7 +111,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
// Compute legacy filesystem fingerprint.
static std::uint64_t fingerprintOf(const std::string& path)
-@@ -2261,6 +2289,7 @@ static std::uint64_t fingerprintOf(const
+@@ -2261,6 +2291,7 @@ static std::uint64_t fingerprintOf(const
return ++value;
}
@@ -98,7 +119,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
// Determine the UUID of the specified device.
static std::string uuidOf(const std::string& device)
{
-@@ -2337,6 +2366,7 @@ static std::string uuidOf(const std::str
+@@ -2337,6 +2368,7 @@ static std::string uuidOf(const std::str
// Couldn't determine device's UUID.
return std::string();
}
@@ -106,7 +127,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
fsfp_t FileSystemAccess::fsFingerprint(const LocalPath& path) const
{
-@@ -2347,6 +2377,7 @@ fsfp_t FileSystemAccess::fsFingerprint(c
+@@ -2347,6 +2379,7 @@ fsfp_t FileSystemAccess::fsFingerprint(c
if (!fingerprint)
return fsfp_t();
@@ -114,7 +135,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
// What device contains the specified path?
auto device = deviceOf(path.localpath);
-@@ -2360,6 +2391,7 @@ fsfp_t FileSystemAccess::fsFingerprint(c
+@@ -2360,6 +2393,7 @@ fsfp_t FileSystemAccess::fsFingerprint(c
if (!uuid.empty())
return fsfp_t(fingerprint, std::move(uuid));
}
@@ -122,7 +143,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
// Couldn't determine filesystem UUID.
return fsfp_t(fingerprint, std::string());
-@@ -2452,6 +2484,15 @@ DirNotify* LinuxFileSystemAccess::newdir
+@@ -2452,6 +2486,15 @@ DirNotify* LinuxFileSystemAccess::newdir
return new LinuxDirNotify(*this, root, rootPath);
}
#endif
@@ -138,7 +159,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
#endif
bool PosixFileSystemAccess::issyncsupported(const LocalPath& localpathArg, bool& isnetwork, SyncError& syncError, SyncWarning& syncWarning)
-@@ -2526,18 +2567,26 @@ bool PosixFileSystemAccess::getlocalfsty
+@@ -2526,18 +2569,26 @@ bool PosixFileSystemAccess::getlocalfsty
}
#endif /* __linux__ || __ANDROID__ */
@@ -166,7 +187,7 @@ $NetBSD: patch-sdk_src_posix_fs.cpp,v 1.4 2025/05/16 19:43:58 wiz Exp $
}; /* filesystemTypes */
struct statfs statbuf;
-@@ -2555,7 +2604,7 @@ bool PosixFileSystemAccess::getlocalfsty
+@@ -2555,7 +2606,7 @@ bool PosixFileSystemAccess::getlocalfsty
type = FS_UNKNOWN;
return true;
}
diff --git a/megacmd/patches/patch-sdk_src_syncfilter.cpp b/megacmd/patches/patch-sdk_src_syncfilter.cpp
new file mode 100644
index 0000000000..ded064b93d
--- /dev/null
+++ b/megacmd/patches/patch-sdk_src_syncfilter.cpp
@@ -0,0 +1,15 @@
+$NetBSD$
+
+* Fix ctype(3) tolower usage
+
+--- sdk/src/syncfilter.cpp.orig 2026-01-03 22:42:24.434490944 +0000
++++ sdk/src/syncfilter.cpp
+@@ -980,7 +980,7 @@ bool add(const string& text, SizeFilterP
+ {
+ std::uint64_t shift = 0;
+
+- switch (std::tolower(istream.get()))
++ switch (std::tolower(static_cast<unsigned char>(istream.get())))
+ {
+ case 'k':
+ // Kilobytes.
diff --git a/megacmd/patches/patch-sdk_src_utils.cpp b/megacmd/patches/patch-sdk_src_utils.cpp
new file mode 100644
index 0000000000..7e74bbeba6
--- /dev/null
+++ b/megacmd/patches/patch-sdk_src_utils.cpp
@@ -0,0 +1,15 @@
+$NetBSD$
+
+* Fix ctype(3) tolower usage
+
+--- sdk/src/utils.cpp.orig 2026-01-03 22:27:50.415280578 +0000
++++ sdk/src/utils.cpp
+@@ -2190,7 +2190,7 @@ string webdavnameescape(const string &va
+
+ void tolower_string(std::string& str)
+ {
+- std::transform(str.begin(), str.end(), str.begin(), [](char c) {return static_cast<char>(::tolower(c)); });
++ std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) {return static_cast<char>(::tolower(c)); });
+ }
+
+ #ifdef __APPLE__
diff --git a/megacmd/patches/patch-src_megacmdcommonutils.cpp b/megacmd/patches/patch-src_megacmdcommonutils.cpp
index ae4df176ee..fd57442ed7 100644
--- a/megacmd/patches/patch-src_megacmdcommonutils.cpp
+++ b/megacmd/patches/patch-src_megacmdcommonutils.cpp
@@ -1,10 +1,20 @@
$NetBSD: patch-src_megacmdcommonutils.cpp,v 1.1 2025/02/15 07:40:14 wiz Exp $
* BSDs use the functions of linux
+* Fix ctype(3) tolower usage
---- src/megacmdcommonutils.cpp.orig 2025-02-07 09:43:13.320748794 +0100
+--- src/megacmdcommonutils.cpp.orig 2025-04-04 10:39:49.000000000 +0000
+++ src/megacmdcommonutils.cpp
-@@ -1128,7 +1128,8 @@ bool isValidEmail(string email)
+@@ -660,7 +660,7 @@ string toLower(const std::string& str)
+ std::string lower = str;
+ for (char& c : lower)
+ {
+- c = std::tolower(c);
++ c = static_cast<char>(std::tolower(static_cast<unsigned char>(c)));
+ }
+ return lower;
+ }
+@@ -1153,7 +1153,8 @@ bool isValidEmail(string email)
|| (email.find("@") > email.find_last_of(".")));
}
diff --git a/megacmd/patches/patch-src_megacmdutils.cpp b/megacmd/patches/patch-src_megacmdutils.cpp
new file mode 100644
index 0000000000..cb494c88e0
--- /dev/null
+++ b/megacmd/patches/patch-src_megacmdutils.cpp
@@ -0,0 +1,15 @@
+$NetBSD$
+
+* Fix ctype(3) tolower usage
+
+--- src/megacmdutils.cpp.orig 2026-01-03 22:04:27.842177008 +0000
++++ src/megacmdutils.cpp
+@@ -546,7 +546,7 @@ string secondsToText(m_time_t seconds, b
+ const char *getTimeFormatFromSTR(string formatName)
+ {
+ string lformatName = formatName;
+- transform(lformatName.begin(), lformatName.end(), lformatName.begin(), [](char c) { return (char)::tolower(c); });
++ transform(lformatName.begin(), lformatName.end(), lformatName.begin(), [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
+
+ if (lformatName == "rfc2822")
+ {
diff --git a/megacmd/patches/patch-src_updater_UpdateTask.cpp b/megacmd/patches/patch-src_updater_UpdateTask.cpp
new file mode 100644
index 0000000000..9531381692
--- /dev/null
+++ b/megacmd/patches/patch-src_updater_UpdateTask.cpp
@@ -0,0 +1,26 @@
+$NetBSD$
+
+* Fix ctype(3) tolower usage
+
+--- src/updater/UpdateTask.cpp.orig 2026-01-04 16:27:16.088641735 +0100
++++ src/updater/UpdateTask.cpp
+@@ -589,7 +589,8 @@ string getDistro()
+ {
+ distro = distro.substr(0, 20);
+ }
+- transform(distro.begin(), distro.end(), distro.begin(), ::tolower);
++ transform(distro.begin(), distro.end(), distro.begin(),
++ [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
+ return distro;
+ }
+
+@@ -605,7 +606,8 @@ string getDistroVersion()
+ {
+ version = version.substr(0, 10);
+ }
+- transform(version.begin(), version.end(), version.begin(), ::tolower);
++ transform(version.begin(), version.end(), version.begin(),
++ [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
+ return version;
+ }
+ #endif
Home |
Main Index |
Thread Index |
Old Index