Package de.innosystec.unrar.exception

Examples of de.innosystec.unrar.exception.RarException


      switch (block.getHeaderType()) {

      case MarkHeader:
    markHead = new MarkHeader(block);
    if (!markHead.isSignature()) {
        throw new RarException(
          RarException.RarExceptionType.badRarArchive);
    }
    headers.add(markHead);
    // markHead.print();
    break;

      case MainHeader:
    int mainHeaderSize = 0;
    toRead = block.hasEncryptVersion() ? MainHeader.mainHeaderSizeWithEnc
      : MainHeader.mainHeaderSize;
    byte[] mainbuff = new byte[toRead];
    mainHeaderSize = rof.readFully(mainbuff, toRead);
    MainHeader mainhead = new MainHeader(block, mainbuff);
    headers.add(mainhead);
    this.newMhd = mainhead;
    if (newMhd.isEncrypted()) {
        throw new RarException(
          RarExceptionType.rarEncryptedException);
    }
    // mainhead.print();
    break;

      case SignHeader:
    int signHeaderSize = 0;
    toRead = SignHeader.signHeaderSize;
    byte[] signBuff = new byte[toRead];
    signHeaderSize = rof.readFully(signBuff, toRead);
    SignHeader signHead = new SignHeader(block, signBuff);
    headers.add(signHead);
    // logger.info("HeaderType: SignHeader");

    break;

      case AvHeader:
    int avHeaderSize = 0;
    toRead = AVHeader.avHeaderSize;
    byte[] avBuff = new byte[toRead];
    avHeaderSize = rof.readFully(avBuff, toRead);
    AVHeader avHead = new AVHeader(block, avBuff);
    headers.add(avHead);
    // logger.info("headertype: AVHeader");
    break;

      case CommHeader:
    int commHeaderSize = 0;
    toRead = CommentHeader.commentHeaderSize;
    byte[] commBuff = new byte[toRead];
    commHeaderSize = rof.readFully(commBuff, toRead);
    CommentHeader commHead = new CommentHeader(block, commBuff);
    headers.add(commHead);
    // logger.info("method: "+commHead.getUnpMethod()+"; 0x"+
    // Integer.toHexString(commHead.getUnpMethod()));
    newpos = commHead.getPositionInFile()
      + commHead.getHeaderSize();
    rof.setPosition(newpos);

    break;
      case EndArcHeader:

    toRead = 0;
    if (block.hasArchiveDataCRC()) {
        toRead += EndArcHeader.endArcArchiveDataCrcSize;
    }
    if (block.hasVolumeNumber()) {
        toRead += EndArcHeader.endArcVolumeNumberSize;
    }
    EndArcHeader endArcHead;
    if (toRead > 0) {
        int endArcHeaderSize = 0;
        byte[] endArchBuff = new byte[toRead];
        endArcHeaderSize = rof.readFully(endArchBuff, toRead);
        endArcHead = new EndArcHeader(block, endArchBuff);
        // logger.info("HeaderType: endarch\ndatacrc:"+
        // endArcHead.getArchiveDataCRC());
    } else {
        // logger.info("HeaderType: endarch - no Data");
        endArcHead = new EndArcHeader(block, null);
    }
    headers.add(endArcHead);
    this.endHeader = endArcHead;
    // logger.info("\n--------end header--------");
    return;

      default:
    byte[] blockHeaderBuffer = new byte[BlockHeader.blockHeaderSize];
    int bhsize = rof.readFully(blockHeaderBuffer,
      BlockHeader.blockHeaderSize);
    BlockHeader blockHead = new BlockHeader(block,
      blockHeaderBuffer);

    switch (blockHead.getHeaderType()) {
    case NewSubHeader:
    case FileHeader:
        toRead = blockHead.getHeaderSize()
          - BlockHeader.BaseBlockSize
          - BlockHeader.blockHeaderSize;
        byte[] fileHeaderBuffer = new byte[toRead];
        int fhsize = rof.readFully(fileHeaderBuffer, toRead);

        FileHeader fh = new FileHeader(blockHead, fileHeaderBuffer);
        // if (DEBUG) {
        // fh.print();
        // }
        headers.add(fh);
        newpos = fh.getPositionInFile() + fh.getHeaderSize()
          + fh.getFullPackSize();
        rof.setPosition(newpos);
        break;

    case ProtectHeader:
        toRead = blockHead.getHeaderSize()
          - BlockHeader.BaseBlockSize
          - BlockHeader.blockHeaderSize;
        byte[] protectHeaderBuffer = new byte[toRead];
        int phsize = rof.readFully(protectHeaderBuffer, toRead);
        ProtectHeader ph = new ProtectHeader(blockHead,
          protectHeaderBuffer);

        // logger.info("totalblocks"+ph.getTotalBlocks());
        newpos = ph.getPositionInFile() + ph.getHeaderSize();
        rof.setPosition(newpos);
        break;

    case SubHeader: {
        byte[] subHeadbuffer = new byte[SubBlockHeader.SubBlockHeaderSize];
        int subheadersize = rof.readFully(subHeadbuffer,
          SubBlockHeader.SubBlockHeaderSize);
        SubBlockHeader subHead = new SubBlockHeader(blockHead,
          subHeadbuffer);
        subHead.print();
        switch (subHead.getSubType()) {
        case MAC_HEAD: {
      byte[] macHeaderbuffer = new byte[MacInfoHeader.MacInfoHeaderSize];
      int macheadersize = rof.readFully(macHeaderbuffer,
        MacInfoHeader.MacInfoHeaderSize);
      MacInfoHeader macHeader = new MacInfoHeader(subHead,
        macHeaderbuffer);
      macHeader.print();
      headers.add(macHeader);

      break;
        }
      // TODO implement other subheaders
        case BEEA_HEAD:
      break;
        case EA_HEAD: {
      byte[] eaHeaderBuffer = new byte[EAHeader.EAHeaderSize];
      int eaheadersize = rof.readFully(eaHeaderBuffer,
        EAHeader.EAHeaderSize);
      EAHeader eaHeader = new EAHeader(subHead,
        eaHeaderBuffer);
      eaHeader.print();
      headers.add(eaHeader);

      break;
        }
        case NTACL_HEAD:
      break;
        case STREAM_HEAD:
      break;
        case UO_HEAD:
      toRead = subHead.getHeaderSize();
      toRead -= BaseBlock.BaseBlockSize;
      toRead -= BlockHeader.blockHeaderSize;
      toRead -= SubBlockHeader.SubBlockHeaderSize;
      byte[] uoHeaderBuffer = new byte[toRead];
      int uoHeaderSize = rof
        .readFully(uoHeaderBuffer, toRead);
      UnixOwnersHeader uoHeader = new UnixOwnersHeader(
        subHead, uoHeaderBuffer);
      uoHeader.print();
      headers.add(uoHeader);
      break;
        default:
      break;
        }

        break;
    }
    default:
        logger.warning("Unknown Header");
        throw new RarException(RarExceptionType.notRarArchive);

    }
      }
      // logger.info("\n--------end header--------");
  }
View Full Code Here


     *            the outputstream
     * @throws RarException
     */
    public void extractFile(FileHeader hd, OutputStream os) throws RarException {
  if (!headers.contains(hd)) {
      throw new RarException(RarExceptionType.headerNotInArchive);
  }
  try {
      doExtractFile(hd, os);
  } catch (Exception e) {
      if (e instanceof RarException) {
    throw (RarException) e;
      } else {
    throw new RarException(e);
      }
  }
    }
View Full Code Here

      hd = dataIO.getSubHeader();
      long actualCRC = hd.isSplitAfter() ? ~dataIO.getPackedCRC()
        : ~dataIO.getUnpFileCRC();
      int expectedCRC = hd.getFileCRC();
      if (actualCRC != expectedCRC) {
    throw new RarException(RarExceptionType.crcError);
      }
      // if (!hd.isSplitAfter()) {
      // // Verify file CRC
      // if(~dataIO.getUnpFileCRC() != hd.getFileCRC()){
      // throw new RarException(RarExceptionType.crcError);
      // }
      // }
  } catch (Exception e) {
      unpack.cleanUp();
      if (e instanceof RarException) {
    // throw new RarException((RarException)e);
    throw (RarException) e;
      } else {
    throw new RarException(e);
      }
  }
    }
View Full Code Here

TOP

Related Classes of de.innosystec.unrar.exception.RarException

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.