X-Git-Url: http://git.toastfreeware.priv.at/debian/cpulimit.git/blobdiff_plain/244f57d15fde67b6c9229628c51c8ed2f8a8e576..e9e7f2472441edafe516f585b1f01e8b8c9b771c:/cpulimit.c diff --git a/cpulimit.c b/cpulimit.c index 29aeca1..ba41986 100644 --- a/cpulimit.c +++ b/cpulimit.c @@ -248,22 +248,28 @@ void quit(int sig) { int getjiffies(int pid) { static char stat[20]; static char buffer[1024]; + char *p; sprintf(stat,"/proc/%d/stat",pid); FILE *f=fopen(stat,"r"); if (f==NULL) return -1; - fgets(buffer,sizeof(buffer),f); + p = fgets(buffer,sizeof(buffer),f); fclose(f); - char *p=buffer; - p=memchr(p+1,')',sizeof(buffer)-(p-buffer)); - int sp=12; - while (sp--) + // char *p=buffer; + if (p) + { + p=memchr(p+1,')',sizeof(buffer)-(p-buffer)); + int sp=12; + while (sp--) p=memchr(p+1,' ',sizeof(buffer)-(p-buffer)); - //user mode jiffies - int utime=atoi(p+1); - p=memchr(p+1,' ',sizeof(buffer)-(p-buffer)); - //kernel mode jiffies - int ktime=atoi(p+1); - return utime+ktime; + //user mode jiffies + int utime=atoi(p+1); + p=memchr(p+1,' ',sizeof(buffer)-(p-buffer)); + //kernel mode jiffies + int ktime=atoi(p+1); + return utime+ktime; + } + // could not read info + return -1; } //process instant photo @@ -446,8 +452,9 @@ int main(int argc, char **argv) { exit(1); } float limit=perclimit/100.0; - if (limit<0 || limit >1) { - fprintf(stderr,"Error: limit must be in the range 0-100\n"); + if (limit <= 0.00) // || limit >1) { + { + fprintf(stderr,"Error: limit must be greater than 0\n"); print_usage (stderr, 1); exit(1); }