[BACK]Return to pkill.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / pkill

Diff for /src/usr.bin/pkill/pkill.c between version 1.7 and 1.8

version 1.7, 2004/12/29 19:40:36 version 1.8, 2005/02/11 17:17:45
Line 107 
Line 107 
   
 int     main(int, char **);  int     main(int, char **);
 void    usage(void);  void    usage(void);
 int     killact(struct kinfo_proc2 *);  int     killact(struct kinfo_proc2 *, int);
 int     grepact(struct kinfo_proc2 *);  int     grepact(struct kinfo_proc2 *, int);
 void    makelist(struct listhead *, enum listtype, char *);  void    makelist(struct listhead *, enum listtype, char *);
   
 extern char *__progname;  extern char *__progname;
Line 120 
Line 120 
         extern int optind;          extern int optind;
         char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q;          char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q;
         int i, j, ch, bestidx, rv, criteria;          int i, j, ch, bestidx, rv, criteria;
         int (*action)(struct kinfo_proc2 *);          int (*action)(struct kinfo_proc2 *, int);
         struct kinfo_proc2 *kp;          struct kinfo_proc2 *kp;
         struct list *li;          struct list *li;
         u_int32_t bestsec, bestusec;          u_int32_t bestsec, bestusec;
Line 388 
Line 388 
         /*          /*
          * Take the appropriate action for each matched process, if any.           * Take the appropriate action for each matched process, if any.
          */           */
         for (i = 0, rv = STATUS_NOMATCH, kp = plist; i < nproc; i++, kp++) {          rv = STATUS_NOMATCH;
           for (i = 0, j = 0, kp = plist; i < nproc; i++, kp++) {
                 if ((kp->p_flag & P_SYSTEM) != 0 || kp->p_pid == mypid)                  if ((kp->p_flag & P_SYSTEM) != 0 || kp->p_pid == mypid)
                         continue;                          continue;
                 if (selected[i]) {                  if (selected[i]) {
Line 397 
Line 398 
                 } else if (!inverse)                  } else if (!inverse)
                         continue;                          continue;
   
                 if ((*action)(kp) == -1)                  if ((*action)(kp, j++) == -1)
                         rv = STATUS_ERROR;                          rv = STATUS_ERROR;
                 else if (rv != STATUS_ERROR)                  else if (rv != STATUS_ERROR)
                         rv = STATUS_MATCH;                          rv = STATUS_MATCH;
         }          }
           if (pgrep)
                   putchar('\n');
   
         exit(rv);          exit(rv);
 }  }
Line 423 
Line 426 
 }  }
   
 int  int
 killact(struct kinfo_proc2 *kp)  killact(struct kinfo_proc2 *kp, int dummy)
 {  {
   
         if (kill(kp->p_pid, signum) == -1 && errno != ESRCH) {          if (kill(kp->p_pid, signum) == -1 && errno != ESRCH) {
Line 434 
Line 437 
 }  }
   
 int  int
 grepact(struct kinfo_proc2 *kp)  grepact(struct kinfo_proc2 *kp, int printdelim)
 {  {
         char **argv;          char **argv;
   
           if (printdelim)
                   fputs(delim, stdout);
         if (longfmt && matchargs) {          if (longfmt && matchargs) {
                 if ((argv = kvm_getargv2(kd, kp, 0)) == NULL)                  if ((argv = kvm_getargv2(kd, kp, 0)) == NULL)
                         return (-1);                          return (-1);
Line 453 
Line 458 
         else          else
                 printf("%d", (int)kp->p_pid);                  printf("%d", (int)kp->p_pid);
   
         printf("%s", delim);  
         return (0);          return (0);
 }  }
   

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8