releasing version 1.4-1
[debian/cpulimit.git] / cpulimit.c
index 29aeca1..ba41986 100644 (file)
@@ -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);
        }