summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/common/default.c4
-rw-r--r--sysdeps/linux/disk.c33
-rw-r--r--sysdeps/linux/glibtop_private.h2
-rw-r--r--sysdeps/stub/Makefile.am2
-rw-r--r--sysdeps/stub_suid/Makefile.am2
-rw-r--r--sysdeps/stub_suid/disk.c47
6 files changed, 76 insertions, 14 deletions
diff --git a/sysdeps/common/default.c b/sysdeps/common/default.c
index 653a4f5a..ff6c3ecd 100644
--- a/sysdeps/common/default.c
+++ b/sysdeps/common/default.c
@@ -72,9 +72,9 @@ glibtop_get_cpu(glibtop_cpu *buf)
*
*/
void
-glibtop_get_cpu (glibtop_cpu *buf)
+glibtop_get_disk (glibtop_disk *buf)
{
- glibtop_get_cpu_l (glibtop_global_server, buf);
+ glibtop_get_disk_l (glibtop_global_server, buf);
}
diff --git a/sysdeps/linux/disk.c b/sysdeps/linux/disk.c
index 3ad74bcc..c2d341f6 100644
--- a/sysdeps/linux/disk.c
+++ b/sysdeps/linux/disk.c
@@ -48,7 +48,7 @@ _glibtop_init_disk_s (glibtop *server)
// Handle LVM and RAID //
void
-find_primary_part (_partition_info *primary_part, const char *m)
+find_primary_part (partition_info *primary_part, const char *m)
{
int n = 0, tlvl = 0;
char name[256]="",type[256]="";
@@ -190,7 +190,7 @@ find_primary_part (_partition_info *primary_part, const char *m)
}
int
-is_virtual_drive (_partition_info *primary_part, const char *p)
+is_virtual_drive (partition_info *primary_part, const char *p)
{
int i;
char name[256];
@@ -220,10 +220,27 @@ is_virtual_drive (_partition_info *primary_part, const char *p)
return test;
}
+int
+max_lines (const char *p)
+{
+ char temp[10];
+ int count = 0;
+
+ while (sscanf (p, "%s", temp) == 1)
+ {
+
+ p = skip_line(p);
+ count++;
+
+ }
+
+ return count;
+}
+
void
glibtop_get_disk_s (glibtop *server, glibtop_disk *buf)
{
- _partition_info primary_part[GLIBTOP_NDISK];
+ partition_info primary_part[GLIBTOP_NDISK];
char buffer [STAT_BUFSIZ], *p, map_buffer [STAT_BUFSIZ], *m;
int i;
@@ -233,8 +250,6 @@ glibtop_get_disk_s (glibtop *server, glibtop_disk *buf)
get_from_pipe (map_buffer, CMD_PIPE);
- server->ndisk = GLIBTOP_NDISK;
-
/*
* GLOBAL
*/
@@ -246,23 +261,23 @@ glibtop_get_disk_s (glibtop *server, glibtop_disk *buf)
* PER DISK
*/
+ server->ndisk = max_lines(p);
+
find_primary_part (primary_part, m);
- for (i = 0; i <= server->ndisk; i++) {
+ for (i = 0; i < server->ndisk; i++) {
p = skip_multiple_token (p,2);
// skip if disk is the raw device
if (!is_virtual_drive (primary_part, p)) {
+ server->ndisk--;
p = skip_line (p); /* move to ^ */
p = skip_multiple_token (p, 2);
}
- if (!check_disk_line_warn (server, p, i))
- break;
-
p = skip_token (p); /* prev xdisk_name */
p = skip_token (p); /* prev xdisk_reads_completed */
p = skip_token (p); /* prev xdisk_reads_merged */
diff --git a/sysdeps/linux/glibtop_private.h b/sysdeps/linux/glibtop_private.h
index 66fed54c..39101163 100644
--- a/sysdeps/linux/glibtop_private.h
+++ b/sysdeps/linux/glibtop_private.h
@@ -62,7 +62,7 @@ skip_line (const char *p)
}
void
-get_from_pipe (char *buffer, const char *cmd)
+get_from_pipe (char *buffer, const char *cmd);
/*
* Smart strtoul which handles binary suffixes
diff --git a/sysdeps/stub/Makefile.am b/sysdeps/stub/Makefile.am
index f4219edb..6d9ce727 100644
--- a/sysdeps/stub/Makefile.am
+++ b/sysdeps/stub/Makefile.am
@@ -3,7 +3,7 @@ AM_CPPFLAGS = @AM_CPPFLAGS@
noinst_LTLIBRARIES = libgtop_sysdeps-2.0.la
-libgtop_sysdeps_2_0_la_SOURCES = open.c close.c siglist.c cpu.c mem.c swap.c \
+libgtop_sysdeps_2_0_la_SOURCES = open.c close.c siglist.c cpu.c disk.c mem.c swap.c \
uptime.c loadavg.c shm_limits.c msg_limits.c \
sem_limits.c proclist.c procstate.c procuid.c \
proctime.c procmem.c procsignal.c prockernel.c \
diff --git a/sysdeps/stub_suid/Makefile.am b/sysdeps/stub_suid/Makefile.am
index fcc7daf9..3f1bf958 100644
--- a/sysdeps/stub_suid/Makefile.am
+++ b/sysdeps/stub_suid/Makefile.am
@@ -7,7 +7,7 @@ libgtop_sysdeps_2_0_la_SOURCES = nosuid.c siglist.c
libgtop_sysdeps_2_0_la_LDFLAGS = $(LT_VERSION_INFO)
-libgtop_sysdeps_suid_2_0_la_SOURCES = open.c close.c siglist.c cpu.c mem.c swap.c \
+libgtop_sysdeps_suid_2_0_la_SOURCES = open.c close.c siglist.c cpu.c disk.c mem.c swap.c \
uptime.c loadavg.c shm_limits.c msg_limits.c \
sem_limits.c proclist.c procstate.c procuid.c \
proctime.c procmem.c procsignal.c prockernel.c \
diff --git a/sysdeps/stub_suid/disk.c b/sysdeps/stub_suid/disk.c
new file mode 100644
index 00000000..ed5cda02
--- /dev/null
+++ b/sysdeps/stub_suid/disk.c
@@ -0,0 +1,47 @@
+/* Copyright (C) 1998-99 Martin Baulig
+ This file is part of LibGTop 1.0.
+
+ Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
+
+ 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., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+#include <glibtop.h>
+#include <glibtop/error.h>
+#include <glibtop/disk.h>
+
+#include <glibtop_suid.h>
+
+static const unsigned long _glibtop_sysdeps_disk = 0;
+
+/* Init function. */
+
+void
+_glibtop_init_disk_p (glibtop *server)
+{
+ server->sysdeps.disk = _glibtop_sysdeps_disk;
+}
+
+/* Provides information about disk usage. */
+
+void
+glibtop_get_disk_p (glibtop *server, glibtop_disk *buf)
+{
+ glibtop_init_p (server, GLIBTOP_SYSDEPS_DISK, 0);
+
+ memset (buf, 0, sizeof (glibtop_disk));
+}