Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F164809762
D15673.id43354.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D15673.id43354.diff
View Options
Index: devel/qt5-core/files/patch-src_corelib_io_qlockfile__unix.cpp
===================================================================
--- /dev/null
+++ devel/qt5-core/files/patch-src_corelib_io_qlockfile__unix.cpp
@@ -0,0 +1,62 @@
+--- src/corelib/io/qlockfile_unix.cpp.orig 2018-06-06 09:26:40 UTC
++++ src/corelib/io/qlockfile_unix.cpp
+@@ -75,6 +75,8 @@
+ # include <sys/sysctl.h>
+ # if !defined(Q_OS_NETBSD)
+ # include <sys/user.h>
++# include <kvm.h>
++# include <libprocstat.h>
+ # endif
+ #endif
+
+@@ -246,23 +248,43 @@ QString QLockFilePrivate::processNameByPid(qint64 pid)
+ struct kinfo_proc kp;
+ int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)pid, sizeof(struct kinfo_proc), 1 };
+ # else
++ kvm_t * kvm = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "");
++ int cnt;
++ struct kinfo_proc * kvm_kp = kvm_getprocs(kvm, KERN_PROC_PID, getpid(), &cnt);
++ struct procstat * ps = procstat_open_sysctl();
++ char ** argv = procstat_getargv(ps, kvm_kp, 0);
++ QString nameFromProcstat;
++ if (argv != nullptr && argv[0] != nullptr)
++ nameFromProcstat = QString::fromLocal8Bit(argv[0]);
++ procstat_close(ps);
++ kvm_close(kvm);
++
+ struct kinfo_proc kp;
+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)pid };
+ # endif
+- size_t len = sizeof(kp);
+- u_int mib_len = sizeof(mib)/sizeof(u_int);
++ if (nameFromProcstat.isEmpty())
++ {
++ size_t len = sizeof(kp);
++ u_int mib_len = sizeof(mib)/sizeof(u_int);
+
+- if (sysctl(mib, mib_len, &kp, &len, NULL, 0) < 0)
+- return QString();
+-
++ if (sysctl(mib, mib_len, &kp, &len, NULL, 0) < 0)
++ return QString();
++ }
+ # if defined(Q_OS_OPENBSD) || defined(Q_OS_NETBSD)
+ if (kp.p_pid != pid)
+ return QString();
+ QString name = QFile::decodeName(kp.p_comm);
+ # else
+- if (kp.ki_pid != pid)
++ QString name;
++ if (!nameFromProcstat.isEmpty())
++ {
++ QFileInfo fi(nameFromProcstat);
++ name = fi.fileName();
++ }
++ else if (kp.ki_pid != pid)
+ return QString();
+- QString name = QFile::decodeName(kp.ki_comm);
++ else
++ QString name = QFile::decodeName(kp.ki_comm);
+ # endif
+ return name;
+
\ No newline at end of file
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Aug 5, 3:57 AM (52 m, 33 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35991515
Default Alt Text
D15673.id43354.diff (2 KB)
Attached To
Mode
D15673: devel/qt5-core: Add a patch that fixes QLockFilePrivate::processNameByPid() function to return non-truncated name.
Attached
Detach File
Event Timeline
Log In to Comment