--- pfmon-1.1/pfmon/pfmon_util.c Fri Jun 14 16:41:20 2002 +++ pfmon-1.1a/pfmon/pfmon_util.c Fri Sep 20 09:51:02 2002 @@ -566,8 +566,10 @@ int find_cpu(pid_t pid) { - FILE *fp; - char *p; +#define TASK_CPU_POSITION 39 /* position of the task cpu in /proc/pid/stat */ + FILE *fp; + int count = TASK_CPU_POSITION; + char *p, *pp = NULL; char fn[32]; char buffer[1024]; @@ -581,13 +583,19 @@ /* remove \n */ p[strlen(p)] = '\0'; + p--; - p = strrchr(buffer, ' '); - if (p == NULL) goto error; + while (count-- && p) { + pp = ++p; + p = strchr(p, ' '); + } + if (count>-1) goto error; + + if (p) *p = '\0'; fclose(fp); - return atoi(p); + return atoi(pp); error: if (fp) fclose(fp); return -1;