home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / cputt-2.3 / part01 / getcmd.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-05  |  1.0 KB  |  41 lines

  1. #include     <sys/user.h>
  2. #include     <kvm.h>
  3. #include     "cputt.h"
  4.  
  5. /* GETCMD - gets the command string for process p and copies it to argbuf */
  6.  
  7. void
  8. getcmd(p,argbuf)
  9. struct proc *p;
  10. register char *argbuf;
  11. {
  12.      register char           *cp,**ap;
  13.      char                    **argv;
  14.      register int            sp=-1;
  15.  
  16.      if (!p->p_pid)
  17.         { strcpy(&argbuf[0],"Swapper"); return; }
  18.      if (p->p_pid == 2)
  19.         { strcpy(&argbuf[0],"Pager"); return; }
  20.  
  21.      if (kvm_getcmd(Flkvm,p,&User.u_us,&argv,(char ***)NULL)<0||argv==NULL)
  22.      {
  23.          argbuf[0] = '(';
  24.          strncpy(&argbuf[1],User.u_us.u_comm,sizeof(User.u_us.u_comm));
  25.          argbuf[sizeof(User.u_us.u_comm)+1] = '\0';
  26.          strcat(argbuf,")");
  27.      }
  28.      else
  29.      {
  30.          ap = argv;
  31.          while (*ap && sp < COMMAND_SIZE-1)
  32.          {
  33.              for (cp = *ap++; *cp && sp < COMMAND_SIZE-2;)
  34.                   argbuf[++sp] = *cp++;
  35.              argbuf[++sp] = ' ';
  36.          }
  37.          argbuf[sp] = '\0';
  38.          free(argv);
  39.      }
  40. }
  41.