3 EncodeFileName::EncodeFileName()
14 void EncodeFileName::Decode(char *Name,byte *EncName,int EncSize,wchar *NameW,
17 int EncPos=0,DecPos=0;
18 byte HighByte=EncName[EncPos++];
19 while (EncPos<EncSize && DecPos<MaxDecSize)
23 Flags=EncName[EncPos++];
29 NameW[DecPos++]=EncName[EncPos++];
32 NameW[DecPos++]=EncName[EncPos++]+(HighByte<<8);
35 NameW[DecPos++]=EncName[EncPos]+(EncName[EncPos+1]<<8);
40 int Length=EncName[EncPos++];
43 byte Correction=EncName[EncPos++];
44 for (Length=(Length&0x7f)+2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)
45 NameW[DecPos]=((Name[DecPos]+Correction)&0xff)+(HighByte<<8);
48 for (Length+=2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)
49 NameW[DecPos]=Name[DecPos];
56 NameW[DecPos<MaxDecSize ? DecPos:MaxDecSize-1]=0;