mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-20 20:09:11 +00:00
Fix segfault
PR: 33069 Submitted by: ppl <ppl@users.sourceforge.net>
This commit is contained in:
parent
ca4e2fd99e
commit
1d6de8f32d
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=51960
104
sysutils/wmzazof/files/patch-wmzazof.c
Normal file
104
sysutils/wmzazof/files/patch-wmzazof.c
Normal file
@ -0,0 +1,104 @@
|
||||
--- wmzazof.c Mon Dec 17 13:55:01 2001
|
||||
+++ wmzazof-patch.c Tue Dec 18 12:04:23 2001
|
||||
@@ -24,6 +24,11 @@
|
||||
#include <dockapp.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
+#include <time.h>
|
||||
+#include <sys/time.h>
|
||||
+#include <sys/sysctl.h>
|
||||
+#include <sys/vmmeter.h>
|
||||
+#include <vm/vm_param.h>
|
||||
#include "pix/master.xpm"
|
||||
#include "pix/numbers.xpm"
|
||||
#include "pix/char.xpm"
|
||||
@@ -61,6 +66,9 @@
|
||||
|
||||
char *displayName = "";
|
||||
|
||||
+struct timeval boottime;
|
||||
+int page_size;
|
||||
+
|
||||
unsigned int *cmdline;
|
||||
|
||||
FILE *file;
|
||||
@@ -130,43 +138,22 @@
|
||||
|
||||
void check_values()
|
||||
{
|
||||
- char input[128];
|
||||
- char* token = " ";
|
||||
- char* uptime_s;
|
||||
- char* mem_used_s;
|
||||
- char* mem_free_s;
|
||||
- char* mem_cached_s;
|
||||
- char* temp_s;
|
||||
+ time_t now = time(NULL);
|
||||
+ int mib[2] = { CTL_VM, VM_METER }, mcs = sizeof(mem_cached);
|
||||
+ struct vmtotal meter;
|
||||
+ size_t size = sizeof(meter);
|
||||
|
||||
- /* /proc/uptime
|
||||
- *
|
||||
- * first value is the uptime in seconds
|
||||
- */
|
||||
- file = fopen("/proc/uptime", "r");
|
||||
- fgets(input, 128, file);
|
||||
- fclose(file);
|
||||
- uptime_s = strtok(input, token);
|
||||
// uptime in seconds
|
||||
- uptime = atoi(uptime_s);
|
||||
-
|
||||
- /* /proc/meminfo
|
||||
- *
|
||||
- */
|
||||
- file = fopen("/proc/meminfo", "r");
|
||||
- fgets(input, 128, file);
|
||||
- fgets(input, 128, file);
|
||||
- fclose(file);
|
||||
- temp_s = strtok(input, token);
|
||||
- temp_s = strtok(NULL, token); // total
|
||||
- mem_used_s = strtok(NULL, token); // used
|
||||
- mem_free_s = strtok(NULL, token); // free
|
||||
- temp_s = strtok(NULL, token); // shared
|
||||
- temp_s = strtok(NULL, token); // buffers
|
||||
- mem_cached_s = strtok(NULL, token); // cached
|
||||
+ uptime = now - boottime.tv_sec;
|
||||
+
|
||||
// in Kb
|
||||
- mem_used = atoi(mem_used_s) / 1024;
|
||||
- mem_free = atoi(mem_free_s) / 1024;
|
||||
- mem_cached = atoi(mem_cached_s) / 1024;
|
||||
+ if (sysctl(mib, 2, &meter, &size, NULL, 0) != -1 &&
|
||||
+ sysctlbyname("vm.stats.vm.v_cache_count", &mem_cached, &mcs, NULL, 0) != -1)
|
||||
+ {
|
||||
+ mem_used = meter.t_rm * page_size / 1024;
|
||||
+ mem_free = meter.t_free * page_size / 1024;
|
||||
+ mem_cached = mem_cached * page_size / 1024;
|
||||
+ }
|
||||
}
|
||||
|
||||
void transform_values()
|
||||
@@ -219,6 +206,9 @@
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
unsigned int height, width;
|
||||
+
|
||||
+ int mib[2] = { CTL_KERN, KERN_BOOTTIME };
|
||||
+ size_t size_bt = sizeof(boottime), size_ps = sizeof(page_size);
|
||||
|
||||
DACallbacks callbacks = { NULL, buttonPressCallback, NULL, NULL, NULL, NULL, NULL };
|
||||
|
||||
@@ -238,6 +228,12 @@
|
||||
state_mem_free = MEM_FREE_CACHED;
|
||||
state_mem_used = MEM_USED_CACHED;
|
||||
|
||||
+ if (sysctl(mib, 2, &boottime, &size_bt, NULL, 0) == -1 ||
|
||||
+ sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size_ps, NULL, 0) == -1)
|
||||
+ {
|
||||
+ perror(NULL);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
|
||||
while (1)
|
||||
{
|
Loading…
Reference in New Issue
Block a user