summaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
authormarkd <markd@pkgsrc.org>2009-11-16 08:55:06 +0000
committermarkd <markd@pkgsrc.org>2009-11-16 08:55:06 +0000
commitc79e5484a2242db58dea9541b2543a7903905e83 (patch)
tree621741492cfd5e587547c12e37446fd97c3e26f8 /x11
parent72a77b0d3d86330ddaef28adc8c0e87196054ca9 (diff)
downloadpkgsrc-c79e5484a2242db58dea9541b2543a7903905e83.tar.gz
Teach konsole's ProcessInfo about NetBSD. Bump PKGREVISION.
Diffstat (limited to 'x11')
-rw-r--r--x11/kdebase4/Makefile3
-rw-r--r--x11/kdebase4/distinfo3
-rw-r--r--x11/kdebase4/patches/patch-aa185
3 files changed, 189 insertions, 2 deletions
diff --git a/x11/kdebase4/Makefile b/x11/kdebase4/Makefile
index 1b37ae769a5..2a0c03dcb4b 100644
--- a/x11/kdebase4/Makefile
+++ b/x11/kdebase4/Makefile
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.2 2009/10/11 08:13:40 markd Exp $
+# $NetBSD: Makefile,v 1.3 2009/11/16 08:55:06 markd Exp $
DISTNAME= kdebase-${_KDE_VERSION}
+PKGREVISION= 1
CATEGORIES= x11
COMMENT= Base modules for the KDE 4 integrated X11 desktop
diff --git a/x11/kdebase4/distinfo b/x11/kdebase4/distinfo
index acbb2658243..6be3f92b700 100644
--- a/x11/kdebase4/distinfo
+++ b/x11/kdebase4/distinfo
@@ -1,5 +1,6 @@
-$NetBSD: distinfo,v 1.3 2009/11/04 11:05:52 markd Exp $
+$NetBSD: distinfo,v 1.4 2009/11/16 08:55:06 markd Exp $
SHA1 (kdebase-4.3.3.tar.bz2) = 7459ea75312961b4802626edd22dc291370be329
RMD160 (kdebase-4.3.3.tar.bz2) = 7fdc0f5cb3574b6707ae8f005eb887126ca2339e
Size (kdebase-4.3.3.tar.bz2) = 4275500 bytes
+SHA1 (patch-aa) = 8ab0c0a6f79e871cf869d9aae2331f9ed3f8d366
diff --git a/x11/kdebase4/patches/patch-aa b/x11/kdebase4/patches/patch-aa
new file mode 100644
index 00000000000..73b6b1f1afe
--- /dev/null
+++ b/x11/kdebase4/patches/patch-aa
@@ -0,0 +1,185 @@
+$NetBSD: patch-aa,v 1.3 2009/11/16 08:55:06 markd Exp $
+
+--- apps/konsole/src/ProcessInfo.cpp.orig 2009-10-31 01:28:19.000000000 +1300
++++ apps/konsole/src/ProcessInfo.cpp
+@@ -685,6 +685,171 @@ private:
+ }
+ } ;
+
++class NetBSDProcessInfo : public UnixProcessInfo
++{
++public:
++ NetBSDProcessInfo(int pid, bool env) :
++ UnixProcessInfo(pid,env)
++ {
++ }
++
++private:
++ virtual bool readProcInfo(int pid)
++ {
++ // indicies of various fields within the process status file which
++ // contain various information about the process
++ const int PARENT_PID_FIELD = 2;
++ const int PROCESS_NAME_FIELD = 0;
++ const int GROUP_PROCESS_FIELD = 3;
++ const int UID_PROCESS_FIELD = 11;
++
++ QString parentPidString;
++ QString processNameString;
++ QString foregroundPidString;
++ QString uidString;
++
++ // read process status file ( /proc/<pid/status )
++ //
++ // the expected file format is a list of fields separated by spaces, using
++ // parenthesies to escape fields such as the process name which may itself contain
++ // spaces:
++ //
++ // FIELD FIELD (FIELD WITH SPACES) FIELD FIELD
++ //
++ QFile processInfo( QString("/proc/%1/status").arg(pid) );
++ if ( processInfo.open(QIODevice::ReadOnly) )
++ {
++ QTextStream stream(&processInfo);
++ QString data = stream.readAll();
++
++ int stack = 0;
++ int field = 0;
++ int pos = 0;
++
++ while (pos < data.count())
++ {
++ QChar c = data[pos];
++
++ if ( c == '(' )
++ stack++;
++ else if ( c == ')' )
++ stack--;
++ else if ( stack == 0 && c == ' ' )
++ field++;
++ else
++ {
++ switch ( field )
++ {
++ case PARENT_PID_FIELD:
++ parentPidString.append(c);
++ break;
++ case PROCESS_NAME_FIELD:
++ processNameString.append(c);
++ break;
++ case GROUP_PROCESS_FIELD:
++ foregroundPidString.append(c);
++ break;
++ case UID_PROCESS_FIELD:
++ uidString.append(c);
++ break;
++ }
++ }
++
++ pos++;
++ }
++ }
++ else
++ {
++ setFileError( processInfo.error() );
++ return false;
++ }
++
++ // check that data was read successfully
++ bool ok = false;
++
++ // uid string must be less than 5 chars (uint)
++ if (uidString.size() > 5)
++ uidString.clear();
++
++ int uid = uidString.toInt(&ok);
++ if (ok)
++ setUserId(uid);
++ readUserName();
++
++ int foregroundPid = foregroundPidString.toInt(&ok);
++ if (ok)
++ setForegroundPid(foregroundPid);
++
++ int parentPid = parentPidString.toInt(&ok);
++ if (ok)
++ setParentPid(parentPid);
++
++ if (!processNameString.isEmpty())
++ setName(processNameString);
++
++ // update object state
++ setPid(pid);
++
++ return ok;
++ }
++
++ virtual bool readArguments(int pid)
++ {
++ // read command-line arguments file found at /proc/<pid>/cmdline
++ // the expected format is a list of strings delimited by null characters,
++ // and ending in a double null character pair.
++
++ QFile argumentsFile( QString("/proc/%1/cmdline").arg(pid) );
++ if ( argumentsFile.open(QIODevice::ReadOnly) )
++ {
++ QTextStream stream(&argumentsFile);
++ QString data = stream.readAll();
++
++ QStringList argList = data.split( QChar('\0') );
++
++ foreach ( const QString &entry , argList )
++ {
++ if (!entry.isEmpty())
++ addArgument(entry);
++ }
++ }
++ else
++ {
++ setFileError( argumentsFile.error() );
++ }
++
++ return true;
++ }
++
++ virtual bool readCurrentDir(int pid)
++ {
++ QFileInfo info( QString("/proc/%1/cwd").arg(pid) );
++
++ const bool readable = info.isReadable();
++
++ if ( readable && info.isSymLink() )
++ {
++ setCurrentDir( info.symLinkTarget() );
++ return true;
++ }
++ else
++ {
++ if ( !readable )
++ setError( PermissionsError );
++ else
++ setError( UnknownError );
++
++ return false;
++ }
++ }
++
++ virtual bool readEnvironment(int pid)
++ {
++ // Not supported in NetBSD
++ return true;
++ }
++} ;
++
+ SSHProcessInfo::SSHProcessInfo(const ProcessInfo& process)
+ : _process(process)
+ {
+@@ -830,6 +995,8 @@ ProcessInfo* ProcessInfo::newInstance(in
+ return new LinuxProcessInfo(pid,enableEnvironmentRead);
+ #elif defined(Q_OS_SOLARIS)
+ return new SolarisProcessInfo(pid,enableEnvironmentRead);
++#elif defined(Q_OS_NETBSD)
++ return new NetBSDProcessInfo(pid,enableEnvironmentRead);
+ #else
+ return new NullProcessInfo(pid,enableEnvironmentRead);
+ #endif