diff options
author | James Dominic P. Guana <guana.histark@gmail.com> | 2020-05-26 18:53:49 +0800 |
---|---|---|
committer | Robert Roth <robert.roth.off@gmail.com> | 2020-11-04 13:38:03 +0000 |
commit | 7396970afe2290488fd072612a650353dd13a16d (patch) | |
tree | 4600f2a3144f25a578138164f85ef91c70aecfc3 /sysdeps/linux/disk.c | |
parent | 9cbb3b91f11ad0c4944a1428d609201c054cffab (diff) | |
download | libgtop-7396970afe2290488fd072612a650353dd13a16d.tar.gz |
Code clean up and add example
Diffstat (limited to 'sysdeps/linux/disk.c')
-rw-r--r-- | sysdeps/linux/disk.c | 33 |
1 files changed, 24 insertions, 9 deletions
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 */ |