gnome-system-monitor r2469 - trunk/src



Author: bdejean
Date: Sat Aug  9 19:23:53 2008
New Revision: 2469
URL: http://svn.gnome.org/viewvc/gnome-system-monitor?rev=2469&view=rev

Log:
Fixed truncated process name for process which call prctl.
Closes #546986.


Modified:
   trunk/src/proctable.cpp

Modified: trunk/src/proctable.cpp
==============================================================================
--- trunk/src/proctable.cpp	(original)
+++ trunk/src/proctable.cpp	Sat Aug  9 19:23:53 2008
@@ -426,20 +426,23 @@
 
 static void
 get_process_name (ProcInfo *info,
-		  const gchar *cmd, const gchar *args)
+		  const gchar *cmd, const GStrv args)
 {
-	if (args && *args)
-	{
-		char* basename;
-		basename = g_path_get_basename (args);
-
-		if(g_str_has_prefix (basename, cmd))
-		{
-			info->name = basename;
-			return;
-		}
+	if (args) {
+		// look for /usr/bin/very_long_name
+		// and also /usr/bin/interpreter /usr/.../very_long_name
+		// which may have use prctl to alter 'cmd' name
+		for (int i = 0; i != 2 && args[i]; ++i) {
+			char* basename;
+			basename = g_path_get_basename(args[i]);
+
+			if (g_str_has_prefix(basename, cmd)) {
+				info->name = basename;
+				return;
+			}
 
-		g_free (basename);
+			g_free(basename);
+		}
 	}
 
 	info->name = g_strdup (cmd);
@@ -688,7 +691,7 @@
 	arguments = glibtop_get_proc_argv (&procargs, pid, 0);
 
 	/* FIXME : wrong. name and arguments may change with exec* */
-	get_process_name (info, procstate.cmd, arguments[0]);
+	get_process_name (info, procstate.cmd, static_cast<const GStrv>(arguments));
 
 	std::string tooltip = make_string(g_strjoinv(" ", arguments));
 	if (tooltip.empty())



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