home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / cputt / getcmd.c < prev    next >
C/C++ Source or Header  |  1992-04-18  |  1KB  |  43 lines

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