summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPino Toscano <toscano.pino@tiscali.it>2012-01-14 14:47:58 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2012-01-14 23:30:28 +0100
commitcc2cff23dedcff0fd9fa94386e42a4d824bd0c7d (patch)
treef999a3c3e6ea06ce5e051fb505270587ee61d52c
parenta9278fb8b6c1d7e160b6f79f7f28f92f940d4918 (diff)
PID stat/status: show only the file name of processes
The Linux /proc fs shows only the file name of processes in the `stat' and `status' files of every process directory, so adapt also procfs to show process file names. Add a new `args_filename` function, much similar to GNU's `basename' but returning the original string also when the resulting file name is an empty string. * process.c (args_filename): New function. (process_file_gc_stat): Wrap the `proc_stat_args' result with `args_filename'. (process_file_gc_status): Likewise.
-rw-r--r--process.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/process.c b/process.c
index 6652a4e9..17a38ea8 100644
--- a/process.c
+++ b/process.c
@@ -81,6 +81,12 @@ static long long int timeval_jiffies (time_value_t tv)
return secs * opt_clk_tck / 1000000.;
}
+static const char *args_filename (const char *name)
+{
+ char *sp = strrchr (name, '/');
+ return sp != NULL && *(sp + 1) != '\0' ? sp + 1 : name;
+}
+
/* Actual content generators */
static ssize_t
@@ -126,7 +132,7 @@ process_file_gc_stat (struct proc_stat *ps, char **contents)
"%u %u " /* RT priority and policy */
"%llu " /* aggregated block I/O delay */
"\n",
- proc_stat_pid (ps), proc_stat_args (ps), state_char (ps),
+ proc_stat_pid (ps), args_filename (proc_stat_args (ps)), state_char (ps),
pi->ppid, pi->pgrp, pi->session,
0, 0, /* no such thing as a major:minor for ctty */
0, /* no such thing as CLONE_* flags on Hurd */
@@ -178,7 +184,7 @@ process_file_gc_status (struct proc_stat *ps, char **contents)
"VmRSS:\t%8u kB\n"
"VmHWM:\t%8u kB\n" /* ie. resident peak */
"Threads:\t%u\n",
- proc_stat_args (ps),
+ args_filename (proc_stat_args (ps)),
state_string (ps),
proc_stat_pid (ps), /* XXX will need more work for threads */
proc_stat_pid (ps),