Changeset 3366


Ignore:
Timestamp:
11/13/07 15:34:50 (12 years ago)
Author:
melissa
Message:

Updated poi-loci.jar - fixes a couple of bugs with files that have a big block size of 4096.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/IPWReader.java

    r3197 r3366  
    309309 
    310310    try { 
     311      in.order(true); 
     312      in.seek(30); 
     313      int size = (int) Math.pow(2, in.readShort()); 
     314      in.seek(0); 
    311315      r.setVar("fis", in); 
    312       r.exec("fs = new POIFSFileSystem(fis)"); 
     316      r.exec("fs = new POIFSFileSystem(fis, size)"); 
    313317      r.exec("dir = fs.getRoot()"); 
    314318      parseDir(0, r.getVar("dir")); 
  • trunk/loci/formats/in/OIBReader.java

    r3354 r3366  
    197197        in.setExtend(4096 - (int) (in.length() % 4096)); 
    198198      } 
     199 
     200      in.order(true); 
     201      in.seek(30); 
     202      int blockSize = (int) Math.pow(2, in.readShort()); 
     203      in.seek(0); 
     204 
    199205      r.setVar("fis", in); 
    200       r.exec("fs = new POIFSFileSystem(fis)"); 
     206      r.setVar("size", blockSize); 
     207      r.exec("fs = new POIFSFileSystem(fis, size)"); 
    201208      r.exec("dir = fs.getRoot()"); 
    202209      parseDir(0, r.getVar("dir")); 
     
    429436    r.exec("iter = dir.getEntries()"); 
    430437    Iterator iter = (Iterator) r.getVar("iter"); 
     438 
     439    String dirName = (String) r.getVar("dirName"); 
    431440    while (iter.hasNext()) { 
    432441      r.setVar("entry", iter.next()); 
     
    450459        r.exec("numBytes = dis.available()"); 
    451460        int numbytes = ((Integer) r.getVar("numBytes")).intValue(); 
    452         byte[] data = new byte[numbytes + 4]; // append 0 for final offset 
     461        byte[] data = new byte[numbytes]; 
    453462        r.setVar("data", data); 
    454463        r.exec("dis.read(data)"); 
    455464 
    456465        String entryName = (String) r.getVar("entryName"); 
    457         String dirName = (String) r.getVar("dirName"); 
    458466 
    459467        // check the first 2 bytes of the stream 
  • trunk/loci/formats/in/PCIReader.java

    r3354 r3366  
    139139    try { 
    140140      in = new RandomAccessStream(id); 
     141      in.order(true); 
     142      in.seek(30); 
     143      int size = (int) Math.pow(2, in.readShort()); 
     144      in.seek(0); 
    141145 
    142146      r.setVar("fis", in); 
    143       r.exec("fs = new POIFSFileSystem(fis)"); 
     147      r.exec("fs = new POIFSFileSystem(fis, size)"); 
    144148      r.exec("dir = fs.getRoot()"); 
    145149      parseDir(0, r.getVar("dir")); 
  • trunk/loci/formats/in/ZeissZVIReader.java

    r3331 r3366  
    103103  private int tileRows, tileColumns; 
    104104  private boolean isJPEG; 
     105  private int alphaIndex; 
     106 
     107  // -- debug -- 
     108 
     109  private Vector directories = new Vector(); 
    105110 
    106111  // -- Constructor -- 
     
    133138    FormatTools.checkPlaneNumber(this, no); 
    134139    FormatTools.checkBufferSize(this, buf.length); 
     140 
     141    /* 
     142    int[] zct = FormatTools.getZCTCoords(this, no); 
     143    if (alphaIndex != -1) { 
     144      if ((alphaIndex == 3 && (zct[1] == 0 || zct[1] == 2)) || 
     145        (alphaIndex == 0 && (zct[1] == 1 || zct[1] == 3))) 
     146      { 
     147        zct[1] = 2 - zct[1]; 
     148        no = FormatTools.getIndex(this, zct[0], zct[1], zct[2]); 
     149      } 
     150    } 
     151    */ 
    135152 
    136153    try { 
     
    279296      //} 
    280297 
     298      in.order(true); 
     299      in.seek(30); 
     300      int size = (int) Math.pow(2, in.readShort()); 
     301      in.seek(0); 
     302 
    281303      r.setVar("fis", in); 
    282       r.exec("fs = new POIFSFileSystem(fis)"); 
     304      r.setVar("size", size); 
     305      r.exec("fs = new POIFSFileSystem(fis, size)"); 
    283306      r.exec("dir = fs.getRoot()"); 
    284307      parseDir(0, r.getVar("dir")); 
     
    602625    r.exec("iter = dir.getEntries()"); 
    603626    Iterator iter = (Iterator) r.getVar("iter"); 
     627    String dirName = (String) r.getVar("dirName"); 
     628    directories.add(dirName); 
    604629    while (iter.hasNext()) { 
    605630      r.setVar("entry", iter.next()); 
     
    624649        r.exec("numBytes = dis.available()"); 
    625650        int numbytes = ((Integer) r.getVar("numBytes")).intValue(); 
    626         byte[] data = new byte[numbytes + 4]; // append 0 for final offset 
     651        byte[] data = new byte[numbytes]; 
    627652        r.setVar("data", data); 
    628653 
    629         // Suppressing an exception here looks like poor style. 
    630         // However, this at least gives us a chance at reading files with 
    631         // corrupt blocks. 
    632654        try { 
    633655          r.exec("dis.read(data)"); 
     
    638660 
    639661        String entryName = (String) r.getVar("entryName"); 
    640         String dirName = (String) r.getVar("dirName"); 
    641662 
    642663        boolean isContents = entryName.toUpperCase().equals("CONTENTS"); 
     
    776797      } 
    777798    } 
     799    directories.remove(dirName); 
    778800  } 
    779801 
     
    799821    s.skipBytes(4); 
    800822    bpp = s.readInt(); 
    801     //s.skipBytes(8); 
    802823    s.skipBytes(4); 
    803824    int valid = s.readInt(); 
Note: See TracChangeset for help on using the changeset viewer.