summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola' <g.rodola@gmail.com>2013-03-14 15:05:49 +0000
committerGiampaolo Rodola' <g.rodola@gmail.com>2013-03-14 15:05:49 +0000
commitf494ae924c603396cd9b9b1477bdef899d6baaf9 (patch)
tree1d63c146457b25aa509bfce4801fb7724d65bde1
parent40d0172bf998425e965d72c0b74302ed1ef79d7b (diff)
downloadpsutil-f494ae924c603396cd9b9b1477bdef899d6baaf9.tar.gz
(freebsd / memory maps) remove spaces from address string
-rw-r--r--psutil/_psutil_bsd.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/psutil/_psutil_bsd.c b/psutil/_psutil_bsd.c
index ecbb474c..1912507a 100644
--- a/psutil/_psutil_bsd.c
+++ b/psutil/_psutil_bsd.c
@@ -1215,6 +1215,16 @@ error:
}
+// remove spaces from string
+void remove_spaces(char *str) {
+ char *p1 = str;
+ char *p2 = str;
+ do
+ while (*p2 == ' ')
+ p2++;
+ while (*p1++ = *p2++);
+}
+
/*
* Return a list of tuples for every process memory maps.
* 'procstat' cmdline utility has been used as an example.
@@ -1226,7 +1236,7 @@ get_process_memory_maps(PyObject* self, PyObject* args)
int ptrwidth;
int i, cnt;
char addr[30];
- char perms[10];
+ char perms[4];
const char *path;
struct kinfo_proc kp;
struct kinfo_vmentry *freep = NULL;
@@ -1257,6 +1267,7 @@ get_process_memory_maps(PyObject* self, PyObject* args)
perms[0] = '\0';
sprintf(addr, "%#*jx-%#*jx", ptrwidth, (uintmax_t)kve->kve_start,
ptrwidth, (uintmax_t)kve->kve_end);
+ remove_spaces(addr);
strlcat(perms, kve->kve_protection & KVME_PROT_READ ? "r" : "-",
sizeof(perms));
strlcat(perms, kve->kve_protection & KVME_PROT_WRITE ? "w" : "-",
@@ -1264,6 +1275,7 @@ get_process_memory_maps(PyObject* self, PyObject* args)
strlcat(perms, kve->kve_protection & KVME_PROT_EXEC ? "x" : "-",
sizeof(perms));
+
if (strlen(kve->kve_path) == 0) {
switch (kve->kve_type) {
case KVME_TYPE_NONE: