This source file includes following definitions.
- sysv68_partition
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 #include "check.h"
   9 #include "sysv68.h"
  10 
  11 
  12 
  13 
  14 
  15 struct volumeid {
  16         u8      vid_unused[248];
  17         u8      vid_mac[8];     
  18 };
  19 
  20 
  21 
  22 
  23 
  24 struct dkconfig {
  25         u8      ios_unused0[128];
  26         __be32  ios_slcblk;     
  27         __be16  ios_slccnt;     
  28         u8      ios_unused1[122];
  29 };
  30 
  31 
  32 
  33 
  34 
  35 struct dkblk0 {
  36         struct volumeid dk_vid;
  37         struct dkconfig dk_ios;
  38 };
  39 
  40 
  41 
  42 
  43 
  44 struct slice {
  45         __be32  nblocks;                
  46         __be32  blkoff;                 
  47 };
  48 
  49 
  50 int sysv68_partition(struct parsed_partitions *state)
  51 {
  52         int i, slices;
  53         int slot = 1;
  54         Sector sect;
  55         unsigned char *data;
  56         struct dkblk0 *b;
  57         struct slice *slice;
  58         char tmp[64];
  59 
  60         data = read_part_sector(state, 0, §);
  61         if (!data)
  62                 return -1;
  63 
  64         b = (struct dkblk0 *)data;
  65         if (memcmp(b->dk_vid.vid_mac, "MOTOROLA", sizeof(b->dk_vid.vid_mac))) {
  66                 put_dev_sector(sect);
  67                 return 0;
  68         }
  69         slices = be16_to_cpu(b->dk_ios.ios_slccnt);
  70         i = be32_to_cpu(b->dk_ios.ios_slcblk);
  71         put_dev_sector(sect);
  72 
  73         data = read_part_sector(state, i, §);
  74         if (!data)
  75                 return -1;
  76 
  77         slices -= 1; 
  78         snprintf(tmp, sizeof(tmp), "sysV68: %s(s%u)", state->name, slices);
  79         strlcat(state->pp_buf, tmp, PAGE_SIZE);
  80         slice = (struct slice *)data;
  81         for (i = 0; i < slices; i++, slice++) {
  82                 if (slot == state->limit)
  83                         break;
  84                 if (be32_to_cpu(slice->nblocks)) {
  85                         put_partition(state, slot,
  86                                 be32_to_cpu(slice->blkoff),
  87                                 be32_to_cpu(slice->nblocks));
  88                         snprintf(tmp, sizeof(tmp), "(s%u)", i);
  89                         strlcat(state->pp_buf, tmp, PAGE_SIZE);
  90                 }
  91                 slot++;
  92         }
  93         strlcat(state->pp_buf, "\n", PAGE_SIZE);
  94         put_dev_sector(sect);
  95         return 1;
  96 }