summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2008-05-26 03:01:01 +0800
committermarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2008-05-26 03:01:01 +0800
commit1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b (patch)
tree07afd4fcfb5eae51435877b7b895e3b67d4fe11e
parent0c79b39e253288cc65fe2c2b8a2cad28845d764c (diff)
downloadmarcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.tar
marcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.tar.gz
marcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.tar.bz2
marcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.tar.lz
marcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.tar.xz
marcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.tar.zst
marcuscom-ports-1aa90d302b2e551b7129d0d3aa4bbe10b8ceb45b.zip
Update to 2.23.2.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@10979 df743ca5-7f9a-e211-a948-0013205c9059
-rw-r--r--devel/libgtop/Makefile50
-rw-r--r--devel/libgtop/distinfo3
-rw-r--r--devel/libgtop/files/patch-configure11
-rw-r--r--devel/libgtop/files/patch-src_daemon_server.c17
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_Makefile.in37
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_fsusage.c61
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_glibtop_server.h10
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_mountlist.c171
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_procaffinity.c87
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_procopenfiles.c229
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_procwd.c94
-rw-r--r--devel/libgtop/files/patch-sysdeps_freebsd_shm_limits.c22
-rw-r--r--devel/libgtop/files/pkg-message13
-rw-r--r--devel/libgtop/pkg-descr3
-rw-r--r--devel/libgtop/pkg-plist200
15 files changed, 1008 insertions, 0 deletions
diff --git a/devel/libgtop/Makefile b/devel/libgtop/Makefile
new file mode 100644
index 000000000..521c1de1f
--- /dev/null
+++ b/devel/libgtop/Makefile
@@ -0,0 +1,50 @@
+# New ports collection makefile for: libgtop2
+# Date Created: 29 April 2002
+# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom: ports/devel/libgtop/Makefile,v 1.34 2008/03/10 21:59:17 mezz Exp $
+#
+
+PORTNAME= libgtop
+PORTVERSION= 2.23.2
+CATEGORIES= devel gnome
+MASTER_SITES= GNOME
+DIST_SUBDIR= gnome2
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= GNOME 2 top library
+
+USE_BZIP2= yes
+USE_PERL5_BUILD=yes
+USE_GETTEXT= yes
+USE_GMAKE= yes
+USE_GNOME= gnomehack glib20 ltverhack intlhack
+USE_LDCONFIG= yes
+USE_AUTOTOOLS= libtool:15
+CONFIGURE_ARGS= --disable-gtk-doc \
+ --with-html-dir=${PREFIX}/share/doc
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib"
+
+INFO= libgtop2
+
+.include <bsd.port.pre.mk>
+
+.if ( ${OSVERSION} >= 800000 && ${OSVERSION} < 800019 ) || \
+ ${OSVERSION} < 700104
+RUN_DEPENDS+= lsof:${PORTSDIR}/sysutils/lsof
+.endif
+
+.if ${OSVERSION} >= 600000
+PKGMESSAGE= ${FILESDIR}/pkg-message
+.endif
+
+post-install:
+ @${CHGRP} kmem ${PREFIX}/bin/libgtop_server2
+ @${CHMOD} 2555 ${PREFIX}/bin/libgtop_server2
+.if ${OSVERSION} >= 600000
+ @${CAT} ${PKGMESSAGE}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/devel/libgtop/distinfo b/devel/libgtop/distinfo
new file mode 100644
index 000000000..9dd11ae6f
--- /dev/null
+++ b/devel/libgtop/distinfo
@@ -0,0 +1,3 @@
+MD5 (gnome2/libgtop-2.23.2.tar.bz2) = c07b668eb39c511c257c60577862c846
+SHA256 (gnome2/libgtop-2.23.2.tar.bz2) = 719f9261284df8d5f36ae99f3d3b54d2629c5d8122fa9c436a642c80aafb3717
+SIZE (gnome2/libgtop-2.23.2.tar.bz2) = 788360
diff --git a/devel/libgtop/files/patch-configure b/devel/libgtop/files/patch-configure
new file mode 100644
index 000000000..b1d337570
--- /dev/null
+++ b/devel/libgtop/files/patch-configure
@@ -0,0 +1,11 @@
+--- configure.orig 2008-04-05 01:45:43.000000000 -0400
++++ configure 2008-04-05 01:45:50.000000000 -0400
+@@ -21523,6 +21523,8 @@ echo $ECHO_N "checking for libgtop sysde
+ libgtop_sysdeps_dir=freebsd
+ libgtop_use_machine_h=yes
+ libgtop_need_server=yes
++ libgtop_sysdeps_private_mountlist=yes
++ libgtop_sysdeps_private_fsusage=yes
+ libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2755 $(bindir)/libgtop_server2'
+ ;;
+ solaris*)
diff --git a/devel/libgtop/files/patch-src_daemon_server.c b/devel/libgtop/files/patch-src_daemon_server.c
new file mode 100644
index 000000000..bf0bba5c7
--- /dev/null
+++ b/devel/libgtop/files/patch-src_daemon_server.c
@@ -0,0 +1,17 @@
+--- src/daemon/server.c.orig Mon Feb 17 15:22:19 2003
++++ src/daemon/server.c Mon Feb 17 15:23:31 2003
+@@ -88,11 +88,12 @@
+ if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
+ strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
+ strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
+- fprintf (stderr, "Can only run on %s %s %s\n",
++ fprintf (stderr, "This libgtop was compiled on %s %s %s\n",
+ LIBGTOP_COMPILE_SYSTEM,
+ LIBGTOP_COMPILE_RELEASE,
+ LIBGTOP_COMPILE_MACHINE);
+- _exit (1);
++ fprintf (stderr, "If you see strange problems caused by it,\n");
++ fprintf (stderr, "you should recompile libgtop and dependent applications\n");
+ }
+ #endif
+
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_Makefile.in b/devel/libgtop/files/patch-sysdeps_freebsd_Makefile.in
new file mode 100644
index 000000000..01e8330ea
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_Makefile.in
@@ -0,0 +1,37 @@
+--- sysdeps/freebsd/Makefile.in.orig 2008-05-25 14:23:40.000000000 -0400
++++ sysdeps/freebsd/Makefile.in 2008-05-25 14:43:33.000000000 -0400
+@@ -54,7 +54,7 @@ libgtop_sysdeps_2_0_la_LIBADD =
+ am_libgtop_sysdeps_2_0_la_OBJECTS = nosuid.lo siglist.lo sysinfo.lo \
+ shm_limits.lo cpu.lo msg_limits.lo sem_limits.lo loadavg.lo \
+ uptime.lo netlist.lo fsusage.lo mem.lo procopenfiles.lo \
+- procwd.lo glibtop_private.lo
++ procwd.lo procaffinity.lo glibtop_private.lo mountlist.lo
+ libgtop_sysdeps_2_0_la_OBJECTS = $(am_libgtop_sysdeps_2_0_la_OBJECTS)
+ am__DEPENDENCIES_1 =
+ libgtop_sysdeps_suid_2_0_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+@@ -306,7 +306,8 @@ libgtop_sysdeps_2_0_la_SOURCES = nosuid.
+ cpu.c msg_limits.c sem_limits.c loadavg.c \
+ uptime.c netlist.c fsusage.c mem.c \
+ procopenfiles.c procwd.c \
+- glibtop_private.c
++ procaffinity.c \
++ glibtop_private.c mountlist.c
+
+ libgtop_sysdeps_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
+ libgtop_sysdeps_suid_2_0_la_LIBADD = $(KVM_LIBS) $(EXTRA_SYSDEPS_LIBS)
+@@ -377,6 +378,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsusage.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mountlist.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glibtop_private.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadavg.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Plo@am__quote@
+@@ -398,6 +400,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proctime.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/procuid.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/procwd.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/procaffinity.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sem_limits.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shm_limits.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siglist.Plo@am__quote@
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_fsusage.c b/devel/libgtop/files/patch-sysdeps_freebsd_fsusage.c
new file mode 100644
index 000000000..90da05b1b
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_fsusage.c
@@ -0,0 +1,61 @@
+--- sysdeps/freebsd/fsusage.c.orig 2007-06-03 16:06:05.000000000 -0400
++++ sysdeps/freebsd/fsusage.c 2008-02-09 19:50:44.000000000 -0500
+@@ -10,6 +10,7 @@
+ #include <unistd.h>
+ #include <sys/param.h>
+ #include <sys/mount.h>
++#include <sys/statvfs.h>
+ #if __FreeBSD_version >= 600000 || defined(__FreeBSD_kernel__)
+ #include <libgeom.h>
+ #include <sys/resource.h>
+@@ -21,15 +22,13 @@
+ #include <string.h>
+ #include <stdlib.h>
+
+-void
+-_glibtop_freebsd_get_fsusage_read_write(glibtop *server,
+- glibtop_fsusage *buf,
+- const char *path);
++static const unsigned long _glibtop_sysdeps_fsusage =
++(1L << GLIBTOP_FSUSAGE_BLOCKS) + (1L << GLIBTOP_FSUSAGE_BFREE)
+++ (1L << GLIBTOP_FSUSAGE_BAVAIL) + (1L << GLIBTOP_FSUSAGE_FILES)
+++ (1L << GLIBTOP_FSUSAGE_FFREE) + (1L << GLIBTOP_FSUSAGE_BLOCK_SIZE);
+
+-void
+-_glibtop_freebsd_get_fsusage_read_write(glibtop *server,
+- glibtop_fsusage *buf,
+- const char *path)
++static void
++_glibtop_get_fsusage_read_write (glibtop *server, glibtop_fsusage *buf, const char *path)
+ {
+ int result;
+ struct statfs sfs;
+@@ -135,3 +134,28 @@ _glibtop_freebsd_get_fsusage_read_write(
+ #endif
+ buf->flags |= (1 << GLIBTOP_FSUSAGE_READ) | (1 << GLIBTOP_FSUSAGE_WRITE);
+ }
++
++void
++glibtop_get_fsusage_s(glibtop *server, glibtop_fsusage *buf, const char *path)
++{
++ struct statvfs fsd;
++
++ glibtop_init_r (&server, 0, 0);
++
++ memset (buf, 0, sizeof (glibtop_fsusage));
++
++ if (statvfs (path, &fsd) < 0)
++ return;
++
++ buf->block_size = fsd.f_frsize;
++ buf->blocks = fsd.f_blocks;
++ buf->bfree = fsd.f_bfree;
++ buf->bavail = (fsd.f_bavail > fsd.f_bfree) ? 0 : fsd.f_bavail;
++ buf->files = fsd.f_files;
++ buf->ffree = fsd.f_ffree;
++
++ buf->flags = _glibtop_sysdeps_fsusage;
++
++ _glibtop_get_fsusage_read_write(server, buf, path);
++}
++
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_glibtop_server.h b/devel/libgtop/files/patch-sysdeps_freebsd_glibtop_server.h
new file mode 100644
index 000000000..ee797acf6
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_glibtop_server.h
@@ -0,0 +1,10 @@
+--- sysdeps/freebsd/glibtop_server.h.orig 2008-05-25 14:26:13.000000000 -0400
++++ sysdeps/freebsd/glibtop_server.h 2008-05-25 14:26:30.000000000 -0400
+@@ -46,6 +46,7 @@ G_BEGIN_DECLS
+ #define GLIBTOP_SUID_SEM_LIMITS 0
+ #define GLIBTOP_SUID_NETLIST 0
+ #define GLIBTOP_SUID_PROC_WD 0
++#define GLIBTOP_SUID_PROC_AFFINITY 0
+
+ G_END_DECLS
+
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_mountlist.c b/devel/libgtop/files/patch-sysdeps_freebsd_mountlist.c
new file mode 100644
index 000000000..7c1b1774c
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_mountlist.c
@@ -0,0 +1,171 @@
+--- sysdeps/freebsd/mountlist.c.orig 2008-02-15 02:11:59.000000000 -0500
++++ sysdeps/freebsd/mountlist.c 2008-02-15 02:28:14.000000000 -0500
+@@ -0,0 +1,168 @@
++/* mountlist.c -- return a list of mounted filesystems
++ Copyright (C) 1991, 1992 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2, or (at your option)
++ any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#include <config.h>
++
++#include <glib.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/param.h>
++#include <sys/mount.h>
++
++#include <string.h>
++
++#include <glibtop.h>
++#include <glibtop/mountlist.h>
++
++/* A mount table entry. */
++struct mount_entry
++{
++ char *me_devname; /* Device node pathname, including "/dev/". */
++ char *me_mountdir; /* Mount point directory pathname. */
++ char *me_type; /* "nfs", "4.2", etc. */
++ dev_t me_dev; /* Device number of me_mountdir. */
++ struct mount_entry *me_next;
++};
++
++static struct mount_entry *read_filesystem_list (void);
++
++/* Return a list of the currently mounted filesystems, or NULL on error.
++ Add each entry to the tail of the list so that they stay in order.
++*/
++
++static struct mount_entry *
++read_filesystem_list (void)
++{
++ struct mount_entry *mount_list;
++ struct mount_entry *me;
++ struct mount_entry *mtail;
++
++ /* Start the list off with a dummy entry. */
++ me = g_new (struct mount_entry, 1);
++ me->me_next = NULL;
++ mount_list = mtail = me;
++ {
++ struct statfs *fsp;
++ int entries;
++
++ entries = getmntinfo (&fsp, MNT_NOWAIT);
++ if (entries < 0)
++ return NULL;
++ while (entries-- > 0)
++ {
++ me = (struct mount_entry *) g_malloc (sizeof (struct mount_entry));
++ me->me_devname = g_strdup (fsp->f_mntfromname);
++ me->me_mountdir = g_strdup (fsp->f_mntonname);
++ me->me_type = g_strdup (fsp->f_fstypename);
++ me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
++ me->me_next = NULL;
++
++ /* Add to the linked list. */
++ mtail->me_next = me;
++ mtail = me;
++ fsp++;
++ }
++ }
++
++ /* Free the dummy head. */
++ me = mount_list;
++ mount_list = mount_list->me_next;
++ g_free (me);
++ return mount_list;
++}
++
++static gboolean ignore_mount_entry(const struct mount_entry *me)
++{
++ /* keep sorted */
++ static const char ignored[][17] = {
++ "autofs",
++ "devfs",
++ "fusectl",
++ "linprocfs",
++ "linsysfs",
++ "mfs",
++ "none",
++ "nfs",
++ "nullfs",
++ "nwfs",
++ "portalfs",
++ "proc",
++ "procfs",
++ "smbfs",
++ "tmpfs",
++ "unionfs",
++ "unknown"
++ };
++
++ typedef int (*Comparator)(const void*, const void*);
++
++ return bsearch(me->me_type,
++ ignored, G_N_ELEMENTS(ignored), sizeof ignored[0],
++ (Comparator) strcmp) != NULL;
++}
++
++
++glibtop_mountentry *
++glibtop_get_mountlist_s (glibtop *server, glibtop_mountlist *buf, int all_fs)
++{
++ struct mount_entry *entries, *cur, *next;
++
++ GArray *mount_array = g_array_new(FALSE, FALSE,
++ sizeof(glibtop_mountentry));
++
++ glibtop_init_r (&server, 0, 0);
++
++ memset (buf, 0, sizeof (glibtop_mountlist));
++
++ /* Read filesystem list. */
++
++ if((entries = read_filesystem_list ()) == NULL)
++ return NULL;
++
++ for (cur = &entries[0]; cur != NULL; cur = next) {
++
++ if(all_fs || !ignore_mount_entry(cur)) {
++ /* add a new glibtop_mountentry */
++ glibtop_mountentry e;
++
++ g_strlcpy(e.devname, cur->me_devname, sizeof e.devname);
++ g_strlcpy(e.mountdir, cur->me_mountdir, sizeof e.mountdir);
++ g_strlcpy(e.type, cur->me_type, sizeof e.type);
++ e.dev = cur->me_dev;
++
++ g_array_append_val(mount_array, e);
++ }
++
++ /* free current mount_entry and move to the next */
++ next = cur->me_next;
++ g_free(cur->me_devname);
++ g_free(cur->me_mountdir);
++ g_free(cur->me_type);
++ g_free(cur);
++ }
++
++ buf->size = sizeof (glibtop_mountentry);
++ buf->number = mount_array->len;
++ buf->total = buf->number * buf->size;
++
++ buf->flags = (1 << GLIBTOP_MOUNTLIST_SIZE)
++ | (1 << GLIBTOP_MOUNTLIST_NUMBER)
++ | (1 << GLIBTOP_MOUNTLIST_TOTAL);
++
++ return (glibtop_mountentry*) g_array_free(mount_array, FALSE);
++}
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_procaffinity.c b/devel/libgtop/files/patch-sysdeps_freebsd_procaffinity.c
new file mode 100644
index 000000000..8b0e82960
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_procaffinity.c
@@ -0,0 +1,87 @@
+--- sysdeps/freebsd/procaffinity.c.orig 2008-05-25 14:42:56.000000000 -0400
++++ sysdeps/freebsd/procaffinity.c 2008-05-25 14:44:25.000000000 -0400
+@@ -0,0 +1,84 @@
++/* Copyright (C) 2007 Joe Marcus Clarke <marcus@FreeBSD.org>
++ This file is part of LibGTop 2.
++
++ LibGTop is free software; you can redistribute it and/or modify it
++ under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License,
++ or (at your option) any later version.
++
++ LibGTop is distributed in the hope that it will be useful, but WITHOUT
++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++ for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with LibGTop; see the file COPYING. If not, write to the
++ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++*/
++
++#include <config.h>
++#include <glibtop/procaffinity.h>
++#include <glibtop/error.h>
++
++#include <glibtop_private.h>
++
++#include <sys/param.h>
++#if __FreeBSD_version > 800024
++#include <sys/cpuset.h>
++#endif
++
++void
++_glibtop_init_proc_affinity_s(glibtop *server)
++{
++ server->sysdeps.proc_affinity =
++ (1 << GLIBTOP_PROC_AFFINITY_NUMBER) |
++ (1 << GLIBTOP_PROC_AFFINITY_ALL);
++
++}
++
++
++guint16 *
++glibtop_get_proc_affinity_s(glibtop *server, glibtop_proc_affinity *buf, pid_t pid)
++{
++#if __FreeBSD_version > 800024
++ id_t id;
++ cpulevel_t level;
++ cpuwhich_t which;
++ cpuset_t mask;
++ size_t i;
++ GArray* cpus;
++
++ memset(buf, 0, sizeof *buf);
++
++ which = CPU_WHICH_PID;
++ level = CPU_LEVEL_WHICH;
++ id = pid;
++
++ if (cpuset_getaffinity(level, which, id, sizeof(mask), &mask) != 0) {
++ glibtop_error_r(server, "cpuset_getaffinity failed");
++ return NULL;
++ }
++
++ cpus = g_array_new(FALSE, FALSE, sizeof(guint16));
++
++ for (i = 0; i < MIN(CPU_SETSIZE, (size_t)(server->ncpu + 1)); i++) {
++ if (CPU_ISSET(i, &mask)) {
++ guint16 n = i;
++ g_array_append_val(cpus, n);
++ }
++ }
++
++ buf->number = cpus->len;
++ buf->all = (cpus->len == (size_t)(server->ncpu + 1));
++ buf->flags = (1 << GLIBTOP_PROC_AFFINITY_NUMBER)
++ | (1 << GLIBTOP_PROC_AFFINITY_ALL);
++
++ return (guint16*) g_array_free(cpus, FALSE);
++#else
++ memset(buf, 0, sizeof *buf);
++
++ return NULL;
++#endif
++}
++
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_procopenfiles.c b/devel/libgtop/files/patch-sysdeps_freebsd_procopenfiles.c
new file mode 100644
index 000000000..8c83d13f2
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_procopenfiles.c
@@ -0,0 +1,229 @@
+--- sysdeps/freebsd/procopenfiles.c.orig 2008-05-23 18:13:23.000000000 -0400
++++ sysdeps/freebsd/procopenfiles.c 2008-05-25 14:58:20.000000000 -0400
+@@ -28,6 +28,13 @@
+ #include <glibtop/error.h>
+ #include <glibtop/procopenfiles.h>
+ #include <sys/types.h>
++#include <sys/socket.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#include <sys/un.h>
++#include <sys/user.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
+ #include <string.h>
+ #include <stdlib.h>
+
+@@ -46,6 +53,63 @@ _glibtop_init_proc_open_files_s (glibtop
+ server->sysdeps.proc_open_files = _glibtop_sysdeps_proc_open_files;
+ }
+
++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104)
++static char *
++addr_to_string(struct sockaddr_storage *ss)
++{
++ char *buffer = NULL;
++ char buffer2[INET6_ADDRSTRLEN];
++ struct sockaddr_in6 *sin6;
++ struct sockaddr_in *sin;
++ struct sockaddr_un *sun;
++
++ switch (ss->ss_family) {
++ case AF_LOCAL:
++ sun = (struct sockaddr_un *)ss;
++ if (strlen(sun->sun_path) == 0)
++ buffer = g_strdup("-");
++ else
++ buffer = g_strdup(sun->sun_path);
++ break;
++ case AF_INET:
++ sin = (struct sockaddr_in *)ss;
++ buffer = g_strdup(inet_ntoa(sin->sin_addr));
++ break;
++ case AF_INET6:
++ sin6 = (struct sockaddr_in6 *)ss;
++ if (inet_ntop(AF_INET6, &sin6->sin6_addr, buffer2,
++ sizeof(buffer2)) != NULL)
++ buffer = g_strdup(buffer2);
++ else
++ buffer = g_strdup("-");
++ break;
++ }
++
++ return buffer;
++}
++
++static int
++addr_to_port(struct sockaddr_storage *ss)
++{
++ int port = 0;
++ struct sockaddr_in6 *sin6;
++ struct sockaddr_in *sin;
++
++ switch (ss->ss_family) {
++ case AF_INET:
++ sin = (struct sockaddr_in *)ss;
++ port = ntohs(sin->sin_port);
++ break;
++ case AF_INET6:
++ sin6 = (struct sockaddr_in6 *)ss;
++ port = ntohs(sin6->sin6_port);
++ break;
++ }
++
++ return port;
++}
++#else
++
+ static GArray *
+ parse_output(const char *output) {
+ GArray *entries;
+@@ -143,6 +207,39 @@ parse_output(const char *output) {
+ entry.info.sock.dest_port = atoi(remote_host[1]);
+
+ g_strfreev(remote_host);
++ } else if (!strcmp(ftype, "IPv6")) {
++ char **hosts;
++ char **remote_host;
++
++ if (!strstr(fname, "->")) {
++ remote_host = g_strsplit(fname, ":", 0);
++ } else {
++ hosts = g_strsplit(fname, "->", 0);
++ if (g_strv_length(hosts) < 2) {
++ g_strfreev(hosts);
++ continue;
++ }
++
++ remote_host = g_strsplit(hosts[1], "]", 0);
++ g_strfreev(hosts);
++ }
++
++ if (g_strv_length(remote_host) < 2) {
++ g_strfreev(remote_host);
++ continue;
++ }
++
++ entry.type = GLIBTOP_FILE_TYPE_INET6SOCKET;
++ if (!strcmp(remote_host[0], "*"))
++ g_strlcpy(entry.info.sock.dest_host, "0.0.0.0",
++ sizeof(entry.info.sock.dest_host));
++ else
++ g_strlcpy(entry.info.sock.dest_host,
++ remote_host[0] + 1,
++ sizeof(entry.info.sock.dest_host));
++ entry.info.sock.dest_port = atoi(remote_host[1] + 1);
++
++ g_strfreev(remote_host);
+ } else
+ continue;
+
+@@ -159,21 +256,108 @@ parse_output(const char *output) {
+
+ return entries;
+ }
++#endif
+
+ glibtop_open_files_entry *
+ glibtop_get_proc_open_files_s (glibtop *server, glibtop_proc_open_files *buf, pid_t pid)
+ {
++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104)
++ struct kinfo_file *freep, *kif;
++ int name[4];
++ size_t len;
++ size_t i;
++#else
+ char *output;
++#endif
+ GArray *entries;
+
+ memset(buf, 0, sizeof (glibtop_proc_open_files));
+
++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104)
++ name[0] = CTL_KERN;
++ name[1] = KERN_PROC;
++ name[2] = KERN_PROC_FILEDESC;
++ name[3] = pid;
++
++ if (sysctl(name, 4, NULL, &len, NULL, 0) < 0)
++ return NULL;
++
++ freep = kif = g_malloc(len);
++ if (sysctl(name, 4, kif, &len, NULL, 0) < 0) {
++ g_free(freep);
++ return NULL;
++ }
++
++ entries = g_array_new(FALSE, FALSE, sizeof(glibtop_open_files_entry));
++
++ for (i = 0; i < len / sizeof(*kif); i++, kif++) {
++ glibtop_open_files_entry entry = {0};
++
++ if (kif->kf_fd < 0)
++ continue;
++
++ if (kif->kf_type == KF_TYPE_SOCKET) {
++ if (kif->kf_sock_domain == AF_LOCAL) {
++ struct sockaddr_un *sun;
++
++ entry.type = GLIBTOP_FILE_TYPE_LOCALSOCKET;
++ sun = (struct sockaddr_un *)&kif->kf_sa_local;
++
++ if (sun->sun_path[0]) {
++ char *addrstr;
++
++ addrstr = addr_to_string(&kif->kf_sa_local);
++ g_strlcpy(entry.info.localsock.name,
++ addrstr,
++ sizeof(entry.info.localsock.name));
++ g_free(addrstr);
++ } else {
++ char *addrstr;
++
++ addrstr = addr_to_string(&kif->kf_sa_peer);
++ g_strlcpy(entry.info.localsock.name,
++ addrstr,
++ sizeof(entry.info.localsock.name));
++ g_free(addrstr);
++ }
++ } else if (kif->kf_sock_domain == AF_INET ||
++ kif->kf_sock_domain == AF_INET6) {
++ char *addrstr;
++
++ if (kif->kf_sock_domain == AF_INET)
++ entry.type = GLIBTOP_FILE_TYPE_INETSOCKET;
++ else
++ entry.type = GLIBTOP_FILE_TYPE_INET6SOCKET;
++ addrstr = addr_to_string(&kif->kf_sa_peer);
++ g_strlcpy(entry.info.sock.dest_host,
++ addrstr,
++ sizeof(entry.info.sock.dest_host));
++ g_free(addrstr);
++ entry.info.sock.dest_port = addr_to_port(&kif->kf_sa_peer);
++ }
++ } else if (kif->kf_type == KF_TYPE_PIPE) {
++ entry.type = GLIBTOP_FILE_TYPE_PIPE;
++ } else if (kif->kf_type == KF_TYPE_VNODE) {
++ entry.type = GLIBTOP_FILE_TYPE_FILE;
++ g_strlcpy(entry.info.file.name, kif->kf_path,
++ sizeof(entry.info.file.name));
++ } else
++ continue;
++
++ entry.fd = kif->kf_fd;
++
++ g_array_append_val(entries, entry);
++ }
++ g_free(freep);
++#else
++
+ output = execute_lsof(pid);
+ if (output == NULL) return NULL;
+
+ entries = parse_output(output);
+
+ g_free(output);
++#endif
+
+ buf->flags = _glibtop_sysdeps_proc_open_files;
+ buf->number = entries->len;
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_procwd.c b/devel/libgtop/files/patch-sysdeps_freebsd_procwd.c
new file mode 100644
index 000000000..d6fb5063d
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_procwd.c
@@ -0,0 +1,94 @@
+--- sysdeps/freebsd/procwd.c.orig 2008-02-09 12:46:32.000000000 -0500
++++ sysdeps/freebsd/procwd.c 2008-02-09 12:48:24.000000000 -0500
+@@ -24,7 +24,9 @@
+ #include <glibtop_private.h>
+
+ #include <sys/types.h>
++#include <sys/sysctl.h>
+ #include <sys/param.h>
++#include <sys/user.h>
+ #include <string.h>
+
+ static const unsigned long _glibtop_sysdeps_proc_wd =
+@@ -38,6 +40,7 @@ _glibtop_init_proc_wd_s(glibtop *server)
+ server->sysdeps.proc_wd = _glibtop_sysdeps_proc_wd;
+ }
+
++#if (__FreeBSD_version >= 800000 && __FreeBSD_version < 800019) || _FreeBSD_version < 700104
+ static GPtrArray *
+ parse_output(const char *output, glibtop_proc_wd *buf)
+ {
+@@ -89,12 +92,21 @@ parse_output(const char *output, glibtop
+
+ return dirs;
+ }
++#endif
+
+ char**
+ glibtop_get_proc_wd_s(glibtop *server, glibtop_proc_wd *buf, pid_t pid)
+ {
+ char path[MAXPATHLEN];
++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104)
++ struct kinfo_file *freep, *kif;
++ GPtrArray *dirs;
++ size_t len;
++ int i;
++ int name[4];
++#else
+ char *output;
++#endif
+
+ memset (buf, 0, sizeof (glibtop_proc_wd));
+
+@@ -102,6 +114,43 @@ glibtop_get_proc_wd_s(glibtop *server, g
+ if (safe_readlink(path, buf->exe, sizeof(buf->exe)))
+ buf->flags |= (1 << GLIBTOP_PROC_WD_EXE);
+
++#if __FreeBSD_version > 800018 || (__FreeBSD_version < 800000 && __FreeBSD_version >= 700104)
++ name[0] = CTL_KERN;
++ name[1] = KERN_PROC;
++ name[2] = KERN_PROC_FILEDESC;
++ name[3] = pid;
++
++ if (sysctl(name, 4, NULL, &len, NULL, 0) < 0)
++ return NULL;
++ freep = kif = g_malloc(len);
++ if (sysctl(name, 4, kif, &len, NULL, 0) < 0) {
++ g_free(freep);
++ return NULL;
++ }
++
++ dirs = g_ptr_array_sized_new(1);
++
++ for (i = 0; i < len / sizeof(*kif); i++, kif++) {
++ switch (kif->kf_fd) {
++ case KF_FD_TYPE_ROOT:
++ g_strlcpy(buf->root, kif->kf_path,
++ sizeof(buf->root));
++ buf->flags |= (1 << GLIBTOP_PROC_WD_ROOT);
++ break;
++ case KF_FD_TYPE_CWD:
++ g_ptr_array_add(dirs, g_strdup (kif->kf_path));
++ break;
++ }
++ }
++ g_free(freep);
++
++ buf->number = dirs->len;
++ buf->flags |= (1 << GLIBTOP_PROC_WD_NUMBER);
++
++ g_ptr_array_add(dirs, NULL);
++
++ return (char **)g_ptr_array_free(dirs, FALSE);
++#else
+ output = execute_lsof(pid);
+ if (output != NULL) {
+ GPtrArray *dirs;
+@@ -116,6 +165,7 @@ glibtop_get_proc_wd_s(glibtop *server, g
+
+ return (char **)g_ptr_array_free(dirs, FALSE);
+ }
++#endif
+
+ return NULL;
+ }
diff --git a/devel/libgtop/files/patch-sysdeps_freebsd_shm_limits.c b/devel/libgtop/files/patch-sysdeps_freebsd_shm_limits.c
new file mode 100644
index 000000000..8fa00f388
--- /dev/null
+++ b/devel/libgtop/files/patch-sysdeps_freebsd_shm_limits.c
@@ -0,0 +1,22 @@
+--- sysdeps/freebsd/shm_limits.c.orig 2008-02-14 12:26:46.000000000 -0500
++++ sysdeps/freebsd/shm_limits.c 2008-02-14 12:26:29.000000000 -0500
+@@ -25,6 +25,7 @@
+ #include <glibtop/shm_limits.h>
+
+ #include <sys/types.h>
++#include <sys/param.h>
+ #include <sys/sysctl.h>
+
+ static unsigned long _glibtop_sysdeps_shm_limits =
+@@ -46,7 +47,11 @@ void
+ glibtop_get_shm_limits_s (glibtop *server, glibtop_shm_limits *buf)
+ {
+ size_t len;
++#if __FreeBSD_version < 700002
+ int shmmax, shmmin, shmmni, shmseg, shmall;
++#else
++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall;
++#endif
+
+ glibtop_init_s (&server, GLIBTOP_SYSDEPS_SHM_LIMITS, 0);
+
diff --git a/devel/libgtop/files/pkg-message b/devel/libgtop/files/pkg-message
new file mode 100644
index 000000000..dacaf62a9
--- /dev/null
+++ b/devel/libgtop/files/pkg-message
@@ -0,0 +1,13 @@
+===============================================================================
+
+In order to use the File System read/write monitor, you must chmod
+/dev/devstat so that all users can open it read-only. For example:
+
+# chmod 0444 /dev/devstat
+
+In order for this to persist across reboots, add the following to
+/etc/devfs.conf:
+
+perm devstat 0444
+
+===============================================================================
diff --git a/devel/libgtop/pkg-descr b/devel/libgtop/pkg-descr
new file mode 100644
index 000000000..f263f1127
--- /dev/null
+++ b/devel/libgtop/pkg-descr
@@ -0,0 +1,3 @@
+This library provides the backend for gtop2, a GNOME 2.0 version
+of top(1) that allows display and manipulation of running
+processes.
diff --git a/devel/libgtop/pkg-plist b/devel/libgtop/pkg-plist
new file mode 100644
index 000000000..39ec1d217
--- /dev/null
+++ b/devel/libgtop/pkg-plist
@@ -0,0 +1,200 @@
+bin/libgtop_daemon2
+bin/libgtop_server2
+include/libgtop-2.0/glibtop.h
+include/libgtop-2.0/glibtop/close.h
+include/libgtop-2.0/glibtop/command.h
+include/libgtop-2.0/glibtop/cpu.h
+include/libgtop-2.0/glibtop/fsusage.h
+include/libgtop-2.0/glibtop/global.h
+include/libgtop-2.0/glibtop/gnuserv.h
+include/libgtop-2.0/glibtop/loadavg.h
+include/libgtop-2.0/glibtop/mem.h
+include/libgtop-2.0/glibtop/mountlist.h
+include/libgtop-2.0/glibtop/msg_limits.h
+include/libgtop-2.0/glibtop/netlist.h
+include/libgtop-2.0/glibtop/netload.h
+include/libgtop-2.0/glibtop/open.h
+include/libgtop-2.0/glibtop/parameter.h
+include/libgtop-2.0/glibtop/ppp.h
+include/libgtop-2.0/glibtop/procaffinity.h
+include/libgtop-2.0/glibtop/procargs.h
+include/libgtop-2.0/glibtop/prockernel.h
+include/libgtop-2.0/glibtop/proclist.h
+include/libgtop-2.0/glibtop/procmap.h
+include/libgtop-2.0/glibtop/procmem.h
+include/libgtop-2.0/glibtop/procopenfiles.h
+include/libgtop-2.0/glibtop/procsegment.h
+include/libgtop-2.0/glibtop/procsignal.h
+include/libgtop-2.0/glibtop/procstate.h
+include/libgtop-2.0/glibtop/proctime.h
+include/libgtop-2.0/glibtop/procuid.h
+include/libgtop-2.0/glibtop/procwd.h
+include/libgtop-2.0/glibtop/sem_limits.h
+include/libgtop-2.0/glibtop/shm_limits.h
+include/libgtop-2.0/glibtop/signal.h
+include/libgtop-2.0/glibtop/swap.h
+include/libgtop-2.0/glibtop/sysdeps.h
+include/libgtop-2.0/glibtop/sysinfo.h
+include/libgtop-2.0/glibtop/union.h
+include/libgtop-2.0/glibtop/uptime.h
+include/libgtop-2.0/glibtop/version.h
+include/libgtop-2.0/glibtop_machine.h
+include/libgtop-2.0/glibtop_private.h
+include/libgtop-2.0/glibtop_server.h
+include/libgtop-2.0/glibtop_suid.h
+include/libgtop-2.0/libgtopconfig.h
+lib/libgtop-2.0.a
+lib/libgtop-2.0.la
+lib/libgtop-2.0.so
+lib/libgtop-2.0.so.7
+libdata/pkgconfig/libgtop-2.0.pc
+%%DOCSDIR%%/home.png
+%%DOCSDIR%%/index.html
+%%DOCSDIR%%/index.sgml
+%%DOCSDIR%%/left.png
+%%DOCSDIR%%/libgtop-Close.html
+%%DOCSDIR%%/libgtop-Command.html
+%%DOCSDIR%%/libgtop-GlibTop-Server.html
+%%DOCSDIR%%/libgtop-GlibTop.html
+%%DOCSDIR%%/libgtop-Net-List.html
+%%DOCSDIR%%/libgtop-Net-Load.html
+%%DOCSDIR%%/libgtop-PPP.html
+%%DOCSDIR%%/libgtop-Shared-Memory-Limits.html
+%%DOCSDIR%%/libgtop-Uptime.html
+%%DOCSDIR%%/libgtop-cpu.html
+%%DOCSDIR%%/libgtop-fsusage.html
+%%DOCSDIR%%/libgtop-lib.html
+%%DOCSDIR%%/libgtop-loadavg.html
+%%DOCSDIR%%/libgtop-mem.html
+%%DOCSDIR%%/libgtop-mountlist.html
+%%DOCSDIR%%/libgtop-msg-limits.html
+%%DOCSDIR%%/libgtop-open.html
+%%DOCSDIR%%/libgtop-parameter.html
+%%DOCSDIR%%/libgtop-procargs.html
+%%DOCSDIR%%/libgtop-prockernel.html
+%%DOCSDIR%%/libgtop-proclist.html
+%%DOCSDIR%%/libgtop-procmap.html
+%%DOCSDIR%%/libgtop-procmem.html
+%%DOCSDIR%%/libgtop-procopenfiles.html
+%%DOCSDIR%%/libgtop-procsegment.html
+%%DOCSDIR%%/libgtop-procsignal.html
+%%DOCSDIR%%/libgtop-procstate.html
+%%DOCSDIR%%/libgtop-proctime.html
+%%DOCSDIR%%/libgtop-procuid.html
+%%DOCSDIR%%/libgtop-sem-limits.html
+%%DOCSDIR%%/libgtop-signal.html
+%%DOCSDIR%%/libgtop-swap.html
+%%DOCSDIR%%/libgtop-sysdeps.html
+%%DOCSDIR%%/libgtop-sysinfo.html
+%%DOCSDIR%%/libgtop-union.html
+%%DOCSDIR%%/libgtop-version.html
+%%DOCSDIR%%/libgtop-white-paper-overview.html
+%%DOCSDIR%%/libgtop-white-paper.html
+%%DOCSDIR%%/libgtop.devhelp
+%%DOCSDIR%%/libgtop.devhelp2
+%%DOCSDIR%%/right.png
+%%DOCSDIR%%/style.css
+%%DOCSDIR%%/up.png
+share/locale/am/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ar/LC_MESSAGES/libgtop-2.0.mo
+share/locale/az/LC_MESSAGES/libgtop-2.0.mo
+share/locale/be/LC_MESSAGES/libgtop-2.0.mo
+share/locale/bg/LC_MESSAGES/libgtop-2.0.mo
+share/locale/bn/LC_MESSAGES/libgtop-2.0.mo
+share/locale/bn_IN/LC_MESSAGES/libgtop-2.0.mo
+share/locale/bs/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ca/LC_MESSAGES/libgtop-2.0.mo
+share/locale/cs/LC_MESSAGES/libgtop-2.0.mo
+share/locale/cy/LC_MESSAGES/libgtop-2.0.mo
+share/locale/da/LC_MESSAGES/libgtop-2.0.mo
+share/locale/de/LC_MESSAGES/libgtop-2.0.mo
+share/locale/dz/LC_MESSAGES/libgtop-2.0.mo
+share/locale/el/LC_MESSAGES/libgtop-2.0.mo
+share/locale/en_CA/LC_MESSAGES/libgtop-2.0.mo
+share/locale/en_GB/LC_MESSAGES/libgtop-2.0.mo
+share/locale/eo/LC_MESSAGES/libgtop-2.0.mo
+share/locale/es/LC_MESSAGES/libgtop-2.0.mo
+share/locale/et/LC_MESSAGES/libgtop-2.0.mo
+share/locale/eu/LC_MESSAGES/libgtop-2.0.mo
+share/locale/fa/LC_MESSAGES/libgtop-2.0.mo
+share/locale/fi/LC_MESSAGES/libgtop-2.0.mo
+share/locale/fr/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ga/LC_MESSAGES/libgtop-2.0.mo
+share/locale/gl/LC_MESSAGES/libgtop-2.0.mo
+share/locale/gu/LC_MESSAGES/libgtop-2.0.mo
+share/locale/he/LC_MESSAGES/libgtop-2.0.mo
+share/locale/hi/LC_MESSAGES/libgtop-2.0.mo
+share/locale/hr/LC_MESSAGES/libgtop-2.0.mo
+share/locale/hu/LC_MESSAGES/libgtop-2.0.mo
+share/locale/id/LC_MESSAGES/libgtop-2.0.mo
+share/locale/it/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ja/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ka/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ko/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ku/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ky/LC_MESSAGES/libgtop-2.0.mo
+share/locale/lt/LC_MESSAGES/libgtop-2.0.mo
+share/locale/lv/LC_MESSAGES/libgtop-2.0.mo
+share/locale/mg/LC_MESSAGES/libgtop-2.0.mo
+share/locale/mi/LC_MESSAGES/libgtop-2.0.mo
+share/locale/mk/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ml/LC_MESSAGES/libgtop-2.0.mo
+share/locale/mn/LC_MESSAGES/libgtop-2.0.mo
+share/locale/mr/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ms/LC_MESSAGES/libgtop-2.0.mo
+share/locale/nb/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ne/LC_MESSAGES/libgtop-2.0.mo
+share/locale/nl/LC_MESSAGES/libgtop-2.0.mo
+share/locale/nn/LC_MESSAGES/libgtop-2.0.mo
+share/locale/oc/LC_MESSAGES/libgtop-2.0.mo
+share/locale/or/LC_MESSAGES/libgtop-2.0.mo
+share/locale/pa/LC_MESSAGES/libgtop-2.0.mo
+share/locale/pl/LC_MESSAGES/libgtop-2.0.mo
+share/locale/pt/LC_MESSAGES/libgtop-2.0.mo
+share/locale/pt_BR/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ro/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ru/LC_MESSAGES/libgtop-2.0.mo
+share/locale/rw/LC_MESSAGES/libgtop-2.0.mo
+share/locale/sk/LC_MESSAGES/libgtop-2.0.mo
+share/locale/sl/LC_MESSAGES/libgtop-2.0.mo
+share/locale/sq/LC_MESSAGES/libgtop-2.0.mo
+share/locale/sr/LC_MESSAGES/libgtop-2.0.mo
+share/locale/sr@Latn/LC_MESSAGES/libgtop-2.0.mo
+share/locale/sv/LC_MESSAGES/libgtop-2.0.mo
+share/locale/ta/LC_MESSAGES/libgtop-2.0.mo
+share/locale/te/LC_MESSAGES/libgtop-2.0.mo
+share/locale/th/LC_MESSAGES/libgtop-2.0.mo
+share/locale/tr/LC_MESSAGES/libgtop-2.0.mo
+share/locale/uk/LC_MESSAGES/libgtop-2.0.mo
+share/locale/vi/LC_MESSAGES/libgtop-2.0.mo
+share/locale/xh/LC_MESSAGES/libgtop-2.0.mo
+share/locale/zh_CN/LC_MESSAGES/libgtop-2.0.mo
+share/locale/zh_HK/LC_MESSAGES/libgtop-2.0.mo
+share/locale/zh_TW/LC_MESSAGES/libgtop-2.0.mo
+@dirrm %%DOCSDIR%%
+@dirrm include/libgtop-2.0/glibtop
+@dirrm include/libgtop-2.0
+@dirrmtry share/locale/zh_HK/LC_MESSAGES
+@dirrmtry share/locale/zh_HK
+@dirrmtry share/locale/xh/LC_MESSAGES
+@dirrmtry share/locale/xh
+@dirrmtry share/locale/te/LC_MESSAGES
+@dirrmtry share/locale/te
+@dirrmtry share/locale/rw/LC_MESSAGES
+@dirrmtry share/locale/rw
+@dirrmtry share/locale/oc/LC_MESSAGES
+@dirrmtry share/locale/oc
+@dirrmtry share/locale/mr/LC_MESSAGES
+@dirrmtry share/locale/mr
+@dirrmtry share/locale/mi/LC_MESSAGES
+@dirrmtry share/locale/mi
+@dirrmtry share/locale/mg/LC_MESSAGES
+@dirrmtry share/locale/mg
+@dirrmtry share/locale/ky/LC_MESSAGES
+@dirrmtry share/locale/ky
+@dirrmtry share/locale/ku/LC_MESSAGES
+@dirrmtry share/locale/ku
+@dirrmtry share/locale/dz/LC_MESSAGES
+@dirrmtry share/locale/dz
+@dirrmtry share/locale/bn_IN/LC_MESSAGES
+@dirrmtry share/locale/bn_IN