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

Diff for /src/usr.bin/modstat/Attic/modstat.c between version 1.13 and 1.14

version 1.13, 2001/07/18 17:17:39 version 1.14, 2001/08/18 22:06:44
Line 52 
Line 52 
 usage()  usage()
 {  {
   
         fprintf(stderr,          fprintf(stderr, "usage: modstat [-i moduleid] [-n modulename]\n");
             "usage: modstat [-i moduleid] [-n modulename]\n");  
         exit(1);          exit(1);
 }  }
   
Line 72 
Line 71 
         int modnum;          int modnum;
         char *modname;          char *modname;
 {  {
           char name[MAXLKMNAME];
         struct lmc_stat sbuf;          struct lmc_stat sbuf;
         char name[MAXLKMNAME] = "";  
   
           bzero(&name, sizeof name);
         bzero(&sbuf, sizeof sbuf);          bzero(&sbuf, sizeof sbuf);
         sbuf.id = modnum;          sbuf.id = modnum;
         sbuf.name = name;          sbuf.name = name;
Line 82 
Line 82 
         if (modname != NULL) {          if (modname != NULL) {
                 if (strlen(modname) >= sizeof(name))                  if (strlen(modname) >= sizeof(name))
                         return 4;                          return 4;
                 strcpy(sbuf.name, modname);                  strlcpy(sbuf.name, modname, sizeof(name));
         }          }
   
         if (ioctl(devfd, LMSTAT, &sbuf) == -1) {          if (ioctl(devfd, LMSTAT, &sbuf) == -1) {
Line 97 
Line 97 
                 }                  }
         }          }
   
         /*          /* Decode this stat buffer... */
          * Decode this stat buffer...  
          */  
         printf("%-7s %3d %3ld %08lx %04lx %8lx %3ld %s\n",          printf("%-7s %3d %3ld %08lx %04lx %8lx %3ld %s\n",
             type_names[sbuf.type],              type_names[sbuf.type], sbuf.id, sbuf.offset,
             sbuf.id,            /* module id */              (long)sbuf.area, (long)sbuf.size, (long)sbuf.private,
             sbuf.offset,        /* offset into modtype struct */              (long)sbuf.ver, sbuf.name);
             (long)sbuf.area,            /* address module loaded at */  
             (long)sbuf.size,            /* size in pages(K) */  
             (long)sbuf.private, /* kernel address of private area */  
             (long)sbuf.ver,             /* Version; always 1 for now */  
             sbuf.name           /* name from private area */  
         );  
   
         /*  
          * Done (success).  
          */  
         return 0;          return 0;
 }  }
   
 int devfd;  int devfd;
   
 void  
 cleanup()  
 {  
   
         close(devfd);  
 }  
   
 int  int
 main(argc, argv)  main(argc, argv)
         int argc;          int argc;
         char *argv[];          char *argv[];
 {  {
         int c;          int c, modnum = -1;
         int modnum = -1;  
         char *modname = NULL;          char *modname = NULL;
   
         while ((c = getopt(argc, argv, "i:n:")) != -1) {          while ((c = getopt(argc, argv, "i:n:")) != -1) {
Line 164 
Line 145 
         setegid(getgid());          setegid(getgid());
         setgid(getgid());          setgid(getgid());
   
         atexit(cleanup);  
   
         printf("Type     Id Off Loadaddr Size Info     Rev Module Name\n");          printf("Type     Id Off Loadaddr Size Info     Rev Module Name\n");
   
         /*  
          * Oneshot?  
          */  
         if (modnum != -1 || modname != NULL) {          if (modnum != -1 || modname != NULL) {
                 if (dostat(devfd, modnum, modname))                  if (dostat(devfd, modnum, modname))
                         exit(3);                          exit(3);
                 exit(0);                  exit(0);
         }          }
   
         /*          /* Start at 0 and work up until we receive EINVAL. */
          * Start at 0 and work up until "EINVAL".  
          */  
         for (modnum = 0; dostat(devfd, modnum, NULL) < 2; modnum++)          for (modnum = 0; dostat(devfd, modnum, NULL) < 2; modnum++)
                 ;                  ;
   

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14