tags 331419 + patch thanks Package: procps Version: 3.2.7-3
Third problem: -------------- [EMAIL PROTECTED] snice -v -p 25857 -p 25861 -p 26292 -p 26293 +20 [EMAIL PROTECTED] The -v flag is apparently ignored.
I had tried the -v flag at the end, which works fine. For the case where -v is not at the end, a patch is attached. In skill.c, there is a function called skillsnice_parse(). The switch statement did not have a "break" at the end of each case, so the "-p" option would fall into the next case, which was "-c". In the "-c" case, it called a macro, ENLIST(cmd,argptr), which allocated an array called cmds. The function check_proc() would check to see if cmds was set, do some stuff and skip over the hurt_proc() function, which did the work. I think the patch is correct, but please test thoroughly. The binary file called /usr/bin/skill is symlink'd to /bin/kill and /usr/bin/snice.
--- skill.c 2007-05-04 14:10:06.000000000 -0700 +++ skillFIX.c 2007-05-04 14:35:04.000000000 -0700 @@ -454,7 +454,9 @@ num_found = 0; /* we should find at least one thing */ switch(force){ /* fall through each data type */ default: skillsnice_usage(); + break; case 0: /* not forced */ + break; case 't': if(argc){ struct stat sbuf; @@ -478,6 +480,7 @@ } } if(force) continue; + break; case 'u': if(argc){ struct passwd *passwd_data; @@ -489,6 +492,7 @@ } } if(force) continue; + break; case 'p': if(argc && *argptr>='0' && *argptr<='9'){ char *endp; @@ -502,12 +506,14 @@ } if(force) continue; if(num_found) continue; /* could still be an option */ + break; case 'c': if(argc){ num_found++; ENLIST(cmd,argptr); if(!NEXTARG) break; } + break; } /* END OF SWITCH */ } /* END OF WHILE */ /* No more arguments to process. Must sanity check. */