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