diff options
author | jdolecek <jdolecek@pkgsrc.org> | 2001-09-22 14:51:49 +0000 |
---|---|---|
committer | jdolecek <jdolecek@pkgsrc.org> | 2001-09-22 14:51:49 +0000 |
commit | e761df1f5d09e40eb8433d8db8ec1f142dad9a1b (patch) | |
tree | 01931d912659a223d039f158c0e1a1233ad3c77a | |
parent | e7e56f249d13d1868ff059f40cae79d4ae900cfc (diff) | |
download | pkgsrc-e761df1f5d09e40eb8433d8db8ec1f142dad9a1b.tar.gz |
Changes to kcontrol/info/info_netbsd.cpp:
GetDmesgInfo():
- changed to support '^foobar' in the filter string
- the filter function is now supposed to add the appropriate stuff
to passed QListView immediatelly, opaque/final is not passed any more
Couple fixes to kcontrol Information stuff:
- fix the display of IRQs, simplify the AddIRQLine(), use the QListView sort
facilities instead separate QStrList
- remove the 'waiting x seconds for devices to settle' on SCSI display
- fix the display of audio devices
- include Total Size and Free Size on Partition display, remove parentheses
in Mount Options
The patch will be fed to KDE Team for inclusion in future KDE versions.
-rw-r--r-- | x11/kdebase2/distinfo | 3 | ||||
-rw-r--r-- | x11/kdebase2/patches/patch-ba | 256 |
2 files changed, 258 insertions, 1 deletions
diff --git a/x11/kdebase2/distinfo b/x11/kdebase2/distinfo index 59d940139dc..2d4aa41057a 100644 --- a/x11/kdebase2/distinfo +++ b/x11/kdebase2/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.5 2001/09/07 14:34:33 drochner Exp $ +$NetBSD: distinfo,v 1.6 2001/09/22 14:51:49 jdolecek Exp $ SHA1 (kdebase-2.1.1.tar.bz2) = af38d452c957715fa6ae59e99af3e7da2c3369b0 Size (kdebase-2.1.1.tar.bz2) = 9188425 bytes @@ -30,3 +30,4 @@ SHA1 (patch-aw) = 6510c6e55f619778c318a96cd5120bb07d9aa6d9 SHA1 (patch-ax) = bd3a8494663da789fffd1a9d5340b0f44819f26c SHA1 (patch-ay) = 287912fd2f3ff04f0239545a1d215b36cb8c1d0f SHA1 (patch-az) = 5af89343863ed55268c9ef22dee394665270cb8b +SHA1 (patch-ba) = a1984f490868565dfe114b579be1279d50de1e0b diff --git a/x11/kdebase2/patches/patch-ba b/x11/kdebase2/patches/patch-ba new file mode 100644 index 00000000000..96875e6a060 --- /dev/null +++ b/x11/kdebase2/patches/patch-ba @@ -0,0 +1,256 @@ +$NetBSD: patch-ba,v 1.1 2001/09/22 14:51:50 jdolecek Exp $ + +--- kcontrol/info/info_netbsd.cpp.orig Fri Sep 21 23:01:26 2001 ++++ kcontrol/info/info_netbsd.cpp Sat Sep 22 16:25:36 2001 +@@ -34,8 +34,10 @@ + #include <sys/types.h> + #include <sys/param.h> + #include <sys/sysctl.h> ++#include <sys/mount.h> + #include <stdio.h> /* for NULL */ + #include <stdlib.h> /* for malloc(3) */ ++#include <fstab.h> + + #include <qfile.h> + #include <qfontmetrics.h> +@@ -100,20 +102,18 @@ bool GetInfo_CPU(QListView *lBox) + // this is used to find out which devices are currently + // on system + static bool GetDmesgInfo(QListView *lBox, const char *filter, +- void func(QListView *, QCString s, void **, bool)) ++ void func(QListView *, QString s)) + { + QFile *dmesg = new QFile("/var/run/dmesg.boot"); + bool usepipe=false; + FILE *pipe=NULL; + QTextStream *t; + bool seencpu=false; +- void *opaque=NULL; +- QCString s; ++ QString s; + bool found=false; + +- if (dmesg->exists() && dmesg->open(IO_ReadOnly)) { ++ if (dmesg->exists() && dmesg->open(IO_ReadOnly)) + t = new QTextStream(dmesg); +- } + else { + delete dmesg; + pipe = popen("/sbin/dmesg", "r"); +@@ -134,25 +134,20 @@ static bool GetDmesgInfo(QListView *lBox + s.contains("WARNING: old BSD partition ID!")) + break; + +- if (!filter || s.contains(filter)) { +- if (func) { +- func(lBox, s, &opaque, false); +- } +- else { ++ if (!filter ++ || (filter[0] == '^' && s.find(&filter[1]) == 0) ++ || (filter[0] != '^' && s.contains(filter))) { ++ if (func) ++ func(lBox, s); ++ else + olditem = new QListViewItem(lBox, olditem, s); +- } + found = true; + } + } +- if (func) { +- func(lBox, s, &opaque, true); +- } +- //lBox->triggerUpdate(); + + delete t; +- if (pipe) { ++ if (pipe) + pclose(pipe); +- } + else { + dmesg->close(); + delete dmesg; +@@ -161,40 +156,31 @@ static bool GetDmesgInfo(QListView *lBox + return found; + } + +-void AddIRQLine(QListView *lBox, QCString s, void **opaque, bool ending) ++void ++AddIRQLine(QListView *lBox, QString s) + { +- QStrList *strlist = (QStrList *) *opaque; +- const char *str; +- int pos, irqnum=0; +- +- if (!strlist) { +- strlist = new QStrList(); +- *opaque = (void *) strlist; +- } +- if (ending) { +- str = strlist->first(); +- for(;str; str = strlist->next()) { +- new QListViewItem(lBox, str); +- } +- delete strlist; +- return; +- } ++ int pos, irqnum; ++ char numstr[3]; + + pos = s.find(" irq "); +- irqnum = (pos < 0) ? 0 : atoi(&(((const char *)s)[pos+5])); +- if (irqnum) { +- s.sprintf("%02d%s", irqnum, (const char *)s); +- } ++ irqnum = (pos < 0) ? 0 : atoi(&s.ascii()[pos+5]); ++ if (irqnum) ++ snprintf(numstr, 3, "%02d", irqnum); + else { +- s.sprintf("??%s", (const char *)s); ++ // this should never happen ++ strcpy(numstr, "??"); + } +- strlist->inSort(s); ++ ++ new QListViewItem(lBox, numstr, s); + } + ++ + bool GetInfo_IRQ (QListView *lBox) + { + lBox->addColumn(i18n("IRQ")); + lBox->addColumn(i18n("Device")); ++ lBox->setSorting(0); ++ lBox->setShowSortIndicator(FALSE); + (void) GetDmesgInfo(lBox, " irq ", AddIRQLine); + return true; + } +@@ -220,26 +206,27 @@ bool GetInfo_IO_Ports (QListView *lbox) + + bool GetInfo_Sound (QListView *lbox) + { ++ lbox->setSorting(false); ++ + if (!GetDmesgInfo(lbox, "audio", NULL)) + new QListViewItem(lbox, i18n("No audio devices found.")); + +- // append information on any audio devices found ++ // append information for each audio devices found + QListViewItem *lvitem = lbox->firstChild(); + for(; lvitem; lvitem = lvitem->nextSibling()) { + QString s; + int pos, len; +- const char *start, *end; ++ const char *start; + char *dev; + + s = lvitem->text(0); +- if ((pos = s.find("at ")) >= 0) { +- pos += 3; // skip "at " +- start = end = s.ascii(); +- for(; (*end!=':') && (*end!='\n'); end++); +- len = end - start; +- dev = (char *) malloc(len + 1); +- strncpy(dev, start, len); +- dev[len] = '\0'; ++ // The autoconf message is in form 'audio0 at auvia0: ...' ++ if (s.find("audio") == 0 && (pos = s.find(" at ")) > 0) { ++ pos += 4; // skip " at " ++ start = s.ascii() + pos; ++ len = (int) strcspn(start, ":\n\t "); ++ dev = (char *) malloc(1 + len + 1); ++ sprintf(dev, "^%.*s", len, start); /* safe */ + + GetDmesgInfo(lbox, dev, NULL); + +@@ -260,16 +247,32 @@ bool GetInfo_SCSI (QListView *lbox) + { + if (!GetDmesgInfo(lbox, "scsibus", NULL)) + new QListViewItem(lbox, i18n("No SCSI devices found.")); ++ ++ // remove the 'waiting %d seconds for devices to settle' message ++ QListViewItem *lvitem = lbox->firstChild(); ++ for(; lvitem; lvitem = lvitem->nextSibling()) { ++ QString s = lvitem->text(0); ++ ++ if (s.contains("seconds for devices to settle")) { ++ lbox->removeItem(lvitem); ++ break; ++ } ++ } ++ + return true; + } + + bool GetInfo_Partitions (QListView *lbox) + { +- QCString s; ++ QString s; ++ QString MB; + char *line, *orig_line; + const char *device, *mountpoint, *type, *flags; + FILE *pipe = popen("/sbin/mount", "r"); + QTextStream *t; ++ u_int64_t tsz, fsz; ++ struct statfs sfs; ++ int ok; + + if (!pipe) { + kdError(0) << i18n("Ahh couldn't run /sbin/mount!") << endl; +@@ -277,27 +280,49 @@ bool GetInfo_Partitions (QListView *lbox + } + t = new QTextStream(pipe, IO_ReadOnly); + ++ MB = QString(" ") + QString(i18n("MB")); + lbox->addColumn(i18n("Device")); + lbox->addColumn(i18n("Mount Point")); + lbox->addColumn(i18n("FS Type")); ++ lbox->addColumn(i18n("Total Size")); ++ lbox->addColumn(i18n("Free Size")); + lbox->addColumn(i18n("Mount Options")); + +- QListViewItem *olditem = 0; + while (!(s = t->readLine().latin1()).isEmpty()) { +- orig_line = line = strdup(s); ++ orig_line = line = strdup(s.ascii()); ++ ++ // the lines returned by /sbin/mount look like: ++ // /dev/wd0a on / type ffs (local, soft dependencies) + + device = strsep(&line, " "); + +- (void) strsep(&line, " "); // cosume word "on" ++ (void) strsep(&line, " "); // consume word "on" + mountpoint = strsep(&line, " "); + +- (void) strsep(&line, " "); // cosume word "type" ++ (void) strsep(&line, " "); // consume word "type" + type = strsep(&line, " "); + +- flags = line; ++ /* skip leading '(' and trailing ')' */ ++ line++; ++ flags = strsep(&line, ")"); ++ ++ if (statfs(mountpoint, &sfs) == 0) { ++ tsz = ((1LL * sfs.f_blocks * sfs.f_bsize / 1024) + 513) ++ / 1024; ++ fsz = ((1LL * sfs.f_bfree * sfs.f_bsize / 1024) + 513) ++ / 1024; ++ ok = 1; ++ } else { ++ tsz = fsz = 0; ++ ok = 0; ++ } + +- olditem = new QListViewItem(lbox, olditem, device, mountpoint, +- type, flags); ++ new QListViewItem(lbox, ++ QString(device) + " ", ++ QString(mountpoint) + " ", QString(type) + " ", ++ (ok) ? (Value(tsz, 6) + MB) : " ", ++ (ok) ? (Value(fsz, 6) + MB) : " ", ++ flags); + + free(orig_line); + } |