commit 2793abc90ee56301c10cb69cf3251543ce9c84b6 Author: Mad Fish <MadFishTheOne@gmail.com> Date: Mon Jul 4 01:14:58 2011 +0200 Extract process name from command line in ksysguardd on Linux. Signed-off-by: Mad Fish <MadFishTheOne@gmail.com> (cherry picked from commit 3aa82c97006bf345356960cb2d5114cbc334d8d6) diff --git a/ksysguard/ksysguardd/Linux/ProcessList.c b/ksysguard/ksysguardd/Linux/ProcessList.c index 06ff0d9..4dc3dde 100644 --- a/ksysguard/ksysguardd/Linux/ProcessList.c +++ b/ksysguard/ksysguardd/Linux/ProcessList.c @@ -333,13 +333,28 @@ static bool getProcess( int pid, ProcessInfo *ps ) ps->cmdline[ 0 ] = '\0'; + unsigned int processNameStartPosition = 0; + unsigned int firstZeroPosition = -1U; + unsigned int i =0; while( (ps->cmdline[i] = fgetc(fd)) != EOF && i < sizeof(ps->cmdline)-3) { if(ps->cmdline[i] == '\0') + { ps->cmdline[i] = ' '; + if(firstZeroPosition == -1U) + firstZeroPosition = i; + } + if(ps->cmdline[i] == '/' && firstZeroPosition == -1U) + processNameStartPosition = i + 1; i++; } + if(firstZeroPosition != -1U) + { + unsigned int processNameLength = firstZeroPosition - processNameStartPosition; + memcpy(ps->name, ps->cmdline + processNameStartPosition, processNameLength); + ps->name[processNameLength] = '\0'; + } if(i > 2) { if(ps->cmdline[i-2] == ' ') ps->cmdline[i-2] = '\0';