home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Utilities / UnRAR / src_amiga / rdwrfn.c < prev    next >
Encoding:
Text File  |  1999-11-15  |  1.4 KB  |  61 lines

  1. unsigned int UnpRead(unsigned char *Addr,unsigned int Count)
  2. {
  3.   unsigned int I,RetCode=0,ReadSize,TotalRead=0;
  4.   unsigned char *ReadAddr;
  5.   ReadAddr=Addr;
  6.   while (Count > 0)
  7.   {
  8.     ReadSize=(unsigned int)((Count>(unsigned long)UnpPackedSize) ? UnpPackedSize : Count);
  9.     if (ArcPtr==NULL)
  10.       return(0);
  11.     RetCode=tread(RdUnpPtr,ReadAddr,ReadSize);
  12.     if (NewLhd.Flags & LHD_SPLIT_AFTER)
  13.       PackedCRC=CRC(PackedCRC,ReadAddr,ReadSize,CRC32);
  14.     CurUnpRead+=RetCode;
  15.     ReadAddr+=RetCode;
  16.     TotalRead+=RetCode;
  17.     Count-=RetCode;
  18.     UnpPackedSize-=RetCode;
  19.     if (UnpPackedSize == 0 && UnpVolume)
  20.       MergeArchive(1);
  21.     else
  22.       break;
  23.   }
  24.   if (RetCode!=-1U)
  25.   {
  26.     RetCode=TotalRead;
  27.     if (Encryption)
  28.       if (Encryption<20)
  29.         Crypt(Addr,RetCode,(Encryption==15) ? NEW_CRYPT : OLD_DECODE);
  30.       else
  31.         for (I=0;I<RetCode;I+=16)
  32.           DecryptBlock(&Addr[I]);
  33.   }
  34.   return(RetCode);
  35. }
  36.  
  37.  
  38. unsigned int UnpWrite(unsigned char *Addr,unsigned int Count)
  39. {
  40.   unsigned int RetCode;
  41.   UnpWrAddr=Addr;
  42.   UnpWrSize=Count;
  43.   if (TestMode)
  44.     RetCode=Count;
  45.   else
  46.     RetCode=twrite(WrUnpPtr,Addr,Count);
  47.   CurUnpWrite+=RetCode;
  48.   if (!SkipUnpCRC)
  49.     UnpFileCRC=CRC(UnpFileCRC,Addr,RetCode,(ArcFormat==OLD) ? CRC16 : CRC32);
  50.   ShowUnpWrite();
  51.   return(RetCode);
  52. }
  53.  
  54.  
  55. void ShowUnpWrite(void)
  56. {
  57. /*  percent=ToPercent(CurUnpWrite,NewLhd.UnpSize); */
  58. }
  59.  
  60.  
  61.