home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume4 / sco-crash / files.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-03  |  1.4 KB  |  61 lines

  1. #include <sys/param.h>
  2. #include <sys/sysmacros.h>
  3. #include <sys/types.h>
  4. #include <sys/var.h>
  5. #include <sys/inode.h>
  6. #include <sys/file.h>
  7. #include <sys/page.h>
  8. #include <sys/seg.h>
  9. #include <sys/signal.h>
  10. #include <sys/dir.h>
  11. #include <sys/user.h>
  12. #include "crash.h"
  13.  
  14. prfiles (items, cnt)
  15. int    *items;
  16. int    cnt;
  17. {
  18.     int    i;
  19.  
  20.     files = (struct file *) malloc (v.v_file * sizeof (struct file));
  21.     l_lseek (kmemfd, namelist[NM_FILE].xl_value, 0);
  22.     r_read (kmemfd, files, sizeof (struct file) * v.v_file);
  23.  
  24.     printf ("SLOT    FLAG          COUNT  INODE      OFFSET\n");
  25.     if (cnt == 0) {
  26.         for (i = 0;i < v.v_file;i++) {
  27.             if (files[i].f_count == 0 || files[i].f_flag == 0)
  28.                 continue;
  29.  
  30.             dofile (i);
  31.         }
  32.     } else {
  33.         for (i = 0;i < cnt;i++) {
  34.             if (items[i] >= v.v_file)
  35.                 printf ("value (%d) out of range\n", items[i]);
  36.             else
  37.                 dofile (items[i]);
  38.         }
  39.     }
  40.     free ((char *) files);
  41. }
  42.  
  43.  
  44. dofile (i)
  45. int    i;
  46. {
  47.     printf ("%4d    %03o %c%c%c%c%c%c%c%c  %5d  %5d  %10ld\n",
  48.         i, files[i].f_flag & FMASK,
  49.         (files[i].f_flag & FREAD) ? 'R':' ',
  50.         (files[i].f_flag & FWRITE) ? 'W':' ',
  51.         (files[i].f_flag & FNDELAY) ? 'N':' ',
  52.         (files[i].f_flag & FAPPEND) ? 'A':' ',
  53.         (files[i].f_flag & FSYNC) ? 'S':' ',
  54.         (files[i].f_flag & FCREAT) ? 'C':' ',
  55.         (files[i].f_flag & FTRUNC) ? 'T':' ',
  56.         (files[i].f_flag & FEXCL) ? 'X':' ',
  57.         files[i].f_count,
  58.         files[i].f_inode - (struct inode *) namelist[NM_INODE].xl_value,
  59.         files[i].f_offset);
  60. }
  61.