[gnome-talos] proc: Rename from 'mem', add argv0



commit 6a876f135f08b52bef70cb68b0cce7dbc043f0cb
Author: Colin Walters <walters verbum org>
Date:   Fri Sep 23 16:23:51 2011 -0400

    proc: Rename from 'mem', add argv0
    
    We only keep argv0 to help ensure privacy.

 Makefile-src.am                                    |    4 +-
 ...nome-talos-meminfo.c => gnome-talos-procinfo.c} |   42 +++++++++++++++++--
 ...nome-talos-meminfo.h => gnome-talos-procinfo.h} |    6 +-
 src/gnome-talos-session.c                          |    8 ++--
 4 files changed, 46 insertions(+), 14 deletions(-)
---
diff --git a/Makefile-src.am b/Makefile-src.am
index b1df945..1a79992 100644
--- a/Makefile-src.am
+++ b/Makefile-src.am
@@ -10,8 +10,8 @@ gnome-talos-session-%.desktop: src/gnome-talos-session.desktop.in
 
 bin_PROGRAMS += gnome-talos-session
 gnome_talos_session_SOURCES = src/gnome-talos-session.c \
-	src/gnome-talos-meminfo.c \
-	src/gnome-talos-meminfo.h \
+	src/gnome-talos-procinfo.c \
+	src/gnome-talos-procinfo.h \
 	src/gnome-talos-meta.c \
 	src/gnome-talos-meta.h
 gnome_talos_session_CPPFLAGS = $(GIO_UNIX_CFLAGS)
diff --git a/src/gnome-talos-meminfo.c b/src/gnome-talos-procinfo.c
similarity index 87%
rename from src/gnome-talos-meminfo.c
rename to src/gnome-talos-procinfo.c
index 5773516..de0a1c8 100644
--- a/src/gnome-talos-meminfo.c
+++ b/src/gnome-talos-procinfo.c
@@ -27,6 +27,8 @@
 #include <string.h>
 #include <stdio.h>
 
+#include "gnome-talos-procinfo.h"
+
 typedef void (WalkProcCallback) (long pid, const char *prefix, gpointer user_data);
 
 static void
@@ -88,6 +90,32 @@ typedef struct {
   GVariantBuilder *builder;
 } AcquireMemData; 
 
+static char*
+proc_get_procname (const char *proc_prefix)
+{
+  char *filename;
+  char *result = NULL;
+  char *contents;
+  gsize len;
+  
+  filename = g_build_filename (proc_prefix, "cmdline", NULL);
+  if (!g_file_get_contents (filename, &contents, &len, NULL))
+    goto out;
+  if (memchr (contents, 0, len) == NULL)
+    {
+      g_free (contents);
+      goto out;
+    }
+    
+  result = contents;
+
+ out:
+  g_free (filename);
+  
+  return result;
+}
+		   
+
 static void
 proc_get_process_size (const char *proc_prefix,
 		       gulong     *vm_size,
@@ -179,15 +207,17 @@ acquire_mem_iter (long          pid,
 {
   AcquireMemData *data = user_data;
   GVariantBuilder *builder = data->builder;
+  char *procname;
   gulong vm_size;
   gulong rss_size;
   gint32 real_uid, effective_uid, real_gid, effective_gid;
-  
-  proc_get_process_size (proc_prefix, &vm_size, &rss_size); 
 
-  if (vm_size == 0 && rss_size == 0) /* Probably a kernel thread */
-    return;
+  procname = proc_get_procname (proc_prefix);
 
+  if (procname == NULL)  /* Probably a kernel thread */
+    return;
+  
+  proc_get_process_size (proc_prefix, &vm_size, &rss_size); 
   proc_get_uidgid (proc_prefix, &real_uid, &effective_uid, &real_gid, &effective_gid);
 
   g_variant_builder_open (builder, G_VARIANT_TYPE ("{uv}"));
@@ -196,6 +226,8 @@ acquire_mem_iter (long          pid,
   g_variant_builder_open (builder, G_VARIANT_TYPE_VARIANT);
   g_variant_builder_open (builder, G_VARIANT_TYPE_ARRAY);
 
+  g_variant_builder_add (builder, "{sv}", "argv0", g_variant_new_string (procname));
+  g_free (procname);
   g_variant_builder_add (builder, "{sv}", "real-uid", g_variant_new_int32 (real_uid));
   if (real_uid != effective_uid)
     g_variant_builder_add (builder, "{sv}", "effective-uid", g_variant_new_int32 (effective_uid));
@@ -208,7 +240,7 @@ acquire_mem_iter (long          pid,
 }
 
 GVariant *
-gnome_talos_acquire_mem (void)
+gnome_talos_acquire_procinfo (void)
 {
   GVariantBuilder builder;
   AcquireMemData data;
diff --git a/src/gnome-talos-meminfo.h b/src/gnome-talos-procinfo.h
similarity index 88%
rename from src/gnome-talos-meminfo.h
rename to src/gnome-talos-procinfo.h
index a5cf5c0..0915410 100644
--- a/src/gnome-talos-meminfo.h
+++ b/src/gnome-talos-procinfo.h
@@ -19,9 +19,9 @@
  * Author: Colin Walters <walters verbum org>
  */
 
-#ifndef __GNOME_TALOS_MEMINFO__
-#define __GNOME_TALOS_MEMINFO__ 1
+#ifndef __GNOME_TALOS_PROCINFO__
+#define __GNOME_TALOS_PROCINFO__ 1
 
-GVariant * gnome_talos_acquire_mem (void);
+GVariant * gnome_talos_acquire_procinfo (void);
 
 #endif
diff --git a/src/gnome-talos-session.c b/src/gnome-talos-session.c
index 082d92d..40989cc 100644
--- a/src/gnome-talos-session.c
+++ b/src/gnome-talos-session.c
@@ -25,20 +25,20 @@
 
 #include <string.h>
 
-#include "gnome-talos-meminfo.h"
+#include "gnome-talos-procinfo.h"
 #include "gnome-talos-meta.h"
 
 GVariant *
 gather_snapshot (void)
 {
   gint64 start_timestamp, end_timestamp;
-  GVariant *mem_data;
+  GVariant *proc_data;
   GVariantBuilder builder;
   GVariant *data;
 
   start_timestamp = g_get_monotonic_time ();
 
-  mem_data = gnome_talos_acquire_mem ();
+  proc_data = gnome_talos_acquire_procinfo ();
 
   end_timestamp = g_get_monotonic_time ();
 
@@ -57,7 +57,7 @@ gather_snapshot (void)
   /* data */
   g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{sv}"));
 
-  g_variant_builder_add (&builder, "{sv}", "mem", mem_data);
+  g_variant_builder_add (&builder, "{sv}", "processes", proc_data);
 
   g_variant_builder_close (&builder);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]