File: dbilist.pl

package info (click to toggle)
emboss 6.6.0%2Bdfsg-12
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 571,584 kB
  • sloc: ansic: 460,579; java: 29,383; perl: 13,573; sh: 12,753; makefile: 3,294; csh: 706; asm: 351; xml: 239; pascal: 237; modula3: 8
file content (109 lines) | stat: -rwxr-xr-x 2,736 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/perl -w

if (!defined($ARGV[0])) {
  print STDERR "Usage: dbilist.pl <index>\n";
  print STDERR "   where index is entrynam, acnum, seqvn, des, key, tax\n";
  exit ;
}
$index = $ARGV[0];
if ($index eq "entrynam") {$isindex=0}
else {$isindex=1}


print "$index\n";

if ($isindex) {

  open (HIT, "$index.hit") || die "Cannot open $index.hit";

  read (HIT, $hithead, 44, 0);

  ($hitfilesize, $hitrecordcnt, $hitrecordlen, $hitdbname, $hitrelease, $hitdate1, $hitdate2, $hitdate3, $hitdate4) = unpack ("V2vA20A10c4", $hithead);

  print "
hitfilesize $hitfilesize
hitrecordcnt $hitrecordcnt
hitrecordlen $hitrecordlen
htdbname '$hitdbname'
hitrelease '$hitrelease'
hitdate $hitdate1/$hitdate2/$hitdate3$hitdate4
";

  seek (HIT, 300, 0);

  open (TRG, "$index.trg") || die "Cannot open $index.trg";

  read (TRG, $trghead, 44, 0);

  ($trgfilesize, $trgrecordcnt, $trgrecordlen, $trgdbname, $trgrelease, $trgdate1, $trgdate2, $trgdate3, $trgdate4) = unpack ("V2vA20A10c4", $trghead);

  print "
trgfilesize $trgfilesize
trgrecordcnt $trgrecordcnt
trgrecordlen $trgrecordlen
htdbname '$trgdbname'
trgrelease '$trgrelease'
trgdate $trgdate1/$trgdate2/$trgdate3$trgdate4
";

  seek (TRG, 300, 0);

}

open (ENT, "entrynam.idx") || die "Cannot open entrynam.idx";

read (ENT, $enthead, 44, 0);

($entfilesize, $entrecordcnt, $entrecordlen) = unpack ("V2v", $enthead);

print "
entfilesize $entfilesize
entrecordcnt $entrecordcnt
entrecordlen $entrecordlen
";

seek (ENT, 300, 0);

$entidlen = $entrecordlen-10;

if (!$isindex) {
  $i=1;
  while ($i<=$entrecordcnt) {
    $entpos = 300-$entrecordlen+($i*$entrecordlen);
    seek (ENT, $entpos, 0);
    read (ENT, $entrecord, $entrecordlen, 0);
    ($entid,$entref, $entseq, $entfile) = unpack ("A$entidlen"."V2v", $entrecord);
    print "Entry $i pos $entpos file $entfile offsets $entref,$entseq '$entid'\n";
    $i++;
  }
}

else {
  $i=1;
  while ($i<=$trgrecordcnt) {

    seek (TRG, 300-$trgrecordlen+($i*$trgrecordlen), 0);
    read (TRG, $trgrecord, $trgrecordlen, 0);
    ($hitcnt,$hitnum,$token) = unpack ("V2A*", $trgrecord);
    print "\nTRG record $i count:$hitcnt start:$hitnum '$token'\n";

    seek (HIT, 300-$hitrecordlen+($hitnum*$hitrecordlen), 0);
    for ($j=1;$j<=$hitcnt;$j++) {
      read (HIT, $hitrecord, $hitrecordlen, 0);
      ($entrec) = unpack ("V", $hitrecord);

      seek (ENT, 300-$entrecordlen+($entrec*$entrecordlen), 0);
      read (ENT, $entrecord, $entrecordlen, 0);
      ($entid,$entref, $entseq, $entfile) = unpack ("A$entidlen"."V2v", $entrecord);

      $recnum = $hitnum+$j-1;
      print "Hit record $recnum: Entry $entrec file $entfile offsets $entref,$entseq '$entid'\n";
    }
    $i++;
  }

  close HIT;
  close TRG;
}

close ENT;