#include "rar.hpp" EncodeFileName::EncodeFileName() { Flags=0; FlagBits=0; FlagsPos=0; DestSize=0; } void EncodeFileName::Decode(char *Name,size_t NameSize,byte *EncName,size_t EncSize, wchar *NameW,size_t MaxDecSize) { size_t EncPos=0,DecPos=0; byte HighByte=EncPos=EncSize) break; Flags=EncName[EncPos++]; FlagBits=8; } switch(Flags>>6) { case 0: if (EncPos>=EncSize) break; NameW[DecPos++]=EncName[EncPos++]; break; case 1: if (EncPos>=EncSize) break; NameW[DecPos++]=EncName[EncPos++]+(HighByte<<8); break; case 2: if (EncPos+1>=EncSize) break; NameW[DecPos++]=EncName[EncPos]+(EncName[EncPos+1]<<8); EncPos+=2; break; case 3: { if (EncPos>=EncSize) break; int Length=EncName[EncPos++]; if ((Length & 0x80)!=0) { if (EncPos>=EncSize) break; byte Correction=EncName[EncPos++]; for (Length=(Length&0x7f)+2;Length>0 && DecPos0 && DecPos