unace-2.5/0000755000175000017500000000000010345140432013161 5ustar danieldaniel00000000000000unace-2.5/source/0000755000175000017500000000000007752377754014514 5ustar danieldaniel00000000000000unace-2.5/source/base/0000755000175000017500000000000007752377756015430 5ustar danieldaniel00000000000000unace-2.5/source/base/all/0000755000175000017500000000000007752377756016200 5ustar danieldaniel00000000000000unace-2.5/source/base/all/crc/0000755000175000017500000000000007752377756016747 5ustar danieldaniel00000000000000unace-2.5/source/base/all/crc/c/0000755000175000017500000000000007752377756017171 5ustar danieldaniel00000000000000unace-2.5/source/base/all/crc/c/crc.c0000644000175000017500000000040207157426372020064 0ustar danieldaniel00000000000000 /*-----------------BASE_CRC_GetCRC---------------------------------------*/ ULONG BASE_CRC_GetCRC(ULONG CRC, PCHAR Addr, int Len) { while (Len--) { CRC = BASE_CRC.CRCTable[(UCHAR) (CRC ^ (*Addr++))] ^ (CRC >> 8); } return CRC; } unace-2.5/source/base/all/crc/crc.c0000644000175000017500000000144207213710624017634 0ustar danieldaniel00000000000000#define INCL_BASE_CRC_EXCLUSIVE #include "base/all/includes.h" #ifdef USE_ASM #include "base/all/crc/asm/crc.c" #else #include "base/all/crc/c/crc.c" #endif /*-----------------BASE_CRC_MakeCRCTable---------------------------------*/ void BASE_CRC_MakeCRCTable(void) { UINT I, J; ULONG HashValue; for (I = 0; I <= 255; I++) { for (HashValue = I, J = 8; J; J--) { HashValue = (HashValue & 1) ? (HashValue >> 1) ^ BASE_CRC_POLYNOMIAL : (HashValue >> 1); } BASE_CRC.CRCTable[I] = HashValue; } } /*-----------------BASE_CRC_GetCRC16-------------------------------------*/ USHORT BASE_CRC_GetCRC16(ULONG CRC, PCHAR Addr, int Len) { return (USHORT) BASE_CRC_GetCRC(CRC, Addr, Len); } unace-2.5/source/base/all/crc/crc.h0000644000175000017500000000113407157426372017652 0ustar danieldaniel00000000000000#ifndef _BASE_CRC_H_INCLUDED #define _BASE_CRC_H_INCLUDED #ifdef INCL_BASE_CRC_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_CRC_MASK 0xFFFFFFFFL #define BASE_CRC_POLYNOMIAL 0xEDB88320L typedef struct { ULONG CRCTable[256]; INT WriteCRC, ReadCRC; } tBASE_CRC; DECLEXT tBASE_CRC BASE_CRC; void BASE_CRC_MakeCRCTable(void); USHORT BASE_CRC_GetCRC16(ULONG CRC, PCHAR Addr, int Len); ULONG BASE_CRC_GetCRC(ULONG CRC, PCHAR Addr, INT Len); #undef DECLEXT #endif unace-2.5/source/base/all/lfn/0000755000175000017500000000000007752377756016757 5ustar danieldaniel00000000000000unace-2.5/source/base/all/lfn/nodos32.c0000644000175000017500000000402407440103004020351 0ustar danieldaniel00000000000000//#include #include #include #include #define INCL_BASE_DOSFUNCS #define INCL_BASE_LFN #include "base/all/includes.h" /*-----------------BASE_LFN_FindFirst------------------------------------*/ INT BASE_LFN_FindFirst(PCHAR Specification, INT Attr, pBASE_LFN_FINDSTRUCT DirStruc) { struct findi64_t *FindStruc; FindStruc = (struct findi64_t*) &DirStruc->DosFindStruct; if (_dos_findfirsti64(Specification, Attr, FindStruc)) { errno = -1; return 1; } strcpy(DirStruc->Name, FindStruc->name); DirStruc->Attributes = FindStruc->attrib; DirStruc->Time = FindStruc->wr_time; DirStruc->Date = FindStruc->wr_date; DirStruc->Size = FindStruc->size; return 0; } /*-----------------BASE_LFN_FindNext-------------------------------------*/ INT BASE_LFN_FindNext(pBASE_LFN_FINDSTRUCT DirStruc) { struct findi64_t *FindStruc; FindStruc = (struct findi64_t*) &DirStruc->DosFindStruct; if (_dos_findnexti64(FindStruc)) { errno = -1; return 1; } strcpy(DirStruc->Name, FindStruc->name); DirStruc->Attributes = FindStruc->attrib; DirStruc->Time = FindStruc->wr_time; DirStruc->Date = FindStruc->wr_date; DirStruc->Size = FindStruc->size; return 0; } /*-----------------BASE_LFN_FindClose------------------------------------*/ INT BASE_LFN_FindClose(pBASE_LFN_FINDSTRUCT DirStruc) { if (_dos_findclosei64((struct findi64_t*)&DirStruc->DosFindStruct)) { errno = -1; return 1; } return 0; } /*-----------------BASE_LFN_CheckExistence-------------------------------*/ void BASE_LFN_CheckExistence(PCHAR Path) { } /*-----------------BASE_LFN_RemoveDir------------------------------------*/ INT BASE_LFN_RemoveDir(PCHAR Dir) { return rmdir(Dir); } /*-----------------BASE_LFN_ShortNameChangeDir---------------------------*/ PCHAR BASE_LFN_ShortNameChangeDir(PCHAR Path) { return Path; } unace-2.5/source/base/all/lfn/lfn.c0000644000175000017500000000727707752436202017675 0ustar danieldaniel00000000000000#include #include #include #include #include #include #include #ifdef __HAS_IO_H__ #include #endif #define INCL_BASE_LFN_EXCLUSIVE #define INCL_BASE_DOSFUNCS #include "base/all/includes.h" /*-----------------BASE_LFN_ChangeDir------------------------------------*/ INT BASE_LFN_ChangeDir(PCHAR Directory) { // return chdir(BASE_LFN_ShortName(Directory)); return chdir(BASE_LFN_ShortNameChangeDir(Directory)); } /*-----------------BASE_LFN_GetCurrentDir--------------------------------*/ PCHAR BASE_LFN_GetCurrentDir(PCHAR Directory, size_t Size) { Directory = (PCHAR) getcwd(Directory, Size); strcpy(Directory, BASE_LFN_LongName(Directory)); return Directory; } /*-----------------BASE_LFN_GetCurrentDirOfDrive-------------------------*/ PCHAR BASE_LFN_GetCurrentDirOfDrive(INT Drive, PCHAR Directory, size_t Size) { INT SavedDrive; SavedDrive = BASE_DOSFUNCS_GetDrive(); BASE_DOSFUNCS_SetDrive(Drive); BASE_LFN_GetCurrentDir(Directory, Size); BASE_DOSFUNCS_SetDrive(SavedDrive); return Directory; } /*-----------------BASE_LFN_Open-----------------------------------------*/ INT BASE_LFN_Open(PCHAR Path, INT Access,...) { INT Permission; va_list ArgumentList; if (Access & O_CREAT) { va_start(ArgumentList, Access); Permission = va_arg(ArgumentList, INT); va_end(ArgumentList); BASE_LFN_CheckExistence(Path); } return open(BASE_LFN_ShortName(Path), Access, Permission); } /*-----------------BASE_LFN_ShareOpen------------------------------------*/ INT BASE_LFN_ShareOpen(PCHAR Path, INT Access, BOOL WriteAccess,...) { INT Permission; va_list ArgumentList; if (Access & O_CREAT) { va_start(ArgumentList, WriteAccess); Permission = va_arg(ArgumentList, INT); va_end(ArgumentList); BASE_LFN_CheckExistence(Path); } return BASE_DOSFUNCS_ShareOpen(BASE_LFN_ShortName(Path), Access, WriteAccess, Permission); } /*-----------------BASE_LFN_GetFileAttributes----------------------------*/ UINT BASE_LFN_GetFileAttributes(PCHAR Path, PUINT Attr) { return BASE_DOSFUNCS_GetFileAttributes(BASE_LFN_ShortName(Path), Attr); } /*-----------------BASE_LFN_SetFileAttributes----------------------------*/ UINT BASE_LFN_SetFileAttributes(PCHAR Path, UINT Attr) { return BASE_DOSFUNCS_SetFileAttributes(BASE_LFN_ShortName(Path), Attr); } /*-----------------BASE_LFN_RemoveFile-----------------------------------*/ INT BASE_LFN_RemoveFile(PCHAR Path) { return remove(BASE_LFN_ShortName(Path)); } /*-----------------BASE_LFN_Access---------------------------------------*/ INT BASE_LFN_Access(PCHAR Path, INT Mode) { PCHAR ShortPath; ShortPath = BASE_LFN_ShortName(Path); if (!ShortPath[0]) { errno = ENOENT; return -1; } return access(ShortPath, Mode); } /*-----------------BASE_LFN_GetFileTime----------------------------------*/ ULONG BASE_LFN_GetFileTime(PCHAR FileName) { struct findi64_t FindStruc; INT Handle, Result; USHORT Date, Time; if (-1 == (Handle = BASE_LFN_Open(BASE_LFN_ShortName(FileName), 0))) { if (_dos_findfirsti64(BASE_LFN_ShortName(FileName), BASE_LFN_GetFindAllFilesAndDirsAttr(), &FindStruc)) { return 0; } Result = FindStruc.wr_date << 16 | FindStruc.wr_time; _dos_findclosei64(&FindStruc); return Result; } BASE_DOSFUNCS_GetFileTime(Handle, &Date, &Time); close(Handle); return Date << 16 | Time; } unace-2.5/source/base/all/lfn/lfn.h0000644000175000017500000000566207752437720017704 0ustar danieldaniel00000000000000#ifndef _BASE_LFN_H_INCLUDED #define _BASE_LFN_H_INCLUDED #include #include #ifdef __HAS_IO_H__ #include #endif #ifdef INCL_BASE_LFN_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #ifndef O_BINARY #define O_BINARY 0x0 #endif #ifndef S_IRWXU #define S_IRWXU 0x0 #define S_IRWXG 0x0 #define S_IRWXO 0x0 #endif #define BASE_LFN_MAXLEN 320 #define BASE_LFN_DOUBLEMAXLEN (2 * BASE_LFN_MAXLEN) typedef CHAR tLFN[BASE_LFN_MAXLEN]; typedef tLFN *pLFN; typedef CHAR tBASE_LFN_DBL[BASE_LFN_DOUBLEMAXLEN]; typedef tBASE_LFN_DBL *pBASE_LFN_DBL; #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { CHAR Reserved[21]; CHAR Attributes; USHORT Time; USHORT Date; ULONGLONG Size; tLFN Name; } tBASE_LFN_DOSFINDSTRUCT, *pBASE_LFN_DOSFINDSTRUCT; typedef struct { USHORT Handle; ULONG Attributes; ULONG CreationLo; ULONG CreationHi; ULONG LastAccessLo; ULONG LastAccessHi; USHORT Time; USHORT Date; ULONG LastModifyLo; ULONG LastModifyHi; ULONGLONG Size; CHAR Reserved[8]; tLFN Name; CHAR ShortName[14]; BOOL IsFirstReadDirCall, IsDosLFNCall; tBASE_LFN_DOSFINDSTRUCT DosFindStruct; } tBASE_LFN_FINDSTRUCT, *pBASE_LFN_FINDSTRUCT; #define RESTOREALIGNMENT #include "base/all/packprag.h" typedef struct { tLFN ShortNameStr, LongNameStr; tLFN Arg0; } tBASE_LFN; DECLEXT tBASE_LFN BASE_LFN; BOOL BASE_LFN_DriveSupportsLFN(PCHAR Drive); void BASE_LFN_CheckExistence(PCHAR Path); INT BASE_LFN_FindFirst(PCHAR Specification, INT Attr, pBASE_LFN_FINDSTRUCT DirStruc); INT BASE_LFN_FindNext(pBASE_LFN_FINDSTRUCT DirStruc); INT BASE_LFN_FindClose(pBASE_LFN_FINDSTRUCT DirStruc); INT BASE_LFN_ChangeDir(PCHAR Dir); PCHAR BASE_LFN_GetCurrentDir(PCHAR Dir, size_t Size); PCHAR BASE_LFN_GetCurrentDirOfDrive(INT Drive, PCHAR Dir, size_t Size); INT BASE_LFN_Open(PCHAR Path, INT Access,...); INT BASE_LFN_ShareOpen(PCHAR Path, INT Access, BOOL WriteAccess,...); UINT BASE_LFN_GetFileAttributes(PCHAR Path, PUINT Attr); UINT BASE_LFN_SetFileAttributes(PCHAR Path, UINT Attr); INT BASE_LFN_RemoveFile(PCHAR Path); INT BASE_LFN_Access(PCHAR Path, INT Mode); ULONG BASE_LFN_GetFileTime(PCHAR FileName); INT BASE_LFN_ShortenLongFileName(PCHAR ShortName, PCHAR Name, INT NameNumber); void BASE_LFN_CompleteArg0(PCHAR *Arg0); void BASE_LFN_ConvertFileName(PCHAR Path, INT Attr); PCHAR BASE_LFN_ExtendPath(PCHAR Path, INT MaxLen); INT BASE_LFN_MakeDir(PCHAR Dir); INT BASE_LFN_RemoveDir(PCHAR Dir); PCHAR BASE_LFN_ShortName(PCHAR Path); PCHAR BASE_LFN_ShortNameChangeDir(PCHAR Path); PCHAR BASE_LFN_LongName(PCHAR Path); INT BASE_LFN_GetFindAllFilesAndDirsAttr(void); INT BASE_LFN_GetFindAllFilesAttr(void); #undef DECLEXT #endif unace-2.5/source/base/all/lfn/lin.c0000644000175000017500000000413307764730366017677 0ustar danieldaniel00000000000000#include #include #include #include #include #define INCL_BASE_LFN #define INCL_BASE_MEMORY #include "base/all/includes.h" #ifdef __sun__ static char * strsep(char **stringp, char *delim) { char *start = *stringp; char *cp; char ch; if (start == NULL) return NULL; for (cp = start; ch = *cp; cp++) { if (strchr(delim, ch)) { *cp++ = 0; *stringp = cp; return start; } } *stringp = NULL; return start; } #endif /*-----------------BASE_LFN_CompleteArg0---------------------------------*/ void BASE_LFN_CompleteArg0(PCHAR *Arg0) { PCHAR Env, SepStr; struct stat st; tLFN SearchFile, Path; strcpy(SearchFile, *Arg0); if (SearchFile[0] != '.') { SepStr = getenv("PATH"); if (Env = (PCHAR) BASE_MEMORY_GetMem(strlen(SepStr) + 1)) { strcpy(Env, SepStr); SepStr = Env; while (SepStr) { sprintf(Path, "%s/%s", strsep(&SepStr, ":"), SearchFile); if (!stat(Path, &st)) { strcpy(SearchFile, Path); break; } } BASE_MEMORY_FreeCheck((PVOID*)&Env); } } strcpy(BASE_LFN.Arg0, SearchFile); *Arg0 = BASE_LFN.Arg0; } /*-----------------BASE_LFN_ExtendPath-----------------------------------*/ PCHAR BASE_LFN_ExtendPath(PCHAR Path, INT MaxLen) { return Path; } /*-----------------BASE_LFN_ShortName------------------------------------*/ PCHAR BASE_LFN_ShortName(PCHAR Path) { return Path; } /*-----------------BASE_LFN_LongName-------------------------------------*/ PCHAR BASE_LFN_LongName(PCHAR Path) { return Path; } /*-----------------BASE_LFN_DriveSupportsLFN-----------------------------*/ BOOL BASE_LFN_DriveSupportsLFN(PCHAR Drive) { return 1; } /*-----------------BASE_LFN_MakeDir--------------------------------------*/ INT BASE_LFN_MakeDir(PCHAR Dir) { INT Result; Result = mkdir(Dir, 0755); if (!Result) chmod(Dir, 0755); return Result; } unace-2.5/source/base/all/lfn/nont.c0000644000175000017500000000723507752440252020066 0ustar danieldaniel00000000000000#include #include #ifdef __HAS_IO_H__ #include #endif #define INCL_BASE_DOSFUNCS #define INCL_BASE_PATHFUNC #include "base/all/includes.h" /*-----------------BASE_LFN_ConvertFileName------------------------------*/ void BASE_LFN_ConvertFileName(PCHAR Path, INT Attr) { BOOL IsLastName; tLFN TestExistencePath, TempPath, Name, ShortName, DriveStr; PCHAR FirstNamePos, NextSlashPos, NamePos; INT NameNumber, NameLen; IsLastName = 0; strcpy(DriveStr, Path); BASE_PATHFUNC_CompletePath(DriveStr); DriveStr[2] = 0; for (NamePos = Path; *NamePos; NamePos++) { if (strchr("*\x22<>|", *NamePos)) { *NamePos = '_'; } } if (!BASE_LFN_DriveSupportsLFN(DriveStr)) { FirstNamePos = Path + BASE_PATHFUNC_GetDevicePathLen(Path); strcpy(TempPath, FirstNamePos); *FirstNamePos = 0; NamePos = TempPath; do { if (NextSlashPos = (PCHAR) strchr(NamePos, BASE_PATHFUNC_SEPARATOR)) { NameLen = NextSlashPos - NamePos; } else { NameLen = strlen(NamePos); IsLastName = 1; } strncpy(Name, NamePos, NameLen); Name[NameLen] = NameNumber = 0; do { NameNumber++; if (!BASE_LFN_ShortenLongFileName(ShortName, Name, NameNumber)) { IsLastName = 0; } sprintf(TestExistencePath, "%s%s", Path, ShortName); } while (!(Attr & BASE_DOSFUNCS_SUBDIR) && IsLastName && BASE_DOSFUNCS_FileExists(TestExistencePath) && Attr != 0xffff); strcat(Path, ShortName); if (NextSlashPos) { NameLen = strlen(Path); Path[NameLen] = BASE_PATHFUNC_SEPARATOR; Path[NameLen + 1] = 0; } NamePos = NextSlashPos + 1; } while (NextSlashPos); } } /*-----------------BASE_LFN_GetFindAllFilesAndDirsAttr-------------------*/ INT BASE_LFN_GetFindAllFilesAndDirsAttr(void) { return BASE_DOSFUNCS_RDONLY | BASE_DOSFUNCS_HIDDEN | BASE_DOSFUNCS_SYSTEM | BASE_DOSFUNCS_SUBDIR | BASE_DOSFUNCS_ARCH; } /*-----------------BASE_LFN_GetFindAllFilesAttr--------------------------*/ INT BASE_LFN_GetFindAllFilesAttr(void) { return BASE_DOSFUNCS_RDONLY | BASE_DOSFUNCS_HIDDEN | BASE_DOSFUNCS_SYSTEM | BASE_DOSFUNCS_ARCH; } /*-----------------BASE_LFN_ShortenLongFileName--------------------------*/ INT BASE_LFN_ShortenLongFileName(PCHAR ShortName, PCHAR Name, INT NameNumber) { INT I, Result, Len; PCHAR CharPos1, CharPos2; CHAR NumberStr[8]; strcpy(ShortName, Name); CharPos1 = strrchr(Name, '.'); if (!CharPos1) { CharPos1 = &Name[strlen(Name)]; } Len = (UINT) CharPos1 - (UINT) Name; for (I = 0; I < Len; I++) { if (strchr(".+,;=[] ", ShortName[I])) { if (Len > 1) { memmove(&ShortName[I], &ShortName[I + 1], Len - I); Len--; I--; } else { ShortName[I] = '_'; } } } if (Len > 8) { sprintf(NumberStr, "%d", NameNumber); sprintf(&ShortName[7 - strlen(NumberStr)], "~%s", NumberStr); Result = 1; } else { ShortName[Len] = Result = 0; } CharPos2 = CharPos1; while (*(++CharPos2)) { if (strchr(".+,;=[] ", *CharPos2)) { *CharPos2 = '_'; } } strcat(ShortName, CharPos1); return Result; } unace-2.5/source/base/all/dcpr/0000755000175000017500000000000007752377756017130 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/pic/0000755000175000017500000000000007752377756017703 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/pic/c/0000755000175000017500000000000007752377756020125 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/pic/c/pic.c0000644000175000017500000002455707157426372021045 0ustar danieldaniel00000000000000/*-----------------BASE_DCPR_PIC_GetContext------------------------------*/ INT BASE_DCPR_PIC_GetContext(void) { return BASE_CPRDCPR_PIC_QuantizerArrx9x9(BASE_DCPR_PIC.PixelD - BASE_DCPR_PIC.PixelA) + BASE_CPRDCPR_PIC_QuantizerArrx9 (BASE_DCPR_PIC.PixelA - BASE_DCPR_PIC.PixelC) + BASE_CPRDCPR_PIC_QuantizerArr (BASE_DCPR_PIC.PixelC - BASE_DCPR_PIC.PixelB); } /*-----------------BASE_DCPR_PIC_SetPixels1-------------------------------*/ void BASE_DCPR_PIC_SetPixels1(void) { BASE_DCPR_PIC.PixelD = BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurPlane]; BASE_DCPR_PIC.PixelA = BASE_DCPR_PIC.PixelB = BASE_DCPR_PIC.PixelC = BASE_DCPR_PIC.PixelX = 0; if (BASE_DCPR_PIC.CurPred == 1) { BASE_DCPR_PIC.PixelA = BASE_DCPR_PIC.PixelB = BASE_DCPR_PIC.PixelC = BASE_DCPR_PIC.PixelX = 128; BASE_DCPR_PIC.PixelD -= BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurPlane - 1] - 128; } else { if (BASE_DCPR_PIC.CurPred == 2) { BASE_DCPR_PIC.PixelA = BASE_DCPR_PIC.PixelB = BASE_DCPR_PIC.PixelC = BASE_DCPR_PIC.PixelX = 128; BASE_DCPR_PIC.PixelD -= (BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurPlane - 1] * 11 >> 4) - 128; } } } /*-----------------BASE_DCPR_PIC_SetPixels2-------------------------------*/ void BASE_DCPR_PIC_SetPixels2(void) { BASE_DCPR_PIC.PixelC = BASE_DCPR_PIC.PixelA; BASE_DCPR_PIC.PixelA = BASE_DCPR_PIC.PixelD; BASE_DCPR_PIC.PixelB = BASE_DCPR_PIC.PixelX; } /*-----------------BASE_DCPR_PIC_SetPixels3-------------------------------*/ void BASE_DCPR_PIC_SetPixels3(void) { BASE_DCPR_PIC.PixelA = BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol]; BASE_DCPR_PIC.PixelB = BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol - BASE_DCPR_PIC.Planes]; BASE_DCPR_PIC.PixelC = BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol - BASE_DCPR_PIC.Planes]; if (BASE_DCPR_PIC.CurPred == 1) { BASE_DCPR_PIC.PixelA -= BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol - 1] - 128; BASE_DCPR_PIC.PixelB -= BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol - BASE_DCPR_PIC.Planes - 1] - 128; BASE_DCPR_PIC.PixelC -= BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol - BASE_DCPR_PIC.Planes - 1] - 128; } else { if (BASE_DCPR_PIC.CurPred == 2) { BASE_DCPR_PIC.PixelA -= (BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol - 1] * 11 >> 4) - 128; BASE_DCPR_PIC.PixelB -= (BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol - BASE_DCPR_PIC.Planes - 1] * 11 >> 4) - 128; BASE_DCPR_PIC.PixelC -= (BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol - BASE_DCPR_PIC.Planes - 1] * 11 >> 4) - 128; } } } /*-----------------BASE_DCPR_PIC_SetPixelState----------------------------*/ void BASE_DCPR_PIC_SetPixelState(void) { BASE_DCPR_PIC.PixelD = BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol + BASE_DCPR_PIC.Planes]; if (BASE_DCPR_PIC.CurPred == 1) { BASE_DCPR_PIC.PixelD -= BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol + BASE_DCPR_PIC.Planes - 1] - 128; } else { if (BASE_DCPR_PIC.CurPred == 2) { BASE_DCPR_PIC.PixelD -= (BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.CurCol + BASE_DCPR_PIC.Planes - 1] * 11 >> 4) - 128; } } BASE_DCPR_PIC.CurState = abs(BASE_DCPR_PIC_GetContext()); } /*-----------------BASE_DCPR_PIC_Pixel-----------------------------------*/ void BASE_DCPR_PIC_Pixel(void) { INT K, BestPredictor, BestErrorCount; CHAR MEpsilon, Predicted; SCHAR Epsilon; BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].UsedCounter++; K = BASE_BITWIDTH.BitWidthArray[ BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].AverageCounter / BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].UsedCounter]; MEpsilon = BASE_DCPR_PIC_GolombRice(K); if (MEpsilon & 1) { Epsilon = - MEpsilon / 2 - 1; } else { Epsilon = MEpsilon / 2; } switch (BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].PredictorNumber) { case 0: { Predicted = BASE_DCPR_PIC.PixelA; break; } case 1: { Predicted = BASE_DCPR_PIC.PixelB; break; } case 2: { Predicted = (BASE_DCPR_PIC.PixelA + BASE_DCPR_PIC.PixelB) >> 1; break; } case 3: { Predicted = BASE_DCPR_PIC.PixelA + BASE_DCPR_PIC.PixelB - BASE_DCPR_PIC.PixelC; break; } } BASE_DCPR_PIC.PixelX = Epsilon + Predicted; BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[0] += BASE_BITWIDTH.DifBitWidthArray[ (UCHAR)(BASE_DCPR_PIC.PixelX - BASE_DCPR_PIC.PixelA)]; BestPredictor = 0; BestErrorCount = BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[0]; BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[1] += BASE_BITWIDTH.DifBitWidthArray[ (UCHAR) (BASE_DCPR_PIC.PixelX - BASE_DCPR_PIC.PixelB)]; if (BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[1] < BestErrorCount) { BestPredictor = 1; BestErrorCount = BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[1]; } BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[2] += BASE_BITWIDTH.DifBitWidthArray[ (UCHAR) (BASE_DCPR_PIC.PixelX - ((BASE_DCPR_PIC.PixelA + BASE_DCPR_PIC.PixelB) >> 1))]; if (BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[2] < BestErrorCount) { BestPredictor = 2; BestErrorCount = BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[2]; } BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[3] += BASE_BITWIDTH.DifBitWidthArray[ (UCHAR) (BASE_DCPR_PIC.PixelX - (BASE_DCPR_PIC.PixelA + BASE_DCPR_PIC.PixelB - BASE_DCPR_PIC.PixelC))]; if (BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].ErrorCounters[3] < BestErrorCount) { BestPredictor = 3; } if (*(PULONG) &BASE_DCPR_PIC.CurContext[ BASE_DCPR_PIC.CurState].ErrorCounters & 0x80808080) { *(PULONG) &BASE_DCPR_PIC.CurContext[ BASE_DCPR_PIC.CurState].ErrorCounters = (*(PULONG) &BASE_DCPR_PIC.CurContext[ BASE_DCPR_PIC.CurState].ErrorCounters>> 1) & 0x7f7f7f7f; } BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].PredictorNumber = BestPredictor; BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].AverageCounter += abs(Epsilon); if (BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].UsedCounter == BASE_CPRDCPR_PIC_N0) { BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].UsedCounter = BASE_CPRDCPR_PIC_N0 >> 1; BASE_DCPR_PIC.CurContext[BASE_DCPR_PIC.CurState].AverageCounter >>= 1; } switch (BASE_DCPR_PIC.CurPred) { case 0: { BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol] = BASE_DCPR_PIC.PixelX; break; } case 1: { BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol] = BASE_DCPR_PIC.PixelX + BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol - 1] - 128; break; } case 2: { BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol] = BASE_DCPR_PIC.PixelX + (BASE_DCPR_PIC.Data[0][BASE_DCPR_PIC.CurCol - 1] * 11 >> 4) - 128; break; } } } /*-----------------BASE_DCPR_PIC_Symbol-----------------------------------*/ void BASE_DCPR_PIC_Symbol(void) { BASE_DCPR_PIC_SetPixels2(); BASE_DCPR_PIC_SetPixelState(); BASE_DCPR_PIC_Pixel(); } /*-----------------BASE_DCPR_PIC_Line------------------------------------*/ void BASE_DCPR_PIC_Line(void) { PCHAR Temp; for (BASE_DCPR_PIC.CurPlane = 0; BASE_DCPR_PIC.CurPlane < BASE_DCPR_PIC.Planes; BASE_DCPR_PIC.CurPlane++) { if (BASE_DCPR_PIC.CurPlane) { BASE_DCPR_PIC.CurContext = BASE_DCPR_PIC.Context[1]; BASE_DCPR_PIC.CurPred = BASE_DCPR.ReadCode >> (32 - 2); BASE_DCPR_AddBits(2); } else { BASE_DCPR_PIC.CurContext = BASE_DCPR_PIC.Context[0]; BASE_DCPR_PIC.CurPred = 0; } BASE_DCPR_PIC_SetPixels1(); for (BASE_DCPR_PIC.CurCol = BASE_DCPR_PIC.CurPlane; BASE_DCPR_PIC.CurCol < BASE_DCPR_PIC.Width; BASE_DCPR_PIC.CurCol += BASE_DCPR_PIC.Planes) { BASE_DCPR_PIC_Symbol(); } } BASE_DCPR_PIC.DataPos = BASE_DCPR_PIC.Width; Temp = BASE_DCPR_PIC.Data[0]; BASE_DCPR_PIC.Data[0] = BASE_DCPR_PIC.Data[1]; BASE_DCPR_PIC.Data[1] = Temp; } /*-----------------BASE_DCPR_PIC_Block------------------------------------*/ INT BASE_DCPR_PIC_Block(PCHAR Buf, INT Len) { INT I, RestLen; RestLen = Len; while (RestLen) { if (!BASE_DCPR_PIC.DataPos) { if (BASE_DCPR.FileSize) { I = BASE_DCPR.ReadCode >> (32 - 1); BASE_DCPR_AddBits(1); if (!I) { BASE_DCPR.NextType = BASE_DCPR.ReadCode >> (32 - 8); BASE_DCPR_AddBits(8); switch (BASE_DCPR.NextType) { case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA: { BASE_DCPR_LZ77.NextDeltaDist = BASE_DCPR.ReadCode >> (32 - 8); BASE_DCPR_AddBits(8); BASE_DCPR_LZ77.NextDeltaLen = BASE_DCPR.ReadCode >> (32 - 17); BASE_DCPR_AddBits(17); break; } case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE: { BASE_DCPR_LZ77.NextExeMode = BASE_DCPR.ReadCode >> (32 -8); BASE_DCPR_AddBits(8); break; } } break; } } else { break; } BASE_DCPR_PIC_Line(); } I = RestLen > BASE_DCPR_PIC.DataPos ? BASE_DCPR_PIC.DataPos : RestLen; memcpy(Buf, &(BASE_DCPR_PIC.Data[1][BASE_DCPR_PIC.Width - BASE_DCPR_PIC.DataPos]), I); Buf += I; RestLen -= I; BASE_DCPR_PIC.DataPos -= I; BASE_DCPR.FileSize -= I; } return Len - RestLen; } unace-2.5/source/base/all/dcpr/pic/pic.c0000644000175000017500000000644207157426372020614 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_DCPR_PIC_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_BITWIDTH #define INCL_BASE_DCPR #define INCL_BASE_DCPR_LZ77 #define INCL_BASE_MEMORY #include "base/all/includes.h" #ifndef USE_ASM #include "base/all/dcpr/pic/c/pic.c" #endif /*-----------------BASE_DCPR_PIC_GolombRice------------------------------*/ INT BASE_DCPR_PIC_GolombRice(INT K) { INT I, Err; Err = K ? BASE_DCPR.ReadCode >> (32 - K) : 0; BASE_DCPR_AddBits(K); do { I = BASE_DCPR.ReadCode >> 31; if (I) { Err += 1 << K; } BASE_DCPR_AddBits(1); } while (I); return Err; } /*-----------------BASE_DCPR_PIC_InitModel-------------------------------*/ void BASE_DCPR_PIC_InitModel(void) { INT Predictor, I; for (Predictor = 0; Predictor <= 1; Predictor++) { memset(&BASE_DCPR_PIC.Context[Predictor], 0, sizeof(BASE_DCPR_PIC.Context[0])); for (I = 0; I < BASE_CPRDCPR_PIC_CONTEXTNUMBER; I++) { BASE_DCPR_PIC.Context[Predictor][I].AverageCounter = 4; } } } /*-----------------BASE_DCPR_PIC_InitQuantizers--------------------------*/ void BASE_DCPR_PIC_InitQuantizers(void) { INT I; for (I = -255; I <= 255; I++) { if (I <= -BASE_CPRDCPR_PIC_S3) BASE_CPRDCPR_PIC_QuantizerArr(I) = -4; else if (I <= -BASE_CPRDCPR_PIC_S2) BASE_CPRDCPR_PIC_QuantizerArr(I) = -3; else if (I <= -BASE_CPRDCPR_PIC_S1) BASE_CPRDCPR_PIC_QuantizerArr(I) = -2; else if (I <= -1) BASE_CPRDCPR_PIC_QuantizerArr(I) = -1; else if (!I) BASE_CPRDCPR_PIC_QuantizerArr(I) = 0; else if (I < BASE_CPRDCPR_PIC_S1) BASE_CPRDCPR_PIC_QuantizerArr(I) = 1; else if (I < BASE_CPRDCPR_PIC_S2) BASE_CPRDCPR_PIC_QuantizerArr(I) = 2; else if (I < BASE_CPRDCPR_PIC_S3) BASE_CPRDCPR_PIC_QuantizerArr(I) = 3; else BASE_CPRDCPR_PIC_QuantizerArr(I) = 4; } for (I = -255; I <= 255; I++) { BASE_CPRDCPR_PIC_QuantizerArrx9(I) = 9 * BASE_CPRDCPR_PIC_QuantizerArr(I); } for (I = -255; I <= 255; I++) { BASE_CPRDCPR_PIC_QuantizerArrx9x9(I) = 9 * BASE_CPRDCPR_PIC_QuantizerArrx9(I); } } /*-----------------BASE_DCPR_PIC_Init------------------------------------*/ void BASE_DCPR_PIC_Init(void) { INT I, J; BASE_DCPR_PIC_Done(); BASE_DCPR_PIC.Width = BASE_DCPR_PIC_GolombRice(12); BASE_DCPR_PIC.Planes = BASE_DCPR_PIC_GolombRice(2); I = BASE_DCPR_PIC.Width + 2 * BASE_DCPR_PIC.Planes; for (J = 0; J <= 1; J++) { BASE_DCPR_PIC.Data[J] = (PCHAR) BASE_MEMORY_GetMemCheck(1, I); memset(BASE_DCPR_PIC.Data[J], 0, I); BASE_DCPR_PIC.Data[J] += BASE_DCPR_PIC.Planes; } BASE_DCPR_PIC_InitModel(); BASE_DCPR_PIC_InitQuantizers(); BASE_DCPR_PIC.DataPos = 0; } /*-----------------BASE_DCPR_PIC_Done------------------------------------*/ void BASE_DCPR_PIC_Done(void) { if (BASE_DCPR_PIC.Data[0]) { BASE_DCPR_PIC.Data[0] -= BASE_DCPR_PIC.Planes; BASE_DCPR_PIC.Data[1] -= BASE_DCPR_PIC.Planes; BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_PIC.Data[0]); BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_PIC.Data[1]); } } unace-2.5/source/base/all/dcpr/pic/pic.h0000644000175000017500000000270307704243516020610 0ustar danieldaniel00000000000000#ifndef _BASE_DCPR_PIC_H_INCLUDED #define _BASE_DCPR_PIC_H_INCLUDED #include "base/all/cprdcpr/pic/pic.h" #ifdef INCL_BASE_DCPR_PIC_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { INT Width, Planes; PCHAR Data[2]; INT DataPos; tBASE_CPRDCPR_PIC_CONTEXT Context[2][BASE_CPRDCPR_PIC_CONTEXTNUMBER]; pBASE_CPRDCPR_PIC_CONTEXT CurContext; INT CurPlane, CurCol, CurState, CurPred; CHAR PixelA, PixelB, PixelC, PixelD, PixelX; } tBASE_DCPR_PIC; DECLEXT tBASE_DCPR_PIC BASE_DCPR_PIC; INT BASE_DCPR_PIC_GolombRice(INT K); void BASE_DCPR_PIC_InitModel(void); void BASE_DCPR_PIC_InitQuantizers(void); void BASE_DCPR_PIC_Init(void); void BASE_DCPR_PIC_Done(void); #ifdef USE_ASM extern INT BASE_DCPR_PIC_Block(PCHAR Buf, INT Len); #else INT BASE_DCPR_PIC_Block(PCHAR Buf, INT Len); INT BASE_DCPR_PIC_GetContext(void); void BASE_DCPR_PIC_SetPixels1(void); void BASE_DCPR_PIC_SetPixels2(void); void BASE_DCPR_PIC_SetPixels3(void); void BASE_DCPR_PIC_SetPixelState(void); void BASE_DCPR_PIC_Pixel(void); void BASE_DCPR_PIC_Symbol(void); void BASE_DCPR_PIC_Line(void); #endif #undef DECLEXT #endif unace-2.5/source/base/all/dcpr/huff/0000755000175000017500000000000007752377756020060 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/huff/huff.c0000644000175000017500000000755007157426372021147 0ustar danieldaniel00000000000000#include #define INCL_BASE_DCPR_HUFF_EXCLUSIVE #define INCL_BASE_DCPR #define INCL_BASE_MEMORY #define INCL_BASE_DCPR_LZ77 #define INCL_BASE_QSORT #include "base/all/includes.h" /*-----------------BASE_DCPR_HUFF_MakeCode-------------------------------*/ INT BASE_DCPR_HUFF_MakeCodes(UINT MaxWidth, UINT TabSize, PUSHORT Widths, PUSHORT Codes) { UINT NumCodes; INT Code, CodePos, I, MaxCodePos, ActualSize; memcpy(&BASE_QSORT.Frequencies, Widths, (TabSize + 1) * sizeof(SHORT)); if (TabSize) { BASE_QSORT_DoQuicksort(TabSize); } else { BASE_QSORT.Elements[0] = 0; } BASE_QSORT.Frequencies[TabSize + 1] = ActualSize = CodePos = 0; while (BASE_QSORT.Frequencies[ActualSize]) { ActualSize++; } if (ActualSize < 2) { Widths[BASE_QSORT.Elements[0]] = 1; ActualSize += (ActualSize == 0); } ActualSize--; MaxCodePos = 1 << MaxWidth; for (I = ActualSize; I >= 0 && CodePos < MaxCodePos; I--) { NumCodes = 1 << (MaxWidth - BASE_QSORT.Frequencies[I]); Code = BASE_QSORT.Elements[I]; if (CodePos + NumCodes > MaxCodePos) { I = (BASE_DCPR_LZ77.BLOCK_BufSize - BASE_DCPR_LZ77.BLOCK_ByteCount); if (BASE_DCPR_LZ77.DictionaryPos + I > BASE_DCPR_LZ77.DictionarySize) { I = BASE_DCPR_LZ77.DictionarySize - BASE_DCPR_LZ77.DictionaryPos; } memset(&BASE_DCPR_LZ77.Dictionary[BASE_DCPR_LZ77.DictionaryPos], 0, I); memset(BASE_DCPR_LZ77.Dictionary, 0, (BASE_DCPR_LZ77.BLOCK_BufSize - BASE_DCPR_LZ77.BLOCK_ByteCount) - I); BASE_DCPR_LZ77.BLOCK_ByteCount = BASE_DCPR_LZ77.BLOCK_BufSize; return 0; } BASE_MEMORY_MemSet16(&Codes[CodePos], Code, NumCodes); CodePos += NumCodes; } return 1; } /*-----------------BASE_DCPR_HUFF_ReadWidths-----------------------------*/ INT BASE_DCPR_HUFF_ReadWidths(UINT MaxWidth, PUSHORT Codes, PUSHORT Widths, UINT MaxSize) { UINT Code, I, WidthPos, NumWidths, Len, UpperWidth, LowerWidth; memset(Widths, 0, MaxSize * sizeof(SHORT)); memset(Codes , 0, (1 << MaxWidth) * sizeof(SHORT)); NumWidths = BASE_DCPR.ReadCode >> (32 - 9); BASE_DCPR_AddBits(9); if (NumWidths > MaxSize) { NumWidths = MaxSize; } LowerWidth = BASE_DCPR.ReadCode >> (32 - 4); BASE_DCPR_AddBits(4); UpperWidth = BASE_DCPR.ReadCode >> (32 - 4); BASE_DCPR_AddBits(4); for (I = 0; I <= UpperWidth; I++) { BASE_CPRDCPR_HUFF.SaveWidths[I] = BASE_DCPR.ReadCode >> (32 - 3); BASE_DCPR_AddBits(3); } if (!BASE_DCPR_HUFF_MakeCodes(BASE_CPRDCPR_HUFF_MAXWIDTHSVDWD, UpperWidth, (PUSHORT) &BASE_CPRDCPR_HUFF.SaveWidths, Codes)) { return 0; } WidthPos = 0; while (WidthPos <= NumWidths) { Code = Codes[BASE_DCPR.ReadCode >> (32 - BASE_CPRDCPR_HUFF_MAXWIDTHSVDWD)]; BASE_DCPR_AddBits(BASE_CPRDCPR_HUFF.SaveWidths[Code]); if (Code < UpperWidth) { Widths[WidthPos++] = Code; } else { Len = (BASE_DCPR.ReadCode >> 28) + 4; BASE_DCPR_AddBits(4); while (Len-- && WidthPos <= NumWidths) { Widths[WidthPos++] = 0; } } } if (UpperWidth) { for (I = 1; I <= NumWidths; I++) { Widths[I] = (Widths[I] + Widths[I - 1]) % UpperWidth; } } for (I = 0; I <= NumWidths; I++) { if (Widths[I]) { Widths[I] += LowerWidth; } } return BASE_DCPR_HUFF_MakeCodes(MaxWidth, NumWidths, Widths, Codes); } unace-2.5/source/base/all/dcpr/huff/huff.h0000644000175000017500000000053607157426372021151 0ustar danieldaniel00000000000000#ifndef _BASE_DCPR_HUFF_H_INCLUDED #define _BASE_DCPR_HUFF_H_INCLUDED INT BASE_DCPR_HUFF_MakeCodes(UINT MaxWidth, UINT TabSize, PUSHORT Widths, PUSHORT Codes); INT BASE_DCPR_HUFF_ReadWidths(UINT MaxWidth, PUSHORT Codes, PUSHORT Widths, UINT MaxSize); #endif unace-2.5/source/base/all/dcpr/lz77/0000755000175000017500000000000007752377756017733 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/lz77/c/0000755000175000017500000000000007752377756020155 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/lz77/c/lz77.c0000644000175000017500000001415307157426372021114 0ustar danieldaniel00000000000000/*-----------------BASE_DCPR_LZ77_WriteChar------------------------------*/ void BASE_DCPR_LZ77_WriteChar(CHAR Char) { BASE_DCPR_LZ77.Dictionary[BASE_DCPR_LZ77.DictionaryPos] = Char; BASE_DCPR_LZ77.DictionaryPos = (BASE_DCPR_LZ77.DictionaryPos + 1) & BASE_DCPR_LZ77.DictionaryAnd; BASE_DCPR_LZ77.BLOCK_ByteCount++; } /*-----------------BASE_DCPR_LZ77_CopyString-----------------------------*/ void BASE_DCPR_LZ77_CopyString(ULONG Dist, INT Len) { INT I, SourcePos; SourcePos = (BASE_DCPR_LZ77.DictionaryPos - Dist) & BASE_DCPR_LZ77.DictionaryAnd; if ((SourcePos >= BASE_DCPR_LZ77.DictionarySize - BASE_CPRDCPR_LZ77_MAXLEN) || (BASE_DCPR_LZ77.DictionaryPos >= BASE_DCPR_LZ77.DictionarySize - BASE_CPRDCPR_LZ77_MAXLEN)) { for (I = Len; I--;) { BASE_DCPR_LZ77.Dictionary[BASE_DCPR_LZ77.DictionaryPos] = BASE_DCPR_LZ77.Dictionary[SourcePos]; BASE_DCPR_LZ77.DictionaryPos = (BASE_DCPR_LZ77.DictionaryPos + 1) & BASE_DCPR_LZ77.DictionaryAnd; SourcePos = (SourcePos + 1) & BASE_DCPR_LZ77.DictionaryAnd; } } else { BASE_MEMORY_MemCopy(BASE_DCPR_LZ77.Dictionary + BASE_DCPR_LZ77.DictionaryPos, BASE_DCPR_LZ77.Dictionary + SourcePos, Len); BASE_DCPR_LZ77.DictionaryPos = (BASE_DCPR_LZ77.DictionaryPos + Len) & BASE_DCPR_LZ77.DictionaryAnd; } BASE_DCPR_LZ77.BLOCK_ByteCount += Len; } /*-----------------BASE_DCPR_LZ77_BlockCore------------------------------*/ void BASE_DCPR_LZ77_BlockCore(void) { INT Symbol, LenSymbol, I; LONG MatchDist; while (BASE_DCPR_LZ77.BLOCK_ByteCount < BASE_DCPR_LZ77.BLOCK_BufSize) { if (BASE_DCPR_LZ77.MainBufPos == BASE_DCPR_LZ77.PartSize) { if (!BASE_DCPR_LZ77_ReadSymbols()) { return; } } Symbol = BASE_DCPR_LZ77.MainBuf[BASE_DCPR_LZ77.MainBufPos++]; if (Symbol > 255) { if (Symbol == BASE_CPRDCPR_LZ77_TYPECODE) { BASE_DCPR.NextType = BASE_DCPR_LZ77.LenBuf[ BASE_DCPR_LZ77.LenDistBufPos] & 255; switch (BASE_DCPR.NextType) { case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA: { BASE_DCPR_LZ77.NextDeltaDist = BASE_DCPR_LZ77.DistBuf[BASE_DCPR_LZ77.LenDistBufPos] >> 17; BASE_DCPR_LZ77.NextDeltaLen = BASE_DCPR_LZ77.DistBuf[BASE_DCPR_LZ77.LenDistBufPos] & 0x1FFFF; break; } case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE: { BASE_DCPR_LZ77.NextExeMode = BASE_DCPR_LZ77.DistBuf[BASE_DCPR_LZ77.LenDistBufPos]; break; } } BASE_DCPR_LZ77.LenDistBufPos++; break; } if (Symbol > 259) { Symbol -= 260; MatchDist = BASE_DCPR_LZ77.DistBuf[BASE_DCPR_LZ77.LenDistBufPos]; BASE_DCPR_LZ77.OldDistsPos = (BASE_DCPR_LZ77.OldDistsPos + 1) & 3; BASE_DCPR_LZ77.OldDists[BASE_DCPR_LZ77.OldDistsPos] = MatchDist; I = 2; if (MatchDist > BASE_CPRDCPR_LZ77_MAXDISTATLEN2) { I++; if (MatchDist > BASE_CPRDCPR_LZ77_MAXDISTATLEN3) { I++; } } } else { MatchDist = BASE_DCPR_LZ77.OldDists[ (BASE_DCPR_LZ77.OldDistsPos - (Symbol &= 255)) & 3]; for (I = Symbol; I >= 0; I--) { BASE_DCPR_LZ77.OldDists[(BASE_DCPR_LZ77.OldDistsPos - I) & 3] = BASE_DCPR_LZ77.OldDists[(BASE_DCPR_LZ77.OldDistsPos - I + 1) & 3]; } BASE_DCPR_LZ77.OldDists[BASE_DCPR_LZ77.OldDistsPos] = MatchDist; I = Symbol > 1 ? 3 : 2; } LenSymbol = BASE_DCPR_LZ77.LenBuf[BASE_DCPR_LZ77.LenDistBufPos++] + I; MatchDist++; BASE_DCPR_LZ77_CopyString(MatchDist, LenSymbol); } else { BASE_DCPR_LZ77_WriteChar(Symbol); } } } /*-----------------BASE_DCPR_LZ77_ReadSymbolsCore------------------------*/ void BASE_DCPR_LZ77_ReadSymbolsCore(void) { INT SymbolCount, MatchCount, Symbol, Type; MatchCount = 0; for (SymbolCount = 0; SymbolCount < BASE_DCPR_LZ77.PartSize; SymbolCount++) { Symbol = BASE_DCPR_LZ77.MainHuffSymbols[BASE_DCPR.ReadCode >> (32 - BASE_CPRDCPR_LZ77_MAXCODEWIDTH)]; BASE_DCPR_AddBits(BASE_DCPR_LZ77.MainHuffWidths[Symbol]); BASE_DCPR_LZ77.MainBuf[SymbolCount] = Symbol; if (Symbol > 255) { if (Symbol == BASE_CPRDCPR_LZ77_TYPECODE) { Type = BASE_DCPR.ReadCode >> 24; BASE_DCPR_LZ77.LenBuf[MatchCount] = Type; BASE_DCPR_AddBits(8); switch (Type) { case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA: { BASE_DCPR_LZ77.DistBuf[MatchCount] = BASE_DCPR.ReadCode >> (32 - 25); BASE_DCPR_AddBits(25); break; } case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE: { BASE_DCPR_LZ77.DistBuf[MatchCount] = BASE_DCPR.ReadCode >> (32 - 8); BASE_DCPR_AddBits(8); break; } } MatchCount++; } else { if (Symbol > 259) { if ((Symbol -= 260) > 1) { BASE_DCPR_LZ77.DistBuf[MatchCount] = (BASE_DCPR.ReadCode >> (33 - Symbol)) + (1 << (Symbol - 1)); BASE_DCPR_AddBits(Symbol - 1); } else { BASE_DCPR_LZ77.DistBuf[MatchCount] = Symbol; } } BASE_DCPR_LZ77.LenBuf[MatchCount] = BASE_DCPR_LZ77.LenHuffSymbols[BASE_DCPR.ReadCode >> (32 - BASE_CPRDCPR_LZ77_MAXCODEWIDTH)]; BASE_DCPR_AddBits(BASE_DCPR_LZ77.LenHuffWidths[ BASE_DCPR_LZ77.LenBuf[MatchCount]]); MatchCount++; } } } } unace-2.5/source/base/all/dcpr/lz77/lz77.c0000644000175000017500000002025007722745466020673 0ustar danieldaniel00000000000000#include #define INCL_BASE_DCPR_LZ77_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_DCPR #define INCL_BASE_DCPR_HUFF #define INCL_BASE_MEMORY #define INCL_BASE_STATE #include "base/all/includes.h" #ifndef USE_ASM #include "base/all/dcpr/lz77/c/lz77.c" #endif /*-----------------BASE_DCPR_LZ77_CalcHuffTabs---------------------------*/ INT BASE_DCPR_LZ77_CalcHuffTabs(void) { if (!BASE_DCPR_HUFF_ReadWidths(BASE_CPRDCPR_LZ77_MAXCODEWIDTH, (PUSHORT) BASE_DCPR_LZ77.MainHuffSymbols, (PUSHORT) BASE_DCPR_LZ77.MainHuffWidths, BASE_CPRDCPR_LZ77_MAXMAINCODE) || !BASE_DCPR_HUFF_ReadWidths(BASE_CPRDCPR_LZ77_MAXCODEWIDTH, (PUSHORT) &BASE_DCPR_LZ77.LenHuffSymbols, (PUSHORT) &BASE_DCPR_LZ77.LenHuffWidths, BASE_CPRDCPR_LZ77_MAXLENCODE)) { return 0; } BASE_DCPR_LZ77.BlockSize = BASE_DCPR.ReadCode >> (32 - 15); BASE_DCPR_AddBits(15); return 1; } /*-----------------BASE_DCPR_LZ77_Block----------------------------------*/ INT BASE_DCPR_LZ77_Block(PCHAR Buf, INT Len) { INT OldPos, I; OldPos = BASE_DCPR_LZ77.DictionaryPos; BASE_DCPR_LZ77.BLOCK_ByteCount = 0; if (Len < BASE_CPRDCPR_LZ77_MAXLEN) { return 0; } if ((BASE_DCPR_LZ77.BLOCK_BufSize = Len - BASE_CPRDCPR_LZ77_MAXLEN) > BASE_DCPR.FileSize) { BASE_DCPR_LZ77.BLOCK_BufSize = BASE_DCPR.FileSize; } if (BASE_DCPR_LZ77.BLOCK_BufSize > BASE_DCPR_LZ77.DictionarySize - BASE_CPRDCPR_LZ77_MAXLEN) { BASE_DCPR_LZ77.BLOCK_BufSize = BASE_DCPR_LZ77.DictionarySize - BASE_CPRDCPR_LZ77_MAXLEN; } if ((LONGLONG) BASE_DCPR.FileSize > 0 && BASE_DCPR_LZ77.BLOCK_BufSize) { BASE_DCPR_LZ77_BlockCore(); if (BASE_DCPR_LZ77.BLOCK_ByteCount <= Len) { if (OldPos + BASE_DCPR_LZ77.BLOCK_ByteCount > BASE_DCPR_LZ77.DictionarySize) { I = BASE_DCPR_LZ77.DictionarySize - OldPos; memcpy(Buf, &BASE_DCPR_LZ77.Dictionary[OldPos], I); memcpy(&Buf[I], BASE_DCPR_LZ77.Dictionary, BASE_DCPR_LZ77.BLOCK_ByteCount - I); } else { memcpy(Buf, &BASE_DCPR_LZ77.Dictionary[OldPos], BASE_DCPR_LZ77.BLOCK_ByteCount); } } } BASE_DCPR.FileSize -= BASE_DCPR_LZ77.BLOCK_ByteCount; BASE_DCPR_EXTERN_BlockCopyToCprDictionary( Buf, BASE_DCPR_LZ77.BLOCK_ByteCount); return BASE_DCPR_LZ77.BLOCK_ByteCount; } /*-----------------BASE_DCPR_LZ77_PreprocessBlock------------------------*/ INT BASE_DCPR_LZ77_PreprocessBlock(PCHAR Buf, INT Len) { INT I, R, Pos, Read; if (BASE_DCPR.Type == BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA) { if (!BASE_DCPR_LZ77.PREP_NumKeptBytes /*BASE_DCPR.NextType == BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA && PREP_NumKeptBytes < BASE_CPRDCPR_LZ77_MAXDELTABLOCK*/) { BASE_DCPR_LZ77.DeltaDist = BASE_DCPR_LZ77.NextDeltaDist; BASE_DCPR_LZ77.DeltaLen = BASE_DCPR_LZ77.NextDeltaLen; BASE_DCPR_LZ77.NextDeltaLen = 0; // MaxDeltaBlockSize = BASE_CPRDCPR_LZ77_MAXDELTABLOCK // - BASE_CPRDCPR_LZ77_MAXDELTABLOCK % DeltaDist; do { BASE_DCPR_LZ77.PREP_NumKeptBytes += (Read = BASE_DCPR_LZ77_Block( (PCHAR) &BASE_DCPR_LZ77.PREP_KeptBytesBuf[ BASE_DCPR_LZ77.PREP_NumKeptBytes], BASE_CPRDCPR_LZ77_MAXDELTABLOCK + BASE_CPRDCPR_LZ77_MAXLEN - BASE_DCPR_LZ77.PREP_NumKeptBytes)); } while (BASE_DCPR_LZ77.PREP_NumKeptBytes < BASE_DCPR_LZ77.DeltaLen); BASE_DCPR_LZ77.DeltaBlockSize = BASE_DCPR_LZ77.PREP_NumKeptBytes; BASE_DCPR_LZ77.DeltaPlaneSize = BASE_DCPR_LZ77.DeltaBlockSize / BASE_DCPR_LZ77.DeltaDist; BASE_DCPR.OverNextType = BASE_DCPR.NextType; BASE_DCPR.NextType = BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA; for (I = 0; I < BASE_DCPR_LZ77.DeltaBlockSize; I++) { BASE_DCPR_LZ77.PREP_LastDelta = (BASE_DCPR_LZ77.PREP_KeptBytesBuf[I] += BASE_DCPR_LZ77.PREP_LastDelta); } BASE_DCPR_LZ77.PREP_KeptBytesPos = BASE_DCPR_LZ77.DeltaPlane = BASE_DCPR_LZ77.DeltaPlanePos = 0; } R = BASE_DCPR_LZ77.PREP_NumKeptBytes > Len ? Len : BASE_DCPR_LZ77.PREP_NumKeptBytes; if (BASE_DCPR_LZ77.DeltaPlaneSize) { for (I = 0; ; BASE_DCPR_LZ77.DeltaPlanePos++) { for (;BASE_DCPR_LZ77.DeltaPlane < BASE_DCPR_LZ77.DeltaBlockSize; BASE_DCPR_LZ77.DeltaPlane += BASE_DCPR_LZ77.DeltaPlaneSize , I++) { if (I == R) { goto BREAK; } Buf[I] = BASE_DCPR_LZ77.PREP_KeptBytesBuf[ BASE_DCPR_LZ77.DeltaPlanePos + BASE_DCPR_LZ77.DeltaPlane]; } BASE_DCPR_LZ77.DeltaPlane = 0; } } BREAK: {} BASE_DCPR_LZ77.PREP_KeptBytesPos += R; BASE_DCPR_LZ77.PREP_NumKeptBytes -= R; if (!BASE_DCPR_LZ77.PREP_NumKeptBytes) { BASE_DCPR.NextType = BASE_DCPR.OverNextType; } return R; } else { memcpy(Buf, BASE_DCPR_LZ77.PREP_KeptBytesBuf, BASE_DCPR_LZ77.PREP_NumKeptBytes); R = BASE_DCPR_LZ77_Block(&Buf[BASE_DCPR_LZ77.PREP_NumKeptBytes], Len - BASE_DCPR_LZ77.PREP_NumKeptBytes) + BASE_DCPR_LZ77.PREP_NumKeptBytes; BASE_DCPR_LZ77.PREP_NumKeptBytes = 0; switch (BASE_DCPR.Type) { case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE: { BASE_DCPR_LZ77.ExeMode = BASE_DCPR_LZ77.NextExeMode; for (I = 0; I < R - 4; I++) { Pos = BASE_DCPR.FilePos + I; if (Buf[I] == (CHAR) 0xe8) { if (!BASE_DCPR_LZ77.ExeMode) { ADJUST_ENDIANNESS16(&Buf[I + 1]); *((PUSHORT) &Buf[I + 1]) -= Pos; ADJUST_ENDIANNESS16(&Buf[I + 1]); I += 2; } else { ADJUST_ENDIANNESS32(&Buf[I + 1]); *((PULONG) &Buf[I + 1]) -= Pos; ADJUST_ENDIANNESS32(&Buf[I + 1]); I += 4; } } else { if (Buf[I] == (CHAR) 0xe9) { ADJUST_ENDIANNESS16(&Buf[I + 1]); *((PUSHORT) &Buf[I + 1]) -= Pos; ADJUST_ENDIANNESS16(&Buf[I + 1]); I += 2; } } } for (; I < R; I++) { if (Buf[I] == (CHAR) 0xe8 || Buf[I] == (CHAR) 0xe9) { BASE_DCPR_LZ77.PREP_NumKeptBytes = R - I; memcpy(BASE_DCPR_LZ77.PREP_KeptBytesBuf, &Buf[I], BASE_DCPR_LZ77.PREP_NumKeptBytes); break; } } } } return R - BASE_DCPR_LZ77.PREP_NumKeptBytes; } } /*-----------------BASE_DCPR_LZ77_CopyToDictionary-----------------------*/ void BASE_DCPR_LZ77_CopyToDictionary(PCHAR Buf, INT Len) { INT I; for (I = 0; I < Len; I++) { BASE_DCPR_LZ77.Dictionary[BASE_DCPR_LZ77.DictionaryPos] = Buf[I]; BASE_DCPR_LZ77.DictionaryPos = (BASE_DCPR_LZ77.DictionaryPos + 1) & BASE_DCPR_LZ77.DictionaryAnd; } } /*-----------------BASE_DCPR_LZ77_ReadSymbols----------------------------*/ INT BASE_DCPR_LZ77_ReadSymbols(void) { if (!BASE_DCPR_LZ77.BlockSize && !BASE_DCPR_LZ77_CalcHuffTabs()) { return 0; } BASE_DCPR_LZ77.PartSize = (BASE_DCPR_LZ77_MAXPARTSIZE > BASE_DCPR_LZ77.BlockSize) ? BASE_DCPR_LZ77.BlockSize : BASE_DCPR_LZ77_MAXPARTSIZE; BASE_DCPR_LZ77.BlockSize -= BASE_DCPR_LZ77.PartSize; BASE_DCPR_LZ77_ReadSymbolsCore(); BASE_DCPR_LZ77.LenDistBufPos = BASE_DCPR_LZ77.MainBufPos = 0; return 1; } unace-2.5/source/base/all/dcpr/lz77/lz77.h0000644000175000017500000000442707704243510020667 0ustar danieldaniel00000000000000#ifndef _BASE_DCPR_LZ77_H_INCLUDED #define _BASE_DCPR_LZ77_H_INCLUDED #include "base/all/cprdcpr/lz77/lz77.h" #ifdef INCL_BASE_DCPR_LZ77_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_DCPR_LZ77_MAXPARTSIZE 1024 typedef struct { USHORT MainHuffSymbols[(1 << BASE_CPRDCPR_LZ77_MAXCODEWIDTH) + 1], MainHuffWidths[BASE_CPRDCPR_LZ77_MAXMAINCODE + 2], LenHuffSymbols[(1 << BASE_CPRDCPR_LZ77_MAXCODEWIDTH) + 1], LenHuffWidths[BASE_CPRDCPR_LZ77_MAXLENCODE + 3]; USHORT MainBuf[BASE_DCPR_LZ77_MAXPARTSIZE], LenBuf[BASE_DCPR_LZ77_MAXPARTSIZE]; ULONG DistBuf[BASE_DCPR_LZ77_MAXPARTSIZE], MainBufPos, LenDistBufPos; INT OldDistsPos; ULONG OldDists[4]; PCHAR Dictionary; ULONG DictionaryPos, DictionarySize, DictionaryAnd; ULONG BlockSize, PartSize, BLOCK_ByteCount, BLOCK_BufSize; INT PREP_NumKeptBytes, PREP_KeptBytesPos; ULONG PREP_LastDelta; INT DeltaDist, NextDeltaDist, DeltaLen, NextDeltaLen, DeltaBlockSize, DeltaPlaneSize, DeltaPlane, DeltaPlanePos; INT ExeMode, NextExeMode; UCHAR PREP_KeptBytesBuf[BASE_CPRDCPR_LZ77_MAXDELTABLOCK + BASE_CPRDCPR_LZ77_MAXLEN]; } tBASE_DCPR_LZ77; INT BASE_DCPR_LZ77_ReadSymbols(void); INT BASE_DCPR_LZ77_CalcHuffTabs(void); INT BASE_DCPR_LZ77_Block(PCHAR Buf, INT Len); INT BASE_DCPR_LZ77_PreprocessBlock(PCHAR Buf, INT Len); void BASE_DCPR_LZ77_CopyToDictionary(PCHAR Buf, INT Len); #ifdef USE_ASM extern void BASE_DCPR_LZ77_BlockCore(void); extern void BASE_DCPR_LZ77_ReadSymbolsCore(void); #else void BASE_DCPR_LZ77_BlockCore(void); void BASE_DCPR_LZ77_ReadSymbolsCore(void); void BASE_DCPR_LZ77_WriteChar(CHAR Char); void BASE_DCPR_LZ77_CopyString(ULONG Dist, INT Len); #endif DECLEXT tBASE_DCPR_LZ77 BASE_DCPR_LZ77; #undef DECLEXT #endif unace-2.5/source/base/all/dcpr/sound/0000755000175000017500000000000007752377756020260 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/sound/c/0000755000175000017500000000000007752377756020502 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/sound/c/sound.c0000644000175000017500000002273507157426372021773 0ustar danieldaniel00000000000000/*-----------------BASE_DCPR_SOUND_GetPredictedChar----------------------*/ UCHAR BASE_DCPR_SOUND_GetPredictedChar(INT Channel) { return (UCHAR) ((8 * BASE_DCPR_SOUND.SoundVar.LastByte[Channel] + BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][0] * BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][0] + BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][1] * BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][1] + BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][2] * BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][2] + BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][3] * BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][3]) >> 3); } /*-----------------BASE_DCPR_SOUND_CalcDcprTabs--------------------------*/ INT BASE_DCPR_SOUND_CalcDcprTabs(void) { INT I; for (I = 0; I < BASE_DCPR_SOUND.SoundVar.Models; I++) { BASE_DCPR_HUFF_ReadWidths(BASE_CPRDCPR_SOUND_MAXCODEWIDTH, (PUSHORT)&BASE_DCPR_SOUND.HuffSymbols[I], (PUSHORT)&BASE_DCPR_SOUND.HuffWidths[I], BASE_CPRDCPR_SOUND_MAXCODE); } BASE_DCPR_SOUND.SoundVar.BlockSize = BASE_DCPR.ReadCode >> (32 - 15); BASE_DCPR_AddBits(15); return 1; } /*-----------------BASE_DCPR_SOUND_GetSymbol-----------------------------*/ INT BASE_DCPR_SOUND_GetSymbol(INT Model, INT Channel) { INT Symbol; if (!BASE_DCPR_SOUND.SoundVar.BlockSize) { BASE_DCPR_SOUND_CalcDcprTabs(); } Model <<= 1; if (!Model) { Model += BASE_DCPR_SOUND.SoundVar.AdaptiveModelUse[Channel]; } Model += 3 * Channel; Symbol = BASE_DCPR_SOUND.HuffSymbols[Model][BASE_DCPR.ReadCode >> (32 - BASE_CPRDCPR_SOUND_MAXCODEWIDTH)]; BASE_DCPR_AddBits(BASE_DCPR_SOUND.HuffWidths[Model][Symbol]); BASE_DCPR_SOUND.SoundVar.BlockSize--; return Symbol; } /*-----------------BASE_DCPR_SOUND_Get-----------------------------------*/ INT BASE_DCPR_SOUND_Get(INT Channel) { INT Err; if (BASE_DCPR_SOUND.SoundVar.State[Channel] != 2) { BASE_DCPR_SOUND.SoundVar.Code[Channel] = BASE_DCPR_SOUND_GetSymbol(BASE_DCPR_SOUND.SoundVar.State[Channel], Channel); if (BASE_DCPR_SOUND.SoundVar.Code[Channel] == BASE_CPRDCPR_SOUND_TYPECODE) { BASE_DCPR.NextType = BASE_DCPR.ReadCode >> (32 - 8); BASE_DCPR_AddBits(8); switch (BASE_DCPR.NextType) { case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA: { BASE_DCPR_LZ77.NextDeltaDist = BASE_DCPR.ReadCode >> (32 - 8); BASE_DCPR_AddBits(8); BASE_DCPR_LZ77.NextDeltaLen = BASE_DCPR.ReadCode >> (32 - 17); BASE_DCPR_AddBits(17); break; } case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE: { BASE_DCPR_LZ77.NextExeMode = BASE_DCPR.ReadCode >> (32 - 8); BASE_DCPR_AddBits(8); break; } } return -1; } } if (BASE_DCPR_SOUND.SoundVar.State[Channel] != 2) { if (!BASE_DCPR_SOUND.SoundVar.State[Channel] && BASE_DCPR_SOUND.SoundVar.Code[Channel] < BASE_CPRDCPR_SOUND_RUNLENCODES) { BASE_DCPR_SOUND.SoundVar.State[Channel] = 2; } else { if (BASE_DCPR_SOUND.SoundVar.State[Channel] == 1) { Err = BASE_DCPR_SOUND.SoundVar.Code[Channel]; BASE_DCPR_SOUND.SoundVar.State[Channel] = 0; } else { Err = BASE_DCPR_SOUND.SoundVar.Code[Channel] - BASE_CPRDCPR_SOUND_RUNLENCODES; BASE_DCPR_SOUND.SoundVar.AdaptiveModelCnt[Channel] = (BASE_DCPR_SOUND.SoundVar.AdaptiveModelCnt[Channel] * 7 >> 3) + Err; BASE_DCPR_SOUND.SoundVar.AdaptiveModelUse[Channel] = BASE_DCPR_SOUND.SoundVar.AdaptiveModelCnt[Channel] > 40; } } } if (BASE_DCPR_SOUND.SoundVar.State[Channel] == 2) { if (!BASE_DCPR_SOUND.SoundVar.Code[Channel]) { BASE_DCPR_SOUND.SoundVar.State[Channel] = 1; } else { BASE_DCPR_SOUND.SoundVar.Code[Channel]--; } Err = 0; } return Err = Err & 1 ? (255 - (Err >> 1)) : Err >> 1; } /*-----------------BASE_DCPR_SOUND_RarPredict----------------------------*/ INT BASE_DCPR_SOUND_RarPredict(INT Channel) { INT PCh; PCh = BASE_DCPR_SOUND_GetPredictedChar(Channel); if (BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][0] > BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][1]) { PCh = BASE_DCPR_SOUND.SoundVar.LastByte[Channel]; } return PCh - 128; } /*-----------------BASE_DCPR_SOUND_RarAdjust-----------------------------*/ void BASE_DCPR_SOUND_RarAdjust(INT Channel, INT Ch) { INT PredDif, I, MinDif, MinDifPos, PCh; BASE_DCPR_SOUND.SoundVar.ByteCount[Channel]++; PCh = BASE_DCPR_SOUND_GetPredictedChar(Channel); PredDif = ((SCHAR) (PCh - Ch)) << 3; BASE_DCPR_SOUND.SoundVar.RarDif[Channel][0] += abs(PredDif - BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][0]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][1] += abs(PredDif + BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][0]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][2] += abs(PredDif - BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][1]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][3] += abs(PredDif + BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][1]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][4] += abs(PredDif - BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][2]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][5] += abs(PredDif + BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][2]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][6] += abs(PredDif - BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][3]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][7] += abs(PredDif + BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][3]); BASE_DCPR_SOUND.SoundVar.RarDif[Channel][8] += abs(PredDif); BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][0] += BASE_CPRDCPR_SOUND.QUANTIZER[(UCHAR) (PredDif >> 3)]; BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][1] += BASE_CPRDCPR_SOUND.QUANTIZER[(UCHAR) (BASE_DCPR_SOUND.SoundVar.LastByte[Channel] - Ch)]; BASE_DCPR_SOUND.SoundVar.LastDelta[Channel] = (SCHAR) (Ch - BASE_DCPR_SOUND.SoundVar.LastByte[Channel]); BASE_DCPR_SOUND.SoundVar.LastByte[Channel] = Ch; if (!(BASE_DCPR_SOUND.SoundVar.ByteCount[Channel] & 0x1f)) { MinDif = 0xffff; for (I = 8; I >= 0; I--) { if (BASE_DCPR_SOUND.SoundVar.RarDif[Channel][I] <= MinDif) { MinDif = BASE_DCPR_SOUND.SoundVar.RarDif[Channel][I]; MinDifPos = I; } BASE_DCPR_SOUND.SoundVar.RarDif[Channel][I] = 0; } if (MinDifPos != 8) { I = MinDifPos >> 1; if (!(MinDifPos & 1)) { if (BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][I] >= -16) { BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][I]--; } } else { if (BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][I] <= 16) { BASE_DCPR_SOUND.SoundVar.RarCoefficient[Channel][I]++; } } } if (!(BASE_DCPR_SOUND.SoundVar.ByteCount[Channel] & 0xff)) { BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][0] -= BASE_DCPR_SOUND.SoundVar.LastPredictorDifCnt[Channel][0]; BASE_DCPR_SOUND.SoundVar.LastPredictorDifCnt[Channel][0] = BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][0]; BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][1] -= BASE_DCPR_SOUND.SoundVar.LastPredictorDifCnt[Channel][1]; BASE_DCPR_SOUND.SoundVar.LastPredictorDifCnt[Channel][1] = BASE_DCPR_SOUND.SoundVar.PredictorDifCnt[Channel][1]; } } BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][3] = BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][2]; BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][2] = BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][1]; BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][1] = BASE_DCPR_SOUND.SoundVar.LastDelta[Channel] - BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][0]; BASE_DCPR_SOUND.SoundVar.RarDifCnt[Channel][0] = BASE_DCPR_SOUND.SoundVar.LastDelta[Channel]; } /*-----------------BASE_DCPR_SOUND_Block---------------------------------*/ INT BASE_DCPR_SOUND_Block(PCHAR Buf, INT Len) { INT I, Err, Channel, Sample; Len &= 0xfffffffc; if (Len > BASE_DCPR.FileSize) { Len = BASE_DCPR.FileSize; } for (I = 0; I < Len; I++) { Channel = BASE_CPRDCPR_SOUND_CHANNELNUM[BASE_DCPR_SOUND.SoundVar.Mode][I & 3]; Err = BASE_DCPR_SOUND_Get(Channel); if (Err == -1) { break; } Sample = (UCHAR) (Err + BASE_DCPR_SOUND_RarPredict(Channel)); Buf[I] = Sample + 128; BASE_DCPR_SOUND_RarAdjust(Channel, Buf[I]); } BASE_DCPR.FileSize -= I; return I; } /*-----------------BASE_DCPR_SOUND_Init----------------------------------*/ void BASE_DCPR_SOUND_Init(INT Type) { memset(&BASE_DCPR_SOUND.SoundVar, 0, sizeof(BASE_DCPR_SOUND.SoundVar)); BASE_DCPR_SOUND.SoundVar.Mode = Type - BASE_ACESTRUC_BLOCKEDTYPE_SOUND_8; BASE_DCPR_SOUND.SoundVar.Models = BASE_CPRDCPR_SOUND_MODELS[BASE_DCPR_SOUND.SoundVar.Mode]; } unace-2.5/source/base/all/dcpr/sound/sound.c0000644000175000017500000000045707157426372021546 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_DCPR_SOUND_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_DCPR #define INCL_BASE_DCPR_HUFF #define INCL_BASE_DCPR_LZ77 #include "base/all/includes.h" #ifndef USE_ASM #include "base/all/dcpr/sound/c/sound.c" #endif unace-2.5/source/base/all/dcpr/sound/sound.h0000644000175000017500000000244307704243524021542 0ustar danieldaniel00000000000000#ifndef _BASE_DCPR_SOUND_H_INCLUDED #define _BASE_DCPR_SOUND_H_INCLUDED #include "base/all/cprdcpr/sound/sound.h" #ifdef INCL_BASE_DCPR_SOUND_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif //------ConstantDefines: #define BASE_DCPR_SOUND_WIDTHBUFSIZE BASE_CPRDCPR_SOUND_MAXCODE + 2 //------VariableDefines: typedef struct { USHORT HuffSymbols[BASE_CPRDCPR_SOUND_MAXMODELS] [(1 << BASE_CPRDCPR_SOUND_MAXCODEWIDTH) + 1], HuffWidths[BASE_CPRDCPR_SOUND_MAXMODELS] [BASE_CPRDCPR_SOUND_MAXCODE + 2]; tBASE_CPRDCPR_SOUND_DATA SoundVar; } tBASE_DCPR_SOUND; DECLEXT tBASE_DCPR_SOUND BASE_DCPR_SOUND; #ifdef USE_ASM extern void BASE_DCPR_SOUND_Init(INT Type); extern INT BASE_DCPR_SOUND_Block(PCHAR Buf, INT Len); #else void BASE_DCPR_SOUND_Init(INT Type); INT BASE_DCPR_SOUND_Block(PCHAR Buf, INT Len); UCHAR BASE_DCPR_SOUND_GetPredictedChar(INT Channel); INT BASE_DCPR_SOUND_CalcDcprTabs(void); INT BASE_DCPR_SOUND_GetSymbol(INT Model, INT Channel); INT BASE_DCPR_SOUND_Get(INT Channel); INT BASE_DCPR_SOUND_RarPredict(INT Channel); void BASE_DCPR_SOUND_RarAdjust(INT Channel, INT Ch); #endif #undef DECLEXT #endif unace-2.5/source/base/all/dcpr/dcpr.c0000644000175000017500000002022707722745466020221 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_DCPR_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_BITWIDTH #define INCL_BASE_CRC #define INCL_BASE_DCPR_LZ77 #define INCL_BASE_DCPR_PIC #define INCL_BASE_DCPR_SOUND #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_MEMORY #define INCL_BASE_STATE #include "base/all/includes.h" /*-----------------BASE_DCPR_AddBits-------------------------------------*/ void BASE_DCPR_AddBits(INT Bits) { ULONG B0, B1; BASE_DCPR.ReadBufPos += (BASE_DCPR.ReadCodeBitPos += Bits) >> 5; BASE_DCPR.ReadCodeBitPos &= 31; if (BASE_DCPR.ReadBufPos == (BASE_DCPR_READBUFSIZE - 2)) { BASE_DCPR_FillReadBuf(); } B0 = BASE_DCPR.ReadBuf[BASE_DCPR.ReadBufPos]; ADJUST_ENDIANNESS32(&B0); B1 = BASE_DCPR.ReadBuf[BASE_DCPR.ReadBufPos+1]; ADJUST_ENDIANNESS32(&B1); BASE_DCPR.ReadCode = (B0 << BASE_DCPR.ReadCodeBitPos) + ((B1 >> (32 - BASE_DCPR.ReadCodeBitPos)) & (!BASE_DCPR.ReadCodeBitPos-1)); } /*-----------------BASE_DCPR_DecompressV20Block--------------------------*/ INT BASE_DCPR_DecompressV20Block(PCHAR Buf, INT Len) { INT R, RestLen; RestLen = Len; do { if (BASE_DCPR.Type != BASE_DCPR.NextType) { switch (BASE_DCPR.NextType) { case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_8: case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_16: case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_32_1: case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_32_2: { BASE_DCPR_SOUND_Init(BASE_DCPR.NextType); break; } case BASE_ACESTRUC_BLOCKEDTYPE_PIC: { BASE_DCPR_PIC_Init(); break; } } } BASE_DCPR.Type = BASE_DCPR.NextType; switch (BASE_DCPR.Type) { case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_NORM: case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA: case BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE: { R = BASE_DCPR_LZ77_PreprocessBlock(Buf, RestLen); break; } case BASE_ACESTRUC_BLOCKEDTYPE_PIC: { R = BASE_DCPR_PIC_Block(Buf, RestLen); BASE_DCPR_LZ77_CopyToDictionary(Buf, R); BASE_DCPR_EXTERN_BlockCopyToCprDictionary(Buf, R); break; } case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_8: case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_16: case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_32_1: case BASE_ACESTRUC_BLOCKEDTYPE_SOUND_32_2: { R = BASE_DCPR_SOUND_Block(Buf, RestLen); BASE_DCPR_LZ77_CopyToDictionary(Buf, R); BASE_DCPR_EXTERN_BlockCopyToCprDictionary(Buf, R); break; } default: { R = 0; break; } } BASE_DCPR.FilePos += R; Buf += R; RestLen -= R; } while ((R || BASE_DCPR.NextType != BASE_DCPR.Type || (BASE_DCPR.NextType == BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA) && BASE_DCPR_LZ77.NextDeltaLen) && (RestLen > BASE_CPRDCPR_LZ77_MAXLEN)); return Len - RestLen; } /*-----------------BASE_DCPR_UnstoreBlock--------------------------------*/ INT BASE_DCPR_UnstoreBlock(PCHAR Buf, INT Len) { INT Rd; Len = BASE_CRYPT_CryptLen(Len - 8); /* because of decryption */ Rd = BASE_ARCBLK_ReadAddSizeBlock(Buf, Len > BASE_DCPR.FileSize ? BASE_DCPR.FileSize : Len); BASE_DCPR_LZ77_CopyToDictionary(Buf, Rd); BASE_DCPR.FileSize -= Rd; return Rd; } /*-----------------BASE_DCPR_Block---------------------------------------*/ INT BASE_DCPR_Block(PCHAR Buf, INT Len) { INT Result; switch (BASE_ARCBLK.Header.File.TECH.TYPE) { case BASE_ACESTRUC_TECHNIQUE_STORE: { Result = BASE_DCPR_UnstoreBlock(Buf, Len); BASE_DCPR_EXTERN_BlockCopyToCprDictionary(Buf, Result); break; } case BASE_ACESTRUC_TECHNIQUE_LZ77_1: { Result = BASE_DCPR_LZ77_Block(Buf, Len); break; } case BASE_ACESTRUC_TECHNIQUE_BLOCKED_1: { Result = BASE_DCPR_DecompressV20Block(Buf, Len); break; } default: { BASE_ERROROUT_EXTERN_UnknownMethod(); BASE_ERROR.ErrorCode = BASE_ERROR_OTHER; Result = 0; } } BASE_CRC.ReadCRC = BASE_CRC_GetCRC(BASE_CRC.ReadCRC, Buf, Result); return Result; } /*-----------------BASE_DCPR_Init----------------------------------------*/ void BASE_DCPR_Init(void) { INT I; if (!BASE_DCPR.IsInitialized) { BASE_MEMORY_Optimize(); if (!(BASE_DCPR.ReadBuf = (PULONG) BASE_MEMORY_GetMem(BASE_DCPR_READBUFSIZE << 2))) { return; } BASE_DCPR.Options.DicBits = BASE_DIRDATA_Dir1.IsMultiVol ? BASE_CPRDCPR_LZ77_MAXDICBITS : BASE_DIRDATA_Dir1.Dictionary; while (!(BASE_DCPR_LZ77.Dictionary = (PCHAR) BASE_MEMORY_GetMemCheck(0, 1 << BASE_DCPR.Options.DicBits)) && BASE_DCPR.Options.DicBits) { BASE_DCPR.Options.DicBits--; } if (!BASE_DCPR.Options.DicBits) { BASE_ERROROUT_EXTERN_Mem(); return; } BASE_DCPR_LZ77.DictionaryAnd = (BASE_DCPR_LZ77.DictionarySize = 1 << BASE_DCPR.Options.DicBits) - 1; BASE_DCPR.IsFirstFile = BASE_DCPR.IsInitialized = 1; for (I = 0; I <= 128; I++) { BASE_CPRDCPR_SOUND.QUANTIZER[256 - I] = BASE_CPRDCPR_SOUND.QUANTIZER[I] = BASE_BITWIDTH.BitWidthArray[I]; } } } /*-----------------BASE_DCPR_InitFile------------------------------------*/ void BASE_DCPR_InitFile(void) { BASE_CRYPT_ResetCryptKey(&BASE_DCPR.Options.CryptionData); BASE_CRC.ReadCRC = BASE_CRC_MASK; BASE_DCPR.FileSize = BASE_ARCBLK.Header.File.SIZE; if (BASE_ARCBLK.Header.File.TECH.TYPE == BASE_ACESTRUC_TECHNIQUE_LZ77_1 || BASE_ARCBLK.Header.File.TECH.TYPE == BASE_ACESTRUC_TECHNIQUE_BLOCKED_1) { if ((BASE_ARCBLK.Header.File.TECH.PARM & 15) + 10 > BASE_DCPR.Options.DicBits) { BASE_ERROROUT_EXTERN_ExtractMem(); BASE_ERROR.ErrorCode = BASE_ERROR_MEM; return; } BASE_ARCBLK_ReadAddSizeBlock((PCHAR) BASE_DCPR.ReadBuf, BASE_DCPR_READBUFSIZE << 2); BASE_DCPR.ReadCode = BASE_DCPR.ReadBuf[0]; ADJUST_ENDIANNESS32(&BASE_DCPR.ReadCode); BASE_DCPR.ReadCodeBitPos = BASE_DCPR.ReadBufPos = BASE_DCPR.FilePos = BASE_DCPR_LZ77.MainBufPos = BASE_DCPR_LZ77.PartSize = BASE_DCPR_LZ77.BlockSize = BASE_DCPR_LZ77.PREP_NumKeptBytes = BASE_DCPR_LZ77.PREP_LastDelta = BASE_DCPR_LZ77.DeltaBlockSize = 0; BASE_DCPR.NextType = BASE_DCPR.Type = BASE_ACESTRUC_BLOCKEDTYPE_LZ77_NORM; } if (!BASE_ARCBLK.Options.IsSolid || BASE_DCPR.IsFirstFile) { BASE_DCPR_LZ77.DictionaryPos = 0; } BASE_DCPR_LZ77.OldDistsPos = 0; memset(&BASE_DCPR_LZ77.OldDists, 0, sizeof(BASE_DCPR_LZ77.OldDists)); BASE_DCPR.IsFirstFile = 0; } /*-----------------BASE_DCPR_Done----------------------------------------*/ void BASE_DCPR_Done(void) { if (BASE_DCPR.IsInitialized) { BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR.ReadBuf); BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_LZ77.Dictionary); BASE_DCPR.IsInitialized = 0; BASE_MEMORY_Optimize(); } } /*-----------------BASE_DCPR_DoneFile------------------------------------*/ void BASE_DCPR_DoneFile(void) { BASE_DCPR_PIC_Done(); } /*-----------------BASE_DCPR_FillReadBuf---------------------------------*/ void BASE_DCPR_FillReadBuf(void) { UINT Len; Len = (BASE_DCPR_READBUFSIZE - 2) << 2; BASE_DCPR.ReadBufPos -= BASE_DCPR_READBUFSIZE - 2; BASE_DCPR.ReadBuf[0] = BASE_DCPR.ReadBuf[BASE_DCPR_READBUFSIZE - 2]; BASE_DCPR.ReadBuf[1] = BASE_DCPR.ReadBuf[BASE_DCPR_READBUFSIZE - 1]; BASE_ARCBLK_ReadAddSizeBlock((PCHAR) &BASE_DCPR.ReadBuf[2], Len); } unace-2.5/source/base/all/dcpr/dcpr.h0000644000175000017500000000264707704243500020212 0ustar danieldaniel00000000000000#ifndef _BASE_DCPR_H_INCLUDED #define _BASE_DCPR_H_INCLUDED #include "base/all/cprdcpr/huff/huff.h" #include "base/all/cprdcpr/lz77/lz77.h" #include "base/all/options/options.h" #ifdef INCL_BASE_DCPR_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif //------ConstantDefines: #define BASE_DCPR_READBUFSIZE 8192 #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { BOOL DoFreeReadBuf, IsInitialized; INT ReadBufPos, ReadCodeBitPos; PULONG ReadBuf; ULONG ReadCode; BOOL IsFirstFile; ULONGLONG FilePos, FileSize; INT Type, NextType, OverNextType; tBASE_OPTIONS_DCPR Options; } tBASE_DCPR; #define RESTOREALIGNMENT #include "base/all/packprag.h" DECLEXT tBASE_DCPR BASE_DCPR; void BASE_DCPR_AddBits(INT Bits); INT BASE_DCPR_DecompressV20Block(PCHAR Buf, INT Len); INT BASE_DCPR_UnstoreBlock(PCHAR Buf, INT Len); INT BASE_DCPR_Block(PCHAR Buf, INT Len); void BASE_DCPR_Init(void); void BASE_DCPR_InitFile(void); void BASE_DCPR_Done(void); void BASE_DCPR_DoneFile(void); void BASE_DCPR_EXTERN_BlockCopyToCprDictionary(PCHAR Buf, INT Len); void BASE_DCPR_FillReadBuf(void); #undef DECLEXT #endif unace-2.5/source/base/all/dcpr/comments/0000755000175000017500000000000007752377756020755 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dcpr/comments/comments.c0000644000175000017500000000640207722745466022742 0ustar danieldaniel00000000000000#include #define INCL_BASE_DCPR_COMMENTS_EXCLUSIVE #define INCL_BASE_COMMENTS #define INCL_BASE_DCPR #define INCL_BASE_DCPR_HUFF #define INCL_BASE_DCPR_LZ77 #define INCL_BASE_MEMORY #include "base/all/includes.h" /*-----------------BASE_DCPR_COMMENTS_Init-------------------------------*/ void BASE_DCPR_COMMENTS_Init(void) { INT I; BASE_DCPR.DoFreeReadBuf = !BASE_DCPR.ReadBuf; if (BASE_DCPR.DoFreeReadBuf) { BASE_DCPR.ReadBuf = (PULONG) BASE_MEMORY_GetMem(BASE_DCPR_READBUFSIZE << 2); } I = BASE_COMMENTS.CompressedSize > BASE_DCPR_READBUFSIZE * sizeof(LONG) ? BASE_DCPR_READBUFSIZE * sizeof(LONG) : BASE_COMMENTS.CompressedSize; if (BASE_DCPR.ReadBuf) { memcpy(BASE_DCPR.ReadBuf, BASE_COMMENTS.Comment, I); } BASE_DCPR.ReadCode = BASE_DCPR.ReadBuf[0]; ADJUST_ENDIANNESS32(&BASE_DCPR.ReadCode); BASE_DCPR.ReadCodeBitPos = BASE_DCPR.ReadBufPos = 0; } /*-----------------BASE_DCPR_COMMENTS_Done-------------------------------*/ void BASE_DCPR_COMMENTS_Done(void) { if (BASE_DCPR.DoFreeReadBuf) { BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR.ReadBuf); } } /*-----------------BASE_DCPR_COMMENTS_GetComment-------------------------*/ void BASE_DCPR_COMMENTS_GetComment(void) { SHORT Hash[BASE_COMMENTS_HASHFUNC(255, 255) + 1]; INT CommentPos, Code, MatchPos, CommentLen, HashValue; if (BASE_COMMENTS.CompressedSize) { CommentPos = 0; memset(&Hash, 0, sizeof(Hash)); BASE_DCPR_COMMENTS_Init(); CommentLen = BASE_DCPR.ReadCode >> (32 - 15); BASE_DCPR_AddBits(15); if (CommentLen >= sizeof(BASE_COMMENTS.Comment)) { CommentLen = sizeof(BASE_COMMENTS.Comment) - 1; } if (BASE_DCPR_HUFF_ReadWidths(BASE_CPRDCPR_LZ77_MAXCODEWIDTH, (PUSHORT) BASE_DCPR_LZ77.MainHuffSymbols, (PUSHORT) BASE_DCPR_LZ77.MainHuffWidths, BASE_CPRDCPR_LZ77_MAXMAINCODE)) { do { if (CommentPos > 1) { HashValue = BASE_COMMENTS_HASHFUNC(BASE_COMMENTS.Comment[CommentPos - 1], BASE_COMMENTS.Comment[CommentPos - 2]); MatchPos = Hash[HashValue]; Hash[HashValue] = CommentPos; } Code = BASE_DCPR_LZ77.MainHuffSymbols [BASE_DCPR.ReadCode >> (32 - BASE_CPRDCPR_LZ77_MAXCODEWIDTH)]; BASE_DCPR_AddBits(BASE_DCPR_LZ77.MainHuffWidths[Code]); if (BASE_DCPR.ReadBufPos == BASE_DCPR_READBUFSIZE - 3) { BASE_DCPR.ReadBufPos = 0; } if (Code > 255) { Code -= 256; Code += 2; BASE_MEMORY_MemCopy(&BASE_COMMENTS.Comment[CommentPos], &BASE_COMMENTS.Comment[MatchPos], Code); CommentPos += Code; } else { BASE_COMMENTS.Comment[CommentPos++] = Code; } } while (CommentPos < CommentLen); } BASE_COMMENTS.Comment[CommentLen] = 0; BASE_DCPR_COMMENTS_Done(); } else { BASE_COMMENTS.Comment[0] = 0; } } unace-2.5/source/base/all/dcpr/comments/comments.h0000644000175000017500000000033607157426372022741 0ustar danieldaniel00000000000000#ifndef _BASE_DCPR_COMMENTS_H_INCLUDED #define _BASE_DCPR_COMMENTS_H_INCLUDED void BASE_DCPR_COMMENTS_Init(void); void BASE_DCPR_COMMENTS_Done(void); void BASE_DCPR_COMMENTS_GetComment(void); #endif unace-2.5/source/base/all/convert/0000755000175000017500000000000007752377756017660 5ustar danieldaniel00000000000000unace-2.5/source/base/all/convert/lin.c0000644000175000017500000000166607161677156020606 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_CONVERT #include "base/all/includes.h" /*-----------------BASE_CONVERT_StrUpr------------------------------------*/ PCHAR BASE_CONVERT_StrUpr(PCHAR Str) { INT I; for (I = 0; I < strlen(Str); I++) { Str[I] = toupper(Str[I]); } return Str; } /*-----------------BASE_CONVERT_StrLwr----------------------------------*/ PCHAR BASE_CONVERT_StrLwr(PCHAR Str) { INT I; for (I = 0; I < strlen(Str); I++) { Str[I] = tolower(Str[I]); } return Str; } /*-----------------BASE_CONVERT_StrICmp----------------------------------*/ INT BASE_CONVERT_StrICmp(PCHAR Str1, PCHAR Str2) { return strcasecmp(Str1, Str2); } /*-----------------BASE_CONVERT_StrNICmp---------------------------------*/ INT BASE_CONVERT_StrNICmp(PCHAR Str1, PCHAR Str2, INT Size) { return strncasecmp(Str1, Str2, Size); } unace-2.5/source/base/all/convert/convert.c0000644000175000017500000000140707572755260021474 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_CONVERT_EXCLUSIVE #define INCL_BASE_FILELIST #include "base/all/includes.h" /*-----------------BASE_CONVERT_LowCase----------------------------------*/ INT BASE_CONVERT_LowCase(INT CharCode) { return in(CharCode, 'A', 'Z') ? CharCode + 32 : CharCode; } /*-----------------BASE_CONVERT_UpCase-----------------------------------*/ INT BASE_CONVERT_UpCase(INT CharCode) { return in(CharCode, 'a', 'z') ? CharCode - 32 : CharCode; } /*-----------------BASE_CONVERT_StrCatBefore-----------------------------*/ void BASE_CONVERT_StrCatBefore(PCHAR Str1, PCHAR Str2) { tBASE_LFN_DBL TempStr; strcpy(TempStr, Str2); sprintf(Str2, "%s%s", Str1, TempStr); } unace-2.5/source/base/all/convert/convert.h0000644000175000017500000000137307220442012021455 0ustar danieldaniel00000000000000#ifndef _BASE_CONVERT_H_INCLUDED #define _BASE_CONVERT_H_INCLUDED #ifdef INCL_BASE_CONVERT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { tLFN ToOEMStr, ToANSIStr; } tBASE_CONVERT; DECLEXT tBASE_CONVERT BASE_CONVERT; INT BASE_CONVERT_UpCase(INT CharCode); INT BASE_CONVERT_LowCase(INT CharCode); void BASE_CONVERT_StrCatBefore(PCHAR Str1, PCHAR Str2); PCHAR BASE_CONVERT_ToOEM(PCHAR Str); PCHAR BASE_CONVERT_ToANSI(PCHAR Str); PCHAR BASE_CONVERT_StrUpr(PCHAR Str); PCHAR BASE_CONVERT_StrLwr(PCHAR Str); INT BASE_CONVERT_StrICmp(PCHAR Str1, PCHAR Str2); INT BASE_CONVERT_StrNICmp(PCHAR Str1, PCHAR Str2, INT Size); #undef DECLEXT #endif unace-2.5/source/base/all/convert/nont.c0000644000175000017500000000075107752427200020761 0ustar danieldaniel00000000000000#include #define INCL_BASE_CONVERT #include "base/all/includes.h" /*-----------------BASE_CONVERT_ToOEM------------------------------------*/ PCHAR BASE_CONVERT_ToOEM(PCHAR Str) { strcpy(BASE_CONVERT.ToOEMStr, Str); return BASE_CONVERT.ToOEMStr; } /*-----------------BASE_CONVERT_ToANSI-----------------------------------*/ PCHAR BASE_CONVERT_ToANSI(PCHAR Str) { strcpy(BASE_CONVERT.ToANSIStr, Str); return BASE_CONVERT.ToANSIStr; } unace-2.5/source/base/all/convert/NT.C0000644000175000017500000000135007256402164020261 0ustar danieldaniel00000000000000#include "base/all/wininc.h" #include #include #define INCL_BASE_CONVERT #include "base/all/includes.h" /*-----------------BASE_CONVERT_ToOEM------------------------------------*/ PCHAR BASE_CONVERT_ToOEM(PCHAR Str) { INT StrLen; StrLen = strlen(Str); CharToOemBuffA(Str, BASE_CONVERT.ToOEMStr, StrLen); BASE_CONVERT.ToOEMStr[StrLen] = 0; return BASE_CONVERT.ToOEMStr; } /*-----------------BASE_CONVERT_ToANSI-----------------------------------*/ PCHAR BASE_CONVERT_ToANSI(PCHAR Str) { INT StrLen; StrLen = strlen(Str); OemToCharBuffA(Str, BASE_CONVERT.ToANSIStr, StrLen); BASE_CONVERT.ToANSIStr[StrLen] = 0; return BASE_CONVERT.ToANSIStr; } unace-2.5/source/base/all/packprag.h0000644000175000017500000000400607737142376020130 0ustar danieldaniel00000000000000/**************************************************************************/ /* */ /* packprag.h: declares pragmas for alignment settings */ /* */ /**************************************************************************/ #ifdef SETALIGNMENT #undef SETALIGNMENT #if ( defined(__MACOSX__) || defined(__sun__) ) #define RESTOREALIGNMENTOFF #pragma pack(4) #elif defined(__WATCOMC__) || defined(__GCC__) || defined(__MWERKS__) && (__dest_os == __win32_os) #pragma pack(push, 4) #endif #if defined(__MWERKS__) && (__dest_os == __mac_os) #if !(__option(align_array_members)) #define RESTOREALIGNMENTOFF #pragma align_array_members on #endif #endif #endif #ifdef SETNOALIGNMENT #undef SETNOALIGNMENT #if defined( __MACOSX__ ) || defined( __sun__ ) #define RESTOREALIGNMENTON #pragma pack(1) #elif defined(__WATCOMC__) || defined(__GCC__) || defined(__MWERKS__) && (__dest_os == __win32_os) #pragma pack(push, 1) #endif #if defined(__MWERKS__) && (__dest_os == __mac_os) #if (__option(align_array_members)) #define RESTOREALIGNMENTON #pragma align_array_members off #endif #endif #endif #ifdef RESTOREALIGNMENT #undef RESTOREALIGNMENT #if defined(__MACOSX__) || defined(__sun__) #ifdef RESTOREALIGNMENTOFF #undef RESTOREALIGNMENTOFF #pragma pack(1) #endif #ifdef RESTOREALIGNMENTON #undef RESTOREALIGNMENTON #pragma pack(4) #endif #elif defined(__WATCOMC__) || defined(__GCC__) || defined(__MWERKS__) && (__dest_os == __win32_os) #pragma pack(pop) #endif #if defined(__MWERKS__) && (__dest_os == __mac_os) #ifdef RESTOREALIGNMENTOFF #undef RESTOREALIGNMENTOFF #pragma align_array_members off #endif #ifdef RESTOREALIGNMENTON #undef RESTOREALIGNMENTON #pragma align_array_members on #endif #endif #endif unace-2.5/source/base/all/cprdcpr/0000755000175000017500000000000007752377756017635 5ustar danieldaniel00000000000000unace-2.5/source/base/all/cprdcpr/pic/0000755000175000017500000000000007752377756020410 5ustar danieldaniel00000000000000unace-2.5/source/base/all/cprdcpr/pic/pic.c0000644000175000017500000000011307157426372021306 0ustar danieldaniel00000000000000#define INCL_BASE_CPRDCPR_PIC_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/cprdcpr/pic/pic.h0000644000175000017500000000246207157426372021324 0ustar danieldaniel00000000000000#ifndef _BASE_CPRDCPR_PIC_H_INCLUDED #define _BASE_CPRDCPR_PIC_H_INCLUDED #ifdef INCL_BASE_CPRDCPR_PIC_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_CPRDCPR_PIC_N0 128 #define BASE_CPRDCPR_PIC_MAXPLANES 4 #define BASE_CPRDCPR_PIC_MAXCOLWIDTH 16384 #define BASE_CPRDCPR_PIC_CONTEXTNUMBER 365 #define BASE_CPRDCPR_PIC_S1 3 #define BASE_CPRDCPR_PIC_S2 7 #define BASE_CPRDCPR_PIC_S3 21 #define BASE_CPRDCPR_PIC_QuantizerArr(i) BASE_CPRDCPR_PIC.QuantizerArr [255+i] #define BASE_CPRDCPR_PIC_QuantizerArrx9(i) BASE_CPRDCPR_PIC.QuantizerArrx9 [255+i] #define BASE_CPRDCPR_PIC_QuantizerArrx9x9(i) BASE_CPRDCPR_PIC.QuantizerArrx9x9[255+i] #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { UCHAR UsedCounter, PredictorNumber; SHORT AverageCounter; UCHAR ErrorCounters[4]; } tBASE_CPRDCPR_PIC_CONTEXT, *pBASE_CPRDCPR_PIC_CONTEXT; #define RESTOREALIGNMENT #include "base/all/packprag.h" typedef struct { INT QuantizerArr [511], QuantizerArrx9 [511], QuantizerArrx9x9[511]; } tBASE_CPRDCPR_PIC; DECLEXT tBASE_CPRDCPR_PIC BASE_CPRDCPR_PIC; #undef DECLEXT #endif unace-2.5/source/base/all/cprdcpr/huff/0000755000175000017500000000000007752377756020565 5ustar danieldaniel00000000000000unace-2.5/source/base/all/cprdcpr/huff/huff.c0000644000175000017500000000011407157426372021641 0ustar danieldaniel00000000000000#define INCL_BASE_CPRDCPR_HUFF_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/cprdcpr/huff/huff.h0000644000175000017500000000112407704243460021641 0ustar danieldaniel00000000000000#ifndef _BASE_CPRDCPR_HUFF_H_INCLUDED #define _BASE_CPRDCPR_HUFF_H_INCLUDED #include "base/all/cprdcpr/sound/sound.h" #ifdef INCL_BASE_CPRDCPR_HUFF_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_CPRDCPR_HUFF_MAXWIDTHSVDWD 7 #define BASE_CPRDCPR_HUFF_MAXWIDTHTOSAVE 15 #define BASE_CPRDCPR_HUFF_MAXCODE BASE_CPRDCPR_SOUND_MAXCODE typedef struct { USHORT SaveWidths[BASE_CPRDCPR_HUFF_MAXWIDTHTOSAVE]; } tBASE_CPRDCPR_HUFF; DECLEXT tBASE_CPRDCPR_HUFF BASE_CPRDCPR_HUFF; #undef DECLEXT #endif unace-2.5/source/base/all/cprdcpr/lz77/0000755000175000017500000000000007752377756020440 5ustar danieldaniel00000000000000unace-2.5/source/base/all/cprdcpr/lz77/lz77.h0000644000175000017500000000210407157426372021375 0ustar danieldaniel00000000000000#ifndef _BASE_CPRDCPR_LZ77_H_INCLUDED #define _BASE_CPRDCPR_LZ77_H_INCLUDED //------ConstantDefines: #define BASE_CPRDCPR_LZ77_MAXCODEWIDTH 11 #define BASE_CPRDCPR_LZ77_MAXLEN 259 #define BASE_CPRDCPR_LZ77_MAXDISTATLEN2 255 #define BASE_CPRDCPR_LZ77_MAXDISTATLEN3 8191 #define BASE_CPRDCPR_LZ77_MAXDICBITS 22 #define BASE_CPRDCPR_LZ77_MAXDICBITS2 (BASE_CPRDCPR_LZ77_MAXDICBITS >> 1) #define BASE_CPRDCPR_LZ77_MAXDICSIZE (1 << BASE_CPRDCPR_LZ77_MAXDICBITS) #define BASE_CPRDCPR_LZ77_MAXDIST2 (1 << BASE_CPRDCPR_LZ77_MAXDICBITS2) #define BASE_CPRDCPR_LZ77_DEFBLOCKSIZE 8500 #define BASE_CPRDCPR_LZ77_MAXBLOCKSIZE 9500 #define BASE_CPRDCPR_LZ77_MAXMAINCODE (260 + BASE_CPRDCPR_LZ77_MAXDICBITS + 2) #define BASE_CPRDCPR_LZ77_MAXLENCODE (256 - 1) #define BASE_CPRDCPR_LZ77_TYPECODE (260 + BASE_CPRDCPR_LZ77_MAXDICBITS + 1) #define BASE_CPRDCPR_LZ77_NUMDICSIZES (BASE_CPRDCPR_LZ77_MAXDICBITS - 15 + 1) #define BASE_CPRDCPR_LZ77_MAXDELTABLOCK 65536 #endif unace-2.5/source/base/all/cprdcpr/sound/0000755000175000017500000000000007752377756020765 5ustar danieldaniel00000000000000unace-2.5/source/base/all/cprdcpr/sound/sound.c0000644000175000017500000000011507157426372022242 0ustar danieldaniel00000000000000#define INCL_BASE_CPRDCPR_SOUND_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/cprdcpr/sound/sound.h0000644000175000017500000000437607157426372022264 0ustar danieldaniel00000000000000#ifndef _BASE_CPRDCPR_SOUND_H_INCLUDED #define _BASE_CPRDCPR_SOUND_H_INCLUDED #ifdef INCL_BASE_CPRDCPR_SOUND_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_CPRDCPR_SOUND_RUNLENCODES 32 #define BASE_CPRDCPR_SOUND_MAXCODE (256 + BASE_CPRDCPR_SOUND_RUNLENCODES + 1) #define BASE_CPRDCPR_SOUND_MAXCODEWIDTH 10 #define BASE_CPRDCPR_SOUND_TYPECODE (256 + BASE_CPRDCPR_SOUND_RUNLENCODES) #define BASE_CPRDCPR_SOUND_MAXCHANNELS 3 #define BASE_CPRDCPR_SOUND_MAXMODELS (BASE_CPRDCPR_SOUND_MAXCHANNELS * 3) #define BASE_CPRDCPR_SOUND_CHANNELBLOCKSIZE 2000 #define BASE_CPRDCPR_SOUND_HISTORYSIZE 256 #define BASE_CPRDCPR_SOUND_MAXBLOCKSIZE (BASE_CPRDCPR_SOUND_CHANNELBLOCKSIZE * BASE_CPRDCPR_SOUND_MAXMODELS + 8) #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { INT PredictorDifCnt [BASE_CPRDCPR_SOUND_MAXCHANNELS][2], LastPredictorDifCnt[BASE_CPRDCPR_SOUND_MAXCHANNELS][2], RarDifCnt [BASE_CPRDCPR_SOUND_MAXCHANNELS][4], RarCoefficient [BASE_CPRDCPR_SOUND_MAXCHANNELS][4], RarDif [BASE_CPRDCPR_SOUND_MAXCHANNELS][9], ByteCount [BASE_CPRDCPR_SOUND_MAXCHANNELS], LastByte [BASE_CPRDCPR_SOUND_MAXCHANNELS], LastDelta [BASE_CPRDCPR_SOUND_MAXCHANNELS], State [BASE_CPRDCPR_SOUND_MAXCHANNELS], Code [BASE_CPRDCPR_SOUND_MAXCHANNELS], AdaptiveModelCnt [BASE_CPRDCPR_SOUND_MAXCHANNELS], AdaptiveModelUse [BASE_CPRDCPR_SOUND_MAXCHANNELS], Models, Mode, BlockSize; } tBASE_CPRDCPR_SOUND_DATA; #define RESTOREALIGNMENT #include "base/all/packprag.h" typedef struct { INT QUANTIZER[256]; } tBASE_CPRDCPR_SOUND; DECLEXT tBASE_CPRDCPR_SOUND BASE_CPRDCPR_SOUND; DECLEXT INT const BASE_CPRDCPR_SOUND_CHANNELNUM[4][4] #ifdef INCL_BASE_CPRDCPR_SOUND_EXCLUSIVE ={{0, 0, 0, 0}, {0, 1, 0, 1}, {0, 1, 0, 2}, {1, 0, 2, 0}} #endif ; DECLEXT INT const BASE_CPRDCPR_SOUND_MODELS[4] #ifdef INCL_BASE_CPRDCPR_SOUND_EXCLUSIVE ={3, 6, 9, 9} #endif ; #undef DECLEXT #endif unace-2.5/source/base/all/bitwidth/0000755000175000017500000000000007752377756020016 5ustar danieldaniel00000000000000unace-2.5/source/base/all/bitwidth/bitwidth.c0000644000175000017500000000207507157426372021770 0ustar danieldaniel00000000000000#define INCL_BASE_BITWIDTH_EXCLUSIVE #include "base/all/includes.h" /*-----------------BASE_BITWIDTH_Init------------------------------------*/ void BASE_BITWIDTH_Init(void) { INT I, K, J; I = K = 0; J = 1; do { if (I == J) { K++; J <<= 1; } BASE_BITWIDTH.BitWidthArray[I++] = K; } while (I < BASE_CPRDCPR_LZ77_MAXDIST2); for (I = -128; I <= 127; I++) { if (I < 0) { BASE_BITWIDTH.DifBitWidthArray[(UCHAR) I] = BASE_BITWIDTH.BitWidthArray[-2*I - 1]; } else { BASE_BITWIDTH.DifBitWidthArray[(UCHAR) I] = BASE_BITWIDTH.BitWidthArray[2*I]; } } } /*-----------------BASE_BITWIDTH_GetBitWidth-----------------------------*/ INT BASE_BITWIDTH_GetBitWidth(INT Value) { return Value < BASE_CPRDCPR_LZ77_MAXDIST2 ? BASE_BITWIDTH.BitWidthArray[Value] : BASE_BITWIDTH.BitWidthArray[Value >> BASE_CPRDCPR_LZ77_MAXDICBITS2] + BASE_CPRDCPR_LZ77_MAXDICBITS2; } unace-2.5/source/base/all/bitwidth/bitwidth.h0000644000175000017500000000100407704243440021753 0ustar danieldaniel00000000000000#ifndef _BASE_BITWIDTH_H_INCLUDED #define _BASE_BITWIDTH_H_INCLUDED #include "base/all/cprdcpr/lz77/lz77.h" #ifdef INCL_BASE_BITWIDTH_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { UCHAR BitWidthArray[BASE_CPRDCPR_LZ77_MAXDIST2]; UCHAR DifBitWidthArray[256]; } tBASE_BITWIDTH; DECLEXT tBASE_BITWIDTH BASE_BITWIDTH; void BASE_BITWIDTH_Init(void); INT BASE_BITWIDTH_GetBitWidth(INT Value); #undef DECLEXT #endif unace-2.5/source/base/all/dirdata/0000755000175000017500000000000007752377756017610 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dirdata/dirdata.c0000644000175000017500000000010707157426372021346 0ustar danieldaniel00000000000000#define INCL_BASE_DIRDATA_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/dirdata/dirdata.h0000644000175000017500000000303407704243536021352 0ustar danieldaniel00000000000000#ifndef _BASE_DIRDATA_H_INCLUDED #define _BASE_DIRDATA_H_INCLUDED #include "base/all/dosfuncs/dosfuncs.h" #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_DIRDATA_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif //------TypeDefines: #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { tLFN Dir, SavedFileName; INT ListPrintPos; /*- for archives -*/ tLFN ArchiveName, ArchiveDir; PCHAR ArchiveDescription; BOOL IsACE, IsBroken, IsSolid, IsMultiVol, IsLocked, IsSFX, IsNotCompatible, IsAVOk, HasAV, HasPassword, HasMainCmt, HasFileCmt, HasRecoveryRec, HasBeenModified; INT ArchiveBegin; INT ArchiveType, Dictionary, VolumeNumber, FileNumber, VersionToExtract, VersionCreated, HostCreated; ULONGLONG UnPackedSize, PackedSize; tBASE_DOSFUNCS_FileTime TimeCreated; } tBASE_DIRDATA_DirData, *pBASE_DIRDATA_DirData; #define RESTOREALIGNMENT #include "base/all/packprag.h" //------VariableDefines: #define BASE_DIRDATA_IsInArchive1 BASE_DIRDATA_Dir1.ArchiveName[0] #define BASE_DIRDATA_IsInArchive2 BASE_DIRDATA_Dir2.ArchiveName[0] //------Variables: DECLEXT tBASE_DIRDATA_DirData BASE_DIRDATA_Dir1, BASE_DIRDATA_Dir2; #undef DECLEXT #endif unace-2.5/source/base/all/all.c0000644000175000017500000000015107157426370017073 0ustar danieldaniel00000000000000#define INCL_BASE_ACESTRUC_EXCLUSIVE #define INCL_BASE_ALL_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/all.h0000644000175000017500000000401407761463310017076 0ustar danieldaniel00000000000000#ifndef _BASE_ALL_H_INCLUDED #define _BASE_ALL_H_INCLUDED #if defined(__MACOSX__) || defined(__sun__) #include #include #endif #define SETALIGNMENT #include "base/all/packprag.h" #if defined(__NT__) #include #else #if defined(__OS2__) #include #endif #endif #if defined(_GNU_H_WINDOWS32_BASE) #define _WINDOWS_ #define __wtypes_h__ #endif #include "declare.h" #define RESTOREALIGNMENT #include "base/all/packprag.h" #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_ALL_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define in(v1,v2,v3) ((((INT) v1) >= ((INT) v2)) && (((INT) v1)<=((INT) v3))) DECLEXT PCHAR const ARCHIVEEXTENSIONS[5] #ifdef INCL_BASE_ALL_EXCLUSIVE = {"ACE", "RAR", "ZIP", "ARJ", "EXE"} #endif ; #undef DECLEXT #ifdef __EMULATE_UNALIGNED__ #include #define get_unaligned(ptr) \ ({ __typeof__(*(ptr)) __tmp; memmove(&__tmp, (ptr), sizeof(*(ptr))); __tmp; }) #define put_unaligned(ptr, val) \ ({ __typeof__(*(ptr)) __tmp = (val); \ memmove((ptr), &__tmp, sizeof(*(ptr))); \ (void)0; }) #else #define get_unaligned(ptr) (*(ptr)) #define put_unaligned(ptr, val) ((void)( *(ptr) = (val) )) #endif /* __EMULATE_UNALIGNED__ */ #ifdef __BIG_ENDIAN__ #define ADJUST_ENDIANNESS16(Ptr) {\ USHORT x = get_unaligned((USHORT*) (Ptr));\ put_unaligned((USHORT*) (Ptr), x >> 8 | x << 8);\ } #define ADJUST_ENDIANNESS32(Ptr) {\ ULONG x = get_unaligned((ULONG*) (Ptr));\ x = x >> 16 | x << 16;\ put_unaligned((ULONG*) (Ptr), (x&0xff00ff00) >> 8 | (x&0x00ff00ff) << 8);\ } #define ADJUST_ENDIANNESS64(Ptr) {\ ULONG x1 = get_unaligned((ULONG*) (Ptr)), x2 = get_unaligned(((ULONG*) (Ptr))+1);\ x1 = x1 >> 16 | x1 << 16;\ put_unaligned(((ULONG*) (Ptr))+1, (x1&0xff00ff00) >> 8 | (x1&0x00ff00ff) << 8);\ x2 = x2 >> 16 | x2 << 16;\ put_unaligned(((ULONG*) (Ptr)), (x2&0xff00ff00) >> 8 | (x2&0x00ff00ff) << 8);\ } #else #define ADJUST_ENDIANNESS16(Ptr) #define ADJUST_ENDIANNESS32(Ptr) #define ADJUST_ENDIANNESS64(Ptr) #endif #endif unace-2.5/source/base/all/crypt/0000755000175000017500000000000007752377756017341 5ustar danieldaniel00000000000000unace-2.5/source/base/all/crypt/crypt.c0000644000175000017500000001643307761477464020652 0ustar danieldaniel00000000000000#include #define INCL_BASE_CRYPT_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_ARCBLK #define INCL_BASE_DCPR #define INCL_BASE_ERROR #define INCL_BASE_OPTIONS #include "base/all/includes.h" /*-----------------BASE_CRYPT_MakeSHA------------------------------------*/ void BASE_CRYPT_MakeSHA(pBASE_CRYPT_CRYPTIONDATA CryptionData) { INT Count, I; ULONG A, B, C, D, E, W[80], Temp; Count = strlen(CryptionData->Password); //initialize: CryptionData->SHAData.Digest[0] = 0x67452301L; CryptionData->SHAData.Digest[1] = 0xefcdab89L; CryptionData->SHAData.Digest[2] = 0x98badcfeL; CryptionData->SHAData.Digest[3] = 0x10325476L; CryptionData->SHAData.Digest[4] = 0xc3d2e1f0L; memset(&(CryptionData->SHAData.Data), 0, sizeof(CryptionData->SHAData.Data)); memcpy(&(CryptionData->SHAData.Data), &(CryptionData->Password), Count); ((PUCHAR) &(CryptionData->SHAData.Data))[Count] = 0x80; for (I = 0; I < 15; I++) ADJUST_ENDIANNESS32(CryptionData->SHAData.Data+I); CryptionData->SHAData.Data[15] = Count << 3; //calculate: for (I = 0; I < 16; I++) { W[I] = CryptionData->SHAData.Data[I]; } for (I = 16; I < 80; I++) { W[I] = W[I - 3] ^ W[I - 8] ^ W[I - 14] ^ W[I - 16]; } A = CryptionData->SHAData.Digest[0]; B = CryptionData->SHAData.Digest[1]; C = CryptionData->SHAData.Digest[2]; D = CryptionData->SHAData.Digest[3]; E = CryptionData->SHAData.Digest[4]; for (I = 0; I < 20; I++) { BASE_CRYPT_SHAFUNC_1(I); } for (I = 20; I < 40; I++) { BASE_CRYPT_SHAFUNC_2(I); } for (I = 40; I < 60; I++) { BASE_CRYPT_SHAFUNC_3(I); } for (I = 60; I < 80; I++) { BASE_CRYPT_SHAFUNC_4(I); } CryptionData->SHAData.Digest[0] += A; CryptionData->SHAData.Digest[1] += B; CryptionData->SHAData.Digest[2] += C; CryptionData->SHAData.Digest[3] += D; CryptionData->SHAData.Digest[4] += E; } /*-----------------BASE_CRYPT_InitCryptKey-------------------------------*/ void BASE_CRYPT_InitCryptKey(pBASE_CRYPT_CRYPTIONDATA CryptionData) { INT I, J; PULONG PixDigitP; tBASE_CRYPT_BLOWFISHBLOCK Block; Block.Left = Block.Right = 0; if (CryptionData->Password[0]) { PixDigitP = (PULONG) CryptionData->PixDigitsP; for (I = 0; I < 1042; I++) { put_unaligned(PixDigitP+I, BASE_CRYPT_PIXDIGITS[I]); } PixDigitP = (PULONG) CryptionData->PixDigitsP; BASE_CRYPT_MakeSHA(CryptionData); for (I = 0; I < ((BASE_CRYPT_BLOWFISHROUNDS * 4 + 8) / 4); I++) { // make a sparc solution without losing the performance for the other platforms #ifdef __sun__ ULONG PixDigit = get_unaligned(PixDigitP); PixDigit = PixDigit ^ (CryptionData->SHAData).Digest[I % 5]; put_unaligned(PixDigitP, PixDigit); PixDigitP++; #else *PixDigitP++ ^= (CryptionData->SHAData).Digest[I % 5]; #endif } for (I = 0; I < BASE_CRYPT_BLOWFISHROUNDS + 2; I += 2) { BASE_CRYPT_EncryptKey(&Block, CryptionData); CryptionData->PixDigitsP[I] = Block.Left; CryptionData->PixDigitsP[I + 1] = Block.Right; } for (J = 0; J < 4; J++) { for (I = 0; I < 256; I += 2) { BASE_CRYPT_EncryptKey(&Block, CryptionData); CryptionData->PixDigitsS[J][I] = Block.Left; CryptionData->PixDigitsS[J][I + 1] = Block.Right; } } } CryptionData->LastBlock.Right = CryptionData->LastBlock.Left = 0; } /*-----------------BASE_CRYPT_EncryptKey---------------------------------*/ void BASE_CRYPT_EncryptKey(pBASE_CRYPT_BLOWFISHBLOCK DataBlock, pBASE_CRYPT_CRYPTIONDATA CryptionData) { INT I; ULONG Left, Right, Temp; Left = DataBlock->Left; Right = DataBlock->Right; for (I = 0; I < BASE_CRYPT_BLOWFISHROUNDS; I++) { Left ^= CryptionData->PixDigitsP[I]; Right ^= ((CryptionData->PixDigitsS[0][(Left >> 24) & 255] + CryptionData->PixDigitsS[1][(Left >> 16) & 255]) ^ CryptionData->PixDigitsS[2][(Left >> 8) & 255]) + CryptionData->PixDigitsS[3][Left & 255]; Temp = Left; Left = Right; Right = Temp; } Left ^= CryptionData->PixDigitsP[BASE_CRYPT_BLOWFISHROUNDS]; Right ^= CryptionData->PixDigitsP[(BASE_CRYPT_BLOWFISHROUNDS + 1)]; DataBlock->Left = Right; DataBlock->Right = Left; } /*-----------------BASE_CRYPT_DecryptBlock-------------------------------*/ void BASE_CRYPT_DecryptBlock(pBASE_CRYPT_BLOWFISHBLOCK DataBlock) { INT I; ULONG Left, Right, Temp; Left = DataBlock->Left; Right = DataBlock->Right; for (I = (BASE_CRYPT_BLOWFISHROUNDS + 1); I > 1; I--) { Left ^= BASE_DCPR.Options.CryptionData.PixDigitsP[I]; Right ^= ((BASE_DCPR.Options.CryptionData.PixDigitsS[0][(Left >> 24) & 255] + BASE_DCPR.Options.CryptionData.PixDigitsS[1][(Left >> 16) & 255]) ^ BASE_DCPR.Options.CryptionData.PixDigitsS[2][(Left >> 8) & 255]) + BASE_DCPR.Options.CryptionData.PixDigitsS[3][Left & 255]; Temp = Left; Left = Right; Right = Temp; } Left ^= BASE_DCPR.Options.CryptionData.PixDigitsP[1]; Right ^= BASE_DCPR.Options.CryptionData.PixDigitsP[0]; DataBlock->Left = Right; DataBlock->Right = Left; } /*-----------------BASE_CRYPT_CryptLen-----------------------------------*/ INT BASE_CRYPT_CryptLen(INT Len) { INT Blocks; Blocks = Len / sizeof(tBASE_CRYPT_BLOWFISHBLOCK); if (Blocks * sizeof(tBASE_CRYPT_BLOWFISHBLOCK) < Len) { Blocks++; } return Blocks * sizeof(tBASE_CRYPT_BLOWFISHBLOCK); } /*-----------------BASE_CRYPT_Decrypt------------------------------------*/ void BASE_CRYPT_Decrypt(PCHAR Buf, INT Len) { INT I, Blocks; pBASE_CRYPT_BLOWFISHBLOCK DataBlock; tBASE_CRYPT_BLOWFISHBLOCK LastBlock; if (BASE_DCPR.Options.CryptionData.Password[0]) { Blocks = Len / sizeof(tBASE_CRYPT_BLOWFISHBLOCK); DataBlock = (pBASE_CRYPT_BLOWFISHBLOCK) Buf; for (I = 0; I < Blocks; I++, DataBlock++) { ADJUST_ENDIANNESS32(&DataBlock->Left); ADJUST_ENDIANNESS32(&DataBlock->Right); LastBlock = *DataBlock; BASE_CRYPT_DecryptBlock(DataBlock); DataBlock->Left ^= BASE_DCPR.Options.CryptionData.LastBlock.Left; DataBlock->Right ^= BASE_DCPR.Options.CryptionData.LastBlock.Right; ADJUST_ENDIANNESS32(&DataBlock->Left); ADJUST_ENDIANNESS32(&DataBlock->Right); BASE_DCPR.Options.CryptionData.LastBlock = LastBlock; } } } /*-----------------BASE_CRYPT_ResetCryptKey------------------------------*/ void BASE_CRYPT_ResetCryptKey(pBASE_CRYPT_CRYPTIONDATA CryptionData) { CryptionData->LastBlock.Right = CryptionData->LastBlock.Left = 0; if (CryptionData == &BASE_DCPR.Options.CryptionData && (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD)) { BASE_CRYPT_EXTERN_ResetCryptKeyUseCurrent(CryptionData); if (!BASE_ERROR.ErrorCode && !BASE_DCPR.Options.CryptionData.Password[0]) { if (BASE_OPTIONS_EXTERN_SetPassword(&BASE_DCPR.Options.CryptionData, 0)) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } else { BASE_CRYPT_InitCryptKey(&BASE_DCPR.Options.CryptionData); } } } } unace-2.5/source/base/all/crypt/crypt.h0000644000175000017500000003732607752431722020646 0ustar danieldaniel00000000000000#ifndef _BASE_CRYPT_H_INCLUDED #define _BASE_CRYPT_H_INCLUDED #ifdef INCL_BASE_CRYPT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_CRYPT_BLOWFISHROUNDS 16 #define BASE_CRYPT_SHACONST1 0x5a827999L #define BASE_CRYPT_SHACONST2 0x6ed9eba1L #define BASE_CRYPT_SHACONST3 0x8f1bbcdcL #define BASE_CRYPT_SHACONST4 0xca62c1d6L #define BASE_CRYPT_SHAFUNC1(X, Y, Z) ((X & Y) | (~X & Z)) #define BASE_CRYPT_SHAFUNC2(X, Y, Z) (X ^ Y ^ Z) #define BASE_CRYPT_SHAFUNC3(X, Y, Z) ((X & Y) | (X & Z) | (Y & Z)) #define BASE_CRYPT_SHAFUNC4(X, Y, Z) (X ^ Y ^ Z) #define BASE_CRYPT_SHAROT32(X, N) ((X << N) | (X >> (32 - N))) #define BASE_CRYPT_SHAFUNC_1(I) Temp = BASE_CRYPT_SHAROT32(A, 5) + BASE_CRYPT_SHAFUNC1(B, C, D) + E + W[I] + BASE_CRYPT_SHACONST1; E = D; D = C; C = BASE_CRYPT_SHAROT32(B,30); B = A; A = Temp; #define BASE_CRYPT_SHAFUNC_2(I) Temp = BASE_CRYPT_SHAROT32(A, 5) + BASE_CRYPT_SHAFUNC2(B, C, D) + E + W[I] + BASE_CRYPT_SHACONST2; E = D; D = C; C = BASE_CRYPT_SHAROT32(B,30); B = A; A = Temp; #define BASE_CRYPT_SHAFUNC_3(I) Temp = BASE_CRYPT_SHAROT32(A, 5) + BASE_CRYPT_SHAFUNC3(B, C, D) + E + W[I] + BASE_CRYPT_SHACONST3; E = D; D = C; C = BASE_CRYPT_SHAROT32(B,30); B = A; A = Temp; #define BASE_CRYPT_SHAFUNC_4(I) Temp = BASE_CRYPT_SHAROT32(A, 5) + BASE_CRYPT_SHAFUNC4(B, C, D) + E + W[I] + BASE_CRYPT_SHACONST4; E = D; D = C; C = BASE_CRYPT_SHAROT32(B,30); B = A; A = Temp; #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { ULONG Digest[5]; /* message Digest */ ULONG Data[16]; /* SHA data buffer */ } tBASE_CRYPT_SHAData; typedef struct { ULONG Left, Right; } tBASE_CRYPT_BLOWFISHBLOCK, *pBASE_CRYPT_BLOWFISHBLOCK; typedef struct { CHAR Password[57]; tBASE_CRYPT_BLOWFISHBLOCK LastBlock; ULONG PixDigitsP[BASE_CRYPT_BLOWFISHROUNDS + 2]; ULONG PixDigitsS[4][256]; tBASE_CRYPT_SHAData SHAData; } tBASE_CRYPT_CRYPTIONDATA, *pBASE_CRYPT_CRYPTIONDATA; #define RESTOREALIGNMENT #include "base/all/packprag.h" typedef struct { BOOL DoUseCurrentPassword; } tBASE_CRYPT; DECLEXT ULONG const BASE_CRYPT_PIXDIGITS[1042] #ifdef INCL_BASE_CRYPT_EXCLUSIVE = {/* P */ 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B, /* S1 */ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, 0x2DA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87901E, 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x412C7279, 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A, /* S2 */ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7, /* S3 */ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0, /* S4 */ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6} #endif ; DECLEXT tBASE_CRYPT BASE_CRYPT; void BASE_CRYPT_MakeSHA(pBASE_CRYPT_CRYPTIONDATA CryptionData); void BASE_CRYPT_InitCryptKey(pBASE_CRYPT_CRYPTIONDATA CryptionData); void BASE_CRYPT_EncryptKey(pBASE_CRYPT_BLOWFISHBLOCK DataBlock, pBASE_CRYPT_CRYPTIONDATA CryptionData); void BASE_CRYPT_DecryptBlock(pBASE_CRYPT_BLOWFISHBLOCK DataBlock); INT BASE_CRYPT_CryptLen(INT Len); void BASE_CRYPT_Decrypt(PCHAR Buf, INT Len); void BASE_CRYPT_ResetCryptKey(pBASE_CRYPT_CRYPTIONDATA CryptionData); void BASE_CRYPT_EXTERN_ResetCryptKeyUseCurrent( pBASE_CRYPT_CRYPTIONDATA CryptionData); #undef DECLEXT #endif unace-2.5/source/base/all/error/0000755000175000017500000000000007752377756017331 5ustar danieldaniel00000000000000unace-2.5/source/base/all/error/error.c0000644000175000017500000000010507157426372020606 0ustar danieldaniel00000000000000#define INCL_BASE_ERROR_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/error/error.h0000644000175000017500000000212307157426372020615 0ustar danieldaniel00000000000000#ifndef _BASE_ERROR_H_INCLUDED #define _BASE_ERROR_H_INCLUDED #ifdef INCL_BASE_ERROR_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif //------ConstantDefines: #define BASE_ERROR_NOERROR 0 #define BASE_ERROR_MEM 1 #define BASE_ERROR_FILES 2 #define BASE_ERROR_FOUND 3 #define BASE_ERROR_FULL 4 #define BASE_ERROR_OPEN 5 #define BASE_ERROR_READ 6 #define BASE_ERROR_WRITE 7 #define BASE_ERROR_CLINE 8 #define BASE_ERROR_BADCRC 9 #define BASE_ERROR_OTHER 10 #define BASE_ERROR_EXISTS 11 #define BASE_ERROR_USER 255 //------Variables: typedef struct { BOOL DiskFull, DidFailCRCCheck, DoNotHandleCancel, UNCSpaceError; INT ErrorCode, HardwareError, HardwareErrorDrive; } tBASE_ERROR; DECLEXT tBASE_ERROR BASE_ERROR; void BASE_ERROR_EXTERN_HandleCancelPROC(void); INT BASE_ERROR_EXTERN_HandleCancel(BOOL DoReadAllKeys); void BASE_ERROR_EXTERN_Init(void); #undef DECLEXT #endif unace-2.5/source/base/all/funcs/0000755000175000017500000000000007752377756017316 5ustar danieldaniel00000000000000unace-2.5/source/base/all/funcs/funcs.c0000644000175000017500000001342007736567642020575 0ustar danieldaniel00000000000000#include #include #include #include #define INCL_BASE_FUNCS_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_DIRDATA #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_EXTRACT #define INCL_BASE_FILELIST #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #include "base/all/includes.h" /*-----------------BASE_FUNCS_Copy---------------------------------------*/ void BASE_FUNCS_Copy(INT Mode) { BASE_FILELIST.DoAddFileCheckIfValidFile = !BASE_DIRDATA_IsInArchive1 && BASE_DIRDATA_IsInArchive2; if (BASE_EXTRACT.DoExtractAllVolumes && BASE_FILELIST_Create(1, 5, 1) || !BASE_EXTRACT.DoExtractAllVolumes && BASE_FILELIST_Create(1, Mode, 1)) { BASE_FUNCS_EXTERN_DoCopy(Mode); BASE_FILELIST_Done(); } else { BASE_ARCBLK_EXTERN_RemoveCreatedArchive(); } BASE_FILELIST.DoAddFileCheckIfValidFile = 0; } /*-----------------BASE_FUNCS_DeleteRealFile-----------------------------*/ INT BASE_FUNCS_DeleteRealFile(PCHAR FileName, BOOL IsOverwriteDelete) { BOOL Err; INT Input; UINT Attr; if (!BASE_LFN_GetFileAttributes(FileName, &Attr)) { if (Attr & BASE_DOSFUNCS_SUBDIR) { Err = BASE_LFN_RemoveDir(FileName); } else { if (Attr & (BASE_DOSFUNCS_RDONLY | BASE_DOSFUNCS_HIDDEN | BASE_DOSFUNCS_SYSTEM)) { if (!BASE_FUNCS.DoDeleteAll) { if (IsOverwriteDelete) { Input = BASE_FUNCS_EXTERN_RequestOverwriteSysFile(); } else { Input = BASE_FUNCS_EXTERN_MoveDeleteRealSysFileRequest(); } BASE_FUNCS.DoDeleteAll = (Input == 1); if (Input == 3) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } } if (Input && !BASE_FUNCS.DoDeleteAll) { return 1; } BASE_LFN_SetFileAttributes(FileName, BASE_DOSFUNCS_NORMAL); } Err = BASE_LFN_RemoveFile(FileName); } } if (Err && !BASE_ERROR.HardwareError) { if (IsOverwriteDelete) { BASE_ERROROUT_EXTERN_OverwriteDelete(); } else { BASE_ERROROUT_EXTERN_MoveDelete(); } return 1; } return 0; } /*-----------------BASE_FUNCS_CreatePathDirectories----------------------*/ void BASE_FUNCS_CreatePathDirectories(PCHAR FileName) { PCHAR SlashPos, NextSlashPos; tBASE_LFN_DBL CreateDir; tLFN FullDir; INT BaseLen; BASE_PATHFUNC_SplitFileName(FullDir, CreateDir, FileName); if (!FullDir[0]) { return; } if (BASE_DOSFUNCS_FileExists(FullDir)) { return; } BaseLen = BASE_PATHFUNC_GetDevicePathLen(FullDir); strncpy(CreateDir, FullDir, BaseLen); CreateDir[BaseLen] = 0; SlashPos = FullDir + BaseLen; do { if (!(NextSlashPos = strchr(SlashPos + 1, BASE_PATHFUNC_SEPARATOR))) { NextSlashPos = SlashPos + strlen(SlashPos); } strncat(CreateDir, SlashPos, NextSlashPos - SlashPos); if (!BASE_DOSFUNCS_FileExists(CreateDir) && BASE_LFN_MakeDir(CreateDir)) { BASE_ERROROUT_EXTERN_CreateDir(CreateDir); BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; } SlashPos = NextSlashPos; } while (*SlashPos); } /*-----------------BASE_FUNCS_CreateDestinationFile----------------------*/ INT BASE_FUNCS_CreateDestinationFile(INT Attr) { INT Handle, Input, Len; sprintf(BASE_STATE.DestinationFileName, "%s%s", BASE_PATHFUNC_GetDevicePathLen(BASE_STATE.CurrentFileName) ? "" : BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir2.Dir), BASE_STATE.CurrentFileName); BASE_LFN_ConvertFileName(BASE_STATE.DestinationFileName, Attr); BASE_FUNCS_CreatePathDirectories(BASE_STATE.DestinationFileName); if (Attr & BASE_DOSFUNCS_SUBDIR) { if (!BASE_DOSFUNCS_FileExists(BASE_STATE.DestinationFileName)) { if (BASE_LFN_MakeDir(BASE_STATE.DestinationFileName)) { Len = strlen(BASE_STATE.DestinationFileName); if (Len >= 4 && !strcmp(&BASE_STATE.DestinationFileName[Len - 4], "\\*.*")) { BASE_STATE.DestinationFileName[Len - 4] = 0; } BASE_ERROROUT_EXTERN_CreateDir(BASE_STATE.DestinationFileName); return -1; } } else { if (!BASE_DOSFUNCS_IsDir(BASE_STATE.DestinationFileName)) { BASE_ERROROUT_EXTERN_NameInUse(); return -1; } } BASE_LFN_SetFileAttributes(BASE_STATE.DestinationFileName, Attr); return 0; } else { if (BASE_DOSFUNCS_FileExists(BASE_STATE.DestinationFileName)) { if (!BASE_FUNCS.DoOverwriteAll) { Input = BASE_FUNCS_EXTERN_CreateDestinationFileRequestOverwrite(); BASE_FUNCS.DoOverwriteAll = (Input == 1); if (Input == 3) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } } BASE_FUNCS.DidNotCopyAll |= (Input = (Input && !BASE_FUNCS.DoOverwriteAll || BASE_FUNCS_DeleteRealFile(BASE_STATE.DestinationFileName, 1))); if (Input) { return -2; } } if (-1 == (Handle = BASE_LFN_Open(BASE_STATE.DestinationFileName, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, #ifndef __unix__ 0755))) #else 0644))) // Usually ACE compressed files for UNIX are not executable #endif { BASE_ERROROUT_EXTERN_CreateFile(); } return Handle; } } unace-2.5/source/base/all/funcs/funcs.h0000644000175000017500000000164007157426372020572 0ustar danieldaniel00000000000000#ifndef _BASE_FUNCS_H_INCLUDED #define _BASE_FUNCS_H_INCLUDED #ifdef INCL_BASE_FUNCS_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL DidNotCopyAll, DoOverwriteAll, DoDeleteAll; } tBASE_FUNCS; DECLEXT tBASE_FUNCS BASE_FUNCS; void BASE_FUNCS_Copy(INT Mode); INT BASE_FUNCS_DeleteRealFile(PCHAR FileName, BOOL IsOverwriteDelete); void BASE_FUNCS_Delete(BOOL DoNotAsk); void BASE_FUNCS_CreatePathDirectories(PCHAR FileName); INT BASE_FUNCS_CreateDestinationFile(INT Attr); void BASE_FUNCS_EXTERN_DoCopy(INT Mode); BOOL BASE_FUNCS_EXTERN_RequestOverwriteSysFile(void); INT BASE_FUNCS_EXTERN_MoveDeleteRealSysFileRequest(void); BOOL BASE_FUNCS_EXTERN_CreateDestinationFileRequestOverwrite(void); void BASE_FUNCS_EXTERN_RemoveCreatedArchive(void); #undef DECLEXT #endif unace-2.5/source/base/all/dosfuncs/0000755000175000017500000000000007752377756020024 5ustar danieldaniel00000000000000unace-2.5/source/base/all/dosfuncs/dosfuncs.c0000644000175000017500000000323507761567032022003 0ustar danieldaniel00000000000000 #include #include #include #define INCL_BASE_DOSFUNCS_EXCLUSIVE #define INCL_BASE_CONVERT #define INCL_BASE_LFN #define INCL_BASE_MEMORY #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #include "base/all/includes.h" /*-----------------BASE_DOSFUNCS_SetDir----------------------------------*/ void BASE_DOSFUNCS_SetDir(PCHAR Dir) { tLFN SystemDir; if (Dir[1] == ':') { BASE_DOSFUNCS_SetDrive(BASE_CONVERT_UpCase(Dir[0]) - 'A'); } strcpy(SystemDir, Dir); BASE_PATHFUNC_ToSystemPathSeparatorN(SystemDir, strlen(SystemDir)); BASE_LFN_ChangeDir(SystemDir); } /*-----------------BASE_DOSFUNCS_FileExists------------------------------*/ BOOL BASE_DOSFUNCS_FileExists(PCHAR FileName) { struct stat StatBuf; return !stat(BASE_LFN_ShortName(FileName), &StatBuf) && !strpbrk((PCHAR) FileName, "?*") && FileName[0]; } /*-----------------BASE_DOSFUNCS_GetDrive--------------------------------*/ INT BASE_DOSFUNCS_GetDrive(void) { tLFN Directory; getcwd(Directory, sizeof(Directory)); return Directory[0] >= 'a' ? Directory[0] - 'a' : Directory[0] - 'A'; } /*-----------------BASE_DOSFUNCS_CalcFileTime----------------------------*/ tBASE_DOSFUNCS_FileTime BASE_DOSFUNCS_CalcFileTime(ULONG MSDOSTime) { tBASE_DOSFUNCS_FileTime Time; Time.Second = ((MSDOSTime >> 0) & 31) << 1; Time.Minute = (MSDOSTime >> 5) & 63; Time.Hour = (MSDOSTime >> 11) & 31; Time.Day = (MSDOSTime >> 16) & 31; Time.Month = (MSDOSTime >> 21) & 15; Time.Year = (MSDOSTime >> 25) & 127; /* since 1980 */ return Time; } unace-2.5/source/base/all/dosfuncs/dosfuncs.h0000644000175000017500000000577507752432704022020 0ustar danieldaniel00000000000000#ifndef _BASE_DOSFUNCS_H_INCLUDED #define _BASE_DOSFUNCS_H_INCLUDED #define BASE_DOSFUNCS_NORMAL 0x00 #define BASE_DOSFUNCS_RDONLY 0x01 #define BASE_DOSFUNCS_HIDDEN 0x02 #define BASE_DOSFUNCS_SYSTEM 0x04 #define BASE_DOSFUNCS_VOLID 0x08 #define BASE_DOSFUNCS_SUBDIR 0x10 #define BASE_DOSFUNCS_ARCH 0x20 #define BASE_DOSFUNCS_COMPRESSED 0x800 #ifdef __unix__ #define BASE_DOSFUNCS_NULLDEVICE "/dev/null" #else #define BASE_DOSFUNCS_NULLDEVICE "NUL" #endif #ifndef FINDI64_DEFINED struct findi64_t { char reserved[21]; /* reserved for use by DOS */ char attrib; /* attribute byte for file */ unsigned short wr_time; /* time of last write to file */ unsigned short wr_date; /* date of last write to file */ __int64 size; /* length of file in bytes */ char name[260]; /* null-terminated filename */ char SearchMask[260]; /* null-terminated search mask */ }; #endif #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { UINT Second:5; UINT Minute:6; UINT Hour:5; UINT Day:5; UINT Month:4; UINT Year:7; } tBASE_DOSFUNCS_FileTime, *pBASE_DOSFUNCS_FileTime; #define RESTOREALIGNMENT #include "base/all/packprag.h" void BASE_DOSFUNCS_SetDir(PCHAR Dir); BOOL BASE_DOSFUNCS_FileExists(PCHAR FileName); INT BASE_DOSFUNCS_GetDrive(void); void BASE_DOSFUNCS_SetDrive(INT Drive); void BASE_DOSFUNCS_SetFileTime(PCHAR FileName, INT Handle, ULONG MSDOSTime); tBASE_DOSFUNCS_FileTime BASE_DOSFUNCS_CalcFileTime(ULONG MSDOSTime); void BASE_DOSFUNCS_SetDrive(INT Drive); LONGLONG BASE_DOSFUNCS_LSeek(INT Handle, LONGLONG Offset, INT Origin); LONGLONG BASE_DOSFUNCS_Tell(INT Handle); BOOL BASE_DOSFUNCS_IsChSizeSupported(void); LONGLONG BASE_DOSFUNCS_ChSize(INT Handle, LONGLONG Size); INT BASE_DOSFUNCS_ShareOpen(PCHAR Path, INT Access, BOOL WriteAccess, INT Permission); UINT BASE_DOSFUNCS_GetFileAttributes(PCHAR Path, PUINT Attr); UINT BASE_DOSFUNCS_SetFileAttributes(PCHAR Path, UINT Attr); UINT BASE_DOSFUNCS_GetCompressedFileAttributeByHandle(INT hFile); void BASE_DOSFUNCS_GetFileSecurity(PCHAR FileName, PCHAR *Security, PUINT Size); void BASE_DOSFUNCS_SetFileSecurity(PCHAR FileName, PCHAR Security); void BASE_DOSFUNCS_Initialize(void); UINT BASE_DOSFUNCS_GetFileTime(INT Handle, PUSHORT Date, PUSHORT Time); BOOL BASE_DOSFUNCS_IsDir(PCHAR Path); void BASE_DOSFUNCS_EXTERN_CopyFileInfoBegin(PCHAR TargetFileName, PCHAR SourceFileName); #ifndef FINDI64_DEFINED UINT _dos_findfirsti64(CHAR *Path, UINT Attr, struct findi64_t *Bufi64); UINT _dos_findnexti64( struct findi64_t *Bufi64); UINT _dos_findclosei64( struct findi64_t *Bufi64); LONGLONG _filelengthi64(INT Handle); #endif #endif unace-2.5/source/base/all/dosfuncs/noi64.c0000644000175000017500000000104007752433710021101 0ustar danieldaniel00000000000000#ifdef __HAS_IO_H__ #include #endif #include #include #define INCL_BASE_DOSFUNCS #include "base/all/includes.h" /*-----------------BASE_DOSFUNCS_LSeek-----------------------------------*/ LONGLONG BASE_DOSFUNCS_LSeek(INT Handle, LONGLONG Offset, INT Origin) { return lseek(Handle, (INT)Offset, Origin); } /*-----------------BASE_DOSFUNCS_Tell------------------------------------*/ LONGLONG BASE_DOSFUNCS_Tell(INT Handle) { return lseek(Handle, 0, SEEK_CUR); } unace-2.5/source/base/all/dosfuncs/noi64lin.c0000644000175000017500000000073007752433760021616 0ustar danieldaniel00000000000000#ifdef __HAS_IO_H__ #include #endif #include #define INCL_BASE_DOSFUNCS #include "base/all/includes.h" /*-----------------BASE_DOSFUNCS_IsChSizeSupported-----------------------*/ BOOL BASE_DOSFUNCS_IsChSizeSupported(void) { return 1; } /*-----------------BASE_DOSFUNCS_ChSize----------------------------------*/ LONGLONG BASE_DOSFUNCS_ChSize(INT Handle, LONGLONG Size) { return ftruncate(Handle , Size); } unace-2.5/source/base/all/dosfuncs/lin.c0000644000175000017500000001312207764730260020733 0ustar danieldaniel00000000000000#include #include #include #include #include #include #include #include #ifdef __HAS_IO_H__ #include #endif #if defined(__MACOSX__) #include #endif #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_PATHFUNC #include "base/all/includes.h" /*-----------------_dos_findfirsti64-------------------------------------*/ UINT _dos_findfirsti64(CHAR *Path, UINT Attr, struct findi64_t *Bufi64) { DIR *DirStruc; struct stat StatBuf; tLFN DirToOpen, SearchMask; PCHAR ChPtr; if (stat(BASE_LFN_ShortName(Path), &StatBuf)) { return 1; } else { strcpy(DirToOpen, Path); if (!(StatBuf.st_mode & S_IFDIR)) { BASE_PATHFUNC_CompletePath(DirToOpen); if (ChPtr = strrchr(DirToOpen, BASE_PATHFUNC_SEPARATOR)) { strcpy(SearchMask, ChPtr + 1); if (ChPtr == DirToOpen) { ChPtr++; } *ChPtr = 0; } else { return 1; } } else { strcpy(SearchMask, "*"); } if ((DirStruc = opendir(DirToOpen)) == NULL) { return 1; } else { *(DIR**) &Bufi64->reserved[0] = DirStruc; strcpy(Bufi64->SearchMask, SearchMask); return _dos_findnexti64(Bufi64); } } } /*-----------------_dos_findnexti64--------------------------------------*/ UINT _dos_findnexti64(struct findi64_t *Bufi64) { DIR *Dir; struct dirent *Ent; Dir = *(DIR**) &Bufi64->reserved[0]; while (1) { if ((Ent = readdir(Dir)) == NULL) { return 1; } else { if (BASE_PATHFUNC_WildCardCheck(Ent->d_name, Bufi64->SearchMask)) { memcpy(Bufi64, Dir, sizeof(Dir)); Bufi64->size = 0;//_filelengthi64(Dir->dd_handle); strcpy(Bufi64->name, Ent->d_name); *(DIR**) &Bufi64->reserved[0] = Dir; return 0; } } } } /*-----------------_dos_findclosei64-------------------------------------*/ UINT _dos_findclosei64( struct findi64_t *Bufi64) { return closedir(*(DIR**) &Bufi64->reserved[0]); } /*-----------------_filelengthi64----------------------------------------*/ LONGLONG _filelengthi64(INT Handle) { LONGLONG OldPos, EndPos; OldPos = lseek(Handle, 0, SEEK_CUR); EndPos = lseek(Handle, 0, SEEK_END); lseek(Handle, OldPos, SEEK_SET); return EndPos; } /*-----------------BASE_DOSFUNCS_IsDir-----------------------------------*/ BOOL BASE_DOSFUNCS_IsDir(PCHAR Name) { struct stat StatBuf; if (!stat(BASE_LFN_ShortName(Name), &StatBuf)) { return !(StatBuf.st_mode & S_IFDIR); } return 0; } /*-----------------BASE_DOSFUNCS_SetFileTime-----------------------------*/ void BASE_DOSFUNCS_SetFileTime(PCHAR FileName, INT Handle, ULONG MSDOSTime) { struct utimbuf UTimeBuf; struct tm TimeTM; TimeTM.tm_sec = ((MSDOSTime >> 0) & 31) << 1; TimeTM.tm_min = (MSDOSTime >> 5) & 63; TimeTM.tm_hour = (MSDOSTime >> 11) & 31; TimeTM.tm_mday = (MSDOSTime >> 16) & 31; TimeTM.tm_mon = (MSDOSTime >> 21) & 15; TimeTM.tm_year = 80 + ((MSDOSTime >> 25) & 127); TimeTM.tm_isdst = -1; // divine, if tm_hour is summer or winter time UTimeBuf.modtime = UTimeBuf.actime = mktime(&TimeTM); utime(FileName, &UTimeBuf); } /*-----------------BASE_DOSFUNCS_SetDrive--------------------------------*/ void BASE_DOSFUNCS_SetDrive(INT Drive) { tLFN Directory; Directory[0] = 'A' + Drive; Directory[1] = ':'; Directory[2] = 0; chdir(Directory); if (BASE_DOSFUNCS_GetDrive() != Drive) { BASE_ERROR.HardwareError = 2; BASE_ERROR.HardwareErrorDrive = Drive; } } /*-----------------BASE_DOSFUNCS_ShareOpen-------------------------------*/ INT BASE_DOSFUNCS_ShareOpen(PCHAR Path, INT Access, BOOL WriteAccess, INT Permission) { return open(Path, Access, Permission); } /*-----------------BASE_DOSFUNCS_GetFileAttributes-----------------------*/ UINT BASE_DOSFUNCS_GetFileAttributes(PCHAR Path, PUINT Attr) { struct stat StatBuf; if (stat(BASE_LFN_ShortName(Path), &StatBuf) == 0) { *Attr = 0; if (!(StatBuf.st_mode & S_IWUSR)) { *Attr |= BASE_DOSFUNCS_RDONLY; } if (StatBuf.st_mode & S_IFDIR) { *Attr |= BASE_DOSFUNCS_SUBDIR; } return 0; } else { return 1; // error! } } /*-----------------BASE_DOSFUNCS_SetFileAttributes-----------------------*/ UINT BASE_DOSFUNCS_SetFileAttributes(PCHAR Path, UINT Attr) { struct stat StatBuf; if (Attr & BASE_DOSFUNCS_RDONLY) { if (!stat(BASE_LFN_ShortName(Path), &StatBuf)) { chmod(Path, StatBuf.st_mode & 0555); } } return 0; } /*-----------------BASE_DOSFUNCS_GetFileTime-----------------------------*/ UINT BASE_DOSFUNCS_GetFileTime(INT Handle, PUSHORT Date, PUSHORT Time) { return 1; // error! } /*-----------------BASE_DOSFUNCS_Initialize------------------------------*/ void BASE_DOSFUNCS_Initialize(void) { } /*-----------------BASE_DOSFUNCS_GetFileSecurity------------------------*/ void BASE_DOSFUNCS_GetFileSecurity(PCHAR FileName, PCHAR *Security, PUINT Size) { *Size = 0; *Security = NULL; } /*-----------------BASE_DOSFUNCS_SetFileSecurity------------------------*/ void BASE_DOSFUNCS_SetFileSecurity(PCHAR FileName, PCHAR Security) { } unace-2.5/source/base/all/qsort/0000755000175000017500000000000007752377756017350 5ustar danieldaniel00000000000000unace-2.5/source/base/all/qsort/c/0000755000175000017500000000000007752377756017572 5ustar danieldaniel00000000000000unace-2.5/source/base/all/qsort/c/qsort.c0000644000175000017500000000406507157426372021077 0ustar danieldaniel00000000000000/*-----------------BASE_QSORT_XchgElements-------------------------------*/ void BASE_QSORT_XchgElements(PUSHORT Var1, PUSHORT Var2) { USHORT Dummy; Dummy = *Var1; *Var1 = *Var2; *Var2 = Dummy; } /*-----------------BASE_QSORT_SortRange----------------------------------*/ void BASE_QSORT_SortRange(INT Left, INT Right) { INT NewLeft, NewRight; NewLeft = Left; NewRight = Right; BASE_QSORT.Hyphen = BASE_QSORT.Frequencies[Right]; do { while (BASE_QSORT.Frequencies[NewLeft] > BASE_QSORT.Hyphen) { NewLeft++; } while (BASE_QSORT.Frequencies[NewRight] < BASE_QSORT.Hyphen) { NewRight--; } if (NewLeft <= NewRight) { BASE_QSORT_XchgElements(&BASE_QSORT.Frequencies[NewLeft], &BASE_QSORT.Frequencies[NewRight]); BASE_QSORT_XchgElements(&BASE_QSORT.Elements[NewLeft], &BASE_QSORT.Elements[NewRight]); NewLeft++; NewRight--; } } while (NewLeft < NewRight); if (Left < NewRight) { if (Left < NewRight - 1) { BASE_QSORT_SortRange(Left, NewRight); } else { if (BASE_QSORT.Frequencies[Left] < BASE_QSORT.Frequencies[NewRight]) { BASE_QSORT_XchgElements(&BASE_QSORT.Frequencies[Left], &BASE_QSORT.Frequencies[NewRight]); BASE_QSORT_XchgElements(&BASE_QSORT.Elements[Left], &BASE_QSORT.Elements[NewRight]); } } } if (Right > NewLeft) { if (NewLeft < Right - 1) { BASE_QSORT_SortRange(NewLeft, Right); } else { if (BASE_QSORT.Frequencies[NewLeft] < BASE_QSORT.Frequencies[Right]) { BASE_QSORT_XchgElements(&BASE_QSORT.Frequencies[NewLeft], &BASE_QSORT.Frequencies[Right]); BASE_QSORT_XchgElements(&BASE_QSORT.Elements[NewLeft], &BASE_QSORT.Elements[Right]); } } } } unace-2.5/source/base/all/qsort/qsort.c0000644000175000017500000000073007157426372020650 0ustar danieldaniel00000000000000#define INCL_BASE_QSORT_EXCLUSIVE #include "base/all/includes.h" #ifdef USE_ASM #include "base/all/qsort/asm/qsort.c" #else #include "base/all/qsort/c/qsort.c" #endif /*-----------------BASE_QSORT_DoQuicksort--------------------------------*/ void BASE_QSORT_DoQuicksort(INT NumberOfElements) { INT I; for (I = NumberOfElements + 1; I--;) { BASE_QSORT.Elements[I] = I; } BASE_QSORT_SortRange(0, NumberOfElements); } unace-2.5/source/base/all/qsort/qsort.h0000644000175000017500000000122507704243562020651 0ustar danieldaniel00000000000000#ifndef _BASE_QSORT_H_INCLUDED #define _BASE_QSORT_H_INCLUDED #include "base/all/cprdcpr/huff/huff.h" #ifdef INCL_BASE_QSORT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { INT Hyphen; USHORT Elements [BASE_CPRDCPR_HUFF_MAXCODE + 2], Frequencies[(BASE_CPRDCPR_HUFF_MAXCODE + 2) * 2]; } tBASE_QSORT; DECLEXT tBASE_QSORT BASE_QSORT; void BASE_QSORT_SortRange(INT Left, INT Right); void BASE_QSORT_DoQuicksort(INT Elements); #ifndef USE_ASM void BASE_QSORT_XchgElements(PUSHORT Var1, PUSHORT Var2); #endif #undef DECLEXT #endif unace-2.5/source/base/all/state/0000755000175000017500000000000007752377756017320 5ustar danieldaniel00000000000000unace-2.5/source/base/all/state/state.c0000644000175000017500000000622607157426372020576 0ustar danieldaniel00000000000000#include #define INCL_BASE_STATE_EXCLUSIVE #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #include "base/all/includes.h" /*-----------------BASE_STATE_WriteFile----------------------------------*/ INT BASE_STATE_WriteFile(INT Handle, PVOID Buf, INT Len, BOOL IsUncompressedSize) { INT Wrote; if (Len) { BASE_STATE_OutputProgress(0, Len, IsUncompressedSize ? Len : 0, 0, 0); } errno = 0; Wrote = write(Handle, Buf, Len); if ((Wrote != Len) || errno) { BASE_ERROR.ErrorCode = BASE_ERROR_READ; errno = 12; } return Wrote; } /*-----------------BASE_STATE_TestOnly-----------------------------------*/ void BASE_STATE_TestOnly(INT Len, BOOL IsUncompressedSize) { if (Len) { BASE_STATE_OutputProgress(0, Len, IsUncompressedSize ? Len : 0, 0, 0); } } /*-----------------BASE_STATE_OutputProgress-----------------------------*/ void BASE_STATE_OutputProgress(INT ReadBytes, INT WriteBytes, INT UnCprBytes, INT CprBytes, INT Attributes) { BOOL DoInit, IsFileStart; if (BASE_ERROR.ErrorCode) { return; } IsFileStart = !ReadBytes && !WriteBytes && !UnCprBytes && Attributes!=-1; DoInit = !BASE_STATE.IsInitialized; if (DoInit) { BASE_STATE.IsInitialized = 1; BASE_STATE.SavedUnComprBytes = BASE_STATE.SavedComprBytes = BASE_STATE.TotalUnComprBytes = BASE_STATE.TotalComprBytes = BASE_STATE.ReadBytes = BASE_STATE.WriteBytes = BASE_STATE.DirCount = BASE_STATE.FileCount = BASE_STATE.SkipSize = 0; } if (IsFileStart) { BASE_STATE.SavedUnComprBytes = BASE_STATE.SummaryUnComprBytes; BASE_STATE.SavedComprBytes = BASE_STATE.SummaryComprBytes; BASE_STATE.TotalUnComprBytes += BASE_STATE.SkipSize; BASE_STATE.SkipSize = BASE_STATE.NewSkipSize; if (!BASE_STATE.DoNotCount) { BASE_STATE.SummaryFileCount += !(Attributes & BASE_DOSFUNCS_SUBDIR); } BASE_STATE.FileCount += !(Attributes & BASE_DOSFUNCS_SUBDIR); BASE_STATE.DirCount += ((Attributes & BASE_DOSFUNCS_SUBDIR) != 0); BASE_STATE.FileUnComprBytes = BASE_STATE.FileComprBytes = 0; } BASE_STATE.ReadBytes += ReadBytes; BASE_STATE.WriteBytes += WriteBytes; if (BASE_STATE.SkipSize) { BASE_STATE.TotalUnComprBytes += UnCprBytes; BASE_STATE.SkipSize -= UnCprBytes; } if (!BASE_STATE.DoNotCount) { BASE_STATE.SummaryUnComprBytes += UnCprBytes; BASE_STATE.SummaryComprBytes += CprBytes; } BASE_STATE.FileUnComprBytes += UnCprBytes; BASE_STATE.FileComprBytes += CprBytes; BASE_STATE.TotalComprBytes += CprBytes; BASE_STATE_EXTERN_OutputProgressEnd(DoInit,IsFileStart); } /*-----------------BASE_STATE_OutputCRCOk--------------------------------*/ void BASE_STATE_OutputCRCOk(BOOL CRCIsOk) { if (BASE_ERROR.ErrorCode) { return; } BASE_STATE_EXTERN_OutputCRCOkEnd(CRCIsOk); } unace-2.5/source/base/all/state/state.h0000644000175000017500000000351707704243566020603 0ustar danieldaniel00000000000000#ifndef _BASE_STATE_H_INCLUDED #define _BASE_STATE_H_INCLUDED #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_STATE_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL IsInitialized, DoNotCount; tLFN CurrentFileName; tBASE_LFN_DBL DestinationFileName; ULONG StartTime, FileCount, SummaryFileCount, DirCount; ULONGLONG FileSize, NewSkipSize, SkipSize, TotalUnComprBytes, TotalComprBytes, SummaryUnComprBytes, SummaryComprBytes, SavedUnComprBytes, SavedComprBytes, FileUnComprBytes, FileComprBytes, ReadBytes, WriteBytes; INT SumProcessedFiles, SumErrors; } tBASE_STATE; DECLEXT tBASE_STATE BASE_STATE; INT BASE_STATE_WriteFile(INT Handle, PVOID Buf, INT Len, BOOL IsUncompressedSize); void BASE_STATE_TestOnly(INT Len, BOOL IsUncompressedSize); void BASE_STATE_OutputProgress(INT ReadBytes, INT WriteBytes, INT UnCprBytes, INT CprBytes, INT Attributes); void BASE_STATE_OutputCRCOk(BOOL CRCIsOk); void BASE_STATE_EXTERN_IsCRCOk(PBOOL IsCRCOk, BOOL IsEncrypted); void BASE_STATE_EXTERN_OutputProgressData(PCHAR Buf, INT Bytes); void BASE_STATE_EXTERN_OutputProcess(PCHAR OperationStr, PCHAR FileName, BOOL IsImportant); void BASE_STATE_EXTERN_SetExtractString(void); void BASE_STATE_EXTERN_SetTestString(void); void BASE_STATE_EXTERN_OutputProgressEnd(BOOL DoInit, BOOL IsFileStart); void BASE_STATE_EXTERN_OutputCRCOkEnd(BOOL CRCIsOk); #undef DECLEXT #endif unace-2.5/source/base/all/errorout/0000755000175000017500000000000007752377756020061 5ustar danieldaniel00000000000000unace-2.5/source/base/all/errorout/errorout.c0000644000175000017500000000011007157426372022062 0ustar danieldaniel00000000000000#define INCL_BASE_ERROROUT_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/errorout/errorout.h0000644000175000017500000000176707157426372022112 0ustar danieldaniel00000000000000#ifndef _BASE_ERROROUT_H_INCLUDED #define _BASE_ERROROUT_H_INCLUDED void BASE_ERROROUT_EXTERN_IsNotCompatible(void); void BASE_ERROROUT_EXTERN_BrokenArchive(void); void BASE_ERROROUT_EXTERN_Write(void); void BASE_ERROROUT_EXTERN_OpenArchiveRead(void); void BASE_ERROROUT_EXTERN_IsNotArchive(void); void BASE_ERROROUT_EXTERN_ManyFilesError(void); void BASE_ERROROUT_EXTERN_NoFiles(void); void BASE_ERROROUT_EXTERN_UnknownMethod(void); void BASE_ERROROUT_EXTERN_Mem(void); void BASE_ERROROUT_EXTERN_ExtractMem(void); void BASE_ERROROUT_EXTERN_ExcludePath(void); void BASE_ERROROUT_EXTERN_ExtractSpace(void); void BASE_ERROROUT_EXTERN_OverwriteDelete(void); void BASE_ERROROUT_EXTERN_MoveDelete(void); void BASE_ERROROUT_EXTERN_CreateDir(PCHAR Dir); void BASE_ERROROUT_EXTERN_NameInUse(void); void BASE_ERROROUT_EXTERN_CreateFile(void); void BASE_ERROROUT_EXTERN_AVBroken(void); void BASE_ERROROUT_EXTERN_ReadArchive(void); #endif unace-2.5/source/base/all/declare.h0000644000175000017500000000436607166051146017736 0ustar danieldaniel00000000000000/**************************************************************************/ /* */ /* declare.h: declaration-symbols (uchar, ulong...;and their size */ /* */ /**************************************************************************/ #ifndef _DECLARE_H_INCLUDED #define _DECLARE_H_INCLUDED #if !defined(__OS2__) && !defined(_WINDOWS_) typedef int BOOL; typedef char CHAR; typedef unsigned char UCHAR; typedef UCHAR *PUCHAR; typedef char *PSZ; typedef short SHORT; typedef unsigned short USHORT; typedef USHORT *PUSHORT; typedef long LONG; typedef unsigned long ULONG; typedef ULONG *PULONG; typedef int INT; typedef unsigned int UINT; typedef unsigned int *PUINT; typedef CHAR *LPSTR; #endif #if __WATCOMC__==1060 typedef long __int64[2]; typedef __int64 LONGLONG; typedef LONGLONG *PLONGLONG; typedef __int64 ULONGLONG; typedef ULONGLONG DWORDLONG; #else #if !defined(_WINDOWS_) #if !defined(__WATCOMC__) && !defined(__int64) #define __int64 long long #endif typedef __int64 LONGLONG; typedef LONGLONG *PLONGLONG; typedef unsigned __int64 ULONGLONG; typedef ULONGLONG DWORDLONG; #endif #endif #if !defined(_WINDOWS_) typedef BOOL *PBOOL; typedef INT *PINT; #endif #if !defined(__wtypes_h__) typedef void *PVOID; typedef CHAR *PCHAR; typedef SHORT *PSHORT; typedef LONG *PLONG; typedef ULONGLONG *PULONGLONG; #endif #if defined(_GNU_H_WINDOWS32_BASE) typedef LONGLONG ULONGLONG; typedef ULONGLONG *PULONGLONG; #endif typedef signed char SCHAR; #ifndef NULL #if defined(__SMALL__) || defined(__MEDIUM__) || defined(__386__) || defined(__AXP__) || defined(__PPC__) #define NULL 0 #else #define NULL 0L #endif #endif #endif unace-2.5/source/base/all/filelist/0000755000175000017500000000000007752377756020013 5ustar danieldaniel00000000000000unace-2.5/source/base/all/filelist/filelist.c0000644000175000017500000002671207736567642021777 0ustar danieldaniel00000000000000#include #include #include #define INCL_BASE_FILELIST_EXCLUSIVE #define INCL_BASE_ARCHIVES_READ #define INCL_BASE_CONVERT #define INCL_BASE_DIRDATA #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_MEMORY #define INCL_BASE_MSGOUT #define INCL_BASE_PATHFUNC #define INCL_BASE_VOLUME #include "base/all/includes.h" /*-----------------BASE_FILELIST_RemoveDrive-----------------------------*/ PCHAR BASE_FILELIST_RemoveDrive(PCHAR Path) { return Path + BASE_PATHFUNC_GetDevicePathLen(Path); } /*-----------------BASE_FILELIST_Check-----------------------------------*/ PCHAR BASE_FILELIST_Check(PCHAR FileName) { PCHAR ListPosition, ListPosition2; if (BASE_CONVERT_StrNICmp(BASE_FILELIST.AddDir, FileName, strlen(BASE_FILELIST.AddDir))) { return NULL; } ListPosition = BASE_FILELIST.List; while (ListPosition != BASE_FILELIST.Last) { ListPosition2 = strchr(FileName, ':') ? ListPosition : BASE_FILELIST_RemoveDrive(ListPosition); if (!BASE_CONVERT_StrICmp(ListPosition2, FileName) || /*strpbrk(ListPosition2, "*?") //if added, directory expressions without wildcards will not be understood &&*/ BASE_PATHFUNC_WildCardCheck(ListPosition2, FileName)) { return ListPosition; } ListPosition += BASE_FILELIST_ListStrLen(ListPosition); } return NULL; } /*-----------------BASE_FILELIST_ListStrLen------------------------------*/ INT BASE_FILELIST_ListStrLen(PCHAR FileName) { return strlen((PCHAR) FileName) + 1; } /*-----------------BASE_FILELIST_CheckExclusion--------------------------*/ PCHAR BASE_FILELIST_CheckExclusion(PCHAR FileName) { PCHAR ListPosition; ListPosition = BASE_FILELIST.SearchExcludeList; while (ListPosition != BASE_FILELIST.SearchExcludeListEnd) { ListPosition = BASE_FILELIST_RemoveDrive(ListPosition); if (BASE_PATHFUNC_WildCardCheck(ListPosition, FileName)) { return ListPosition; } ListPosition += BASE_FILELIST_ListStrLen(ListPosition); } return NULL; } /*-----------------BASE_FILELIST_AddCheck--------------------------------*/ INT BASE_FILELIST_AddCheck(PCHAR FileName) { PCHAR ListPosition; if (BASE_ERROR_EXTERN_HandleCancel(1)) { return 1; } ListPosition = BASE_FILELIST.List; while (ListPosition != BASE_FILELIST.Last) { if (!BASE_CONVERT_StrICmp(ListPosition, FileName)) { return 1; } ListPosition += BASE_FILELIST_ListStrLen(ListPosition); } return 0; } /*-----------------BASE_FILELIST_Dir2FileTime----------------------------*/ LONG BASE_FILELIST_Dir2FileTime(PCHAR FileName) { tLFN Path; if (BASE_DIRDATA_IsInArchive2) { return 0; } else { sprintf(Path, "%s%s", BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir2.Dir), FileName); return BASE_LFN_GetFileTime(Path); } } /*-----------------BASE_FILELIST_AddFile---------------------------------*/ void BASE_FILELIST_AddFile(PCHAR FileName, ULONGLONG FileSize, ULONG FileTime, INT Attr) { BOOL SavedDoRecurseSubDirectories; UINT FreshFileTime; PCHAR ExtensionPos; tBASE_LFN_DBL CompareFileName1, CompareFileName2; SavedDoRecurseSubDirectories = BASE_FILELIST.DoRecurseSubDirectories; BASE_FILELIST.DoRecurseSubDirectories = 0; if (BASE_FILELIST.DoAddFileCheckIfFileIsInList && BASE_FILELIST_AddCheck(FileName)) { goto RETURN; } strcpy(CompareFileName2, FileName); if (BASE_DIRDATA_Dir1.IsMultiVol && (ExtensionPos = strrchr(FileName, '.')) > strrchr(FileName, BASE_PATHFUNC_SEPARATOR)) { ExtensionPos++; if ((BASE_CONVERT_UpCase(*ExtensionPos) == 'C' || in(*ExtensionPos, '0', '9')) && in(*(ExtensionPos + 1), '0', '9') && in(*(ExtensionPos + 2), '0', '9')) { BASE_VOLUME_GetVolumeName(CompareFileName2, CompareFileName2, 0, -1000, BASE_DIRDATA_Dir1.IsSFX); } } if (BASE_FILELIST.DoAddFileCheckIfValidFile) { if (!strchr(CompareFileName2, ':') && CompareFileName2[0] != BASE_PATHFUNC_SEPARATOR) { BASE_CONVERT_StrCatBefore( BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir1.Dir), CompareFileName2); } sprintf(CompareFileName1, "%s%s", BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir2.Dir), BASE_DIRDATA_Dir2.ArchiveName); BASE_LFN_ExtendPath(CompareFileName1, BASE_LFN_MAXLEN); BASE_LFN_ExtendPath(CompareFileName2, BASE_LFN_MAXLEN); if (!BASE_CONVERT_StrICmp(CompareFileName1, CompareFileName2) || BASE_FILELIST_EXTERN_CommandLineCheck(FileName, CompareFileName1, CompareFileName2)) { goto RETURN; } } if (BASE_FILELIST_CheckExclusion(FileName) || BASE_FILELIST_EXTERN_AddFileMoveCheck(FileName)) { goto RETURN; } if (!BASE_DIRDATA_IsInArchive2 && (BASE_FILELIST.AddMode == 2 || BASE_FILELIST.AddMode == 3)) { FreshFileTime = BASE_FILELIST_Dir2FileTime(FileName); if (BASE_FILELIST.AddMode == 2 && (!FreshFileTime || FreshFileTime >= FileTime)) { goto RETURN; } if (BASE_FILELIST.AddMode == 3 && FreshFileTime >= FileTime) { goto RETURN; } } if ((BASE_FILELIST.Last + BASE_FILELIST_ListStrLen(FileName)) - BASE_FILELIST.List > BASE_MEMORY_Size(BASE_FILELIST.List)) { BASE_ERROROUT_EXTERN_ManyFilesError(); goto RETURN; } strcpy(BASE_FILELIST.Last, FileName); BASE_FILELIST.Last += BASE_FILELIST_ListStrLen(FileName); if (BASE_FILELIST.ListFileData) { if (BASE_FILELIST.Number > BASE_FILELIST.MaxNumber) { BASE_ERROROUT_EXTERN_ManyFilesError(); } else { BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Size = FileSize; BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Time = BASE_DOSFUNCS_CalcFileTime(FileTime); if ((BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Attr = Attr) & BASE_FILELIST_SUBDIR) { BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Size = 0; } } } BASE_FILELIST.Number++; if (!(BASE_DIRDATA_IsInArchive1 && BASE_DIRDATA_Dir1.IsMultiVol)) { BASE_FILELIST.SizeOfFiles += FileSize; if (BASE_DIRDATA_IsInArchive1 && BASE_DIRDATA_Dir1.IsSolid) { BASE_FILELIST.SizeOfFiles += BASE_FILELIST.SkippedSize; } } BASE_MSGOUT_EXTERN_ListAddingFile(FileName); RETURN: BASE_FILELIST.DoRecurseSubDirectories = SavedDoRecurseSubDirectories; } /*-----------------BASE_FILELIST_Init------------------------------------*/ void BASE_FILELIST_Init(void) { INT BufSize; BufSize = BASE_MEMORY_MemAvailBase2(2); if (!(BASE_FILELIST.Pos= BASE_FILELIST.Last = BASE_FILELIST.List = (PCHAR) BASE_MEMORY_GetMem(BufSize))) { return; } if (!(BASE_FILELIST.ListFileData = (pBASE_FILELIST_FileData) BASE_MEMORY_GetMemBase2(&BufSize, 1))) { BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.List); return; } BASE_FILELIST.MaxNumber = BufSize / sizeof(tBASE_FILELIST_FileData); BASE_FILELIST.Number = 0; } /*-----------------BASE_FILELIST_Done------------------------------------*/ void BASE_FILELIST_Done(void) { BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.List); BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.ListFileData); BASE_MEMORY_Optimize(); } /*-----------------BASE_FILELIST_Create----------------------------------*/ INT BASE_FILELIST_Create(BOOL DoAddDirFirst, INT Mode, BOOL DoOutputNoFilesError) { PVOID SavedScreenPtr; BASE_MSGOUT_EXTERN_ListCreateBegin(&SavedScreenPtr); BASE_FILELIST.AddMode = Mode; BASE_FILELIST.SkippedSize = BASE_FILELIST.SizeOfFiles = 0; BASE_FILELIST_Init(); BASE_FILELIST_EXTERN_CreateProc(DoAddDirFirst); errno = 0; BASE_FILELIST_EXTERN_CreateEnd(); if (!BASE_ERROR.ErrorCode && BASE_FILELIST.List == BASE_FILELIST.Last && BASE_FILELIST.AddMode < 2 && DoOutputNoFilesError) { BASE_ERROROUT_EXTERN_NoFiles(); BASE_ERROR.ErrorCode = BASE_ERROR_FILES; } BASE_FILELIST.ListFileData = (pBASE_FILELIST_FileData) BASE_MEMORY_ReAlloc( BASE_FILELIST.ListFileData, BASE_FILELIST.Number * sizeof(tBASE_FILELIST_FileData)); BASE_FILELIST.Pos -= (ULONG) BASE_FILELIST.List; BASE_FILELIST.Last -= (ULONG) BASE_FILELIST.List; BASE_FILELIST.List = (PCHAR) BASE_MEMORY_ReAlloc(BASE_FILELIST.List, (ULONG) BASE_FILELIST.Last); BASE_FILELIST.Pos += (ULONG) BASE_FILELIST.List; BASE_FILELIST.Last += (ULONG) BASE_FILELIST.List; BASE_MEMORY_Optimize(); BASE_MSGOUT_EXTERN_ListCreateEnd(&SavedScreenPtr); if (BASE_ERROR.ErrorCode) { BASE_FILELIST_Done(); return 0; } else { return 1; } } /*-----------------BASE_FILELIST_SearchListArchiveCreateProcessFile------*/ void BASE_FILELIST_SearchListArchiveCreateProcessFile(PCHAR FileName, tBASE_FILELIST_FileData FileData) { PCHAR ListPosition; INT AddDirLen; tLFN PureFileName; AddDirLen = strlen(BASE_FILELIST.AddDir); if (BASE_CONVERT_StrNICmp(BASE_FILELIST.AddDir, FileName, AddDirLen)) { return; } ListPosition = BASE_FILELIST.SearchList; while (ListPosition != BASE_FILELIST.SearchListEnd && !BASE_ERROR_EXTERN_HandleCancel(1)) { strcpy(PureFileName, FileName); BASE_PATHFUNC_NTFSStreamGetFileName(PureFileName); if (BASE_PATHFUNC_WildCardCheck(ListPosition, PureFileName + AddDirLen)) { BASE_FILELIST_AddFile(FileName, FileData.Size, *(PULONG) &FileData.Time, FileData.Attr); return; } ListPosition += strlen(ListPosition) + 1; } BASE_FILELIST.SkippedSize += FileData.Size; } /*-----------------BASE_FILELIST_VolumeCreate----------------------------*/ void BASE_FILELIST_VolumeCreate(void) { PCHAR ListPosition; tBASE_LFN_DBL FileName; ListPosition = BASE_FILELIST.SearchList; while (ListPosition != BASE_FILELIST.SearchListEnd && !BASE_ERROR_EXTERN_HandleCancel(1)) { sprintf(FileName, "%s%s", BASE_FILELIST.AddDir, ListPosition); BASE_FILELIST_AddFile(FileName, 0, 0, 0); ListPosition += strlen(ListPosition) + 1; } } /*-----------------BASE_FILELIST_SearchListArchiveCreate----------------*/ void BASE_FILELIST_SearchListArchiveCreate(void) { tLFN ArchiveName; if (BASE_DIRDATA_Dir1.IsMultiVol) { BASE_FILELIST_VolumeCreate(); } else { BASE_ARCHIVES_READ.ProcessFile = BASE_FILELIST_SearchListArchiveCreateProcessFile; sprintf(ArchiveName, "%s%s", BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir1.Dir), BASE_DIRDATA_Dir1.ArchiveName); if (BASE_ARCHIVES_READ_ReadArchive(ArchiveName)) { BASE_ARCHIVES_READ_GetArchiveList(); } } } unace-2.5/source/base/all/filelist/filelist.h0000644000175000017500000000622507704243546021766 0ustar danieldaniel00000000000000#ifndef _BASE_FILELIST_H_INCLUDED #define _BASE_FILELIST_H_INCLUDED #include "base/all/dosfuncs/dosfuncs.h" #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_FILELIST_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_FILELIST_NORMAL BASE_DOSFUNCS_NORMAL #define BASE_FILELIST_RDONLY BASE_DOSFUNCS_RDONLY #define BASE_FILELIST_HIDDEN BASE_DOSFUNCS_HIDDEN #define BASE_FILELIST_SYSTEM BASE_DOSFUNCS_SYSTEM #define BASE_FILELIST_VOLID BASE_DOSFUNCS_VOLID #define BASE_FILELIST_SUBDIR BASE_DOSFUNCS_SUBDIR #define BASE_FILELIST_ARCH BASE_DOSFUNCS_ARCH #define BASE_FILELIST_UPDIR 256 #define BASE_FILELIST_SELECTED 512 #define BASE_FILELIST_ISARCHIVE 1024 #define BASE_FILELIST_ARCHIVEUPDIR 2048 #define BASE_FILELIST_SPLITBEFORE 4096 #define BASE_FILELIST_SPLITAFTER 8192 #define BASE_FILELIST_ENCRYPTED 16384 #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { tBASE_DOSFUNCS_FileTime Time; ULONGLONG Size, PackedSize; USHORT Attr; } tBASE_FILELIST_FileData, *pBASE_FILELIST_FileData; #define RESTOREALIGNMENT #include "base/all/packprag.h" typedef struct { BOOL DoRecurseSubDirectories, DoAddFileCheckIfValidFile, DoAddFileCheckIfFileIsInList; PCHAR List, Pos, Last, SearchList, SearchListEnd, SearchListMax, SearchExcludeList, SearchExcludeListEnd, SearchExcludeListMax; tLFN FileNameStr, AddDir; LONG Number, MaxNumber, Count, AddMode; ULONGLONG SizeOfFiles, SkippedSize; pBASE_FILELIST_FileData ListFileData; } tBASE_FILELIST; DECLEXT tBASE_FILELIST BASE_FILELIST; PCHAR BASE_FILELIST_RemoveDrive(PCHAR Path); PCHAR BASE_FILELIST_Check(PCHAR FileName); INT BASE_FILELIST_ListStrLen(PCHAR FileName); PCHAR BASE_FILELIST_CheckExclusion(PCHAR FileName); INT BASE_FILELIST_AddCheck(PCHAR FileName); void BASE_FILELIST_Init(void); void BASE_FILELIST_Done(void); LONG BASE_FILELIST_Dir2FileTime(PCHAR FileName); void BASE_FILELIST_AddFile(PCHAR FileName, ULONGLONG FileSize, ULONG FileTime, INT Attr); INT BASE_FILELIST_Create(BOOL DoAddDirFirst, INT Mode, BOOL DoOutputNoFilesError); void BASE_FILELIST_SearchListArchiveCreateProcessFile( PCHAR FileName, tBASE_FILELIST_FileData FileData); void BASE_FILELIST_VolumeCreate(void); void BASE_FILELIST_SearchListArchiveCreate(void); void BASE_FILELIST_SearchListCreate(BOOL DoAddDirFirst); INT BASE_FILELIST_EXTERN_AddFileMoveCheck(PCHAR FileName); void BASE_FILELIST_EXTERN_CreateProc(BOOL DoAddDirFirst); void BASE_FILELIST_EXTERN_CreateEnd(void); BOOL BASE_FILELIST_EXTERN_CommandLineCheck(PCHAR FileName, PCHAR CompareFileName1, PCHAR CompareFileName2); #undef DECLEXT #endif unace-2.5/source/base/all/pathfunc/0000755000175000017500000000000007752377756020010 5ustar danieldaniel00000000000000unace-2.5/source/base/all/pathfunc/pathfunc.h0000644000175000017500000000250107754122152021743 0ustar danieldaniel00000000000000#ifndef _BASE_PATHFUNC_H_INCLUDED #define _BASE_PATHFUNC_H_INCLUDED #ifdef INCL_BASE_PATHFUNC_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL DoWildCardCheckMatchingPath; tLFN AddSlashToEndStr; } tBASE_PATHFUNC; DECLEXT tBASE_PATHFUNC BASE_PATHFUNC; //#ifdef _UNIX_ #ifdef __unix__ #define BASE_PATHFUNC_SEPARATOR '/' #define BASE_PATHFUNC_SEPARATORSTR "/" #else #define BASE_PATHFUNC_SEPARATOR '\\' #define BASE_PATHFUNC_SEPARATORSTR "\\" #endif void BASE_PATHFUNC_ToDOSPathSeparatorN(PCHAR Path, INT N); void BASE_PATHFUNC_ToSystemPathSeparatorN(PCHAR Path, INT N); void BASE_PATHFUNC_ToDOSPathSeparator(PCHAR Path); void BASE_PATHFUNC_ToSystemPathSeparator(PCHAR Path); PCHAR BASE_PATHFUNC_RemoveSlash(PCHAR Path); PCHAR BASE_PATHFUNC_AddSlashToEnd(PCHAR Path); INT BASE_PATHFUNC_WildCardCheck(PCHAR WildCardStr, PCHAR Path); void BASE_PATHFUNC_ExtendWildCardStr(PCHAR SourceStr); INT BASE_PATHFUNC_GetDevicePathLen(PCHAR Path); void BASE_PATHFUNC_SplitFileName(PCHAR Dir, PCHAR FileName, PCHAR Path); void BASE_PATHFUNC_CompletePath(PCHAR Path); BOOL BASE_PATHFUNC_IsNTFSStreamName(PCHAR Path); void BASE_PATHFUNC_NTFSStreamGetFileName(PCHAR Path); #undef DECLEXT #endif unace-2.5/source/base/all/pathfunc/pathfunc.c0000644000175000017500000002271007761472022021744 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_PATHFUNC_EXCLUSIVE #define INCL_BASE_CONVERT #include "base/all/includes.h" /*-----------------BASE_PATHFUNC_ToDOSPathSeparatorN---------------------*/ void BASE_PATHFUNC_ToDOSPathSeparatorN(PCHAR Path, INT N) { INT I; for (I = 0; I < N; I++) { if (Path[I] == '/') { Path[I] = '\\'; } } } /*-----------------BASE_PATHFUNC_ToSystemPathSeparatorN------------------*/ void BASE_PATHFUNC_ToSystemPathSeparatorN(PCHAR Path, INT N) { INT I; for (I = 0; I < N; I++) { if (Path[I] == '/' || Path[I] == '\\') { Path[I] = BASE_PATHFUNC_SEPARATOR; } } } /*-----------------BASE_PATHFUNC_ToDOSPathSeparator----------------------*/ void BASE_PATHFUNC_ToDOSPathSeparator(PCHAR Path) { BASE_PATHFUNC_ToDOSPathSeparatorN(Path, strlen(Path)); } /*-----------------BASE_PATHFUNC_ToSystemPathSeparator-------------------*/ void BASE_PATHFUNC_ToSystemPathSeparator(PCHAR Path) { BASE_PATHFUNC_ToSystemPathSeparatorN(Path, strlen(Path)); } /*-----------------BASE_PATHFUNC_RemoveSlash-----------------------------*/ PCHAR BASE_PATHFUNC_RemoveSlash(PCHAR Path) { INT Len; strcpy(BASE_PATHFUNC.AddSlashToEndStr, Path); Len = strlen(BASE_PATHFUNC.AddSlashToEndStr); if (Len && BASE_PATHFUNC.AddSlashToEndStr[--Len] == BASE_PATHFUNC_SEPARATOR) { BASE_PATHFUNC.AddSlashToEndStr[Len] = 0; } return BASE_PATHFUNC.AddSlashToEndStr; } /*-----------------BASE_PATHFUNC_AddSlashToEnd---------------------------*/ PCHAR BASE_PATHFUNC_AddSlashToEnd(PCHAR Path) { sprintf(BASE_PATHFUNC.AddSlashToEndStr, "%s%c", Path, Path[0] && Path[strlen(Path) - 1] != BASE_PATHFUNC_SEPARATOR && (!Path[1] || !Path[2] || Path[2] != BASE_PATHFUNC_SEPARATOR || Path[3]) ? BASE_PATHFUNC_SEPARATOR : 0); return BASE_PATHFUNC.AddSlashToEndStr; } /*-----------------BASE_PATHFUNC_WildCardCheck---------------------------*/ INT BASE_PATHFUNC_WildCardCheck(PCHAR WildCardStr, PCHAR Path) { BOOL DoRepeat; PCHAR SlashPos, NextSlashPos, WildCardDir, WildCardSpecification; tLFN TempWildCardStr, TempPath; tBASE_LFN_DBL CompareStr1, CompareStr2; INT I, DirLen, J, CompareLen; strcpy(TempWildCardStr, WildCardStr); strcpy(TempPath, Path); // BASE_PATHFUNC_NTFSStreamGetFileName(Path); Path = TempPath; WildCardSpecification = strrchr(TempWildCardStr, BASE_PATHFUNC_SEPARATOR); if (WildCardSpecification) { WildCardDir = TempWildCardStr; *(WildCardSpecification++) = 0; } else { WildCardDir = ""; WildCardSpecification = TempWildCardStr; } DirLen = strlen(WildCardDir); CompareLen = (!strpbrk(WildCardStr, "*?") && BASE_PATHFUNC.DoWildCardCheckMatchingPath) ? 0 : strlen(Path) - DirLen - 1; for (J = 0; J <= CompareLen; J++) { if (!BASE_CONVERT_StrNICmp(WildCardDir, Path, DirLen) && (!J || Path[-1] == BASE_PATHFUNC_SEPARATOR) && WildCardSpecification[0] && (!DirLen || Path[DirLen] == BASE_PATHFUNC_SEPARATOR || !Path[DirLen])) { SlashPos = DirLen ? &Path[DirLen + 1] : Path; do { DoRepeat = 0; strcpy(CompareStr1, SlashPos); if (NextSlashPos = strchr(SlashPos + 1, BASE_PATHFUNC_SEPARATOR)) { CompareStr1[NextSlashPos - SlashPos] = 0; } BASE_CONVERT_StrUpr(CompareStr1); BASE_PATHFUNC_ExtendWildCardStr(CompareStr1); strcpy(CompareStr2, WildCardSpecification); BASE_CONVERT_StrUpr(CompareStr2); BASE_PATHFUNC_ExtendWildCardStr(CompareStr2); for (I = 0; I < BASE_LFN_DOUBLEMAXLEN; I++) { if (CompareStr2[I] != '?' && CompareStr2[I] != CompareStr1[I]) { DoRepeat = 1; break; } } if (!DoRepeat) { return 1; } SlashPos = NextSlashPos + 1; } while (NextSlashPos && strpbrk(WildCardStr, "?*")); } Path++; } return 0; } /*-----------------BASE_PATHFUNC_ExtendWildCardStr-----------------------*/ void BASE_PATHFUNC_ExtendWildCardStr(PCHAR SourceStr) { tBASE_LFN_DBL TargetStr; PCHAR PointPos, WildcardPos; INT SourceIndex, TargetIndex, CharsToCopy; PointPos = strrchr(SourceStr, '.'), WildcardPos = strchr(SourceStr, '*'); if (WildcardPos < PointPos && WildcardPos) { SourceIndex = (LONG) WildcardPos - (LONG) SourceStr; } else { if (PointPos) { SourceIndex = (LONG) PointPos - (LONG) SourceStr; } else { SourceIndex = WildcardPos ? (LONG) WildcardPos - (LONG) SourceStr : strlen(SourceStr); } } strncpy(TargetStr, SourceStr, SourceIndex); TargetIndex = SourceIndex; if (SourceStr[SourceIndex] == '*') { memset(&TargetStr[TargetIndex], '?', BASE_LFN_MAXLEN - TargetIndex); TargetIndex = BASE_LFN_MAXLEN; } memset(&TargetStr[TargetIndex], '.', BASE_LFN_MAXLEN - TargetIndex); TargetIndex = BASE_LFN_MAXLEN; PointPos = strrchr(SourceStr, '.'); if (PointPos) { SourceIndex = (INT) PointPos - (INT) SourceStr + 1; CharsToCopy = 0; while (SourceStr[SourceIndex] && SourceStr[SourceIndex] != '*') { SourceIndex++; CharsToCopy++; } strncpy(&TargetStr[BASE_LFN_MAXLEN], &SourceStr[SourceIndex - CharsToCopy], CharsToCopy); TargetIndex += CharsToCopy; } if (SourceStr[SourceIndex] == '*') { memset(&TargetStr[TargetIndex], '?', BASE_LFN_DOUBLEMAXLEN - TargetIndex); TargetIndex = BASE_LFN_DOUBLEMAXLEN - 1; } memset(&TargetStr[TargetIndex], '.', BASE_LFN_DOUBLEMAXLEN - TargetIndex); memcpy(SourceStr, TargetStr, BASE_LFN_DOUBLEMAXLEN); } /*-----------------BASE_PATHFUNC_GetDevicePathLen------------------------*/ INT BASE_PATHFUNC_GetDevicePathLen(PCHAR Path) { PCHAR SlashPos; INT Result; Result = 0; if (Path[0] == BASE_PATHFUNC_SEPARATOR) { if (Path[1] == BASE_PATHFUNC_SEPARATOR) { if (!(SlashPos = strchr(&Path[2], BASE_PATHFUNC_SEPARATOR))) { return 0; } if (!(SlashPos = strchr(SlashPos + 1, BASE_PATHFUNC_SEPARATOR))) { return 0; } Result = (UINT) SlashPos - (UINT) Path + 1; } else { Result = 1; } } else { if (Path[1] == ':') { Result = 2; if (Path[2] == BASE_PATHFUNC_SEPARATOR) { Result++; } } } return Result; } /*-----------------BASE_PATHFUNC_SplitFileName---------------------------*/ void BASE_PATHFUNC_SplitFileName(PCHAR Dir, PCHAR FileName, PCHAR Path) { PCHAR SlashPos; strcpy(FileName, BASE_LFN_LongName(Path)); strcpy(Dir, FileName); SlashPos = strrchr(Dir, BASE_PATHFUNC_SEPARATOR); if (SlashPos) { if (SlashPos == Dir || *(SlashPos - 1) == ':' || *(SlashPos - 1) == BASE_PATHFUNC_SEPARATOR) { SlashPos++; } } else { SlashPos = Dir; } *SlashPos = 0; SlashPos = SlashPos - (UINT) Dir + (UINT) FileName; if (*SlashPos == BASE_PATHFUNC_SEPARATOR) { SlashPos++; } strcpy(FileName, SlashPos); } /*-----------------BASE_PATHFUNC_CompletePath----------------------------*/ void BASE_PATHFUNC_CompletePath(PCHAR Path) { tLFN CurrentDir; INT CurrentDirLen; /* if ((Path[0] == BASE_PATHFUNC_SEPARATOR && Path[1] != BASE_PATHFUNC_SEPARATOR || !strchr(Path, ':')) && Path[0] != '/') */ if (Path[0] == '\\' && Path[1] != '\\' || Path[0] != BASE_PATHFUNC_SEPARATOR #ifndef __unix__ && !strchr(Path, ':') #endif ) { getcwd(CurrentDir, sizeof(CurrentDir)); strcpy(CurrentDir, BASE_PATHFUNC_AddSlashToEnd(CurrentDir)); /* This is valid only under windows systems with ":" style file names */ #ifndef __unix__ if (Path[0] == BASE_PATHFUNC_SEPARATOR) { CurrentDir[2] = 0; } #endif CurrentDirLen = strlen(CurrentDir); memmove(&Path[CurrentDirLen], Path, strlen(Path) + 1); memmove(Path, CurrentDir, CurrentDirLen); } /* This is valid only under windows systems with ":" style file names */ #ifndef __unix__ if (Path[1] == ':' && Path[2] != BASE_PATHFUNC_SEPARATOR) { BASE_LFN_GetCurrentDirOfDrive(BASE_CONVERT_UpCase(Path[0]) - 'A', CurrentDir, BASE_LFN_MAXLEN); strcpy(Path, &Path[2]); BASE_CONVERT_StrCatBefore( Path[0] ? BASE_PATHFUNC_AddSlashToEnd(CurrentDir) : CurrentDir, Path); } #endif } /*-----------------BASE_PATHFUNC_IsNTFSStreamName------------------------*/ BOOL BASE_PATHFUNC_IsNTFSStreamName(PCHAR Path) { PCHAR Ptr; if (Ptr = strrchr(Path, ':')) { return *(Ptr + 1) != '\\'; } else { return 0; } } /*-----------------BASE_PATHFUNC_NTFSStreamGetFileName-------------------*/ void BASE_PATHFUNC_NTFSStreamGetFileName(PCHAR Path) { PCHAR Ptr; if ((Ptr = strrchr(Path, ':')) && *(Ptr + 1) != '\\') { *Ptr = 0; } } unace-2.5/source/base/all/arcblk/0000755000175000017500000000000007752377756017436 5ustar danieldaniel00000000000000unace-2.5/source/base/all/arcblk/arcblk.h0000644000175000017500000001005407716541052021023 0ustar danieldaniel00000000000000#ifndef _BASE_ARCBLK_H_INCLUDED #define _BASE_ARCBLK_H_INCLUDED #include "base/all/acestruc.h" #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_ARCBLK_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL IsVolume, IsSolid, IsLocked, IsSFX, HasMainComent, HasRecoveryRecord, HasAuthenticityVerification; } tBASE_ARCBLK_OPTIONS, *pBASE_ARCBLK_OPTIONS; typedef struct { BOOL DoOpenForReadOnly, DoOutputComments, DoCopyBlockToTempArchive, DoNotPrintAV; ULONGLONG ArchiveFilePos, BlockPos, HeadPos, SkipSize, ArchiveBegin; tLFN ArchiveFile; tBASE_ACESTRUC_HEADER Header; tBASE_ARCBLK_OPTIONS Options; } tBASE_ARCBLK; DECLEXT tBASE_ARCBLK BASE_ARCBLK; PUSHORT BASE_ARCBLK_MainHeaderCommentSizePos(pBASE_ACESTRUC_HEADER Header); UINT BASE_ARCBLK_MainHeaderCommentSize(pBASE_ACESTRUC_HEADER Header); PCHAR BASE_ARCBLK_MainHeaderComment(pBASE_ACESTRUC_HEADER Header); PCHAR BASE_ARCBLK_MainHeaderStuff(pBASE_ACESTRUC_HEADER Header); PUSHORT BASE_ARCBLK_FileHeaderCommentSizePos(pBASE_ACESTRUC_HEADER Header); UINT BASE_ARCBLK_FileHeaderCommentSize(pBASE_ACESTRUC_HEADER Header); PCHAR BASE_ARCBLK_FileHeaderComment(pBASE_ACESTRUC_HEADER Header); PUSHORT BASE_ARCBLK_FileHeaderSecuritySizePos(pBASE_ACESTRUC_HEADER Header); PCHAR BASE_ARCBLK_FileHeaderSecurity(pBASE_ACESTRUC_HEADER Header); void BASE_ARCBLK_FileHeaderSecurityRead(pBASE_ACESTRUC_HEADER Header, PCHAR *Security, PUINT Size); void BASE_ARCBLK_FileHeaderSecurityWrite(pBASE_ACESTRUC_HEADER Header, PCHAR Security, UINT Size); UINT BASE_ARCBLK_CalculateHeaderCRC(pBASE_ACESTRUC_HEADER Header); BOOL BASE_ARCBLK_CheckHeaderCRC(void); ULONGLONG BASE_ARCBLK_GetAddSize(pBASE_ACESTRUC_HEADER Header); PCHAR BASE_ARCBLK_GetFileName(PCHAR FileName, pBASE_ACESTRUC_HEADER Header); void BASE_ARCBLK_SkipFileBlock(void); void BASE_ARCBLK_AdjustEndiannessOfHeaderBase(void); void BASE_ARCBLK_AdjustEndiannessOfHeaderRest(void); void BASE_ARCBLK_ConvertHeader32ToHeader64(void); BOOL BASE_ARCBLK_LoadBlock(void); INT BASE_ARCBLK_ReadAddSizeBlock(PCHAR Buffer, INT Len); INT BASE_ARCBLK_OpenArchive(PCHAR Path, INT Access, BOOL DoOutputError, BOOL DoOutputComm, BOOL DoResetCrypt); void BASE_ARCBLK_EXTERN_CloseArchive(INT AddRecovery); void BASE_ARCBLK_EXTERN_SetFileData(void); BOOL BASE_ARCBLK_EXTERN_OpenArchiveOverwriteRequest(PCHAR Path, INT AccesFlags); void BASE_ARCBLK_EXTERN_LoadBlockBegin(void); void BASE_ARCBLK_EXTERN_LoadBlockSetVariables(void); BOOL BASE_ARCBLK_EXTERN_OpenArchiveWriteOpen(INT Access, BOOL DoOutputError); void BASE_ARCBLK_EXTERN_OutputArchiveInfo(INT Access, BOOL DoResetCrypt); BOOL BASE_ARCBLK_EXTERN_OpenArchiveOverwriteRequest(PCHAR Path, INT Access); PCHAR BASE_ARCBLK_EXTERN_CurrentArchiveName(void); void BASE_ARCBLK_EXTERN_OpenArchiveHandlePathRenaming(PCHAR Path, INT Access); BOOL BASE_ARCBLK_EXTERN_OpenArchiveCreateArchive(INT Access); void BASE_ARCBLK_EXTERN_ArchiveOpenReOpen(INT Access); void BASE_ARCBLK_EXTERN_OpenArchivesSetVariables(INT Access, BOOL DoResetCrypt); void BASE_ARCBLK_EXTERN_OpenArchiveWriteClose(void); void BASE_ARCBLK_EXTERN_ReadAddSizeBlockCopyToTempArchive(PCHAR Buffer, INT Read, INT RestLen); BOOL BASE_ARCBLK_EXTERN_ReadAddSizeBlockEncrypt(PCHAR Buffer, INT Len); void BASE_ARCBLK_EXTERN_RemoveCreatedArchive(void); #undef DECLEXT #endif unace-2.5/source/base/all/arcblk/arcblk.c0000644000175000017500000004475407760662322021037 0ustar danieldaniel00000000000000#include #include #include #define INCL_BASE_ARCBLK_EXCLUSIVE #define INCL_BASE_ARCHIVES_TEST #define INCL_BASE_BUFREAD #define INCL_BASE_CONVERT #define INCL_BASE_CRC #define INCL_BASE_CRYPT #define INCL_BASE_DCPR #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_EXTRACT #define INCL_BASE_MEMORY #define INCL_BASE_MSGOUT #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #define INCL_BASE_UNINORM #define INCL_BASE_VOLUME #include "base/all/includes.h" /*-----------------BASE_ARCBLK_MainHeaderCommentSizePos------------------*/ PUSHORT BASE_ARCBLK_MainHeaderCommentSizePos(pBASE_ACESTRUC_HEADER Header) { return (PUSHORT) (Header->Main.AV + Header->Main.AV_SIZE); } /*-----------------BASE_ARCBLK_MainHeaderCommentSize---------------------*/ UINT BASE_ARCBLK_MainHeaderCommentSize(pBASE_ACESTRUC_HEADER Header) { return *BASE_ARCBLK_MainHeaderCommentSizePos(Header); } /*-----------------BASE_ARCBLK_MainHeaderComment-------------------------*/ PCHAR BASE_ARCBLK_MainHeaderComment(pBASE_ACESTRUC_HEADER Header) { return (PCHAR)BASE_ARCBLK_MainHeaderCommentSizePos(Header) + sizeof(Header->Main.COMM_SIZE); } /*-----------------BASE_ARCBLK_MainHeaderStuff---------------------------*/ PCHAR BASE_ARCBLK_MainHeaderStuff(pBASE_ACESTRUC_HEADER Header) { return BASE_ARCBLK_MainHeaderComment(Header) + BASE_ARCBLK_MainHeaderCommentSize(Header); } /*-----------------BASE_ARCBLK_FileHeaderCommentSizePos------------------*/ PUSHORT BASE_ARCBLK_FileHeaderCommentSizePos(pBASE_ACESTRUC_HEADER Header) { return (PUSHORT) (Header->File.FNAME + Header->File.FNAME_SIZE); } /*-----------------BASE_ARCBLK_FileHeaderCommentSize---------------------*/ UINT BASE_ARCBLK_FileHeaderCommentSize(pBASE_ACESTRUC_HEADER Header) { return *BASE_ARCBLK_FileHeaderCommentSizePos(Header); } /*-----------------BASE_ARCBLK_FileHeaderComment-------------------------*/ PCHAR BASE_ARCBLK_FileHeaderComment(pBASE_ACESTRUC_HEADER Header) { return (PCHAR)BASE_ARCBLK_FileHeaderCommentSizePos(Header) + sizeof(Header->File.COMM_SIZE); } /*-----------------BASE_ARCBLK_FileHeaderSecuritySizePos-----------------*/ PUSHORT BASE_ARCBLK_FileHeaderSecuritySizePos(pBASE_ACESTRUC_HEADER Header) { if (Header->File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_COMMENT) { return (PUSHORT)( BASE_ARCBLK_FileHeaderComment(Header) + BASE_ARCBLK_FileHeaderCommentSize(Header)); } else { return BASE_ARCBLK_FileHeaderCommentSizePos(Header); } } /*-----------------BASE_ARCBLK_FileHeaderSecuritySize--------------------*/ UINT BASE_ARCBLK_FileHeaderSecuritySize(pBASE_ACESTRUC_HEADER Header) { return *BASE_ARCBLK_FileHeaderSecuritySizePos(Header); } /*-----------------BASE_ARCBLK_FileHeaderSecurity------------------------*/ PCHAR BASE_ARCBLK_FileHeaderSecurity(pBASE_ACESTRUC_HEADER Header) { return (PCHAR)BASE_ARCBLK_FileHeaderSecuritySizePos(Header) + sizeof(Header->File.SECURITY_SIZE); } /*-----------------BASE_ARCBLK_FileHeaderSecurityRead--------------------*/ void BASE_ARCBLK_FileHeaderSecurityRead(pBASE_ACESTRUC_HEADER Header, PCHAR *Security, PUINT Size) { *Size = 0; *Security = NULL; if ((Header->File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SECURITY) && (*Size = BASE_ARCBLK_FileHeaderSecuritySize(Header))) { if (*Security = BASE_MEMORY_GetMem(*Size)) { memcpy(*Security, BASE_ARCBLK_FileHeaderSecurity(Header), *Size); } } } /*-----------------BASE_ARCBLK_FileHeaderSecurityWrite-------------------*/ void BASE_ARCBLK_FileHeaderSecurityWrite(pBASE_ACESTRUC_HEADER Header, PCHAR Security, UINT Size) { if (Size && Security) { Header->File.HEAD_FLAGS |= BASE_ACESTRUC_FLAG_SECURITY; *BASE_ARCBLK_FileHeaderSecuritySizePos(Header) = Size; memcpy(BASE_ARCBLK_FileHeaderSecurity(Header), Security, Size); } } /*-----------------BASE_ARCBLK_CalculateHeaderCRC------------------------*/ UINT BASE_ARCBLK_CalculateHeaderCRC(pBASE_ACESTRUC_HEADER Header) { return BASE_CRC_GetCRC16(BASE_CRC_MASK, (PCHAR) &Header->Basic.HEAD_TYPE, Header->Basic.HEAD_SIZE); } /*-----------------BASE_ARCBLK_GetAddSize--------------------------------*/ ULONGLONG BASE_ARCBLK_GetAddSize(pBASE_ACESTRUC_HEADER Header) { return (Header->Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_ADDSIZE) ? Header->Basic.ADDSIZE : 0; } /*-----------------BASE_ARCBLK_GetFileName-------------------------------*/ PCHAR BASE_ARCBLK_GetFileName(PCHAR FileName, pBASE_ACESTRUC_HEADER Header) { INT I; I = Header->File.FNAME_SIZE; if (I >= BASE_LFN_MAXLEN) { I = BASE_LFN_MAXLEN - 1; } strncpy(FileName, Header->File.FNAME, I); FileName[I] = 0; strcpy(FileName, BASE_CONVERT_ToANSI(FileName)); return FileName; } /*-----------------BASE_ARCBLK_SkipFileBlock-----------------------------*/ void BASE_ARCBLK_SkipFileBlock(void) { tLFN FileName; if (BASE_DCPR.IsInitialized && BASE_ARCBLK.SkipSize && BASE_ARCBLK.Options.IsSolid && BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE) { BASE_ARCBLK_GetFileName(FileName, &BASE_ARCBLK.Header); strcpy(BASE_STATE.CurrentFileName, FileName); BASE_MSGOUT_EXTERN_Analyzing(FileName); if (!BASE_ERROR.ErrorCode) { BASE_EXTRACT_DecompressFile(0, 0); } } } /*-----------------BASE_ARCBLK_ConvertHeader32ToHeader64-----------------*/ void BASE_ARCBLK_ConvertHeader32ToHeader64(void) { BASE_ARCBLK.Header.Basic.HEAD_CRC = BASE_ARCBLK.Header.Basic.HEAD_CRC == BASE_ARCBLK_CalculateHeaderCRC(&BASE_ARCBLK.Header); BASE_ARCBLK_AdjustEndiannessOfHeaderRest(); if (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_ADDSIZE) { switch (BASE_ARCBLK.Header.Basic.HEAD_TYPE) { case BASE_ACESTRUC_BLOCK_FILE32: { ULONG PSIZE = BASE_ARCBLK.Header.File32.PSIZE; ULONG SIZE = BASE_ARCBLK.Header.File32.SIZE; memmove(&BASE_ARCBLK.Header.File.FTIME, &BASE_ARCBLK.Header.File32.FTIME, sizeof(BASE_ARCBLK.Header) - ((ULONG)&BASE_ARCBLK.Header.File.FTIME - (ULONG)&BASE_ARCBLK.Header)); BASE_ARCBLK.Header.File.PSIZE = PSIZE; BASE_ARCBLK.Header.File.SIZE = SIZE; BASE_ARCBLK.Header.Basic.HEAD_TYPE = BASE_ACESTRUC_BLOCK_FILE; BASE_ARCBLK.Header.Basic.HEAD_SIZE += 8; BASE_ARCBLK.Header.Basic.HEAD_FLAGS |= BASE_ACESTRUC_FLAG_64BIT; break; } case BASE_ACESTRUC_BLOCK_RECOVERY32: { ULONG REC_BLK_SIZE = BASE_ARCBLK.Header.Recovery32.REC_BLK_SIZE; ULONG REL_STRT = BASE_ARCBLK.Header.Recovery32.REL_STRT; memmove(&BASE_ARCBLK.Header.Recovery.CLUSTER, &BASE_ARCBLK.Header.Recovery32.CLUSTER, sizeof(BASE_ARCBLK.Header) - ((ULONG)&BASE_ARCBLK.Header.Recovery.CLUSTER - (ULONG)&BASE_ARCBLK.Header)); BASE_ARCBLK.Header.Recovery.REC_BLK_SIZE = REC_BLK_SIZE; BASE_ARCBLK.Header.Recovery.REL_STRT = REL_STRT; BASE_ARCBLK.Header.Basic.HEAD_TYPE = BASE_ACESTRUC_BLOCK_RECOVERY; BASE_ARCBLK.Header.Basic.HEAD_SIZE += 8; BASE_ARCBLK.Header.Basic.HEAD_FLAGS |= BASE_ACESTRUC_FLAG_64BIT; break; } default: { if (!(BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_64BIT)) { ULONG ADDSIZE = BASE_ARCBLK.Header.Basic32.ADDSIZE; memmove(&BASE_ARCBLK.Header.Basic.other, &BASE_ARCBLK.Header.Basic32.other, sizeof(BASE_ARCBLK.Header) - ((ULONG)&BASE_ARCBLK.Header.Basic.other - (ULONG)&BASE_ARCBLK.Header)); BASE_ARCBLK.Header.Basic.ADDSIZE = ADDSIZE; BASE_ARCBLK.Header.Basic.HEAD_SIZE += 4; BASE_ARCBLK.Header.Basic.HEAD_FLAGS |= BASE_ACESTRUC_FLAG_64BIT; } break; } } } if (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE) { BASE_PATHFUNC_ToSystemPathSeparatorN( BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); #if defined(__MACOSX__) BASE_ARCBLK.Header.File.FNAME_SIZE = BASE_UNINORM_CP850ToUTF8NFD( BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); #elif defined(__LINUX__) /* may not work for every linux user */ BASE_ARCBLK.Header.File.FNAME_SIZE = BASE_UNINORM_CP850ToANSI( BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); #elif defined(__unix__) /* for every other unix assume UTF-8 NFC normalization */ BASE_ARCBLK.Header.File.FNAME_SIZE = BASE_UNINORM_CP850ToUTF8NFC( BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); #endif } } /*-----------------BASE_ARCBLK_AdjustEndiannessOfHeaderBase--------------*/ void BASE_ARCBLK_AdjustEndiannessOfHeaderBase(void) { ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Basic.HEAD_CRC); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Basic.HEAD_SIZE); } /*-----------------BASE_ARCBLK_AdjustEndiannessOfHeaderRest--------------*/ void BASE_ARCBLK_AdjustEndiannessOfHeaderRest(void) { ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Basic.HEAD_TYPE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Basic.HEAD_FLAGS); switch (BASE_ARCBLK.Header.Basic.HEAD_TYPE) { case BASE_ACESTRUC_BLOCK_MAIN: { ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Main.TIME_CR); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Main.RES1); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Main.RES2); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Main.RES); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Main.COMM_SIZE); break; } case BASE_ACESTRUC_BLOCK_FILE32: { ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File32.PSIZE); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File32.SIZE); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File32.FTIME); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File32.ATTR); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File32.CRC32); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File32.TECH.PARM); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File32.RESERVED); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File32.FNAME_SIZE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File32.COMM_SIZE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File32.SECURITY_SIZE); break; } case BASE_ACESTRUC_BLOCK_FILE: { ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.File.PSIZE); ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.File.SIZE); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File.FTIME); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File.ATTR); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.File.CRC32); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File.TECH.PARM); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File.RESERVED); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File.FNAME_SIZE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File.COMM_SIZE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.File.SECURITY_SIZE); break; } case BASE_ACESTRUC_BLOCK_RECOVERY32: { ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery32.REC_BLK_SIZE); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery32.REL_STRT); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery32.CLUSTER); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery32.CL_SIZE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Recovery32.REC_CRC); break; } case BASE_ACESTRUC_BLOCK_RECOVERY: { ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.Recovery.REC_BLK_SIZE); ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.Recovery.REL_STRT); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery.CLUSTER); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery.CL_SIZE); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Recovery.REC_CRC); break; } case BASE_ACESTRUC_BLOCK_RECOVERY2: { ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.Recovery2.REC_BLK_SIZE); ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.Recovery2.REL_STRT); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Recovery2.SECTORS); ADJUST_ENDIANNESS16(&BASE_ARCBLK.Header.Recovery2.SECTORSPERCLUSTER); ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Recovery2.CL_SIZE); break; } default: /* Looks like this is not needed.. */ { if (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_ADDSIZE) { if (!(BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_64BIT)) { ADJUST_ENDIANNESS32(&BASE_ARCBLK.Header.Basic32.ADDSIZE); } else { ADJUST_ENDIANNESS64(&BASE_ARCBLK.Header.Basic.ADDSIZE); } } break; } } } /*-----------------BASE_ARCBLK_CheckHeaderCRC---------------------------*/ BOOL BASE_ARCBLK_CheckHeaderCRC(void) { return BASE_ARCBLK.Header.Basic.HEAD_CRC == BASE_ARCBLK_CalculateHeaderCRC(&BASE_ARCBLK.Header); } /*-----------------BASE_ARCBLK_LoadBlock---------------------------------*/ BOOL BASE_ARCBLK_LoadBlock(void) { BOOL Result; INT Read; BASE_ARCBLK_EXTERN_LoadBlockBegin(); BASE_ARCBLK_SkipFileBlock(); BASE_ARCBLK.DoCopyBlockToTempArchive = 0; BASE_BUFREAD_Seek(BASE_ARCBLK.SkipSize, SEEK_CUR); BASE_ARCBLK.BlockPos = BASE_BUFREAD_Tell(); if (BASE_BUFREAD_Read((PCHAR) &BASE_ARCBLK.Header, 4) == 0) { return (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE && BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITAFTER) ? BASE_VOLUME_NextVolumeToProcess(1) : 0; } BASE_ARCBLK_AdjustEndiannessOfHeaderBase(); Read = BASE_BUFREAD_Read((PCHAR) &BASE_ARCBLK.Header.Basic.HEAD_TYPE, BASE_ARCBLK.Header.Basic.HEAD_SIZE); Result = BASE_ARCBLK.Header.Basic.HEAD_SIZE == Read; BASE_ARCBLK_ConvertHeader32ToHeader64(); if (!BASE_ARCBLK.Header.Basic.HEAD_CRC) { BASE_ERROROUT_EXTERN_BrokenArchive(); BASE_ERROR.ErrorCode = BASE_ERROR_BADCRC; return 0; } BASE_ARCBLK.SkipSize = BASE_ARCBLK_GetAddSize(&BASE_ARCBLK.Header); BASE_ARCBLK_EXTERN_LoadBlockSetVariables(); return Result; } /*-----------------BASE_ARCBLK_ReadAddSizeBlock-------------------------*/ INT BASE_ARCBLK_ReadAddSizeBlock(PCHAR Buffer, INT Len) { BOOL IsFile; INT Read, ReadLen, RestLen; PCHAR BufPos; Read = 0; RestLen = Len; BufPos = Buffer; IsFile = BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE; if (IsFile && (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD)) { RestLen = BASE_CRYPT_CryptLen(RestLen); } while (!BASE_ERROR.ErrorCode && RestLen) { ReadLen = BASE_ARCBLK.SkipSize > RestLen ? RestLen : BASE_ARCBLK.SkipSize; BASE_ARCBLK.SkipSize -= ReadLen; Read += BASE_BUFREAD_Read(BufPos, ReadLen); if (IsFile && ReadLen) { BASE_STATE_OutputProgress(ReadLen, 0, 0, ReadLen, 0); } BufPos += ReadLen; RestLen -= ReadLen; if (!BASE_ARCBLK.SkipSize) { if (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITAFTER) { BASE_VOLUME_NextVolumeToProcess(0); } else { break; } } } BASE_ARCBLK_EXTERN_ReadAddSizeBlockCopyToTempArchive(Buffer, Read, RestLen); if (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE && (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD)) { BASE_CRYPT_Decrypt(Buffer, Read); } Len = Read > Len ? Len : Read; if (BASE_ARCBLK_EXTERN_ReadAddSizeBlockEncrypt(Buffer, Len)) { return 0; } return Len; } /*-----------------BASE_ARCBLK_OpenArchive-------------------------------*/ INT BASE_ARCBLK_OpenArchive(PCHAR Path, INT Access, BOOL DoOutputError, BOOL DoOutputComm, BOOL DoResetCrypt) { tBASE_DIRDATA_DirData TempDir; TempDir = BASE_DIRDATA_Dir1; BASE_ARCBLK.DoOutputComments = DoOutputComm && BASE_OPTIONS.ExtractOptions.DoShowComments; BASE_ARCBLK_EXTERN_OpenArchiveHandlePathRenaming(Path, Access); strcpy(BASE_ARCBLK.ArchiveFile, Path); if (BASE_ARCBLK_EXTERN_OpenArchiveOverwriteRequest(Path, Access)) { return 0; } BASE_PATHFUNC_CompletePath(BASE_ARCBLK.ArchiveFile); BASE_ARCBLK.SkipSize = 0; if (!BASE_ARCBLK_EXTERN_OpenArchiveWriteOpen(Access, DoOutputError)) { return 0; } if (-1 == BASE_BUFREAD_Open(BASE_ARCBLK.ArchiveFile)) { BASE_ARCBLK_EXTERN_OpenArchiveWriteClose(); if (DoOutputError) { BASE_ERROROUT_EXTERN_OpenArchiveRead(); BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; } return 0; } if (!BASE_ARCBLK_EXTERN_OpenArchiveCreateArchive(Access)) { return 0; } if (!BASE_ARCHIVES_TEST_ArchiveTest(BASE_ARCBLK_EXTERN_CurrentArchiveName(), BASE_ARCHIVES_TEST.MaxTestSectors, 1)) { strcpy (BASE_DIRDATA_Dir1.ArchiveName, BASE_ARCBLK_EXTERN_CurrentArchiveName()); BASE_ERROROUT_EXTERN_IsNotArchive(); BASE_DIRDATA_Dir1 = TempDir; BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; BASE_ARCBLK_EXTERN_OpenArchiveWriteClose(); BASE_BUFREAD_Close(); return 0; } BASE_ARCBLK_EXTERN_ArchiveOpenReOpen(Access); BASE_ARCBLK.ArchiveBegin = BASE_DIRDATA_Dir1.ArchiveBegin; BASE_BUFREAD_Seek(BASE_DIRDATA_Dir1.ArchiveBegin, SEEK_SET); BASE_ARCBLK_LoadBlock(); BASE_ARCBLK_EXTERN_OpenArchivesSetVariables(Access, DoResetCrypt); if (DoResetCrypt) { BASE_CRYPT_InitCryptKey(&BASE_DCPR.Options.CryptionData); } BASE_DIRDATA_Dir1 = TempDir; return 1; } unace-2.5/source/base/all/extract/0000755000175000017500000000000007752377756017652 5ustar danieldaniel00000000000000unace-2.5/source/base/all/extract/extract.c0000644000175000017500000002350307736567642021470 0ustar danieldaniel00000000000000#include #include #include #include #include #define INCL_BASE_EXTRACT_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_COMMENTS #define INCL_BASE_CRC #define INCL_BASE_DCPR #define INCL_BASE_DCPR_LZ77 #define INCL_BASE_DIRDATA #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_FILELIST #define INCL_BASE_FUNCS #define INCL_BASE_MEMORY #define INCL_BASE_MSGOUT #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #define INCL_BASE_VOLUME #include "base/all/includes.h" /*-----------------BASE_EXTRACT_DecompressFile---------------------------*/ void BASE_EXTRACT_DecompressFile(BOOL DoWriteData, BOOL IsTest) { tLFN PureFileName; BOOL IsCRCOk; SHORT Attr; LONG Time; PCHAR Buf; INT Handle, BytesInBuf, Decompressed, BytesToWrite, BufSize, BufPos; UINT OriginalAttr; PCHAR NTFSSecurity; UINT NTFSSecuritySize; Attr = BASE_ARCBLK.Header.File.ATTR; Time = BASE_ARCBLK.Header.File.FTIME; Buf = NULL; BufPos = 0; BASE_STATE.FileSize = BASE_ARCBLK.Header.File.SIZE; BASE_STATE.NewSkipSize = BASE_ARCBLK.Header.File.SIZE; BASE_STATE.DoNotCount = !DoWriteData && !IsTest; BASE_STATE_OutputProgress(0, 0, 0, 0, (INT) BASE_ARCBLK.Header.File.ATTR); BASE_CRC.ReadCRC = BASE_CRC_MASK; if (DoWriteData) { if (BASE_ARCBLK.DoOutputComments) { BASE_COMMENTS_EXTERN_Output(); } if (BASE_PATHFUNC_IsNTFSStreamName(BASE_STATE.CurrentFileName)) { sprintf(PureFileName, "%s%s", BASE_PATHFUNC_GetDevicePathLen(BASE_STATE.CurrentFileName) ? "" : BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir2.Dir), BASE_STATE.CurrentFileName); BASE_PATHFUNC_NTFSStreamGetFileName(PureFileName); BASE_DOSFUNCS_GetFileAttributes(PureFileName, &OriginalAttr); BASE_DOSFUNCS_SetFileAttributes(PureFileName, OriginalAttr & (0xFFffFFff - BASE_FILELIST_RDONLY)); Handle = BASE_FUNCS_CreateDestinationFile(Attr); BASE_DOSFUNCS_SetFileAttributes(PureFileName, OriginalAttr); } else { Handle = BASE_FUNCS_CreateDestinationFile(Attr); } } else { Handle = 0; } if (Handle == -2) { goto RETURN; } if (Handle == -1) { BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; goto RETURN; } BufSize = BASE_MEMORY_MemAvailBase2(5); if (BufSize < 2048) { BufSize = 2048; } if (BufSize >= BASE_DCPR_LZ77.DictionarySize - BASE_CPRDCPR_LZ77_MAXLEN && BASE_DCPR_LZ77.DictionarySize > 1024) { BufSize = BASE_DCPR_LZ77.DictionarySize >> 1; } if (!(Buf = (PCHAR) BASE_MEMORY_GetMem(BufSize + BASE_CPRDCPR_LZ77_MAXLEN))) { goto RETURN; } if (DoWriteData) { BASE_ARCBLK_FileHeaderSecurityRead(&BASE_ARCBLK.Header, &NTFSSecurity, &NTFSSecuritySize); } if (!(Attr & BASE_DOSFUNCS_SUBDIR)) { BASE_DCPR_InitFile(); while (!BASE_ERROR_EXTERN_HandleCancel(1)) { Decompressed = BASE_DCPR_Block(&Buf[BufPos], BufSize + BASE_CPRDCPR_LZ77_MAXLEN - BufPos); if (!Decompressed && !BufPos || BASE_ERROR_EXTERN_HandleCancel(1)) { break; } BytesInBuf = BufPos + Decompressed; BytesToWrite = BytesInBuf > BufSize ? BufSize : BytesInBuf; BASE_STATE_EXTERN_OutputProgressData(Buf, BytesToWrite); if (DoWriteData) { BASE_STATE_WriteFile(Handle, Buf, BytesToWrite, 1); } else { if (IsTest) { BASE_STATE_TestOnly(BytesToWrite, 1); } else { BASE_STATE_OutputProgress(0, 0, Decompressed, Decompressed, 0); } } if (BytesInBuf > BufSize) { BufPos = BytesInBuf & (BufSize - 1); memcpy(Buf, &Buf[BufSize], BufPos); } else { BufPos = 0; } if (BASE_ERROR.ErrorCode && DoWriteData && BASE_ERROR.ErrorCode != BASE_ERROR_USER) { BASE_ERROROUT_EXTERN_ExtractSpace(); break; } if (errno == 12) { BASE_ERROROUT_EXTERN_ExtractSpace(); BASE_ERROR.ErrorCode = BASE_ERROR.DiskFull = BASE_ERROR_FULL; } } BASE_DCPR_DoneFile(); if (DoWriteData) { BASE_DOSFUNCS_SetFileTime(BASE_STATE.DestinationFileName, Handle, Time); close(Handle); if (BASE_ERROR.ErrorCode) { BASE_LFN_RemoveFile(BASE_STATE.DestinationFileName); } } if (BASE_ERROR.ErrorCode) { if (Attr & BASE_DOSFUNCS_SUBDIR) { BASE_STATE.DirCount--; } else { BASE_STATE.SummaryFileCount--; } BASE_STATE.SummaryUnComprBytes = BASE_STATE.SavedUnComprBytes; BASE_STATE.SummaryComprBytes = BASE_STATE.SavedComprBytes; } if (!(IsCRCOk = BASE_CRC.ReadCRC == BASE_ARCBLK.Header.File.CRC32)) { BASE_ERROR.DidFailCRCCheck = BASE_ERROR_BADCRC; } BASE_FUNCS.DidNotCopyAll |= BASE_ERROR.DidFailCRCCheck; BASE_STATE_EXTERN_IsCRCOkSet(&IsCRCOk, BASE_ARCBLK.Header.File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD); BASE_STATE_OutputCRCOk(IsCRCOk); } if (DoWriteData) { BASE_LFN_SetFileAttributes(BASE_STATE.DestinationFileName, Attr); BASE_DOSFUNCS_SetFileSecurity(BASE_STATE.DestinationFileName, NTFSSecurity); BASE_MEMORY_FreeCheck((PVOID)&NTFSSecurity); } BASE_MEMORY_FreeCheck((PVOID *) &Buf); return; RETURN: if (Attr & BASE_DOSFUNCS_SUBDIR) { BASE_STATE.DirCount--; } else { BASE_STATE.SummaryFileCount--; } BASE_STATE.DoNotCount = 0; } /*-----------------BASE_EXTRACT_ExtractFiles-----------------------------*/ void BASE_EXTRACT_ExtractFiles(BOOL DoWriteData, BOOL IsTest) { tLFN FileName; PCHAR FileNamePtr; INT FilesNumber; FilesNumber = BASE_FILELIST.Number; while (!BASE_ERROR_EXTERN_HandleCancel(1) && (BASE_EXTRACT.DoExtractAllVolumes || BASE_ARCBLK.Options.IsVolume && BASE_EXTRACT.DoProcessAllVolumes || FilesNumber) && BASE_ARCBLK_LoadBlock()) { if (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE) { BASE_ARCBLK_GetFileName(FileName, &BASE_ARCBLK.Header); strcpy(BASE_STATE.CurrentFileName, FileName + strlen(BASE_PATHFUNC_AddSlashToEnd( BASE_DIRDATA_Dir1.ArchiveDir))); if (!(BASE_EXTRACT.DoRemovePaths && BASE_ARCBLK.Header.File.ATTR & BASE_DOSFUNCS_SUBDIR) && (BASE_FILELIST_Check(FileName) || BASE_EXTRACT.DoExtractAllVolumes)) { if (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITBEFORE) { BASE_VOLUME_PreviousVolumeToProcess(); break; } else { if (BASE_EXTRACT.DoExtractAllVolumes) { strcpy(BASE_STATE.CurrentFileName, FileName); } if (BASE_EXTRACT.DoRemovePaths) { FileNamePtr = strrchr(BASE_STATE.CurrentFileName, BASE_PATHFUNC_SEPARATOR); if (FileNamePtr) { strcpy(FileName, FileNamePtr + 1); strcpy(BASE_STATE.CurrentFileName, FileName); } } BASE_MSGOUT_EXTERN_ExtractingOrTesting(DoWriteData); BASE_EXTRACT_DecompressFile(DoWriteData, IsTest); BASE_STATE.DestinationFileName[0] = 0; FilesNumber--; } } } } } /*-----------------BASE_EXTRACT_Extract----------------------------------*/ void BASE_EXTRACT_Extract(BOOL DoWriteData, BOOL IsTest) { tLFN ArchiveName; BASE_EXTRACT_EXTERN_ExtractBegin(); errno = 0; BASE_DCPR.Options = BASE_OPTIONS.ExtractOptions; if (DoWriteData) { BASE_STATE_EXTERN_SetExtractString(); } else { BASE_STATE_EXTERN_SetTestString(); } BASE_ARCBLK.DoOpenForReadOnly = 1; sprintf(ArchiveName, "%s%s", BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir1.Dir), BASE_DIRDATA_Dir1.ArchiveName); if (BASE_VOLUME_FirstVolumeToProcess(ArchiveName)) { if (!DoWriteData && BASE_ARCBLK.Options.IsSolid || !BASE_FILELIST.Number) { BASE_EXTRACT.DoExtractAllVolumes = 1; BASE_FILELIST.SizeOfFiles = BASE_DIRDATA_Dir1.UnPackedSize; } BASE_DCPR_Init(); BASE_EXTRACT_ExtractFiles(DoWriteData, IsTest); BASE_DCPR_Done(); BASE_ARCBLK_EXTERN_CloseArchive(1); BASE_EXTRACT.DoExtractAllVolumes = 0; } BASE_ARCBLK.DoOpenForReadOnly = 0; BASE_EXTRACT_EXTERN_ExtractEnd(); } /*-----------------BASE_EXTRACT_Test-------------------------------------*/ void BASE_EXTRACT_Test(PCHAR ArchiveName, BOOL IsTest) { tBASE_DIRDATA_DirData TempDirData; TempDirData = BASE_DIRDATA_Dir1; BASE_STATE.IsInitialized = 0; BASE_EXTRACT.DoProcessAllVolumes = 1; if (ArchiveName) { BASE_PATHFUNC_SplitFileName(BASE_DIRDATA_Dir1.Dir, BASE_DIRDATA_Dir1.ArchiveName, ArchiveName); } if (!BASE_DOSFUNCS_FileExists(ArchiveName)) { if (!BASE_VOLUME_EXTERN_ChangeVolumeToProcess(ArchiveName)) { return; } BASE_ARCBLK_EXTERN_CloseArchive(0); } if (BASE_FILELIST_Create(0, 0, 0)) { BASE_EXTRACT_Extract(0, IsTest); BASE_FILELIST_Done(); } BASE_EXTRACT.DoProcessAllVolumes = 0; BASE_DIRDATA_Dir1 = TempDirData; } unace-2.5/source/base/all/extract/extract.h0000644000175000017500000000135507157426372021465 0ustar danieldaniel00000000000000#ifndef _BASE_EXTRACT_H_INCLUDED #define _BASE_EXTRACT_H_INCLUDED #ifdef INCL_BASE_EXTRACT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL DoRemovePaths, DoExtractAllVolumes, DoProcessAllVolumes; } tBASE_EXTRACT; DECLEXT tBASE_EXTRACT BASE_EXTRACT; void BASE_EXTRACT_DecompressFile(BOOL DoWriteData, BOOL IsTest); void BASE_EXTRACT_ExtractFiles(BOOL DoWriteData, BOOL IsTest); void BASE_EXTRACT_Extract(BOOL DoWriteData, BOOL IsTest); void BASE_EXTRACT_Test(PCHAR ArchiveName, BOOL IsTest); void BASE_EXTRACT_EXTERN_ExtractBegin(void); void BASE_EXTRACT_EXTERN_ExtractEnd(void); #undef DECLEXT #endif unace-2.5/source/base/all/comments/0000755000175000017500000000000007752377756020025 5ustar danieldaniel00000000000000unace-2.5/source/base/all/comments/comments.c0000644000175000017500000000255507157426372022011 0ustar danieldaniel00000000000000#include #define INCL_BASE_COMMENTS_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_ARCBLK #define INCL_BASE_COMMENTS #define INCL_BASE_DCPR_COMMENTS #include "base/all/includes.h" /*-----------------BASE_COMMENTS_ReadComment---------------------------*/ void BASE_COMMENTS_ReadComment(void) { INT CommentSize; PCHAR CommentPos; if (!(BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_COMMENT)) { CommentSize = 0; } else { if (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE) { CommentPos = BASE_ARCBLK_FileHeaderComment(&BASE_ARCBLK.Header); CommentSize = BASE_ARCBLK_FileHeaderCommentSize(&BASE_ARCBLK.Header); } else { if (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_MAIN) { CommentPos = BASE_ARCBLK_MainHeaderComment(&BASE_ARCBLK.Header); CommentSize = BASE_ARCBLK_MainHeaderCommentSize(&BASE_ARCBLK.Header); } else { CommentSize = 0; } } } if (CommentSize > sizeof(BASE_COMMENTS.Comment) - 1) { CommentSize = sizeof(BASE_COMMENTS.Comment) - 1; } memcpy(BASE_COMMENTS.Comment, CommentPos, CommentSize); BASE_COMMENTS.CompressedSize = CommentSize; BASE_DCPR_COMMENTS_GetComment(); BASE_COMMENTS_EXTERN_ReadCommentEnd(); } unace-2.5/source/base/all/comments/comments.h0000644000175000017500000000107107704243454022002 0ustar danieldaniel00000000000000#ifndef _BASE_COMMENTS_H_INCLUDED #define _BASE_COMMENTS_H_INCLUDED #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_COMMENTS_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_COMMENTS_HASHFUNC(A, B) (A + B) typedef struct { USHORT CompressedSize; CHAR Comment[32768]; } tBASE_COMMENTS; DECLEXT tBASE_COMMENTS BASE_COMMENTS; void BASE_COMMENTS_ReadComment(void); void BASE_COMMENTS_EXTERN_Output(void); void BASE_COMMENTS_EXTERN_ReadCommentEnd(void); #undef DECLEXT #endif unace-2.5/source/base/all/memory/0000755000175000017500000000000007752377756017510 5ustar danieldaniel00000000000000unace-2.5/source/base/all/memory/nodos32.c0000644000175000017500000000300207722745466021130 0ustar danieldaniel00000000000000#include #define INCL_BASE_BITWIDTH #define INCL_BASE_MEMORY #include "base/all/includes.h" /*-----------------BASE_MEMORY_ReAlloc-----------------------------------*/ PVOID BASE_MEMORY_ReAlloc(PVOID OldPointer, INT NewSize) { PVOID NewPointer; INT OldSize; OldSize = BASE_MEMORY_Size(OldPointer); if (NewPointer = realloc((PVOID) ((PULONG) OldPointer - 1), NewSize + 4)) { BASE_MEMORY.MaxAllocate += OldSize - NewSize; *(PULONG) NewPointer = NewSize; NewPointer = (PVOID) ((PULONG) NewPointer + 1); return NewPointer; } else { return OldPointer; } } /*-----------------BASE_MEMORY_MemAvailBase2-----------------------------*/ INT BASE_MEMORY_MemAvailBase2(INT Base) { PVOID Pointer; INT I; I = BASE_MEMORY.MaxAllocate >> (Base + 11); I = 1 << ((I < 256 ? BASE_BITWIDTH_GetBitWidth(I) : BASE_BITWIDTH_GetBitWidth(I >> 8) + 8) + 10); while (!(Pointer = malloc(I))) { I -= I >> 2; } free(Pointer); return I; } /*-----------------BASE_MEMORY_MemAvailBase2Plus-------------------------*/ INT BASE_MEMORY_MemAvailBase2Plus(INT Base, INT Plus) { PVOID Pointer; INT I; I = BASE_MEMORY.MaxAllocate >> (Base + 11); I = 1 << ((I < 256 ? BASE_BITWIDTH_GetBitWidth(I) : BASE_BITWIDTH_GetBitWidth(I >> 8) + 8) + 10); while (!(Pointer = malloc(I + Plus))) { I >>= 1; } free(Pointer); return I; } unace-2.5/source/base/all/memory/nowat.c0000644000175000017500000000123207157426372020766 0ustar danieldaniel00000000000000#define INCL_BASE_MEMORY #include "base/all/includes.h" /*-----------------BASE_MEMORY_MemCopy-----------------------------------*/ void BASE_MEMORY_MemCopy(PCHAR Dest, PCHAR Source, INT Len) { while (Len--) { *Dest++ = *Source++; } } /*-----------------BASE_MEMORY_MemSet16----------------------------------*/ void BASE_MEMORY_MemSet16(PUSHORT Buf, USHORT Code, INT Len) { while (Len--) { *Buf++ = Code; } } /*-----------------BASE_MEMORY_MemSet32----------------------------------*/ void BASE_MEMORY_MemSet32(PULONG Buf, ULONG Code, INT Len) { while (Len--) { *Buf++ = Code; } } unace-2.5/source/base/all/memory/memory.h0000644000175000017500000000313207222346242021142 0ustar danieldaniel00000000000000#ifndef _BASE_MEMORY_H_INCLUDED #define _BASE_MEMORY_H_INCLUDED #ifdef INCL_BASE_MEMORY_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_MEMORY_MINGETMEMBASE2 4096 typedef struct { LONG MaxAllocate; } tBASE_MEMORY; DECLEXT tBASE_MEMORY BASE_MEMORY; void BASE_MEMORY_CopyBytes(PCHAR Dest, PCHAR Source, INT Len); void BASE_MEMORY_MemCopy(PCHAR Dest, PCHAR Source, INT Len); void BASE_MEMORY_MemSet16(PUSHORT Buf, USHORT Code, INT Len); void BASE_MEMORY_MemSet32(PULONG Buf, ULONG Code, INT Len); void BASE_MEMORY_LowMemoryErr(void); PVOID BASE_MEMORY_GetMemCheck(BOOL DoCheck, INT Size); PVOID BASE_MEMORY_GetMem(INT Size); INT BASE_MEMORY_Size(PVOID Pointer); PVOID BASE_MEMORY_GetMemBase2(PINT Size, INT Base); PVOID BASE_MEMORY_GetMemBase2Max(PINT Size, INT Base, INT Maximum); PVOID BASE_MEMORY_GetMemBase2PlusMax(PINT Size, INT Base, INT Maximum, INT Plus); void BASE_MEMORY_FreeCheck(PVOID *Pointer); PVOID BASE_MEMORY_ReAlloc(PVOID OldPointer, INT NewSize); PVOID BASE_MEMORY_ReAllocSameSize(PVOID OldPointer); void BASE_MEMORY_InitAlloc(void); void BASE_MEMORY_Optimize(void); void BASE_MEMORY_InitMaxAllocate(void); INT BASE_MEMORY_MemMax(void); INT BASE_MEMORY_MemAvail(void); INT BASE_MEMORY_MemAvailBase2(INT Base); INT BASE_MEMORY_MemAvailBase2Plus(INT Base, INT Plus); void BASE_MEMORY_EXTERN_OptimizeOtherMemory(void); ULONG BASE_MEMORY_EXTERN_MaxMemoryRequirement(void); #undef DECLEXT #endif unace-2.5/source/base/all/memory/lin.c0000644000175000017500000000241407752440742020421 0ustar danieldaniel00000000000000#include #include #include #define INCL_BASE_MEMORY #include "base/all/includes.h" /*-----------------BASE_MEMORY_InitMaxAllocate---------------------------*/ void BASE_MEMORY_InitMaxAllocate(void) { #define STEP 128*1024 int Size, StartMajorFaults; char *Buf, *NewBuf; struct rusage ru; StartMajorFaults = Size = 0; Buf = NULL; while (Size < BASE_MEMORY_EXTERN_MaxMemoryRequirement() && (NewBuf = (char*) realloc(Buf, Size + STEP))) { Buf = NewBuf; memset(&Buf[Size], 0, STEP); getrusage(RUSAGE_SELF, &ru); if (!StartMajorFaults) { StartMajorFaults = ru.ru_majflt; } if (ru.ru_nswap || ru.ru_majflt != StartMajorFaults) { free(Buf); Buf = NULL; break; } Size += STEP; } free(Buf); BASE_MEMORY.MaxAllocate = Size; BASE_MEMORY_InitAlloc(); } /*-----------------BASE_MEMORY_MemMax------------------------------------*/ INT BASE_MEMORY_MemMax(void) { return BASE_MEMORY.MaxAllocate; } /*-----------------BASE_MEMORY_MemAvail----------------------------------*/ INT BASE_MEMORY_MemAvail(void) { return BASE_MEMORY_MemMax(); } unace-2.5/source/base/all/memory/memory.c0000644000175000017500000001234607752441114021146 0ustar danieldaniel00000000000000#include #include #ifndef __MACOSX__ #include #endif #define INCL_BASE_MEMORY_EXCLUSIVE #define INCL_BASE_DCPR #define INCL_BASE_DCPR_LZ77 #define INCL_BASE_DCPR_PIC #define INCL_BASE_ERROROUT #define INCL_BASE_FILELIST #include "base/all/includes.h" /*-----------------BASE_MEMORY_GetMemCheck-------------------------------*/ PVOID BASE_MEMORY_GetMemCheck(BOOL DoCheck, INT Size) { PVOID Pointer; BOOL MemIsMaxed; INT MemBlockSize; MemIsMaxed = 1; while (Size > (MemBlockSize = BASE_MEMORY_MemMax()) && MemIsMaxed) { BASE_MEMORY_Optimize(); MemIsMaxed = MemBlockSize + 8 * 1024 < BASE_MEMORY_MemMax(); } if (Size + 4 > BASE_MEMORY.MaxAllocate) { if (DoCheck) { BASE_ERROROUT_EXTERN_Mem(); } return NULL; } if (!(Pointer = malloc(Size + 4))) { if (DoCheck) { BASE_ERROROUT_EXTERN_Mem(); } } else { BASE_MEMORY.MaxAllocate -= Size + 4; *(PULONG) Pointer = Size; Pointer = (PVOID) ((PULONG) Pointer + 1); } return Pointer; } /*-----------------BASE_MEMORY_GetMem------------------------------------*/ PVOID BASE_MEMORY_GetMem(INT Size) { return BASE_MEMORY_GetMemCheck(1, Size); } /*-----------------BASE_MEMORY_Size--------------------------------------*/ INT BASE_MEMORY_Size(PVOID Pointer) { return *((PULONG) Pointer - 1); } /*-----------------BASE_MEMORY_GetMemBase2-------------------------------*/ PVOID BASE_MEMORY_GetMemBase2(PINT Size, INT Base) { INT MemSize; MemSize = BASE_MEMORY_MemAvailBase2(Base); if (MemSize <= BASE_MEMORY_MINGETMEMBASE2) { MemSize = BASE_MEMORY_MINGETMEMBASE2; } if (Size) { *Size = MemSize; } return BASE_MEMORY_GetMem(MemSize); } /*-----------------BASE_MEMORY_GetMemBase2Max----------------------------*/ PVOID BASE_MEMORY_GetMemBase2Max(PINT Size, INT Base, INT Maximum) { INT MemSize; MemSize = BASE_MEMORY_MemAvailBase2(Base); if (MemSize <= BASE_MEMORY_MINGETMEMBASE2) { MemSize = BASE_MEMORY_MINGETMEMBASE2; } if (MemSize > Maximum) { MemSize = Maximum; } if (Size) { *Size = MemSize; } return BASE_MEMORY_GetMem(MemSize); } /*-----------------BASE_MEMORY_GetMemBase2PlusMax------------------------*/ PVOID BASE_MEMORY_GetMemBase2PlusMax(PINT Size, INT Base, INT Maximum, INT Plus) { INT MemSize; MemSize = BASE_MEMORY_MemAvailBase2Plus(Base, Plus); if (MemSize <= BASE_MEMORY_MINGETMEMBASE2) { MemSize = BASE_MEMORY_MINGETMEMBASE2; } if (MemSize > Maximum) { MemSize = Maximum; } if (Size) { *Size = MemSize; } return BASE_MEMORY_GetMem(MemSize + Plus); } /*-----------------BASE_MEMORY_FreeCheck---------------------------------*/ void BASE_MEMORY_FreeCheck(PVOID *Pointer) { if (*Pointer) { BASE_MEMORY.MaxAllocate += BASE_MEMORY_Size(*Pointer); free((PVOID) (((PULONG) *Pointer) - 1)); *Pointer = NULL; } } /*-----------------BASE_MEMORY_ReAllocSameSize---------------------------*/ PVOID BASE_MEMORY_ReAllocSameSize(PVOID OldPointer) { PVOID NewPointer; INT OldSize, MemMaxSize; if (!OldPointer) { return NULL; } MemMaxSize = BASE_MEMORY_MemMax(); OldSize = BASE_MEMORY_Size(OldPointer); if (MemMaxSize < OldSize || !(NewPointer = BASE_MEMORY_GetMemCheck(0, OldSize))) { return OldPointer; } memcpy(NewPointer, OldPointer, OldSize); BASE_MEMORY_FreeCheck(&OldPointer); if (BASE_MEMORY_MemMax() < MemMaxSize) { if (!(OldPointer = BASE_MEMORY_GetMemCheck(0, OldSize))) { return NewPointer; } memcpy(OldPointer, NewPointer, OldSize); BASE_MEMORY_FreeCheck(&NewPointer); return OldPointer; } else { return NewPointer; } } /*-----------------BASE_MEMORY_InitAlloc---------------------------------*/ void BASE_MEMORY_InitAlloc(void) { PVOID Pointer; INT Size; Pointer = NULL; Size = BASE_MEMORY.MaxAllocate; while (!Pointer && Size > 32768) { Pointer = malloc(Size); if (!Pointer) { Size -= Size / 4; } } if (Pointer) { free(Pointer); BASE_MEMORY.MaxAllocate = Size; } } /*-----------------BASE_MEMORY_Optimize----------------------------------*/ void BASE_MEMORY_Optimize(void) { INT I, J; BASE_MEMORY_EXTERN_OptimizeOtherMemory(); I = (INT) BASE_FILELIST.Last - (INT) BASE_FILELIST.List; J = (INT) BASE_FILELIST.Pos - (INT) BASE_FILELIST.List; BASE_FILELIST.List = (PCHAR)BASE_MEMORY_ReAllocSameSize(BASE_FILELIST.List); BASE_FILELIST.Last = BASE_FILELIST.List + I; BASE_FILELIST.Pos = BASE_FILELIST.List + J; BASE_DCPR.ReadBuf = (PULONG) BASE_MEMORY_ReAllocSameSize(BASE_DCPR.ReadBuf); BASE_DCPR_LZ77.Dictionary = (PCHAR) BASE_MEMORY_ReAllocSameSize(BASE_DCPR_LZ77.Dictionary); for (I = 0; I < 2; I++) { BASE_DCPR_PIC.Data[I] = (PCHAR) BASE_MEMORY_ReAllocSameSize(BASE_DCPR_PIC.Data[I]); } } unace-2.5/source/base/all/archives/0000755000175000017500000000000007752377756020004 5ustar danieldaniel00000000000000unace-2.5/source/base/all/archives/ace/0000755000175000017500000000000007752377756020534 5ustar danieldaniel00000000000000unace-2.5/source/base/all/archives/ace/ace.h0000644000175000017500000000062707157426372021426 0ustar danieldaniel00000000000000#ifndef _BASE_ARCHIVES_ACE_H_INCLUDED #define _BASE_ARCHIVES_ACE_H_INCLUDED #define BASE_ARCHIVES_ACE_GETAVCHECKSUM(AV, Len, Time) (BASE_CRC_GetCRC16(BASE_CRC_MASK,AV,Len)^((USHORT)Time)^((!Time)>>16)) INT BASE_ARCHIVES_ACE_ArchiveTest(void); void BASE_ARCHIVES_ACE_ReadArchive(void); BOOL BASE_ARCHIVES_ACE_EXTERN_ArchiveTestAVCheck(BOOL IsUnRegistered); #undef DECLEXT #endif unace-2.5/source/base/all/archives/ace/ace.c0000644000175000017500000001731007752425772021422 0ustar danieldaniel00000000000000#include #include #include #define INCL_BASE_ARCHIVES_ACE_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_ARCBLK #define INCL_BASE_ARCHIVES_TEST #define INCL_BASE_ARCHIVES_READ #define INCL_BASE_CRC #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_DOSFUNCS #define INCL_BASE_DIRDATA #define INCL_BASE_DOSFUNCS #include "base/all/includes.h" /*-----------------BASE_ARCHIVES_ACE_ArchiveTest-------------------------*/ INT BASE_ARCHIVES_ACE_ArchiveTest(void) { BOOL IsUnRegistered; INT I, Flags; ULONGLONG FilePos, OldFilePos; OldFilePos = BASE_DOSFUNCS_Tell(BASE_ARCHIVES_TEST.ArchiveHandle); for (I = 0; I < 512; I++) { if (!memcmp(&BASE_ARCHIVES_TEST.TestBuffer[I], BASE_ACESTRUC_ACESIGN, BASE_ACESTRUC_ACESIGNLEN) && (FilePos = BASE_DIRDATA_Dir1.ArchiveBegin + I - ((INT) BASE_ARCBLK.Header.Main.ACESIGN - (INT) &BASE_ARCBLK.Header)) >= 0) { Flags = ((INT) BASE_ARCBLK.Header.Main.ACESIGN - (INT) &BASE_ARCBLK.Header); Flags = ((INT) &BASE_ARCBLK.Header.Main.ACESIGN - (INT) &BASE_ARCBLK.Header); BASE_DOSFUNCS_LSeek(BASE_ARCHIVES_TEST.ArchiveHandle, FilePos, SEEK_SET); read(BASE_ARCHIVES_TEST.ArchiveHandle, (PCHAR) &BASE_ARCBLK.Header, 4); BASE_ARCBLK_AdjustEndiannessOfHeaderBase(); /* Adjusts .HEAD_CRC and .HEAD_SIZE */ if (BASE_ARCBLK.Header.Basic.HEAD_SIZE <= sizeof(BASE_ARCBLK.Header) - 4) { read(BASE_ARCHIVES_TEST.ArchiveHandle, (PCHAR) &BASE_ARCBLK.Header.Basic.HEAD_TYPE, BASE_ARCBLK.Header.Basic.HEAD_SIZE); BASE_ARCBLK_ConvertHeader32ToHeader64(); if (BASE_ARCBLK.Header.Basic.HEAD_CRC) { BASE_DIRDATA_Dir1.VersionToExtract = (BASE_ARCBLK.Header.Main.VER_EXTR % 10) | (BASE_ARCBLK.Header.Main.VER_EXTR / 10 << 8); BASE_DIRDATA_Dir1.VersionCreated = (BASE_ARCBLK.Header.Main.VER_CR % 10) | (BASE_ARCBLK.Header.Main.VER_CR / 10 << 8); BASE_DIRDATA_Dir1.HostCreated = BASE_ARCBLK.Header.Main.HOST_CR; BASE_DIRDATA_Dir1.ArchiveType = 0; Flags = BASE_ARCBLK.Header.Main.HEAD_FLAGS; BASE_DIRDATA_Dir1.HasRecoveryRec = (Flags & BASE_ACESTRUC_FLAG_RECOVERYREC) > 0; BASE_DIRDATA_Dir1.IsSolid = (Flags & BASE_ACESTRUC_FLAG_SOLID) > 0; BASE_DIRDATA_Dir1.IsMultiVol = (Flags & BASE_ACESTRUC_FLAG_MULTIVOLUME) > 0; BASE_DIRDATA_Dir1.VolumeNumber = BASE_ARCBLK.Header.Main.VOL_NUM; BASE_DIRDATA_Dir1.HasAV = (Flags & BASE_ACESTRUC_FLAG_AV) > 0; BASE_DIRDATA_Dir1.HasMainCmt = (Flags & BASE_ACESTRUC_FLAG_COMMENT) > 0; BASE_DIRDATA_Dir1.IsLocked = (Flags & BASE_ACESTRUC_FLAG_LOCK) > 0; BASE_DIRDATA_Dir1.IsSFX |= (Flags & BASE_ACESTRUC_FLAG_SFX) > 0; BASE_DIRDATA_Dir1.ArchiveBegin = FilePos; BASE_DIRDATA_Dir1.TimeCreated = BASE_DOSFUNCS_CalcFileTime(BASE_ARCBLK.Header.Main.TIME_CR); IsUnRegistered = !memcmp(BASE_ARCBLK.Header.Main.AV, "*UNREGISTERED VERSION*", 22); BASE_DIRDATA_Dir1.IsAVOk = BASE_ARCHIVES_ACE_EXTERN_ArchiveTestAVCheck(IsUnRegistered); BASE_DIRDATA_Dir1.IsNotCompatible = BASE_ARCBLK.Header.Main.RES1 != BASE_ARCHIVES_ACE_GETAVCHECKSUM(BASE_ARCBLK.Header.Main.AV, BASE_ARCBLK.Header.Main.AV_SIZE, BASE_ARCBLK.Header.Main.TIME_CR); if (IsUnRegistered) { BASE_DIRDATA_Dir1.HasAV = 0; } return 1; } } BASE_DOSFUNCS_LSeek(BASE_ARCHIVES_TEST.ArchiveHandle, OldFilePos, SEEK_SET); } } return 0; } /*-----------------BASE_ARCHIVES_ACE_ReadArchive-------------------------*/ void BASE_ARCHIVES_ACE_ReadArchive(void) { INT DicBits, Attributes, Read; tLFN ArchiveFileName; while (!BASE_ERROR.ErrorCode) { if (!(Read = read(BASE_ARCHIVES_TEST.ArchiveHandle, (PCHAR) &BASE_ARCBLK.Header, 4))) { break; } BASE_ARCBLK_AdjustEndiannessOfHeaderBase(); /* Adjusts .HEAD_CRC and .HEAD_SIZE */ if (Read < 4 || BASE_ARCBLK.Header.Basic.HEAD_SIZE > sizeof(BASE_ARCBLK.Header.Basic) - 4 || read(BASE_ARCHIVES_TEST.ArchiveHandle, (PCHAR) &BASE_ARCBLK.Header.Basic.HEAD_TYPE, BASE_ARCBLK.Header.Basic.HEAD_SIZE) < BASE_ARCBLK.Header.Basic.HEAD_SIZE) { BASE_DIRDATA_Dir1.IsBroken = 1; break; } BASE_ARCBLK_ConvertHeader32ToHeader64(); if (!BASE_ARCBLK.Header.Basic.HEAD_CRC) { BASE_DIRDATA_Dir1.IsBroken = 1; } if (BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE) { BASE_ARCBLK_GetFileName(ArchiveFileName, &BASE_ARCBLK.Header); BASE_DIRDATA_Dir1.HasPassword |= (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD) > 0; BASE_DIRDATA_Dir1.HasFileCmt |= (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_COMMENT) > 0; BASE_DIRDATA_Dir1.UnPackedSize += BASE_ARCBLK.Header.File.SIZE; BASE_DIRDATA_Dir1.PackedSize += BASE_ARCBLK.Header.File.PSIZE; Attributes = BASE_ARCBLK.Header.File.ATTR; if (!(Attributes & BASE_DOSFUNCS_SUBDIR)) { BASE_DIRDATA_Dir1.FileNumber++; } if (BASE_ARCBLK.Header.File.TECH.TYPE == BASE_ACESTRUC_TECHNIQUE_LZ77_1 || BASE_ARCBLK.Header.File.TECH.TYPE == BASE_ACESTRUC_TECHNIQUE_BLOCKED_1) { DicBits = BASE_ARCBLK.Header.File.TECH.PARM & 15; if (BASE_DIRDATA_Dir1.Dictionary < DicBits) { BASE_DIRDATA_Dir1.Dictionary = DicBits; } } if (BASE_ARCHIVES_READ.FileNumber == BASE_ARCHIVES_READ.MaxFileNumber) { BASE_ERROROUT_EXTERN_ManyFilesError(); break; } BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Size = BASE_ARCBLK.Header.File.SIZE; BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].PackedSize = BASE_ARCBLK.Header.File.PSIZE; BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Time = BASE_DOSFUNCS_CalcFileTime(BASE_ARCBLK.Header.File.FTIME); Attributes |= (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITAFTER) ? BASE_FILELIST_SPLITAFTER : 0; Attributes |= (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITBEFORE) ? BASE_FILELIST_SPLITBEFORE : 0; Attributes |= (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD) ? BASE_FILELIST_ENCRYPTED : 0; BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Attr = Attributes; BASE_ARCHIVES_READ.FileNumber++; strcpy(BASE_ARCHIVES_READ.FileNamesEnd, ArchiveFileName); BASE_ARCHIVES_READ.FileNamesEnd += strlen(ArchiveFileName) + 1; } if (BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_ADDSIZE) { BASE_DOSFUNCS_LSeek(BASE_ARCHIVES_TEST.ArchiveHandle, BASE_ARCBLK.Header.Basic.ADDSIZE, SEEK_CUR); } } BASE_DIRDATA_Dir1.Dictionary = BASE_DIRDATA_Dir1.Dictionary + 10; } unace-2.5/source/base/all/archives/read/0000755000175000017500000000000007752377756020717 5ustar danieldaniel00000000000000unace-2.5/source/base/all/archives/read/read.c0000644000175000017500000001055407227026572021763 0ustar danieldaniel00000000000000#include #include #include #define INCL_BASE_ARCHIVES_READ_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_ARCHIVES_TEST #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_FILELIST #define INCL_BASE_LFN #define INCL_BASE_MEMORY #define INCL_BASE_MSGOUT #define INCL_BASE_VOLUME #include "base/all/includes.h" /*-----------------BASE_ARCHIVES_READ_FreeArchiveList--------------------*/ void BASE_ARCHIVES_READ_FreeArchiveList(void) { BASE_MEMORY_FreeCheck((PVOID *) &BASE_ARCHIVES_READ.FileData); BASE_MEMORY_FreeCheck((PVOID *) &BASE_ARCHIVES_READ.FileNames); } /*-----------------BASE_ARCHIVES_READ_GetArchiveList---------------------*/ void BASE_ARCHIVES_READ_GetArchiveList(void) { INT I; tLFN FileName; PCHAR ArchiveFileName; SHORT Attr; ArchiveFileName = BASE_ARCHIVES_READ.FileNames; for (I = 0; I < BASE_ARCHIVES_READ.FileNumber; I++) { strcpy(FileName, ArchiveFileName); Attr = BASE_ARCHIVES_READ.FileData[I].Attr; (*BASE_ARCHIVES_READ.ProcessFile) (FileName, BASE_ARCHIVES_READ.FileData[I]); ArchiveFileName += strlen(ArchiveFileName) + 1; if (BASE_ERROR.ErrorCode) { break; } } } /*-----------------BASE_ARCHIVES_READ_ReadArchive------------------------*/ INT BASE_ARCHIVES_READ_ReadArchive(PCHAR ArchiveName) { PVOID SavedScreenPtr; INT Result, BufSize; BASE_ARCHIVES_READ.FileNumber = BASE_DIRDATA_Dir1.IsBroken = BASE_DIRDATA_Dir1.Dictionary = BASE_DIRDATA_Dir1.VersionToExtract = BASE_DIRDATA_Dir1.HasPassword = BASE_DIRDATA_Dir1.FileNumber = BASE_DIRDATA_Dir1.UnPackedSize = BASE_DIRDATA_Dir1.PackedSize = BASE_DIRDATA_Dir1.HasFileCmt = BASE_DIRDATA_Dir1.HasRecoveryRec = 0; BASE_MSGOUT_EXTERN_ReadingArchive(&SavedScreenPtr); Result = BASE_ARCHIVES_TEST_ArchiveTest(ArchiveName, BASE_ARCHIVES_TEST.MaxTestSectors, 1); if (Result) { BASE_ARCHIVES_READ_FreeArchiveList(); BufSize = BASE_MEMORY_MemAvailBase2(2); BASE_ARCHIVES_READ.MaxFileNumber = BufSize / sizeof(*BASE_ARCHIVES_READ.FileData); BASE_ARCHIVES_READ.FileData = (pBASE_FILELIST_FileData) BASE_MEMORY_GetMem(BufSize); if (!BASE_ARCHIVES_READ.FileData) { return 0; } BASE_ARCHIVES_READ.FileNames = BASE_ARCHIVES_READ.FileNamesEnd = (PCHAR) BASE_MEMORY_GetMemBase2(0, 1); if (!BASE_ARCHIVES_READ.FileNames) { return 0; } if (-1 == (BASE_ARCHIVES_TEST.ArchiveHandle = BASE_LFN_ShareOpen(ArchiveName, O_RDONLY | O_BINARY, 0, S_IRWXU | S_IRWXG | S_IRWXO))) { BASE_ERROROUT_EXTERN_OpenArchiveRead(); BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; } else { BASE_DOSFUNCS_LSeek(BASE_ARCHIVES_TEST.ArchiveHandle, BASE_DIRDATA_Dir1.ArchiveBegin, SEEK_SET); BASE_ARCHIVES_READ_EXTERN_ReadArchiveProc(); close(BASE_ARCHIVES_TEST.ArchiveHandle); } if (BASE_DIRDATA_Dir1.IsBroken) { BASE_ERROROUT_EXTERN_BrokenArchive(); BASE_ERROR.ErrorCode = BASE_ERROR_BADCRC; } BASE_ARCHIVES_READ.FileData = (pBASE_FILELIST_FileData) BASE_MEMORY_ReAlloc((PVOID) BASE_ARCHIVES_READ.FileData, BASE_ARCHIVES_READ.FileNumber * sizeof(tBASE_FILELIST_FileData)); BASE_ARCHIVES_READ.FileNames = (PCHAR) BASE_MEMORY_ReAlloc((PVOID) BASE_ARCHIVES_READ.FileNames, BASE_ARCHIVES_READ.FileNamesEnd - BASE_ARCHIVES_READ.FileNames); if (!BASE_FILELIST.List) { BASE_MEMORY_Optimize(); } BASE_DIRDATA_Dir1.IsACE = !BASE_DIRDATA_Dir1.ArchiveType; BASE_ARCHIVES_READ_EXTERN_GetArchiveDescription(); } else { if (!BASE_ERROR.ErrorCode) { BASE_ERROROUT_EXTERN_IsNotArchive(); BASE_ERROR.ErrorCode = BASE_ERROR_OTHER; } } if (BASE_DIRDATA_Dir1.IsBroken) { BASE_ERROR.ErrorCode = BASE_ERROR_BADCRC; } BASE_MSGOUT_EXTERN_ReadingArchiveEnd(&SavedScreenPtr); return Result; } unace-2.5/source/base/all/archives/read/read.h0000644000175000017500000000156707704243422021767 0ustar danieldaniel00000000000000#ifndef _BASE_ARCHIVES_READ_H_INCLUDED #define _BASE_ARCHIVES_READ_H_INCLUDED #include "base/all/filelist/filelist.h" #ifdef INCL_BASE_ARCHIVES_READ_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { pBASE_FILELIST_FileData FileData; PCHAR FileNames, FileNamesEnd; INT MaxFileNumber, FileNumber; void (*ProcessFile) (PCHAR FileName, tBASE_FILELIST_FileData FileData); } tBASE_ARCHIVES_READ; DECLEXT tBASE_ARCHIVES_READ BASE_ARCHIVES_READ; void BASE_ARCHIVES_READ_FreeArchiveList(void); void BASE_ARCHIVES_READ_GetArchiveList(void); INT BASE_ARCHIVES_READ_ReadArchive(PCHAR ArchiveName); void BASE_ARCHIVES_READ_EXTERN_ReadArchiveProc(void); void BASE_ARCHIVES_READ_EXTERN_GetArchiveDescription(void); #undef DECLEXT #endif unace-2.5/source/base/all/archives/test/0000755000175000017500000000000007752377756020763 5ustar danieldaniel00000000000000unace-2.5/source/base/all/archives/test/test.c0000644000175000017500000000623407704276732022100 0ustar danieldaniel00000000000000#include #include #include #define INCL_BASE_ARCHIVES_TEST_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_ARCHIVES_ACE #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #include "base/all/includes.h" /*-----------------BASE_ARCHIVES_TEST_ArchiveTest------------------------*/ INT BASE_ARCHIVES_TEST_ArchiveTest(PCHAR FileName, INT MaxTestSecs, BOOL IgnoreKeys) { BOOL IsArchive; PCHAR ArchiveDescription; INT TestPos, Sectors, Read; ULONGLONG FilePos; tBASE_DIRDATA_DirData TempDirData; BASE_DIRDATA_Dir1.ArchiveBegin = BASE_DIRDATA_Dir1.IsSFX = BASE_DIRDATA_Dir1.IsLocked = BASE_DIRDATA_Dir1.HasAV = BASE_DIRDATA_Dir1.HasMainCmt = BASE_DIRDATA_Dir1.IsMultiVol = BASE_DIRDATA_Dir1.IsSolid = TestPos = Sectors = FilePos = IsArchive = 0; BASE_DIRDATA_Dir1.IsAVOk = 1; if (MaxTestSecs) { errno = 0; if ((BASE_ARCHIVES_TEST.ArchiveHandle = BASE_LFN_ShareOpen(FileName, O_RDONLY | O_BINARY, 0, S_IRWXU | S_IRWXG | S_IRWXO)) == -1) { strcpy(BASE_ARCBLK.ArchiveFile, FileName); BASE_ERROROUT_EXTERN_OpenArchiveRead(); BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; } while (BASE_ARCHIVES_TEST_EXTERN_ArchiveTestBreak(IgnoreKeys, Sectors) && Sectors < MaxTestSecs) { Read = read(BASE_ARCHIVES_TEST.ArchiveHandle, (PVOID)&BASE_ARCHIVES_TEST.TestBuffer[TestPos], 512 + 32 -TestPos); if (!Read && !TestPos || errno) { break; } memset(&BASE_ARCHIVES_TEST.TestBuffer[TestPos + Read], 0, 512 + 32 - TestPos - Read); BASE_DIRDATA_Dir1.IsSFX |= (!Sectors && *(PUSHORT) &BASE_ARCHIVES_TEST.TestBuffer == ('M' | ('Z'<< 8))); BASE_DIRDATA_Dir1.ArchiveBegin = FilePos; if (BASE_ARCHIVES_ACE_ArchiveTest()) { IsArchive = 1; TempDirData = BASE_DIRDATA_Dir1; } BASE_ARCHIVES_TEST_EXTERN_ArchiveTestOtherFormats(&IsArchive, FilePos, &TempDirData); if (IsArchive) { ArchiveDescription = BASE_DIRDATA_Dir1.ArchiveDescription; BASE_DIRDATA_Dir1 = TempDirData; BASE_DIRDATA_Dir1.ArchiveDescription = ArchiveDescription; BASE_DIRDATA_Dir1.IsACE = !BASE_DIRDATA_Dir1.ArchiveType; close(BASE_ARCHIVES_TEST.ArchiveHandle); if (BASE_DIRDATA_Dir1.IsACE && BASE_DIRDATA_Dir1.IsNotCompatible) { BASE_ERROROUT_EXTERN_IsNotCompatible(); } return 1; } memcpy(BASE_ARCHIVES_TEST.TestBuffer, &BASE_ARCHIVES_TEST.TestBuffer[512], 32); TestPos = Read ? 32 : 0; Sectors++; FilePos += 512; } close(BASE_ARCHIVES_TEST.ArchiveHandle); } return 0; } unace-2.5/source/base/all/archives/test/test.h0000644000175000017500000000166107704243430022071 0ustar danieldaniel00000000000000#ifndef _BASE_ARCHIVES_TEST_H_INCLUDED #define _BASE_ARCHIVES_TEST_H_INCLUDED #include "base/all/dirdata/dirdata.h" #ifdef INCL_BASE_ARCHIVES_TEST_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { INT MaxTestSectors; CHAR TestBuffer[512 + 32]; INT ArchiveHandle; } tBASE_ARCHIVES_TEST; DECLEXT tBASE_ARCHIVES_TEST BASE_ARCHIVES_TEST; INT BASE_ARCHIVES_TEST_ArchiveTest(PCHAR FileName, INT MaxTestSecs, BOOL IgnoreKeys); BOOL BASE_ARCHIVES_TEST_EXTERN_ArchiveTestBreak(BOOL IgnoreKeys, INT Sectors); void BASE_ARCHIVES_TEST_EXTERN_ArchiveTestOtherFormats(PINT IsArchive, INT FilePos, pBASE_DIRDATA_DirData TempDirData); #undef DECLEXT #endif unace-2.5/source/base/all/msgout/0000755000175000017500000000000007752377756017516 5ustar danieldaniel00000000000000unace-2.5/source/base/all/msgout/msgout.c0000644000175000017500000000010607157426372021161 0ustar danieldaniel00000000000000#define INCL_BASE_MSGOUT_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/msgout/msgout.h0000644000175000017500000000110607157426372021167 0ustar danieldaniel00000000000000#ifndef _BASE_MSGOUT_H_INCLUDED #define _BASE_MSGOUT_H_INCLUDED void BASE_MSGOUT_EXTERN_ListCreateBegin(PVOID *SavedScreen); void BASE_MSGOUT_EXTERN_ListAddingFile(PCHAR FileName); void BASE_MSGOUT_EXTERN_ListCreateEnd(PVOID *SavedScreen); void BASE_MSGOUT_EXTERN_ReadingArchive(PVOID *SavedScreen); void BASE_MSGOUT_EXTERN_ReadingArchiveEnd(PVOID *SavedScreen); void BASE_MSGOUT_EXTERN_Analyzing(PCHAR FileName); void BASE_MSGOUT_EXTERN_ExtractingOrTesting(BOOL IsExtracting); void BASE_MSGOUT_EXTERN_TestBegin(PCHAR ArchiveName); #endif unace-2.5/source/base/all/volume/0000755000175000017500000000000007752377756017507 5ustar danieldaniel00000000000000unace-2.5/source/base/all/volume/volume.c0000644000175000017500000000774207631367660021161 0ustar danieldaniel00000000000000#include #define INCL_BASE_VOLUME_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_DIRDATA #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_EXTRACT #include "base/all/includes.h" /*-----------------BASE_VOLUME_GetVolumeName-----------------------------*/ PCHAR BASE_VOLUME_GetVolumeName(PCHAR NewVolumeName, PCHAR VolumeName, INT Type, INT AddToVolumeNumber, BOOL IsSFX) { PCHAR ExtensionPos; INT VolumeNumber; strcpy(NewVolumeName, VolumeName); if ((ExtensionPos = (PCHAR) strrchr(NewVolumeName, '.')) == NULL || !*(ExtensionPos + 1)) { VolumeNumber = -1; ExtensionPos = NewVolumeName + strlen(NewVolumeName); } else { ExtensionPos++; VolumeNumber = (*(ExtensionPos + 1) - '0') * 10 + *(ExtensionPos + 2) - '0'; if (!in(VolumeNumber, 0, 99)) { VolumeNumber = -1; } if (in(*ExtensionPos, '0', '9')) { VolumeNumber += (*ExtensionPos - '0') * 100; } } VolumeNumber += AddToVolumeNumber; if (VolumeNumber < -1) { VolumeNumber = -1; } if (!VolumeNumber && Type == 3) { VolumeNumber = AddToVolumeNumber > 0 ? 1 : -1; } if (VolumeNumber == -1) { strcpy(ExtensionPos, ARCHIVEEXTENSIONS[IsSFX ? 4 : Type]); } else { if (VolumeNumber < 100) { *ExtensionPos = Type ? ARCHIVEEXTENSIONS[Type][0] : 'C'; } else { *ExtensionPos = VolumeNumber / 100 + '0'; } *(ExtensionPos + 1) = (VolumeNumber / 10) % 10 + '0'; *(ExtensionPos + 2) = VolumeNumber % 10 + '0'; if (!BASE_DOSFUNCS_FileExists(NewVolumeName) && *ExtensionPos == 'C') { *ExtensionPos = 'c'; } } return NewVolumeName; } /*-----------------BASE_VOLUME_NextVolumeToProcess-----------------------*/ INT BASE_VOLUME_NextVolumeToProcess(BOOL IsZeroLengthFile) { INT Result; if (BASE_VOLUME.DoNotProcessNextVolume) { return 0; } BASE_VOLUME.CurrentVolumeNumber++; BASE_ARCBLK_EXTERN_CloseArchive(1); BASE_VOLUME_GetVolumeName(BASE_ARCBLK.ArchiveFile, BASE_ARCBLK.ArchiveFile, 0, 1, BASE_ARCBLK.Options.IsSFX); if (!BASE_VOLUME_EXTERN_ChangeVolumeToProcess(BASE_ARCBLK.ArchiveFile)) { if (!BASE_ERROR.ErrorCode) { BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; } return 0; } Result = BASE_ARCBLK_LoadBlock(); if (Result && IsZeroLengthFile) { Result = BASE_ARCBLK_LoadBlock(); } return Result; } /*-----------------BASE_VOLUME_PreviousVolumeToProcess-------------------*/ void BASE_VOLUME_PreviousVolumeToProcess(void) { BASE_ARCBLK_EXTERN_CloseArchive(1); BASE_VOLUME.CurrentVolumeNumber--; BASE_VOLUME_GetVolumeName(BASE_ARCBLK.ArchiveFile, BASE_ARCBLK.ArchiveFile, 0, -1, BASE_DIRDATA_Dir1.IsSFX); if (!BASE_VOLUME_EXTERN_ChangeVolumeToProcess(BASE_ARCBLK.ArchiveFile)) { if (!BASE_ERROR.ErrorCode) { BASE_ERROR.ErrorCode = BASE_ERROR_OPEN; } return; } return; } /*-----------------BASE_VOLUME_FirstVolumeToProcess----------------------*/ INT BASE_VOLUME_FirstVolumeToProcess(PCHAR VolumeName) { tLFN FirstVolumeName; if ((BASE_EXTRACT.DoExtractAllVolumes || BASE_DIRDATA_Dir1.IsSolid) && BASE_DIRDATA_Dir1.VolumeNumber) { strcpy(FirstVolumeName, VolumeName); BASE_VOLUME.CurrentVolumeNumber = 0; BASE_VOLUME_GetVolumeName(FirstVolumeName, FirstVolumeName, 0, -100000, BASE_DIRDATA_Dir1.IsSFX); if (!BASE_VOLUME_EXTERN_ChangeVolumeToProcess(FirstVolumeName)) { return 0; } } else { if (!BASE_ARCBLK_OpenArchive(VolumeName, 0, 1, 1, 1)) { return 0; } } // BASE_VOLUME.CurrentVolumeNumber = 0; return !BASE_ERROR.ErrorCode; } unace-2.5/source/base/all/volume/volume.h0000644000175000017500000000146307157426372021157 0ustar danieldaniel00000000000000#ifndef _BASE_VOLUME_H_INCLUDED #define _BASE_VOLUME_H_INCLUDED #ifdef INCL_BASE_VOLUME_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL DoNotProcessNextVolume, DoProcessAllVolumes; UINT CurrentVolumeNumber; } tBASE_VOLUME; DECLEXT tBASE_VOLUME BASE_VOLUME; PCHAR BASE_VOLUME_GetVolumeName(PCHAR NewVolumeName, PCHAR VolumeName, INT Type, INT AddToVolumeNumber, BOOL IsSFX); INT BASE_VOLUME_NextVolumeToProcess(BOOL IsZeroLengthFile); void BASE_VOLUME_PreviousVolumeToProcess(void); INT BASE_VOLUME_FirstVolumeToProcess(PCHAR VolumeName); INT BASE_VOLUME_EXTERN_ChangeVolumeToProcess(PCHAR VolumeName); #undef DECLEXT #endif unace-2.5/source/base/all/arcinfo/0000755000175000017500000000000007752377756017621 5ustar danieldaniel00000000000000unace-2.5/source/base/all/arcinfo/arcinfo.c0000644000175000017500000000172407157426372021376 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_ARCINFO_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_ARCHIVES_READ #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_FILELIST #define INCL_BASE_MEMORY #define INCL_BASE_MSGOUT #define INCL_BASE_VOLUME #include "base/all/includes.h" /*-----------------BASE_ARCINFO_GetArchiveInfo---------------------------*/ void BASE_ARCINFO_GetArchiveInfo(PCHAR ArchiveName) { BASE_DIRDATA_Dir1.UnPackedSize = 0; if (BASE_ARCINFO_EXTERN_DidNotCreateArchive()) { if (!BASE_ARCHIVES_READ_ReadArchive(ArchiveName)) { BASE_DIRDATA_Dir1.UnPackedSize = BASE_DIRDATA_Dir1.IsMultiVol = 0; BASE_DIRDATA_Dir1.Dictionary = 1; } BASE_VOLUME.CurrentVolumeNumber = BASE_DIRDATA_Dir1.VolumeNumber; } BASE_FILELIST.SizeOfFiles = BASE_DIRDATA_Dir1.IsMultiVol ? 0 : BASE_DIRDATA_Dir1.UnPackedSize; } unace-2.5/source/base/all/arcinfo/arcinfo.h0000644000175000017500000000031107157426374021374 0ustar danieldaniel00000000000000#ifndef _BASE_ARCINFO_H_INCLUDED #define _BASE_ARCINFO_H_INCLUDED void BASE_ARCINFO_GetArchiveInfo(PCHAR ArchiveName); BOOL BASE_ARCINFO_EXTERN_DidNotCreateArchive(void); #endif unace-2.5/source/base/all/acestruc.h0000644000175000017500000001544207710560400020136 0ustar danieldaniel00000000000000#ifndef _BASE_ACESTRUC_H_INCLUDED #define _BASE_ACESTRUC_H_INCLUDED #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_ACESTRUC_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define BASE_ACESTRUC_EXTRACTVERSION 20 #define BASE_ACESTRUC_HOST_MSDOS 0 #define BASE_ACESTRUC_HOST_OS2 1 #define BASE_ACESTRUC_HOST_WIN32 2 #define BASE_ACESTRUC_HOST_LINUX 12 #define BASE_ACESTRUC_ACESIGNLEN 7 #if defined(__OS2__) #define BASE_ACESTRUC_CURRENTHOST BASE_ACESTRUC_HOST_OS2 #else #if defined(__NT__) #define BASE_ACESTRUC_CURRENTHOST BASE_ACESTRUC_HOST_WIN32 #else #define BASE_ACESTRUC_CURRENTHOST BASE_ACESTRUC_HOST_MSDOS #endif #endif #define BASE_ACESTRUC_FLAG_ADDSIZE 1 //all #define BASE_ACESTRUC_FLAG_COMMENT 2 //main, file #define BASE_ACESTRUC_FLAG_64BIT 4 //file, recovery #define BASE_ACESTRUC_FLAG_V20FORMAT 256 //main #define BASE_ACESTRUC_FLAG_SFX 512 //main #define BASE_ACESTRUC_FLAG_LIMITSFXJR 1024 //main #define BASE_ACESTRUC_FLAG_SECURITY 1024 //NTFS security #define BASE_ACESTRUC_FLAG_MULTIVOLUME 2048 //main #define BASE_ACESTRUC_FLAG_AV 4096 //main #define BASE_ACESTRUC_FLAG_SPLITBEFORE 4096 //file #define BASE_ACESTRUC_FLAG_RECOVERYREC 8192 //main #define BASE_ACESTRUC_FLAG_SPLITAFTER 8192 //file #define BASE_ACESTRUC_FLAG_LOCK 16384 //main #define BASE_ACESTRUC_FLAG_PASSWORD 16384 //file #define BASE_ACESTRUC_FLAG_SOLID 32768 //main, file // #define BASE_ACESTRUC_BLOCK_MAIN 0 #define BASE_ACESTRUC_BLOCK_FILE32 1 #define BASE_ACESTRUC_BLOCK_RECOVERY32 2 #define BASE_ACESTRUC_BLOCK_FILE 3 #define BASE_ACESTRUC_BLOCK_RECOVERY 4 #define BASE_ACESTRUC_BLOCK_RECOVERY2 5 // #define BASE_ACESTRUC_TECHNIQUE_STORE 0 #define BASE_ACESTRUC_TECHNIQUE_LZ77_1 1 #define BASE_ACESTRUC_TECHNIQUE_BLOCKED_1 2 // #define BASE_ACESTRUC_BLOCKEDTYPE_LZ77_NORM 0 #define BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA 1 #define BASE_ACESTRUC_BLOCKEDTYPE_LZ77_EXE 2 #define BASE_ACESTRUC_BLOCKEDTYPE_SOUND_8 3 #define BASE_ACESTRUC_BLOCKEDTYPE_SOUND_16 4 #define BASE_ACESTRUC_BLOCKEDTYPE_SOUND_32_1 5 #define BASE_ACESTRUC_BLOCKEDTYPE_SOUND_32_2 6 #define BASE_ACESTRUC_BLOCKEDTYPE_PIC 7 #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { UCHAR TYPE; UCHAR QUAL; USHORT PARM; } tBASE_ACESTRUC_TECHSTRUC; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONG ADDSIZE; UCHAR other[32768]; } tBASE_ACESTRUC_BASICHEADER32, *pBASE_ACESTRUC_BASICHEADER32; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONGLONG ADDSIZE; UCHAR other[32768]; } tBASE_ACESTRUC_BASICHEADER, *pBASE_ACESTRUC_BASICHEADER; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; CHAR ACESIGN[BASE_ACESTRUC_ACESIGNLEN]; UCHAR VER_EXTR; UCHAR VER_CR; UCHAR HOST_CR; UCHAR VOL_NUM; ULONG TIME_CR; USHORT RES1; //undocumented:AV-CHECK:AV_CRC16^(!TIME_CR)^(TIME_CR>>16) USHORT RES2; ULONG RES; UCHAR AV_SIZE; CHAR AV[256]; USHORT COMM_SIZE; CHAR COMM[32768]; CHAR RES3[17]; //undocumented:Archive-CRC, wenn AV; stuff wenn registr. } tBASE_ACESTRUC_MAINHEADER, *pBASE_ACESTRUC_MAINHEADER; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONG PSIZE; ULONG SIZE; ULONG FTIME; ULONG ATTR; ULONG CRC32; tBASE_ACESTRUC_TECHSTRUC TECH; USHORT RESERVED; USHORT FNAME_SIZE; tLFN FNAME; USHORT COMM_SIZE; CHAR COMM[32768]; USHORT SECURITY_SIZE; CHAR SECURITY[512]; } tBASE_ACESTRUC_FILEHEADER32, *pBASE_ACESTRUC_FILEHEADER32; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONGLONG PSIZE; ULONGLONG SIZE; ULONG FTIME; ULONG ATTR; ULONG CRC32; tBASE_ACESTRUC_TECHSTRUC TECH; USHORT RESERVED; USHORT FNAME_SIZE; tLFN FNAME; USHORT COMM_SIZE; CHAR COMM[32768]; USHORT SECURITY_SIZE; CHAR SECURITY[512]; } tBASE_ACESTRUC_FILEHEADER, *pBASE_ACESTRUC_FILEHEADER; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONG REC_BLK_SIZE; UCHAR ACESIGN[BASE_ACESTRUC_ACESIGNLEN]; ULONG REL_STRT; ULONG CLUSTER; ULONG CL_SIZE; USHORT REC_CRC; //addsize:blks-crc16, rec-data (size=cl_size) } tBASE_ACESTRUC_RECOVERYHEADER32, *pBASE_ACESTRUC_RECOVERYHEADER32; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONGLONG REC_BLK_SIZE; UCHAR ACESIGN[BASE_ACESTRUC_ACESIGNLEN]; ULONGLONG REL_STRT; ULONG CLUSTER; ULONG CL_SIZE; USHORT REC_CRC; //addsize:blks-crc16, rec-data (size=cl_size) } tBASE_ACESTRUC_RECOVERYHEADER, *pBASE_ACESTRUC_RECOVERYHEADER; typedef struct { USHORT HEAD_CRC; USHORT HEAD_SIZE; UCHAR HEAD_TYPE; USHORT HEAD_FLAGS; ULONGLONG REC_BLK_SIZE; UCHAR ACESIGN[BASE_ACESTRUC_ACESIGNLEN]; ULONGLONG REL_STRT; USHORT SECTORS; USHORT SECTORSPERCLUSTER; ULONG CL_SIZE; //addsize:blks-crc16, rec-data (size=cl_size) } tBASE_ACESTRUC_RECOVERYHEADER2, *pBASE_ACESTRUC_RECOVERYHEADER2; typedef union { tBASE_ACESTRUC_BASICHEADER32 Basic32; tBASE_ACESTRUC_BASICHEADER Basic; tBASE_ACESTRUC_MAINHEADER Main; tBASE_ACESTRUC_FILEHEADER32 File32; tBASE_ACESTRUC_FILEHEADER File; tBASE_ACESTRUC_RECOVERYHEADER32 Recovery32; tBASE_ACESTRUC_RECOVERYHEADER Recovery; tBASE_ACESTRUC_RECOVERYHEADER2 Recovery2; } tBASE_ACESTRUC_HEADER, *pBASE_ACESTRUC_HEADER; #define RESTOREALIGNMENT #include "base/all/packprag.h" DECLEXT PCHAR const BASE_ACESTRUC_ACESIGN #ifdef INCL_BASE_ACESTRUC_EXCLUSIVE #ifdef USELIMITED = "USELTD" #else = "**ACE**" #endif #endif ; DECLEXT PCHAR const BASE_ACESTRUC_EXTENSION #ifdef INCL_BASE_ACESTRUC_EXCLUSIVE #ifdef USELIMITED = ".acl" #else = ".ace" #endif #endif ; DECLEXT INT const BASE_ACESTRUC_IsACL #ifdef INCL_BASE_ACESTRUC_EXCLUSIVE #ifdef USELIMITED = 1 #else = 0 #endif #endif ; #undef DECLEXT #endif unace-2.5/source/base/all/options/0000755000175000017500000000000007752377756017673 5ustar danieldaniel00000000000000unace-2.5/source/base/all/options/options.c0000644000175000017500000000010707157426372021514 0ustar danieldaniel00000000000000#define INCL_BASE_OPTIONS_EXCLUSIVE #include "base/all/includes.h" unace-2.5/source/base/all/options/options.h0000644000175000017500000000212407704243554021517 0ustar danieldaniel00000000000000#ifndef _BASE_OPTIONS_H_INCLUDED #define _BASE_OPTIONS_H_INCLUDED #include "base/all/crypt/crypt.h" #ifdef INCL_BASE_OPTIONS_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define SETNOALIGNMENT #include "base/all/packprag.h" typedef struct { BOOL DoShowComments, DoUseCurrentPassword; INT IsSolid; INT DicBits; tBASE_CRYPT_CRYPTIONDATA CryptionData; } tBASE_OPTIONS_DCPR, *pBASE_OPTIONS_DCPR; #define RESTOREALIGNMENT #include "base/all/packprag.h" typedef struct { tBASE_OPTIONS_DCPR ExtractOptions; } tBASE_OPTIONS; DECLEXT PCHAR const BASE_OPTIONS_DICTIONARYTEXTS[23] #ifdef INCL_BASE_OPTIONS_EXCLUSIVE = { "0K", "0K", "0K", "0K", "0K", "0K", "0K", "0K", "0K", "0K", "1K", "2K", "4K", "8K", "16K", "32K", "64K", "128K", "256K", "512K", "1024K", "2048K", "4096K"} #endif ; DECLEXT tBASE_OPTIONS BASE_OPTIONS; INT BASE_OPTIONS_EXTERN_SetPassword( pBASE_CRYPT_CRYPTIONDATA CryptionData, BOOL DoReEnter); #undef DECLEXT #endif unace-2.5/source/base/all/version.h0000644000175000017500000000047707632065774020035 0ustar danieldaniel00000000000000#ifndef _BASE_VERSION_H_INCLUDED #define _BASE_VERSION_H_INCLUDED #define BASE_VERSION_VERSIONSTR "2.5 " #define BASE_VERSION_VERSIONNUM 20 #define BASE_VERSION_ISBETA 0 #define BASE_VERSION_BETAYEAR 101 #define BASE_VERSION_BETADAY 30 #define BASE_VERSION_BETAENDSTR "2nd january 2002" #endif unace-2.5/source/base/all/bufread/0000755000175000017500000000000007752377756017610 5ustar danieldaniel00000000000000unace-2.5/source/base/all/bufread/bufread.h0000644000175000017500000000140507704243446021352 0ustar danieldaniel00000000000000#ifndef _BASE_BUFREAD_H_INCLUDED #define _BASE_BUFREAD_H_INCLUDED #include "base/all/lfn/lfn.h" #ifdef INCL_BASE_BUFREAD_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { INT Handle; PCHAR Buf; INT BufSize; ULONG BufPos; ULONGLONG FilePos, BufEnd, ReadPos; tLFN FileName; } tBASE_BUFREAD; DECLEXT tBASE_BUFREAD BASE_BUFREAD #ifdef INCL_BASE_BUFREAD_EXCLUSIVE = {-1} #endif ; INT BASE_BUFREAD_Read(PCHAR Buf, UINT Len); void BASE_BUFREAD_Seek(ULONGLONG Pos, INT Mode); INT BASE_BUFREAD_Open(PCHAR FileName); void BASE_BUFREAD_Close(void); ULONGLONG BASE_BUFREAD_Tell(void); #undef DECLEXT #endif unace-2.5/source/base/all/bufread/bufread.c0000644000175000017500000000636607752427104021356 0ustar danieldaniel00000000000000#include #include #ifdef __HAS_IO_H__ #include #endif #include #include #define INCL_BASE_BUFREAD_EXCLUSIVE #define INCL_BASE_ERROR #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROROUT #define INCL_BASE_MEMORY #include "base/all/includes.h" /*-----------------BASE_BUFREAD_Read-------------------------------------*/ INT BASE_BUFREAD_Read(PCHAR Buf, UINT Len) { INT BytesToRead, Read; Read = 0; while (Len && BASE_BUFREAD.Buf) { if (BASE_BUFREAD.BufPos >= BASE_BUFREAD.BufEnd) { BASE_BUFREAD.ReadPos = BASE_BUFREAD.FilePos - BASE_BUFREAD.FilePos % BASE_BUFREAD.BufSize; BASE_DOSFUNCS_LSeek(BASE_BUFREAD.Handle, BASE_BUFREAD.ReadPos, SEEK_SET); BASE_BUFREAD.BufPos = BASE_BUFREAD.FilePos - BASE_BUFREAD.ReadPos; errno = 0; BASE_BUFREAD.FilePos = (BASE_BUFREAD.BufEnd = read(BASE_BUFREAD.Handle, BASE_BUFREAD.Buf, BASE_BUFREAD.BufSize)) + BASE_BUFREAD.ReadPos; if (errno) { BASE_ERROROUT_EXTERN_ReadArchive(); BASE_ERROR.ErrorCode = BASE_ERROR_READ; } } if (BASE_BUFREAD.BufPos >= BASE_BUFREAD.BufEnd) { errno = 1; return Read; } BytesToRead = BASE_BUFREAD.BufEnd - BASE_BUFREAD.BufPos; if (BytesToRead > Len) { BytesToRead = Len; } memcpy(Buf, BASE_BUFREAD.Buf + BASE_BUFREAD.BufPos, BytesToRead); Len -= BytesToRead; Buf += BytesToRead; Read += BytesToRead; BASE_BUFREAD.BufPos += BytesToRead; } return Read; } /*-----------------BASE_BUFREAD_Seek-------------------------------------*/ void BASE_BUFREAD_Seek(ULONGLONG Pos, INT Mode) { ULONGLONG FilePos; BASE_DOSFUNCS_LSeek(BASE_BUFREAD.Handle, BASE_BUFREAD_Tell(), SEEK_SET); FilePos = BASE_DOSFUNCS_LSeek(BASE_BUFREAD.Handle, Pos, Mode); if (FilePos < BASE_BUFREAD.ReadPos || FilePos > BASE_BUFREAD.ReadPos + BASE_BUFREAD.BufEnd) { BASE_BUFREAD.BufPos = BASE_BUFREAD.BufEnd = 0; BASE_BUFREAD.ReadPos = BASE_BUFREAD.FilePos = FilePos; } else { BASE_BUFREAD.BufPos = FilePos - BASE_BUFREAD.ReadPos; } } /*-----------------BASE_BUFREAD_Open-------------------------------------*/ INT BASE_BUFREAD_Open(PCHAR FileName) { strcpy(BASE_BUFREAD.FileName, FileName); if (-1 == (BASE_BUFREAD.Handle = BASE_LFN_ShareOpen(FileName, O_RDONLY | O_BINARY, 0))) { return (-1); } BASE_BUFREAD.Buf = (PCHAR) BASE_MEMORY_GetMemBase2Max(&BASE_BUFREAD.BufSize, 5, 65536); BASE_BUFREAD.BufPos = BASE_BUFREAD.BufEnd = BASE_BUFREAD.ReadPos = 0; BASE_BUFREAD.FilePos = BASE_DOSFUNCS_Tell(BASE_BUFREAD.Handle); return BASE_BUFREAD.Handle; } /*-----------------BASE_BUFREAD_Close------------------------------------*/ void BASE_BUFREAD_Close(void) { close(BASE_BUFREAD.Handle); BASE_BUFREAD.Handle = -1; BASE_MEMORY_FreeCheck((PVOID *) &BASE_BUFREAD.Buf); } /*-----------------BASE_BUFREAD_Tell-------------------------------------*/ ULONGLONG BASE_BUFREAD_Tell(void) { return BASE_BUFREAD.BufPos + BASE_BUFREAD.ReadPos; } unace-2.5/source/base/all/uninorm/0000755000175000017500000000000007760240206017641 5ustar danieldaniel00000000000000unace-2.5/source/base/all/uninorm/unidata.h0000644000175000017500000021036007741074160021444 0ustar danieldaniel00000000000000/* This file is generated by gendata.pl */ /* Any changes made here will be lost!! */ /* The data comes from Unicode 3.1.0 */ #define null 0 struct _mapping { unsigned int code; unsigned int decomp[2]; } mapping[] = { { 0x000C0, { 0x00041, 0x00300 } }, { 0x000C1, { 0x00041, 0x00301 } }, { 0x000C2, { 0x00041, 0x00302 } }, { 0x000C3, { 0x00041, 0x00303 } }, { 0x000C4, { 0x00041, 0x00308 } }, { 0x000C5, { 0x00041, 0x0030A } }, { 0x000C7, { 0x00043, 0x00327 } }, { 0x000C8, { 0x00045, 0x00300 } }, { 0x000C9, { 0x00045, 0x00301 } }, { 0x000CA, { 0x00045, 0x00302 } }, { 0x000CB, { 0x00045, 0x00308 } }, { 0x000CC, { 0x00049, 0x00300 } }, { 0x000CD, { 0x00049, 0x00301 } }, { 0x000CE, { 0x00049, 0x00302 } }, { 0x000CF, { 0x00049, 0x00308 } }, { 0x000D1, { 0x0004E, 0x00303 } }, { 0x000D2, { 0x0004F, 0x00300 } }, { 0x000D3, { 0x0004F, 0x00301 } }, { 0x000D4, { 0x0004F, 0x00302 } }, { 0x000D5, { 0x0004F, 0x00303 } }, { 0x000D6, { 0x0004F, 0x00308 } }, { 0x000D9, { 0x00055, 0x00300 } }, { 0x000DA, { 0x00055, 0x00301 } }, { 0x000DB, { 0x00055, 0x00302 } }, { 0x000DC, { 0x00055, 0x00308 } }, { 0x000DD, { 0x00059, 0x00301 } }, { 0x000E0, { 0x00061, 0x00300 } }, { 0x000E1, { 0x00061, 0x00301 } }, { 0x000E2, { 0x00061, 0x00302 } }, { 0x000E3, { 0x00061, 0x00303 } }, { 0x000E4, { 0x00061, 0x00308 } }, { 0x000E5, { 0x00061, 0x0030A } }, { 0x000E7, { 0x00063, 0x00327 } }, { 0x000E8, { 0x00065, 0x00300 } }, { 0x000E9, { 0x00065, 0x00301 } }, { 0x000EA, { 0x00065, 0x00302 } }, { 0x000EB, { 0x00065, 0x00308 } }, { 0x000EC, { 0x00069, 0x00300 } }, { 0x000ED, { 0x00069, 0x00301 } }, { 0x000EE, { 0x00069, 0x00302 } }, { 0x000EF, { 0x00069, 0x00308 } }, { 0x000F1, { 0x0006E, 0x00303 } }, { 0x000F2, { 0x0006F, 0x00300 } }, { 0x000F3, { 0x0006F, 0x00301 } }, { 0x000F4, { 0x0006F, 0x00302 } }, { 0x000F5, { 0x0006F, 0x00303 } }, { 0x000F6, { 0x0006F, 0x00308 } }, { 0x000F9, { 0x00075, 0x00300 } }, { 0x000FA, { 0x00075, 0x00301 } }, { 0x000FB, { 0x00075, 0x00302 } }, { 0x000FC, { 0x00075, 0x00308 } }, { 0x000FD, { 0x00079, 0x00301 } }, { 0x000FF, { 0x00079, 0x00308 } }, { 0x00100, { 0x00041, 0x00304 } }, { 0x00101, { 0x00061, 0x00304 } }, { 0x00102, { 0x00041, 0x00306 } }, { 0x00103, { 0x00061, 0x00306 } }, { 0x00104, { 0x00041, 0x00328 } }, { 0x00105, { 0x00061, 0x00328 } }, { 0x00106, { 0x00043, 0x00301 } }, { 0x00107, { 0x00063, 0x00301 } }, { 0x00108, { 0x00043, 0x00302 } }, { 0x00109, { 0x00063, 0x00302 } }, { 0x0010A, { 0x00043, 0x00307 } }, { 0x0010B, { 0x00063, 0x00307 } }, { 0x0010C, { 0x00043, 0x0030C } }, { 0x0010D, { 0x00063, 0x0030C } }, { 0x0010E, { 0x00044, 0x0030C } }, { 0x0010F, { 0x00064, 0x0030C } }, { 0x00112, { 0x00045, 0x00304 } }, { 0x00113, { 0x00065, 0x00304 } }, { 0x00114, { 0x00045, 0x00306 } }, { 0x00115, { 0x00065, 0x00306 } }, { 0x00116, { 0x00045, 0x00307 } }, { 0x00117, { 0x00065, 0x00307 } }, { 0x00118, { 0x00045, 0x00328 } }, { 0x00119, { 0x00065, 0x00328 } }, { 0x0011A, { 0x00045, 0x0030C } }, { 0x0011B, { 0x00065, 0x0030C } }, { 0x0011C, { 0x00047, 0x00302 } }, { 0x0011D, { 0x00067, 0x00302 } }, { 0x0011E, { 0x00047, 0x00306 } }, { 0x0011F, { 0x00067, 0x00306 } }, { 0x00120, { 0x00047, 0x00307 } }, { 0x00121, { 0x00067, 0x00307 } }, { 0x00122, { 0x00047, 0x00327 } }, { 0x00123, { 0x00067, 0x00327 } }, { 0x00124, { 0x00048, 0x00302 } }, { 0x00125, { 0x00068, 0x00302 } }, { 0x00128, { 0x00049, 0x00303 } }, { 0x00129, { 0x00069, 0x00303 } }, { 0x0012A, { 0x00049, 0x00304 } }, { 0x0012B, { 0x00069, 0x00304 } }, { 0x0012C, { 0x00049, 0x00306 } }, { 0x0012D, { 0x00069, 0x00306 } }, { 0x0012E, { 0x00049, 0x00328 } }, { 0x0012F, { 0x00069, 0x00328 } }, { 0x00130, { 0x00049, 0x00307 } }, { 0x00134, { 0x0004A, 0x00302 } }, { 0x00135, { 0x0006A, 0x00302 } }, { 0x00136, { 0x0004B, 0x00327 } }, { 0x00137, { 0x0006B, 0x00327 } }, { 0x00139, { 0x0004C, 0x00301 } }, { 0x0013A, { 0x0006C, 0x00301 } }, { 0x0013B, { 0x0004C, 0x00327 } }, { 0x0013C, { 0x0006C, 0x00327 } }, { 0x0013D, { 0x0004C, 0x0030C } }, { 0x0013E, { 0x0006C, 0x0030C } }, { 0x00143, { 0x0004E, 0x00301 } }, { 0x00144, { 0x0006E, 0x00301 } }, { 0x00145, { 0x0004E, 0x00327 } }, { 0x00146, { 0x0006E, 0x00327 } }, { 0x00147, { 0x0004E, 0x0030C } }, { 0x00148, { 0x0006E, 0x0030C } }, { 0x0014C, { 0x0004F, 0x00304 } }, { 0x0014D, { 0x0006F, 0x00304 } }, { 0x0014E, { 0x0004F, 0x00306 } }, { 0x0014F, { 0x0006F, 0x00306 } }, { 0x00150, { 0x0004F, 0x0030B } }, { 0x00151, { 0x0006F, 0x0030B } }, { 0x00154, { 0x00052, 0x00301 } }, { 0x00155, { 0x00072, 0x00301 } }, { 0x00156, { 0x00052, 0x00327 } }, { 0x00157, { 0x00072, 0x00327 } }, { 0x00158, { 0x00052, 0x0030C } }, { 0x00159, { 0x00072, 0x0030C } }, { 0x0015A, { 0x00053, 0x00301 } }, { 0x0015B, { 0x00073, 0x00301 } }, { 0x0015C, { 0x00053, 0x00302 } }, { 0x0015D, { 0x00073, 0x00302 } }, { 0x0015E, { 0x00053, 0x00327 } }, { 0x0015F, { 0x00073, 0x00327 } }, { 0x00160, { 0x00053, 0x0030C } }, { 0x00161, { 0x00073, 0x0030C } }, { 0x00162, { 0x00054, 0x00327 } }, { 0x00163, { 0x00074, 0x00327 } }, { 0x00164, { 0x00054, 0x0030C } }, { 0x00165, { 0x00074, 0x0030C } }, { 0x00168, { 0x00055, 0x00303 } }, { 0x00169, { 0x00075, 0x00303 } }, { 0x0016A, { 0x00055, 0x00304 } }, { 0x0016B, { 0x00075, 0x00304 } }, { 0x0016C, { 0x00055, 0x00306 } }, { 0x0016D, { 0x00075, 0x00306 } }, { 0x0016E, { 0x00055, 0x0030A } }, { 0x0016F, { 0x00075, 0x0030A } }, { 0x00170, { 0x00055, 0x0030B } }, { 0x00171, { 0x00075, 0x0030B } }, { 0x00172, { 0x00055, 0x00328 } }, { 0x00173, { 0x00075, 0x00328 } }, { 0x00174, { 0x00057, 0x00302 } }, { 0x00175, { 0x00077, 0x00302 } }, { 0x00176, { 0x00059, 0x00302 } }, { 0x00177, { 0x00079, 0x00302 } }, { 0x00178, { 0x00059, 0x00308 } }, { 0x00179, { 0x0005A, 0x00301 } }, { 0x0017A, { 0x0007A, 0x00301 } }, { 0x0017B, { 0x0005A, 0x00307 } }, { 0x0017C, { 0x0007A, 0x00307 } }, { 0x0017D, { 0x0005A, 0x0030C } }, { 0x0017E, { 0x0007A, 0x0030C } }, { 0x001A0, { 0x0004F, 0x0031B } }, { 0x001A1, { 0x0006F, 0x0031B } }, { 0x001AF, { 0x00055, 0x0031B } }, { 0x001B0, { 0x00075, 0x0031B } }, { 0x001CD, { 0x00041, 0x0030C } }, { 0x001CE, { 0x00061, 0x0030C } }, { 0x001CF, { 0x00049, 0x0030C } }, { 0x001D0, { 0x00069, 0x0030C } }, { 0x001D1, { 0x0004F, 0x0030C } }, { 0x001D2, { 0x0006F, 0x0030C } }, { 0x001D3, { 0x00055, 0x0030C } }, { 0x001D4, { 0x00075, 0x0030C } }, { 0x001D5, { 0x000DC, 0x00304 } }, { 0x001D6, { 0x000FC, 0x00304 } }, { 0x001D7, { 0x000DC, 0x00301 } }, { 0x001D8, { 0x000FC, 0x00301 } }, { 0x001D9, { 0x000DC, 0x0030C } }, { 0x001DA, { 0x000FC, 0x0030C } }, { 0x001DB, { 0x000DC, 0x00300 } }, { 0x001DC, { 0x000FC, 0x00300 } }, { 0x001DE, { 0x000C4, 0x00304 } }, { 0x001DF, { 0x000E4, 0x00304 } }, { 0x001E0, { 0x00226, 0x00304 } }, { 0x001E1, { 0x00227, 0x00304 } }, { 0x001E2, { 0x000C6, 0x00304 } }, { 0x001E3, { 0x000E6, 0x00304 } }, { 0x001E6, { 0x00047, 0x0030C } }, { 0x001E7, { 0x00067, 0x0030C } }, { 0x001E8, { 0x0004B, 0x0030C } }, { 0x001E9, { 0x0006B, 0x0030C } }, { 0x001EA, { 0x0004F, 0x00328 } }, { 0x001EB, { 0x0006F, 0x00328 } }, { 0x001EC, { 0x001EA, 0x00304 } }, { 0x001ED, { 0x001EB, 0x00304 } }, { 0x001EE, { 0x001B7, 0x0030C } }, { 0x001EF, { 0x00292, 0x0030C } }, { 0x001F0, { 0x0006A, 0x0030C } }, { 0x001F4, { 0x00047, 0x00301 } }, { 0x001F5, { 0x00067, 0x00301 } }, { 0x001F8, { 0x0004E, 0x00300 } }, { 0x001F9, { 0x0006E, 0x00300 } }, { 0x001FA, { 0x000C5, 0x00301 } }, { 0x001FB, { 0x000E5, 0x00301 } }, { 0x001FC, { 0x000C6, 0x00301 } }, { 0x001FD, { 0x000E6, 0x00301 } }, { 0x001FE, { 0x000D8, 0x00301 } }, { 0x001FF, { 0x000F8, 0x00301 } }, { 0x00200, { 0x00041, 0x0030F } }, { 0x00201, { 0x00061, 0x0030F } }, { 0x00202, { 0x00041, 0x00311 } }, { 0x00203, { 0x00061, 0x00311 } }, { 0x00204, { 0x00045, 0x0030F } }, { 0x00205, { 0x00065, 0x0030F } }, { 0x00206, { 0x00045, 0x00311 } }, { 0x00207, { 0x00065, 0x00311 } }, { 0x00208, { 0x00049, 0x0030F } }, { 0x00209, { 0x00069, 0x0030F } }, { 0x0020A, { 0x00049, 0x00311 } }, { 0x0020B, { 0x00069, 0x00311 } }, { 0x0020C, { 0x0004F, 0x0030F } }, { 0x0020D, { 0x0006F, 0x0030F } }, { 0x0020E, { 0x0004F, 0x00311 } }, { 0x0020F, { 0x0006F, 0x00311 } }, { 0x00210, { 0x00052, 0x0030F } }, { 0x00211, { 0x00072, 0x0030F } }, { 0x00212, { 0x00052, 0x00311 } }, { 0x00213, { 0x00072, 0x00311 } }, { 0x00214, { 0x00055, 0x0030F } }, { 0x00215, { 0x00075, 0x0030F } }, { 0x00216, { 0x00055, 0x00311 } }, { 0x00217, { 0x00075, 0x00311 } }, { 0x00218, { 0x00053, 0x00326 } }, { 0x00219, { 0x00073, 0x00326 } }, { 0x0021A, { 0x00054, 0x00326 } }, { 0x0021B, { 0x00074, 0x00326 } }, { 0x0021E, { 0x00048, 0x0030C } }, { 0x0021F, { 0x00068, 0x0030C } }, { 0x00226, { 0x00041, 0x00307 } }, { 0x00227, { 0x00061, 0x00307 } }, { 0x00228, { 0x00045, 0x00327 } }, { 0x00229, { 0x00065, 0x00327 } }, { 0x0022A, { 0x000D6, 0x00304 } }, { 0x0022B, { 0x000F6, 0x00304 } }, { 0x0022C, { 0x000D5, 0x00304 } }, { 0x0022D, { 0x000F5, 0x00304 } }, { 0x0022E, { 0x0004F, 0x00307 } }, { 0x0022F, { 0x0006F, 0x00307 } }, { 0x00230, { 0x0022E, 0x00304 } }, { 0x00231, { 0x0022F, 0x00304 } }, { 0x00232, { 0x00059, 0x00304 } }, { 0x00233, { 0x00079, 0x00304 } }, { 0x00344, { 0x00308, 0x00301 } }, { 0x00385, { 0x000A8, 0x00301 } }, { 0x00386, { 0x00391, 0x00301 } }, { 0x00388, { 0x00395, 0x00301 } }, { 0x00389, { 0x00397, 0x00301 } }, { 0x0038A, { 0x00399, 0x00301 } }, { 0x0038C, { 0x0039F, 0x00301 } }, { 0x0038E, { 0x003A5, 0x00301 } }, { 0x0038F, { 0x003A9, 0x00301 } }, { 0x00390, { 0x003CA, 0x00301 } }, { 0x003AA, { 0x00399, 0x00308 } }, { 0x003AB, { 0x003A5, 0x00308 } }, { 0x003AC, { 0x003B1, 0x00301 } }, { 0x003AD, { 0x003B5, 0x00301 } }, { 0x003AE, { 0x003B7, 0x00301 } }, { 0x003AF, { 0x003B9, 0x00301 } }, { 0x003B0, { 0x003CB, 0x00301 } }, { 0x003CA, { 0x003B9, 0x00308 } }, { 0x003CB, { 0x003C5, 0x00308 } }, { 0x003CC, { 0x003BF, 0x00301 } }, { 0x003CD, { 0x003C5, 0x00301 } }, { 0x003CE, { 0x003C9, 0x00301 } }, { 0x003D3, { 0x003D2, 0x00301 } }, { 0x003D4, { 0x003D2, 0x00308 } }, { 0x00400, { 0x00415, 0x00300 } }, { 0x00401, { 0x00415, 0x00308 } }, { 0x00403, { 0x00413, 0x00301 } }, { 0x00407, { 0x00406, 0x00308 } }, { 0x0040C, { 0x0041A, 0x00301 } }, { 0x0040D, { 0x00418, 0x00300 } }, { 0x0040E, { 0x00423, 0x00306 } }, { 0x00419, { 0x00418, 0x00306 } }, { 0x00439, { 0x00438, 0x00306 } }, { 0x00450, { 0x00435, 0x00300 } }, { 0x00451, { 0x00435, 0x00308 } }, { 0x00453, { 0x00433, 0x00301 } }, { 0x00457, { 0x00456, 0x00308 } }, { 0x0045C, { 0x0043A, 0x00301 } }, { 0x0045D, { 0x00438, 0x00300 } }, { 0x0045E, { 0x00443, 0x00306 } }, { 0x00476, { 0x00474, 0x0030F } }, { 0x00477, { 0x00475, 0x0030F } }, { 0x004C1, { 0x00416, 0x00306 } }, { 0x004C2, { 0x00436, 0x00306 } }, { 0x004D0, { 0x00410, 0x00306 } }, { 0x004D1, { 0x00430, 0x00306 } }, { 0x004D2, { 0x00410, 0x00308 } }, { 0x004D3, { 0x00430, 0x00308 } }, { 0x004D6, { 0x00415, 0x00306 } }, { 0x004D7, { 0x00435, 0x00306 } }, { 0x004DA, { 0x004D8, 0x00308 } }, { 0x004DB, { 0x004D9, 0x00308 } }, { 0x004DC, { 0x00416, 0x00308 } }, { 0x004DD, { 0x00436, 0x00308 } }, { 0x004DE, { 0x00417, 0x00308 } }, { 0x004DF, { 0x00437, 0x00308 } }, { 0x004E2, { 0x00418, 0x00304 } }, { 0x004E3, { 0x00438, 0x00304 } }, { 0x004E4, { 0x00418, 0x00308 } }, { 0x004E5, { 0x00438, 0x00308 } }, { 0x004E6, { 0x0041E, 0x00308 } }, { 0x004E7, { 0x0043E, 0x00308 } }, { 0x004EA, { 0x004E8, 0x00308 } }, { 0x004EB, { 0x004E9, 0x00308 } }, { 0x004EC, { 0x0042D, 0x00308 } }, { 0x004ED, { 0x0044D, 0x00308 } }, { 0x004EE, { 0x00423, 0x00304 } }, { 0x004EF, { 0x00443, 0x00304 } }, { 0x004F0, { 0x00423, 0x00308 } }, { 0x004F1, { 0x00443, 0x00308 } }, { 0x004F2, { 0x00423, 0x0030B } }, { 0x004F3, { 0x00443, 0x0030B } }, { 0x004F4, { 0x00427, 0x00308 } }, { 0x004F5, { 0x00447, 0x00308 } }, { 0x004F8, { 0x0042B, 0x00308 } }, { 0x004F9, { 0x0044B, 0x00308 } }, { 0x00622, { 0x00627, 0x00653 } }, { 0x00623, { 0x00627, 0x00654 } }, { 0x00624, { 0x00648, 0x00654 } }, { 0x00625, { 0x00627, 0x00655 } }, { 0x00626, { 0x0064A, 0x00654 } }, { 0x006C0, { 0x006D5, 0x00654 } }, { 0x006C2, { 0x006C1, 0x00654 } }, { 0x006D3, { 0x006D2, 0x00654 } }, { 0x00929, { 0x00928, 0x0093C } }, { 0x00931, { 0x00930, 0x0093C } }, { 0x00934, { 0x00933, 0x0093C } }, { 0x00958, { 0x00915, 0x0093C } }, { 0x00959, { 0x00916, 0x0093C } }, { 0x0095A, { 0x00917, 0x0093C } }, { 0x0095B, { 0x0091C, 0x0093C } }, { 0x0095C, { 0x00921, 0x0093C } }, { 0x0095D, { 0x00922, 0x0093C } }, { 0x0095E, { 0x0092B, 0x0093C } }, { 0x0095F, { 0x0092F, 0x0093C } }, { 0x009CB, { 0x009C7, 0x009BE } }, { 0x009CC, { 0x009C7, 0x009D7 } }, { 0x009DC, { 0x009A1, 0x009BC } }, { 0x009DD, { 0x009A2, 0x009BC } }, { 0x009DF, { 0x009AF, 0x009BC } }, { 0x00A33, { 0x00A32, 0x00A3C } }, { 0x00A36, { 0x00A38, 0x00A3C } }, { 0x00A59, { 0x00A16, 0x00A3C } }, { 0x00A5A, { 0x00A17, 0x00A3C } }, { 0x00A5B, { 0x00A1C, 0x00A3C } }, { 0x00A5E, { 0x00A2B, 0x00A3C } }, { 0x00B48, { 0x00B47, 0x00B56 } }, { 0x00B4B, { 0x00B47, 0x00B3E } }, { 0x00B4C, { 0x00B47, 0x00B57 } }, { 0x00B5C, { 0x00B21, 0x00B3C } }, { 0x00B5D, { 0x00B22, 0x00B3C } }, { 0x00B94, { 0x00B92, 0x00BD7 } }, { 0x00BCA, { 0x00BC6, 0x00BBE } }, { 0x00BCB, { 0x00BC7, 0x00BBE } }, { 0x00BCC, { 0x00BC6, 0x00BD7 } }, { 0x00C48, { 0x00C46, 0x00C56 } }, { 0x00CC0, { 0x00CBF, 0x00CD5 } }, { 0x00CC7, { 0x00CC6, 0x00CD5 } }, { 0x00CC8, { 0x00CC6, 0x00CD6 } }, { 0x00CCA, { 0x00CC6, 0x00CC2 } }, { 0x00CCB, { 0x00CCA, 0x00CD5 } }, { 0x00D4A, { 0x00D46, 0x00D3E } }, { 0x00D4B, { 0x00D47, 0x00D3E } }, { 0x00D4C, { 0x00D46, 0x00D57 } }, { 0x00DDA, { 0x00DD9, 0x00DCA } }, { 0x00DDC, { 0x00DD9, 0x00DCF } }, { 0x00DDD, { 0x00DDC, 0x00DCA } }, { 0x00DDE, { 0x00DD9, 0x00DDF } }, { 0x00F43, { 0x00F42, 0x00FB7 } }, { 0x00F4D, { 0x00F4C, 0x00FB7 } }, { 0x00F52, { 0x00F51, 0x00FB7 } }, { 0x00F57, { 0x00F56, 0x00FB7 } }, { 0x00F5C, { 0x00F5B, 0x00FB7 } }, { 0x00F69, { 0x00F40, 0x00FB5 } }, { 0x00F73, { 0x00F71, 0x00F72 } }, { 0x00F75, { 0x00F71, 0x00F74 } }, { 0x00F76, { 0x00FB2, 0x00F80 } }, { 0x00F78, { 0x00FB3, 0x00F80 } }, { 0x00F81, { 0x00F71, 0x00F80 } }, { 0x00F93, { 0x00F92, 0x00FB7 } }, { 0x00F9D, { 0x00F9C, 0x00FB7 } }, { 0x00FA2, { 0x00FA1, 0x00FB7 } }, { 0x00FA7, { 0x00FA6, 0x00FB7 } }, { 0x00FAC, { 0x00FAB, 0x00FB7 } }, { 0x00FB9, { 0x00F90, 0x00FB5 } }, { 0x01026, { 0x01025, 0x0102E } }, { 0x01E00, { 0x00041, 0x00325 } }, { 0x01E01, { 0x00061, 0x00325 } }, { 0x01E02, { 0x00042, 0x00307 } }, { 0x01E03, { 0x00062, 0x00307 } }, { 0x01E04, { 0x00042, 0x00323 } }, { 0x01E05, { 0x00062, 0x00323 } }, { 0x01E06, { 0x00042, 0x00331 } }, { 0x01E07, { 0x00062, 0x00331 } }, { 0x01E08, { 0x000C7, 0x00301 } }, { 0x01E09, { 0x000E7, 0x00301 } }, { 0x01E0A, { 0x00044, 0x00307 } }, { 0x01E0B, { 0x00064, 0x00307 } }, { 0x01E0C, { 0x00044, 0x00323 } }, { 0x01E0D, { 0x00064, 0x00323 } }, { 0x01E0E, { 0x00044, 0x00331 } }, { 0x01E0F, { 0x00064, 0x00331 } }, { 0x01E10, { 0x00044, 0x00327 } }, { 0x01E11, { 0x00064, 0x00327 } }, { 0x01E12, { 0x00044, 0x0032D } }, { 0x01E13, { 0x00064, 0x0032D } }, { 0x01E14, { 0x00112, 0x00300 } }, { 0x01E15, { 0x00113, 0x00300 } }, { 0x01E16, { 0x00112, 0x00301 } }, { 0x01E17, { 0x00113, 0x00301 } }, { 0x01E18, { 0x00045, 0x0032D } }, { 0x01E19, { 0x00065, 0x0032D } }, { 0x01E1A, { 0x00045, 0x00330 } }, { 0x01E1B, { 0x00065, 0x00330 } }, { 0x01E1C, { 0x00228, 0x00306 } }, { 0x01E1D, { 0x00229, 0x00306 } }, { 0x01E1E, { 0x00046, 0x00307 } }, { 0x01E1F, { 0x00066, 0x00307 } }, { 0x01E20, { 0x00047, 0x00304 } }, { 0x01E21, { 0x00067, 0x00304 } }, { 0x01E22, { 0x00048, 0x00307 } }, { 0x01E23, { 0x00068, 0x00307 } }, { 0x01E24, { 0x00048, 0x00323 } }, { 0x01E25, { 0x00068, 0x00323 } }, { 0x01E26, { 0x00048, 0x00308 } }, { 0x01E27, { 0x00068, 0x00308 } }, { 0x01E28, { 0x00048, 0x00327 } }, { 0x01E29, { 0x00068, 0x00327 } }, { 0x01E2A, { 0x00048, 0x0032E } }, { 0x01E2B, { 0x00068, 0x0032E } }, { 0x01E2C, { 0x00049, 0x00330 } }, { 0x01E2D, { 0x00069, 0x00330 } }, { 0x01E2E, { 0x000CF, 0x00301 } }, { 0x01E2F, { 0x000EF, 0x00301 } }, { 0x01E30, { 0x0004B, 0x00301 } }, { 0x01E31, { 0x0006B, 0x00301 } }, { 0x01E32, { 0x0004B, 0x00323 } }, { 0x01E33, { 0x0006B, 0x00323 } }, { 0x01E34, { 0x0004B, 0x00331 } }, { 0x01E35, { 0x0006B, 0x00331 } }, { 0x01E36, { 0x0004C, 0x00323 } }, { 0x01E37, { 0x0006C, 0x00323 } }, { 0x01E38, { 0x01E36, 0x00304 } }, { 0x01E39, { 0x01E37, 0x00304 } }, { 0x01E3A, { 0x0004C, 0x00331 } }, { 0x01E3B, { 0x0006C, 0x00331 } }, { 0x01E3C, { 0x0004C, 0x0032D } }, { 0x01E3D, { 0x0006C, 0x0032D } }, { 0x01E3E, { 0x0004D, 0x00301 } }, { 0x01E3F, { 0x0006D, 0x00301 } }, { 0x01E40, { 0x0004D, 0x00307 } }, { 0x01E41, { 0x0006D, 0x00307 } }, { 0x01E42, { 0x0004D, 0x00323 } }, { 0x01E43, { 0x0006D, 0x00323 } }, { 0x01E44, { 0x0004E, 0x00307 } }, { 0x01E45, { 0x0006E, 0x00307 } }, { 0x01E46, { 0x0004E, 0x00323 } }, { 0x01E47, { 0x0006E, 0x00323 } }, { 0x01E48, { 0x0004E, 0x00331 } }, { 0x01E49, { 0x0006E, 0x00331 } }, { 0x01E4A, { 0x0004E, 0x0032D } }, { 0x01E4B, { 0x0006E, 0x0032D } }, { 0x01E4C, { 0x000D5, 0x00301 } }, { 0x01E4D, { 0x000F5, 0x00301 } }, { 0x01E4E, { 0x000D5, 0x00308 } }, { 0x01E4F, { 0x000F5, 0x00308 } }, { 0x01E50, { 0x0014C, 0x00300 } }, { 0x01E51, { 0x0014D, 0x00300 } }, { 0x01E52, { 0x0014C, 0x00301 } }, { 0x01E53, { 0x0014D, 0x00301 } }, { 0x01E54, { 0x00050, 0x00301 } }, { 0x01E55, { 0x00070, 0x00301 } }, { 0x01E56, { 0x00050, 0x00307 } }, { 0x01E57, { 0x00070, 0x00307 } }, { 0x01E58, { 0x00052, 0x00307 } }, { 0x01E59, { 0x00072, 0x00307 } }, { 0x01E5A, { 0x00052, 0x00323 } }, { 0x01E5B, { 0x00072, 0x00323 } }, { 0x01E5C, { 0x01E5A, 0x00304 } }, { 0x01E5D, { 0x01E5B, 0x00304 } }, { 0x01E5E, { 0x00052, 0x00331 } }, { 0x01E5F, { 0x00072, 0x00331 } }, { 0x01E60, { 0x00053, 0x00307 } }, { 0x01E61, { 0x00073, 0x00307 } }, { 0x01E62, { 0x00053, 0x00323 } }, { 0x01E63, { 0x00073, 0x00323 } }, { 0x01E64, { 0x0015A, 0x00307 } }, { 0x01E65, { 0x0015B, 0x00307 } }, { 0x01E66, { 0x00160, 0x00307 } }, { 0x01E67, { 0x00161, 0x00307 } }, { 0x01E68, { 0x01E62, 0x00307 } }, { 0x01E69, { 0x01E63, 0x00307 } }, { 0x01E6A, { 0x00054, 0x00307 } }, { 0x01E6B, { 0x00074, 0x00307 } }, { 0x01E6C, { 0x00054, 0x00323 } }, { 0x01E6D, { 0x00074, 0x00323 } }, { 0x01E6E, { 0x00054, 0x00331 } }, { 0x01E6F, { 0x00074, 0x00331 } }, { 0x01E70, { 0x00054, 0x0032D } }, { 0x01E71, { 0x00074, 0x0032D } }, { 0x01E72, { 0x00055, 0x00324 } }, { 0x01E73, { 0x00075, 0x00324 } }, { 0x01E74, { 0x00055, 0x00330 } }, { 0x01E75, { 0x00075, 0x00330 } }, { 0x01E76, { 0x00055, 0x0032D } }, { 0x01E77, { 0x00075, 0x0032D } }, { 0x01E78, { 0x00168, 0x00301 } }, { 0x01E79, { 0x00169, 0x00301 } }, { 0x01E7A, { 0x0016A, 0x00308 } }, { 0x01E7B, { 0x0016B, 0x00308 } }, { 0x01E7C, { 0x00056, 0x00303 } }, { 0x01E7D, { 0x00076, 0x00303 } }, { 0x01E7E, { 0x00056, 0x00323 } }, { 0x01E7F, { 0x00076, 0x00323 } }, { 0x01E80, { 0x00057, 0x00300 } }, { 0x01E81, { 0x00077, 0x00300 } }, { 0x01E82, { 0x00057, 0x00301 } }, { 0x01E83, { 0x00077, 0x00301 } }, { 0x01E84, { 0x00057, 0x00308 } }, { 0x01E85, { 0x00077, 0x00308 } }, { 0x01E86, { 0x00057, 0x00307 } }, { 0x01E87, { 0x00077, 0x00307 } }, { 0x01E88, { 0x00057, 0x00323 } }, { 0x01E89, { 0x00077, 0x00323 } }, { 0x01E8A, { 0x00058, 0x00307 } }, { 0x01E8B, { 0x00078, 0x00307 } }, { 0x01E8C, { 0x00058, 0x00308 } }, { 0x01E8D, { 0x00078, 0x00308 } }, { 0x01E8E, { 0x00059, 0x00307 } }, { 0x01E8F, { 0x00079, 0x00307 } }, { 0x01E90, { 0x0005A, 0x00302 } }, { 0x01E91, { 0x0007A, 0x00302 } }, { 0x01E92, { 0x0005A, 0x00323 } }, { 0x01E93, { 0x0007A, 0x00323 } }, { 0x01E94, { 0x0005A, 0x00331 } }, { 0x01E95, { 0x0007A, 0x00331 } }, { 0x01E96, { 0x00068, 0x00331 } }, { 0x01E97, { 0x00074, 0x00308 } }, { 0x01E98, { 0x00077, 0x0030A } }, { 0x01E99, { 0x00079, 0x0030A } }, { 0x01E9B, { 0x0017F, 0x00307 } }, { 0x01EA0, { 0x00041, 0x00323 } }, { 0x01EA1, { 0x00061, 0x00323 } }, { 0x01EA2, { 0x00041, 0x00309 } }, { 0x01EA3, { 0x00061, 0x00309 } }, { 0x01EA4, { 0x000C2, 0x00301 } }, { 0x01EA5, { 0x000E2, 0x00301 } }, { 0x01EA6, { 0x000C2, 0x00300 } }, { 0x01EA7, { 0x000E2, 0x00300 } }, { 0x01EA8, { 0x000C2, 0x00309 } }, { 0x01EA9, { 0x000E2, 0x00309 } }, { 0x01EAA, { 0x000C2, 0x00303 } }, { 0x01EAB, { 0x000E2, 0x00303 } }, { 0x01EAC, { 0x01EA0, 0x00302 } }, { 0x01EAD, { 0x01EA1, 0x00302 } }, { 0x01EAE, { 0x00102, 0x00301 } }, { 0x01EAF, { 0x00103, 0x00301 } }, { 0x01EB0, { 0x00102, 0x00300 } }, { 0x01EB1, { 0x00103, 0x00300 } }, { 0x01EB2, { 0x00102, 0x00309 } }, { 0x01EB3, { 0x00103, 0x00309 } }, { 0x01EB4, { 0x00102, 0x00303 } }, { 0x01EB5, { 0x00103, 0x00303 } }, { 0x01EB6, { 0x01EA0, 0x00306 } }, { 0x01EB7, { 0x01EA1, 0x00306 } }, { 0x01EB8, { 0x00045, 0x00323 } }, { 0x01EB9, { 0x00065, 0x00323 } }, { 0x01EBA, { 0x00045, 0x00309 } }, { 0x01EBB, { 0x00065, 0x00309 } }, { 0x01EBC, { 0x00045, 0x00303 } }, { 0x01EBD, { 0x00065, 0x00303 } }, { 0x01EBE, { 0x000CA, 0x00301 } }, { 0x01EBF, { 0x000EA, 0x00301 } }, { 0x01EC0, { 0x000CA, 0x00300 } }, { 0x01EC1, { 0x000EA, 0x00300 } }, { 0x01EC2, { 0x000CA, 0x00309 } }, { 0x01EC3, { 0x000EA, 0x00309 } }, { 0x01EC4, { 0x000CA, 0x00303 } }, { 0x01EC5, { 0x000EA, 0x00303 } }, { 0x01EC6, { 0x01EB8, 0x00302 } }, { 0x01EC7, { 0x01EB9, 0x00302 } }, { 0x01EC8, { 0x00049, 0x00309 } }, { 0x01EC9, { 0x00069, 0x00309 } }, { 0x01ECA, { 0x00049, 0x00323 } }, { 0x01ECB, { 0x00069, 0x00323 } }, { 0x01ECC, { 0x0004F, 0x00323 } }, { 0x01ECD, { 0x0006F, 0x00323 } }, { 0x01ECE, { 0x0004F, 0x00309 } }, { 0x01ECF, { 0x0006F, 0x00309 } }, { 0x01ED0, { 0x000D4, 0x00301 } }, { 0x01ED1, { 0x000F4, 0x00301 } }, { 0x01ED2, { 0x000D4, 0x00300 } }, { 0x01ED3, { 0x000F4, 0x00300 } }, { 0x01ED4, { 0x000D4, 0x00309 } }, { 0x01ED5, { 0x000F4, 0x00309 } }, { 0x01ED6, { 0x000D4, 0x00303 } }, { 0x01ED7, { 0x000F4, 0x00303 } }, { 0x01ED8, { 0x01ECC, 0x00302 } }, { 0x01ED9, { 0x01ECD, 0x00302 } }, { 0x01EDA, { 0x001A0, 0x00301 } }, { 0x01EDB, { 0x001A1, 0x00301 } }, { 0x01EDC, { 0x001A0, 0x00300 } }, { 0x01EDD, { 0x001A1, 0x00300 } }, { 0x01EDE, { 0x001A0, 0x00309 } }, { 0x01EDF, { 0x001A1, 0x00309 } }, { 0x01EE0, { 0x001A0, 0x00303 } }, { 0x01EE1, { 0x001A1, 0x00303 } }, { 0x01EE2, { 0x001A0, 0x00323 } }, { 0x01EE3, { 0x001A1, 0x00323 } }, { 0x01EE4, { 0x00055, 0x00323 } }, { 0x01EE5, { 0x00075, 0x00323 } }, { 0x01EE6, { 0x00055, 0x00309 } }, { 0x01EE7, { 0x00075, 0x00309 } }, { 0x01EE8, { 0x001AF, 0x00301 } }, { 0x01EE9, { 0x001B0, 0x00301 } }, { 0x01EEA, { 0x001AF, 0x00300 } }, { 0x01EEB, { 0x001B0, 0x00300 } }, { 0x01EEC, { 0x001AF, 0x00309 } }, { 0x01EED, { 0x001B0, 0x00309 } }, { 0x01EEE, { 0x001AF, 0x00303 } }, { 0x01EEF, { 0x001B0, 0x00303 } }, { 0x01EF0, { 0x001AF, 0x00323 } }, { 0x01EF1, { 0x001B0, 0x00323 } }, { 0x01EF2, { 0x00059, 0x00300 } }, { 0x01EF3, { 0x00079, 0x00300 } }, { 0x01EF4, { 0x00059, 0x00323 } }, { 0x01EF5, { 0x00079, 0x00323 } }, { 0x01EF6, { 0x00059, 0x00309 } }, { 0x01EF7, { 0x00079, 0x00309 } }, { 0x01EF8, { 0x00059, 0x00303 } }, { 0x01EF9, { 0x00079, 0x00303 } }, { 0x01F00, { 0x003B1, 0x00313 } }, { 0x01F01, { 0x003B1, 0x00314 } }, { 0x01F02, { 0x01F00, 0x00300 } }, { 0x01F03, { 0x01F01, 0x00300 } }, { 0x01F04, { 0x01F00, 0x00301 } }, { 0x01F05, { 0x01F01, 0x00301 } }, { 0x01F06, { 0x01F00, 0x00342 } }, { 0x01F07, { 0x01F01, 0x00342 } }, { 0x01F08, { 0x00391, 0x00313 } }, { 0x01F09, { 0x00391, 0x00314 } }, { 0x01F0A, { 0x01F08, 0x00300 } }, { 0x01F0B, { 0x01F09, 0x00300 } }, { 0x01F0C, { 0x01F08, 0x00301 } }, { 0x01F0D, { 0x01F09, 0x00301 } }, { 0x01F0E, { 0x01F08, 0x00342 } }, { 0x01F0F, { 0x01F09, 0x00342 } }, { 0x01F10, { 0x003B5, 0x00313 } }, { 0x01F11, { 0x003B5, 0x00314 } }, { 0x01F12, { 0x01F10, 0x00300 } }, { 0x01F13, { 0x01F11, 0x00300 } }, { 0x01F14, { 0x01F10, 0x00301 } }, { 0x01F15, { 0x01F11, 0x00301 } }, { 0x01F18, { 0x00395, 0x00313 } }, { 0x01F19, { 0x00395, 0x00314 } }, { 0x01F1A, { 0x01F18, 0x00300 } }, { 0x01F1B, { 0x01F19, 0x00300 } }, { 0x01F1C, { 0x01F18, 0x00301 } }, { 0x01F1D, { 0x01F19, 0x00301 } }, { 0x01F20, { 0x003B7, 0x00313 } }, { 0x01F21, { 0x003B7, 0x00314 } }, { 0x01F22, { 0x01F20, 0x00300 } }, { 0x01F23, { 0x01F21, 0x00300 } }, { 0x01F24, { 0x01F20, 0x00301 } }, { 0x01F25, { 0x01F21, 0x00301 } }, { 0x01F26, { 0x01F20, 0x00342 } }, { 0x01F27, { 0x01F21, 0x00342 } }, { 0x01F28, { 0x00397, 0x00313 } }, { 0x01F29, { 0x00397, 0x00314 } }, { 0x01F2A, { 0x01F28, 0x00300 } }, { 0x01F2B, { 0x01F29, 0x00300 } }, { 0x01F2C, { 0x01F28, 0x00301 } }, { 0x01F2D, { 0x01F29, 0x00301 } }, { 0x01F2E, { 0x01F28, 0x00342 } }, { 0x01F2F, { 0x01F29, 0x00342 } }, { 0x01F30, { 0x003B9, 0x00313 } }, { 0x01F31, { 0x003B9, 0x00314 } }, { 0x01F32, { 0x01F30, 0x00300 } }, { 0x01F33, { 0x01F31, 0x00300 } }, { 0x01F34, { 0x01F30, 0x00301 } }, { 0x01F35, { 0x01F31, 0x00301 } }, { 0x01F36, { 0x01F30, 0x00342 } }, { 0x01F37, { 0x01F31, 0x00342 } }, { 0x01F38, { 0x00399, 0x00313 } }, { 0x01F39, { 0x00399, 0x00314 } }, { 0x01F3A, { 0x01F38, 0x00300 } }, { 0x01F3B, { 0x01F39, 0x00300 } }, { 0x01F3C, { 0x01F38, 0x00301 } }, { 0x01F3D, { 0x01F39, 0x00301 } }, { 0x01F3E, { 0x01F38, 0x00342 } }, { 0x01F3F, { 0x01F39, 0x00342 } }, { 0x01F40, { 0x003BF, 0x00313 } }, { 0x01F41, { 0x003BF, 0x00314 } }, { 0x01F42, { 0x01F40, 0x00300 } }, { 0x01F43, { 0x01F41, 0x00300 } }, { 0x01F44, { 0x01F40, 0x00301 } }, { 0x01F45, { 0x01F41, 0x00301 } }, { 0x01F48, { 0x0039F, 0x00313 } }, { 0x01F49, { 0x0039F, 0x00314 } }, { 0x01F4A, { 0x01F48, 0x00300 } }, { 0x01F4B, { 0x01F49, 0x00300 } }, { 0x01F4C, { 0x01F48, 0x00301 } }, { 0x01F4D, { 0x01F49, 0x00301 } }, { 0x01F50, { 0x003C5, 0x00313 } }, { 0x01F51, { 0x003C5, 0x00314 } }, { 0x01F52, { 0x01F50, 0x00300 } }, { 0x01F53, { 0x01F51, 0x00300 } }, { 0x01F54, { 0x01F50, 0x00301 } }, { 0x01F55, { 0x01F51, 0x00301 } }, { 0x01F56, { 0x01F50, 0x00342 } }, { 0x01F57, { 0x01F51, 0x00342 } }, { 0x01F59, { 0x003A5, 0x00314 } }, { 0x01F5B, { 0x01F59, 0x00300 } }, { 0x01F5D, { 0x01F59, 0x00301 } }, { 0x01F5F, { 0x01F59, 0x00342 } }, { 0x01F60, { 0x003C9, 0x00313 } }, { 0x01F61, { 0x003C9, 0x00314 } }, { 0x01F62, { 0x01F60, 0x00300 } }, { 0x01F63, { 0x01F61, 0x00300 } }, { 0x01F64, { 0x01F60, 0x00301 } }, { 0x01F65, { 0x01F61, 0x00301 } }, { 0x01F66, { 0x01F60, 0x00342 } }, { 0x01F67, { 0x01F61, 0x00342 } }, { 0x01F68, { 0x003A9, 0x00313 } }, { 0x01F69, { 0x003A9, 0x00314 } }, { 0x01F6A, { 0x01F68, 0x00300 } }, { 0x01F6B, { 0x01F69, 0x00300 } }, { 0x01F6C, { 0x01F68, 0x00301 } }, { 0x01F6D, { 0x01F69, 0x00301 } }, { 0x01F6E, { 0x01F68, 0x00342 } }, { 0x01F6F, { 0x01F69, 0x00342 } }, { 0x01F70, { 0x003B1, 0x00300 } }, { 0x01F72, { 0x003B5, 0x00300 } }, { 0x01F74, { 0x003B7, 0x00300 } }, { 0x01F76, { 0x003B9, 0x00300 } }, { 0x01F78, { 0x003BF, 0x00300 } }, { 0x01F7A, { 0x003C5, 0x00300 } }, { 0x01F7C, { 0x003C9, 0x00300 } }, { 0x01F80, { 0x01F00, 0x00345 } }, { 0x01F81, { 0x01F01, 0x00345 } }, { 0x01F82, { 0x01F02, 0x00345 } }, { 0x01F83, { 0x01F03, 0x00345 } }, { 0x01F84, { 0x01F04, 0x00345 } }, { 0x01F85, { 0x01F05, 0x00345 } }, { 0x01F86, { 0x01F06, 0x00345 } }, { 0x01F87, { 0x01F07, 0x00345 } }, { 0x01F88, { 0x01F08, 0x00345 } }, { 0x01F89, { 0x01F09, 0x00345 } }, { 0x01F8A, { 0x01F0A, 0x00345 } }, { 0x01F8B, { 0x01F0B, 0x00345 } }, { 0x01F8C, { 0x01F0C, 0x00345 } }, { 0x01F8D, { 0x01F0D, 0x00345 } }, { 0x01F8E, { 0x01F0E, 0x00345 } }, { 0x01F8F, { 0x01F0F, 0x00345 } }, { 0x01F90, { 0x01F20, 0x00345 } }, { 0x01F91, { 0x01F21, 0x00345 } }, { 0x01F92, { 0x01F22, 0x00345 } }, { 0x01F93, { 0x01F23, 0x00345 } }, { 0x01F94, { 0x01F24, 0x00345 } }, { 0x01F95, { 0x01F25, 0x00345 } }, { 0x01F96, { 0x01F26, 0x00345 } }, { 0x01F97, { 0x01F27, 0x00345 } }, { 0x01F98, { 0x01F28, 0x00345 } }, { 0x01F99, { 0x01F29, 0x00345 } }, { 0x01F9A, { 0x01F2A, 0x00345 } }, { 0x01F9B, { 0x01F2B, 0x00345 } }, { 0x01F9C, { 0x01F2C, 0x00345 } }, { 0x01F9D, { 0x01F2D, 0x00345 } }, { 0x01F9E, { 0x01F2E, 0x00345 } }, { 0x01F9F, { 0x01F2F, 0x00345 } }, { 0x01FA0, { 0x01F60, 0x00345 } }, { 0x01FA1, { 0x01F61, 0x00345 } }, { 0x01FA2, { 0x01F62, 0x00345 } }, { 0x01FA3, { 0x01F63, 0x00345 } }, { 0x01FA4, { 0x01F64, 0x00345 } }, { 0x01FA5, { 0x01F65, 0x00345 } }, { 0x01FA6, { 0x01F66, 0x00345 } }, { 0x01FA7, { 0x01F67, 0x00345 } }, { 0x01FA8, { 0x01F68, 0x00345 } }, { 0x01FA9, { 0x01F69, 0x00345 } }, { 0x01FAA, { 0x01F6A, 0x00345 } }, { 0x01FAB, { 0x01F6B, 0x00345 } }, { 0x01FAC, { 0x01F6C, 0x00345 } }, { 0x01FAD, { 0x01F6D, 0x00345 } }, { 0x01FAE, { 0x01F6E, 0x00345 } }, { 0x01FAF, { 0x01F6F, 0x00345 } }, { 0x01FB0, { 0x003B1, 0x00306 } }, { 0x01FB1, { 0x003B1, 0x00304 } }, { 0x01FB2, { 0x01F70, 0x00345 } }, { 0x01FB3, { 0x003B1, 0x00345 } }, { 0x01FB4, { 0x003AC, 0x00345 } }, { 0x01FB6, { 0x003B1, 0x00342 } }, { 0x01FB7, { 0x01FB6, 0x00345 } }, { 0x01FB8, { 0x00391, 0x00306 } }, { 0x01FB9, { 0x00391, 0x00304 } }, { 0x01FBA, { 0x00391, 0x00300 } }, { 0x01FBC, { 0x00391, 0x00345 } }, { 0x01FC1, { 0x000A8, 0x00342 } }, { 0x01FC2, { 0x01F74, 0x00345 } }, { 0x01FC3, { 0x003B7, 0x00345 } }, { 0x01FC4, { 0x003AE, 0x00345 } }, { 0x01FC6, { 0x003B7, 0x00342 } }, { 0x01FC7, { 0x01FC6, 0x00345 } }, { 0x01FC8, { 0x00395, 0x00300 } }, { 0x01FCA, { 0x00397, 0x00300 } }, { 0x01FCC, { 0x00397, 0x00345 } }, { 0x01FCD, { 0x01FBF, 0x00300 } }, { 0x01FCE, { 0x01FBF, 0x00301 } }, { 0x01FCF, { 0x01FBF, 0x00342 } }, { 0x01FD0, { 0x003B9, 0x00306 } }, { 0x01FD1, { 0x003B9, 0x00304 } }, { 0x01FD2, { 0x003CA, 0x00300 } }, { 0x01FD6, { 0x003B9, 0x00342 } }, { 0x01FD7, { 0x003CA, 0x00342 } }, { 0x01FD8, { 0x00399, 0x00306 } }, { 0x01FD9, { 0x00399, 0x00304 } }, { 0x01FDA, { 0x00399, 0x00300 } }, { 0x01FDD, { 0x01FFE, 0x00300 } }, { 0x01FDE, { 0x01FFE, 0x00301 } }, { 0x01FDF, { 0x01FFE, 0x00342 } }, { 0x01FE0, { 0x003C5, 0x00306 } }, { 0x01FE1, { 0x003C5, 0x00304 } }, { 0x01FE2, { 0x003CB, 0x00300 } }, { 0x01FE4, { 0x003C1, 0x00313 } }, { 0x01FE5, { 0x003C1, 0x00314 } }, { 0x01FE6, { 0x003C5, 0x00342 } }, { 0x01FE7, { 0x003CB, 0x00342 } }, { 0x01FE8, { 0x003A5, 0x00306 } }, { 0x01FE9, { 0x003A5, 0x00304 } }, { 0x01FEA, { 0x003A5, 0x00300 } }, { 0x01FEC, { 0x003A1, 0x00314 } }, { 0x01FED, { 0x000A8, 0x00300 } }, { 0x01FF2, { 0x01F7C, 0x00345 } }, { 0x01FF3, { 0x003C9, 0x00345 } }, { 0x01FF4, { 0x003CE, 0x00345 } }, { 0x01FF6, { 0x003C9, 0x00342 } }, { 0x01FF7, { 0x01FF6, 0x00345 } }, { 0x01FF8, { 0x0039F, 0x00300 } }, { 0x01FFA, { 0x003A9, 0x00300 } }, { 0x01FFC, { 0x003A9, 0x00345 } }, { 0x0219A, { 0x02190, 0x00338 } }, { 0x0219B, { 0x02192, 0x00338 } }, { 0x021AE, { 0x02194, 0x00338 } }, { 0x021CD, { 0x021D0, 0x00338 } }, { 0x021CE, { 0x021D4, 0x00338 } }, { 0x021CF, { 0x021D2, 0x00338 } }, { 0x02204, { 0x02203, 0x00338 } }, { 0x02209, { 0x02208, 0x00338 } }, { 0x0220C, { 0x0220B, 0x00338 } }, { 0x02224, { 0x02223, 0x00338 } }, { 0x02226, { 0x02225, 0x00338 } }, { 0x02241, { 0x0223C, 0x00338 } }, { 0x02244, { 0x02243, 0x00338 } }, { 0x02247, { 0x02245, 0x00338 } }, { 0x02249, { 0x02248, 0x00338 } }, { 0x02260, { 0x0003D, 0x00338 } }, { 0x02262, { 0x02261, 0x00338 } }, { 0x0226D, { 0x0224D, 0x00338 } }, { 0x0226E, { 0x0003C, 0x00338 } }, { 0x0226F, { 0x0003E, 0x00338 } }, { 0x02270, { 0x02264, 0x00338 } }, { 0x02271, { 0x02265, 0x00338 } }, { 0x02274, { 0x02272, 0x00338 } }, { 0x02275, { 0x02273, 0x00338 } }, { 0x02278, { 0x02276, 0x00338 } }, { 0x02279, { 0x02277, 0x00338 } }, { 0x02280, { 0x0227A, 0x00338 } }, { 0x02281, { 0x0227B, 0x00338 } }, { 0x02284, { 0x02282, 0x00338 } }, { 0x02285, { 0x02283, 0x00338 } }, { 0x02288, { 0x02286, 0x00338 } }, { 0x02289, { 0x02287, 0x00338 } }, { 0x022AC, { 0x022A2, 0x00338 } }, { 0x022AD, { 0x022A8, 0x00338 } }, { 0x022AE, { 0x022A9, 0x00338 } }, { 0x022AF, { 0x022AB, 0x00338 } }, { 0x022E0, { 0x0227C, 0x00338 } }, { 0x022E1, { 0x0227D, 0x00338 } }, { 0x022E2, { 0x02291, 0x00338 } }, { 0x022E3, { 0x02292, 0x00338 } }, { 0x022EA, { 0x022B2, 0x00338 } }, { 0x022EB, { 0x022B3, 0x00338 } }, { 0x022EC, { 0x022B4, 0x00338 } }, { 0x022ED, { 0x022B5, 0x00338 } }, { 0x0304C, { 0x0304B, 0x03099 } }, { 0x0304E, { 0x0304D, 0x03099 } }, { 0x03050, { 0x0304F, 0x03099 } }, { 0x03052, { 0x03051, 0x03099 } }, { 0x03054, { 0x03053, 0x03099 } }, { 0x03056, { 0x03055, 0x03099 } }, { 0x03058, { 0x03057, 0x03099 } }, { 0x0305A, { 0x03059, 0x03099 } }, { 0x0305C, { 0x0305B, 0x03099 } }, { 0x0305E, { 0x0305D, 0x03099 } }, { 0x03060, { 0x0305F, 0x03099 } }, { 0x03062, { 0x03061, 0x03099 } }, { 0x03065, { 0x03064, 0x03099 } }, { 0x03067, { 0x03066, 0x03099 } }, { 0x03069, { 0x03068, 0x03099 } }, { 0x03070, { 0x0306F, 0x03099 } }, { 0x03071, { 0x0306F, 0x0309A } }, { 0x03073, { 0x03072, 0x03099 } }, { 0x03074, { 0x03072, 0x0309A } }, { 0x03076, { 0x03075, 0x03099 } }, { 0x03077, { 0x03075, 0x0309A } }, { 0x03079, { 0x03078, 0x03099 } }, { 0x0307A, { 0x03078, 0x0309A } }, { 0x0307C, { 0x0307B, 0x03099 } }, { 0x0307D, { 0x0307B, 0x0309A } }, { 0x03094, { 0x03046, 0x03099 } }, { 0x0309E, { 0x0309D, 0x03099 } }, { 0x030AC, { 0x030AB, 0x03099 } }, { 0x030AE, { 0x030AD, 0x03099 } }, { 0x030B0, { 0x030AF, 0x03099 } }, { 0x030B2, { 0x030B1, 0x03099 } }, { 0x030B4, { 0x030B3, 0x03099 } }, { 0x030B6, { 0x030B5, 0x03099 } }, { 0x030B8, { 0x030B7, 0x03099 } }, { 0x030BA, { 0x030B9, 0x03099 } }, { 0x030BC, { 0x030BB, 0x03099 } }, { 0x030BE, { 0x030BD, 0x03099 } }, { 0x030C0, { 0x030BF, 0x03099 } }, { 0x030C2, { 0x030C1, 0x03099 } }, { 0x030C5, { 0x030C4, 0x03099 } }, { 0x030C7, { 0x030C6, 0x03099 } }, { 0x030C9, { 0x030C8, 0x03099 } }, { 0x030D0, { 0x030CF, 0x03099 } }, { 0x030D1, { 0x030CF, 0x0309A } }, { 0x030D3, { 0x030D2, 0x03099 } }, { 0x030D4, { 0x030D2, 0x0309A } }, { 0x030D6, { 0x030D5, 0x03099 } }, { 0x030D7, { 0x030D5, 0x0309A } }, { 0x030D9, { 0x030D8, 0x03099 } }, { 0x030DA, { 0x030D8, 0x0309A } }, { 0x030DC, { 0x030DB, 0x03099 } }, { 0x030DD, { 0x030DB, 0x0309A } }, { 0x030F4, { 0x030A6, 0x03099 } }, { 0x030F7, { 0x030EF, 0x03099 } }, { 0x030F8, { 0x030F0, 0x03099 } }, { 0x030F9, { 0x030F1, 0x03099 } }, { 0x030FA, { 0x030F2, 0x03099 } }, { 0x030FE, { 0x030FD, 0x03099 } }, { 0x0FB1D, { 0x005D9, 0x005B4 } }, { 0x0FB1F, { 0x005F2, 0x005B7 } }, { 0x0FB2A, { 0x005E9, 0x005C1 } }, { 0x0FB2B, { 0x005E9, 0x005C2 } }, { 0x0FB2C, { 0x0FB49, 0x005C1 } }, { 0x0FB2D, { 0x0FB49, 0x005C2 } }, { 0x0FB2E, { 0x005D0, 0x005B7 } }, { 0x0FB2F, { 0x005D0, 0x005B8 } }, { 0x0FB30, { 0x005D0, 0x005BC } }, { 0x0FB31, { 0x005D1, 0x005BC } }, { 0x0FB32, { 0x005D2, 0x005BC } }, { 0x0FB33, { 0x005D3, 0x005BC } }, { 0x0FB34, { 0x005D4, 0x005BC } }, { 0x0FB35, { 0x005D5, 0x005BC } }, { 0x0FB36, { 0x005D6, 0x005BC } }, { 0x0FB38, { 0x005D8, 0x005BC } }, { 0x0FB39, { 0x005D9, 0x005BC } }, { 0x0FB3A, { 0x005DA, 0x005BC } }, { 0x0FB3B, { 0x005DB, 0x005BC } }, { 0x0FB3C, { 0x005DC, 0x005BC } }, { 0x0FB3E, { 0x005DE, 0x005BC } }, { 0x0FB40, { 0x005E0, 0x005BC } }, { 0x0FB41, { 0x005E1, 0x005BC } }, { 0x0FB43, { 0x005E3, 0x005BC } }, { 0x0FB44, { 0x005E4, 0x005BC } }, { 0x0FB46, { 0x005E6, 0x005BC } }, { 0x0FB47, { 0x005E7, 0x005BC } }, { 0x0FB48, { 0x005E8, 0x005BC } }, { 0x0FB49, { 0x005E9, 0x005BC } }, { 0x0FB4A, { 0x005EA, 0x005BC } }, { 0x0FB4B, { 0x005D5, 0x005B9 } }, { 0x0FB4C, { 0x005D1, 0x005BF } }, { 0x0FB4D, { 0x005DB, 0x005BF } }, { 0x0FB4E, { 0x005E4, 0x005BF } }, { 0x1D15E, { 0x1D157, 0x1D165 } }, { 0x1D15F, { 0x1D158, 0x1D165 } }, { 0x1D160, { 0x1D15F, 0x1D16E } }, { 0x1D161, { 0x1D15F, 0x1D16F } }, { 0x1D162, { 0x1D15F, 0x1D170 } }, { 0x1D163, { 0x1D15F, 0x1D171 } }, { 0x1D164, { 0x1D15F, 0x1D172 } }, { 0x1D1BB, { 0x1D1B9, 0x1D165 } }, { 0x1D1BC, { 0x1D1BA, 0x1D165 } }, { 0x1D1BD, { 0x1D1BB, 0x1D16E } }, { 0x1D1BE, { 0x1D1BC, 0x1D16E } }, { 0x1D1BF, { 0x1D1BB, 0x1D16F } }, { 0x1D1C0, { 0x1D1BC, 0x1D16F } }, { null, { null, null } } }; struct _singleton { unsigned int code; unsigned int decomp; } singleton[] = { { 0x00340, 0x00300 }, { 0x00341, 0x00301 }, { 0x00343, 0x00313 }, { 0x00374, 0x002B9 }, { 0x0037E, 0x0003B }, { 0x00387, 0x000B7 }, { 0x01F71, 0x003AC }, { 0x01F73, 0x003AD }, { 0x01F75, 0x003AE }, { 0x01F77, 0x003AF }, { 0x01F79, 0x003CC }, { 0x01F7B, 0x003CD }, { 0x01F7D, 0x003CE }, { 0x01FBB, 0x00386 }, { 0x01FBE, 0x003B9 }, { 0x01FC9, 0x00388 }, { 0x01FCB, 0x00389 }, { 0x01FD3, 0x00390 }, { 0x01FDB, 0x0038A }, { 0x01FE3, 0x003B0 }, { 0x01FEB, 0x0038E }, { 0x01FEE, 0x00385 }, { 0x01FEF, 0x00060 }, { 0x01FF9, 0x0038C }, { 0x01FFB, 0x0038F }, { 0x01FFD, 0x000B4 }, { 0x02000, 0x02002 }, { 0x02001, 0x02003 }, { 0x02126, 0x003A9 }, { 0x0212A, 0x0004B }, { 0x0212B, 0x000C5 }, { 0x02329, 0x03008 }, { 0x0232A, 0x03009 }, { 0x0F900, 0x08C48 }, { 0x0F901, 0x066F4 }, { 0x0F902, 0x08ECA }, { 0x0F903, 0x08CC8 }, { 0x0F904, 0x06ED1 }, { 0x0F905, 0x04E32 }, { 0x0F906, 0x053E5 }, { 0x0F907, 0x09F9C }, { 0x0F908, 0x09F9C }, { 0x0F909, 0x05951 }, { 0x0F90A, 0x091D1 }, { 0x0F90B, 0x05587 }, { 0x0F90C, 0x05948 }, { 0x0F90D, 0x061F6 }, { 0x0F90E, 0x07669 }, { 0x0F90F, 0x07F85 }, { 0x0F910, 0x0863F }, { 0x0F911, 0x087BA }, { 0x0F912, 0x088F8 }, { 0x0F913, 0x0908F }, { 0x0F914, 0x06A02 }, { 0x0F915, 0x06D1B }, { 0x0F916, 0x070D9 }, { 0x0F917, 0x073DE }, { 0x0F918, 0x0843D }, { 0x0F919, 0x0916A }, { 0x0F91A, 0x099F1 }, { 0x0F91B, 0x04E82 }, { 0x0F91C, 0x05375 }, { 0x0F91D, 0x06B04 }, { 0x0F91E, 0x0721B }, { 0x0F91F, 0x0862D }, { 0x0F920, 0x09E1E }, { 0x0F921, 0x05D50 }, { 0x0F922, 0x06FEB }, { 0x0F923, 0x085CD }, { 0x0F924, 0x08964 }, { 0x0F925, 0x062C9 }, { 0x0F926, 0x081D8 }, { 0x0F927, 0x0881F }, { 0x0F928, 0x05ECA }, { 0x0F929, 0x06717 }, { 0x0F92A, 0x06D6A }, { 0x0F92B, 0x072FC }, { 0x0F92C, 0x090CE }, { 0x0F92D, 0x04F86 }, { 0x0F92E, 0x051B7 }, { 0x0F92F, 0x052DE }, { 0x0F930, 0x064C4 }, { 0x0F931, 0x06AD3 }, { 0x0F932, 0x07210 }, { 0x0F933, 0x076E7 }, { 0x0F934, 0x08001 }, { 0x0F935, 0x08606 }, { 0x0F936, 0x0865C }, { 0x0F937, 0x08DEF }, { 0x0F938, 0x09732 }, { 0x0F939, 0x09B6F }, { 0x0F93A, 0x09DFA }, { 0x0F93B, 0x0788C }, { 0x0F93C, 0x0797F }, { 0x0F93D, 0x07DA0 }, { 0x0F93E, 0x083C9 }, { 0x0F93F, 0x09304 }, { 0x0F940, 0x09E7F }, { 0x0F941, 0x08AD6 }, { 0x0F942, 0x058DF }, { 0x0F943, 0x05F04 }, { 0x0F944, 0x07C60 }, { 0x0F945, 0x0807E }, { 0x0F946, 0x07262 }, { 0x0F947, 0x078CA }, { 0x0F948, 0x08CC2 }, { 0x0F949, 0x096F7 }, { 0x0F94A, 0x058D8 }, { 0x0F94B, 0x05C62 }, { 0x0F94C, 0x06A13 }, { 0x0F94D, 0x06DDA }, { 0x0F94E, 0x06F0F }, { 0x0F94F, 0x07D2F }, { 0x0F950, 0x07E37 }, { 0x0F951, 0x096FB }, { 0x0F952, 0x052D2 }, { 0x0F953, 0x0808B }, { 0x0F954, 0x051DC }, { 0x0F955, 0x051CC }, { 0x0F956, 0x07A1C }, { 0x0F957, 0x07DBE }, { 0x0F958, 0x083F1 }, { 0x0F959, 0x09675 }, { 0x0F95A, 0x08B80 }, { 0x0F95B, 0x062CF }, { 0x0F95C, 0x06A02 }, { 0x0F95D, 0x08AFE }, { 0x0F95E, 0x04E39 }, { 0x0F95F, 0x05BE7 }, { 0x0F960, 0x06012 }, { 0x0F961, 0x07387 }, { 0x0F962, 0x07570 }, { 0x0F963, 0x05317 }, { 0x0F964, 0x078FB }, { 0x0F965, 0x04FBF }, { 0x0F966, 0x05FA9 }, { 0x0F967, 0x04E0D }, { 0x0F968, 0x06CCC }, { 0x0F969, 0x06578 }, { 0x0F96A, 0x07D22 }, { 0x0F96B, 0x053C3 }, { 0x0F96C, 0x0585E }, { 0x0F96D, 0x07701 }, { 0x0F96E, 0x08449 }, { 0x0F96F, 0x08AAA }, { 0x0F970, 0x06BBA }, { 0x0F971, 0x08FB0 }, { 0x0F972, 0x06C88 }, { 0x0F973, 0x062FE }, { 0x0F974, 0x082E5 }, { 0x0F975, 0x063A0 }, { 0x0F976, 0x07565 }, { 0x0F977, 0x04EAE }, { 0x0F978, 0x05169 }, { 0x0F979, 0x051C9 }, { 0x0F97A, 0x06881 }, { 0x0F97B, 0x07CE7 }, { 0x0F97C, 0x0826F }, { 0x0F97D, 0x08AD2 }, { 0x0F97E, 0x091CF }, { 0x0F97F, 0x052F5 }, { 0x0F980, 0x05442 }, { 0x0F981, 0x05973 }, { 0x0F982, 0x05EEC }, { 0x0F983, 0x065C5 }, { 0x0F984, 0x06FFE }, { 0x0F985, 0x0792A }, { 0x0F986, 0x095AD }, { 0x0F987, 0x09A6A }, { 0x0F988, 0x09E97 }, { 0x0F989, 0x09ECE }, { 0x0F98A, 0x0529B }, { 0x0F98B, 0x066C6 }, { 0x0F98C, 0x06B77 }, { 0x0F98D, 0x08F62 }, { 0x0F98E, 0x05E74 }, { 0x0F98F, 0x06190 }, { 0x0F990, 0x06200 }, { 0x0F991, 0x0649A }, { 0x0F992, 0x06F23 }, { 0x0F993, 0x07149 }, { 0x0F994, 0x07489 }, { 0x0F995, 0x079CA }, { 0x0F996, 0x07DF4 }, { 0x0F997, 0x0806F }, { 0x0F998, 0x08F26 }, { 0x0F999, 0x084EE }, { 0x0F99A, 0x09023 }, { 0x0F99B, 0x0934A }, { 0x0F99C, 0x05217 }, { 0x0F99D, 0x052A3 }, { 0x0F99E, 0x054BD }, { 0x0F99F, 0x070C8 }, { 0x0F9A0, 0x088C2 }, { 0x0F9A1, 0x08AAA }, { 0x0F9A2, 0x05EC9 }, { 0x0F9A3, 0x05FF5 }, { 0x0F9A4, 0x0637B }, { 0x0F9A5, 0x06BAE }, { 0x0F9A6, 0x07C3E }, { 0x0F9A7, 0x07375 }, { 0x0F9A8, 0x04EE4 }, { 0x0F9A9, 0x056F9 }, { 0x0F9AA, 0x05BE7 }, { 0x0F9AB, 0x05DBA }, { 0x0F9AC, 0x0601C }, { 0x0F9AD, 0x073B2 }, { 0x0F9AE, 0x07469 }, { 0x0F9AF, 0x07F9A }, { 0x0F9B0, 0x08046 }, { 0x0F9B1, 0x09234 }, { 0x0F9B2, 0x096F6 }, { 0x0F9B3, 0x09748 }, { 0x0F9B4, 0x09818 }, { 0x0F9B5, 0x04F8B }, { 0x0F9B6, 0x079AE }, { 0x0F9B7, 0x091B4 }, { 0x0F9B8, 0x096B8 }, { 0x0F9B9, 0x060E1 }, { 0x0F9BA, 0x04E86 }, { 0x0F9BB, 0x050DA }, { 0x0F9BC, 0x05BEE }, { 0x0F9BD, 0x05C3F }, { 0x0F9BE, 0x06599 }, { 0x0F9BF, 0x06A02 }, { 0x0F9C0, 0x071CE }, { 0x0F9C1, 0x07642 }, { 0x0F9C2, 0x084FC }, { 0x0F9C3, 0x0907C }, { 0x0F9C4, 0x09F8D }, { 0x0F9C5, 0x06688 }, { 0x0F9C6, 0x0962E }, { 0x0F9C7, 0x05289 }, { 0x0F9C8, 0x0677B }, { 0x0F9C9, 0x067F3 }, { 0x0F9CA, 0x06D41 }, { 0x0F9CB, 0x06E9C }, { 0x0F9CC, 0x07409 }, { 0x0F9CD, 0x07559 }, { 0x0F9CE, 0x0786B }, { 0x0F9CF, 0x07D10 }, { 0x0F9D0, 0x0985E }, { 0x0F9D1, 0x0516D }, { 0x0F9D2, 0x0622E }, { 0x0F9D3, 0x09678 }, { 0x0F9D4, 0x0502B }, { 0x0F9D5, 0x05D19 }, { 0x0F9D6, 0x06DEA }, { 0x0F9D7, 0x08F2A }, { 0x0F9D8, 0x05F8B }, { 0x0F9D9, 0x06144 }, { 0x0F9DA, 0x06817 }, { 0x0F9DB, 0x07387 }, { 0x0F9DC, 0x09686 }, { 0x0F9DD, 0x05229 }, { 0x0F9DE, 0x0540F }, { 0x0F9DF, 0x05C65 }, { 0x0F9E0, 0x06613 }, { 0x0F9E1, 0x0674E }, { 0x0F9E2, 0x068A8 }, { 0x0F9E3, 0x06CE5 }, { 0x0F9E4, 0x07406 }, { 0x0F9E5, 0x075E2 }, { 0x0F9E6, 0x07F79 }, { 0x0F9E7, 0x088CF }, { 0x0F9E8, 0x088E1 }, { 0x0F9E9, 0x091CC }, { 0x0F9EA, 0x096E2 }, { 0x0F9EB, 0x0533F }, { 0x0F9EC, 0x06EBA }, { 0x0F9ED, 0x0541D }, { 0x0F9EE, 0x071D0 }, { 0x0F9EF, 0x07498 }, { 0x0F9F0, 0x085FA }, { 0x0F9F1, 0x096A3 }, { 0x0F9F2, 0x09C57 }, { 0x0F9F3, 0x09E9F }, { 0x0F9F4, 0x06797 }, { 0x0F9F5, 0x06DCB }, { 0x0F9F6, 0x081E8 }, { 0x0F9F7, 0x07ACB }, { 0x0F9F8, 0x07B20 }, { 0x0F9F9, 0x07C92 }, { 0x0F9FA, 0x072C0 }, { 0x0F9FB, 0x07099 }, { 0x0F9FC, 0x08B58 }, { 0x0F9FD, 0x04EC0 }, { 0x0F9FE, 0x08336 }, { 0x0F9FF, 0x0523A }, { 0x0FA00, 0x05207 }, { 0x0FA01, 0x05EA6 }, { 0x0FA02, 0x062D3 }, { 0x0FA03, 0x07CD6 }, { 0x0FA04, 0x05B85 }, { 0x0FA05, 0x06D1E }, { 0x0FA06, 0x066B4 }, { 0x0FA07, 0x08F3B }, { 0x0FA08, 0x0884C }, { 0x0FA09, 0x0964D }, { 0x0FA0A, 0x0898B }, { 0x0FA0B, 0x05ED3 }, { 0x0FA0C, 0x05140 }, { 0x0FA0D, 0x055C0 }, { 0x0FA10, 0x0585A }, { 0x0FA12, 0x06674 }, { 0x0FA15, 0x051DE }, { 0x0FA16, 0x0732A }, { 0x0FA17, 0x076CA }, { 0x0FA18, 0x0793C }, { 0x0FA19, 0x0795E }, { 0x0FA1A, 0x07965 }, { 0x0FA1B, 0x0798F }, { 0x0FA1C, 0x09756 }, { 0x0FA1D, 0x07CBE }, { 0x0FA1E, 0x07FBD }, { 0x0FA20, 0x08612 }, { 0x0FA22, 0x08AF8 }, { 0x0FA25, 0x09038 }, { 0x0FA26, 0x090FD }, { 0x0FA2A, 0x098EF }, { 0x0FA2B, 0x098FC }, { 0x0FA2C, 0x09928 }, { 0x0FA2D, 0x09DB4 }, { 0x2F800, 0x04E3D }, { 0x2F801, 0x04E38 }, { 0x2F802, 0x04E41 }, { 0x2F803, 0x20122 }, { 0x2F804, 0x04F60 }, { 0x2F805, 0x04FAE }, { 0x2F806, 0x04FBB }, { 0x2F807, 0x05002 }, { 0x2F808, 0x0507A }, { 0x2F809, 0x05099 }, { 0x2F80A, 0x050E7 }, { 0x2F80B, 0x050CF }, { 0x2F80C, 0x0349E }, { 0x2F80D, 0x2063A }, { 0x2F80E, 0x0514D }, { 0x2F80F, 0x05154 }, { 0x2F810, 0x05164 }, { 0x2F811, 0x05177 }, { 0x2F812, 0x2051C }, { 0x2F813, 0x034B9 }, { 0x2F814, 0x05167 }, { 0x2F815, 0x0518D }, { 0x2F816, 0x2054B }, { 0x2F817, 0x05197 }, { 0x2F818, 0x051A4 }, { 0x2F819, 0x04ECC }, { 0x2F81A, 0x051AC }, { 0x2F81B, 0x051B5 }, { 0x2F81C, 0x291DF }, { 0x2F81D, 0x051F5 }, { 0x2F81E, 0x05203 }, { 0x2F81F, 0x034DF }, { 0x2F820, 0x0523B }, { 0x2F821, 0x05246 }, { 0x2F822, 0x05272 }, { 0x2F823, 0x05277 }, { 0x2F824, 0x03515 }, { 0x2F825, 0x052C7 }, { 0x2F826, 0x052C9 }, { 0x2F827, 0x052E4 }, { 0x2F828, 0x052FA }, { 0x2F829, 0x05305 }, { 0x2F82A, 0x05306 }, { 0x2F82B, 0x05317 }, { 0x2F82C, 0x05349 }, { 0x2F82D, 0x05351 }, { 0x2F82E, 0x0535A }, { 0x2F82F, 0x05373 }, { 0x2F830, 0x0537D }, { 0x2F831, 0x0537F }, { 0x2F832, 0x0537F }, { 0x2F833, 0x0537F }, { 0x2F834, 0x20A2C }, { 0x2F835, 0x07070 }, { 0x2F836, 0x053CA }, { 0x2F837, 0x053DF }, { 0x2F838, 0x20B63 }, { 0x2F839, 0x053EB }, { 0x2F83A, 0x053F1 }, { 0x2F83B, 0x05406 }, { 0x2F83C, 0x0549E }, { 0x2F83D, 0x05438 }, { 0x2F83E, 0x05448 }, { 0x2F83F, 0x05468 }, { 0x2F840, 0x054A2 }, { 0x2F841, 0x054F6 }, { 0x2F842, 0x05510 }, { 0x2F843, 0x05553 }, { 0x2F844, 0x05563 }, { 0x2F845, 0x05584 }, { 0x2F846, 0x05584 }, { 0x2F847, 0x05599 }, { 0x2F848, 0x055AB }, { 0x2F849, 0x055B3 }, { 0x2F84A, 0x055C2 }, { 0x2F84B, 0x05716 }, { 0x2F84C, 0x05606 }, { 0x2F84D, 0x05717 }, { 0x2F84E, 0x05651 }, { 0x2F84F, 0x05674 }, { 0x2F850, 0x05207 }, { 0x2F851, 0x058EE }, { 0x2F852, 0x057CE }, { 0x2F853, 0x057F4 }, { 0x2F854, 0x0580D }, { 0x2F855, 0x0578B }, { 0x2F856, 0x05832 }, { 0x2F857, 0x05831 }, { 0x2F858, 0x058AC }, { 0x2F859, 0x214E4 }, { 0x2F85A, 0x058F2 }, { 0x2F85B, 0x058F7 }, { 0x2F85C, 0x05906 }, { 0x2F85D, 0x0591A }, { 0x2F85E, 0x05922 }, { 0x2F85F, 0x05962 }, { 0x2F860, 0x216A8 }, { 0x2F861, 0x216EA }, { 0x2F862, 0x059EC }, { 0x2F863, 0x05A1B }, { 0x2F864, 0x05A27 }, { 0x2F865, 0x059D8 }, { 0x2F866, 0x05A66 }, { 0x2F867, 0x036EE }, { 0x2F868, 0x2136A }, { 0x2F869, 0x05B08 }, { 0x2F86A, 0x05B3E }, { 0x2F86B, 0x05B3E }, { 0x2F86C, 0x219C8 }, { 0x2F86D, 0x05BC3 }, { 0x2F86E, 0x05BD8 }, { 0x2F86F, 0x05BE7 }, { 0x2F870, 0x05BF3 }, { 0x2F871, 0x21B18 }, { 0x2F872, 0x05BFF }, { 0x2F873, 0x05C06 }, { 0x2F874, 0x05F33 }, { 0x2F875, 0x05C22 }, { 0x2F876, 0x03781 }, { 0x2F877, 0x05C60 }, { 0x2F878, 0x05C6E }, { 0x2F879, 0x05CC0 }, { 0x2F87A, 0x05C8D }, { 0x2F87B, 0x21DE4 }, { 0x2F87C, 0x05D43 }, { 0x2F87D, 0x21DE6 }, { 0x2F87E, 0x05D6E }, { 0x2F87F, 0x05D6B }, { 0x2F880, 0x05D7C }, { 0x2F881, 0x05DE1 }, { 0x2F882, 0x05DE2 }, { 0x2F883, 0x0382F }, { 0x2F884, 0x05DFD }, { 0x2F885, 0x05E28 }, { 0x2F886, 0x05E3D }, { 0x2F887, 0x05E69 }, { 0x2F888, 0x03862 }, { 0x2F889, 0x22183 }, { 0x2F88A, 0x0387C }, { 0x2F88B, 0x05EB0 }, { 0x2F88C, 0x05EB3 }, { 0x2F88D, 0x05EB6 }, { 0x2F88E, 0x05ECA }, { 0x2F88F, 0x2A392 }, { 0x2F890, 0x05EFE }, { 0x2F891, 0x22331 }, { 0x2F892, 0x22331 }, { 0x2F893, 0x08201 }, { 0x2F894, 0x05F22 }, { 0x2F895, 0x05F22 }, { 0x2F896, 0x038C7 }, { 0x2F897, 0x232B8 }, { 0x2F898, 0x261DA }, { 0x2F899, 0x05F62 }, { 0x2F89A, 0x05F6B }, { 0x2F89B, 0x038E3 }, { 0x2F89C, 0x05F9A }, { 0x2F89D, 0x05FCD }, { 0x2F89E, 0x05FD7 }, { 0x2F89F, 0x05FF9 }, { 0x2F8A0, 0x06081 }, { 0x2F8A1, 0x0393A }, { 0x2F8A2, 0x0391C }, { 0x2F8A3, 0x06094 }, { 0x2F8A4, 0x226D4 }, { 0x2F8A5, 0x060C7 }, { 0x2F8A6, 0x06148 }, { 0x2F8A7, 0x0614C }, { 0x2F8A8, 0x0614E }, { 0x2F8A9, 0x0614C }, { 0x2F8AA, 0x0617A }, { 0x2F8AB, 0x0618E }, { 0x2F8AC, 0x061B2 }, { 0x2F8AD, 0x061A4 }, { 0x2F8AE, 0x061AF }, { 0x2F8AF, 0x061DE }, { 0x2F8B0, 0x061F2 }, { 0x2F8B1, 0x061F6 }, { 0x2F8B2, 0x06210 }, { 0x2F8B3, 0x0621B }, { 0x2F8B4, 0x0625D }, { 0x2F8B5, 0x062B1 }, { 0x2F8B6, 0x062D4 }, { 0x2F8B7, 0x06350 }, { 0x2F8B8, 0x22B0C }, { 0x2F8B9, 0x0633D }, { 0x2F8BA, 0x062FC }, { 0x2F8BB, 0x06368 }, { 0x2F8BC, 0x06383 }, { 0x2F8BD, 0x063E4 }, { 0x2F8BE, 0x22BF1 }, { 0x2F8BF, 0x06422 }, { 0x2F8C0, 0x063C5 }, { 0x2F8C1, 0x063A9 }, { 0x2F8C2, 0x03A2E }, { 0x2F8C3, 0x06469 }, { 0x2F8C4, 0x0647E }, { 0x2F8C5, 0x0649D }, { 0x2F8C6, 0x06477 }, { 0x2F8C7, 0x03A6C }, { 0x2F8C8, 0x0654F }, { 0x2F8C9, 0x0656C }, { 0x2F8CA, 0x2300A }, { 0x2F8CB, 0x065E3 }, { 0x2F8CC, 0x066F8 }, { 0x2F8CD, 0x06649 }, { 0x2F8CE, 0x03B19 }, { 0x2F8CF, 0x06691 }, { 0x2F8D0, 0x03B08 }, { 0x2F8D1, 0x03AE4 }, { 0x2F8D2, 0x05192 }, { 0x2F8D3, 0x05195 }, { 0x2F8D4, 0x06700 }, { 0x2F8D5, 0x0669C }, { 0x2F8D6, 0x080AD }, { 0x2F8D7, 0x043D9 }, { 0x2F8D8, 0x06717 }, { 0x2F8D9, 0x0671B }, { 0x2F8DA, 0x06721 }, { 0x2F8DB, 0x0675E }, { 0x2F8DC, 0x06753 }, { 0x2F8DD, 0x233C3 }, { 0x2F8DE, 0x03B49 }, { 0x2F8DF, 0x067FA }, { 0x2F8E0, 0x06785 }, { 0x2F8E1, 0x06852 }, { 0x2F8E2, 0x06885 }, { 0x2F8E3, 0x2346D }, { 0x2F8E4, 0x0688E }, { 0x2F8E5, 0x0681F }, { 0x2F8E6, 0x06914 }, { 0x2F8E7, 0x03B9D }, { 0x2F8E8, 0x06942 }, { 0x2F8E9, 0x069A3 }, { 0x2F8EA, 0x069EA }, { 0x2F8EB, 0x06AA8 }, { 0x2F8EC, 0x236A3 }, { 0x2F8ED, 0x06ADB }, { 0x2F8EE, 0x03C18 }, { 0x2F8EF, 0x06B21 }, { 0x2F8F0, 0x238A7 }, { 0x2F8F1, 0x06B54 }, { 0x2F8F2, 0x03C4E }, { 0x2F8F3, 0x06B72 }, { 0x2F8F4, 0x06B9F }, { 0x2F8F5, 0x06BBA }, { 0x2F8F6, 0x06BBB }, { 0x2F8F7, 0x23A8D }, { 0x2F8F8, 0x21D0B }, { 0x2F8F9, 0x23AFA }, { 0x2F8FA, 0x06C4E }, { 0x2F8FB, 0x23CBC }, { 0x2F8FC, 0x06CBF }, { 0x2F8FD, 0x06CCD }, { 0x2F8FE, 0x06C67 }, { 0x2F8FF, 0x06D16 }, { 0x2F900, 0x06D3E }, { 0x2F901, 0x06D77 }, { 0x2F902, 0x06D41 }, { 0x2F903, 0x06D69 }, { 0x2F904, 0x06D78 }, { 0x2F905, 0x06D85 }, { 0x2F906, 0x23D1E }, { 0x2F907, 0x06D34 }, { 0x2F908, 0x06E2F }, { 0x2F909, 0x06E6E }, { 0x2F90A, 0x03D33 }, { 0x2F90B, 0x06ECB }, { 0x2F90C, 0x06EC7 }, { 0x2F90D, 0x23ED1 }, { 0x2F90E, 0x06DF9 }, { 0x2F90F, 0x06F6E }, { 0x2F910, 0x23F5E }, { 0x2F911, 0x23F8E }, { 0x2F912, 0x06FC6 }, { 0x2F913, 0x07039 }, { 0x2F914, 0x0701E }, { 0x2F915, 0x0701B }, { 0x2F916, 0x03D96 }, { 0x2F917, 0x0704A }, { 0x2F918, 0x0707D }, { 0x2F919, 0x07077 }, { 0x2F91A, 0x070AD }, { 0x2F91B, 0x20525 }, { 0x2F91C, 0x07145 }, { 0x2F91D, 0x24263 }, { 0x2F91E, 0x0719C }, { 0x2F91F, 0x043AB }, { 0x2F920, 0x07228 }, { 0x2F921, 0x07235 }, { 0x2F922, 0x07250 }, { 0x2F923, 0x24608 }, { 0x2F924, 0x07280 }, { 0x2F925, 0x07295 }, { 0x2F926, 0x24735 }, { 0x2F927, 0x24814 }, { 0x2F928, 0x0737A }, { 0x2F929, 0x0738B }, { 0x2F92A, 0x03EAC }, { 0x2F92B, 0x073A5 }, { 0x2F92C, 0x03EB8 }, { 0x2F92D, 0x03EB8 }, { 0x2F92E, 0x07447 }, { 0x2F92F, 0x0745C }, { 0x2F930, 0x07471 }, { 0x2F931, 0x07485 }, { 0x2F932, 0x074CA }, { 0x2F933, 0x03F1B }, { 0x2F934, 0x07524 }, { 0x2F935, 0x24C36 }, { 0x2F936, 0x0753E }, { 0x2F937, 0x24C92 }, { 0x2F938, 0x07570 }, { 0x2F939, 0x2219F }, { 0x2F93A, 0x07610 }, { 0x2F93B, 0x24FA1 }, { 0x2F93C, 0x24FB8 }, { 0x2F93D, 0x25044 }, { 0x2F93E, 0x03FFC }, { 0x2F93F, 0x04008 }, { 0x2F940, 0x076F4 }, { 0x2F941, 0x250F3 }, { 0x2F942, 0x250F2 }, { 0x2F943, 0x25119 }, { 0x2F944, 0x25133 }, { 0x2F945, 0x0771E }, { 0x2F946, 0x0771F }, { 0x2F947, 0x0771F }, { 0x2F948, 0x0774A }, { 0x2F949, 0x04039 }, { 0x2F94A, 0x0778B }, { 0x2F94B, 0x04046 }, { 0x2F94C, 0x04096 }, { 0x2F94D, 0x2541D }, { 0x2F94E, 0x0784E }, { 0x2F94F, 0x0788C }, { 0x2F950, 0x078CC }, { 0x2F951, 0x040E3 }, { 0x2F952, 0x25626 }, { 0x2F953, 0x07956 }, { 0x2F954, 0x2569A }, { 0x2F955, 0x256C5 }, { 0x2F956, 0x0798F }, { 0x2F957, 0x079EB }, { 0x2F958, 0x0412F }, { 0x2F959, 0x07A40 }, { 0x2F95A, 0x07A4A }, { 0x2F95B, 0x07A4F }, { 0x2F95C, 0x2597C }, { 0x2F95D, 0x25AA7 }, { 0x2F95E, 0x25AA7 }, { 0x2F95F, 0x07AAE }, { 0x2F960, 0x04202 }, { 0x2F961, 0x25BAB }, { 0x2F962, 0x07BC6 }, { 0x2F963, 0x07BC9 }, { 0x2F964, 0x04227 }, { 0x2F965, 0x25C80 }, { 0x2F966, 0x07CD2 }, { 0x2F967, 0x042A0 }, { 0x2F968, 0x07CE8 }, { 0x2F969, 0x07CE3 }, { 0x2F96A, 0x07D00 }, { 0x2F96B, 0x25F86 }, { 0x2F96C, 0x07D63 }, { 0x2F96D, 0x04301 }, { 0x2F96E, 0x07DC7 }, { 0x2F96F, 0x07E02 }, { 0x2F970, 0x07E45 }, { 0x2F971, 0x04334 }, { 0x2F972, 0x26228 }, { 0x2F973, 0x26247 }, { 0x2F974, 0x04359 }, { 0x2F975, 0x262D9 }, { 0x2F976, 0x07F7A }, { 0x2F977, 0x2633E }, { 0x2F978, 0x07F95 }, { 0x2F979, 0x07FFA }, { 0x2F97A, 0x08005 }, { 0x2F97B, 0x264DA }, { 0x2F97C, 0x26523 }, { 0x2F97D, 0x08060 }, { 0x2F97E, 0x265A8 }, { 0x2F97F, 0x08070 }, { 0x2F980, 0x2335F }, { 0x2F981, 0x043D5 }, { 0x2F982, 0x080B2 }, { 0x2F983, 0x08103 }, { 0x2F984, 0x0440B }, { 0x2F985, 0x0813E }, { 0x2F986, 0x05AB5 }, { 0x2F987, 0x267A7 }, { 0x2F988, 0x267B5 }, { 0x2F989, 0x23393 }, { 0x2F98A, 0x2339C }, { 0x2F98B, 0x08201 }, { 0x2F98C, 0x08204 }, { 0x2F98D, 0x08F9E }, { 0x2F98E, 0x0446B }, { 0x2F98F, 0x08291 }, { 0x2F990, 0x0828B }, { 0x2F991, 0x0829D }, { 0x2F992, 0x052B3 }, { 0x2F993, 0x082B1 }, { 0x2F994, 0x082B3 }, { 0x2F995, 0x082BD }, { 0x2F996, 0x082E6 }, { 0x2F997, 0x26B3C }, { 0x2F998, 0x082E5 }, { 0x2F999, 0x0831D }, { 0x2F99A, 0x08363 }, { 0x2F99B, 0x083AD }, { 0x2F99C, 0x08323 }, { 0x2F99D, 0x083BD }, { 0x2F99E, 0x083E7 }, { 0x2F99F, 0x08457 }, { 0x2F9A0, 0x08353 }, { 0x2F9A1, 0x083CA }, { 0x2F9A2, 0x083CC }, { 0x2F9A3, 0x083DC }, { 0x2F9A4, 0x26C36 }, { 0x2F9A5, 0x26D6B }, { 0x2F9A6, 0x26CD5 }, { 0x2F9A7, 0x0452B }, { 0x2F9A8, 0x084F1 }, { 0x2F9A9, 0x084F3 }, { 0x2F9AA, 0x08516 }, { 0x2F9AB, 0x273CA }, { 0x2F9AC, 0x08564 }, { 0x2F9AD, 0x26F2C }, { 0x2F9AE, 0x0455D }, { 0x2F9AF, 0x04561 }, { 0x2F9B0, 0x26FB1 }, { 0x2F9B1, 0x270D2 }, { 0x2F9B2, 0x0456B }, { 0x2F9B3, 0x08650 }, { 0x2F9B4, 0x0865C }, { 0x2F9B5, 0x08667 }, { 0x2F9B6, 0x08669 }, { 0x2F9B7, 0x086A9 }, { 0x2F9B8, 0x08688 }, { 0x2F9B9, 0x0870E }, { 0x2F9BA, 0x086E2 }, { 0x2F9BB, 0x08779 }, { 0x2F9BC, 0x08728 }, { 0x2F9BD, 0x0876B }, { 0x2F9BE, 0x08786 }, { 0x2F9BF, 0x04D57 }, { 0x2F9C0, 0x087E1 }, { 0x2F9C1, 0x08801 }, { 0x2F9C2, 0x045F9 }, { 0x2F9C3, 0x08860 }, { 0x2F9C4, 0x08863 }, { 0x2F9C5, 0x27667 }, { 0x2F9C6, 0x088D7 }, { 0x2F9C7, 0x088DE }, { 0x2F9C8, 0x04635 }, { 0x2F9C9, 0x088FA }, { 0x2F9CA, 0x034BB }, { 0x2F9CB, 0x278AE }, { 0x2F9CC, 0x27966 }, { 0x2F9CD, 0x046BE }, { 0x2F9CE, 0x046C7 }, { 0x2F9CF, 0x08AA0 }, { 0x2F9D0, 0x08AED }, { 0x2F9D1, 0x08B8A }, { 0x2F9D2, 0x08C55 }, { 0x2F9D3, 0x27CA8 }, { 0x2F9D4, 0x08CAB }, { 0x2F9D5, 0x08CC1 }, { 0x2F9D6, 0x08D1B }, { 0x2F9D7, 0x08D77 }, { 0x2F9D8, 0x27F2F }, { 0x2F9D9, 0x20804 }, { 0x2F9DA, 0x08DCB }, { 0x2F9DB, 0x08DBC }, { 0x2F9DC, 0x08DF0 }, { 0x2F9DD, 0x208DE }, { 0x2F9DE, 0x08ED4 }, { 0x2F9DF, 0x08F38 }, { 0x2F9E0, 0x285D2 }, { 0x2F9E1, 0x285ED }, { 0x2F9E2, 0x09094 }, { 0x2F9E3, 0x090F1 }, { 0x2F9E4, 0x09111 }, { 0x2F9E5, 0x2872E }, { 0x2F9E6, 0x0911B }, { 0x2F9E7, 0x09238 }, { 0x2F9E8, 0x092D7 }, { 0x2F9E9, 0x092D8 }, { 0x2F9EA, 0x0927C }, { 0x2F9EB, 0x093F9 }, { 0x2F9EC, 0x09415 }, { 0x2F9ED, 0x28BFA }, { 0x2F9EE, 0x0958B }, { 0x2F9EF, 0x04995 }, { 0x2F9F0, 0x095B7 }, { 0x2F9F1, 0x28D77 }, { 0x2F9F2, 0x049E6 }, { 0x2F9F3, 0x096C3 }, { 0x2F9F4, 0x05DB2 }, { 0x2F9F5, 0x09723 }, { 0x2F9F6, 0x29145 }, { 0x2F9F7, 0x2921A }, { 0x2F9F8, 0x04A6E }, { 0x2F9F9, 0x04A76 }, { 0x2F9FA, 0x097E0 }, { 0x2F9FB, 0x2940A }, { 0x2F9FC, 0x04AB2 }, { 0x2F9FD, 0x29496 }, { 0x2F9FE, 0x0980B }, { 0x2F9FF, 0x0980B }, { 0x2FA00, 0x09829 }, { 0x2FA01, 0x295B6 }, { 0x2FA02, 0x098E2 }, { 0x2FA03, 0x04B33 }, { 0x2FA04, 0x09929 }, { 0x2FA05, 0x099A7 }, { 0x2FA06, 0x099C2 }, { 0x2FA07, 0x099FE }, { 0x2FA08, 0x04BCE }, { 0x2FA09, 0x29B30 }, { 0x2FA0A, 0x09B12 }, { 0x2FA0B, 0x09C40 }, { 0x2FA0C, 0x09CFD }, { 0x2FA0D, 0x04CCE }, { 0x2FA0E, 0x04CED }, { 0x2FA0F, 0x09D67 }, { 0x2FA10, 0x2A0CE }, { 0x2FA11, 0x04CF8 }, { 0x2FA12, 0x2A105 }, { 0x2FA13, 0x2A20E }, { 0x2FA14, 0x2A291 }, { 0x2FA15, 0x09EBB }, { 0x2FA16, 0x04D56 }, { 0x2FA17, 0x09EF9 }, { 0x2FA18, 0x09EFE }, { 0x2FA19, 0x09F05 }, { 0x2FA1A, 0x09F0F }, { 0x2FA1B, 0x09F16 }, { 0x2FA1C, 0x09F3B }, { 0x2FA1D, 0x2A600 }, { null, null } }; struct _combclass { unsigned int code; unsigned char comb; } combclass[] = { { 0x00300, 230 }, { 0x00301, 230 }, { 0x00302, 230 }, { 0x00303, 230 }, { 0x00304, 230 }, { 0x00305, 230 }, { 0x00306, 230 }, { 0x00307, 230 }, { 0x00308, 230 }, { 0x00309, 230 }, { 0x0030A, 230 }, { 0x0030B, 230 }, { 0x0030C, 230 }, { 0x0030D, 230 }, { 0x0030E, 230 }, { 0x0030F, 230 }, { 0x00310, 230 }, { 0x00311, 230 }, { 0x00312, 230 }, { 0x00313, 230 }, { 0x00314, 230 }, { 0x00315, 232 }, { 0x00316, 220 }, { 0x00317, 220 }, { 0x00318, 220 }, { 0x00319, 220 }, { 0x0031A, 232 }, { 0x0031B, 216 }, { 0x0031C, 220 }, { 0x0031D, 220 }, { 0x0031E, 220 }, { 0x0031F, 220 }, { 0x00320, 220 }, { 0x00321, 202 }, { 0x00322, 202 }, { 0x00323, 220 }, { 0x00324, 220 }, { 0x00325, 220 }, { 0x00326, 220 }, { 0x00327, 202 }, { 0x00328, 202 }, { 0x00329, 220 }, { 0x0032A, 220 }, { 0x0032B, 220 }, { 0x0032C, 220 }, { 0x0032D, 220 }, { 0x0032E, 220 }, { 0x0032F, 220 }, { 0x00330, 220 }, { 0x00331, 220 }, { 0x00332, 220 }, { 0x00333, 220 }, { 0x00334, 1 }, { 0x00335, 1 }, { 0x00336, 1 }, { 0x00337, 1 }, { 0x00338, 1 }, { 0x00339, 220 }, { 0x0033A, 220 }, { 0x0033B, 220 }, { 0x0033C, 220 }, { 0x0033D, 230 }, { 0x0033E, 230 }, { 0x0033F, 230 }, { 0x00340, 230 }, { 0x00341, 230 }, { 0x00342, 230 }, { 0x00343, 230 }, { 0x00344, 230 }, { 0x00345, 240 }, { 0x00346, 230 }, { 0x00347, 220 }, { 0x00348, 220 }, { 0x00349, 220 }, { 0x0034A, 230 }, { 0x0034B, 230 }, { 0x0034C, 230 }, { 0x0034D, 220 }, { 0x0034E, 220 }, { 0x00360, 234 }, { 0x00361, 234 }, { 0x00362, 233 }, { 0x00483, 230 }, { 0x00484, 230 }, { 0x00485, 230 }, { 0x00486, 230 }, { 0x00591, 220 }, { 0x00592, 230 }, { 0x00593, 230 }, { 0x00594, 230 }, { 0x00595, 230 }, { 0x00596, 220 }, { 0x00597, 230 }, { 0x00598, 230 }, { 0x00599, 230 }, { 0x0059A, 222 }, { 0x0059B, 220 }, { 0x0059C, 230 }, { 0x0059D, 230 }, { 0x0059E, 230 }, { 0x0059F, 230 }, { 0x005A0, 230 }, { 0x005A1, 230 }, { 0x005A3, 220 }, { 0x005A4, 220 }, { 0x005A5, 220 }, { 0x005A6, 220 }, { 0x005A7, 220 }, { 0x005A8, 230 }, { 0x005A9, 230 }, { 0x005AA, 220 }, { 0x005AB, 230 }, { 0x005AC, 230 }, { 0x005AD, 222 }, { 0x005AE, 228 }, { 0x005AF, 230 }, { 0x005B0, 10 }, { 0x005B1, 11 }, { 0x005B2, 12 }, { 0x005B3, 13 }, { 0x005B4, 14 }, { 0x005B5, 15 }, { 0x005B6, 16 }, { 0x005B7, 17 }, { 0x005B8, 18 }, { 0x005B9, 19 }, { 0x005BB, 20 }, { 0x005BC, 21 }, { 0x005BD, 22 }, { 0x005BF, 23 }, { 0x005C1, 24 }, { 0x005C2, 25 }, { 0x005C4, 230 }, { 0x0064B, 27 }, { 0x0064C, 28 }, { 0x0064D, 29 }, { 0x0064E, 30 }, { 0x0064F, 31 }, { 0x00650, 32 }, { 0x00651, 33 }, { 0x00652, 34 }, { 0x00653, 230 }, { 0x00654, 230 }, { 0x00655, 220 }, { 0x00670, 35 }, { 0x006D6, 230 }, { 0x006D7, 230 }, { 0x006D8, 230 }, { 0x006D9, 230 }, { 0x006DA, 230 }, { 0x006DB, 230 }, { 0x006DC, 230 }, { 0x006DF, 230 }, { 0x006E0, 230 }, { 0x006E1, 230 }, { 0x006E2, 230 }, { 0x006E3, 220 }, { 0x006E4, 230 }, { 0x006E7, 230 }, { 0x006E8, 230 }, { 0x006EA, 220 }, { 0x006EB, 230 }, { 0x006EC, 230 }, { 0x006ED, 220 }, { 0x00711, 36 }, { 0x00730, 230 }, { 0x00731, 220 }, { 0x00732, 230 }, { 0x00733, 230 }, { 0x00734, 220 }, { 0x00735, 230 }, { 0x00736, 230 }, { 0x00737, 220 }, { 0x00738, 220 }, { 0x00739, 220 }, { 0x0073A, 230 }, { 0x0073B, 220 }, { 0x0073C, 220 }, { 0x0073D, 230 }, { 0x0073E, 220 }, { 0x0073F, 230 }, { 0x00740, 230 }, { 0x00741, 230 }, { 0x00742, 220 }, { 0x00743, 230 }, { 0x00744, 220 }, { 0x00745, 230 }, { 0x00746, 220 }, { 0x00747, 230 }, { 0x00748, 220 }, { 0x00749, 230 }, { 0x0074A, 230 }, { 0x0093C, 7 }, { 0x0094D, 9 }, { 0x00951, 230 }, { 0x00952, 220 }, { 0x00953, 230 }, { 0x00954, 230 }, { 0x009BC, 7 }, { 0x009CD, 9 }, { 0x00A3C, 7 }, { 0x00A4D, 9 }, { 0x00ABC, 7 }, { 0x00ACD, 9 }, { 0x00B3C, 7 }, { 0x00B4D, 9 }, { 0x00BCD, 9 }, { 0x00C4D, 9 }, { 0x00C55, 84 }, { 0x00C56, 91 }, { 0x00CCD, 9 }, { 0x00D4D, 9 }, { 0x00DCA, 9 }, { 0x00E38, 103 }, { 0x00E39, 103 }, { 0x00E3A, 9 }, { 0x00E48, 107 }, { 0x00E49, 107 }, { 0x00E4A, 107 }, { 0x00E4B, 107 }, { 0x00EB8, 118 }, { 0x00EB9, 118 }, { 0x00EC8, 122 }, { 0x00EC9, 122 }, { 0x00ECA, 122 }, { 0x00ECB, 122 }, { 0x00F18, 220 }, { 0x00F19, 220 }, { 0x00F35, 220 }, { 0x00F37, 220 }, { 0x00F39, 216 }, { 0x00F71, 129 }, { 0x00F72, 130 }, { 0x00F74, 132 }, { 0x00F7A, 130 }, { 0x00F7B, 130 }, { 0x00F7C, 130 }, { 0x00F7D, 130 }, { 0x00F80, 130 }, { 0x00F82, 230 }, { 0x00F83, 230 }, { 0x00F84, 9 }, { 0x00F86, 230 }, { 0x00F87, 230 }, { 0x00FC6, 220 }, { 0x01037, 7 }, { 0x01039, 9 }, { 0x017D2, 9 }, { 0x018A9, 228 }, { 0x020D0, 230 }, { 0x020D1, 230 }, { 0x020D2, 1 }, { 0x020D3, 1 }, { 0x020D4, 230 }, { 0x020D5, 230 }, { 0x020D6, 230 }, { 0x020D7, 230 }, { 0x020D8, 1 }, { 0x020D9, 1 }, { 0x020DA, 1 }, { 0x020DB, 230 }, { 0x020DC, 230 }, { 0x020E1, 230 }, { 0x0302A, 218 }, { 0x0302B, 228 }, { 0x0302C, 232 }, { 0x0302D, 222 }, { 0x0302E, 224 }, { 0x0302F, 224 }, { 0x03099, 8 }, { 0x0309A, 8 }, { 0x0FB1E, 26 }, { 0x0FE20, 230 }, { 0x0FE21, 230 }, { 0x0FE22, 230 }, { 0x0FE23, 230 }, { 0x1D165, 216 }, { 0x1D166, 216 }, { 0x1D167, 1 }, { 0x1D168, 1 }, { 0x1D169, 1 }, { 0x1D16D, 226 }, { 0x1D16E, 216 }, { 0x1D16F, 216 }, { 0x1D170, 216 }, { 0x1D171, 216 }, { 0x1D172, 216 }, { 0x1D17B, 220 }, { 0x1D17C, 220 }, { 0x1D17D, 220 }, { 0x1D17E, 220 }, { 0x1D17F, 220 }, { 0x1D180, 220 }, { 0x1D181, 220 }, { 0x1D182, 220 }, { 0x1D185, 230 }, { 0x1D186, 230 }, { 0x1D187, 230 }, { 0x1D188, 230 }, { 0x1D189, 230 }, { 0x1D18A, 220 }, { 0x1D18B, 220 }, { 0x1D1AA, 230 }, { 0x1D1AB, 230 }, { 0x1D1AC, 230 }, { 0x1D1AD, 230 }, { null, null } }; const unsigned int exclusions[] = { 0x00958, 0x00959, 0x0095A, 0x0095B, 0x0095C, 0x0095D, 0x0095E, 0x0095F, 0x009DC, 0x009DD, 0x009DF, 0x00A33, 0x00A36, 0x00A59, 0x00A5A, 0x00A5B, 0x00A5E, 0x00B5C, 0x00B5D, 0x00F43, 0x00F4D, 0x00F52, 0x00F57, 0x00F5C, 0x00F69, 0x00F76, 0x00F78, 0x00F93, 0x00F9D, 0x00FA2, 0x00FA7, 0x00FAC, 0x00FB9, 0x0FB1D, 0x0FB1F, 0x0FB2A, 0x0FB2B, 0x0FB2C, 0x0FB2D, 0x0FB2E, 0x0FB2F, 0x0FB30, 0x0FB31, 0x0FB32, 0x0FB33, 0x0FB34, 0x0FB35, 0x0FB36, 0x0FB38, 0x0FB39, 0x0FB3A, 0x0FB3B, 0x0FB3C, 0x0FB3E, 0x0FB40, 0x0FB41, 0x0FB43, 0x0FB44, 0x0FB46, 0x0FB47, 0x0FB48, 0x0FB49, 0x0FB4A, 0x0FB4B, 0x0FB4C, 0x0FB4D, 0x0FB4E, 0x1D15E, 0x1D15F, 0x1D160, 0x1D161, 0x1D162, 0x1D163, 0x1D164, 0x1D1BB, 0x1D1BC, 0x1D1BD, 0x1D1BE, 0x1D1BF, 0x1D1C0, null }; unace-2.5/source/base/all/uninorm/wincode.h0000644000175000017500000003710707755772410021465 0ustar danieldaniel00000000000000/* Windows Platform character tables (stolen from keytab by Thomas Much) used for converting file names, which are represented in Windows OEM/CP850 in ACE archives */ /* DOS codepage 850 (="OEM") -> Unicode */ UINT CP850toUnicode[256] = { /* 00 - 07 */ 0x0000, 0x263A, 0x263B, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022, /* 08 - 0F */ 0x25D8, 0x25E6, 0x25D9, 0x2642, 0x2640, 0x266A, 0x266B, 0x263C, /* 10 - 17 */ 0x25B6, 0x25C0, 0x2195, 0x203C, 0x00B6, 0x00A7, 0x25AC, 0x21A8, /* 18 - 1F */ 0x2191, 0x2193, 0x2192, 0x2190, 0x2310, 0x2194, 0x25B2, 0x25BC, /* 20 - 27 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 - 2F */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 30 - 37 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 - 3F */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 - 47 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 - 4F */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 50 - 57 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 - 5F */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 60 - 67 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 - 6F */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 70 - 77 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 - 7F */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 80 - 87 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 88 - 8F */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 90 - 97 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 98 - 9F */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* A0 - A7 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* A8 - AF */ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* B0 - B7 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* B8 - BF */ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* C0 - C7 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* C8 - CF */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* D0 - D7 */ 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, /* D8 - DF */ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* E0 - E7 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* E8 - EF */ 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* F0 - F7 */ 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* F8 - FF */ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0 }; /* Windows 125x Codepages (= ANSI) Latin 2 (1250) Cyrillic (1251) Latin 1 (1252) Greek (1253) Latin 5 (1254) Hebrew (1255) Arabic (1256) Baltic (1257) Viet Nam (1258) */ UINT CP1250toUnicode[256] = { /* 00 - 07 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 08 - 0F */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 10 - 17 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 18 - 1F */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 20 - 27 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 - 2F */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 30 - 37 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 - 3F */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 - 47 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 - 4F */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 50 - 57 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 - 5F */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 60 - 67 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 - 6F */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 70 - 77 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 - 7F */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 80 - 87 */ 0x20AC, 0xFFFF, 0x201A, 0xFFFF, 0x201E, 0x2026, 0x2020, 0x2021, /* 88 - 8F */ 0xFFFF, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, /* 90 - 97 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 98 - 9F */ 0xFFFF, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, /* A0 - A7 */ 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* A8 - AF */ 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, /* B0 - B7 */ 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* B8 - BF */ 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, /* C0 - C7 */ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* C8 - CF */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* D0 - D7 */ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* D8 - DF */ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* E0 - E7 */ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* E8 - EF */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* F0 - F7 */ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* F8 - FF */ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 }; UINT CP1252toUnicode[256] = { /* 00 - 07 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 08 - 0F */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 10 - 17 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 18 - 1F */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 20 - 27 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 - 2F */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 30 - 37 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 - 3F */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 - 47 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 - 4F */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 50 - 57 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 - 5F */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 60 - 67 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 - 6F */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 70 - 77 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 - 7F */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 80 - 87 */ 0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 88 - 8F */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFF, 0x017D, 0xFFFF, /* 90 - 97 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 98 - 9F */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFF, 0x017E, 0x0178, /* A0 - A7 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* A8 - AF */ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* B0 - B7 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* B8 - BF */ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* C0 - C7 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* C8 - CF */ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* D0 - D7 */ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* D8 - DF */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* E0 - E7 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* E8 - EF */ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* F0 - F7 */ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* F8 - FF */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF }; UINT CP1254toUnicode[256] = { /* 00 - 07 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 08 - 0F */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 10 - 17 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 18 - 1F */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 20 - 27 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 - 2F */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 30 - 37 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 - 3F */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 - 47 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 - 4F */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 50 - 57 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 - 5F */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 60 - 67 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 - 6F */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 70 - 77 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 - 7F */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 80 - 87 */ 0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 88 - 8F */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFF, 0xFFFF, 0xFFFF, /* 90 - 97 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 98 - 9F */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFF, 0xFFFF, 0x0178, /* A0 - A7 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* A8 - AF */ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* B0 - B7 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* B8 - BF */ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* C0 - C7 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* C8 - CF */ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* D0 - D7 */ 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* D8 - DF */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* E0 - E7 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* E8 - EF */ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* F0 - F7 */ 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* F8 - FF */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF }; UINT CP1255toUnicode[256] = { /* 00 - 07 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 08 - 0F */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 10 - 17 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 18 - 1F */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 20 - 27 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 - 2F */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 30 - 37 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 - 3F */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 - 47 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 - 4F */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 50 - 57 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 - 5F */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 60 - 67 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 - 6F */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 70 - 77 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 - 7F */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 80 - 87 */ 0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 88 - 8F */ 0x02C6, 0x2030, 0xFFFF, 0x2039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 90 - 97 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 98 - 9F */ 0x02DC, 0x2122, 0xFFFF, 0x203A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* A0 - A7 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, /* A8 - AF */ 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* B0 - B7 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* B8 - BF */ 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* C0 - C7 */ 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, /* C8 - CF */ 0x05B8, 0x05B9, 0xFFFF, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, /* D0 - D7 */ 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, /* D8 - DF */ 0x05F4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* E0 - E7 */ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, /* E8 - EF */ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* F0 - F7 */ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* F8 - FF */ 0x05E8, 0x05E9, 0x05EA, 0xFFFF, 0xFFFF, 0x200E, 0x200F, 0xFFFF }; UINT CP1257toUnicode[256] = { /* 00 - 07 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 08 - 0F */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 10 - 17 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 18 - 1F */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 20 - 27 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 28 - 2F */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 30 - 37 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 38 - 3F */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 - 47 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 - 4F */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 50 - 57 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 58 - 5F */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 60 - 67 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 68 - 6F */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 70 - 77 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 78 - 7F */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 80 - 87 */ 0x20AC, 0xFFFF, 0x201A, 0xFFFF, 0x201E, 0x2026, 0x2020, 0x2021, /* 88 - 8F */ 0xFFFF, 0x2030, 0xFFFF, 0x2039, 0xFFFF, 0x00A8, 0x02C7, 0x00B8, /* 90 - 97 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 98 - 9F */ 0xFFFF, 0x2122, 0xFFFF, 0x203A, 0xFFFF, 0x00AF, 0x02DB, 0xFFFF, /* A0 - A7 */ 0x00A0, 0xFFFF, 0x00A2, 0x00A3, 0x00A4, 0xFFFF, 0x00A6, 0x00A7, /* A8 - AF */ 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* B0 - B7 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* B8 - BF */ 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* C0 - C7 */ 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* C8 - CF */ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* D0 - D7 */ 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* D8 - DF */ 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* E0 - E7 */ 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* E8 - EF */ 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* F0 - F7 */ 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* F8 - FF */ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9 }; unace-2.5/source/base/all/uninorm/uninorm.h0000644000175000017500000000017707752445166021523 0ustar danieldaniel00000000000000 INT BASE_UNINORM_CP850ToUTF8NFD(UCHAR *cp1252String, INT len); INT BASE_UNINORM_CP850ToUTF8NFC(UCHAR *cp1252String, INT len); unace-2.5/source/base/all/uninorm/unincore.c0000644000175000017500000002710207754212656021644 0ustar danieldaniel00000000000000/* * Uninorm - A free ANSI C Implementation of Unicode * Normalization Forms NFD and NFC. * * You may use this library on either the terms of the * GNU General Public Licence or the Artistic Licence. * * The project is maintained at * http://sourceforge.net/projects/uninorm * * Copyright (c) 2001 Bjoern Hoehrmann * * $Id: unincore.c,v 1.1 2003/11/11 17:00:31 kolja Exp $ * */ #include #include #include #include "unidata.h" /* Hangul constants */ #define SBase 0xAC00 #define LBase 0x1100 #define VBase 0x1161 #define TBase 0x11A7 #define HLast 0xD7A3 #define LCount 19 #define VCount 21 #define TCount 28 #define NCount (VCount * TCount) #define SCount (LCount * NCount) /* convenience null */ #define null 0 #define MAX_FILENAME_SIZE 2048 /** * Get number of fields in int array. * * @param str given null-terminated int array * * @return length of the array * */ uint istrlen(uint *str) { uint i = 0; if (!str) return 0; while(*str++) ++i; return i; } /** * Compare two null-terminated int arrays * * @param s1 first int array * @param s2 second int array * * @return result of the analysis as for strcmp() * */ uint istrcmp(uint *s1, uint *s2) { uint i; while ((i = *s1) == *s2) { if (i == 0) return 0; ++s1; ++s2; } return (*s1 > *s2 ? 1 : -1); } /** * Checks if given code point is excluded from recomposition * using data derived from CompositionExclusions.txt. * * @param c given code point * * @return true value if excluded, false otherwise * */ uint is_excluded(uint c) { uint i; for (i = 0; exclusions[i]; ++i) { if (exclusions[i] == c) return 1; } return 0; } /** * Looks up combining class of given code point * * @param c given code point * * @return the combining class * */ uint get_combining_class(uint c) { uint i; for (i = 0; combclass[i].code != null; ++i) { if (combclass[i].code == c) { return combclass[i].comb; } } return 0; } /** * Get canonical composition of given code point * * @param c1 initial code point * @param c2 combining code point * * @return combined code point or -1 if none found * or the code point was excluded from composition * */ int get_recombined_codepoint(uint c1, uint c2) { uint i; int r = -1; for (i = 0; mapping[i].code; ++i) { if (mapping[i].decomp[0] == c1 && mapping[i].decomp[1] == c2) { if (get_combining_class(mapping[i].code) == 0) r = mapping[i].code; break; } } if (r != -1 && !is_excluded(r)) return r; return -1; } /** * Get canonical decomposition of given code point * * @param buf null-terminated destination int array * @param c code point to decompose * * @return null-terminated destination int array * */ uint *get_decomposition(uint *buf, uint c) { uint i; for (i = 0; mapping[i].code; ++i) { if (mapping[i].code == c) { buf[0] = mapping[i].decomp[0]; buf[1] = mapping[i].decomp[1]; return buf; } } for (i = 0; singleton[i].code; ++i) { if (singleton[i].code == c) { buf[0] = singleton[i].decomp; buf[1] = null; return buf; } } return null; } /** * Recursivly decomposes given code point to int array. * * @param buf null-terminated destination int array * @param c code point to decompose * * @return null-terminated destination int array * */ void decompose_recursive(uint *buf, uint c) { uint pos = 0; uint decomp[2]; buf[0] = c; buf[1] = null; if (c >= SBase && c <= HLast) { int SIndex = c - SBase; if (SIndex < 0 || SIndex >= SCount) { return; } else { int L = LBase + SIndex / NCount; int V = VBase + (SIndex % NCount) / TCount; int T = TBase + SIndex % TCount; buf[pos++] = L; buf[pos++] = V; if (T != TBase) buf[pos++] = T; buf[pos++] = null; } } else { if (get_decomposition(decomp, c) != null) { buf[pos++] = decomp[0]; decompose_recursive(buf, decomp[0]); pos = istrlen(buf); if (decomp[1]) { buf[pos++] = decomp[1]; } buf[pos++] = null; } } } /** * Put code points in canonical order * * @param str null-terminated int array to order * * @return ordered int array * */ void canonical_order(uint *str) { int i; int len = istrlen(str); for (i = 0; i < len-1; ++i) { uint first = get_combining_class(str[i]); uint second = get_combining_class(str[i+1]); if ((first > second) && (second != 0)) { uint c = str[i]; str[i] = str[i+1]; str[i+1] = c; if (i == 0) --i; else i -= 2; } } } /** * Create canonical composition of given int array * * @param str null-terminated int array to compose * * @return canonically composed int array * */ void canonical_composition(uint *str) { uint ipos = 0, /* position of initial */ cpos = 0, /* current position */ opos = 0; /* writing position */ uint len = istrlen(str); uint SIndex; int initial = -1; int c; if (!len) return; while (cpos < len) { uint this_class = get_combining_class(str[cpos]); if (initial >= LBase && initial < (LBase + LCount) && str[cpos] >= VBase && str[cpos] < (VBase + VCount)) { initial = str[ipos] = ((initial - LBase) * VCount + str[cpos] - VBase) * TCount + SBase; ++cpos; } else if (0 <= (SIndex = initial - SBase) && SIndex < SCount && SIndex % TCount == 0) { int TIndex = str[cpos] - TBase; if (0 <= TIndex && TIndex < TCount) { str[ipos] = initial + str[cpos++] - TBase; } else { str[opos++] = str[cpos++]; } } else if ((initial != -1) && (initial == (int)str[opos - 1] || get_combining_class(str[opos - 1]) != this_class) && (c = get_recombined_codepoint(initial, str[cpos])) != -1) { initial = str[ipos] = c; ++cpos; } else if (this_class == 0) { ipos = opos++; str[ipos] = initial = str[cpos++]; } else { str[opos++] = str[cpos++]; } } str[opos++] = null; } /** * Create canonical decomposition of given int array * * @param buf null-terminated destination int array * @param str null-terminated source int array * * @return destination int array * */ void canonical_decomposition(uint *buf, uint *str) { uint i, j, pos = 0, len = 0; uint length = istrlen(str); uint temp[MAX_FILENAME_SIZE]; temp[0] = null; for (i = 0; i < length; ++i) { decompose_recursive(temp, str[i]); len = istrlen(temp); for (j = 0; j < len; ++j) buf[pos++] = temp[j]; } buf[pos++] = null; } /** * Decode UTF-8 encoded char* to int array. * * @param buf null-terminated destination int array * @param str null-terminated source string * * @return the destination int array * */ void decode_utf8(uint *buf, char *str) { uint len = strlen(str); uint i, j = 0; for (i = 0; i < len; ++i) { uint k, n, count; uint c = str[i]; if ((c & 0xE0) == 0xC0) { n = c & 31; count = 1; } else if ((c & 0xF0) == 0xE0) { n = c & 15; count = 2; } else if ((c & 0xF8) == 0xF0) { n = c & 7; count = 3; } else if ((c & 0xFC) == 0xF8) { n = c & 3; count = 4; } else if ((c & 0xFE) == 0xFC) { n = c & 1; count = 5; } else { buf[j++] = c; continue; } if (i + count > len) break; for (k = 0; k < count; ++k) { c = str[++i]; n = (n << 6) | (c & 0x3F); } buf[j++] = n; } buf[j++] = null; } /** * Encode int array to UTF-8 string. * * @param buf null-terminated destination string * @param str null-terminated source int array * * @return the destination int array * */ void encode_utf8(char *buf, uint *str) { int i, j = 0; int len = istrlen(str); for (i = 0; i < len; ++i) { uint c = str[i]; if (c < 128) { buf[j++] = (char)c; } else if (c <= 0x7FF) { buf[j++] = (char)(0xC0 | (c >> 6)); buf[j++] = (char)(0x80 | (c & 0x3F)); } else if (c <= 0xFFFF) { buf[j++] = (char)(0xE0 | (c >> 12)); buf[j++] = (char)(0x80 | ((c >> 6) & 0x3F)); buf[j++] = (char)(0x80 | (c & 0x3F)); } else if (c <= 0x1FFFFF) { buf[j++] = (char)(0xF0 | (c >> 18)); buf[j++] = (char)(0x80 | ((c >> 12) & 0x3F)); buf[j++] = (char)(0x80 | ((c >> 6) & 0x3F)); buf[j++] = (char)(0x80 | (c & 0x3F)); } else { buf[j++] = (char)(0xF8 | (c >> 24)); buf[j++] = (char)(0x80 | ((c >> 18) & 0x3F)); buf[j++] = (char)(0x80 | ((c >> 12) & 0x3F)); buf[j++] = (char)(0x80 | ((c >> 6) & 0x3F)); buf[j++] = (char)(0x80 | (c & 0x3F)); } } buf[j++] = null; } /** * Apply Normalization Form D to given int array. * * @param buf null-terminated destination int array * @param str null-terminated source int array * * @return the destination int array in normalized form * */ void normalize_nfd(uint *buf, uint *str) { canonical_decomposition(buf, str); canonical_order(buf); } /** * Apply Normalization Form C to given int array. * * @param buf null-terminated destination int array * @param str null-terminated source int array * * @return the destination int array in normalized form * */ void normalize_nfc(uint *buf, uint *str) { normalize_nfd(buf, str); canonical_composition(buf); } /** * Apply Normalization Form D to given UTF-8 encoded string. * * @param buf null-terminated destination string * @param str null-terminated source string * * @return the destination UTF-8 encoded string in normalized form * */ void normalize_nfd_utf8(char *buf, char *str) { uint temp1[MAX_FILENAME_SIZE]; uint temp2[MAX_FILENAME_SIZE]; decode_utf8(temp1, str); normalize_nfd(temp2, temp1); encode_utf8(buf, temp2); } /** * Apply Normalization Form C to given UTF-8 encoded string. * * @param buf null-terminated destination string * @param str null-terminated source string * * @return the destination UTF-8 encoded string in normalized form * */ void normalize_nfc_utf8(char *buf, char *str) { uint temp1[MAX_FILENAME_SIZE]; uint temp2[MAX_FILENAME_SIZE]; decode_utf8(temp1, str); normalize_nfc(temp2, temp1); encode_utf8(buf, temp2); } unace-2.5/source/base/all/uninorm/unincore.h0000644000175000017500000000233607752107356021651 0ustar danieldaniel00000000000000/* * Header file to use Uninorm library * */ /* integer string functions */ int istrlen (int * str ); int istrcmp (int * s1, int * s2 ); /* unicode data accessors */ int is_excluded (int c ); int get_combining_class (int c ); int get_recombined_codepoint (int c1, int c2 ); int * get_decomposition (int * buf, int c ); /* utf en/decoding functions */ void encode_utf8(char *buf, unsigned *str); void decode_utf8(unsigned *buf, char *str); /* (de)composition functions */ void decompose_recursive (int * buf, int c ); void canonical_order (int * str ); void canonical_composition (int * str ); void canonical_decomposition (int * buf, int * str ); /* normalization functions */ void normalize_nfd (int * buf, int * str ); void normalize_nfc (int * buf, int * str ); void normalize_nfd_utf8 (char * buf, char * str ); void normalize_nfc_utf8 (char * buf, char * str ); unace-2.5/source/base/all/uninorm/uninorm.c0000644000175000017500000000634207760245374021514 0ustar danieldaniel00000000000000#include #include #include "base/all/includes.h" #include "unincore.h" #include "wincode.h" /*-----------------BASE_UNINORM_CP850ToUTF8NFD------------------------------*/ /* UTF-8 NFD is the filename representation format in Apple's Mac OS X (Darwin) HFS+ file system */ INT BASE_UNINORM_CP850ToUTF8NFD(UCHAR *cp850String, INT len) { UINT Unicode[BASE_LFN_MAXLEN+1], Normalized[BASE_LFN_MAXLEN+1], *destptr = Unicode; UCHAR *srcptr = cp850String, *resultstr = cp850String; srcptr[len] = 0; /* First, convert that DOS CP850 encoded String to Unicode */ while (*srcptr) { UCHAR srccode = *srcptr++; *destptr++ = CP850toUnicode[srccode]; } *destptr = 0; /* Then normalize and return UTF-8 encoded in place of the input string */ normalize_nfd(Normalized, Unicode); encode_utf8(resultstr, Normalized); return strlen(resultstr); } /*-----------------BASE_UNINORM_CP850ToUTF8NFC------------------------------*/ /* UTF-8 NFC is the filename representation format in most other UNIX systems including Linux */ INT BASE_UNINORM_CP850ToUTF8NFC(UCHAR *cp850String, INT len) { UINT Unicode[BASE_LFN_MAXLEN+1], Normalized[BASE_LFN_MAXLEN+1], *destptr = Unicode; UCHAR *srcptr = cp850String, *resultstr = cp850String; srcptr[len] = 0; /* First, convert that DOS CP850 encoded String to Unicode */ while (*srcptr) { UCHAR srccode = *srcptr++; *destptr++ = CP850toUnicode[srccode]; } *destptr = 0; /* Then normalize and return UTF-8 encoded in place of the input string */ normalize_nfc(Normalized, Unicode); encode_utf8(resultstr, Normalized); return strlen(resultstr); } UCHAR OEMToANSI(UCHAR cp850) { INT i, Unicode = CP850toUnicode[cp850]; for (i=0; i<256; i++) if (Unicode==CP1252toUnicode[i]) return (UCHAR) i; /* Latin-1 */ // for (i=0; i<256; i++) if (Unicode==CP1250toUnicode[i]) return (UCHAR) i; // for (i=0; i<256; i++) if (Unicode==CP1254toUnicode[i]) return (UCHAR) i; // for (i=0; i<256; i++) if (Unicode==CP1257toUnicode[i]) return (UCHAR) i; return '_'; } /*-----------------BASE_UNINORM_CP850ToANSI------------------------------*/ /* For UNIX (Linux) file systems with Latin-1/CP1252 based filename encoding */ INT BASE_UNINORM_CP850ToANSI(UCHAR *cp850String, INT len) { UCHAR *ptr = cp850String; ptr[len] = 0; for (; *ptr; ptr++) { *ptr = OEMToANSI(*ptr); } return len; } /*-----------------BASE_UNINORM_UTF8NFCToNFD (Alternative Implementation using Apples OSX 10.2 API) #include INT BASE_UNINORM_CP850ToUTF8NFD(UCHAR *utf8src, INT len) { CFStringRef cfs = CFStringCreateWithBytes(NULL, utf8src, len, kCFStringEncodingDOSLatin1, 0); CFMutableStringRef str = CFStringCreateMutableCopy(NULL, 0, cfs); CFRelease(cfs); // HFS+ imposes Unicode2.1 decomposed UTF-8 encoding on all path elements CFStringNormalize(str, kCFStringNormalizationFormD); // canonical decomposition { CFRange rng = CFRangeMake(0, CFStringGetLength(str)); UCHAR *dest = utf8src; CFIndex destlen = 0; CFStringGetBytes(str, rng, kCFStringEncodingUTF8, '?', 0, (UInt8 *)utf8src, BASE_LFN_MAXLEN, &destlen); CFRelease(str); dest[destlen]= '\0'; return destlen; } } */unace-2.5/source/base/all/includes.h0000644000175000017500000001447107752445040020144 0ustar danieldaniel00000000000000#ifndef _INCLUDES_H_INCLUDED #define _INCLUDES_H_INCLUDED #include "base/all/all.h" #if defined(INCL_BASE_ACESTRUC) || defined(INCL_BASE_ACESTRUC_EXCLUSIVE) #include "base/all/acestruc.h" #endif #if defined(INCL_BASE_VERSION) || defined(INCL_BASE_VERSION_EXCLUSIVE) #include "base/all/version.h" #endif ////////////////////////////////////////////////////////////////////////////// #if defined(INCL_BASE_ARCBLK) || defined(INCL_BASE_ARCBLK_EXCLUSIVE) #include "base/all/arcblk/arcblk.h" #endif #if defined(INCL_BASE_ARCHIVES_ACE) || defined(INCL_BASE_ARCHIVES_ACE_EXCLUSIVE) #include "base/all/archives/ace/ace.h" #endif #if defined(INCL_BASE_ARCHIVES_READ) || defined(INCL_BASE_ARCHIVES_READ_EXCLUSIVE) #include "base/all/archives/read/read.h" #endif #if defined(INCL_BASE_ARCHIVES_TEST) || defined(INCL_BASE_ARCHIVES_TEST_EXCLUSIVE) #include "base/all/archives/test/test.h" #endif #if defined(INCL_BASE_ARCINFO) || defined(INCL_BASE_ARCINFO_EXCLUSIVE) #include "base/all/arcinfo/arcinfo.h" #endif #if defined(INCL_BASE_BITWIDTH) || defined(INCL_BASE_BITWIDTH_EXCLUSIVE) #include "base/all/bitwidth/bitwidth.h" #endif #if defined(INCL_BASE_BUFREAD) || defined(INCL_BASE_BUFREAD_EXCLUSIVE) #include "base/all/bufread/bufread.h" #endif #if defined(INCL_BASE_COMMENTS) || defined(INCL_BASE_COMMENTS_EXCLUSIVE) #include "base/all/comments/comments.h" #endif #if defined(INCL_BASE_CONVERT) || defined(INCL_BASE_CONVERT_EXCLUSIVE) #include "base/all/convert/convert.h" #endif #if defined(INCL_BASE_CPRDCPR_HUFF) || defined(INCL_BASE_CPRDCPR_HUFF_EXCLUSIVE) #include "base/all/cprdcpr/huff/huff.h" #endif #if defined(INCL_BASE_CPRDCPR_LZ77) || defined(INCL_BASE_CPRDCPR_LZ77_EXCLUSIVE) #include "base/all/cprdcpr/lz77/lz77.h" #endif #if defined(INCL_BASE_CPRDCPR_PIC) || defined(INCL_BASE_CPRDCPR_PIC_EXCLUSIVE) #include "base/all/cprdcpr/pic/pic.h" #endif #if defined(INCL_BASE_CPRDCPR_SOUND) || defined(INCL_BASE_CPRDCPR_SOUND_EXCLUSIVE) #include "base/all/cprdcpr/sound/sound.h" #endif #if defined(INCL_BASE_CRC) || defined(INCL_BASE_CRC_EXCLUSIVE) #include "base/all/crc/crc.h" #endif #if defined(INCL_BASE_CRYPT) || defined(INCL_BASE_CRYPT_EXCLUSIVE) #include "base/all/crypt/crypt.h" #endif #if defined(INCL_BASE_DCPR) || defined(INCL_BASE_DCPR_EXCLUSIVE) #include "base/all/dcpr/dcpr.h" #endif #if defined(INCL_BASE_DCPR_COMMENTS) || defined(INCL_BASE_DCPR_COMMENTS_EXCLUSIVE) #include "base/all/dcpr/comments/comments.h" #endif #if defined(INCL_BASE_DCPR_HUFF) || defined(INCL_BASE_DCPR_HUFF_EXCLUSIVE) #include "base/all/dcpr/huff/huff.h" #endif #if defined(INCL_BASE_DCPR_LZ77) || defined(INCL_BASE_DCPR_LZ77_EXCLUSIVE) #include "base/all/dcpr/lz77/lz77.h" #endif #if defined(INCL_BASE_DCPR_PIC) || defined(INCL_BASE_DCPR_PIC_EXCLUSIVE) #include "base/all/dcpr/pic/pic.h" #endif #if defined(INCL_BASE_DCPR_SOUND) || defined(INCL_BASE_DCPR_SOUND_EXCLUSIVE) #include "base/all/dcpr/sound/sound.h" #endif #if defined(INCL_BASE_DIRDATA) || defined(INCL_BASE_DIRDATA_EXCLUSIVE) #include "base/all/dirdata/dirdata.h" #endif #if defined(INCL_BASE_DOSFUNCS) || defined(INCL_BASE_DOSFUNCS_EXCLUSIVE) #include "base/all/dosfuncs/dosfuncs.h" #endif #if defined(INCL_BASE_DOSFUNCS_NT) || defined(INCL_BASE_DOSFUNCS_NT_EXCLUSIVE) #include "base/all/dosfuncs/nt.h" #endif #if defined(INCL_BASE_ERROR) || defined(INCL_BASE_ERROR_EXCLUSIVE) #include "base/all/error/error.h" #endif #if defined(INCL_BASE_ERROROUT) || defined(INCL_BASE_ERROROUT_EXCLUSIVE) #include "base/all/errorout/errorout.h" #endif #if defined(INCL_BASE_EXTRACT) || defined(INCL_BASE_EXTRACT_EXCLUSIVE) #include "base/all/extract/extract.h" #endif #if defined(INCL_BASE_FILELIST) || defined(INCL_BASE_FILELIST_EXCLUSIVE) #include "base/all/filelist/filelist.h" #endif #if defined(INCL_BASE_FUNCS) || defined(INCL_BASE_FUNCS_EXCLUSIVE) #include "base/all/funcs/funcs.h" #endif #if defined(INCL_BASE_LFN) || defined(INCL_BASE_LFN_EXCLUSIVE) #include "base/all/lfn/lfn.h" #endif #if defined(INCL_BASE_LFN_DOS32) || defined(INCL_BASE_LFN_DOS32_EXCLUSIVE) #include "base/all/lfn/dos32.h" #endif #if defined(INCL_BASE_MEMORY) || defined(INCL_BASE_MEMORY_EXCLUSIVE) #include "base/all/memory/memory.h" #endif #if defined(INCL_BASE_MEMORY_DOS32) || defined(INCL_BASE_MEMORY_DOS32_EXCLUSIVE) #include "base/all/memory/dos32.h" #endif #if defined(INCL_BASE_MSGOUT) || defined(INCL_BASE_MSGOUT_EXCLUSIVE) #include "base/all/msgout/msgout.h" #endif #if defined(INCL_BASE_OPTIONS) || defined(INCL_BASE_OPTIONS_EXCLUSIVE) #include "base/all/options/options.h" #endif #if defined(INCL_BASE_PATHFUNC) || defined(INCL_BASE_PATHFUNC_EXCLUSIVE) #include "base/all/pathfunc/pathfunc.h" #endif #if defined(INCL_BASE_QSORT) || defined(INCL_BASE_QSORT_EXCLUSIVE) #include "base/all/qsort/qsort.h" #endif #if defined(INCL_BASE_STATE) || defined(INCL_BASE_STATE_EXCLUSIVE) #include "base/all/state/state.h" #endif #if defined(INCL_BASE_SYSTEM) || defined(INCL_BASE_SYSTEM_EXCLUSIVE) #include "base/all/system/system.h" #endif #if defined(INCL_BASE_SYSTEM_DOS32) || defined(INCL_BASE_SYSTEM_DOS32_EXCLUSIVE) #include "base/all/system/dos32.h" #endif #if defined(INCL_BASE_UNINORM) || defined(INCL_BASE_UNINORM_EXCLUSIVE) #include "base/all/uninorm/uninorm.h" #endif #if defined(INCL_BASE_VOLUME) || defined(INCL_BASE_VOLUME_EXCLUSIVE) #include "base/all/volume/volume.h" #endif #endif unace-2.5/source/base/unace/0000755000175000017500000000000007752377756016523 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/0000755000175000017500000000000007752377756020030 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/dcpr/0000755000175000017500000000000007752377756020760 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/dcpr/dcpr.c0000644000175000017500000000033407157426374022042 0ustar danieldaniel00000000000000#define INCL_BASE_DCPR #include "base/unace/includes.h" /*-----------------BASE_DCPR_EXTERN_BlockCopyToCprDictionary-------------*/ void BASE_DCPR_EXTERN_BlockCopyToCprDictionary(PCHAR Buf, INT Len) { } unace-2.5/source/base/unace/extern/filelist/0000755000175000017500000000000007752377756021643 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/filelist/filelist.c0000644000175000017500000000040107157426374023603 0ustar danieldaniel00000000000000#define INCL_BASE_FILELIST #include "base/unace/includes.h" /*-----------------BASE_FILELIST_SearchListCreate------------------------*/ void BASE_FILELIST_SearchListCreate(BOOL DoAddDirFirst) { BASE_FILELIST_SearchListArchiveCreate(); } unace-2.5/source/base/unace/extern/arcace/0000755000175000017500000000000007752377756021246 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/arcace/arcace.c0000644000175000017500000000112507157426374022615 0ustar danieldaniel00000000000000#define INCL_BASE_ARCHIVES_ACE #define INCL_BASE_ARCBLK #define INCL_BASE_CRC #define INCL_BASE_DIRDATA #define INCL_BASE_ERROROUT #include "base/unace/includes.h" /*-----------------BASE_ARCHIVES_ACE_EXTERN_ArchiveTestAVCheck-----------*/ BOOL BASE_ARCHIVES_ACE_EXTERN_ArchiveTestAVCheck(BOOL IsUnRegistered) { if (!IsUnRegistered && BASE_DIRDATA_Dir1.HasAV && ((BASE_ARCBLK.Header.Main.RES2 ^ (USHORT) (BASE_ARCBLK.Header.Main.TIME_CR >> 12)) != BASE_ARCBLK.Header.Main.RES1)) { BASE_ERROROUT_EXTERN_AVBroken(); } return 1; } unace-2.5/source/base/unace/extern/arcblk/0000755000175000017500000000000007752377756021266 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/arcblk/arcblk.c0000644000175000017500000000660207752441536022660 0ustar danieldaniel00000000000000#include #include #ifdef __HAS_IO_H__ #include #endif #define INCL_BASE_ACESTRUC #define INCL_BASE_ARCBLK #define INCL_BASE_BUFREAD #define INCL_BASE_CRC #define INCL_BASE_DCPR #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_PATHFUNC #define INCL_BASE_VOLUME #include "base/unace/includes.h" /*-----------------BASE_ARCBLK_EXTERN_OpenArchiveOverwriteRequest--------*/ BOOL BASE_ARCBLK_EXTERN_OpenArchiveOverwriteRequest(PCHAR Path, INT AccesFlags) { return 0; } /*-----------------BASE_ARCBLK_EXTERN_LoadBlockBegin---------------------*/ void BASE_ARCBLK_EXTERN_LoadBlockBegin(void) { } /*-----------------BASE_ARCBLK_EXTERN_LoadBlockSetVariables--------------*/ void BASE_ARCBLK_EXTERN_LoadBlockSetVariables(void) { BASE_ARCBLK_EXTERN_SetFileData(); } /*-----------------BASE_ARCBLK_EXTERN_OpenArchiveWriteOpen---------------*/ BOOL BASE_ARCBLK_EXTERN_OpenArchiveWriteOpen(INT Access, BOOL DoOutputError) { return 1; } /*-----------------BASE_ARCBLK_EXTERN_CloseArchive-----------------------*/ void BASE_ARCBLK_EXTERN_CloseArchive(INT AddRecovery) { BASE_BUFREAD_Close(); } /*-----------------BASE_ARCBLK_EXTERN_CurrentArchiveName-----------------*/ PCHAR BASE_ARCBLK_EXTERN_CurrentArchiveName(void) { return BASE_ARCBLK.ArchiveFile; } /*-----------------BASE_ARCBLK_EXTERN_OpenArchiveHandlePathRenaming------*/ void BASE_ARCBLK_EXTERN_OpenArchiveHandlePathRenaming(PCHAR Path, INT Access) { } /*-----------------BASE_ARCBLK_EXTERN_OpenArchiveHandlePathRenaming------*/ BOOL BASE_ARCBLK_EXTERN_OpenArchiveCreateArchive(INT Access) { return 1; } /*-----------------BASE_ARCBLK_EXTERN_ArchiveOpenReOpen------------------*/ void BASE_ARCBLK_EXTERN_ArchiveOpenReOpen(INT Access) { } /*-----------------BASE_ARCBLK_EXTERN_OpenArchivesSetVariables-----------*/ void BASE_ARCBLK_EXTERN_OpenArchivesSetVariables(INT Access, BOOL DoResetCrypt) { BASE_ARCBLK_EXTERN_OutputArchiveInfo(Access, DoResetCrypt); BASE_ARCBLK.Options.HasRecoveryRecord = BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_RECOVERYREC; BASE_ARCBLK.Options.IsVolume = BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_MULTIVOLUME; BASE_ARCBLK.Options.IsSolid = BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SOLID; BASE_ARCBLK.Options.HasAuthenticityVerification = BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_AV; BASE_ARCBLK.Options.IsLocked = BASE_ARCBLK.Header.Basic.HEAD_FLAGS & BASE_ACESTRUC_FLAG_LOCK; BASE_ARCBLK.ArchiveFilePos = BASE_DIRDATA_Dir1.ArchiveBegin; } /*-----------------BASE_ARCBLK_EXTERN_OpenArchiveWriteClose--------------*/ void BASE_ARCBLK_EXTERN_OpenArchiveWriteClose(void) { } /*-----------------BASE_ARCBLK_EXTERN_ReadAddSizeBlockCopyToTempArchive--*/ void BASE_ARCBLK_EXTERN_ReadAddSizeBlockCopyToTempArchive(PCHAR Buffer, INT Read, INT RestLen) { } /*-----------------BASE_ARCBLK_EXTERN_ReadAddSizeBlockEncrypt------------*/ BOOL BASE_ARCBLK_EXTERN_ReadAddSizeBlockEncrypt(PCHAR Buffer, INT Len) { return 0; } /*-----------------BASE_ARCBLK_EXTERN_RemoveCreatedArchive---------------*/ void BASE_ARCBLK_EXTERN_RemoveCreatedArchive(void) { } unace-2.5/source/base/unace/extern/extract/0000755000175000017500000000000007752377756021502 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/extract/extract.c0000644000175000017500000000051507157426374023307 0ustar danieldaniel00000000000000#define INCL_BASE_EXTRACT #include "base/unace/includes.h" /*-----------------BASE_EXTRACT_EXTERN_ExtractBegin----------------------*/ void BASE_EXTRACT_EXTERN_ExtractBegin(void) { } /*-----------------BASE_EXTRACT_EXTERN_ExtractEnd------------------------*/ void BASE_EXTRACT_EXTERN_ExtractEnd(void) { } unace-2.5/source/base/unace/extern/memory/0000755000175000017500000000000007752377756021340 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/memory/memory.c0000644000175000017500000000056307347360364023003 0ustar danieldaniel00000000000000#define INCL_BASE_MEMORY #include "base/unace/includes.h" /*-----------------BASE_MEMORY_EXTERN_OptimizeOtherMemory----------------*/ void BASE_MEMORY_EXTERN_OptimizeOtherMemory(void) { } /*-----------------BASE_MEMORY_EXTERN_MaxMemoryRequirement---------------*/ ULONG BASE_MEMORY_EXTERN_MaxMemoryRequirement(void) { return 16*1024*1024; } unace-2.5/source/base/unace/extern/arcinfo/0000755000175000017500000000000007752377756021451 5ustar danieldaniel00000000000000unace-2.5/source/base/unace/extern/arcinfo/arcinfo.c0000644000175000017500000000040707157426374023225 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_ARCINFO #include "base/unace/includes.h" /*-----------------BASE_ARCINFO_EXTERN_DidNotCreateArchive---------------*/ BOOL BASE_ARCINFO_EXTERN_DidNotCreateArchive(void) { return 1; } unace-2.5/source/base/unace/includes.h0000644000175000017500000000032007704234612020451 0ustar danieldaniel00000000000000#ifndef _BASE_UNACE_INCLUDES_H_INCLUDED #define _BASE_UNACE_INCLUDES_H_INCLUDED #include "base/all/includes.h" ////////////////////////////////////////////////////////////////////////////// #endif unace-2.5/source/apps/0000755000175000017500000000000007752377756015461 5ustar danieldaniel00000000000000unace-2.5/source/apps/ace/0000755000175000017500000000000007752377756016211 5ustar danieldaniel00000000000000unace-2.5/source/apps/ace/exe/0000755000175000017500000000000007752377756016772 5ustar danieldaniel00000000000000unace-2.5/source/apps/ace/exe/messages/0000755000175000017500000000000007752377756020601 5ustar danieldaniel00000000000000unace-2.5/source/apps/ace/exe/messages/messages.h0000644000175000017500000000245307157426362022550 0ustar danieldaniel00000000000000#ifndef _APPS_ACE_EXE_MESSAGES_H_INCLUDED #define _APPS_ACE_EXE_MESSAGES_H_INCLUDED #ifdef INCL_APPS_ACE_EXE_MESSAGES_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define APPS_ACE_EXE_MESSAGES_ARCHIVEOPTIONWINLINES 16 #define APPS_ACE_EXE_MESSAGES_CREATIONARCHIVINGOPTIONSLINES 17 #define APPS_ACE_EXE_MESSAGES_MAXHELPLINES 19 #define APPS_ACE_EXE_MESSAGES_SHELLHELPPAGES 6 #define APPS_ACE_EXE_MESSAGES_VIEWERHELPPAGES 1 #define APPS_ACE_EXE_MESSAGES_COMMLINEHELPLINES 46 #define APPS_ACE_EXE_MESSAGES_SFXDESCRIPTIONLINES 17 #define APPS_ACE_EXE_MESSAGES_CHANGEOPTIONSLINES 6 #define APPS_ACE_EXE_MESSAGES_HOTKEYLINES 9 typedef struct { INT LevelDisPos[6], ChangeArchiveOptionsPos[6], ChangeFileOptionsPos[2], ChangeOptionsPos[APPS_ACE_EXE_MESSAGES_CHANGEOPTIONSLINES], ExternalProgramsPos[2]; } tAPPS_ACE_EXE_MESSAGES; DECLEXT tAPPS_ACE_EXE_MESSAGES APPS_ACE_EXE_MESSAGES; BOOL APPS_ACE_EXE_MESSAGES_GetMessageFileInfo(tLFN FileName, tLFN LongTitle); #undef DECLEXT #endif unace-2.5/source/apps/ace/exe/messages/msgfiles/0000755000175000017500000000000007752377756022412 5ustar danieldaniel00000000000000unace-2.5/source/apps/ace/exe/messages/msgfiles/aceeng.c0000644000175000017500000007332307753775310023775 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_MESSAGES #include "apps/exe/includes.h" CHAR APPS_EXE_MESSAGES_EXTERN_ENGLISH[] = "b\x00""MSGF\x00""\x00""\x00""\x00""\x01""\x14""\x00""\x00""\x8c""Äk\xcb""\x9e""[\x00""\x00""J\x00""English\x00""English language\x00""\x00""\x00""\x00""\x00""\x00""English language\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""Yes\xa" "Always\xa" "No\xa" "Cancel\xa" "Main comment\xa" "Copyright by ACE Compression Software\xa" "file\xa" "files\xa" "User break\xa" " analyzing\xa" "Header broken\xa" "Use repair-function to recover files of archive.\xa" "Copy\xa" "Copy\xa" "Delete it anyway?\xa" "Delete\xa" "testing\xa" "archive\xa" " \x2a""LOCKED\x2a""\xa" "Warning\xa" "File already exists:\xa" "File comment\xa" "Contents of\xa" "Not enough memory to perform operation.\xa" "Select smaller dictionary size and try again.\xa" "Exclude paths\xa" "Error excluding paths: two or more\xa" "specified files have the same name.\xa" "Working\xa" "Creating listfile. Please wait.\xa" "No files specified.\xa" "Operation aborted.\xa" "Is no ACE archive:\xa" "Reading archive. Please wait.\xa" "Could not open file:\xa" "Error while reading archive\xa" "looking for\xa" "New Path\xa" "Enter new source path.\xa" "File not found or archive broken.\xa" "processing\xa" "Ready to process\xa" "File compressed with unknown method.\xa" "Decompression not possible.\xa" "Extract\xa" "Test\xa" "Not enough memory or dictionary of archive too large.\xa" "Reduce compression dictionary size. Then try again.\xa" "Authenticity verification of archive is broken.\xa" "Archive too old or created with non-original program!\xa" "Found read-only, hidden or system-file.\xa" "Could not delete file or directory.\xa" "Could not create directory:\xa" "Access denied.\xa" "Disk might be write-protected.\xa" "Name is used by a file.\xa" "Overwrite?\xa" "Could not create destination file:\xa" "Disk-access-error.\xa" "Password\xa" "Enter password.\xa" "SUB-DIR\xa" "UP--DIR\xa" "Time-out error!\xa" "<-Press any key to continue->\xa" "Not enough space on destination drive to extract\xa" "extracting\xa" "Found encrypted file.\xa" "Use current password?\xa" "Found encrypted file. No password specified.\xa" "Not enough memory to handle file names.\xa" "Make more memory available. Then try again.\xa" "Error\xa" "CRC OK\xa" "CRC-check error on\xa" " [] [- ...] [\x5c""] [\x2f""\x40""]\xa" "\xa" "\xa" "Usage:\xa" " UNACE [- ...] [\x5c""] [\x2f""\x40""]\xa" "\xa" " t Test archive integrity\xa" " e Extract files v List archive \x28""verbose\x29""\xa" " l List archive x Extract files with full path\xa" "\xa" " \x28""default\x29"" \x28""default\x29""\xa" " c[-] Show comments \x28""\x2b""\x29"" p Set password\xa" " f[-] Full path matching \x28""-\x29"" y[-] Assume yes on all queries \x28""-\x29""\xa" " o[-] Overwrite files \x28""-\x29""\xa" "\xa" " x Exclude or files in from process\xa" "\xa" "command line\xa" "Error opening output file\xa" "Unknown command\xa" "Missing command!\xa" "Switch error\xa" "Unknown switch\xa" "List file does not exist\xa" "Extra characters on line\xa" "No such archive found:\xa" "processing archive\xa" //"Date ³Time ³Packed ³Size ³Ratio³File\xa" " Date Time Packed Size Ratio File\xa" "Archive\xa" "Volume\xa" "SFX\xa" "SFX-volume\xa" "Solid-arc\xa" "Solid-vol\xa" "Solid-SFX\xa" "Sol-SFX-vol\xa" "created on\xa" "with ver\xa" "by\xa" "extracted\xa" "listed\xa" "tested\xa" "%s: %d files, totaling %s bytes \x28""compressed %s\x29""\xa" "Got CRC check errors on %d %s.\xa" "Error while writing\xa" "Extract archive to current directory:\xa" "Error: archive not specified\xa" "This is not a fully ACE compatible archive.\xa" "Trying to decompress might fail.\xa" "is read-only, hidden or system-file.\xa" "Overwrite it anyway?\xa" "Please enter new destination directory:\xa" "END OF UNACE PART\xa" "Ok\xa" "Store\xa" "F\x26""astest\xa" "Fast\xa" "Normal\xa" "Good\xa" "Best\xa" "Enabled\xa" "Disabled\xa" "Name\xa" " Size Packed Date Time\xa" " Size Date Time\xa" "Absent\xa" "Present\xa" "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Memory ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xa" "ÄÄÄÄÄÄÄÄÄ Temporary directory ÄÄÄÄÄÄÄÄÄ\xa" "ÄÄÄÄÄÄÄÄÄ Archive information ÄÄÄÄÄÄÄÄÄ\xa" "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Settings ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xa" "ACE-ARCHIVER v\xa" "ÄÄÄÄÄÄÄÄÄ Second directory ÄÄÄÄÄÄÄ\x28""tab\x29""\xa" "Archive type\xa" "Volume number\xa" "Created\xa" "Solid\xa" "SelFeXtracting\xa" "File comments\xa" "Passwords\xa" "Recovery record\xa" "Lock\xa" "Auth. verif.\xa" "Dictionary\xa" "Files\xa" "Total length\xa" "Packed length\xa" "Ratio\xa" "Version to extr.\xa" "Host OS\xa" "ÄÄ Second directory ÄÄ\x28""tab\x29""\xa" "UNREGISTERED\xa" "Free memory\xa" "Add, update, fresh, sol-delete\xa" "Extract, view\xa" "Path\xa" "Space\xa" "Encrypt files with password\xa" "Use v2.0 compression\xa" "Compression level\xa" "Dictionary size\xa" "Add recovery record\xa" "Add auth. verification\xa" "Make always solid\xa" "Create always SFX\xa" "Add default comment file\xa" "Type\xa" "bytes in\xa" "Free\xa" "Hotkeys\xa" "Alt\x2b""C Switch colour mode\xa" "Alt\x2b""D Select dictionary size\xa" "Alt\x2b""J DOS shell\xa" "Alt\x2b""L Select language\xa" "Alt\x2b""M Select compression level\xa" "Alt\x2b""P Set password\xa" "Alt\x2b""S Save setup\xa" "Alt\x2b""T Set temporary directory\xa" "Alt\x2b""X Exit ACE\xa" "Function available in\xa" "registered version only.\xa" "Error reading file.\xa" "Probable cause is a damaged disk.\xa" "1Help 2Add 3View 4Fresh 5Copy 6Move 7MkDir 8Delete 9Option 10Quit\xa" "1Drive 2Solid 3SFX 4Update 5MkCopy 6MkMove 7MkArch 8Repair 9EGA-M. 10\xa" "1ACEDOC 2 3Name 4Extens 5Time 6Size 7Unsort 8 9 10 \xa" "1Help 2Add 3View 4 5 6 7MkDir 8Delete 9Option 10Quit\xa" "1Drive 2Solid 3SFX 4 5MkCopy 6MkMove 7MkArch 8Repair 9EGA-M. 10\xa" "1ACEDOC 2 3Name 4Extens 5Time 6Size 7Unsort 8 9 10 \xa" "1Help 2Extr 3View 4Fresh 5Copy 6Move 7MkDir 8Delete 9Option 10Quit\xa" "1Drive 2Solid 3SFX 4Update 5MkCopy 6MkMove 7FilOpt 8ArcOpt 9EGA-M. 10Test\xa" "1ACEDOC 2 3Name 4Extens 5Time 6Size 7Unsort 8 9 10 \xa" "1Help 2Extr 3View 4 5 6 7MkDir 8Delete 9Option 10Quit\xa" "1Drive 2Solid 3SFX 4 5MkCopy 6MkMove 7FilOpt 8ArcOpt 9EGA-M. 10Test\xa" "1ACEDOC 2 3Name 4Extens 5Time 6Size 7Unsort 8 9 10 \xa" "1Help 2Extr 3View 4Fresh 5Copy 6Move 7 8Delete 9Option 10Quit\xa" "1Drive 2MkACE 3 4Update 5MkCopy 6MkMove 7 8 9EGA-M. 10Test\xa" "1ACEDOC 2 3Name 4Extens 5Time 6Size 7Unsort 8 9 10 \xa" "1Help 2Extr 3View 4 5 6 7 8Delete 9Option 10Quit\xa" "1Drive 2MkACE 3 4 5MkCopy 6MkMove 7 8 9EGA-M. 10Test\xa" "1ACEDOC 2 3Name 4Extens 5Time 6Size 7Unsort 8 9 10 \xa" "Make archive\xa" "Enter name of archive to make.\xa" "creating archive\xa" "Not enough space on temporary drive\xa" "to create temporary archive.\xa" " creating temporary archive\xa" " repacking\xa" "Move files\xa" "updating archive\xa" "Error creating archive\xa" "Add to archive\xa" "Enter name of archive to add to.\xa" "Move\xa" "Move\xa" "Not all selected files copied.\xa" "Deleting will not happen.\xa" "Make and copy\xa" "Enter name of archive to make and to copy to.\xa" "deleting\xa" "Delete\xa" "Modifying volumes impossible.\xa" "Change archive-options first.\xa" "Modify of locked archives impossible.\xa" "Create new archive to do so.\xa" "Authenticity verification-check error.\xa" "AV has been manipulated or does not match yours.\xa" "Modify of archive requires higher version of ACE.\xa" "Call technical support or use given web-sites.\xa" "Found recovery data\xa" "Found no recovery data\xa" "Error while opening\xa" "Repair\xa" "Unable to repair archive by recovery data.\xa" "Recovery data damaged.\xa" "Too many bytes damaged.\xa" "Archive repaired\xa" "Archive is not damaged, repairing not possible\xa" "Scanning for headers\xa" "Archive-header broken\xa" "Mark archive as solid?\xa" "Add\xa" "Add\xa" "to archive? \x28""Size\xa" "Packed\xa" "File-header broken\xa" "Found\xa" "archive-header\xa" "CRC-check error. Archive broken or password incorrect.\xa" "Recreation failed.\xa" "Repacking failed. Operation aborted.\xa" "Error while recreating archive\xa" "Files can be found at\xa" "Archive is already solid:\xa" "Archive is already self-extracting:\xa" "Adding SFX-module to multiple-volume archive impossible.\xa" "Use recreate \x28""by pressing ALT\x2b""F8\x29"".\xa" "Encrypt\xa" "encrypting\xa" "CRC-check error. Password might be incorrect.\xa" "Encryption failed.\xa" "adding comment to\xa" "Not enough space to save\xa" "Could not create file in current temporary directory.\xa" "Disk is write-protected or directory does not exist.\xa" "copying\xa" "to\xa" "File does not exist:\xa" "to create temporary file.\xa" "Second directory is part of first directory.\xa" "Delete would effect copied files.\xa" "Invalid list file.\xa" "Found binary character.\xa" "Sorting files. Please wait.\xa" "Archive is broken.\xa" "Ready to process next volume\xa" "Error creating volume\xa" "Select drive\xa" "Deleting\xa" "Make directory\xa" "Enter directory to make.\xa" "Search\xa" "Select files\xa" "Unselect files\xa" "Enter file-mask.\xa" "1Help 2Wrap 3 4 5 6 7Search 8CnSear 9 10Return\xa" "1Help 2Unwrap 3 4 5 6 7Search 8CnSear 9 10Return\xa" "Error opening file.\xa" "Are you sure?\xa" "View\xa" "Col\xa" "Enter search-string.\xa" "Searching not successful.\xa" "String not found.\xa" "Overwrite\xa" "Copying\xa" "Not enough space on destination-disk to copy\xa" "Fresh\xa" "Fresh\xa" "Update\xa" "Update\xa" "Copy is not possible.\xa" "Directories are equal.\xa" "Copy all files of multiple-volume archive?\xa" "directory\xa" "Not enough space on temporary drive to continue.\xa" "Select new temp-path and repeat operation.\xa" "Enter directory for temporary files\xa" "Choose a non-write-protected, fast drive.\xa" "Specify full path of:\xa" "Directory does not exist:\xa" "Length of temporary path might cause problems.\xa" "Choose shorter one.\xa" "Error while saving setup at\xa" "Create archive\xa" "\xda""Ä Add ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xbf"" \xda""Ä Dictionary \xbf"" \xda""Ä Level ÄÄÄÄÄ\xbf""\xa" "³ [ ] Solid ³ ³ \x28"" \x29"" 32 K ³ ³ \x28"" \x29"" Store ³\xa" "³ [ ] V2.0 compression \x28""details \x29"" ³ ³ \x28"" \x29"" 64 K ³ ³ \x28"" \x29"" Fastest ³\xa" "³ [ ] Create SFX \x28"" \x29"" ³ ³ \x28"" \x29"" 128 K ³ ³ \x28"" \x29"" Fast ³\xa" "³ [ ] Add recovery record ³ ³ \x28"" \x29"" 256 K ³ ³ \x28"" \x29"" Normal ³\xa" "³ [ ] Encrypt files with password ³ ³ \x28"" \x29"" 512 K ³ ³ \x28"" \x29"" Good ³\xa" "³ [ ] Add authentic. verification ³ ³ \x28"" \x29"" 1024 K ³ ³ \x28"" \x29"" Best ³\xa" "³ [ ] Add main comment ³ ³ \x28"" \x29"" 2048 K ³ \xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "³ [ ] Do not compress archives ³ ³ \x28"" \x29"" 4096 K ³\xa" "³ [ ] CRC-Check after add ³ \xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "\xa" "\xda""Ä Volume size ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xbf""\xa" "³ \x28"" \x29"" none ³ \x28"" \x29"" 1.2 M ³\xa" "³ \x28"" \x29"" Autodetect ³ \x28"" \x29"" 1.44 M ³\xa" "³ Thousands ³ \x28"" \x29"" 2.88 M ³\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "Set v2.0 compression details\xa" "[ ] Delta [ ] Exe [ ] Pic [ ] Sound\xa" "Select SFX module\xa" "Select language\xa" "None\xa" "Default\xa" "File\xa" "\xda""Ä Description ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xbf""\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "³ ³\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "< do not add SFX module to archive >\xa" "Volume size\xa" "Enter volume size \x28""in Thousands\x29"".\xa" "Invalid volume size.\xa" "Must be greater than 64K.\xa" "Set compression level\xa" "Select dictionary size\xa" "Recreate\xa" "Lock archive\xa" "Edit main comment\xa" "Add \x26""recovery record\xa" "Add auth. verific.\xa" "Add \x26""SFX-module\xa" "File options\xa" "Encrypt\xa" "Edit file \x26""comment\xa" "Reenter password.\xa" "Passwords do not match.\xa" "Try again.\xa" "Options\xa" "Shell options\xa" "External programs\xa" "Set temporary directory\xa" "Archive options\xa" "S\x26""hell options\xa" "Language settings\xa" "External programs\xa" "Set \x26""temporary directory\xa" "Save \x26""Setup\xa" "Archive options\xa" "\xda""Ä Add ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xbf"" \xda""Ä Dictionary \xbf"" \xda""Ä Level ÄÄÄÄÄ\xbf""\xa" "³ [ ] Make always solid ³ ³ \x28"" \x29"" 32 K ³ ³ \x28"" \x29"" Store ³\xa" "³ [ ] V2.0 compression \x28""details \x29"" ³ ³ \x28"" \x29"" 64 K ³ ³ \x28"" \x29"" Fastest ³\xa" "³ [ ] Create SFX \x28"" \x29"" ³ ³ \x28"" \x29"" 128 K ³ ³ \x28"" \x29"" Fast ³\xa" "³ [ ] Add recovery record ³ ³ \x28"" \x29"" 256 K ³ ³ \x28"" \x29"" Normal ³\xa" "³ [ ] Encrypt files with password ³ ³ \x28"" \x29"" 512 K ³ ³ \x28"" \x29"" Good ³\xa" "³ [ ] Add authentic. verification ³ ³ \x28"" \x29"" 1024 K ³ ³ \x28"" \x29"" Best ³\xa" "³ [ ] Add default comment ³ ³ \x28"" \x29"" 2048 K ³ \xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "³ [ ] Do not compress archives ³ ³ \x28"" \x29"" 4096 K ³\xa" "³ [ ] CRC-Check after add ³ \xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" " [ ] Command line log file\xa" "\xda""Ä Extract ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xbf""\xa" "³ [ ] Use current password ³\xa" "³ [ ] View comments ³\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "\xda""Ä Detect archives ÄÄÄÄÄÄÄÄ\xbf"" \xda""Ä Show archives ÄÄÄÄÄÄÄÄÄÄ\xbf""\xa" "³ \x28"" \x29"" No detection ³ ³ [ ] Highlight archives ³\xa" "³ \x28"" \x29"" By extension ³ ³ [ ] Arrange archives ³\xa" "³ \x28"" \x29"" By file content ³ ³ [ ] Archive information ³\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9"" \xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "\xa" "\xda""Ä Sort files ÄÄÄÄÄÄÄÄÄÄÄÄÄ\xbf"" \xda""Ä Display mode ÄÄÄÄÄÄÄÄÄÄÄ\xbf""\xa" "³ \x28"" \x29"" By name ³ ³ [ ] colour ³\xa" "³ \x28"" \x29"" By extension ³ ³ [ ] 43\x2f""50 lines ³\xa" "³ \x28"" \x29"" By time ³ \xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "³ \x28"" \x29"" By size ³\xa" "³ \x28"" \x29"" Unsorted ³\xa" "\xc0""ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xd9""\xa" "Programs called at \x26""F3\xa" "Programs called at \x26""Enter\xa" "External programs called pressing %s\xa" "- free -\xa" "Files:\xa" "Command:\xa" "Command line log file\xa" "Enter file to log command line output to.\xa" "Number too long or containing\xa" "unallowed char.\xa" "Could not open source file.\xa" "Disk-access-error or file already in use.\xa" "Copy of this file to current archive-dir impossible.\xa" "Resulting file name too long.\xa" "Source is directory, destination is file.\xa" "Delete directory first\xa" "Tried to overwrite directory with file.\xa" "adding\xa" "Call error\xa" "Could not find executable:\xa" "Fatal error\xa" "The file ACE.EXE has been modified.\xa" "File possibly infected by a virus.\xa" "1 2 3 4 5 6 7 8 9 10\xa" "1 2 3 4 5 6 7 8Delall 9 10Return\xa" "Enter default file for main comment.\xa" "Could not read disk in drive\xa" "Enter new drive.\xa" "Insert disk.\xa" "Directories\xa" "Time\xa" "Estimated\xa" "Read\xa" "Write\xa" "Actions\xa" "CRC-check error\xa" "\x23"" On-line-Help of the ACE-archiver\xa" "\xa" "\xa" "Use the cursor keys to switch between the different pages.\xa" "Press to view ACE.DOC.\xa" "\xa" "\x23""Second directory:\xa" " ACE uses two directories for some of its operations.\xa" "These are COPY MOVE FRESH and UPDATE. The SOURCE directory is listed in\xa" "the left window. The path of the second directory is listed in the\xa" "bottom right hand corner of the right window. To toggle between the two\xa" "directories, press . To EXTRACT files, enter an archive \x28""move the\xa" "cursor on the name of the archive file and press \x29"", select files\xa" "and press . The files will be extracted to the destination in the\xa" "second directory. To ADD files to an existing archive, enter the archive\xa" "and press to make the archive the \x27""other\x27"" directory. Now, select\xa" "files in the source and press .\xa" "\xa" "\x23""The following two pages are giving a summary of the function keys.\xa" "\x23"" always in directory in archive\xa" "\xa" "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xa" " F1 view help\xa" " F2 add files to archive test files of archive\xa" " F3 view file\xa" " F4 fresh 2nd directory\xa" " F5 copy selected files\xa" " F6 move selected files\xa" " F7 make directory\xa" " F8 delete selected files\xa" " F9 change options\xa" " F10 quit program\xa" "Alt\x2b""F1 select drive\xa" "Alt\x2b""F2 create solid archive make archive solid\xa" "Alt\x2b""F3 create SFX-archive make archive SFX\xa" "\xa" "\x23""These functions are explained in more detail in the file ACE.DOC.\xa" "\xa" "\x23"" always in directory in archive\xa" "\xa" "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xa" "Alt\x2b""F4 update 2nd directory\xa" "Alt\x2b""F5 make archive \x26"" copy\xa" "Alt\x2b""F6 make archive \x26"" move\xa" "Alt\x2b""F7 make archive change file options\xa" "Alt\x2b""F8 change archive options\xa" "Alt\x2b""F9 set EGA mode\xa" "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\xa" "Alt\x2b""C Switch colour-mode Ctrl\x2b""F1 view ACE.DOC\xa" "Alt\x2b""D Select dictionary size Ctrl\x2b""F3 sort files after name\xa" "Alt\x2b""J DOS shell Ctrl\x2b""F4 \x7e"" extension\xa" "Alt\x2b""M Select compression level Ctrl\x2b""F5 \x7e"" time\xa" "Alt\x2b""S Save setup Ctrl\x2b""F6 \x7e"" size\xa" "Alt\x2b""T Set temporary directory Ctrl\x2b""F7 list files unsorted\xa" "\xa" "\x23""These functions are explained in more detail in the file ACE.DOC.\xa" "\xa" "\x23""Dictionary size: \xa" "Increasing the dictionary size will improve\xa" "compression ratio but will also increase the required memory for\xa" "compression and decompression. You have to know:\xa" "If there is no EMS\x2f""XMS available, the SFX-module will\xa" "only be able to decompress archives with a dictionary up to 256K.\xa" "\xa" "\x23""Compression level: \xa" "A better compression level will give better\xa" "results in compression. Instead of affecting the memory requirements\xa" "it will only affect the time to compress. Select the best balance\xa" "according to your needs.\xa" "\xa" "\x23""Solid archiving: \xa" "This is another method to improve compression. The \xa" "disadvantage of it is that the whole archive needs to be decompressed\xa" "in case you add or extract one or more files. The penalty becomes even\xa" "worse when you delete one or more files since it requires not only\xa" "decompression but also re-compression of the entire archive.\xa" "\x23""Which options should satisfy your needs?\xa" "\xa" " Do you need good compression\x2f""have enough memory?\xa" " Choose a large dictionary! \x28""Limit it to 256K when using SFX-module\x29""\xa" "\xa" " Do you need good compression\x2f""have enough time?\xa" " Choose solid archiving and a high compression level!\xa" "\xa" " Will you update your archive frequently\x2f""compression needn\x27""t be best?\xa" " Do not select solid archiving!\xa" "\xa" "\x23""Temporary directory: \xa" "Use the fastest drive you have access to for\xa" "this directory in order to improve ACE\x27""s performance. At startup, this\xa" "points to the TEMP or TMP environment variable in your autoexec.bat file\xa" "\x28""if present\x29"". Note that if you run Windows95 \x28""TM\x29"" it will point to your\xa" "Windows TEMP directory.\xa" "\xa" "\xa" "\x23""Encryption\x2f""decryption of files in archives\xa" "\xa" "The compression\x2f""decompression password will be set to the general\xa" "password, which can be set at the main screen. Changing the compression\xa" "password in the archive option window or changing the decompression\xa" "password will not affect the general password.\xa" "If the option always \x27""use current password\x27"" is disabled, or if there is\xa" "no general password you will be asked which password is to be used to\xa" "decrypt encrypted files.\xa" "The password won\x27""t be saved in the archive or in the setup file.\xa" "This will protect against hackers but you have to keep the password\xa" "in your mind! The author of ACE is unable to recover lost passwords.\xa" "\xa" "\x23""More information \xa" "can be found in the file ACE.DOC. This online-help\xa" "function is only ought to give a brief introduction into the shell\xa" "of ACE to get started with it. If the file ACE.DOC is present in\xa" "the start directory of ACE you can view it by pressing .\xa" "\xa" "\xa" "\xa" "\x23"" Cursor movement Functions\xa" "\xa" "\xa" " \x18"" Line up F1 Help\xa" " \x19"" Line down F2 Toggle wrap\x2f""unwrap\xa" " \x1b"" Char left F7 Search\xa" " \x1a"" Char right F8 Continue search\xa" " Pgup Page up F10 Return\xa" " Pgdn Page down Shift\x2b""F7 Continue search\xa" " Home Top of file Ctrl\x2b"" \x1b"" Scroll left\xa" " End End of file Ctrl\x2b"" \x1a"" Scroll right\xa" "\xa" "\xa" "\xa" "\xa" "\xa" "\xa" "Help - page\xa" "REGISTERED. AV:\xa" "Error at switch -d: valid values are\xa" "Invalid compression level.\xa" "Possible values: 0..5\xa" "No valid archive format\xa" "File not found\xa" "Wildcards in archive name at these operations not allowed:\xa" "Add, Move, Update and Fresh\xa" "Enter destination directory.\xa" "ACE.DOC: ACE help file\xa" "adding recovery record\xa" "locking archive\xa" " keeping\xa" "Not enough space to save new archive.\xa" "Enter new destination path.\xa" "Be sure about enough space. There are\xa" "bytes required.\xa" "Enter new destination path \x28""ESC to cancel saving\x29""\xa" "File exists\xa" "Overwrite existing archive?\xa" "Could not open archive:\xa" "Create new archive\xa" "Found existing archive-file, overwrite\xa" "Could not open archive for update \x28""probably read only!\x29"":\xa" "Error opening ACE.DOC.\xa" "File not present in ACE-directory.\xa" "REGISTERED\xa" "REG.\xa" "no AV\xa" "Error while reading ACE.KEY.\xa" "Registration check failed.\xa" "Registration\xa" "Replace existing registration data?\xa" "Could not create\xa" "Registration: General key\xa" "You own a general key only. Please order your OWN AV-string!\xa" "For more information please call \x2b""49 251 43000 \x28""Germany\x29"".\xa" "Enter your user name\xa" "Input the name you gave to the registration site.\xa" "Enter your AV-string\xa" "Input the AV-string you ordered at the registration site.\xa" "Check on registration key failed.\xa" "Make sure you input it correctly.\xa" "Register ACE\xa" "Please enter the Registration Code. \x28""ESC to Cancel\x29""\xa" "Registration process\xa" "was successful.\xa" "The existing registration code is\xa" "added\xa" "Total\xa" "Destination file for comment must not contain wildcards.\xa" "Specify valid file name please.\xa" " \x28""Enter comment please, press CTRL\x2b""Z for end\x29""\xa" "Can not add recovery record.\xa" "Add SFX module\xa" "default SFX module\xa" "\xa" "!!You MUST REGISTER after a 30 days test period. Please read ORDER\x5c""ORDER.TXT!!!\xa" "\xa" "Usage: ACE [- ...] [\x5c""] [\x2f""\x40""]\xa" "\xa" " Add current directory and subdirectories to solid archive TEST,\xa" " use best mode and a dictionary of 2048Kb\xa" " \xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\x22""ACE a -r -s -m5 -d2048 TEST\x22""\xa" " Add \x2a"".TXT excluding README.\x2a"" to unsolid archive TEXTS, put recovery record\xa" " and lock to the archive\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\x22""ACE a -s- -rr -k -xREADME.\x2a"" TEXTS \x2a"".TXT\x22""\xa" " Add \x2a"".BMP of C:\x5c"" and subdirectories to solid archive PICS using delta and\xa" " picture compression only\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\xfa""\x22""ACE a -r -s -c2- -c2pd PICS C:\x5c""\x2a"".BMP\x22""\xa" " Extract files of TST with paths\xfa""\xfa""\xfa""\xfa""\x22""ACE x TST\x22""\xa" "\xa" " a Add files to archive m Move files to archive\xa" " cf Add comment to files r Repair archive\xa" " cm Add main comment reg Register ACE\xa" " cw Write main comment to file rr Add recovery record\xa" " d Delete files from archive s Convert to SFX\xa" " e Extract to current directory t Test files in archive\xa" " f Freshen files in archive u Update archive\xa" " k Lock archive v Verbosely list of archive contents\xa" " l List contents of archive x Extract files with full path\xa" "\xa" " av[-] Add AV \x28""\x2b""\x29"" o[-] Overwrite files \x28""-\x29""\xa" " bw[-] BlackWhite mode \x28""-\x29"" out Moves output to \xa" " c[-] Show comments \x28""\x2b""\x29"" p Set password\xa" " c2[-] Use v2.0 compression \x28""\x2b""\x29"" r[-] Recurse subdirectories \x28""-\x29""\xa" " cfg[-] Make use of ACE.CFG \x28""\x2b""\x29"" rr[-] Add recovery record \x28""-\x29""\xa" " cm[-] Add main comment \x28""-\x29"" s[-] Create solid archive \x28""\x2b""\x29""\xa" " d Set dictionary \x28""1024\x29"" sfx[-] Create SFX archive \x28""-\x29""\xa" " ep[-] Exclude paths \x28""-\x29"" std[-] Standard output mode \x28""-\x29""\xa" " err Error output file t Set temp directory\xa" " f[-] Full path matching \x28""-\x29"" tk[-] Keep archive time \x28""-\x29""\xa" " fp[-] Store full path \x28""-\x29"" tl[-] Set arc time to last file \x28""-\x29""\xa" " fpd[-] Store path and drive \x28""-\x29"" to Set time-out \x28""0\x3d""none\x29"" \x28""60\x29""\xa" " k[-] Lock archive \x28""-\x29"" y[-] Assume yes on all queries \x28""-\x29""\xa" " m<0..5> Set compression level \x28""3\x29"" z Set comment file\xa" "\xa" " c2[d\x2f""e\x2f""p\x2f""s][-] Switch v2.0 compression techniques separately on\x2f""off\xa" " \x28""meanings: d\x3d""Delta, e\x3d""Exe, p\x3d""Pic, s\x3d""Sound\x29""\xa" " sfx[.sfx] Specify sfx module by file name\xa" " v[\x2f""-] Set volume size to \x2a""1000\x3b"" if nothing is \x28""-\x29""\xa" " specified the volume size will be autodetected\xa" " x Exclude or files in from process\xa" "\xa" "Error reading SFX file:\xa" "Error while reading\xa" "Error while writing archive\xa" "Registration failed.\xa" "Registration key not valid for commandline Ace.\xa" "Your general key expired. Please call e-merge GmbH at \x2b""49 251 43000\xa" "Your key has expired. Please call e-merge GmbH at \x2b""49 251 43000\xa" "or write to sales\x40""winace.com to get your own personalized key.\xa" "or write to sales\x40""winace.com to update your licence.\xa" "Key expiration\xa" "Setup\xa" "Succesfully saved setup in\xa" "Could not detect space on network drive because of Win95_OSR1 bug.\xa" "Assuming there is enough disk space free.\xa" "Archive operations\xa" "END OF ACE PART\xa" ; unace-2.5/source/apps/exe/0000755000175000017500000000000007752377756016242 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/convert/0000755000175000017500000000000007752377756017722 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/convert/convert.h0000644000175000017500000000141507157426362021537 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_CONVERT_H_INCLUDED #define _APPS_EXE_CONVERT_H_INCLUDED #ifdef INCL_APPS_EXE_CONVERT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { CHAR ToPercentStrStr[10]; } tAPPS_EXE_CONVERT; DECLEXT tAPPS_EXE_CONVERT APPS_EXE_CONVERT; PCHAR APPS_EXE_CONVERT_ToByteUnitStr(PCHAR Str, ULONGLONG ByteSize); PCHAR APPS_EXE_CONVERT_MakeStrShorter(PCHAR DestStr, PCHAR SourceStr, INT Width); INT APPS_EXE_CONVERT_GetPercents(ULONGLONG Value1, ULONGLONG Value2); PCHAR APPS_EXE_CONVERT_ToPercentStr(ULONGLONG Value1, ULONGLONG Value2); PCHAR APPS_EXE_CONVERT_FormatSize(PCHAR SizeStr, INT Attr, ULONGLONG Size); #undef DECLEXT #endif unace-2.5/source/apps/exe/convert/convert.c0000644000175000017500000000546207754146234021540 0ustar danieldaniel00000000000000#include #include #define INCL_APPS_EXE_CONVERT_EXCLUSIVE #define INCL_BASE_CONVERT #define INCL_BASE_FILELIST #define INCL_BASE_PATHFUNC #define INCL_APPS_EXE_MESSAGES #include "apps/exe/includes.h" /*-----------------APPS_EXE_CONVERT_ToByteUnitStr------------------------*/ PCHAR APPS_EXE_CONVERT_ToByteUnitStr(PCHAR Str, ULONGLONG ByteSize) { PCHAR UNITCHARS = "\0KMG"; INT StrLen, UnitCharNumber; UnitCharNumber = Str[0] = 0; while (ByteSize > 1024 * 1024) { ByteSize >>= 10; UnitCharNumber++; } ByteSize = (ByteSize / 1000000) * 100000000 + (ByteSize / 1000) * 10000 + ByteSize % 1000; sprintf(Str, "%lld ", ByteSize); StrLen = strlen(Str) - 1; Str[StrLen] = UNITCHARS[UnitCharNumber]; while ((StrLen -= 4) > 0) { Str[StrLen] = '.'; } return Str; } /*-----------------APPS_EXE_CONVERT_MakeStrShorter-----------------------*/ PCHAR APPS_EXE_CONVERT_MakeStrShorter(PCHAR DestStr, PCHAR SourceStr, INT Width) { if (strlen(SourceStr) > Width) { memmove(DestStr, &SourceStr[strlen(SourceStr) - Width + 4], Width - 3); BASE_CONVERT_StrCatBefore(BASE_PATHFUNC_SEPARATORSTR "..", DestStr); } else { strcpy(DestStr, SourceStr); } return DestStr; } /*-----------------APPS_EXE_CONVERT_GetPercents---------------------------*/ INT APPS_EXE_CONVERT_GetPercents(ULONGLONG Value1, ULONGLONG Value2) { while (Value1 > 1 << 20) { Value1 >>= 1; Value2 >>= 1; } if (!Value2) { return 0; } return (Value1 * 1000 + (Value2 >> 1)) / Value2; } /*-----------------APPS_EXE_CONVERT_ToPercentStr--------------------------*/ PCHAR APPS_EXE_CONVERT_ToPercentStr(ULONGLONG Value1, ULONGLONG Value2) { INT Percents; Percents = APPS_EXE_CONVERT_GetPercents(Value1, Value2); sprintf(APPS_EXE_CONVERT.ToPercentStrStr, "%d.%d%%", Percents / 10, Percents % 10); return APPS_EXE_CONVERT.ToPercentStrStr; } /*-----------------APPS_EXE_CONVERT_FormatSize---------------------------*/ PCHAR APPS_EXE_CONVERT_FormatSize(PCHAR SizeStr, INT Attr, ULONGLONG Size) { PCHAR UNITCHARS = "\0KMG"; INT UnitCharNumber; if (Attr & BASE_FILELIST_SUBDIR) { sprintf(SizeStr, "\x10%s\x11", (Attr & BASE_FILELIST_UPDIR) ? STR.UP__DIR : STR.SUB_DIR); } else { UnitCharNumber = 0; while (Size > 999999999 || UnitCharNumber && Size > 99999999) { Size >>= 10; UnitCharNumber++; } if (UnitCharNumber) { sprintf(SizeStr, "%8lld ", Size); SizeStr[strlen(SizeStr) - 1] = UNITCHARS[UnitCharNumber]; } else { sprintf(SizeStr, "%9lld", Size); } } return SizeStr; } unace-2.5/source/apps/exe/messages/0000755000175000017500000000000007752377756020051 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/messages/messages.h0000644000175000017500000000275407704251436022020 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_MESSAGES_H_INCLUDED #define _APPS_EXE_MESSAGES_H_INCLUDED #include "apps/ace/exe/messages/messages.h" #ifdef INCL_APPS_EXE_MESSAGES_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define APPS_EXE_MESSAGES_ENGLISH "default" #define APPS_EXE_MESSAGES_COMMLINEHELPLINES 16 typedef struct { tLFN FileName; INT LanguageIndex; INT Handle; PCHAR ReadPos; INT YANCPos[4]; CHAR YANC[5]; CHAR FirstCommandLineHelpLine[81]; PCHAR MessagesBuf; } tAPPS_EXE_MESSAGES; DECLEXT tAPPS_EXE_MESSAGES APPS_EXE_MESSAGES; #ifdef __WATCOMC__ extern void APPS_EXE_MESSAGES_EXTERN_ENGLISH(void); #else extern CHAR APPS_EXE_MESSAGES_EXTERN_ENGLISH[]; #endif void APPS_EXE_MESSAGES_Open(PCHAR FileName); INT APPS_EXE_MESSAGES_Read(void *Buf, INT Len); void APPS_EXE_MESSAGES_Skip(INT Len); void APPS_EXE_MESSAGES_Close(void); BOOL APPS_EXE_MESSAGES_GetMessageFile(tLFN FileName, PULONG Size); void APPS_EXE_MESSAGES_LoadMessagesPROC(PCHAR *EndMarkerPos, PCHAR EndMarker); INT APPS_EXE_MESSAGES_GetHotKey(PCHAR Str); void APPS_EXE_MESSAGES_InitMessages(void); void APPS_EXE_MESSAGES_EXTERN_InitProgramSpecific(void); void APPS_EXE_MESSAGES_EXTERN_LoadMessages(void); #include "apps/exe/messages/msgstruc.h" #undef DECLEXT #endif unace-2.5/source/apps/exe/messages/msgstruc.h0000644000175000017500000003551407657212754022067 0ustar danieldaniel00000000000000typedef struct { PCHAR BEGIN_MARKER, /*-----------------------------------------------------------------------*/ Yes, Always, No, Cancel, Main_comment, Copyright_by_ACE_Compression_Software, file, files, User_break, __analyzing, Header_broken, Use_repair_function_to_recover_files_of_archive_, Copy, Copy_noun, Delete_it_anyway_, Delete_noun, testing, archive, __LOCKED_, Warning, File_already_exists_, File_comment, Contents_of, Not_enough_memory_to_perform_operation_, Select_smaller_dictionary_size_and_try_again_, Exclude_paths, Error_excluding_paths__two_or_more, specified_files_have_the_same_name_, Working, Creating_listfile__Please_wait_, No_files_specified_, Operation_aborted_, Is_no_ACE_archive_, Reading_archive__Please_wait__, Could_not_open_file_, Error_while_reading_archive, looking_for, New_Path, Enter_new_source_path, File_not_found_or_archive_broken_, processing, Ready_to_process, File_compressed_with_unknown_method_, Decompression_not_possible_, Extract, Test, Not_enough_memory_or_dictionary_of_archive_too_large_, Reduce_compression_dictionary_size__Then_try_again_, Authenticity_verification_of_archive_is_broken_, Archive_too_old_or_created_with_non_original_program_, Found_read_only__hidden_or_system_file_, Could_not_delete_file_or_directory_, Could_not_create_directory_, Access_denied_, Disk_might_be_write_protected_, Name_is_used_by_a_file_, Overwrite_, Could_not_create_destination_file_, Disk_access_error_, Password, Enter_password_, SUB_DIR, UP__DIR, Time_out_error_, __Press_any_key_to_continue__, Not_enough_space_on_destination_drive_to_extract, extracting, Found_encrypted_file_, Use_current_password_, Found_encrypted_file__No_password_specified_, Not_enough_memory_to_handle_filenames_, Make_more_memory_available__Then_try_again_, Error, CRC_OK, CRC_check_error_on, SFXUsage, CommlineHelp[APPS_EXE_MESSAGES_COMMLINEHELPLINES], command_line, Error_opening_output_file, Unknown_command, Missing_command_, Switch_error, Unknown_switch, List_file_does_not_exist, Extra_characters_on_line, No_such_archive_found_, processing_archive, Date_____Time__Packed______Size______Ratio_File, arcdiscr[8], created_on, with_ver, by, extracted, listed, tested, _s__d_files__totaling__s_bytes__compressed__s_, Got_CRC_check_errors_on__d__s_, Error_while_writing, Extract_archive_to_current_directory_, Error__archive_not_specified, This_is_not_a_fully_ACE_compatible_archive_, Trying_to_decompress_might_fail_, is_read_only__hidden_or_system_file_, Overwrite_it_anyway_, Please_enter_new_destination_directory_, END_MARKER; /*-----------------------------------------------------------------------*/ struct { PCHAR Ok, LevelDescription[6], Enabled, Disabled, Name, ____Size_______Packed_____Date___Time_, ___Size______Date___Time_, Absent, Present, ________________Memory_________________, __________Temporary_directory__________, __________Archive_information__________, _______________Settings________________, BASE_ACE_ARCHIVER_v, __________Second_directory_________tab_, Archive_type, Volume_number, Created, Solid, SelFeXtracting, File_comments, Passwords, Recovery_record, Lock, Auth__verif_, Dictionary, Files, Total_length, Packed_length, Ratio, Version_to_extr_, Host_OS, ___Second_directory____tab_, UNREGISTERED, Free_memory, Add__update__fresh__sol_delete, Extract__view, Path, Space, Encrypt_files_with_password, Use_v2_0_compression, Compression_level, Dictionary_size, Add_recovery_record, Add_auth__verification, Make_always_solid, Create_always_SFX, Add_default_comment_file, Type, bytes_in, Free, Hotkeys, HotkeyStrs[9], Function_available_in, registered_version_only_, Error_reading_file_, Probable_cause_is_a_damaged_disk_, shellmenu[6][3], Make_archive, Enter_name_of_archive_to_make_, creating_archive, Not_enough_space_on_temporary_drive, to_create_temporary_archive_, __creating_temporary_archive, __repacking, Move_files, updating_archive, Error_creating_archive, Add_to_archive, Enter_name_of_archive_to_add_to_, Move, Move_noun, Not_all_selected_files_copied_, Deleting_will_not_happen_, Make_and_copy, Enter_name_of_archive_to_make_and_to_copy_to_, deleting, Delete, Modifying_volumes_impossible_, Change_archive_options_first_, Modify_of_locked_archives_impossible_, Create_new_archive_to_do_so_, Authenticity_verification_check_error_, AV_has_been_manipulated_or_does_not_match_yours_, Modify_of_archive_requires_higher_version_of_ACE_, Call_technical_support_or_use_given_web_sites_, Found_recovery_data, Found_no_recovery_data, Error_while_opening, Repair, Unable_to_repair_archive_by_recovery_data_, Recovery_data_damaged_, Too_many_bytes_damaged_, Archive_repaired, Archive_is_not_damaged__repairing_not_possible, Scanning_for_headers, Archive_header_broken, Mark_archive_as_solid_, Add__to_archive, Add, to_archive___Size, Packed, File_header_broken, Found, archive_header, CRC_check_error__Archive_broken_or_password_incorrect_, Recreation_failed_, Repacking_failed__Operation_aborted_, Error_while_recreating_archive, Files_can_be_found_at, Archive_is_already_solid_, Archive_is_already_self_extracting_, Adding_SFX_module_to_multiple_volume_archive_impossible_, Use_recreate__by_pressing_ALT_F8__, Encrypt, encrypting, CRC_check_error__Password_might_be_incorrect_, Encryption_failed_, adding_comment_to, Not_enough_space_to_save, Could_not_create_file_in_current_temporary_directory_, Disk_is_write_protected_or_directory_does_not_exist_, copying, to, File_does_not_exist_, to_create_temporary_file_, Second_directory_is_part_of_first_directory_, Delete_would_effect_copied_files_, Invalid_list_file_, Found_binary_character_, Sorting_files__Please_wait_, Archive_is_broken_, Ready_to_process_next_volume, Error_creating_volume, Select_drive, Deleting, Make_directory, Enter_directory_to_make_, Search, Select_files, Unselect_files, Enter_file_mask, viewmenu[2], Error_opening_file_, Are_you_sure_, View, Col, Enter_search_string_, Searching_not_succesful_, String_not_found_, Overwrite, Copying, Not_enough_space_on_destination_disk_to_copy, Fresh, Fresh_noun, Update, Update_noun, Copy_is_not_possible_, Directories_are_equal_, Copy_all_files_of_multiple_volume_archive_, directory, Not_enough_space_on_temporary_drive_to_continue_, Select_new_temp_path_and_repeat_operation_, Enter_directory_for_temporary_files, Choose_a_non_write_protected__fast_drive_, Specify_full_path_of_, Directory_does_not_exist_, Length_of_temporary_path_might_cause_problems_, Choose_shorter_one_, Error_while_saving_setup_at, Create_archive, APPS_ACE_EXE_SHELL_OPTIONS_CreateArchive[APPS_ACE_EXE_MESSAGES_CREATIONARCHIVINGOPTIONSLINES], Set_v2_0_compression_details, APPS_ACE_EXE_SHELL_OPTIONS_V20Settings, Select_SFX, Select_Language, None, Default, File, APPS_ACE_EXE_SHELL_OPTIONS_SFXDescription[APPS_ACE_EXE_MESSAGES_SFXDESCRIPTIONLINES], __do_not_add_SFX_module_to_archive__, Volume_size, Enter_volume_size__in_Thousands__, Invalid_volume_size_, Must_be_greater_than_64K_, Set_compression_level, Select_dictionary_size, APPS_ACE_EXE_SHELL_OPTIONS_ChangeArchiveOptions[6], File_options, APPS_ACE_EXE_SHELL_OPTIONS_ChangeFileOptions[2], Reenter_password_, Passwords_do_not_match_, Try_again_, Options, Shell_options, External_programs, Set_temporary_directory, APPS_ACE_EXE_SHELL_OPTIONS_ChangeOptions[APPS_ACE_EXE_MESSAGES_CHANGEOPTIONSLINES], Archive_options, APPS_ACE_EXE_SHELL_OPTIONS_GeneralArchive[APPS_ACE_EXE_MESSAGES_ARCHIVEOPTIONWINLINES], shelloption_win[13], ExternalProgramsOptions[2], External_programs_called_pressing__s, __free__, Files_, Command_, Command_line_log_file, Enter_file_to_log_command_line_output_to_, Number_too_long_or_containing, unallowed_char_, Could_not_open_source_file_, Disk_access_error_or_file_already_in_use_, Copy_of_this_file_to_current_archive_dir_impossible_, Resulting_filename_too_long_, Source_is_directory__destination_is_file_, Delete_directory_first, Tried_to_overwrite_directory_with_file_, adding, Call_error, Could_not_find_executable_, Fatal_error, The_file_ACE_EXE_has_been_modified_, File_possibly_infected_by_a_virus_, commmenu[2], Enter_default_file_for_main_comment_, Could_not_read_disk_in_drive, Enter_new_drive_, Insert_disk_, Directories, Time, Estimated, Read, Write, Actions, CRC_check_failed, shellhelp[APPS_ACE_EXE_MESSAGES_SHELLHELPPAGES][APPS_ACE_EXE_MESSAGES_MAXHELPLINES], viewhelp[APPS_ACE_EXE_MESSAGES_VIEWERHELPPAGES][APPS_ACE_EXE_MESSAGES_MAXHELPLINES], Help___page, REGISTERED__AV_, Error_at_switch__d__valid_values_are, Invalid_compression_level_, Possible_values__0__5, No_valid_archive_format, File_not_found, Wildcards_in_archive_name_at_these_operations_not_allowed_, Move__Add__Update_and_Fresh, Enter_destination_directory_, BASE_ACE_Help_file, adding_recovery_record, locking_archive, __keeping, Not_enough_space_to_save_new_archive_, Enter_new_destination_path_, Be_sure_about_enough_space__There_are, bytes_required_, Enter_new_destination_path__ESC_to_cancel_saving_, File_exists, Overwrite_existing_archive_, Could_not_open_archive_, Create_new_archive, Found_existing_archive_file__overwrite, Could_not_open_archive_for_update__probably_read_only___, Error_opening_ACE_DOC_, File_not_present_in_ACE_directory_, REGISTERED_, REG_, no_AV, Error_while_reading_ACE_KEY_, Registration_check_failed_, Registration, Replace_existing_registration_data_, Could_not_create, Registration__General_key, You_own_a_general_key_only__Full_registration_is_free_, You_can_order_your_OWN_AV_string__Please_read_FREE_DOC_, Enter_your_user_name, Input_the_name_you_gave_to_the_registration_site_, Enter_your_AV_string, Input_the_AV_string_you_ordered_at_the_registration_site_, Check_on_registration_key_failed_, Make_sure_you_input_it_correctly_, Register_ACE, Please_enter_the_Registration_Code_, Registration_process, was_successful_, The_existing_registration_code_is, added, Total, Destination_file_for_comment_must_not_contain_wildcards_, Specify_valid_file_name_please_, __Enter_comment_please__press_CTRL_Z_for_end_, Can_not_add_recovery_record_, Add_SFX_module, default_SFX_module, CommlineHelp[APPS_ACE_EXE_MESSAGES_COMMLINEHELPLINES], Error_reading_SFX_file_, Error_while_reading, Error_while_writing_archive, Registration_failed_, Registration_key_not_valid_for_commandline_Ace_, Your_general_key_expired__Please_call_e_merge_GmbH_at__49_251_43000, Your_key_has_been_expired__Please_call_e_merge_GmbH_at__49_251_43000, or_write_to_sales_winace_com_to_get_your_own_personalized_key_, or_write_to_sales_winace_com_to_update_your_licence_, Key_expiration, Setup, Succesfully_saved_setup_in, Could_not_detect_space_on_network_drive_because_of_Win95_OSR1_bug_, Assuming_there_is_enough_disk_space_free_, Archive_operations, /*-----------------------------------------------------------------------*/ END_MARKER; } ACE; } tSTR; DECLEXT tSTR STR; unace-2.5/source/apps/exe/messages/msgfiles/0000755000175000017500000000000007752377756021662 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/messages/msgfiles/eng.c0000644000175000017500000001042307760633712022561 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_MESSAGES #include "apps/exe/includes.h" CHAR APPS_EXE_MESSAGES_EXTERN_ENGLISH[] = "b\x00""MSGF\x00""\x00""\x00""\x00""\x00""\x14""\x00""\x00""\xb0""e\x89""4\xb6""\x0b""\x00""\x00""J\x00""English\x00""English language\x00""\x00""\x00""\x00""\x00""\x00""English language\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""\x00""Yes\xa" "Always\xa" "No\xa" "Cancel\xa" "Main comment\xa" "Copyright by ACE Compression Software\xa" "file\xa" "files\xa" "User break\xa" " analyzing\xa" "Header broken\xa" "Use repair-function to recover files of archive.\xa" "Copy\xa" "Copy\xa" "Delete it anyway?\xa" "Delete\xa" "testing\xa" "archive\xa" " \x2a""LOCKED\x2a""\xa" "Warning\xa" "File already exists:\xa" "File comment\xa" "Contents of\xa" "Not enough memory to perform operation.\xa" "Select smaller dictionary size and try again.\xa" "Exclude paths\xa" "Error excluding paths: two or more\xa" "specified files have the same name.\xa" "Working\xa" "Creating listfile. Please wait.\xa" "No files specified.\xa" "Operation aborted.\xa" "Is no ACE archive:\xa" "Reading archive. Please wait.\xa" "Could not open file:\xa" "Error while reading archive\xa" "looking for\xa" "New Path\xa" "Enter new source path.\xa" "File not found or archive broken.\xa" "processing\xa" "Ready to process\xa" "File compressed with unknown method.\xa" "Decompression not possible.\xa" "Extract\xa" "Test\xa" "Not enough memory or dictionary of archive too large.\xa" "Reduce compression dictionary size. Then try again.\xa" "Authenticity verification of archive is broken.\xa" "Archive too old or created with non-original program!\xa" "Found read-only, hidden or system-file.\xa" "Could not delete file or directory.\xa" "Could not create directory:\xa" "Access denied.\xa" "Disk might be write-protected.\xa" "Name is used by a file.\xa" "Overwrite?\xa" "Could not create destination file:\xa" "Disk-access-error.\xa" "Password\xa" "Enter password.\xa" "SUB-DIR\xa" "UP--DIR\xa" "Time-out error!\xa" "<-Press any key to continue->\xa" "Not enough space on destination drive to extract\xa" "extracting\xa" "Found encrypted file.\xa" "Use current password?\xa" "Found encrypted file. No password specified.\xa" "Not enough memory to handle file names.\xa" "Make more memory available. Then try again.\xa" "Error\xa" "CRC OK\xa" "CRC-check error on\xa" " [] [- ...] [\x5c""] [\x2f""\x40""]\xa" "\xa" "\xa" "Usage:\xa" " UNACE [- ...] [\x5c""] [\x2f""\x40""]\xa" "\xa" " t Test archive integrity\xa" " e Extract files v List archive \x28""verbose\x29""\xa" " l List archive x Extract files with full path\xa" "\xa" " \x28""default\x29"" \x28""default\x29""\xa" " c[-] Show comments \x28""\x2b""\x29"" p Set password\xa" " f[-] Full path matching \x28""-\x29"" y[-] Assume yes on all queries \x28""-\x29""\xa" " o[-] Overwrite files \x28""-\x29""\xa" "\xa" " x Exclude or files in from process\xa" "\xa" "command line\xa" "Error opening output file\xa" "Unknown command\xa" "Missing command!\xa" "Switch error\xa" "Unknown switch\xa" "List file does not exist\xa" "Extra characters on line\xa" "No such archive found:\xa" "processing archive\xa" " Date Time Packed Size Ratio File\xa" "Archive\xa" "Volume\xa" "SFX\xa" "SFX-volume\xa" "Solid-arc\xa" "Solid-vol\xa" "Solid-SFX\xa" "Sol-SFX-vol\xa" "created on\xa" "with ver\xa" "by\xa" "extracted\xa" "listed\xa" "tested\xa" "%s: %d files, totaling %s bytes \x28""compressed %s\x29""\xa" "Got CRC check errors on %d %s.\xa" "Error while writing\xa" "Extract archive to current directory:\xa" "Error: archive not specified\xa" "This is not a fully ACE compatible archive.\xa" "Trying to decompress might fail.\xa" "is read-only, hidden or system-file.\xa" "Overwrite it anyway?\xa" "Please enter new destination directory:\xa" "END OF UNACE PART\xa" ; unace-2.5/source/apps/exe/messages/messages.c0000644000175000017500000001267007723474376022024 0ustar danieldaniel00000000000000#include #include #include #define INCL_APPS_EXE_MESSAGES_EXCLUSIVE #define INCL_BASE_COMMENTS #define INCL_BASE_CONVERT #define INCL_BASE_DCPR_COMMENTS #define INCL_BASE_ERROROUT #define INCL_BASE_MEMORY #define INCL_BASE_PATHFUNC #define INCL_APPS_EXE_COMMLINE #include "apps/exe/includes.h" /*-----------------APPS_EXE_MESSAGES_Open--------------------------------*/ void APPS_EXE_MESSAGES_Open(PCHAR FileName) { if (!BASE_CONVERT_StrICmp(FileName, APPS_EXE_MESSAGES_ENGLISH)) { APPS_EXE_MESSAGES.ReadPos = (PCHAR) APPS_EXE_MESSAGES_EXTERN_ENGLISH; APPS_EXE_MESSAGES.Handle = -2; } else { APPS_EXE_MESSAGES.Handle = open(FileName, O_BINARY | O_RDONLY); } } /*-----------------APPS_EXE_MESSAGES_Read--------------------------------*/ INT APPS_EXE_MESSAGES_Read(void *Buf, INT Len) { if (APPS_EXE_MESSAGES.Handle == -2) { memcpy(Buf, APPS_EXE_MESSAGES.ReadPos, Len); APPS_EXE_MESSAGES.ReadPos += Len; return Len; } else { return read(APPS_EXE_MESSAGES.Handle, Buf, Len); } } /*-----------------APPS_EXE_MESSAGES_Skip--------------------------------*/ void APPS_EXE_MESSAGES_Skip(INT Len) { if (APPS_EXE_MESSAGES.Handle == -2) { APPS_EXE_MESSAGES.ReadPos += Len; } else { lseek(APPS_EXE_MESSAGES.Handle, Len, SEEK_CUR); } } /*-----------------APPS_EXE_MESSAGES_Close-------------------------------*/ void APPS_EXE_MESSAGES_Close(void) { if (APPS_EXE_MESSAGES.Handle != -2) { close(APPS_EXE_MESSAGES.Handle); } } /*-----------------APPS_EXE_MESSAGES_GetMessageFile----------------------*/ BOOL APPS_EXE_MESSAGES_GetMessageFile(tLFN FileName, PULONG Size) { CHAR Marker[4]; USHORT Start; ULONG Bits; APPS_EXE_MESSAGES_Open(FileName); if (APPS_EXE_MESSAGES.Handle == -1) { goto RETURNERROR; } APPS_EXE_MESSAGES_Read(&Start, 2); ADJUST_ENDIANNESS16(&Start); APPS_EXE_MESSAGES_Read(&Marker, 4); if (memcmp(Marker, "MSGF", 4)) { goto RETURNERROR; } APPS_EXE_MESSAGES_Read(&Bits, 4); ADJUST_ENDIANNESS32(&Bits); APPS_EXE_MESSAGES_Skip(2); APPS_EXE_MESSAGES_Read(&APPS_EXE_MESSAGES.LanguageIndex, 2); ADJUST_ENDIANNESS16(&APPS_EXE_MESSAGES.LanguageIndex); APPS_EXE_MESSAGES_Skip(4); APPS_EXE_MESSAGES_Read(Size, 4); ADJUST_ENDIANNESS32(Size); APPS_EXE_MESSAGES_Skip(Start - 22); BASE_MEMORY_FreeCheck((PVOID *) &APPS_EXE_MESSAGES.MessagesBuf); if (!(APPS_EXE_MESSAGES.MessagesBuf = (PCHAR) BASE_MEMORY_GetMem(*Size + 1))) { goto RETURNERROR; } if (APPS_EXE_MESSAGES_Read(APPS_EXE_MESSAGES.MessagesBuf, *Size) < *Size) { goto RETURNERROR; } APPS_EXE_MESSAGES.MessagesBuf[*Size] = 0; close(APPS_EXE_MESSAGES.Handle); return 1; RETURNERROR: // BASE_ERROROUT_EXTERN_ReadingMessagesFile(FileName); return 0; } /*-----------------APPS_EXE_MESSAGES_LoadMessagesPROC--------------------*/ void APPS_EXE_MESSAGES_LoadMessagesPROC(PCHAR *EndMarkerPos, PCHAR EndMarker) { BOOL UsingDefault; ULONG MessagesSize; PCHAR *STRPos; PCHAR MessagesBufEnd, EOLPos; sprintf(APPS_EXE_MESSAGES.FileName, "%sACE.MSG", BASE_PATHFUNC_AddSlashToEnd(APPS_EXE_COMMLINE.ProgramDir)); for (UsingDefault = 0;; UsingDefault = 1) { if (APPS_EXE_MESSAGES_GetMessageFile(APPS_EXE_MESSAGES.FileName, &MessagesSize)) { MessagesBufEnd = (EOLPos = APPS_EXE_MESSAGES.MessagesBuf) + MessagesSize; STRPos = &STR.BEGIN_MARKER + 1; *MessagesBufEnd = 10; while (EOLPos < MessagesBufEnd && STRPos <= EndMarkerPos) { *STRPos = EOLPos; STRPos++; EOLPos = strchr(EOLPos, 10); *EOLPos = 0; EOLPos++; } if (*EndMarkerPos && !BASE_CONVERT_StrNICmp(*EndMarkerPos, EndMarker, strlen(EndMarker))) { return; } } strcpy(APPS_EXE_MESSAGES.FileName, APPS_EXE_MESSAGES_ENGLISH); if (UsingDefault) { // BASE_ERROROUT_EXTERN_ReadingMessagesFile(APPS_EXE_MESSAGES.FileName); break; } } } /*-----------------APPS_EXE_MESSAGES_GetHotKey---------------------------*/ INT APPS_EXE_MESSAGES_GetHotKey(PCHAR Str) { PCHAR AndPos; if (AndPos = strchr(Str, '&')) { strcpy(AndPos, AndPos + 1); return AndPos - Str; } else { return 0; } } /*-----------------APPS_EXE_MESSAGES_InitMessages------------------------*/ void APPS_EXE_MESSAGES_InitMessages(void) { APPS_EXE_MESSAGES_EXTERN_LoadMessages(); APPS_EXE_MESSAGES.YANC[0] = BASE_CONVERT_UpCase(STR.Yes[APPS_EXE_MESSAGES.YANCPos[0] = APPS_EXE_MESSAGES_GetHotKey(STR.Yes)]); APPS_EXE_MESSAGES.YANC[1] = BASE_CONVERT_UpCase(STR.Always[APPS_EXE_MESSAGES.YANCPos[1] = APPS_EXE_MESSAGES_GetHotKey(STR.Always)]); APPS_EXE_MESSAGES.YANC[2] = BASE_CONVERT_UpCase(STR.No[APPS_EXE_MESSAGES.YANCPos[2] = APPS_EXE_MESSAGES_GetHotKey(STR.No)]); APPS_EXE_MESSAGES.YANC[3] = BASE_CONVERT_UpCase(STR.Cancel[APPS_EXE_MESSAGES.YANCPos[3] = APPS_EXE_MESSAGES_GetHotKey(STR.Cancel)]); APPS_EXE_MESSAGES.YANC[4] = 0; APPS_EXE_MESSAGES_EXTERN_InitProgramSpecific(); } unace-2.5/source/apps/exe/exe.h0000644000175000017500000000015207157426362017155 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_H_INCLUDED #define _APPS_EXE_H_INCLUDED #define APPS_EXE_DELAYLENGTH 500 #endif unace-2.5/source/apps/exe/input/0000755000175000017500000000000007752377756017401 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/input/lin.h0000644000175000017500000000076507227347702020325 0ustar danieldaniel00000000000000#ifndef _INPUT_LINUX_H_INCLUDED #define _INPUT_LINUX_H_INCLUDED #include #ifdef INCL_APPS_EXE_INPUT_LINUX_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { struct termios OldtiMode; PCHAR OldStdInBuf; } tAPPS_EXE_INPUT_LINUX; DECLEXT tAPPS_EXE_INPUT_LINUX APPS_EXE_INPUT_LINUX; void APPS_EXE_INPUT_LINUX_SetRawMode(void); void APPS_EXE_INPUT_LINUX_UnSetRawMode(void); #undef DECLEXT #endif unace-2.5/source/apps/exe/input/input.c0000644000175000017500000001267007761467574020710 0ustar danieldaniel00000000000000#include #include #include #define INCL_APPS_EXE_INPUT_EXCLUSIVE #define INCL_BASE_ERROR #define INCL_BASE_CONVERT #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_COMMLINE #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #define INCL_APPS_EXE_STATE #include "apps/exe/includes.h" /*-----------------APPS_EXE_INPUT_InputProc------------------------------*/ void APPS_EXE_INPUT_InputProc(PCHAR StartStr, INT Width, PCHAR TopStr, PCHAR Discription, BOOL IsPasswInput, BOOL DoRegInput) { BOOL IsFirstKeyPressed, IsTimeOut; CHAR InputStr[80], TempStr[80]; INT TimeCount, InputLen; IsFirstKeyPressed = 1; IsTimeOut = 0; strcpy(InputStr, BASE_CONVERT_ToOEM(StartStr)); InputLen = strlen(InputStr); APPS_EXE_OUTPUT_DeleteRight(); sprintf(TempStr, "%s:", TopStr); APPS_EXE_OUTPUT_Write(TempStr); sprintf(TempStr, " %s", Discription); APPS_EXE_OUTPUT_Write(TempStr); printf("\n %s", InputStr); APPS_EXE_INPUT_EXTERN_InputProcOutputMask(DoRegInput); #ifndef __sun__ fflush(stdout); #endif do { TimeCount = 0; while (!APPS_EXE_INPUT_KeyHit() && !BASE_ERROR.ErrorCode) { if (IsFirstKeyPressed) { if (APPS_EXE_COMMLINE.TimeOutLimit && TimeCount > APPS_EXE_COMMLINE.TimeOutLimit) { IsTimeOut = 1; break; } TimeCount++; APPS_EXE_STATE_Delay(100); } } if (IsTimeOut) { break; } BASE_ERROR_EXTERN_HandleCancel(0); APPS_EXE_INPUT_EXTERN_InputProcHandleKey(DoRegInput); if (APPS_EXE_INPUT.LastKey != 13 && APPS_EXE_INPUT.LastKey != 27) { if (APPS_EXE_INPUT.LastKey == 8) // Backspace { if (InputLen) { APPS_EXE_INPUT_EXTERN_InputProcHandleDelete(DoRegInput, InputLen, Width); printf("\x8 \x8"); InputLen--; #ifndef __sun__ fflush(stdout); #endif } } else { if ((isprint(APPS_EXE_INPUT.LastKey) || strchr("„”Ž™š", APPS_EXE_INPUT.LastKey)) && InputLen < Width) { if (APPS_EXE_INPUT_EXTERN_InputProcInputCondition(DoRegInput, InputLen)) { InputStr[InputLen++] = APPS_EXE_INPUT.LastKey; putchar(IsPasswInput ? '*' : APPS_EXE_INPUT.LastKey); APPS_EXE_INPUT_EXTERN_InputProcOutputMaskAtInput( DoRegInput, InputLen, Width); #ifndef __sun__ fflush(stdout); #endif } } } } IsFirstKeyPressed = 0; } while (APPS_EXE_INPUT.LastKey != 13 && APPS_EXE_INPUT.LastKey != 27 && !BASE_ERROR_EXTERN_HandleCancel(0)); APPS_EXE_OUTPUT_Write(""); if (IsTimeOut) { BASE_ERROR.ErrorCode = BASE_ERROR_OTHER; APPS_EXE_OUTPUT_Error(STR.Time_out_error_); } else { if (APPS_EXE_INPUT.LastKey != 13) { InputLen = 0; } InputStr[InputLen] = 0; if (APPS_EXE_INPUT.LastKey == 13) { strcpy(StartStr, BASE_CONVERT_ToANSI(InputStr)); } } } /*-----------------APPS_EXE_INPUT_Input----------------------------------*/ void APPS_EXE_INPUT_Input(PCHAR StartStr, INT Width, PCHAR TopStr, PCHAR Discription, BOOL IsPasswInput) { APPS_EXE_INPUT_InputProc(StartStr, Width, TopStr, Discription, IsPasswInput, 0); } /*-----------------APPS_EXE_INPUT_WarningYANCProc------------------------*/ INT APPS_EXE_INPUT_WarningYANCProc(PCHAR TopStr, PCHAR Description1, PCHAR Description2) { CHAR ShortStr1[80], ShortStr2[80], TempStr[200]; INT TimeCount; UINT ButtonNumber; PCHAR Output; APPS_EXE_CONVERT_MakeStrShorter(ShortStr1, Description1, 79); APPS_EXE_CONVERT_MakeStrShorter(ShortStr2, Description2, 79); APPS_EXE_OUTPUT_DeleteRight(); sprintf(TempStr, "%s:\n %s\n %s\n (%s, %s, %s, %s)", TopStr, ShortStr1, ShortStr2, STR.Yes, STR.Always, STR.No, STR.Cancel); APPS_EXE_OUTPUT_Write(TempStr); do { TimeCount = 0; while (!APPS_EXE_INPUT_KeyHit() && !BASE_ERROR.ErrorCode) { if (APPS_EXE_COMMLINE.TimeOutLimit && TimeCount > APPS_EXE_COMMLINE.TimeOutLimit) { BASE_ERROR.ErrorCode = BASE_ERROR_OTHER; APPS_EXE_OUTPUT_Error(STR.Time_out_error_); return 3; } TimeCount++; APPS_EXE_STATE_Delay(100); } BASE_ERROR_EXTERN_HandleCancel(0); APPS_EXE_INPUT.LastKey = BASE_CONVERT_UpCase(APPS_EXE_INPUT.LastKey); if (APPS_EXE_INPUT.LastKey == 27) { APPS_EXE_INPUT.LastKey = APPS_EXE_MESSAGES.YANC[3]; } } while (!(ButtonNumber = (LONG) strchr(APPS_EXE_MESSAGES.YANC, APPS_EXE_INPUT.LastKey)) && !BASE_ERROR_EXTERN_HandleCancel(0)); ButtonNumber -= (LONG) APPS_EXE_MESSAGES.YANC; if (!BASE_ERROR.ErrorCode) { switch (ButtonNumber) { case 0: { Output = STR.Yes; break; } case 1: { Output = STR.Always; break; } case 2: { Output = STR.No; break; } case 3: { Output = STR.Cancel; break; } } APPS_EXE_OUTPUT_Write(Output); } return ButtonNumber; } unace-2.5/source/apps/exe/input/input.h0000644000175000017500000000414207157426362020675 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_INPUT_H_INCLUDED #define _APPS_EXE_INPUT_H_INCLUDED #ifdef INCL_APPS_EXE_INPUT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define APPS_EXE_INPUT_SHIFT 3 #define APPS_EXE_INPUT_CTRL 4 #define APPS_EXE_INPUT_ALT 8 #define APPS_EXE_INPUT_CTRLALT (APPS_EXE_INPUT_CTRL | APPS_EXE_INPUT_ALT) typedef struct { INT LastKey, LastKey2, TimeCount; } tAPPS_EXE_INPUT; DECLEXT tAPPS_EXE_INPUT APPS_EXE_INPUT; void APPS_EXE_INPUT_InputProc(PCHAR StartStr, INT Width, PCHAR TopStr, PCHAR Discription, BOOL IsPasswInput, BOOL DoRegInput); void APPS_EXE_INPUT_Input(PCHAR StartStr, INT Width, PCHAR TopStr, PCHAR Discription, BOOL IsPasswInput); INT APPS_EXE_INPUT_GetKey(void); BOOL APPS_EXE_INPUT_KeyHit(void); INT APPS_EXE_INPUT_WarningYANCProc(PCHAR TopStr, PCHAR Description1, PCHAR Description2); void APPS_EXE_INPUT_EXTERN_Input(PCHAR StartStr, INT Width, PCHAR TopStr, PCHAR Discription, BOOL IsPasswInput); void APPS_EXE_INPUT_EXTERN_InputProcOutputMask(BOOL DoRegInput); void APPS_EXE_INPUT_EXTERN_InputProcHandleKey(BOOL DoRegInput); void APPS_EXE_INPUT_EXTERN_InputProcHandleDelete(BOOL DoRegInput, INT InputLen, INT Width); BOOL APPS_EXE_INPUT_EXTERN_InputProcInputCondition(BOOL DoRegInput, INT InputLen); void APPS_EXE_INPUT_EXTERN_InputProcOutputMaskAtInput(BOOL DoRegInput, INT InputLen, INT Width); INT APPS_EXE_INPUT_EXTERN_WarningYANC(PCHAR TopStr, PCHAR Description1, PCHAR Description2); #undef DECLEXT #endif unace-2.5/source/apps/exe/input/lin.c0000644000175000017500000000300507752412010020272 0ustar danieldaniel00000000000000#include #include #include #include #include #include #define INCL_APPS_EXE_INPUT_LINUX_EXCLUSIVE #define INCL_APPS_EXE_INPUT #include /*-----------------APPS_EXE_INPUT_GetKey---------------------------------*/ INT APPS_EXE_INPUT_GetKey(void) { CHAR Ch; Ch = getchar(); switch (Ch) { case 127: { Ch = 8; break; } } return Ch; } /*-----------------APPS_EXE_INPUT_KeyHit---------------------------------*/ BOOL APPS_EXE_INPUT_KeyHit(void) { fd_set fds; struct timeval tv; FD_ZERO(&fds); FD_SET(0, &fds); tv.tv_sec = 0; tv.tv_usec = 0; return select(1, &fds, NULL, NULL, &tv); } /*-----------------APPS_EXE_INPUT_LINUX_SetRawMode-----------------------*/ void APPS_EXE_INPUT_LINUX_SetRawMode(void) { struct termios ti; if (tcgetattr(STDIN_FILENO, &APPS_EXE_INPUT_LINUX.OldtiMode) < 0) { return; } ti = APPS_EXE_INPUT_LINUX.OldtiMode; ti.c_iflag &= ~ICRNL; ti.c_iflag |= IGNBRK | BRKINT; ti.c_lflag &= ~(ICANON | ECHO); ti.c_lflag |= ISIG; if (tcsetattr(STDIN_FILENO, TCSANOW, &ti) < 0) { return; } return; } /*-----------------APPS_EXE_INPUT_LINUX_UnSetRawMode---------------------*/ void APPS_EXE_INPUT_LINUX_UnSetRawMode(void) { if (tcsetattr(STDIN_FILENO, TCSANOW, &APPS_EXE_INPUT_LINUX.OldtiMode) < 0) { return; } return; } unace-2.5/source/apps/exe/state/0000755000175000017500000000000007752377756017362 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/state/gcc.c0000644000175000017500000000060007226355022020230 0ustar danieldaniel00000000000000#include #include #define INCL_APPS_EXE_STATE #include "apps/exe/includes.h" /*-----------------APPS_EXE_STATE_Delay----------------------------------*/ void APPS_EXE_STATE_Delay(INT MilliSeconds) { struct timeval tv; tv.tv_sec = MilliSeconds / 1000; tv.tv_usec = (MilliSeconds % 1000) * 100; select(0, NULL, NULL, NULL, &tv); } unace-2.5/source/apps/exe/state/state.c0000644000175000017500000000011107157426364020624 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_STATE_EXCLUSIVE #include "apps/exe/includes.h" unace-2.5/source/apps/exe/state/state.h0000644000175000017500000000057307157426364020645 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_STATE_H_INCLUDED #define _APPS_EXE_STATE_H_INCLUDED #ifdef INCL_APPS_EXE_STATE_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { PCHAR ActionString; } tAPPS_EXE_STATE; DECLEXT tAPPS_EXE_STATE APPS_EXE_STATE; void APPS_EXE_STATE_Delay(INT MilliSeconds); #undef DECLEXT #endif unace-2.5/source/apps/exe/acefuncs/0000755000175000017500000000000007752377756020031 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/acefuncs/acefuncs.h0000644000175000017500000000021507157426364021754 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_ACEFUNCS_H_INCLUDED #define _APPS_EXE_ACEFUNCS_H_INCLUDED void APPS_EXE_ACEFUNCS_List(BOOL Verbose); #endif unace-2.5/source/apps/exe/acefuncs/acefuncs.c0000644000175000017500000001046707760633756021766 0ustar danieldaniel00000000000000#include #include #define INCL_APPS_EXE_ACEFUNCS_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_COMMENTS #define INCL_BASE_CONVERT #define INCL_BASE_DIRDATA #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_FILELIST #define INCL_BASE_FUNCS #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #define INCL_BASE_VOLUME #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPTERR #define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------APPS_EXE_ACEFUNCS_List--------------------------------*/ void APPS_EXE_ACEFUNCS_List(BOOL Verbose) { CHAR ShortStr[80], SizeStr1[80], SizeStr2[80], OutputStr[160]; PCHAR OutputFileName; INT I; tBASE_DOSFUNCS_FileTime FileTime; BASE_FILELIST_Init(); BASE_FILELIST_VolumeCreate(); BASE_VOLUME.DoNotProcessNextVolume = BASE_ARCBLK.DoOpenForReadOnly = 1; if (BASE_ARCBLK_OpenArchive(BASE_DIRDATA_Dir1.ArchiveName, 0, 1, 1, 1)) { sprintf(OutputStr, "%s%s %s %s", STR.Contents_of, BASE_DIRDATA_Dir1.IsLocked ? STR.__LOCKED_ : "", STR.archive, BASE_CONVERT_ToOEM(APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_DIRDATA_Dir1.ArchiveName, 35))); APPS_EXE_OUTPUT_WriteWait(OutputStr); APPS_EXE_OUTPUT_WriteWait(""); APPS_EXE_OUTPUT_WriteWait( STR.Date_____Time__Packed______Size______Ratio_File); APPS_EXE_OUTPUT_WriteWait(""); while (!BASE_ERROR_EXTERN_HandleCancel(1) && BASE_ARCBLK_LoadBlock()) { if ((BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE) && !(BASE_ARCBLK.Header.File.ATTR & BASE_DOSFUNCS_SUBDIR) && BASE_FILELIST_Check(BASE_ARCBLK_GetFileName(ShortStr, &BASE_ARCBLK.Header))) { OutputFileName = strrchr(ShortStr, '\\'); if (Verbose || !OutputFileName) { OutputFileName = ShortStr; } else { OutputFileName++; } APPS_EXE_CONVERT_MakeStrShorter(ShortStr, OutputFileName, 35); *(PULONG) &FileTime = BASE_ARCBLK.Header.File.FTIME; BASE_STATE.SummaryUnComprBytes += BASE_ARCBLK.Header.File.SIZE; BASE_STATE.SummaryComprBytes += BASE_ARCBLK.Header.File.PSIZE; BASE_STATE.SummaryFileCount++; sprintf( OutputStr, "%2d.%2d.%2d_%2d:%2d %c%c%s %s %4d%% %c%s", FileTime.Day, FileTime.Month, (80 + FileTime.Year) % 100, FileTime.Hour, FileTime.Minute, BASE_ARCBLK.Header.File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITBEFORE ? '\x11' : ' ', BASE_ARCBLK.Header.File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITAFTER ? '\x10' : ' ', APPS_EXE_CONVERT_FormatSize(SizeStr1, 0, BASE_ARCBLK.Header.File.PSIZE), APPS_EXE_CONVERT_FormatSize(SizeStr2, 0, BASE_ARCBLK.Header.File.SIZE), APPS_EXE_CONVERT_GetPercents((INT) BASE_ARCBLK.Header.File.PSIZE, (INT) BASE_ARCBLK.Header.File.SIZE) / 10, BASE_ARCBLK.Header.File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_PASSWORD ? '*' : ' ', BASE_CONVERT_ToOEM(ShortStr)); for (I = 0; I < 14; I++) { switch (OutputStr[I]) { case ' ': OutputStr[I] = '0'; break; case '_': OutputStr[I] = ' '; break; } } APPS_EXE_OUTPUT_WriteWait(OutputStr); if (Verbose) { BASE_COMMENTS_EXTERN_Output(); } } } /* if (!BASE_ERROR.ErrorCode) { APPS_EXE_OUTPUT_WriteWait(""); sprintf(OutputStr, " %s³%s³%4d%%³ %d %s", APPS_EXE_CONVERT_FormatSize(SizeStr1, 0, PackedCount), APPS_EXE_CONVERT_FormatSize(SizeStr2, 0, SizeCount), APPS_EXE_CONVERT_GetPercents(PackedCount, SizeCount) / 10, FileCount, FileCount == 1 ? STR.file : STR.files); APPS_EXE_OUTPUT_WriteWait(OutputStr); } */ BASE_ARCBLK_EXTERN_CloseArchive(0); } BASE_FILELIST_Done(); BASE_ARCBLK.DoOpenForReadOnly = 0; } unace-2.5/source/apps/exe/commline/0000755000175000017500000000000007752377756020045 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/commline/commline.c0000644000175000017500000000011407157426362021773 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_COMMLINE_EXCLUSIVE #include "apps/exe/includes.h" unace-2.5/source/apps/exe/commline/commline.h0000644000175000017500000000142707704243140021775 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_COMMLINE_H_INCLUDED #define _APPS_EXE_COMMLINE_H_INCLUDED #include "base/all/lfn/lfn.h" #ifdef INCL_APPS_EXE_COMMLINE_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL Error, IsHitCTRL; INT ArgumentsNumber, ArgumentCount, TimeOutLimit; PCHAR Arguments[64]; tLFN ErrorFile, OutFile; tLFN ProgramPath, ProgramDir, StartDir; PCHAR EnvironmentSwitches; INT Command; tLFN ArchiveName; PCHAR TargetDir; } tAPPS_EXE_COMMLINE; DECLEXT tAPPS_EXE_COMMLINE APPS_EXE_COMMLINE; #undef DECLEXT #endif unace-2.5/source/apps/exe/extern/0000755000175000017500000000000007752377756017547 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/crypt/0000755000175000017500000000000007752377756020710 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/crypt/crypt.c0000644000175000017500000000321207157426362022176 0ustar danieldaniel00000000000000#define INCL_BASE_CRYPT #define INCL_BASE_DCPR #define INCL_BASE_ERROR #define INCL_BASE_OPTIONS #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------BASE_CRYPT_EXTERN_ResetCryptKeyUseCurrent-------------*/ void BASE_CRYPT_EXTERN_ResetCryptKeyUseCurrent( pBASE_CRYPT_CRYPTIONDATA CryptionData) { INT Input; if (!(BASE_CRYPT.DoUseCurrentPassword |= BASE_OPTIONS.ExtractOptions.DoUseCurrentPassword) && BASE_DCPR.Options.CryptionData.Password[0]) { do { Input = APPS_EXE_INPUT_EXTERN_WarningYANC(STR.Extract, STR.Found_encrypted_file_, STR.Use_current_password_); if (Input == 3) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } else { if (Input == 2) { if (BASE_OPTIONS_EXTERN_SetPassword(&BASE_DCPR.Options.CryptionData, 0)) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } else { BASE_CRYPT_InitCryptKey(&BASE_DCPR.Options.CryptionData); } } } } while (!BASE_ERROR.ErrorCode && !BASE_DCPR.Options.CryptionData.Password[0]); BASE_CRYPT.DoUseCurrentPassword = (Input == 1); } if (!BASE_ERROR.ErrorCode && !BASE_DCPR.Options.CryptionData.Password[0]) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Extract, STR.Found_encrypted_file__No_password_specified_, STR.Enter_password_); } } unace-2.5/source/apps/exe/extern/error/0000755000175000017500000000000007752377756020700 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/error/error.c0000644000175000017500000000107007157426362022156 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_EXTERN_ERROR_EXCLUSIVE #define INCL_BASE_ERROR #define INCL_APPS_EXE_INPUT #include "apps/exe/includes.h" /*-----------------BASE_ERROR_EXTERN_HandleCancel------------------------*/ INT BASE_ERROR_EXTERN_HandleCancel(BOOL DoReadAllKeys) { BASE_ERROR_EXTERN_HandleCancelPROC(); while (APPS_EXE_INPUT_KeyHit()) { APPS_EXE_INPUT.LastKey = APPS_EXE_INPUT_GetKey(); APPS_EXE_EXTERN_ERROR_HandleCancelPROC(); if (!DoReadAllKeys) { break; } } return BASE_ERROR.ErrorCode; } unace-2.5/source/apps/exe/extern/error/error.h0000644000175000017500000000023507157426364022167 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_EXTERN_ERROR_H_INCLUDED #define _APPS_EXE_EXTERN_ERROR_H_INCLUDED void APPS_EXE_EXTERN_ERROR_HandleCancelPROC(void); #endif unace-2.5/source/apps/exe/extern/error/ntlin.c0000644000175000017500000000050507157426364022155 0ustar danieldaniel00000000000000#define INCL_BASE_ERROR #include "apps/exe/includes.h" /*-----------------BASE_ERROR_EXTERN_Init--------------------------------*/ void BASE_ERROR_EXTERN_Init(void) { } /*-----------------BASE_ERROR_EXTERN_HandleCancelPROC--------------------*/ void BASE_ERROR_EXTERN_HandleCancelPROC(void) { } unace-2.5/source/apps/exe/extern/funcs/0000755000175000017500000000000007752377756020665 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/funcs/funcs.c0000644000175000017500000000340107752411674022131 0ustar danieldaniel00000000000000#include #include #define INCL_BASE_CONVERT #define INCL_BASE_DCPR #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_EXTRACT #define INCL_BASE_FILELIST #define INCL_BASE_FUNCS #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #define INCL_BASE_VOLUME #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #include "apps/exe/includes.h" /*-----------------BASE_FUNCS_EXTERN_MoveRealSysFileRequest--------------*/ INT BASE_FUNCS_EXTERN_MoveDeleteRealSysFileRequest(void) { return APPS_EXE_INPUT_EXTERN_WarningYANC(STR.Delete_noun, STR.Found_read_only__hidden_or_system_file_, STR.Delete_it_anyway_); // BASE_STATE.CurrentFileNameName } /*-----------------BASE_FUNCS_EXTERN_CreateDestinationFileRequestOverwrite----*/ BOOL BASE_FUNCS_EXTERN_CreateDestinationFileRequestOverwrite(void) { CHAR OutputStr[80], ShortStr[80]; sprintf(OutputStr, "%s %s", STR.File_already_exists_, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_STATE.CurrentFileName, 30)); return APPS_EXE_INPUT_EXTERN_WarningYANC(STR.Copy_noun, OutputStr, STR.Overwrite_); } /*-----------------BASE_FUNCS_EXTERN_RequestOverwriteSysFile-------------*/ BOOL BASE_FUNCS_EXTERN_RequestOverwriteSysFile(void) { CHAR OutputStr[80], ShortStr[80]; sprintf(OutputStr, "%s %s", BASE_CONVERT_ToOEM(APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_STATE.CurrentFileName, 26)), STR.is_read_only__hidden_or_system_file_); return APPS_EXE_INPUT_EXTERN_WarningYANC(STR.Copy, OutputStr, STR.Overwrite_it_anyway_); } unace-2.5/source/apps/exe/extern/state/0000755000175000017500000000000007752377756020667 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/state/state.h0000644000175000017500000000104307157426362022141 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_EXTERN_STATE_H_INCLUDED #define _APPS_EXE_EXTERN_STATE_H_INCLUDED #ifdef INCL_APPS_EXE_EXTERN_STATE_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { PCHAR ActionString; } tAPPS_EXE_EXTERN_STATE; DECLEXT tAPPS_EXE_EXTERN_STATE APPS_EXE_EXTERN_STATE; void APPS_EXE_EXTERN_STATE_StdOutputProgressEnd(void); void APPS_EXE_EXTERN_STATE_OutputCRCOkEnd(BOOL CRCIsOk); void APPS_EXE_EXTERN_STATE_CRCError(BOOL CRCIsOk); #undef DECLEXT #endif unace-2.5/source/apps/exe/extern/state/state.c0000644000175000017500000000561507752411730022137 0ustar danieldaniel00000000000000#include #define INCL_APPS_EXE_EXTERN_STATE_EXCLUSIVE #define INCL_BASE_CONVERT #define INCL_BASE_DOSFUNCS #define INCL_BASE_FILELIST #define INCL_BASE_STATE #define INCL_APPS_EXE #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #define INCL_APPS_EXE_STATE #include "apps/exe/includes.h" /*-----------------BASE_STATE_EXTERN_IsCRCOkSet--------------------------*/ void BASE_STATE_EXTERN_IsCRCOkSet(PBOOL IsCRCOk, BOOL IsEncrypted) { } /*-----------------BASE_STATE_EXTERN_SetExtractString--------------------*/ void BASE_STATE_EXTERN_SetExtractString(void) { APPS_EXE_STATE.ActionString = STR.Extract; } /*-----------------BASE_STATE_EXTERN_SetTestString-----------------------*/ void BASE_STATE_EXTERN_SetTestString(void) { APPS_EXE_STATE.ActionString = STR.Test; } /*-----------------BASE_STATE_EXTERN_OutputProgressData------------------*/ void BASE_STATE_EXTERN_OutputProgressData(PCHAR Buf, INT Bytes) { } /*-----------------APPS_EXE_EXTERN_STATE_StdOutputProgressEnd------------*/ void APPS_EXE_EXTERN_STATE_StdOutputProgressEnd(void) { CHAR OutputStr1[80], OutputStr2[80]; BOOL DoWriteCompressionPercents; if (APPS_EXE_OUTPUT.IsNotRedirected) { DoWriteCompressionPercents = BASE_STATE.FileUnComprBytes == BASE_STATE.FileSize; sprintf(OutputStr1, "(%s)", APPS_EXE_CONVERT_ToPercentStr(BASE_STATE.TotalUnComprBytes, BASE_FILELIST.SizeOfFiles)); sprintf(OutputStr2, "%-8s", OutputStr1); sprintf(OutputStr1, DoWriteCompressionPercents ? "%6s " : "%6s %s", DoWriteCompressionPercents ? APPS_EXE_CONVERT_ToPercentStr(BASE_STATE.FileComprBytes, BASE_STATE.FileSize) : APPS_EXE_CONVERT_ToPercentStr(BASE_STATE.FileUnComprBytes, BASE_STATE.FileSize), OutputStr2); APPS_EXE_OUTPUT_WriteRight(OutputStr1); } } /*-----------------APPS_EXE_EXTERN_STATE_OutputCRCOkEnd------------------*/ void APPS_EXE_EXTERN_STATE_OutputCRCOkEnd(BOOL CRCIsOk) { APPS_EXE_OUTPUT.DoStdDeleteRight = 1; if (CRCIsOk) { APPS_EXE_OUTPUT_WriteRight(STR.CRC_OK); } else { APPS_EXE_OUTPUT_DeleteRight(); } APPS_EXE_OUTPUT.DoStdDeleteRight = 0; } /*-----------------APPS_EXE_EXTERN_STATE_CRCError------------------------*/ void APPS_EXE_EXTERN_STATE_CRCError(BOOL CRCIsOk) { CHAR OutputStr[80]; if (!CRCIsOk) { BASE_STATE.SumErrors++; sprintf(OutputStr, "%s %s", STR.CRC_check_error_on, BASE_CONVERT_ToOEM(BASE_STATE.CurrentFileName)); APPS_EXE_OUTPUT_Error(OutputStr); APPS_EXE_STATE_Delay(APPS_EXE_DELAYLENGTH); } } unace-2.5/source/apps/exe/extern/errorout/0000755000175000017500000000000007752377756021430 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/errorout/errorout.c0000644000175000017500000001473407256377126023454 0ustar danieldaniel00000000000000#define INCL_BASE_ARCBLK #define INCL_BASE_ERROR #define INCL_BASE_CONVERT #define INCL_BASE_DIRDATA #define INCL_BASE_ERROROUT #define INCL_BASE_STATE #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPTERR #define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------BASE_ERROROUT_EXTERN_IsNotCompatible------------------*/ void BASE_ERROROUT_EXTERN_IsNotCompatible(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Warning, STR.This_is_not_a_fully_ACE_compatible_archive_, STR.Trying_to_decompress_might_fail_); } /*-----------------BASE_ERROROUT_EXTERN_BrokenArchive--------------------*/ void BASE_ERROROUT_EXTERN_BrokenArchive(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Header_broken, STR.Error_while_reading_archive, STR.Use_repair_function_to_recover_files_of_archive_); } /*-----------------BASE_ERROROUT_EXTERN_Write---------------------------*/ void BASE_ERROROUT_EXTERN_Write(void) { CHAR ShortStr[80]; APPS_EXE_OUTPTERR_OutputError(STR.Error_while_writing, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_STATE.CurrentFileName, 38)); } /*-----------------BASE_ERROROUT_EXTERN_OpenArchiveRead------------------*/ void BASE_ERROROUT_EXTERN_OpenArchiveRead(void) { CHAR ShortStr[80]; APPS_EXE_OUTPTERR_OutputError(STR.Could_not_open_file_, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_ARCBLK.ArchiveFile, 26)); } /*-----------------BASE_ERROROUT_EXTERN_IsNotArchive---------------------*/ void BASE_ERROROUT_EXTERN_IsNotArchive(void) { CHAR ShortStr[80]; APPS_EXE_OUTPTERR_OutputError(STR.Is_no_ACE_archive_, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_DIRDATA_Dir1.ArchiveName,30)); } /*-----------------BASE_ERROROUT_EXTERN_NoFiles--------------------------*/ void BASE_ERROROUT_EXTERN_NoFiles(void) { APPS_EXE_OUTPTERR_OutputError(STR.No_files_specified_, STR.Operation_aborted_); } /*-----------------BASE_ERROROUT_EXTERN_ManyFilesError-------------------*/ void BASE_ERROROUT_EXTERN_ManyFilesError(void) { APPS_EXE_OUTPTERR_OutputError(STR.Not_enough_memory_to_handle_filenames_, STR.Make_more_memory_available__Then_try_again_); BASE_ERROR.ErrorCode = BASE_ERROR_MEM; } /*-----------------BASE_ERROROUT_EXTERN_Mem------------------------------*/ void BASE_ERROROUT_EXTERN_Mem(void) { APPS_EXE_OUTPTERR_OutputError( STR.Not_enough_memory_to_perform_operation_ ? STR.Not_enough_memory_to_perform_operation_ : "Not enough memory to perform operation.", STR.Select_smaller_dictionary_size_and_try_again_ ? STR.Select_smaller_dictionary_size_and_try_again_ : "Select smaller dictionary size and try again."); BASE_ERROR.ErrorCode = BASE_ERROR_MEM; } /*-----------------BASE_ERROROUT_EXTERN_UnknownMethod--------------------*/ void BASE_ERROROUT_EXTERN_UnknownMethod(void) { APPS_EXE_OUTPTERR_OutputError(STR.File_compressed_with_unknown_method_, STR.Decompression_not_possible_); } /*-----------------BASE_ERROROUT_EXTERN_ExtractMem-----------------------*/ void BASE_ERROROUT_EXTERN_ExtractMem(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Extract, STR.Not_enough_memory_or_dictionary_of_archive_too_large_, STR.Reduce_compression_dictionary_size__Then_try_again_); } /*-----------------BASE_ERROROUT_EXTERN_ExcludePath----------------------*/ void BASE_ERROROUT_EXTERN_ExcludePath(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Exclude_paths, STR.Error_excluding_paths__two_or_more, STR.specified_files_have_the_same_name_); } /*-----------------BASE_ERROROUT_EXTERN_ExtractSpace---------------------*/ void BASE_ERROROUT_EXTERN_ExtractSpace(void) { CHAR ShortStr[80]; APPS_EXE_OUTPTERR_OutputError( STR.Not_enough_space_on_destination_drive_to_extract, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_CONVERT_ToOEM(BASE_STATE.CurrentFileName), 38)); } /*-----------------BASE_ERROROUT_EXTERN_OverwriteDelete------------------*/ void BASE_ERROROUT_EXTERN_OverwriteDelete(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Delete_noun, STR.Could_not_delete_file_or_directory_, STR.Access_denied_); //BASE_STATE.CurrentFileNameName } /*-----------------BASE_ERROROUT_EXTERN_MoveDelete-----------------------*/ void BASE_ERROROUT_EXTERN_MoveDelete(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Delete_noun, STR.Could_not_delete_file_or_directory_, STR.Access_denied_); //BASE_STATE.CurrentFileNameName } /*-----------------BASE_ERROROUT_EXTERN_CreateDir------------------------*/ void BASE_ERROROUT_EXTERN_CreateDir(PCHAR Dir) { CHAR ShortStr[80]; APPS_EXE_OUTPTERR_OutputError(STR.Could_not_create_directory_, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, Dir, 26)); } /*-----------------BASE_ERROROUT_EXTERN_NameInUse------------------------*/ void BASE_ERROROUT_EXTERN_NameInUse(void) { APPS_EXE_OUTPTERR_OutputError(STR.Could_not_create_directory_, STR.Name_is_used_by_a_file_); } /*-----------------BASE_ERROROUT_EXTERN_CreateFile-----------------------*/ void BASE_ERROROUT_EXTERN_CreateFile(void) { CHAR OutputStr[80], ShortStr[80]; sprintf(OutputStr, "%s %s", STR.Could_not_create_destination_file_, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_CONVERT_ToOEM(BASE_STATE.CurrentFileName), 20)); if (BASE_ERROR.HardwareError) { APPS_EXE_OUTPTERR_OutputError(OutputStr, STR.Disk_access_error_); } else { APPS_EXE_OUTPTERR_OutputError(OutputStr, STR.Disk_might_be_write_protected_); } } /*-----------------BASE_ERROROUT_EXTERN_AVBroken-------------------------*/ void BASE_ERROROUT_EXTERN_AVBroken(void) { APPS_EXE_OUTPUT_EXTERN_Warning(STR.Warning, STR.Authenticity_verification_of_archive_is_broken_, STR.Archive_too_old_or_created_with_non_original_program_); } /*-----------------BASE_ERROROUT_EXTERN_ReadArchive----------------------*/ void BASE_ERROROUT_EXTERN_ReadArchive(void) { CHAR ShortStr[80]; APPS_EXE_OUTPTERR_OutputError(STR.Error_while_reading_archive, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, BASE_ARCBLK.ArchiveFile, 36)); } unace-2.5/source/apps/exe/extern/filelist/0000755000175000017500000000000007752377756021362 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/filelist/filelist.c0000644000175000017500000000113007161654554023320 0ustar danieldaniel00000000000000#include #define INCL_BASE_CONVERT #define INCL_BASE_FILELIST #define INCL_APPS_EXE_COMMLINE #include "apps/exe/includes.h" /*-----------------BASE_FILELIST_EXTERN_CommandLineCheck-----------------*/ BOOL BASE_FILELIST_EXTERN_CommandLineCheck(PCHAR FileName, PCHAR CompareFileName1, PCHAR CompareFileName2) { return !BASE_CONVERT_StrICmp(CompareFileName2, APPS_EXE_COMMLINE.ErrorFile) || !BASE_CONVERT_StrICmp(CompareFileName2, APPS_EXE_COMMLINE.OutFile); } unace-2.5/source/apps/exe/extern/arcblk/0000755000175000017500000000000007752377756021005 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/arcblk/arcblk.c0000644000175000017500000000300107157426362022364 0ustar danieldaniel00000000000000#include #include #define INCL_APPS_EXE_EXTERN_ARCBLK_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_COMMENTS #define INCL_BASE_DIRDATA #define INCL_BASE_STATE #define INCL_APPS_EXE #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_STATE #include "apps/exe/includes.h" /*-----------------APPS_EXE_EXTERN_ARCBLK_OutputArchiveInfo--------------*/ void APPS_EXE_EXTERN_ARCBLK_OutputArchiveInfo(BOOL DoOutputAV) { CHAR OutputStr[80]; if (BASE_ARCBLK.DoOutputComments) { BASE_COMMENTS_EXTERN_Output(); } if (DoOutputAV && BASE_ARCBLK.Header.Main.HEAD_FLAGS & BASE_ACESTRUC_FLAG_AV) { sprintf(OutputStr, "%s %d.%d.%d %s %d.%d %s", STR.created_on, BASE_DIRDATA_Dir1.TimeCreated.Day, BASE_DIRDATA_Dir1.TimeCreated.Month, 1980 + BASE_DIRDATA_Dir1.TimeCreated.Year, STR.with_ver, BASE_DIRDATA_Dir1.VersionCreated >> 8, BASE_DIRDATA_Dir1.VersionCreated & 0xff, STR.by); BASE_STATE_EXTERN_OutputProcess(OutputStr, "", 1); strncpy(OutputStr, BASE_ARCBLK.Header.Main.AV, BASE_ARCBLK.Header.Main.AV_SIZE); OutputStr[BASE_ARCBLK.Header.Main.AV_SIZE] = 0; OutputStr[50] = 0; BASE_STATE_EXTERN_OutputProcess(OutputStr, "", 1); APPS_EXE_STATE_Delay(APPS_EXE_DELAYLENGTH); } } /*-----------------BASE_ARCBLK_EXTERN_SetFileData------------------------*/ void BASE_ARCBLK_EXTERN_SetFileData(void) { } unace-2.5/source/apps/exe/extern/arcblk/arcblk.h0000644000175000017500000000025407157426362022400 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_EXTERN_ARCBLK_H_INCLUDED #define _APPS_EXE_EXTERN_ARCBLK_H_INCLUDED void APPS_EXE_EXTERN_ARCBLK_OutputArchiveInfo(BOOL DoOutputAV); #endif unace-2.5/source/apps/exe/extern/comments/0000755000175000017500000000000007752377756021374 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/comments/comments.c0000644000175000017500000000200207157426362023342 0ustar danieldaniel00000000000000#include #include #include #define INCL_APPS_EXE_EXTERN_COMMENTS_EXCLUSIVE #define INCL_BASE_ACESTRUC #define INCL_BASE_ARCBLK #define INCL_BASE_COMMENTS #define INCL_BASE_STATE #define INCL_BASE_ACE_CPR_BASE_COMMENTS #define INCL_BASE_ACE_OUTPUT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------BASE_COMMENTS_EXTERN_ReadCommentEnd-------------------*/ void BASE_COMMENTS_EXTERN_ReadCommentEnd(void) { } /*-----------------APPS_EXE_EXTERN_COMMENTS_StdOutput--------------------*/ void APPS_EXE_EXTERN_COMMENTS_StdOutput(void) { APPS_EXE_OUTPUT_DeleteRight(); APPS_EXE_OUTPUT_Write( BASE_ARCBLK.Header.Basic.HEAD_TYPE == BASE_ACESTRUC_BLOCK_FILE ? STR.File_comment : STR.Main_comment); printf("\n%s", BASE_COMMENTS.Comment); if (strchr(BASE_COMMENTS.Comment, 27)) { printf(""); } APPS_EXE_OUTPUT_KeyWait(); } unace-2.5/source/apps/exe/extern/comments/comments.h0000644000175000017500000000023707157426362023357 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_EXTERN_COMMENTS_H_INCLUDED #define _APPS_EXE_EXTERN_COMMENTS_H_INCLUDED void APPS_EXE_EXTERN_COMMENTS_StdOutput(void); #endif unace-2.5/source/apps/exe/extern/msgout/0000755000175000017500000000000007752377756021065 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/msgout/msgout.c0000644000175000017500000000227107256376444022541 0ustar danieldaniel00000000000000#include #define INCL_BASE_DIRDATA #define INCL_BASE_MSGOUT #define INCL_BASE_STATE #define INCL_APPS_MESSAGES #define INCL_APPS_OUTPUT #define INCL_APPS_EXE_MESSAGES #include "apps/exe/includes.h" /*-----------------BASE_MSGOUT_EXTERN_ListCreate-------------------------*/ void BASE_MSGOUT_EXTERN_ListAddingFile(PCHAR FileName) { } /*-----------------BASE_MSGOUT_EXTERN_Analyzing--------------------------*/ void BASE_MSGOUT_EXTERN_Analyzing(PCHAR FileName) { BASE_STATE_EXTERN_OutputProcess(STR.__analyzing, FileName, 0); } /*-----------------BASE_MSGOUT_EXTERN_ExtractingOrTesting----------------*/ void BASE_MSGOUT_EXTERN_ExtractingOrTesting(BOOL IsExtracting) { BASE_STATE_EXTERN_OutputProcess(IsExtracting ? STR.extracting : STR.testing, BASE_STATE.CurrentFileName, 0); } /*-----------------BASE_MSGOUT_EXTERN_TestBegin--------------------------*/ void BASE_MSGOUT_EXTERN_TestBegin(PCHAR ArchiveName) { CHAR OutputStr[80]; sprintf(OutputStr, "%s%s %s", STR.testing, BASE_DIRDATA_Dir1.IsLocked ? STR.__LOCKED_ : "", STR.archive); BASE_STATE_EXTERN_OutputProcess(OutputStr, ArchiveName, 1); } unace-2.5/source/apps/exe/extern/volume/0000755000175000017500000000000007752377756021056 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/extern/volume/volume.c0000644000175000017500000000440607157426362022520 0ustar danieldaniel00000000000000#include #define INCL_APPS_EXE_EXTERN_VOLUME_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_CONVERT #define INCL_BASE_DOSFUNCS #define INCL_BASE_DIRDATA #define INCL_BASE_ERROR #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #define INCL_BASE_VOLUME #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPTERR #define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------BASE_VOLUME_EXTERN_ChangeVolumeToProcess--------------*/ INT BASE_VOLUME_EXTERN_ChangeVolumeToProcess(PCHAR VolumeName) { BOOL DoAgain; INT Input; tLFN VolumeDirectory, ShortStr; BASE_STATE_EXTERN_OutputProcess(STR.looking_for, VolumeName, 1); do { DoAgain=0; if (!BASE_DOSFUNCS_FileExists(VolumeName) || !BASE_VOLUME.DoProcessAllVolumes) { do { APPS_EXE_OUTPUT_Beep(); Input = APPS_EXE_INPUT_EXTERN_WarningYANC(STR.Copy, STR.Ready_to_process, APPS_EXE_CONVERT_MakeStrShorter(ShortStr, VolumeName, 26)); if (Input == 2) { BASE_PATHFUNC_SplitFileName(VolumeDirectory, VolumeName, VolumeName); APPS_EXE_INPUT_EXTERN_Input(VolumeDirectory, 70, STR.New_Path, STR.Enter_new_source_path, 0); BASE_CONVERT_StrCatBefore(BASE_PATHFUNC_AddSlashToEnd(VolumeDirectory), VolumeName); } BASE_VOLUME.DoProcessAllVolumes = (Input == 1); if (Input == 3) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; return 0; } } while (!BASE_DOSFUNCS_FileExists(VolumeName)); } if (!BASE_ARCBLK_OpenArchive(VolumeName, 0, 0, 1, 0)) { APPS_EXE_OUTPTERR_OutputError(STR.Error_while_reading_archive, STR.File_not_found_or_archive_broken_); if (APPS_EXE_INPUT.LastKey != 27) { DoAgain = 1; } BASE_ERROR.ErrorCode = BASE_ERROR_USER; } } while (DoAgain); BASE_STATE_EXTERN_OutputProcess(STR.processing, VolumeName, 1); if (!BASE_ERROR.ErrorCode) { } return !BASE_ERROR.ErrorCode; } unace-2.5/source/apps/exe/extern/volume/volume.h0000644000175000017500000000025207157426362022520 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_EXTERN_VOLUME_H_INCLUDED #define _APPS_EXE_EXTERN_VOLUME_H_INCLUDED void APPS_EXE_EXTERN_VOLUME_HandleVolumeChange(PCHAR VolumeName); #endif unace-2.5/source/apps/exe/outpterr/0000755000175000017500000000000007752377756020126 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/outpterr/outpterr.c0000644000175000017500000000103107157426362022134 0ustar danieldaniel00000000000000#include #define INCL_APPS_EXE_OUTPTERR_EXCLUSIVE #define INCL_BASE_ERROR #include "base/all/includes.h" #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------APPS_EXE_OUTPTERR_OutputError-------------------------*/ void APPS_EXE_OUTPTERR_OutputError(PCHAR TextStr1, PCHAR TextStr2) { APPS_EXE_OUTPUT_EXTERN_Warning( STR.Error ? STR.Error : "Error", TextStr1, TextStr2); BASE_ERROR.HardwareError = errno = 0; } unace-2.5/source/apps/exe/outpterr/outpterr.h0000644000175000017500000000024607157426362022150 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_OUTPTERR_H_INCLUDED #define _APPS_EXE_OUTPTERR_H_INCLUDED void APPS_EXE_OUTPTERR_OutputError(PCHAR TextStr1, PCHAR TextStr2); #endif unace-2.5/source/apps/exe/output/0000755000175000017500000000000007752377756017602 5ustar danieldaniel00000000000000unace-2.5/source/apps/exe/output/lin.c0000644000175000017500000000057107170136576020516 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_OUTPUT #include "apps/exe/includes.h" /*-----------------APPS_EXE_OUTPUT_Beep----------------------------------*/ void APPS_EXE_OUTPUT_Beep(void) { printf("\x7"); } /*-----------------APPS_EXE_OUTPUT_GetScreenSize-------------------------*/ void APPS_EXE_OUTPUT_GetScreenSize(void) { APPS_EXE_OUTPUT.ScreenHeight = 80; } unace-2.5/source/apps/exe/output/output.c0000644000175000017500000001020407761472754021275 0ustar danieldaniel00000000000000#include #include #define INCL_APPS_EXE_OUTPUT_EXCLUSIVE #define INCL_BASE_ERROR #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #include "apps/exe/includes.h" /*-----------------APPS_EXE_OUTPUT_WriteRight----------------------------*/ void APPS_EXE_OUTPUT_WriteRight(PCHAR Text) { if (APPS_EXE_OUTPUT.IsNotRedirected) { printf("\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8"); } printf("%s", Text); #ifndef __sun__ fflush(stdout); #endif } /*-----------------APPS_EXE_OUTPUT_DeleteRight---------------------------*/ void APPS_EXE_OUTPUT_DeleteRight(void) { if (APPS_EXE_OUTPUT.IsNotRedirected && APPS_EXE_OUTPUT.DoStdDeleteRight) { APPS_EXE_OUTPUT_WriteRight(" "); } } /*-----------------APPS_EXE_OUTPUT_Error---------------------------------*/ void APPS_EXE_OUTPUT_Error(PCHAR Error) { if (APPS_EXE_OUTPUT.DoUseStdOutput) { APPS_EXE_OUTPUT_DeleteRight(); APPS_EXE_OUTPUT.DoStdDeleteRight = 0; fprintf(APPS_EXE_OUTPUT.StdErr, "\n%s", Error); } fprintf(APPS_EXE_OUTPUT.StdErr, "\n%s", Error); fprintf(APPS_EXE_OUTPUT.StdOut, "\n%s", Error); #ifndef __sun__ fflush(stderr); #endif fflush(APPS_EXE_OUTPUT.StdErr); fflush(APPS_EXE_OUTPUT.StdOut); } /*-----------------APPS_EXE_OUTPUT_Write---------------------------------*/ void APPS_EXE_OUTPUT_Write(PCHAR Text) { CHAR OutputStr[200]; INT LineLen; if ((LineLen = APPS_EXE_OUTPUT.IsNotRedirected ? 74 : 59) > strlen(Text)) { memset(OutputStr, ' ', sizeof(OutputStr)); OutputStr[LineLen] = 0; memcpy(OutputStr, Text, strlen(Text)); } else { strcpy(OutputStr, Text); } fprintf(APPS_EXE_OUTPUT.StdOut, "\n%s", OutputStr); if (!APPS_EXE_OUTPUT.DoNotStdLineFeed) { printf("\n"); } APPS_EXE_OUTPUT.DoNotStdLineFeed = 0; printf("%s", OutputStr); fflush(APPS_EXE_OUTPUT.StdOut); #ifndef __sun__ fflush(stdout); #endif APPS_EXE_OUTPUT.StdOutLineCount++; } /*-----------------APPS_EXE_OUTPUT_WriteWait-----------------------------*/ void APPS_EXE_OUTPUT_WriteWait(PCHAR Text) { APPS_EXE_OUTPUT_Write(Text); APPS_EXE_OUTPUT_FullScreenKeyWait(); } /*-----------------APPS_EXE_OUTPUT_KeyWait-------------------------------*/ void APPS_EXE_OUTPUT_KeyWait(void) { CHAR DeleteStr[223]; if (!APPS_EXE_OUTPUT.DoNotStdWait) { APPS_EXE_OUTPUT_Write(STR.__Press_any_key_to_continue__); while (!APPS_EXE_INPUT_KeyHit() && !BASE_ERROR.ErrorCode) { } BASE_ERROR_EXTERN_HandleCancel(1); memset(DeleteStr, 8, 222); memset(&DeleteStr[74], ' ', 74); DeleteStr[222] = 0; printf(DeleteStr); #ifndef __sun__ fflush(stdout); #endif APPS_EXE_OUTPUT.DoNotStdLineFeed = 1; } } /*-----------------APPS_EXE_OUTPUT_FullScreenKeyWait---------------------*/ void APPS_EXE_OUTPUT_FullScreenKeyWait(void) { if (APPS_EXE_OUTPUT.StdOutLineCount >= APPS_EXE_OUTPUT.ScreenHeight - 1) { APPS_EXE_OUTPUT_KeyWait(); APPS_EXE_OUTPUT.StdOutLineCount = 0; } } /*-----------------APPS_EXE_OUTPUT_InfoOrWarningProc---------------------*/ void APPS_EXE_OUTPUT_InfoOrWarningProc(PCHAR TopStr, PCHAR TextStr1, PCHAR TextStr2, BOOL IsWarning, PCHAR ShortStr1, PCHAR ShortStr2, PINT Width) { CHAR ErrorStr[160]; INT TextLen1, TextLen2; TextLen1 = strlen(TextStr1); TextLen2 = strlen(TextStr2); *Width = (TextLen1 > TextLen2 ? TextLen1 : TextLen2) + 14; if (*Width > 74) { *Width = 74; } APPS_EXE_CONVERT_MakeStrShorter(ShortStr2, TextStr2, *Width - 6); APPS_EXE_CONVERT_MakeStrShorter(ShortStr1, TextStr1, *Width - 6); if (IsWarning) { sprintf(ErrorStr, "%s: %s", TopStr, ShortStr1); APPS_EXE_OUTPUT_Error(ErrorStr); sprintf(ErrorStr, " %s", ShortStr2); APPS_EXE_OUTPUT_Error(ErrorStr); } } /*-----------------APPS_EXE_OUTPUT_MessageProc---------------------------*/ void APPS_EXE_OUTPUT_MessageProc(PCHAR TopStr, PCHAR MessageText) { CHAR WindowTopStr[80]; APPS_EXE_OUTPUT_DeleteRight(); sprintf(WindowTopStr, "%s: %s", TopStr, MessageText); APPS_EXE_OUTPUT_Write(WindowTopStr); } unace-2.5/source/apps/exe/output/output.h0000644000175000017500000000276107157426362021304 0ustar danieldaniel00000000000000#ifndef _APPS_EXE_OUTPUT_H_INCLUDED #define _APPS_EXE_OUTPUT_H_INCLUDED #include #ifdef INCL_APPS_EXE_OUTPUT_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { BOOL IsNotRedirected, DoNotStdLineFeed, DoStdDeleteRight, DoUseStdOutput, DoNotStdWait; INT ScreenHeight, StdOutLineCount; FILE *StdOut, *StdErr; } tAPPS_EXE_OUTPUT; DECLEXT tAPPS_EXE_OUTPUT APPS_EXE_OUTPUT; void APPS_EXE_OUTPUT_GetScreenSize(void); void APPS_EXE_OUTPUT_WriteRight(PCHAR Text); void APPS_EXE_OUTPUT_DeleteRight(void); void APPS_EXE_OUTPUT_Error(PCHAR Error); void APPS_EXE_OUTPUT_Write(PCHAR Text); void APPS_EXE_OUTPUT_WriteWait(PCHAR Text); void APPS_EXE_OUTPUT_KeyWait(void); void APPS_EXE_OUTPUT_FullScreenKeyWait(void); void APPS_EXE_OUTPUT_InfoOrWarningProc( PCHAR TopStr, PCHAR TextStr1, PCHAR TextStr2, BOOL IsWarning, PCHAR ShortStr1, PCHAR ShortStr2, PINT Width); void APPS_EXE_OUTPUT_MessageProc(PCHAR TopStr, PCHAR MessageText); void APPS_EXE_OUTPUT_Beep(void); void APPS_EXE_OUTPUT_EXTERN_Warning(PCHAR TopStr, PCHAR TextStr1, PCHAR TextStr2); void APPS_EXE_OUTPUT_EXTERN_Message(INT Width, PCHAR TopStr, PCHAR MessageText); #undef DECLEXT #endif unace-2.5/source/apps/exe/includes.h0000644000175000017500000000556407704243146020211 0ustar danieldaniel00000000000000#ifndef _APPS_INCLUDES_H_INCLUDED #define _APPS_INCLUDES_H_INCLUDED #include "base/all/includes.h" ////////////////////////////////////////////////////////////////////////////// #if defined(INCL_APPS_EXE) || defined(INCL_APPS_EXE_EXCLUSIVE) #include "apps/exe/exe.h" #endif #if defined(INCL_APPS_EXE_COMMLINE) || defined(INCL_APPS_EXE_COMMLINE_EXCLUSIVE) #include "apps/exe/commline/commline.h" #endif #if defined(INCL_APPS_EXE_EXTERN_ARCBLK) || defined(INCL_APPS_EXE_EXTERN_ARCBLK_EXCLUSIVE) #include "apps/exe/extern/arcblk/arcblk.h" #endif #if defined(INCL_APPS_EXE_EXTERN_COMMENTS) || defined(INCL_APPS_EXE_EXTERN_COMMENTS_EXCLUSIVE) #include "apps/exe/extern/comments/comments.h" #endif #if defined(INCL_APPS_EXE_EXTERN_ERROR) || defined(INCL_APPS_EXE_EXTERN_ERROR_EXCLUSIVE) #include "apps/exe/extern/error/error.h" #endif #if defined(INCL_APPS_EXE_EXTERN_STATE) || defined(INCL_APPS_EXE_EXTERN_STATE_EXCLUSIVE) #include "apps/exe/extern/state/state.h" #endif #if defined(INCL_APPS_EXE_EXTERN_VOLUME) || defined(INCL_APPS_EXE_EXTERN_VOLUME_EXCLUSIVE) #include "apps/exe/extern/volume/volume.h" #endif #if defined(INCL_APPS_EXE_ACEFUNCS) || defined(INCL_APPS_EXE_ACEFUNCS_EXCLUSIVE) #include "apps/exe/acefuncs/acefuncs.h" #endif #if defined(INCL_APPS_EXE_CONVERT) || defined(INCL_APPS_EXE_CONVERT_EXCLUSIVE) #include "apps/exe/convert/convert.h" #endif #if defined(INCL_APPS_EXE_INPUT) || defined(INCL_APPS_EXE_INPUT_EXCLUSIVE) #include "apps/exe/input/input.h" #endif #if defined(INCL_APPS_EXE_INPUT_LINUX) || defined(INCL_APPS_EXE_INPUT_LINUX_EXCLUSIVE) #include "apps/exe/input/lin.h" #endif #if defined(INCL_APPS_EXE_INPUT_NT) || defined(INCL_APPS_EXE_INPUT_NT_EXCLUSIVE) #include "apps/exe/input/nt.h" #endif #if defined(INCL_APPS_EXE_MESSAGES) || defined(INCL_APPS_EXE_MESSAGES_EXCLUSIVE) #include "apps/exe/messages/messages.h" #endif #if defined(INCL_APPS_EXE_OUTPTERR) || defined(INCL_APPS_EXE_OUTPTERR_EXCLUSIVE) #include "apps/exe/outpterr/outpterr.h" #endif #if defined(INCL_APPS_EXE_OUTPUT) || defined(INCL_APPS_EXE_OUTPUT_EXCLUSIVE) #include "apps/exe/output/output.h" #endif #if defined(INCL_APPS_EXE_OUTPUT_DOS32) || defined(INCL_APPS_EXE_OUTPUT_DOS32_EXCLUSIVE) #include "apps/exe/output/dos32.h" #endif #if defined(INCL_APPS_EXE_OUTPUT_NT) || defined(INCL_APPS_EXE_OUTPUT_NT_EXCLUSIVE) #include "apps/exe/output/nt.h" #endif #if defined(INCL_APPS_EXE_STATE) || defined(INCL_APPS_EXE_STATE_EXCLUSIVE) #include "apps/exe/state/state.h" #endif #endif unace-2.5/source/apps/unace/0000755000175000017500000000000007752377756016554 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/all/0000755000175000017500000000000007752377756017324 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/all/extern/0000755000175000017500000000000007752377756020631 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/all/extern/funcs/0000755000175000017500000000000007752377756021747 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/all/extern/funcs/funcs.c0000644000175000017500000000042507157426366023221 0ustar danieldaniel00000000000000#define INCL_BASE_DIRDATA #define INCL_BASE_EXTRACT #define INCL_BASE_FUNCS #include "base/all/includes.h" /*-----------------BASE_FUNCS_EXTERN_DoCopy------------------------------*/ void BASE_FUNCS_EXTERN_DoCopy(INT Mode) { BASE_EXTRACT_Extract(1, 1); } unace-2.5/source/apps/unace/all/extern/arctest/0000755000175000017500000000000007752377756022276 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/all/extern/arctest/arctest.c0000644000175000017500000000121607157426366024076 0ustar danieldaniel00000000000000#define INCL_BASE_ARCHIVES_TEST #define INCL_BASE_DIRDATA #include "base/all/includes.h" /*-----------------BASE_ARCHIVES_TEST_EXTERN_ArchiveTestBreak------------*/ BOOL BASE_ARCHIVES_TEST_EXTERN_ArchiveTestBreak(BOOL IgnoreKeys, INT Sectors) { return 1; } /*-----------------BASE_ARCHIVES_TEST_EXTERN_ArchiveTestOtherFormats-----*/ void BASE_ARCHIVES_TEST_EXTERN_ArchiveTestOtherFormats(PINT IsArchive, INT FilePos, pBASE_DIRDATA_DirData TempDir) { } unace-2.5/source/apps/unace/exe/0000755000175000017500000000000007752377756017335 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/exe.c0000644000175000017500000000511107335775620020245 0ustar danieldaniel00000000000000#include #define INCL_APPS_UNACE_EXE_EXCLUSIVE #define INCL_BASE_ARCHIVES_TEST #define INCL_BASE_BITWIDTH #define INCL_BASE_COMMENTS #define INCL_BASE_CRC #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_MEMORY #define INCL_BASE_OPTIONS #define INCL_BASE_PATHFUNC #define INCL_APPS_EXE_COMMLINE #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #define INCL_APPS_UNACE_EXE_COMMLINE #define INCL_APPS_UNACE_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_UNACE_EXE_ProgramInit----------------------------*/ void APPS_UNACE_EXE_ProgramInit(INT ArgumentsNumber, PCHAR Arguments[]) { //_________________handle memory BASE_MEMORY_InitMaxAllocate(); BASE_DOSFUNCS_Initialize(); BASE_LFN_CompleteArg0(&Arguments[0]); //_________________handle arguments, paths APPS_UNACE_EXE_COMMLINE_InitArguments(ArgumentsNumber, Arguments); BASE_LFN_GetCurrentDir(APPS_EXE_COMMLINE.StartDir, BASE_LFN_MAXLEN - 1); //_________________init output APPS_EXE_MESSAGES_InitMessages(); APPS_EXE_OUTPUT.StdOut = fopen(BASE_DOSFUNCS_NULLDEVICE, "w"); APPS_EXE_OUTPUT.StdErr = fopen(BASE_DOSFUNCS_NULLDEVICE, "w"); BASE_CRC_MakeCRCTable(); BASE_BITWIDTH_Init(); APPS_UNACE_EXE_InitOSSpecific(&APPS_EXE_COMMLINE.Arguments[0]); BASE_ERROR_EXTERN_Init(); //_________________get environment strings if (!(APPS_EXE_COMMLINE.EnvironmentSwitches = getenv("UNACE"))) { APPS_EXE_COMMLINE.EnvironmentSwitches = ""; } //_________________care about setup BASE_ERROR.DoNotHandleCancel = 0; BASE_OPTIONS.ExtractOptions.DoShowComments = 1; //_________________initialize different variables BASE_ARCHIVES_TEST.MaxTestSectors = 1024; } /*-----------------APPS_UNACE_EXE_ProgramDone----------------------------*/ void APPS_UNACE_EXE_ProgramDone(void) { BASE_DOSFUNCS_SetDir(APPS_EXE_COMMLINE.StartDir); APPS_UNACE_EXE_DoneOSSpecific(); } /*-----------------main--------------------------------------------------*/ INT main(INT ArgumentsNumber, PCHAR Arguments[]) { APPS_UNACE_EXE_ProgramInit(ArgumentsNumber, Arguments); APPS_UNACE_EXE_COMMLINE_Init(); APPS_UNACE_EXE_COMMLINE_MainProc(); APPS_UNACE_EXE_COMMLINE_Done(); APPS_UNACE_EXE_ProgramDone(); if (BASE_ERROR.ErrorCode == BASE_ERROR_USER) { APPS_EXE_OUTPUT_Error(STR.User_break); } return BASE_ERROR.ErrorCode ? BASE_ERROR.ErrorCode : (APPS_EXE_COMMLINE.Error ? BASE_ERROR_USER : BASE_ERROR.DidFailCRCCheck); } unace-2.5/source/apps/unace/exe/exe.h0000644000175000017500000000123107704243162020240 0ustar danieldaniel00000000000000#ifndef _APPS_UNACE_EXE_H_INCLUDED #define _APPS_UNACE_EXE_H_INCLUDED #include #include "base/all/lfn/lfn.h" #ifdef INCL_APPS_UNACE_EXE_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif typedef struct { tLFN LogFile; } tAPPS_UNACE_EXE; DECLEXT tAPPS_UNACE_EXE APPS_UNACE_EXE; INT main(INT ArgumentsNumber, PCHAR Arguments[]); void APPS_UNACE_EXE_ProgramInit(INT ArgumentsNumber, PCHAR Arguments[]); void APPS_UNACE_EXE_ProgramDone(void); void APPS_UNACE_EXE_InitOSSpecific(PCHAR *ProgramName); void APPS_UNACE_EXE_DoneOSSpecific(void); #undef DECLEXT #endif unace-2.5/source/apps/unace/exe/lin.c0000644000175000017500000000133107227344064020240 0ustar danieldaniel00000000000000#include #define INCL_APPS_EXE_INPUT_LINUX #define INCL_APPS_EXE_OUTPUT #define INCL_APPS_UNACE_EXE #define INCL_APPS_UNACE_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_UNACE_EXE_InitOSSpecific-------------------------*/ void APPS_UNACE_EXE_InitOSSpecific(PCHAR *ProgramPath) { APPS_EXE_OUTPUT.IsNotRedirected = isatty(fileno(stdout)); APPS_EXE_OUTPUT.DoNotStdWait = !APPS_EXE_OUTPUT.IsNotRedirected; APPS_EXE_OUTPUT.ScreenHeight = 80; APPS_EXE_INPUT_LINUX_SetRawMode(); } /*-----------------APPS_UNACE_EXE_DoneOSSpecific-------------------------*/ void APPS_UNACE_EXE_DoneOSSpecific(void) { APPS_EXE_INPUT_LINUX_UnSetRawMode(); } unace-2.5/source/apps/unace/exe/commline/0000755000175000017500000000000007752377756021140 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/commline/help/0000755000175000017500000000000007752377756022070 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/commline/help/help.h0000644000175000017500000000046607157426366023166 0ustar danieldaniel00000000000000#ifndef _APPS_UNACE_EXE_COMMLINE_HELP_H_INCLUDED #define _APPS_UNACE_EXE_COMMLINE_HELP_H_INCLUDED #define APPS_UNACE_EXE_COMMLINE_HELP_COPYRIGHTLINES 2 void APPS_UNACE_EXE_COMMLINE_HELP_PrintHelp(BOOL DoPrintCopyRight); void APPS_UNACE_EXE_COMMLINE_HELP_CreateFirstHelpLine(void); #endif unace-2.5/source/apps/unace/exe/commline/help/help.c0000644000175000017500000000143507752415750023152 0ustar danieldaniel00000000000000#include #include #define INCL_APPS_UNACE_EXE_COMMLINE_HELP_EXCLUSIVE #define INCL_BASE_ERROR #define INCL_BASE_ACE_AV #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_UNACE_EXE_COMMLINE_HELP_PrintCommandLineHelp-----*/ void APPS_UNACE_EXE_COMMLINE_HELP_PrintHelp(BOOL DoPrintCopyRight) { INT I; for (I = (DoPrintCopyRight ? 0 : APPS_UNACE_EXE_COMMLINE_HELP_COPYRIGHTLINES); (I < (DoPrintCopyRight ? APPS_UNACE_EXE_COMMLINE_HELP_COPYRIGHTLINES : APPS_EXE_MESSAGES_COMMLINEHELPLINES)) && !BASE_ERROR_EXTERN_HandleCancel(1); I++) { APPS_EXE_OUTPUT_Write(STR.CommlineHelp[I]); APPS_EXE_OUTPUT_FullScreenKeyWait(); } } unace-2.5/source/apps/unace/exe/commline/commline.h0000644000175000017500000000650707704243156023103 0ustar danieldaniel00000000000000#ifndef _APPS_UNACE_EXE_COMMLINE_H_INCLUDED #define _APPS_UNACE_EXE_COMMLINE_H_INCLUDED #include "base/all/lfn/lfn.h" #ifdef INCL_APPS_UNACE_EXE_COMMLINE_EXCLUSIVE #define DECLEXT #else #define DECLEXT extern #endif #define APPS_UNACE_EXE_COMMLINE_COMMANDSNUMBER 5 #define APPS_UNACE_EXE_COMMLINE_COMMAND_E 0 #define APPS_UNACE_EXE_COMMLINE_COMMAND_L 1 #define APPS_UNACE_EXE_COMMLINE_COMMAND_T 2 #define APPS_UNACE_EXE_COMMLINE_COMMAND_V 3 #define APPS_UNACE_EXE_COMMLINE_COMMAND_X 4 #define APPS_UNACE_EXE_COMMLINE_SWITCHESNUMBER 9 #define APPS_UNACE_EXE_COMMLINE_SWITCH_C 0 #define APPS_UNACE_EXE_COMMLINE_SWITCH_ERR 1 #define APPS_UNACE_EXE_COMMLINE_SWITCH_F 2 #define APPS_UNACE_EXE_COMMLINE_SWITCH_O 3 #define APPS_UNACE_EXE_COMMLINE_SWITCH_OUT 4 #define APPS_UNACE_EXE_COMMLINE_SWITCH_P 5 #define APPS_UNACE_EXE_COMMLINE_SWITCH_X 6 #define APPS_UNACE_EXE_COMMLINE_SWITCH_Y 7 #define APPS_UNACE_EXE_COMMLINE_SWITCH_UNKNOWN 8 typedef struct { tLFN WildcardedArchiveName; BOOL IsSFX, IsSFXNoCommand; } tAPPS_UNACE_EXE_COMMLINE; DECLEXT PCHAR const APPS_UNACE_EXE_COMMLINE_EXTRACTCOMMANDS #ifdef INCL_APPS_UNACE_EXE_COMMLINE_EXCLUSIVE = "\x04\x00" #endif ; DECLEXT PCHAR const APPS_UNACE_EXE_COMMLINE_COMMANDSTRINGS [APPS_UNACE_EXE_COMMLINE_COMMANDSNUMBER + 1] #ifdef INCL_APPS_UNACE_EXE_COMMLINE_EXCLUSIVE = {"E", "L", // 0, 1 "T", "V", // 2, 3 "X", ""} // 4, 5 #endif ; DECLEXT PCHAR const APPS_UNACE_EXE_COMMLINE_SWITCHESSTRINGS [APPS_UNACE_EXE_COMMLINE_SWITCHESNUMBER + 1] #ifdef INCL_APPS_UNACE_EXE_COMMLINE_EXCLUSIVE = {"C*", "ERR*", // 0, 1 "F*", "O*", // 2, 3 "OUT*", "P*", // 4, 5 "X*", "Y*", // 6, 7 ""} // 8 #endif ; DECLEXT tAPPS_UNACE_EXE_COMMLINE APPS_UNACE_EXE_COMMLINE; void APPS_UNACE_EXE_COMMLINE_Init(void); void APPS_UNACE_EXE_COMMLINE_Done(void); void APPS_UNACE_EXE_COMMLINE_SignalHandler(INT SignalNumber); void APPS_UNACE_EXE_COMMLINE_ProcessingInit(void); INT APPS_UNACE_EXE_COMMLINE_FileListAddFileName(PCHAR FileName, PCHAR *ListEnd, PCHAR ListMax); void APPS_UNACE_EXE_COMMLINE_FileListAddFiles(PCHAR Files, PCHAR *ListEnd, PCHAR ListMax); void APPS_UNACE_EXE_COMMLINE_GetFileListInit(void); void APPS_UNACE_EXE_COMMLINE_GetFileListDone(void); BOOL APPS_UNACE_EXE_COMMLINE_GetFileList(void); BOOL APPS_UNACE_EXE_COMMLINE_GetCommand(void); void APPS_UNACE_EXE_COMMLINE_ToggleSwitch(PCHAR SwitchChar, PINT Variable); BOOL APPS_UNACE_EXE_COMMLINE_GetSwitches(void); BOOL APPS_UNACE_EXE_COMMLINE_GetArchiveName(void); void APPS_UNACE_EXE_COMMLINE_PrepareCommandExecution(void); void APPS_UNACE_EXE_COMMLINE_InitArguments( INT ArgumentsNumber, PCHAR Arguments[]); void APPS_UNACE_EXE_COMMLINE_AddEnvironmentSwitches(void); BOOL APPS_UNACE_EXE_COMMLINE_DoShowHelp(void); void APPS_UNACE_EXE_COMMLINE_MainProc(void); #undef DECLEXT #endif unace-2.5/source/apps/unace/exe/commline/commline.c0000644000175000017500000006214307763216476023106 0ustar danieldaniel00000000000000#include #include #include #include #define INCL_APPS_UNACE_EXE_COMMLINE_EXCLUSIVE #define INCL_BASE_ARCBLK #define INCL_BASE_ARCHIVES_TEST #define INCL_BASE_BITWIDTH #define INCL_BASE_COMMENTS #define INCL_BASE_CONVERT #define INCL_BASE_CRC #define INCL_BASE_CRYPT #define INCL_BASE_DCPR #define INCL_BASE_DOSFUNCS #define INCL_BASE_ERROR #define INCL_BASE_ERROROUT #define INCL_BASE_EXTRACT #define INCL_BASE_FILELIST #define INCL_BASE_FUNCS #define INCL_BASE_MEMORY #define INCL_BASE_PATHFUNC #define INCL_BASE_STATE #define INCL_BASE_VERSION #define INCL_BASE_VOLUME #define INCL_APPS_EXE_ACEFUNCS #define INCL_APPS_EXE_COMMLINE #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #define INCL_APPS_EXE_OUTPTERR #define INCL_APPS_UNACE_EXE_COMMLINE_HELP #include "apps/unace/exe/includes.h" /*-----------------APPS_UNACE_EXE_COMMLINE_Init--------------------------*/ void APPS_UNACE_EXE_COMMLINE_Init(void) { APPS_EXE_COMMLINE.TimeOutLimit = 600; BASE_FILELIST.SearchExcludeListEnd = BASE_FILELIST.SearchExcludeList = (PCHAR) BASE_MEMORY_GetMemBase2((PINT) &BASE_FILELIST.SearchExcludeListMax, 1); BASE_FILELIST.SearchExcludeListMax += (INT) BASE_FILELIST.SearchExcludeList; APPS_EXE_OUTPUT.DoUseStdOutput = 1; APPS_UNACE_EXE_COMMLINE.IsSFX = BASE_ARCHIVES_TEST_ArchiveTest(APPS_EXE_COMMLINE.Arguments[0], BASE_ARCHIVES_TEST.MaxTestSectors, 1); if (APPS_UNACE_EXE_COMMLINE.IsSFX) { sprintf(APPS_EXE_MESSAGES.FirstCommandLineHelpLine, "ACE-SFX v" BASE_VERSION_VERSIONSTR " %-42s" __DATE__ " " __TIME__, STR.Copyright_by_ACE_Compression_Software); STR.CommlineHelp[3] = STR.SFXUsage; } APPS_UNACE_EXE_COMMLINE_HELP_PrintHelp(1); } /*-----------------APPS_UNACE_EXE_COMMLINE_Done--------------------------*/ void APPS_UNACE_EXE_COMMLINE_Done(void) { PCHAR ActionStr; CHAR OutputStr[160], SizeStr1[15], SizeStr2[15]; if (BASE_STATE.SummaryFileCount) { switch (APPS_EXE_COMMLINE.Command) { case APPS_UNACE_EXE_COMMLINE_COMMAND_L: case APPS_UNACE_EXE_COMMLINE_COMMAND_V: { ActionStr = STR.listed; break; } case APPS_UNACE_EXE_COMMLINE_COMMAND_T: { ActionStr = STR.tested; break; } default: { ActionStr = STR.extracted; } } sprintf(OutputStr, STR._s__d_files__totaling__s_bytes__compressed__s_, ActionStr, BASE_STATE.SummaryFileCount, APPS_EXE_CONVERT_ToByteUnitStr(SizeStr1, BASE_STATE.SummaryUnComprBytes), APPS_EXE_CONVERT_ToByteUnitStr(SizeStr2, BASE_STATE.SummaryComprBytes)); APPS_EXE_OUTPUT_Write(OutputStr); if (BASE_STATE.SumErrors) { sprintf(OutputStr, STR.Got_CRC_check_errors_on__d__s_, BASE_STATE.SumErrors, BASE_STATE.SumErrors == 1 ? STR.file : STR.files); APPS_EXE_OUTPUT_Write(OutputStr); } } #ifdef __unix__ printf("\n"); #endif } /*-----------------APPS_UNACE_EXE_COMMLINE_SignalHandler-----------------*/ void APPS_UNACE_EXE_COMMLINE_SignalHandler(INT SignalNumber) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; APPS_EXE_COMMLINE.IsHitCTRL = 1; } /*-----------------APPS_UNACE_EXE_COMMLINE_ProcessingInit----------------*/ void APPS_UNACE_EXE_COMMLINE_ProcessingInit(void) { #ifdef SIGBREAK signal(SIGBREAK, APPS_UNACE_EXE_COMMLINE_SignalHandler); #endif signal(SIGINT, APPS_UNACE_EXE_COMMLINE_SignalHandler); } /*-----------------APPS_UNACE_EXE_COMMLINE_FileListAddFileName-----------*/ INT APPS_UNACE_EXE_COMMLINE_FileListAddFileName(PCHAR FileName, PCHAR *ListEnd, PCHAR ListMax) { INT StrLen; StrLen = strlen(FileName) + 1; if (*ListEnd + StrLen > ListMax) { BASE_ERROROUT_EXTERN_ManyFilesError(); return 0; } else { BASE_CONVERT_StrUpr(FileName); memcpy(*ListEnd, FileName, StrLen); *ListEnd += StrLen; return 1; } } /*-----------------APPS_UNACE_EXE_COMMLINE_FileListAddFiles--------------*/ void APPS_UNACE_EXE_COMMLINE_FileListAddFiles(PCHAR Files, PCHAR *ListEnd, PCHAR ListMax) { tBASE_LFN_DBL FileList; PCHAR FileNameEnd; INT Handle, Pos, Len, Read; BASE_PATHFUNC_ToSystemPathSeparator(Files); if (*Files == '@') { Files++; if ((Handle = BASE_LFN_Open(Files, O_BINARY | O_RDONLY, S_IRWXU | S_IRWXG | S_IRWXO)) == -1) { printf("\n%s: %s\n", STR.List_file_does_not_exist, Files); APPS_EXE_COMMLINE.Error = 1; return; } Read = Pos = 0; do { if (Read < BASE_LFN_MAXLEN) { BASE_DOSFUNCS_LSeek(Handle, Pos + Read, SEEK_SET); if (!(Read += read(Handle, &FileList[Read], sizeof(FileList) - Read))) { break; } } if (!(FileNameEnd = strpbrk(FileList, ";\x0d\x0a"))) { FileNameEnd = &FileList[Read]; } if (FileNameEnd > &FileList[Read]) { FileNameEnd = &FileList[Read]; } *FileNameEnd = 0; Len = strlen(FileList); if (Len) { // APPS_UNACE_EXE_COMMLINE_FileListAddFileName(FileList, ListEnd, ListMax); APPS_UNACE_EXE_COMMLINE_FileListAddFileName( BASE_CONVERT_ToANSI(FileList), ListEnd, ListMax); } if (Read > Len) { memcpy(FileList, &FileList[Len + 1], Read - Len - 1); Read -= Len + 1; } else { Read = 0; } Pos += Len + 1; } while (!BASE_ERROR.ErrorCode); close(Handle); } else { APPS_UNACE_EXE_COMMLINE_FileListAddFileName(Files, ListEnd, ListMax); } return; } /*-----------------APPS_UNACE_EXE_COMMLINE_GetFileListInit---------------*/ void APPS_UNACE_EXE_COMMLINE_GetFileListInit(void) { BASE_FILELIST.SearchListEnd = BASE_FILELIST.SearchList = (PCHAR) BASE_MEMORY_GetMemBase2((PINT) &BASE_FILELIST.SearchListMax, 1); BASE_FILELIST.SearchListMax += (INT) BASE_FILELIST.SearchListEnd; } /*-----------------APPS_UNACE_EXE_COMMLINE_GetFileListDone---------------*/ void APPS_UNACE_EXE_COMMLINE_GetFileListDone(void) { INT ListSize; if (BASE_FILELIST.SearchListEnd == BASE_FILELIST.SearchList) { strcpy(BASE_FILELIST.SearchList, "*.*"); BASE_FILELIST.SearchListEnd += 4; } ListSize = BASE_FILELIST.SearchListEnd - BASE_FILELIST.SearchList; BASE_FILELIST.SearchList = (PCHAR) BASE_MEMORY_ReAlloc(BASE_FILELIST.SearchList, ListSize); BASE_FILELIST.SearchListEnd = BASE_FILELIST.SearchList + ListSize; ListSize = BASE_FILELIST.SearchExcludeListEnd - BASE_FILELIST.SearchExcludeList; BASE_FILELIST.SearchExcludeList = (PCHAR) BASE_MEMORY_ReAlloc(BASE_FILELIST.SearchExcludeList, ListSize); BASE_FILELIST.SearchExcludeListEnd = BASE_FILELIST.SearchExcludeList + ListSize; } /*-----------------APPS_UNACE_EXE_COMMLINE_GetFileList-------------------*/ BOOL APPS_UNACE_EXE_COMMLINE_GetFileList(void) { PCHAR Files, FilesLastChar; while (APPS_EXE_COMMLINE.ArgumentCount < APPS_EXE_COMMLINE.ArgumentsNumber && APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount][0] != '-') { Files = APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount++]; FilesLastChar = Files + strlen(Files) - 1; if (*FilesLastChar == BASE_PATHFUNC_SEPARATOR) { *FilesLastChar = 0; } if (*FilesLastChar == 0 && Files[0] != '@') { if (*(FilesLastChar - 1) == ':') { *FilesLastChar = BASE_PATHFUNC_SEPARATOR; } APPS_EXE_COMMLINE.TargetDir = Files; } else { APPS_UNACE_EXE_COMMLINE_FileListAddFiles(Files, &BASE_FILELIST.SearchListEnd, BASE_FILELIST.SearchListMax); } } return APPS_EXE_COMMLINE.Error; } /*-----------------APPS_UNACE_EXE_COMMLINE_GetCommand--------------------*/ INT APPS_UNACE_EXE_COMMLINE_GetCommand(void) { INT I; if (APPS_EXE_COMMLINE.ArgumentCount == APPS_EXE_COMMLINE.ArgumentsNumber) { if (APPS_UNACE_EXE_COMMLINE.IsSFX) { APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount] = "x"; APPS_EXE_COMMLINE.ArgumentsNumber++; APPS_UNACE_EXE_COMMLINE.IsSFXNoCommand = 1; } else { printf("\n%s", STR.Missing_command_); APPS_EXE_COMMLINE.Error = 1; return APPS_EXE_COMMLINE.Error; } } for (I = 0; I < APPS_UNACE_EXE_COMMLINE_COMMANDSNUMBER; I++) { if (!BASE_CONVERT_StrICmp(APPS_UNACE_EXE_COMMLINE_COMMANDSTRINGS[I], APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount])) { APPS_EXE_COMMLINE.Command = I; APPS_EXE_COMMLINE.ArgumentCount++; if (APPS_EXE_COMMLINE.Command == APPS_UNACE_EXE_COMMLINE_COMMAND_L || APPS_EXE_COMMLINE.Command == APPS_UNACE_EXE_COMMLINE_COMMAND_V) { APPS_EXE_OUTPUT.DoUseStdOutput = 1; } return APPS_EXE_COMMLINE.Error; } } printf("\n%s: %s\n", STR.Unknown_command, APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount]); APPS_EXE_COMMLINE.Error = 1; return APPS_EXE_COMMLINE.Error; } /*-----------------APPS_UNACE_EXE_COMMLINE_ToggleSwitch------------------*/ void APPS_UNACE_EXE_COMMLINE_ToggleSwitch(PCHAR SwitchChar, PINT Variable) { if (!(*SwitchChar) || *SwitchChar == '+' && *(SwitchChar + 1) == 0) { *Variable = 1; } else { if (*SwitchChar == '-' && *(SwitchChar + 1) == 0) { *Variable = 0; } else { printf("\n%s: %s\n", STR.Switch_error, APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount]); APPS_EXE_COMMLINE.Error = 1; } } } /*-----------------APPS_UNACE_EXE_COMMLINE_GetSwitches-------------------*/ BOOL APPS_UNACE_EXE_COMMLINE_GetSwitches(void) { PCHAR Switch; INT SwitchNumber, StrLen; while (!APPS_EXE_COMMLINE.Error && APPS_EXE_COMMLINE.ArgumentCount < APPS_EXE_COMMLINE.ArgumentsNumber && APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount][0] == '-') { Switch = APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount] + 1; for (SwitchNumber = 0; SwitchNumber < APPS_UNACE_EXE_COMMLINE_SWITCHESNUMBER; SwitchNumber++) { StrLen = strlen(APPS_UNACE_EXE_COMMLINE_SWITCHESSTRINGS[SwitchNumber]); if (SwitchNumber == APPS_UNACE_EXE_COMMLINE_SWITCH_UNKNOWN || !BASE_CONVERT_StrICmp( APPS_UNACE_EXE_COMMLINE_SWITCHESSTRINGS[SwitchNumber], Switch) || (APPS_UNACE_EXE_COMMLINE_SWITCHESSTRINGS[ SwitchNumber][StrLen - 1] == '*' && !BASE_CONVERT_StrNICmp( APPS_UNACE_EXE_COMMLINE_SWITCHESSTRINGS[SwitchNumber], Switch, StrLen - 1))) { switch (SwitchNumber) { case APPS_UNACE_EXE_COMMLINE_SWITCH_C: { APPS_UNACE_EXE_COMMLINE_ToggleSwitch( Switch + 1, &BASE_OPTIONS.ExtractOptions.DoShowComments); break; } case APPS_UNACE_EXE_COMMLINE_SWITCH_F: { APPS_UNACE_EXE_COMMLINE_ToggleSwitch(Switch + 1, &BASE_PATHFUNC.DoWildCardCheckMatchingPath); break; } case APPS_UNACE_EXE_COMMLINE_SWITCH_O: { APPS_UNACE_EXE_COMMLINE_ToggleSwitch( Switch + 1, &BASE_FUNCS.DoOverwriteAll); break; } case APPS_UNACE_EXE_COMMLINE_SWITCH_P: { strcpy(BASE_OPTIONS.ExtractOptions.CryptionData.Password, Switch + 1); BASE_CRYPT.DoUseCurrentPassword = 1; break; } case APPS_UNACE_EXE_COMMLINE_SWITCH_X: { APPS_UNACE_EXE_COMMLINE_FileListAddFiles( Switch + 1, &BASE_FILELIST.SearchExcludeListEnd, BASE_FILELIST.SearchExcludeListMax); break; } case APPS_UNACE_EXE_COMMLINE_SWITCH_Y: { APPS_UNACE_EXE_COMMLINE_ToggleSwitch(Switch + 1, &BASE_FUNCS.DoOverwriteAll); BASE_CRYPT.DoUseCurrentPassword = BASE_VOLUME.DoProcessAllVolumes = BASE_FUNCS.DoDeleteAll = APPS_EXE_OUTPUT.DoNotStdWait = BASE_FUNCS.DoOverwriteAll; break; } case APPS_UNACE_EXE_COMMLINE_SWITCH_UNKNOWN: { printf("\n%s: %s\n", STR.Unknown_switch, Switch - 1); APPS_EXE_COMMLINE.Error = 1; return APPS_EXE_COMMLINE.Error; } } break; } } APPS_EXE_COMMLINE.ArgumentCount++; } return APPS_EXE_COMMLINE.Error; } /*-----------------APPS_UNACE_EXE_COMMLINE_GetArchiveName----------------*/ BOOL APPS_UNACE_EXE_COMMLINE_GetArchiveName(void) { PCHAR PointPos; if (APPS_UNACE_EXE_COMMLINE.IsSFX) { strcpy(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, APPS_EXE_COMMLINE.Arguments[0]); } else { if (APPS_EXE_COMMLINE.ArgumentCount < APPS_EXE_COMMLINE.ArgumentsNumber) { strcpy(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount++]); BASE_PATHFUNC_ToSystemPathSeparator(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName); BASE_PATHFUNC_CompletePath(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName); PointPos = strrchr(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, '.'); if (strrchr(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, BASE_PATHFUNC_SEPARATOR) > PointPos || !PointPos || !BASE_CONVERT_StrICmp(PointPos, ".") && !BASE_CONVERT_StrICmp(PointPos, ".ace") && !BASE_CONVERT_StrICmp(PointPos, ".exe")) { strcat(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, BASE_ACESTRUC_EXTENSION); } } else { APPS_EXE_COMMLINE.Error = 1; printf("\n%s\n", STR.Error__archive_not_specified); } } return APPS_EXE_COMMLINE.Error; } /*-----------------APPS_UNACE_EXE_COMMLINE_PrepareCommandExecution-------*/ void APPS_UNACE_EXE_COMMLINE_PrepareCommandExecution(void) { BOOL DoExtractToCurrentDir; if (!APPS_EXE_COMMLINE.Error) { BASE_DCPR.Options = BASE_OPTIONS.ExtractOptions; BASE_STATE_EXTERN_OutputProcess(STR.processing_archive, APPS_EXE_COMMLINE.ArchiveName, 1); BASE_ARCHIVES_TEST_ArchiveTest(APPS_EXE_COMMLINE.ArchiveName, BASE_ARCHIVES_TEST.MaxTestSectors, 1); BASE_DIRDATA_Dir2 = BASE_DIRDATA_Dir1; BASE_LFN_GetCurrentDir(BASE_DIRDATA_Dir1.Dir, BASE_LFN_MAXLEN); BASE_DIRDATA_Dir1.ArchiveName[0] = 0; BASE_LFN_GetCurrentDir(BASE_DIRDATA_Dir2.Dir, BASE_LFN_MAXLEN); BASE_DIRDATA_Dir2.ArchiveName[0] = 0; switch (APPS_EXE_COMMLINE.Command) { case APPS_UNACE_EXE_COMMLINE_COMMAND_E: { BASE_EXTRACT.DoRemovePaths = 1; } case APPS_UNACE_EXE_COMMLINE_COMMAND_X: { BASE_EXTRACT.DoProcessAllVolumes = 1; if (APPS_EXE_COMMLINE.TargetDir) { strcpy(BASE_DIRDATA_Dir2.Dir, APPS_EXE_COMMLINE.TargetDir); BASE_PATHFUNC_CompletePath(BASE_DIRDATA_Dir2.Dir); /* sprintf(TargetFile, "%st.t", BASE_PATHFUNC_AddSlashToEnd(BASE_DIRDATA_Dir2.Dir)); BASE_FUNCS_CreatePathDirectories(TargetFile);*/ } else { if (APPS_UNACE_EXE_COMMLINE.IsSFXNoCommand && !BASE_VOLUME.DoProcessAllVolumes) { DoExtractToCurrentDir = APPS_EXE_INPUT_EXTERN_WarningYANC(STR.Extract, STR.Extract_archive_to_current_directory_, APPS_EXE_COMMLINE.ArchiveName); switch (DoExtractToCurrentDir) { case 2: { APPS_EXE_INPUT_Input(BASE_DIRDATA_Dir2.Dir, 75, STR.Extract, STR.Please_enter_new_destination_directory_, 0); if (APPS_EXE_INPUT.LastKey == 27) { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } break; } case 3: { BASE_ERROR.ErrorCode = BASE_ERROR_USER; break; } } } } } case APPS_UNACE_EXE_COMMLINE_COMMAND_L: case APPS_UNACE_EXE_COMMLINE_COMMAND_V: { BASE_FILELIST.DoRecurseSubDirectories = 1; } default: { BASE_PATHFUNC_SplitFileName(BASE_DIRDATA_Dir1.Dir, BASE_DIRDATA_Dir1.ArchiveName, APPS_EXE_COMMLINE.ArchiveName); } } } } /*-----------------APPS_UNACE_EXE_COMMLINE_InitArguments-----------------*/ void APPS_UNACE_EXE_COMMLINE_InitArguments(INT ArgumentsNumber, PCHAR Arguments[]) { PCHAR SlashPtr; INT I, StrLen; APPS_EXE_COMMLINE.ArgumentsNumber = ArgumentsNumber; for (I = 0; I < APPS_EXE_COMMLINE.ArgumentsNumber; I++) { APPS_EXE_COMMLINE.Arguments[I] = Arguments[I]; StrLen = strlen(APPS_EXE_COMMLINE.Arguments[I]) - 1; if (APPS_EXE_COMMLINE.Arguments[I][StrLen] == '"') { APPS_EXE_COMMLINE.Arguments[I][StrLen] = BASE_PATHFUNC_SEPARATOR; } if (StrLen > BASE_LFN_MAXLEN) { APPS_EXE_COMMLINE.Arguments[I][BASE_LFN_MAXLEN-1] = 0; } } strcpy(APPS_EXE_COMMLINE.ProgramPath, APPS_EXE_COMMLINE.Arguments[0]); SlashPtr = (PCHAR) strrchr(APPS_EXE_COMMLINE.ProgramPath, BASE_PATHFUNC_SEPARATOR); if (!SlashPtr) { BASE_LFN_GetCurrentDir(APPS_EXE_COMMLINE.ProgramDir, BASE_LFN_MAXLEN); if (!APPS_EXE_COMMLINE.ProgramDir[3]) { BASE_CONVERT_StrCatBefore("\\", APPS_EXE_COMMLINE.ProgramPath); } BASE_CONVERT_StrCatBefore(APPS_EXE_COMMLINE.ProgramDir, APPS_EXE_COMMLINE.ProgramPath); } else { if (SlashPtr == APPS_EXE_COMMLINE.ProgramPath + 2) { SlashPtr++; } strcpy(APPS_EXE_COMMLINE.ProgramDir, APPS_EXE_COMMLINE.ProgramPath); *(SlashPtr - APPS_EXE_COMMLINE.ProgramPath + APPS_EXE_COMMLINE.ProgramDir) = 0; } } /*-----------------APPS_UNACE_EXE_COMMLINE_AddEnvironmentSwitches--------*/ void APPS_UNACE_EXE_COMMLINE_AddEnvironmentSwitches(void) { INT InsertPos; PCHAR EnvironmentSwitchesPos; InsertPos = 0; EnvironmentSwitchesPos = APPS_EXE_COMMLINE.EnvironmentSwitches - 1; do { EnvironmentSwitchesPos++; if (*EnvironmentSwitchesPos && *EnvironmentSwitchesPos != ' ') { InsertPos++; memmove(&APPS_EXE_COMMLINE.Arguments[InsertPos + 1], &APPS_EXE_COMMLINE.Arguments[InsertPos], sizeof(PCHAR) * (APPS_EXE_COMMLINE.ArgumentsNumber + 1 - InsertPos)); APPS_EXE_COMMLINE.Arguments[InsertPos] = EnvironmentSwitchesPos; APPS_EXE_COMMLINE.ArgumentsNumber++; } EnvironmentSwitchesPos = strchr(EnvironmentSwitchesPos, ' '); if (EnvironmentSwitchesPos) { *EnvironmentSwitchesPos = 0; } } while (EnvironmentSwitchesPos); } /*-----------------APPS_UNACE_EXE_COMMLINE_DoShowHelp--------------------*/ BOOL APPS_UNACE_EXE_COMMLINE_DoShowHelp(void) { if (APPS_EXE_COMMLINE.ArgumentsNumber <= 1 && !APPS_UNACE_EXE_COMMLINE.IsSFX) { return 1; } if (APPS_EXE_COMMLINE.ArgumentsNumber == 2) { if (!APPS_EXE_COMMLINE.Arguments[1][2] && (APPS_EXE_COMMLINE.Arguments[1][0] == '/' || APPS_EXE_COMMLINE.Arguments[1][0] == '-') && (BASE_CONVERT_UpCase(APPS_EXE_COMMLINE.Arguments[1][1]) == 'H' || APPS_EXE_COMMLINE.Arguments[1][1] == '?')) { return 1; } } APPS_EXE_COMMLINE.ArgumentCount = 1; return 0; } /*-----------------APPS_UNACE_EXE_COMMLINE_MainProc----------------------*/ void APPS_UNACE_EXE_COMMLINE_MainProc(void) { tLFN ShorterStr; tBASE_LFN_FINDSTRUCT DirStruc; if (APPS_UNACE_EXE_COMMLINE_DoShowHelp()) { APPS_UNACE_EXE_COMMLINE_HELP_PrintHelp(0); return; } BASE_LFN_GetCurrentDir(APPS_EXE_COMMLINE.StartDir, BASE_LFN_MAXLEN); APPS_UNACE_EXE_COMMLINE_AddEnvironmentSwitches(); if (APPS_UNACE_EXE_COMMLINE_GetSwitches()) { return; } if (APPS_UNACE_EXE_COMMLINE_GetCommand()) { return; } if (APPS_UNACE_EXE_COMMLINE_GetSwitches()) { return; } if (APPS_UNACE_EXE_COMMLINE_GetArchiveName()) { return; } APPS_UNACE_EXE_COMMLINE_GetFileListInit(); while (APPS_EXE_COMMLINE.ArgumentCount < APPS_EXE_COMMLINE.ArgumentsNumber) { if (APPS_UNACE_EXE_COMMLINE_GetSwitches()) { return; } if (APPS_UNACE_EXE_COMMLINE_GetFileList()) { return; } } APPS_UNACE_EXE_COMMLINE_GetFileListDone(); APPS_UNACE_EXE_COMMLINE_ProcessingInit(); if (APPS_EXE_COMMLINE.ArgumentCount < APPS_EXE_COMMLINE.ArgumentsNumber) { printf("\n%s: ", STR.Extra_characters_on_line); while (APPS_EXE_COMMLINE.ArgumentCount < APPS_EXE_COMMLINE.ArgumentsNumber) { printf("%s ", APPS_EXE_COMMLINE.Arguments[APPS_EXE_COMMLINE.ArgumentCount++]); } APPS_EXE_COMMLINE.Error = 1; return; } if (BASE_LFN_FindFirst(/*"//h/execs", */APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, BASE_LFN_GetFindAllFilesAttr(), &DirStruc)) { APPS_EXE_OUTPTERR_OutputError(STR.No_such_archive_found_, APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName); BASE_ERROR.ErrorCode = BASE_ERROR_FOUND; return; } do { if (DirStruc.Name[0] == '.') { continue; } strcpy(APPS_EXE_COMMLINE.ArchiveName, APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName); *((PCHAR) strrchr(APPS_EXE_COMMLINE.ArchiveName, BASE_PATHFUNC_SEPARATOR) + 1) = 0; strcat(APPS_EXE_COMMLINE.ArchiveName, DirStruc.Name); if (!BASE_ARCHIVES_TEST_ArchiveTest(APPS_EXE_COMMLINE.ArchiveName, BASE_ARCHIVES_TEST.MaxTestSectors, 1) || BASE_DIRDATA_Dir1.ArchiveType != 0) { if (!BASE_CONVERT_StrICmp(APPS_EXE_COMMLINE.ArchiveName, APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName)) { APPS_EXE_OUTPTERR_OutputError(STR.Is_no_ACE_archive_, APPS_EXE_CONVERT_MakeStrShorter(ShorterStr, APPS_EXE_COMMLINE.ArchiveName, 30)); BASE_ERROR.ErrorCode = BASE_ERROR_OTHER; return; } else { continue; } } BASE_PATHFUNC_CompletePath(APPS_EXE_COMMLINE.ArchiveName); APPS_UNACE_EXE_COMMLINE_PrepareCommandExecution(); if (BASE_ERROR.ErrorCode) { return; } BASE_DOSFUNCS_SetDir(BASE_DIRDATA_Dir1.Dir); switch (APPS_EXE_COMMLINE.Command) { case APPS_UNACE_EXE_COMMLINE_COMMAND_E: case APPS_UNACE_EXE_COMMLINE_COMMAND_X: { BASE_FUNCS_Copy(0); break; } case APPS_UNACE_EXE_COMMLINE_COMMAND_V: case APPS_UNACE_EXE_COMMLINE_COMMAND_L: { APPS_EXE_ACEFUNCS_List(APPS_EXE_COMMLINE.Command == APPS_UNACE_EXE_COMMLINE_COMMAND_V); break; } case APPS_UNACE_EXE_COMMLINE_COMMAND_T: { BASE_EXTRACT_Test(APPS_EXE_COMMLINE.ArchiveName, 1); break; } } BASE_DOSFUNCS_SetDir(APPS_EXE_COMMLINE.StartDir); if (APPS_EXE_COMMLINE.Command == APPS_UNACE_EXE_COMMLINE_COMMAND_L || APPS_EXE_COMMLINE.Command == APPS_UNACE_EXE_COMMLINE_COMMAND_V) { APPS_EXE_OUTPUT_WriteWait(""); } else { APPS_EXE_OUTPUT_Write(""); } if (BASE_ERROR.ErrorCode == BASE_ERROR_FILES) { BASE_ERROR.ErrorCode = 0; } } while (!BASE_LFN_FindNext(&DirStruc) && !BASE_ERROR_EXTERN_HandleCancel(1)); BASE_LFN_FindClose(&DirStruc); } unace-2.5/source/apps/unace/exe/extern/0000755000175000017500000000000007752377756020642 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/messages/0000755000175000017500000000000007752377756022451 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/messages/messages.c0000644000175000017500000000166107761500754024412 0ustar danieldaniel00000000000000#include #define INCL_BASE_VERSION #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_EXE_MESSAGES_EXTERN_InitProgramSpecific----------*/ void APPS_EXE_MESSAGES_EXTERN_InitProgramSpecific(void) { sprintf(APPS_EXE_MESSAGES.FirstCommandLineHelpLine, "UNACE v" BASE_VERSION_VERSIONSTR " %-44s" __DATE__ " " __TIME__ #ifdef __MACOSX__ "\n(Mac OS X) ported to the Mac by Kolja Koischwitz" #endif #ifdef __sun__ "\n(SunOS5.9) ported to Solaris by Kolja Koischwitz" #endif , STR.Copyright_by_ACE_Compression_Software); STR.CommlineHelp[0] = APPS_EXE_MESSAGES.FirstCommandLineHelpLine; } /*-----------------APPS_EXE_MESSAGES_EXTERN_LoadMessages-----------------*/ void APPS_EXE_MESSAGES_EXTERN_LoadMessages(void) { APPS_EXE_MESSAGES_LoadMessagesPROC(&STR.END_MARKER, "END OF UNACE PART"); } unace-2.5/source/apps/unace/exe/extern/error/0000755000175000017500000000000007752377756021773 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/error/error.c0000644000175000017500000000042307157426366023256 0ustar danieldaniel00000000000000#define INCL_BASE_ERROR #define INCL_APPS_EXE_EXTERN_ERROR #define INCL_APPS_EXE_INPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_EXE_EXTERN_ERROR_HandleCancelPROC----------------*/ void APPS_EXE_EXTERN_ERROR_HandleCancelPROC(void) { } unace-2.5/source/apps/unace/exe/extern/input/0000755000175000017500000000000007752377756022001 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/input/nt.c0000644000175000017500000000040707157426366022556 0ustar danieldaniel00000000000000#include "base/all/wininc.h" #define INCL_APPS_EXE_INPUT_NT #include "apps/unace/exe/includes.h" /*-----------------APPS_EXE_INPUT_NT_EXTERN_HandleMouseEvent-------------*/ void APPS_EXE_INPUT_NT_EXTERN_HandleMouseEvent(INPUT_RECORD *Inp) { } unace-2.5/source/apps/unace/exe/extern/input/input.c0000644000175000017500000000360507157426366023277 0ustar danieldaniel00000000000000#include #define INCL_BASE_CONVERT #define INCL_BASE_ERROR #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_EXE_INPUT_EXTERN_Input---------------------------*/ void APPS_EXE_INPUT_EXTERN_Input(PCHAR StartStr, INT Width, PCHAR TopStr, PCHAR Discription, BOOL IsPasswInput) { APPS_EXE_INPUT_Input(StartStr, Width, TopStr, Discription, IsPasswInput); } /*-----------------APPS_EXE_INPUT_EXTERN_InputProcOutputMask-------------*/ void APPS_EXE_INPUT_EXTERN_InputProcOutputMask(BOOL DoRegInput) { } /*-----------------APPS_EXE_INPUT_EXTERN_InputProcHandleKey--------------*/ void APPS_EXE_INPUT_EXTERN_InputProcHandleKey(BOOL DoRegInput) { } /*-----------------APPS_EXE_INPUT_EXTERN_InputProcHandleDelete-----------*/ void APPS_EXE_INPUT_EXTERN_InputProcHandleDelete(BOOL DoRegInput, INT InputLen, INT Width) { } /*-----------------APPS_EXE_INPUT_EXTERN_InputProcInputCondition---------*/ BOOL APPS_EXE_INPUT_EXTERN_InputProcInputCondition(BOOL DoRegInput, INT InputLen) { return 1; } /*-----------------APPS_EXE_INPUT_EXTERN_InputProcOutputMaskAtOutput-----*/ void APPS_EXE_INPUT_EXTERN_InputProcOutputMaskAtInput(BOOL DoRegInput, INT InputLen, INT Width) { } /*-----------------APPS_EXE_INPUT_EXTERN_WarningYANC---------------------*/ INT APPS_EXE_INPUT_EXTERN_WarningYANC(PCHAR TopStr, PCHAR Description1, PCHAR Description2) { return APPS_EXE_INPUT_WarningYANCProc(TopStr, Description1, Description2); } unace-2.5/source/apps/unace/exe/extern/state/0000755000175000017500000000000007752377756021762 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/state/state.c0000644000175000017500000000254707752416136023240 0ustar danieldaniel00000000000000#include #define INCL_BASE_CONVERT #define INCL_BASE_DOSFUNCS #define INCL_BASE_FILELIST #define INCL_BASE_STATE #define INCL_APPS_EXE_EXTERN_STATE #define INCL_APPS_EXE_CONVERT #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------BASE_STATE_EXTERN_OutputProgressEnd-------------------*/ void BASE_STATE_EXTERN_OutputProgressEnd(BOOL DoInit, BOOL IsFileStart) { APPS_EXE_EXTERN_STATE_StdOutputProgressEnd(); } /*-----------------BASE_STATE_EXTERN_OutputProcess-----------------------*/ void BASE_STATE_EXTERN_OutputProcess(PCHAR OperationStr, PCHAR FileName, BOOL IsImportant) { CHAR ShorterStr[80], OutputStr[80]; sprintf(OutputStr, " %s %s", OperationStr, BASE_CONVERT_ToOEM(APPS_EXE_CONVERT_MakeStrShorter(ShorterStr, FileName, 50 - strlen(OperationStr)))); APPS_EXE_OUTPUT_Write(&OutputStr[IsImportant ? 2 : 0]); APPS_EXE_OUTPUT.DoStdDeleteRight = 1; } /*-----------------BASE_STATE_EXTERN_OutputCRCOkEnd----------------------*/ void BASE_STATE_EXTERN_OutputCRCOkEnd(BOOL CRCIsOk) { APPS_EXE_EXTERN_STATE_OutputCRCOkEnd(CRCIsOk); APPS_EXE_EXTERN_STATE_CRCError(CRCIsOk); } unace-2.5/source/apps/unace/exe/extern/filelist/0000755000175000017500000000000007752377756022455 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/filelist/filelist.c0000644000175000017500000000111307157426366024417 0ustar danieldaniel00000000000000#include #define INCL_BASE_FILELIST #include "apps/unace/exe/includes.h" /*-----------------BASE_FILELIST_EXTERN_AddFileMoveCheck-----------------*/ INT BASE_FILELIST_EXTERN_AddFileMoveCheck(PCHAR FileName) { return 0; } /*-----------------BASE_FILELIST_EXTERN_CreateProc-----------------------*/ void BASE_FILELIST_EXTERN_CreateProc(BOOL DoAddDirFirst) { BASE_FILELIST_SearchListCreate(DoAddDirFirst); } /*-----------------BASE_FILELIST_EXTERN_CreateEnd------------------------*/ void BASE_FILELIST_EXTERN_CreateEnd(void) { } unace-2.5/source/apps/unace/exe/extern/arcblk/0000755000175000017500000000000007752377756022100 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/arcblk/arcblk.c0000644000175000017500000000056107157426366023473 0ustar danieldaniel00000000000000#define INCL_BASE_ARCBLK #define INCL_APPS_EXE_EXTERN_ARCBLK #include "apps/unace/exe/includes.h" /*-----------------BASE_ARCBLK_EXTERN_OutputArchiveInfo------------------*/ void BASE_ARCBLK_EXTERN_OutputArchiveInfo(INT AccesFlags, BOOL DoResetCrypt) { APPS_EXE_EXTERN_ARCBLK_OutputArchiveInfo(1); } unace-2.5/source/apps/unace/exe/extern/comments/0000755000175000017500000000000007752377756022467 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/comments/comments.c0000644000175000017500000000055107157426366024450 0ustar danieldaniel00000000000000#define INCL_BASE_COMMENTS #define INCL_APPS_EXE_EXTERN_COMMENTS #include "apps/unace/exe/includes.h" /*-----------------BASE_COMMENTS_EXTERN_Output---------------------------*/ void BASE_COMMENTS_EXTERN_Output(void) { BASE_COMMENTS_ReadComment(); if (BASE_COMMENTS.Comment[0]) { APPS_EXE_EXTERN_COMMENTS_StdOutput(); } } unace-2.5/source/apps/unace/exe/extern/msgout/0000755000175000017500000000000007752377756022160 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/msgout/msgout.c0000644000175000017500000000203607157426366023632 0ustar danieldaniel00000000000000#define INCL_BASE_DIRDATA #define INCL_BASE_MSGOUT #define INCL_BASE_STATE #define INCL_APPS_EXE_MESSAGES #define INCL_APPS_EXE_OUTPUT #define INCL_APPS_EXE_MESSAGES #include "apps/unace/exe/includes.h" /*-----------------BASE_MSGOUT_EXTERN_ListCreateBegin--------------------*/ void BASE_MSGOUT_EXTERN_ListCreateBegin(PVOID *SavedScreenPtr) { APPS_EXE_OUTPUT_EXTERN_Message(55, STR.Working, STR.Creating_listfile__Please_wait_); } /*-----------------BASE_MSGOUT_EXTERN_ListCreateEnd----------------------*/ void BASE_MSGOUT_EXTERN_ListCreateEnd(PVOID *SavedScreenPtr) { } /*-----------------BASE_MSGOUT_EXTERN_ReadingArchive---------------------*/ void BASE_MSGOUT_EXTERN_ReadingArchive(PVOID *SavedScreen) { APPS_EXE_OUTPUT_EXTERN_Message(55, STR.Working, STR.Reading_archive__Please_wait__); } /*-----------------BASE_MSGOUT_EXTERN_ReadingArchiveEnd------------------*/ void BASE_MSGOUT_EXTERN_ReadingArchiveEnd(PVOID *SavedScreen) { } unace-2.5/source/apps/unace/exe/extern/output/0000755000175000017500000000000007752377756022202 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/output/output.c0000644000175000017500000000135307161713106023661 0ustar danieldaniel00000000000000#include #define INCL_APPS_EXE_OUTPUT #include "apps/unace/exe/includes.h" /*-----------------APPS_EXE_OUTPUT_EXTERN_Warning------------------------*/ void APPS_EXE_OUTPUT_EXTERN_Warning(PCHAR TopStr, PCHAR TextStr1, PCHAR TextStr2) { CHAR ShortStr1[80], ShortStr2[80]; INT Width; APPS_EXE_OUTPUT_InfoOrWarningProc(TopStr, TextStr1, TextStr2, 1, ShortStr1, ShortStr2, &Width); } /*-----------------APPS_EXE_OUTPUT_EXTERN_Message------------------------*/ void APPS_EXE_OUTPUT_EXTERN_Message(INT Width, PCHAR TopStr, PCHAR MessageText) { APPS_EXE_OUTPUT_MessageProc(TopStr, MessageText); } unace-2.5/source/apps/unace/exe/extern/volume/0000755000175000017500000000000007752377756022151 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/volume/volume.c0000644000175000017500000000035107157426366023612 0ustar danieldaniel00000000000000#define INCL_APPS_EXE_EXTERN_VOLUME #include "apps/unace/exe/includes.h" /*-----------------APPS_EXE_EXTERN_VOLUME_HandleVolumeChange-----------*/ void APPS_EXE_EXTERN_VOLUME_HandleVolumeChange(PCHAR VolumeName) { } unace-2.5/source/apps/unace/exe/extern/arcread/0000755000175000017500000000000007752377756022243 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/arcread/arcread.c0000644000175000017500000000122407704277514023773 0ustar danieldaniel00000000000000#define INCL_BASE_ARCHIVES_ACE #define INCL_BASE_ARCHIVES_READ #define INCL_BASE_DIRDATA #define INCL_APPS_EXE_MESSAGES #include "apps/unace/exe/includes.h" /*-----------------BASE_ARCHIVES_READ_EXTERN_ReadArchiveProc-------------*/ void BASE_ARCHIVES_READ_EXTERN_ReadArchiveProc(void) { BASE_ARCHIVES_ACE_ReadArchive(); } /*-----------------BASE_ARCHIVES_READ_EXTERN_GetArchiveDescription-------*/ void BASE_ARCHIVES_READ_EXTERN_GetArchiveDescription(void) { BASE_DIRDATA_Dir1.ArchiveDescription = STR.arcdiscr[(BASE_DIRDATA_Dir1.IsSolid << 2) + (BASE_DIRDATA_Dir1.IsSFX << 1) + BASE_DIRDATA_Dir1.IsMultiVol]; } unace-2.5/source/apps/unace/exe/extern/options/0000755000175000017500000000000007752377756022335 5ustar danieldaniel00000000000000unace-2.5/source/apps/unace/exe/extern/options/options.c0000644000175000017500000000117507752416110024152 0ustar danieldaniel00000000000000#include #define INCL_BASE_CRYPT #define INCL_BASE_OPTIONS #define INCL_APPS_EXE_INPUT #define INCL_APPS_EXE_MESSAGES #include "apps/unace/exe/includes.h" /*-----------------BASE_OPTIONS_EXTERN_SetPassword-----------------------*/ INT BASE_OPTIONS_EXTERN_SetPassword( pBASE_CRYPT_CRYPTIONDATA CryptionData, BOOL DoReEnter) { CHAR Password[51]; Password[0] = 0; APPS_EXE_INPUT_Input(Password, 50, STR.Password, STR.Enter_password_, 1); if (APPS_EXE_INPUT.LastKey != 27) { strcpy(CryptionData->Password, Password); } return APPS_EXE_INPUT.LastKey == 27; } unace-2.5/source/apps/unace/exe/includes.h0000644000175000017500000000161407704251036021271 0ustar danieldaniel00000000000000#ifndef _APPS_UNACE_EXE_INCLUDES_H_INCLUDED #define _APPS_UNACE_EXE_INCLUDES_H_INCLUDED #include "base/all/includes.h" #include "apps/exe/includes.h" ////////////////////////////////////////////////////////////////////////////// #if defined(INCL_APPS_UNACE_EXE_COMMLINE) || defined(INCL_APPS_UNACE_EXE_COMMLINE_EXCLUSIVE) #include "apps/unace/exe/commline/commline.h" #endif #if defined(INCL_APPS_UNACE_EXE_COMMLINE_HELP) || defined(INCL_APPS_UNACE_EXE_COMMLINE_HELP_EXCLUSIVE) #include "apps/unace/exe/commline/help/help.h" #endif #if defined(INCL_APPS_UNACE_EXE) || defined(INCL_APPS_UNACE_EXE_EXCLUSIVE) #include "apps/unace/exe/exe.h" #endif #if defined(INCL_APPS_UNACE_EXE_NT) || defined(INCL_APPS_UNACE_EXE_NT_EXCLUSIVE) #include "apps/unace/exe/nt.h" #endif #endif unace-2.5/aceexe.mk0000644000175000017500000011667107652722510014772 0ustar danieldaniel00000000000000ACEEXE_SRCS = $(APPS_SRCS)ACE/EXE/ ACEEXE_EXT_SRCS = $(ACEEXE_SRCS)EXTERN/ ACEEXE_OBJ_DIR = $(APPS_OBJ_DIR)ACEEXE/ ACEEXE_OBJ_DIRsl = $(APPS_OBJ_DIR)ACEEXE ACEEXE_EXT_OBJ_DIR = $(ACEEXE_OBJ_DIR)EXT/ ACEMESSAGEDIR = $(ACEEXE_SRCS)MESSAGES/ ACEMSGFILESDIR = $(ACEMESSAGEDIR)MSGFILES/ ACEMSGFILESDIRsl = $(ACEMESSAGEDIR)MSGFILES dosACEEXE_SRCS = $(dosAPPS_SRCS)ACE\EXE\ # dosACEEXE_OBJ_DIR = $(dosAPPS_OBJ_DIR)ACEEXE\ # dosACEMESSAGEDIR = $(dosACEEXE_SRCS)MESSAGES\ # dosACEMSGFILESDIR = $(dosACEMESSAGEDIR)MSGFILES\ # dosACEMSGFILESDIRsl = $(dosACEMESSAGEDIR)MSGFILES # ############################################################################## ACEEXE_EXT_SRCS = $(ACEEXE_SRCS)EXTERN/############################### $(ACEEXE_EXT_OBJ_DIR)acarcblk.obj : $(ACEEXE_EXT_SRCS)acarcblk/acarcblk.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acecomm.obj : $(ACEEXE_EXT_SRCS)acecomm/acecomm.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acefuncs.obj : $(ACEEXE_EXT_SRCS)acefuncs/acefuncs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acerrout.obj : $(ACEEXE_EXT_SRCS)acerrout/acerrout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)volume.obj : $(ACEEXE_EXT_SRCS)volume/volume.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acestate.obj : $(ACEEXE_EXT_SRCS)acestate/acestate.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acfuncs.obj : $(ACEEXE_EXT_SRCS)acfuncs/acfuncs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acmsgout.obj : $(ACEEXE_EXT_SRCS)acmsgout/acmsgout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acoptns.obj : $(ACEEXE_EXT_SRCS)acoptns/acoptns.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)acvolume.obj : $(ACEEXE_EXT_SRCS)acvolume/acvolume.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)add.obj : $(ACEEXE_EXT_SRCS)add/add.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)arcblk.obj : $(ACEEXE_EXT_SRCS)arcblk/arcblk.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)arcread.obj : $(ACEEXE_EXT_SRCS)arcread/arcread.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)arctest.obj : $(ACEEXE_EXT_SRCS)arctest/arctest.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)av.obj : $(ACEEXE_EXT_SRCS)av/av.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)comments.obj : $(ACEEXE_EXT_SRCS)comments/comments.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)error.obj : $(ACEEXE_EXT_SRCS)error/error.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)filelist.obj : $(ACEEXE_EXT_SRCS)filelist/filelist.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)filesort.obj : $(ACEEXE_EXT_SRCS)filesort/filesort.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)funcs.obj : $(ACEEXE_EXT_SRCS)funcs/funcs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)input.obj : $(ACEEXE_EXT_SRCS)input/input.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)inpnt.obj : $(ACEEXE_EXT_SRCS)input/nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)memory.obj : $(ACEEXE_EXT_SRCS)memory/memory.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)messages.obj : $(ACEEXE_EXT_SRCS)messages/messages.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)msgout.obj : $(ACEEXE_EXT_SRCS)msgout/msgout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)options.obj : $(ACEEXE_EXT_SRCS)options/options.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)output.obj : $(ACEEXE_EXT_SRCS)output/output.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)repair.obj : $(ACEEXE_EXT_SRCS)repair/repair.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)state.obj : $(ACEEXE_EXT_SRCS)state/state.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_EXT_OBJ_DIR)temp.obj : $(ACEEXE_EXT_SRCS)temp/temp.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ############################################################################## ############################################################################## $(ACEEXE_OBJ_DIR)acefuncs.obj : $(ACEEXE_SRCS)acefuncs/acefuncs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ACEEXE_ARCS_SRCS = $(ACEEXE_SRCS)ARCHIVES/################### $(ACEEXE_OBJ_DIR)acarctst.obj : $(ACEEXE_ARCS_SRCS)test/test.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)arcarj.obj : $(ACEEXE_ARCS_SRCS)arj/arj.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)arccall.obj : $(ACEEXE_ARCS_SRCS)callprog/callprog.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)arcrar.obj : $(ACEEXE_ARCS_SRCS)rar/rar.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)arczip.obj : $(ACEEXE_ARCS_SRCS)zip/zip.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## CLDIR = $(ACEEXE_SRCS)COMMLINE/################### $(ACEEXE_OBJ_DIR)commline.obj : $(CLDIR)commline.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)clhelp.obj : $(CLDIR)help/help.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)comments.obj : $(ACEEXE_SRCS)comments/comments.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)convert.obj : $(ACEEXE_SRCS)convert/convert.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)filelist.obj : $(ACEEXE_SRCS)filelist/filelist.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)filesort.obj : $(ACEEXE_SRCS)filesort/filesort.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)funcs.obj : $(ACEEXE_SRCS)funcs/funcs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ACE_EXE_INPUT_DIR = $(ACEEXE_SRCS)INPUT/##################### $(ACEEXE_OBJ_DIR)input.obj : $(ACE_EXE_INPUT_DIR)input.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)inputdos.obj : $(ACE_EXE_INPUT_DIR)dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)inputnt.obj : $(ACE_EXE_INPUT_DIR)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(ACEEXE_OBJ_DIR)inputos2.obj : $(ACE_EXE_INPUT_DIR)os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) ############################################################################## ACEENGMSGFILE = $(ACEEXE_OBJ_DIR)aceeng.msg############### $(ACEEXE_OBJ_DIR)ACEBRU.CPD : $(MSGFILESDIR)BRU.MSG \ $(ACEMSGFILESDIR)ACEBRU.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)BRU.MSG+$(dosACEMSGFILESDIR)ACEBRU.MSG ACEBRU.CPD $(PROGMING_DIR)del_cr ACEBRU.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEBRU.MSG : $(MSGFILESDIR)BRU.MSD \ $(ACEEXE_OBJ_DIR)ACEBRU.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)BRU.MSD ACEBRU.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACECZC.CPD : $(MSGFILESDIR)CZC.MSG \ $(ACEMSGFILESDIR)ACECZC.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)CZC.MSG+$(dosACEMSGFILESDIR)ACECZC.MSG ACECZC.CPD $(PROGMING_DIR)del_cr ACECZC.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACECZC.MSG : $(MSGFILESDIR)CZC.MSD \ $(ACEEXE_OBJ_DIR)ACECZC.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)CZC.MSD ACECZC.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEDUT.CPD : $(MSGFILESDIR)DUT.MSG \ $(ACEMSGFILESDIR)ACEDUT.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)DUT.MSG+$(dosACEMSGFILESDIR)ACEDUT.MSG ACEDUT.CPD $(PROGMING_DIR)del_cr ACEDUT.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEDUT.MSG : $(MSGFILESDIR)DUT.MSD \ $(ACEEXE_OBJ_DIR)ACEDUT.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)DUT.MSD ACEDUT.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEFIN.CPD : $(MSGFILESDIR)FIN.MSG \ $(ACEMSGFILESDIR)ACEFIN.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)FIN.MSG+$(dosACEMSGFILESDIR)ACEFIN.MSG ACEFIN.CPD $(PROGMING_DIR)del_cr ACEFIN.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEFIN.MSG : $(MSGFILESDIR)FIN.MSD \ $(ACEEXE_OBJ_DIR)ACEFIN.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)FIN.MSD ACEFIN.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEFRE.CPD : $(MSGFILESDIR)FRE.MSG \ $(ACEMSGFILESDIR)ACEFRE.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)FRE.MSG+$(dosACEMSGFILESDIR)ACEFRE.MSG ACEFRE.CPD $(PROGMING_DIR)del_cr ACEFRE.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEFRE.MSG : $(MSGFILESDIR)FRE.MSD \ $(ACEEXE_OBJ_DIR)ACEFRE.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)FRE.MSD ACEFRE.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEGER.CPD : $(MSGFILESDIR)GER.MSG \ $(ACEMSGFILESDIR)ACEGER.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)GER.MSG+$(dosACEMSGFILESDIR)ACEGER.MSG ACEGER.CPD $(PROGMING_DIR)del_cr ACEGER.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEGER.MSG : $(MSGFILESDIR)GER.MSD \ $(ACEEXE_OBJ_DIR)ACEGER.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)GER.MSD ACEGER.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEGRK.CPD : $(MSGFILESDIR)GRK.MSG \ $(ACEMSGFILESDIR)ACEGRK.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)GRK.MSG+$(dosACEMSGFILESDIR)ACEGRK.MSG ACEGRK.CPD $(PROGMING_DIR)del_cr ACEGRK.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEGRK.MSG : $(MSGFILESDIR)GRK.MSD \ $(ACEEXE_OBJ_DIR)ACEGRK.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)GRK.MSD ACEGRK.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEHUN.CPD : $(MSGFILESDIR)HUN.MSG \ $(ACEMSGFILESDIR)ACEHUN.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)HUN.MSG+$(dosACEMSGFILESDIR)ACEHUN.MSG ACEHUN.CPD $(PROGMING_DIR)del_cr ACEHUN.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEHUN.MSG : $(MSGFILESDIR)HUN.MSD \ $(ACEEXE_OBJ_DIR)ACEHUN.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)HUN.MSD ACEHUN.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACENWG.CPD : $(MSGFILESDIR)NWG.MSG \ $(ACEMSGFILESDIR)ACENWG.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)NWG.MSG+$(dosACEMSGFILESDIR)ACENWG.MSG ACENWG.CPD $(PROGMING_DIR)del_cr ACENWG.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACENWG.MSG : $(MSGFILESDIR)NWG.MSD \ $(ACEEXE_OBJ_DIR)ACENWG.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)NWG.MSD ACENWG.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEPOL.CPD : $(MSGFILESDIR)POL.MSG \ $(ACEMSGFILESDIR)ACEPOL.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)POL.MSG+$(dosACEMSGFILESDIR)ACEPOL.MSG ACEPOL.CPD $(PROGMING_DIR)del_cr ACEPOL.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEPOL.MSG : $(MSGFILESDIR)POL.MSD \ $(ACEEXE_OBJ_DIR)ACEPOL.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)POL.MSD ACEPOL.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEPOR.CPD : $(MSGFILESDIR)POR.MSG \ $(ACEMSGFILESDIR)ACEPOR.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)POR.MSG+$(dosACEMSGFILESDIR)ACEPOR.MSG ACEPOR.CPD $(PROGMING_DIR)del_cr ACEPOR.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEPOR.MSG : $(MSGFILESDIR)POR.MSD \ $(ACEEXE_OBJ_DIR)ACEPOR.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)POR.MSD ACEPOR.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEROM.CPD : $(MSGFILESDIR)ROM.MSG \ $(ACEMSGFILESDIR)ACEROM.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)ROM.MSG+$(dosACEMSGFILESDIR)ACEROM.MSG ACEROM.CPD $(PROGMING_DIR)del_cr ACEROM.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACEROM.MSG : $(MSGFILESDIR)ROM.MSD \ $(ACEEXE_OBJ_DIR)ACEROM.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)ROM.MSD ACEROM.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACERUS.CPD : $(MSGFILESDIR)RUS.MSG \ $(ACEMSGFILESDIR)ACERUS.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)RUS.MSG+$(dosACEMSGFILESDIR)ACERUS.MSG ACERUS.CPD $(PROGMING_DIR)del_cr ACERUS.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACERUS.MSG : $(MSGFILESDIR)RUS.MSD \ $(ACEEXE_OBJ_DIR)ACERUS.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)RUS.MSD ACERUS.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACESPA.CPD : $(MSGFILESDIR)SPA.MSG \ $(ACEMSGFILESDIR)ACESPA.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)SPA.MSG+$(dosACEMSGFILESDIR)ACESPA.MSG ACESPA.CPD $(PROGMING_DIR)del_cr ACESPA.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACESPA.MSG : $(MSGFILESDIR)SPA.MSD \ $(ACEEXE_OBJ_DIR)ACESPA.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)SPA.MSD ACESPA.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACESWE.CPD : $(MSGFILESDIR)SWE.MSG \ $(ACEMSGFILESDIR)ACESWE.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)SWE.MSG+$(dosACEMSGFILESDIR)ACESWE.MSG ACESWE.CPD $(PROGMING_DIR)del_cr ACESWE.CPD cd $(OBJ_DIRsl) $(EXECS_MSGFILES_DIR)ACESWE.MSG : $(MSGFILESDIR)SWE.MSD \ $(ACEEXE_OBJ_DIR)ACESWE.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)SWE.MSD ACESWE.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)ACEENG.CPD : $(MSGFILESDIR)ENG.MSG \ $(ACEMSGFILESDIR)ACEENG.MSG .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) copy /b $(dosMSGFILESDIR)ENG.MSG+$(dosACEMSGFILESDIR)ACEENG.MSG ACEENG.CPD $(PROGMING_DIR)del_cr ACEENG.CPD cd $(OBJ_DIRsl) $(ACEENGMSGFILE) : $(MSGFILESDIR)ENG.MSD \ $(ACEEXE_OBJ_DIR)ACEENG.CPD .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)msgwrite 1 $(MSGFILESDIR)ENG.MSD ACEENG.CPD $@ cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)aceeng.obj : $(ACEENGMSGFILE) .AUTODEPEND cd $(ACEEXE_OBJ_DIRsl) $(PROGMING_DIR)binobj $(ACEENGMSGFILE) aceeng.obj APPS_EXE_MESSAGES_EXTERN_ENGLISH_ cd $(ACEMSGFILESDIR) $(PROGMING_DIR)msgtoc ACEENG.C $(ACEENGMSGFILE) cd $(OBJ_DIRsl) $(ACEEXE_OBJ_DIR)messages.obj : $(ACEMESSAGEDIR)messages.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)output.obj : $(ACEEXE_SRCS)output/output.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)setup.obj : $(ACEEXE_SRCS)setup/setup.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ACEEXE_SHELL_SRCS = $(ACEEXE_SRCS)SHELL/############# $(ACEEXE_OBJ_DIR)shell.obj : $(ACEEXE_SHELL_SRCS)shell.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)sherror.obj : $(ACEEXE_SHELL_SRCS)error/error.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)shfuncs.obj : $(ACEEXE_SHELL_SRCS)funcs/funcs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)shhelp.obj : $(ACEEXE_SHELL_SRCS)help/help.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)list.obj : $(ACEEXE_SHELL_SRCS)list/list.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)options.obj : $(ACEEXE_SHELL_SRCS)options/options.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)screen.obj : $(ACEEXE_SHELL_SRCS)screen/screen.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)select.obj : $(ACEEXE_SHELL_SRCS)select/select.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(ACEEXE_OBJ_DIR)view.obj : $(ACEEXE_SHELL_SRCS)view/view.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)temp.obj : $(ACEEXE_SRCS)temp/temp.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)state.obj : $(ACEEXE_SRCS)state/state.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(ACEEXE_OBJ_DIR)exe.obj : $(ACEEXE_SRCS)exe.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ############################################################################## APPS_ACEEXE_ARCS_OBJS = \ $(ACEEXE_OBJ_DIR)arcarj.obj $(ACEEXE_OBJ_DIR)arccall.obj \ $(ACEEXE_OBJ_DIR)arcrar.obj $(ACEEXE_OBJ_DIR)arczip.obj APPS_ACEEXE_COMMLINE_OBJS = \ $(ACEEXE_OBJ_DIR)clhelp.obj $(ACEEXE_OBJ_DIR)commline.obj APPS_ACEEXE_SHELL_OBJS = \ $(ACEEXE_OBJ_DIR)list.obj $(ACEEXE_OBJ_DIR)options.obj \ $(ACEEXE_OBJ_DIR)screen.obj $(ACEEXE_OBJ_DIR)select.obj \ $(ACEEXE_OBJ_DIR)shell.obj $(ACEEXE_OBJ_DIR)sherror.obj \ $(ACEEXE_OBJ_DIR)shfuncs.obj $(ACEEXE_OBJ_DIR)shhelp.obj \ $(ACEEXE_OBJ_DIR)view.obj APPS_ACEEXE_EXT_OBJS = \ $(ACEEXE_EXT_OBJ_DIR)acarcblk.obj $(ACEEXE_EXT_OBJ_DIR)acecomm.obj \ $(ACEEXE_EXT_OBJ_DIR)acefuncs.obj $(ACEEXE_EXT_OBJ_DIR)acerrout.obj \ $(ACEEXE_EXT_OBJ_DIR)acestate.obj $(ACEEXE_EXT_OBJ_DIR)volume.obj \ $(ACEEXE_EXT_OBJ_DIR)acfuncs.obj $(ACEEXE_EXT_OBJ_DIR)acmsgout.obj \ $(ACEEXE_EXT_OBJ_DIR)acoptns.obj $(ACEEXE_EXT_OBJ_DIR)acvolume.obj \ $(ACEEXE_EXT_OBJ_DIR)add.obj $(ACEEXE_EXT_OBJ_DIR)arcblk.obj \ $(ACEEXE_EXT_OBJ_DIR)arcread.obj $(ACEEXE_EXT_OBJ_DIR)arctest.obj \ $(ACEEXE_EXT_OBJ_DIR)av.obj $(ACEEXE_EXT_OBJ_DIR)comments.obj \ $(ACEEXE_EXT_OBJ_DIR)error.obj $(ACEEXE_EXT_OBJ_DIR)filelist.obj \ $(ACEEXE_EXT_OBJ_DIR)filesort.obj $(ACEEXE_EXT_OBJ_DIR)funcs.obj \ $(ACEEXE_EXT_OBJ_DIR)input.obj $(ACEEXE_EXT_OBJ_DIR)memory.obj \ $(ACEEXE_EXT_OBJ_DIR)messages.obj $(ACEEXE_EXT_OBJ_DIR)msgout.obj \ $(ACEEXE_EXT_OBJ_DIR)options.obj $(ACEEXE_EXT_OBJ_DIR)output.obj \ $(ACEEXE_EXT_OBJ_DIR)repair.obj $(ACEEXE_EXT_OBJ_DIR)state.obj \ $(ACEEXE_EXT_OBJ_DIR)temp.obj APPS_ACEEXE_OBJS = \ $(APPS_ACEEXE_EXT_OBJS) \ $(APPS_EXE_OBJS) \ $(APPS_ACEEXE_ARCS_OBJS) $(APPS_ACEEXE_COMMLINE_OBJS) \ $(APPS_ACEEXE_SHELL_OBJS) \ $(ACEEXE_OBJ_DIR)acarctst.obj $(ACEEXE_OBJ_DIR)acefuncs.obj \ $(ACEEXE_OBJ_DIR)comments.obj $(ACEEXE_OBJ_DIR)convert.obj \ $(ACEEXE_OBJ_DIR)filelist.obj \ $(ACEEXE_OBJ_DIR)filesort.obj $(ACEEXE_OBJ_DIR)funcs.obj \ $(ACEEXE_OBJ_DIR)input.obj \ $(ACEEXE_OBJ_DIR)aceeng.obj $(ACEEXE_OBJ_DIR)messages.obj \ $(ACEEXE_OBJ_DIR)options.obj \ $(ACEEXE_OBJ_DIR)output.obj $(ACEEXE_OBJ_DIR)setup.obj \ $(ACEEXE_OBJ_DIR)state.obj $(ACEEXE_OBJ_DIR)temp.obj \ $(ACEEXE_OBJ_DIR)exe.obj APPS_ACEEXENOACL_OBJS = \ $(APPS_ACEEXE_OBJS) $(BASE_ACE_OBJ_DIR)sfxdos32.obj APPS_ACEEXEACL_OBJS = \ $(APPS_ACEEXE_OBJS) $(BASE_ACE_OBJ_DIR)sfxacl.obj ############################################################################## APPS_ACEEXE_DOS_OBJS = \ $(EXE_OBJ32_DIR)inputdos.obj \ $(EXE_OBJ32_DIR)outdos32.obj \ $(EXE_OBJ32_DIR)outdosas.obj \ $(ACEEXE_OBJ_DIR)inputdos.obj APPS_ACEEXE_NT_OBJS = \ $(EXE_OBJ32_DIR)inputnt.obj \ $(ACEEXE_EXT_OBJ_DIR)inpnt.obj \ $(ACEEXE_OBJ_DIR)inputnt.obj APPS_ACEEXE_OS2_OBJS = \ $(EXE_OBJ32_DIR)inputos2.obj \ $(ACEEXE_OBJ_DIR)inputos2.obj ############################################################################## ifndef ISWMAKE include $(MAKE_DIR)aceexeln.mk else !include $(MAKE_DIR)aceexe2.mk !include $(MAKE_DIR)aceexe32.mk !include $(MAKE_DIR)aceexe86.mk endif #----------------------------------------------------------------------------- PACKAGES_DOSACE_DIRsl = $(PACKAGES_DIR)DOSACE PACKAGES_DOSACE_DIR = $(PACKAGES_DIR)DOSACE\ # $(PACKAGES_DIR)ACE25.EXE: $(EXECS_DIR)ACE.EXE \ $(EXECS_DIR)ACE32.EXE \ $(EXECS_DIR)ACE2.EXE \ $(EXECS_DIR)UNACE.EXE \ $(EXECS_DIR)UNACE32.EXE \ $(EXECS_DIR)UNACE2.EXE \ $(EXECS_SFXFILES_DIR)DOS32.SFX \ $(EXECS_SFXFILES_DIR)WIN32CL.SFX \ $(EXECS_SFXFILES_DIR)WIN32GUI.SFX \ $(EXECS_SFXFILES_DIR)OS2CL.SFX \ $(EXECS_MSGFILES_DIR)UNACECZC.MSG \ $(EXECS_MSGFILES_DIR)UNACEDUT.MSG \ $(EXECS_MSGFILES_DIR)UNACEFIN.MSG \ $(EXECS_MSGFILES_DIR)UNACEGER.MSG \ $(EXECS_MSGFILES_DIR)UNACEHUN.MSG \ $(EXECS_MSGFILES_DIR)UNACENWG.MSG \ $(EXECS_MSGFILES_DIR)UNACEPOL.MSG \ $(EXECS_MSGFILES_DIR)UNACEPOR.MSG \ $(EXECS_MSGFILES_DIR)UNACEROM.MSG \ $(EXECS_MSGFILES_DIR)UNACERUS.MSG \ $(EXECS_MSGFILES_DIR)UNACESPA.MSG \ $(EXECS_MSGFILES_DIR)UNACESWE.MSG \ $(EXECS_MSGFILES_DIR)ACECZC.MSG \ $(EXECS_MSGFILES_DIR)ACEDUT.MSG \ $(EXECS_MSGFILES_DIR)ACEFIN.MSG \ $(EXECS_MSGFILES_DIR)ACEGER.MSG \ $(EXECS_MSGFILES_DIR)ACEHUN.MSG \ $(EXECS_MSGFILES_DIR)ACENWG.MSG \ $(EXECS_MSGFILES_DIR)ACEPOL.MSG \ $(EXECS_MSGFILES_DIR)ACEPOR.MSG \ $(EXECS_MSGFILES_DIR)ACEROM.MSG \ $(EXECS_MSGFILES_DIR)ACERUS.MSG \ $(EXECS_MSGFILES_DIR)ACESPA.MSG \ $(EXECS_MSGFILES_DIR)ACESWE.MSG \ $(DOCS_DOSACE_DIR)MSGFILES.TXT \ $(DOCS_DOSACE_DIR)ACE.TXT \ $(DOCS_DOSACE_DIR)WHATSNEW.TXT \ $(DOCS_DOSACE_DIR)FILE_ID.DIZ .AUTODEPEND del $(PACKAGES_DOSACE_DIR)*.e* del $(PACKAGES_DOSACE_DIR)SFXFILES\*.s* del $(PACKAGES_DOSACE_DIR)MSGFILES\*.m* del $(PACKAGES_DOSACE_DIR)MSGFILES\*.t* del $(PACKAGES_DOSACE_DIR)MANUAL\*.t* copy $(EXECS_DIR)ACE.EXE $(PACKAGES_DOSACE_DIRsl) copy $(EXECS_DIR)ACE32.EXE $(PACKAGES_DOSACE_DIRsl) copy $(EXECS_DIR)ACE2.EXE $(PACKAGES_DOSACE_DIRsl) copy $(EXECS_DIR)UNACE.EXE $(PACKAGES_DOSACE_DIRsl) copy $(EXECS_DIR)UNACE32.EXE $(PACKAGES_DOSACE_DIRsl) copy $(EXECS_DIR)UNACE2.EXE $(PACKAGES_DOSACE_DIRsl) copy $(EXECS_SFXFILES_DIR)DOS32.SFX $(PACKAGES_DOSACE_DIR)SFXFILES copy $(EXECS_SFXFILES_DIR)WIN32CL.SFX $(PACKAGES_DOSACE_DIR)SFXFILES copy $(EXECS_SFXFILES_DIR)WIN32GUI.SFX $(PACKAGES_DOSACE_DIR)SFXFILES copy $(EXECS_SFXFILES_DIR)OS2CL.SFX $(PACKAGES_DOSACE_DIR)SFXFILES copy $(EXECS_MSGFILES_DIR)UNACECZC.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEDUT.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEFIN.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEGER.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEHUN.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACENWG.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEPOL.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEPOR.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEPOR.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACEROM.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACERUS.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACESPA.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)UNACESWE.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACECZC.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEDUT.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEFIN.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEGER.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEHUN.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACENWG.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEPOR.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEPOL.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEPOR.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACEROM.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACERUS.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACESPA.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACESWE.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(EXECS_MSGFILES_DIR)ACESWE.MSG $(PACKAGES_DOSACE_DIR)MSGFILES copy $(DOCS_DOSACE_DIR)MSGFILES.TXT $(PACKAGES_DOSACE_DIR)MSGFILES\readme.txt copy $(DOCS_DOSACE_DIR)ACE.TXT $(PACKAGES_DOSACE_DIR)MANUAL copy $(DOCS_DOSACE_DIR)WHATSNEW.TXT $(PACKAGES_DOSACE_DIRsl) copy $(DOCS_DOSACE_DIR)LICENCE.* $(PACKAGES_DOSACE_DIR)LICENCE copy $(DOCS_DOSACE_DIR)ORDER.* $(PACKAGES_DOSACE_DIR)ORDER copy $(DOCS_DOSACE_DIR)FILE_ID.DIZ $(PACKAGES_DOSACE_DIRsl) del $(PACKAGES_DIR)ACE25.EXE cd $(PACKAGES_DOSACE_DIRsl) $(PROGMING_DIR)setftime $(PACKAGES_DOSACE_DIRsl) $(PROGMING_DIR)ace32.exe -std a -av -c2 -c2e- -sfx -d1024 -m5 -r ..\ACE25 cd $(OBJ_DIRsl) #----------------------------------------------------------------------------- PACKAGES_MSGFILES_DIRsl = $(PACKAGES_DIR)MSGFILES PACKAGES_MSGFILES_DIR = $(PACKAGES_DIR)MSGFILES\ # SFXDDIR = $(BASE_SRCS)ACE/SFX/ # dosSFXDDIR = $(dosBASE_SRCS)ACE\SFX\ # $(PACKAGES_DIR)MSGFILES.EXE: $(PACKAGES_DIR)ACE25.EXE \ $(PROGMING_DIR)MSGWRITE.EXE \ $(PROGMING_DIR)DEL_CR.EXE \ $(ACEEXE_OBJ_DIR)ACEBRU.CPD \ $(ACEEXE_OBJ_DIR)ACECZC.CPD \ $(ACEEXE_OBJ_DIR)ACEDUT.CPD \ $(ACEEXE_OBJ_DIR)ACEENG.CPD \ $(ACEEXE_OBJ_DIR)ACEFIN.CPD \ $(ACEEXE_OBJ_DIR)ACEFRE.CPD \ $(ACEEXE_OBJ_DIR)ACEGER.CPD \ $(ACEEXE_OBJ_DIR)ACEGRK.CPD \ $(ACEEXE_OBJ_DIR)ACEHUN.CPD \ $(ACEEXE_OBJ_DIR)ACENWG.CPD \ $(ACEEXE_OBJ_DIR)ACEPOL.CPD \ $(ACEEXE_OBJ_DIR)ACEPOR.CPD \ $(ACEEXE_OBJ_DIR)ACEROM.CPD \ $(ACEEXE_OBJ_DIR)ACERUS.CPD \ $(ACEEXE_OBJ_DIR)ACESPA.CPD \ $(ACEEXE_OBJ_DIR)ACESWE.CPD \ $(MSGFILESDIR)BRU.MSD \ $(MSGFILESDIR)CZC.MSD \ $(MSGFILESDIR)DUT.MSD \ $(MSGFILESDIR)ENG.MSD \ $(MSGFILESDIR)FIN.MSD \ $(MSGFILESDIR)FRE.MSD \ $(MSGFILESDIR)GER.MSD \ $(MSGFILESDIR)GRK.MSD \ $(MSGFILESDIR)HUN.MSD \ $(MSGFILESDIR)NWG.MSD \ $(MSGFILESDIR)POL.MSD \ $(MSGFILESDIR)POR.MSD \ $(MSGFILESDIR)ROM.MSD \ $(MSGFILESDIR)RUS.MSD \ $(MSGFILESDIR)SPA.MSD \ $(MSGFILESDIR)SWE.MSD \ $(ACEMSGFILESDIR)BRU.BAT \ $(ACEMSGFILESDIR)CZC.BAT \ $(ACEMSGFILESDIR)DUT.BAT \ $(ACEMSGFILESDIR)ENG.BAT \ $(ACEMSGFILESDIR)FIN.BAT \ $(ACEMSGFILESDIR)FRE.BAT \ $(ACEMSGFILESDIR)GER.BAT \ $(ACEMSGFILESDIR)GRK.BAT \ $(ACEMSGFILESDIR)HUN.BAT \ $(ACEMSGFILESDIR)NWG.BAT \ $(ACEMSGFILESDIR)POL.BAT \ $(ACEMSGFILESDIR)POR.BAT \ $(ACEMSGFILESDIR)ROM.BAT \ $(ACEMSGFILESDIR)RUS.BAT \ $(ACEMSGFILESDIR)SPA.BAT \ $(ACEMSGFILESDIR)SWE.BAT \ $(DOCS_DOSACE_DIR)ACE.TXT \ $(DOCS_DOSACE_DIR)MSGEDIT.TXT \ $(SFXDDIR)DOS32.SFD \ $(SFXDDIR)OS2CL.SFD \ $(SFXDDIR)WIN32CL.SFD \ $(SFXDDIR)WIN32GUI.SFD .AUTODEPEND del $(PACKAGES_MSGFILES_DIR)*.e* del $(PACKAGES_MSGFILES_DIR)*.m* del $(PACKAGES_MSGFILES_DIR)*.d* del $(PACKAGES_MSGFILES_DIR)SFXFILES\*.s* del $(PACKAGES_MSGFILES_DIR)MSGFILES\*.m* del $(PACKAGES_MSGFILES_DIR)MSGFILES\*.t* del $(PACKAGES_MSGFILES_DIR)MANUAL\*.t* del $(PACKAGES_MSGFILES_DIR)MSGEDIT\*.e* del $(PACKAGES_MSGFILES_DIR)MSGEDIT\*.m* del $(PACKAGES_MSGFILES_DIR)MSGEDIT\*.b* del $(PACKAGES_MSGFILES_DIR)MSGEDIT\*.s* $(PROGMING_DIR)ace32 x -o $(PACKAGES_DIR)ACE25.EXE $(PACKAGES_MSGFILES_DIR) copy $(PROGMING_DIR)MSGWRITE.EXE $(PACKAGES_MSGFILES_DIR)MSGEDIT copy $(PROGMING_DIR)DEL_CR.EXE $(PACKAGES_MSGFILES_DIR)MSGEDIT copy $(dosACEEXE_OBJ_DIR)*.CPD $(PACKAGES_MSGFILES_DIR)MSGEDIT copy $(dosMSGFILESDIR)*.MSD $(PACKAGES_MSGFILES_DIR)MSGEDIT copy $(dosACEMSGFILESDIR)*.BAT $(PACKAGES_MSGFILES_DIR)MSGEDIT copy $(dosSFXDDIR)*.SFD $(PACKAGES_MSGFILES_DIR)MSGEDIT copy $(DOCS_DOSACE_DIR)MSGEDIT.TXT $(PACKAGES_MSGFILES_DIR)MSGEDIT\readme.txt copy $(DOCS_DOSACE_DIR)ACE.TXT $(PACKAGES_DOSACE_DIR)MANUAL del $(PACKAGES_DIR)MSGFILES.EXE cd $(PACKAGES_MSGFILES_DIRsl) $(PROGMING_DIR)setftime $(dosPACKAGES_MSGFILES_DIRsl) $(PROGMING_DIR)ace32.exe a -av -c2 -c2e- -sfx -d1024 -m5 -r ..\MSGFILES cd $(OBJ_DIRsl) unace-2.5/apps.mk0000644000175000017500000000050307704276070014470 0ustar danieldaniel00000000000000APPS_SRCS = $(SRCS)apps/ APPS_OBJ_DIR = $(OBJ_DIR)apps/ ############################################################################## ############################################################################## include $(MAKE_DIR)exe.mk include $(MAKE_DIR)unace.mk unace-2.5/base.mk0000644000175000017500000004345407761446604014460 0ustar danieldaniel00000000000000BASE_SRCS = $(SRCS)base/ BASE_ALL_SRCS = $(BASE_SRCS)all/ BASE_OBJ_DIR = $(OBJ_DIR)base/ BASE_OBJ16_DIR = $(BASE_OBJ_DIR)16/ BASE_OBJ32_DIR = $(BASE_OBJ_DIR)32/ dosBASE_SRCS = $(SRCS)base\ # ############################################################################## $(BASE_OBJ32_DIR)all.obj : $(BASE_ALL_SRCS)all.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)allacl.obj : $(BASE_ALL_SRCS)allacl.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)arcblk.obj : $(BASE_ALL_SRCS)arcblk/arcblk.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_ARCHIVE_SRCS = $(BASE_ALL_SRCS)archives/################# $(BASE_OBJ32_DIR)arcace.obj : $(BASE_ARCHIVE_SRCS)ace/ace.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)arcread.obj : $(BASE_ARCHIVE_SRCS)read/read.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)arctest.obj : $(BASE_ARCHIVE_SRCS)test/test.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)arcinfo.obj : $(BASE_ALL_SRCS)arcinfo/arcinfo.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)bitwidth.obj : $(BASE_ALL_SRCS)bitwidth/bitwidth.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)bufread.obj : $(BASE_ALL_SRCS)bufread/bufread.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)comments.obj : $(BASE_ALL_SRCS)comments/comments.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_CONVERT_SRCS = $(BASE_ALL_SRCS)convert/################## $(BASE_OBJ32_DIR)convert.obj : $(BASE_CONVERT_SRCS)convert.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)connolin.obj : $(BASE_CONVERT_SRCS)nolin.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)connont.obj : $(BASE_CONVERT_SRCS)nont.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)connt.obj : $(BASE_CONVERT_SRCS)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) ############################################################################## BASE_CPRDCPR_SRCS = $(BASE_ALL_SRCS)cprdcpr/################## $(BASE_OBJ32_DIR)cdhuff.obj : $(BASE_CPRDCPR_SRCS)huff/huff.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)cdpic.obj : $(BASE_CPRDCPR_SRCS)pic/pic.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)cdsound.obj : $(BASE_CPRDCPR_SRCS)sound/sound.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)crc.obj : $(BASE_ALL_SRCS)crc/crc.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)crcasm.obj : $(BASE_ALL_SRCS)crc/asm/crc.asm .AUTODEPEND $(COMPILE_A) ############################################################################## $(BASE_OBJ32_DIR)crypt.obj : $(BASE_ALL_SRCS)crypt/crypt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_DCPR_SRCS = $(BASE_ALL_SRCS)dcpr/##################### $(BASE_OBJ32_DIR)dcpr.obj : $(BASE_DCPR_SRCS)dcpr.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dcprcomm.obj : $(BASE_DCPR_SRCS)comments/comments.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dcprhuff.obj : $(BASE_DCPR_SRCS)huff/huff.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dcprlz77.obj : $(BASE_DCPR_SRCS)lz77/lz77.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dcprpic.obj : $(BASE_DCPR_SRCS)pic/pic.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dcprsnd.obj : $(BASE_DCPR_SRCS)sound/sound.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)soundasm.obj : $(BASE_DCPR_SRCS)sound/asm/sound.asm .AUTODEPEND $(COMPILE_A) $(BASE_OBJ32_DIR)picasm.obj : $(BASE_DCPR_SRCS)pic/asm/pic.asm .AUTODEPEND $(COMPILE_A) $(BASE_OBJ32_DIR)lz77asm.obj : $(BASE_DCPR_SRCS)lz77/asm/lz77.asm .AUTODEPEND $(COMPILE_A) ############################################################################## $(BASE_OBJ32_DIR)dirdata.obj : $(BASE_ALL_SRCS)dirdata/dirdata.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_DOSFUNCS_SRCS = $(BASE_ALL_SRCS)dosfuncs/################# $(BASE_OBJ32_DIR)dosfuncs.obj : $(BASE_DOSFUNCS_SRCS)dosfuncs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dosfi64.obj : $(BASE_DOSFUNCS_SRCS)i64.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dosfni64.obj : $(BASE_DOSFUNCS_SRCS)noi64.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dfni64wt.obj : $(BASE_DOSFUNCS_SRCS)noi64wat.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dosfnocw.obj : $(BASE_DOSFUNCS_SRCS)nocw.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dosfnont.obj : $(BASE_DOSFUNCS_SRCS)nont.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dosfnt.obj : $(BASE_DOSFUNCS_SRCS)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(BASE_OBJ32_DIR)dfnocwnt.obj : $(BASE_DOSFUNCS_SRCS)nocwnt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)dfnolin.obj : $(BASE_DOSFUNCS_SRCS)nolin.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)error.obj : $(BASE_ALL_SRCS)error/error.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)errorout.obj : $(BASE_ALL_SRCS)errorout/errorout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)extract.obj : $(BASE_ALL_SRCS)extract/extract.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)filelist.obj : $(BASE_ALL_SRCS)filelist/filelist.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)funcs.obj : $(BASE_ALL_SRCS)funcs/funcs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_LFN_SRCS = $(BASE_ALL_SRCS)lfn/###################### $(BASE_OBJ32_DIR)lfn.obj : $(BASE_LFN_SRCS)lfn.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)lfndos.obj : $(BASE_LFN_SRCS)dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)lfndosas.obj : $(BASE_LFN_SRCS)dos32.asm .AUTODEPEND $(COMPILE_A) $(BASE_OBJ32_DIR)lfnnt.obj : $(BASE_LFN_SRCS)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(BASE_OBJ32_DIR)lfnntdos.obj : $(BASE_LFN_SRCS)nont.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)lfnntos2.obj : $(BASE_LFN_SRCS)nont.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) $(BASE_OBJ32_DIR)lfnnodos.obj : $(BASE_LFN_SRCS)nodos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)lfnos2.obj : $(BASE_LFN_SRCS)os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) ############################################################################## BASE_MEMORY_SRCS = $(BASE_ALL_SRCS)memory/################### $(BASE_OBJ32_DIR)memory.obj : $(BASE_MEMORY_SRCS)memory.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)memdos.obj : $(BASE_MEMORY_SRCS)dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)memdosas.obj : $(BASE_MEMORY_SRCS)dos32.asm .AUTODEPEND $(COMPILE_A) $(BASE_OBJ32_DIR)memndos.obj : $(BASE_MEMORY_SRCS)nodos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(BASE_OBJ32_DIR)memnt.obj : $(BASE_MEMORY_SRCS)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(BASE_OBJ32_DIR)memos2.obj : $(BASE_MEMORY_SRCS)os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) $(BASE_OBJ32_DIR)memnocw.obj : $(BASE_MEMORY_SRCS)wat.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)msgout.obj : $(BASE_ALL_SRCS)msgout/msgout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)options.obj : $(BASE_ALL_SRCS)options/options.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)pathfunc.obj : $(BASE_ALL_SRCS)pathfunc/pathfunc.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)qsort.obj : $(BASE_ALL_SRCS)qsort/qsort.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)qsortasm.obj : $(BASE_ALL_SRCS)qsort/asm/qsort.asm .AUTODEPEND $(COMPILE_A) ############################################################################## $(BASE_OBJ32_DIR)state.obj : $(BASE_ALL_SRCS)state/state.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)sysdos32.obj : $(BASE_ALL_SRCS)system/dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(BASE_OBJ32_DIR)sysd32as.obj : $(BASE_ALL_SRCS)system/dos32.asm .AUTODEPEND $(COMPILE_A) ############################################################################## $(BASE_OBJ32_DIR)uninorm.obj : $(BASE_ALL_SRCS)uninorm/uninorm.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)unincore.obj : $(BASE_ALL_SRCS)uninorm/unincore.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_OBJ32_DIR)volume.obj : $(BASE_ALL_SRCS)volume/volume.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_ALL_CFILES = \ $(BASE_ALL_SRCS)all.c $(BASE_ALL_SRCS)arcblk/arcblk.c \ $(BASE_ARCHIVE_SRCS)ace/ace.c $(BASE_ARCHIVE_SRCS)read/read.c \ $(BASE_ARCHIVE_SRCS)test/test.c $(BASE_ALL_SRCS)arcinfo/arcinfo.c \ $(BASE_ALL_SRCS)bitwidth/bitwidth.c $(BASE_ALL_SRCS)bufread/bufread.c \ $(BASE_ALL_SRCS)comments/comments.c $(BASE_CONVERT_SRCS)convert.c \ $(BASE_CONVERT_SRCS)lin.c $(BASE_CONVERT_SRCS)nont.c \ $(BASE_CPRDCPR_SRCS)huff/huff.c \ $(BASE_CPRDCPR_SRCS)pic/pic.c $(BASE_CPRDCPR_SRCS)sound/sound.c \ $(BASE_ALL_SRCS)crc/crc.c \ $(BASE_ALL_SRCS)crypt/crypt.c $(BASE_DCPR_SRCS)dcpr.c \ $(BASE_DCPR_SRCS)comments/comments.c $(BASE_DCPR_SRCS)huff/huff.c \ $(BASE_DCPR_SRCS)lz77/lz77.c $(BASE_DCPR_SRCS)pic/pic.c \ $(BASE_DCPR_SRCS)sound/sound.c $(BASE_ALL_SRCS)dirdata/dirdata.c \ $(BASE_DOSFUNCS_SRCS)noi64.c $(BASE_DOSFUNCS_SRCS)dosfuncs.c \ $(BASE_DOSFUNCS_SRCS)noi64lin.c \ $(BASE_DOSFUNCS_SRCS)lin.c \ $(BASE_ALL_SRCS)error/error.c $(BASE_ALL_SRCS)errorout/errorout.c \ $(BASE_ALL_SRCS)extract/extract.c $(BASE_ALL_SRCS)filelist/filelist.c \ $(BASE_ALL_SRCS)funcs/funcs.c $(BASE_LFN_SRCS)lfn.c \ $(BASE_LFN_SRCS)lin.c \ $(BASE_LFN_SRCS)nont.c $(BASE_LFN_SRCS)nodos32.c \ $(BASE_MEMORY_SRCS)memory.c \ $(BASE_MEMORY_SRCS)nodos32.c \ $(BASE_MEMORY_SRCS)nowat.c \ $(BASE_ALL_SRCS)msgout/msgout.c \ $(BASE_ALL_SRCS)options/options.c $(BASE_ALL_SRCS)pathfunc/pathfunc.c \ $(BASE_ALL_SRCS)qsort/qsort.c $(BASE_ALL_SRCS)state/state.c \ $(BASE_ALL_SRCS)uninorm/uninorm.c $(BASE_ALL_SRCS)uninorm/unincore.c \ $(BASE_ALL_SRCS)volume/volume.c BASE_ALL_NT_CFILES = \ $(BASE_ALL_CFILES) \ $(BASE_MEMORY_SRCS)nowatnt.c BASE_ALL_LIN_CFILES = \ $(BASE_ALL_CFILES) \ $(BASE_MEMORY_SRCS)lin.c ############################################################################## ############################################################################## BASE_DCPR_OBJS = \ $(BASE_OBJ32_DIR)dcpr.obj $(BASE_OBJ32_DIR)dcprcomm.obj \ $(BASE_OBJ32_DIR)dcprhuff.obj $(BASE_OBJ32_DIR)dcprpic.obj \ $(BASE_OBJ32_DIR)dcprlz77.obj $(BASE_OBJ32_DIR)dcprsnd.obj \ $(BASE_OBJ32_DIR)lz77asm.obj $(BASE_OBJ32_DIR)picasm.obj \ $(BASE_OBJ32_DIR)soundasm.obj BASE_ALL_OBJS_NO_ALL_OBJ = \ $(BASE_DCPR_OBJS) \ $(BASE_OBJ32_DIR)arcace.obj $(BASE_OBJ32_DIR)arcread.obj \ $(BASE_OBJ32_DIR)arcblk.obj $(BASE_OBJ32_DIR)arctest.obj \ $(BASE_OBJ32_DIR)arcinfo.obj $(BASE_OBJ32_DIR)bitwidth.obj \ $(BASE_OBJ32_DIR)bufread.obj $(BASE_OBJ32_DIR)comments.obj \ $(BASE_OBJ32_DIR)convert.obj $(BASE_OBJ32_DIR)connolin.obj \ $(BASE_OBJ32_DIR)cdhuff.obj \ $(BASE_OBJ32_DIR)cdpic.obj $(BASE_OBJ32_DIR)cdsound.obj \ $(BASE_OBJ32_DIR)crc.obj $(BASE_OBJ32_DIR)crcasm.obj \ $(BASE_OBJ32_DIR)crypt.obj $(BASE_OBJ32_DIR)dirdata.obj \ $(BASE_OBJ32_DIR)dosfuncs.obj $(BASE_OBJ32_DIR)dosfnocw.obj \ $(BASE_OBJ32_DIR)dfnolin.obj \ $(BASE_OBJ32_DIR)error.obj $(BASE_OBJ32_DIR)errorout.obj \ $(BASE_OBJ32_DIR)extract.obj $(BASE_OBJ32_DIR)filelist.obj \ $(BASE_OBJ32_DIR)funcs.obj $(BASE_OBJ32_DIR)lfn.obj \ $(BASE_OBJ32_DIR)memory.obj $(BASE_OBJ32_DIR)memnocw.obj \ $(BASE_OBJ32_DIR)msgout.obj $(BASE_OBJ32_DIR)options.obj \ $(BASE_OBJ32_DIR)pathfunc.obj $(BASE_OBJ32_DIR)qsort.obj \ $(BASE_OBJ32_DIR)qsortasm.obj \ $(BASE_OBJ32_DIR)state.obj $(BASE_OBJ32_DIR)volume.obj BASE_ALL_OBJS = \ $(BASE_ALL_OBJS_NO_ALL_OBJ) $(BASE_OBJ32_DIR)all.obj BASE_ALLACL_OBJS = \ $(BASE_ALL_OBJS_NO_ALL_OBJ) $(BASE_OBJ32_DIR)allacl.obj ############################################################################## BASE_DOS_OBJS = \ $(BASE_OBJ32_DIR)connont.obj \ $(BASE_OBJ32_DIR)dosfni64.obj $(BASE_OBJ32_DIR)dfni64wt.obj \ $(BASE_OBJ32_DIR)dfnocwnt.obj $(BASE_OBJ32_DIR)lfndosas.obj \ $(BASE_OBJ32_DIR)lfndos.obj $(BASE_OBJ32_DIR)lfnntdos.obj \ $(BASE_OBJ32_DIR)memdos.obj $(BASE_OBJ32_DIR)memdosas.obj \ $(BASE_OBJ32_DIR)sysdos32.obj $(BASE_OBJ32_DIR)sysd32as.obj \ $(BASE_OBJ32_DIR)dosfnont.obj BASE_NT_OBJS = \ $(BASE_OBJ32_DIR)connt.obj \ $(BASE_OBJ32_DIR)lfnnodos.obj $(BASE_OBJ32_DIR)lfnnt.obj \ $(BASE_OBJ32_DIR)memndos.obj $(BASE_OBJ32_DIR)memnt.obj \ $(BASE_OBJ32_DIR)dosfi64.obj $(BASE_OBJ32_DIR)dosfnt.obj BASE_OS2_OBJS = \ $(BASE_OBJ32_DIR)connont.obj $(BASE_OBJ32_DIR)dosfni64.obj \ $(BASE_OBJ32_DIR)dfni64wt.obj $(BASE_OBJ32_DIR)dfnocwnt.obj \ $(BASE_OBJ32_DIR)lfnnodos.obj $(BASE_OBJ32_DIR)lfnos2.obj \ $(BASE_OBJ32_DIR)lfnntos2.obj $(BASE_OBJ32_DIR)memndos.obj \ $(BASE_OBJ32_DIR)memos2.obj $(BASE_OBJ32_DIR)dosfnont.obj ############################################################################## ifndef ISWMAKE include $(MAKE_DIR)baseace.mk include $(MAKE_DIR)baseuace.mk else !include $(MAKE_DIR)baseace.mk !include $(MAKE_DIR)baseuace.mk endif unace-2.5/baseuace.mk0000644000175000017500000000561207704231604015275 0ustar danieldaniel00000000000000BASE_UNACE_SRCS = $(BASE_SRCS)unace/ BASE_UNACE_OBJ_DIR = $(BASE_OBJ_DIR)unace/ BASE_UNACE_EXT_OBJ_DIR = $(BASE_UNACE_OBJ_DIR)ext/ ############################################################################## BASE_UNACE_EXT_SRCS = $(BASE_UNACE_SRCS)extern/############# $(BASE_UNACE_EXT_OBJ_DIR)arcace.obj : $(BASE_UNACE_EXT_SRCS)arcace/arcace.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_UNACE_EXT_OBJ_DIR)arcblk.obj : $(BASE_UNACE_EXT_SRCS)arcblk/arcblk.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_UNACE_EXT_OBJ_DIR)arcinfo.obj : $(BASE_UNACE_EXT_SRCS)arcinfo/arcinfo.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_UNACE_EXT_OBJ_DIR)dcpr.obj : $(BASE_UNACE_EXT_SRCS)dcpr/dcpr.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_UNACE_EXT_OBJ_DIR)extract.obj : $(BASE_UNACE_EXT_SRCS)extract/extract.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_UNACE_EXT_OBJ_DIR)filelist.obj : $(BASE_UNACE_EXT_SRCS)filelist/filelist.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(BASE_UNACE_EXT_OBJ_DIR)memory.obj : $(BASE_UNACE_EXT_SRCS)memory/memory.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## BASE_UNACE_CFILES = \ $(BASE_UNACE_EXT_SRCS)arcace/arcace.c $(BASE_UNACE_EXT_SRCS)arcblk/arcblk.c \ $(BASE_UNACE_EXT_SRCS)arcinfo/arcinfo.c $(BASE_UNACE_EXT_SRCS)dcpr/dcpr.c \ $(BASE_UNACE_EXT_SRCS)extract/extract.c $(BASE_UNACE_EXT_SRCS)filelist/filelist.c \ $(BASE_UNACE_EXT_SRCS)memory/memory.c ############################################################################## ############################################################################## BASE_UNACE_EXT_OBJS = \ $(BASE_UNACE_EXT_OBJ_DIR)arcace.obj $(BASE_UNACE_EXT_OBJ_DIR)arcblk.obj \ $(BASE_UNACE_EXT_OBJ_DIR)arcinfo.obj \ $(BASE_UNACE_EXT_OBJ_DIR)dcpr.obj $(BASE_UNACE_EXT_OBJ_DIR)extract.obj \ $(BASE_UNACE_EXT_OBJ_DIR)filelist.obj $(BASE_UNACE_EXT_OBJ_DIR)memory.obj BASE_UNACE_OBJS = \ $(BASE_UNACE_EXT_OBJS) ############################################################################## unace-2.5/exe.mk0000644000175000017500000003276407704233414014317 0ustar danieldaniel00000000000000EXE_SRCS = $(APPS_SRCS)exe/ EXE_OBJ_DIR = $(APPS_OBJ_DIR)exe/ EXE_OBJ16_DIR = $(EXE_OBJ_DIR)16/ EXE_OBJ32_DIRsl = $(EXE_OBJ_DIR)32 EXE_OBJ32_DIR = $(EXE_OBJ_DIR)32/ EXEEXT_OBJ16_DIR = $(EXE_OBJ16_DIR)ext/ EXEEXT_OBJ32_DIR = $(EXE_OBJ32_DIR)ext/ dosEXE_SRCS = $(dosAPPS_SRCS)exe\ # ############################################################################## EXE_EXT_SRCS = $(EXE_SRCS)extern/######################## $(EXEEXT_OBJ32_DIR)arcblk.obj : $(EXE_EXT_SRCS)arcblk/arcblk.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)comments.obj : $(EXE_EXT_SRCS)comments/comments.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)crypt.obj : $(EXE_EXT_SRCS)crypt/crypt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## EXE_EXT_ERROR_SRCS = $(EXE_EXT_SRCS)error/##################### $(EXEEXT_OBJ32_DIR)error.obj : $(EXE_EXT_ERROR_SRCS)error.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXEEXT_OBJ32_DIR)erros2.obj : $(EXE_EXT_ERROR_SRCS)os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) $(EXEEXT_OBJ32_DIR)errnt.obj : $(EXE_EXT_ERROR_SRCS)ntlin.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXEEXT_OBJ32_DIR)errdos32.obj : $(EXE_EXT_ERROR_SRCS)dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)errorout.obj : $(EXE_EXT_SRCS)errorout/errorout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)filelist.obj : $(EXE_EXT_SRCS)filelist/filelist.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)funcs.obj : $(EXE_EXT_SRCS)funcs/funcs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)msgout.obj : $(EXE_EXT_SRCS)msgout/msgout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)state.obj : $(EXE_EXT_SRCS)state/state.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXEEXT_OBJ32_DIR)volume.obj : $(EXE_EXT_SRCS)volume/volume.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ############################################################################## ############################################################################## $(EXE_OBJ32_DIR)acefuncs.obj : $(EXE_SRCS)acefuncs/acefuncs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXE_OBJ32_DIR)commline.obj : $(EXE_SRCS)commline/commline.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXE_OBJ32_DIR)convert.obj : $(EXE_SRCS)convert/convert.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## EXE_INPUT_DIR = $(EXE_SRCS)input/######################### $(EXE_OBJ32_DIR)input.obj : $(EXE_INPUT_DIR)input.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXE_OBJ32_DIR)inputdos.obj : $(EXE_INPUT_DIR)dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXE_OBJ32_DIR)inputnt.obj : $(EXE_INPUT_DIR)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(EXE_OBJ32_DIR)inputos2.obj : $(EXE_INPUT_DIR)os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) ############################################################################## MESSAGEDIR = $(EXE_SRCS)messages/###################### MSGFILESDIR = $(MESSAGEDIR)msgfiles/#################### MSGFILESDIRsl = $(MESSAGEDIR)msgfiles##################### dosMESSAGEDIR = $(dosEXE_SRCS)messages\################### dosMSGFILESDIR = $(dosMESSAGEDIR)msgfiles\################# $(EXECS_MSGFILES_DIR)unacebru.msg : $(MSGFILESDIR)bru.msd \ $(MSGFILESDIR)bru.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)bru.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)bru.msd $(MSGFILESDIR)bru.msg $@ $(EXECS_MSGFILES_DIR)unaceczc.msg : $(MSGFILESDIR)czc.msd \ $(MSGFILESDIR)czc.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)czc.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)czc.msd $(MSGFILESDIR)czc.msg $@ $(EXECS_MSGFILES_DIR)unacedut.msg : $(MSGFILESDIR)dut.msd \ $(MSGFILESDIR)dut.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)dut.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)dut.msd $(MSGFILESDIR)dut.msg $@ $(EXECS_MSGFILES_DIR)unacefin.msg : $(MSGFILESDIR)fin.msd \ $(MSGFILESDIR)fin.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)fin.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)fin.msd $(MSGFILESDIR)fin.msg $@ $(EXECS_MSGFILES_DIR)unaceger.msg : $(MSGFILESDIR)ger.msd \ $(MSGFILESDIR)ger.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)ger.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)ger.msd $(MSGFILESDIR)ger.msg $@ $(EXECS_MSGFILES_DIR)unacegrk.msg : $(MSGFILESDIR)grk.msd \ $(MSGFILESDIR)grk.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)grk.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)grk.msd $(MSGFILESDIR)grk.msg $@ $(EXECS_MSGFILES_DIR)unacehun.msg : $(MSGFILESDIR)hun.msd \ $(MSGFILESDIR)hun.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)hun.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)hun.msd $(MSGFILESDIR)hun.msg $@ $(EXECS_MSGFILES_DIR)unacenwg.msg : $(MSGFILESDIR)nwg.msd \ $(MSGFILESDIR)nwg.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)nwg.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)nwg.msd $(MSGFILESDIR)nwg.msg $@ $(EXECS_MSGFILES_DIR)unacepol.msg : $(MSGFILESDIR)pol.msd \ $(MSGFILESDIR)pol.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)pol.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)pol.msd $(MSGFILESDIR)pol.msg $@ $(EXECS_MSGFILES_DIR)unacepor.msg : $(MSGFILESDIR)por.msd \ $(MSGFILESDIR)por.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)por.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)por.msd $(MSGFILESDIR)por.msg $@ $(EXECS_MSGFILES_DIR)unacerom.msg : $(MSGFILESDIR)rom.msd \ $(MSGFILESDIR)rom.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)rom.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)rom.msd $(MSGFILESDIR)rom.msg $@ $(EXECS_MSGFILES_DIR)unacerus.msg : $(MSGFILESDIR)rus.msd \ $(MSGFILESDIR)rus.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)rus.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)rus.msd $(MSGFILESDIR)rus.msg $@ $(EXECS_MSGFILES_DIR)unacespa.msg : $(MSGFILESDIR)spa.msd \ $(MSGFILESDIR)spa.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)spa.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)spa.msd $(MSGFILESDIR)spa.msg $@ $(EXECS_MSGFILES_DIR)unaceswe.msg : $(MSGFILESDIR)swe.msd \ $(MSGFILESDIR)swe.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)swe.msg $(PROGMING_DIR)msgwrite 0 $(MSGFILESDIR)swe.msd $(MSGFILESDIR)swe.msg $@ $(EXE_OBJ_DIR)eng.msg : $(MSGFILESDIR)eng.msd \ $(MSGFILESDIR)eng.msg .AUTODEPEND $(PROGMING_DIR)del_cr $(MSGFILESDIR)eng.msg cd $(MSGFILESDIR) $(PROGMING_DIR)msgwrite 0 eng.msd eng.msg $@ cd $(OBJ_DIRsl) $(EXE_OBJ32_DIR)eng.obj : $(EXE_OBJ_DIR)eng.msg .AUTODEPEND cd $(EXE_OBJ32_DIRsl) $(PROGMING_DIR)binobj $(EXE_OBJ_DIR)eng.msg eng.obj APPS_EXE_MESSAGES_EXTERN_ENGLISH_ $(PROGMING_DIR)msgtoc $(MSGFILESDIR)eng.c $(EXE_OBJ_DIR)eng.msg cd $(OBJ_DIRsl) $(EXE_OBJ32_DIR)messages.obj : $(MESSAGEDIR)messages.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXE_OBJ32_DIR)outpterr.obj : $(EXE_SRCS)outpterr/outpterr.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(EXE_OBJ32_DIR)output.obj : $(EXE_SRCS)output/output.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXE_OBJ32_DIR)outdos32.obj : $(EXE_SRCS)output/dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXE_OBJ32_DIR)outdosas.obj : $(EXE_SRCS)output/dos32.asm .AUTODEPEND $(COMPILE_A) $(EXE_OBJ32_DIR)outnt.obj : $(EXE_SRCS)output/nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(EXE_OBJ32_DIR)outos2.obj : $(EXE_SRCS)output/os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) ############################################################################## EXE_STATE_SRCS = $(EXE_SRCS)state/######################### $(EXE_OBJ32_DIR)state.obj : $(EXE_STATE_SRCS)state.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(EXE_OBJ32_DIR)statewat.obj : $(EXE_STATE_SRCS)watcom.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## APPS_EXE_CFILES = \ $(EXE_EXT_SRCS)arcblk/arcblk.c $(EXE_EXT_SRCS)comments/comments.c \ $(EXE_EXT_SRCS)crypt/crypt.c $(EXE_EXT_ERROR_SRCS)error.c \ $(EXE_EXT_ERROR_SRCS)ntlin.c \ $(EXE_EXT_SRCS)errorout/errorout.c $(EXE_EXT_SRCS)filelist/filelist.c \ $(EXE_EXT_SRCS)funcs/funcs.c $(EXE_EXT_SRCS)msgout/msgout.c \ $(EXE_EXT_SRCS)state/state.c $(EXE_EXT_SRCS)volume/volume.c \ $(EXE_SRCS)acefuncs/acefuncs.c $(EXE_SRCS)commline/commline.c \ $(EXE_SRCS)convert/convert.c $(EXE_INPUT_DIR)input.c \ $(EXE_INPUT_DIR)lin.c \ $(MSGFILESDIR)eng.c $(MESSAGEDIR)messages.c \ $(EXE_SRCS)outpterr/outpterr.c $(EXE_SRCS)output/output.c \ $(EXE_SRCS)output/lin.c \ $(EXE_STATE_SRCS)state.c $(EXE_STATE_SRCS)gcc.c ############################################################################## EXEEXT_DOS_OBJS = \ $(EXEEXT_OBJ32_DIR)errdos32.obj $(EXE_OBJ32_DIR)outdos32.obj EXEEXT_NT_OBJS = \ $(EXEEXT_OBJ32_DIR)errnt.obj $(EXE_OBJ32_DIR)outnt.obj EXEEXT_OS2_OBJS = \ $(EXEEXT_OBJ32_DIR)erros2.obj $(EXE_OBJ32_DIR)outos2.obj ############################################################################## ############################################################################## APPS_EXEEXT_OBJS = \ $(EXEEXT_OBJ32_DIR)arcblk.obj $(EXEEXT_OBJ32_DIR)comments.obj \ $(EXEEXT_OBJ32_DIR)crypt.obj $(EXEEXT_OBJ32_DIR)errorout.obj \ $(EXEEXT_OBJ32_DIR)error.obj $(EXEEXT_OBJ32_DIR)filelist.obj \ $(EXEEXT_OBJ32_DIR)funcs.obj $(EXEEXT_OBJ32_DIR)msgout.obj \ $(EXEEXT_OBJ32_DIR)state.obj $(EXEEXT_OBJ32_DIR)volume.obj APPS_EXE_OBJS = \ $(APPS_EXEEXT_OBJS) \ $(EXE_OBJ32_DIR)acefuncs.obj \ $(EXE_OBJ32_DIR)commline.obj \ $(EXE_OBJ32_DIR)convert.obj $(EXE_OBJ32_DIR)input.obj \ $(EXE_OBJ32_DIR)messages.obj $(EXE_OBJ32_DIR)outpterr.obj \ $(EXE_OBJ32_DIR)output.obj $(EXE_OBJ32_DIR)state.obj \ $(EXE_OBJ32_DIR)statewat.obj unace-2.5/makefile0000644000175000017500000000236007760240650014674 0ustar danieldaniel00000000000000DEBUG = 1 BASIC_DIRsl = BASIC_DIR = MAKE_DIRsl = MAKE_DIR = EXECS_DIR = EXECS_DIRsl = PACKAGES_DIR = PACKAGES_DIRsl = SRCSsl = $(BASIC_DIR)source SRCS = $(SRCSsl)/ INCLSYSDIR = //usr/include/sys INCLDIR = //usr/include DEFINES = -D__LINUX__ -D__unix__ -D__GCC__ -D__HAS_IO_H__ ifdef DEBUG LSWITCHES = else LSWITCHES = -Wl,-s endif ############################################################################## all: unace clean: rm unace rm linunace25.tgz include $(MAKE_DIR)base.mk include $(MAKE_DIR)apps.mk ############################################################################## UNACEEXELIN_CFILES = \ $(BASE_ALL_LIN_CFILES) $(BASE_UNACE_CFILES) \ $(APPS_EXE_CFILES) $(APPS_UNACE_CFILES) \ $(APPS_UNACEEXE_CFILES) UNACEEXENT_CFILES = \ $(BASE_ALL_NT_CFILES) $(BASE_UNACE_CFILES) \ $(APPS_EXE_CFILES) $(APPS_UNACE_CFILES) \ $(APPS_UNACEEXE_CFILES) unace: $(UNACEEXELIN_CFILES) gcc $(LSWITCHES) -Wl,-lncurses -static -I$(INCLDIR) -I$(INCLSYSDIR) -I$(SRCSsl) $(DEFINES) $(UNACEEXELIN_CFILES) -ggdb -o$(EXECS_DIR)unace ifndef DEBUG tar cfvz linunace25.tgz unace file_id.diz licence #sh linpack.sh endif unace-2.5/makefile.osx0000644000175000017500000000227007753655000015505 0ustar danieldaniel00000000000000#DEBUG = 1 BASIC_DIRsl = BASIC_DIR = MAKE_DIRsl = MAKE_DIR = EXECS_DIR = EXECS_DIRsl = PACKAGES_DIR = PACKAGES_DIRsl = SRCSsl = $(BASIC_DIR)source SRCS = $(SRCSsl)/ INCLSYSDIR = //usr/include/sys INCLDIR = //usr/include DEFINES = -D__MACOSX__ -D__unix__ -D__GCC__ ifdef DEBUG LSWITCHES = else LSWITCHES = -Wl,-s endif ############################################################################## all: unace clean: rm unace rm linunace25.tgz include $(MAKE_DIR)base.mk include $(MAKE_DIR)apps.mk ############################################################################## UNACEEXELIN_CFILES = \ $(BASE_ALL_LIN_CFILES) $(BASE_UNACE_CFILES) \ $(APPS_EXE_CFILES) $(APPS_UNACE_CFILES) \ $(APPS_UNACEEXE_CFILES) UNACEEXENT_CFILES = \ $(BASE_ALL_NT_CFILES) $(BASE_UNACE_CFILES) \ $(APPS_EXE_CFILES) $(APPS_UNACE_CFILES) \ $(APPS_UNACEEXE_CFILES) unace: $(UNACEEXELIN_CFILES) gcc $(LSWITCHES) -Wl,-lncurses -static -I$(INCLDIR) -I$(INCLSYSDIR) -I$(SRCSsl) $(DEFINES) $(UNACEEXELIN_CFILES) -ggdb -o$(EXECS_DIR)unace ifndef DEBUG tar cfvz linunace25.tgz unace file_id.diz licence #sh linpack.sh endif unace-2.5/makefile.sun0000644000175000017500000000221407761500474015502 0ustar danieldaniel00000000000000#DEBUG = 1 BASIC_DIRsl = BASIC_DIR = MAKE_DIRsl = MAKE_DIR = EXECS_DIR = EXECS_DIRsl = PACKAGES_DIR = PACKAGES_DIRsl = SRCSsl = $(BASIC_DIR)source SRCS = $(SRCSsl)/ INCLBASE = $(SRCS)base/all DEFINES = -D__unix__ -D__GCC__ -D__BIG_ENDIAN__ -D__EMULATE_UNALIGNED__ ifdef DEBUG LSWITCHES = else LSWITCHES = -Wl,-s -O3 endif ############################################################################## all: unace clean: rm unace rm sunace25.tgz include $(MAKE_DIR)base.mk include $(MAKE_DIR)apps.mk ############################################################################## UNACEEXELIN_CFILES = \ $(BASE_ALL_LIN_CFILES) $(BASE_UNACE_CFILES) \ $(APPS_EXE_CFILES) $(APPS_UNACE_CFILES) \ $(APPS_UNACEEXE_CFILES) UNACEEXENT_CFILES = \ $(BASE_ALL_NT_CFILES) $(BASE_UNACE_CFILES) \ $(APPS_EXE_CFILES) $(APPS_UNACE_CFILES) \ $(APPS_UNACEEXE_CFILES) unace: $(UNACEEXELIN_CFILES) gcc $(LSWITCHES) -static -I$(SRCSsl) -I$(INCLBASE) $(DEFINES) $(UNACEEXELIN_CFILES) -g -o$(EXECS_DIR)unace ifndef DEBUG tar cfv sunace25.tgz unace file_id.diz licence endif unace-2.5/unace.mk0000644000175000017500000000255607761446732014641 0ustar danieldaniel00000000000000UNACE_SRCS = $(APPS_SRCS)unace/ UNACEALL_SRCS = $(UNACE_SRCS)all/ UNACE_OBJ_DIR = $(APPS_OBJ_DIR)unace/ UNACE_EXT_OBJ_DIR = $(UNACE_OBJ_DIR)ext/ ############################################################################## UNACE_EXT_SRCS = $(UNACEALL_SRCS)extern/################# $(UNACE_EXT_OBJ_DIR)arctest.obj : $(UNACE_EXT_SRCS)arctest/arctest.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACE_EXT_OBJ_DIR)funcs.obj : $(UNACE_EXT_SRCS)funcs/funcs.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## APPS_UNACE_CFILES = \ $(UNACE_EXT_SRCS)arctest/arctest.c $(UNACE_EXT_SRCS)funcs/funcs.c ############################################################################## APPS_UNACE_OBJS = \ $(UNACE_EXT_OBJ_DIR)arctest.obj $(UNACE_EXT_OBJ_DIR)funcs.obj ############################################################################## ifndef ISWMAKE include $(MAKE_DIR)unaceexe.mk include $(MAKE_DIR)unacedll.mk else !include $(MAKE_DIR)unaceexe.mk !include $(MAKE_DIR)unacedll.mk endif unace-2.5/unaceexe.mk0000644000175000017500000001450607704233514015326 0ustar danieldaniel00000000000000UNACEEXE_SRCS = $(UNACE_SRCS)exe/ UNACEEXE_EXT_SRCS = $(UNACEEXE_SRCS)extern/ UNACEEXE_OBJ_DIR = $(APPS_OBJ_DIR)unaceexe/ UNACEEXE_EXT_OBJ_DIR = $(UNACEEXE_OBJ_DIR)ext/ SFXDDIR = $(BASE_SRCS)ace/sfx/ ############################################################################## UNACEEXE_EXT_SRCS = $(UNACEEXE_SRCS)extern/########################### $(UNACEEXE_EXT_OBJ_DIR)arcblk.obj : $(UNACEEXE_EXT_SRCS)arcblk/arcblk.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)arcread.obj : $(UNACEEXE_EXT_SRCS)arcread/arcread.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)comments.obj : $(UNACEEXE_EXT_SRCS)comments/comments.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)error.obj : $(UNACEEXE_EXT_SRCS)error/error.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)filelist.obj : $(UNACEEXE_EXT_SRCS)filelist/filelist.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)input.obj : $(UNACEEXE_EXT_SRCS)input/input.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(UNACEEXE_EXT_OBJ_DIR)inpnt.obj : $(UNACEEXE_EXT_SRCS)input/nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)messages.obj : $(UNACEEXE_EXT_SRCS)messages/messages.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)msgout.obj : $(UNACEEXE_EXT_SRCS)msgout/msgout.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)options.obj : $(UNACEEXE_EXT_SRCS)options/options.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)output.obj : $(UNACEEXE_EXT_SRCS)output/output.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)volume.obj : $(UNACEEXE_EXT_SRCS)volume/volume.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_EXT_OBJ_DIR)state.obj : $(UNACEEXE_EXT_SRCS)state/state.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## ############################################################################## ############################################################################## $(UNACEEXE_OBJ_DIR)commline.obj : $(UNACEEXE_SRCS)commline/commline.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(UNACEEXE_OBJ_DIR)clhelp.obj : $(UNACEEXE_SRCS)commline/help/help.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) ############################################################################## $(UNACEEXE_OBJ_DIR)exe.obj : $(UNACEEXE_SRCS)exe.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(UNACEEXE_OBJ_DIR)exent.obj : $(UNACEEXE_SRCS)nt.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_WIN32) $(UNACEEXE_OBJ_DIR)exedos32.obj : $(UNACEEXE_SRCS)dos32.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_DOS32) $(UNACEEXE_OBJ_DIR)exeos2.obj : $(UNACEEXE_SRCS)os2.c .AUTODEPEND SET WCC386 = $(CFLAGS) $(CC_OS2) ############################################################################## APPS_UNACEEXE_CFILES = \ $(UNACEEXE_EXT_SRCS)arcblk/arcblk.c $(UNACEEXE_EXT_SRCS)arcread/arcread.c \ $(UNACEEXE_EXT_SRCS)comments/comments.c $(UNACEEXE_EXT_SRCS)error/error.c \ $(UNACEEXE_EXT_SRCS)filelist/filelist.c $(UNACEEXE_EXT_SRCS)input/input.c \ $(UNACEEXE_EXT_SRCS)messages/messages.c \ $(UNACEEXE_EXT_SRCS)msgout/msgout.c $(UNACEEXE_EXT_SRCS)options/options.c \ $(UNACEEXE_EXT_SRCS)output/output.c $(UNACEEXE_EXT_SRCS)volume/volume.c \ $(UNACEEXE_EXT_SRCS)state/state.c $(UNACEEXE_SRCS)commline/commline.c \ $(UNACEEXE_SRCS)commline/help/help.c $(UNACEEXE_SRCS)exe.c \ $(UNACEEXE_SRCS)lin.c ############################################################################## ############################################################################## APPS_UNACEEXE_EXT_OBJS = \ $(UNACEEXE_EXT_OBJ_DIR)arcblk.obj $(UNACEEXE_EXT_OBJ_DIR)arcread.obj \ $(UNACEEXE_EXT_OBJ_DIR)comments.obj \ $(UNACEEXE_EXT_OBJ_DIR)error.obj $(UNACEEXE_EXT_OBJ_DIR)filelist.obj\ $(UNACEEXE_EXT_OBJ_DIR)input.obj $(UNACEEXE_EXT_OBJ_DIR)messages.obj\ $(UNACEEXE_EXT_OBJ_DIR)msgout.obj $(UNACEEXE_EXT_OBJ_DIR)options.obj \ $(UNACEEXE_EXT_OBJ_DIR)output.obj $(UNACEEXE_EXT_OBJ_DIR)state.obj \ $(UNACEEXE_EXT_OBJ_DIR)volume.obj APPS_EXE_UNACEEXE_OBJS = \ $(EXE_OBJ32_DIR)eng.obj APPS_UNACEEXE_OBJS = \ $(APPS_UNACEEXE_EXT_OBJS) \ $(APPS_UNACE_OBJS) $(APPS_EXE_OBJS) \ $(APPS_EXE_UNACEEXE_OBJS) $(UNACEEXE_OBJ_DIR)commline.obj \ $(UNACEEXE_OBJ_DIR)clhelp.obj $(UNACEEXE_OBJ_DIR)exe.obj ############################################################################## ############################################################################## ifndef ISWMAKE include $(MAKE_DIR)unexeln.mk else !include $(MAKE_DIR)UNEXE2.MK !include $(MAKE_DIR)UNEXE32.MK !include $(MAKE_DIR)UNEXE86.MK endif unace-2.5/unexeln.mk0000644000175000017500000000342407165676266015224 0ustar danieldaniel00000000000000APPS_UNACEEXE_NT_OBJS = \ $(BASE_NT_OBJS) \ $(EXEEXT_NT_OBJS) \ $(EXE_OBJ32_DIR)inputnt.obj \ $(UNACEEXE_EXT_OBJ_DIR)inpnt.obj $(UNACEEXE_OBJ_DIR)exent.obj #============================================================================= $(EXECS_DIR)UNACE32.EXE : \ $(BASE_ALL_OBJS) $(BASE_UNACE_OBJS) \ $(APPS_UNACEEXE_OBJS) $(APPS_UNACEEXE_NT_OBJS) \ $(RTL_NT_FILES) $(UNACEEXE_SRCS)version.rc .AUTODEPEND set LINKCMD = $(LINKFLAGS) SYS nt_nolib name $@ $(RTL_NT_EXE_CMD) # set LINKCMD = $(LINKFLAGS) SYS nt name $@ #op m=h:/unace32.map set OBJS1 = file {$(BASE_ALL_OBJS)} set OBJS2 = file {$(BASE_UNACE_EXT_OBJS)} set OBJS3 = file {$(APPS_UNACEEXE_OBJS)} set OBJS4 = file {$(APPS_UNACEEXE_NT_OBJS)} $(PROGMING_DIR)wlink110 @LINKCMD @OBJS1 @OBJS2 @OBJS3 @OBJS4 $(PROGMING_DIR)wrc $(UNACEEXE_SRCS)version.rc -bt=nt -fo=$(UNACEEXE_OBJ_DIR)version $@ $(PROGMING_DIR)upx -9 $@ set LINKCMD = set OBJS1 = set OBJS2 = set OBJS3 = set OBJS4 = $(EXECS_SFXFILES_DIR)WIN32CL.SFX : \ $(SFXDDIR)WIN32CL.SFD $(EXECS_DIR)UNACE32.EXE .AUTODEPEND $(PROGMING_DIR)sfxwrite $(SFXDDIR)WIN32CL.SFD $(EXECS_DIR)UNACE32.EXE $@ $(EXECS_SFXFILES_DIR)WIN32GUI.SFX : \ $(SFXDDIR)WIN32GUI.SFD $(SFXDDIR)WIN32GUI.EXE .AUTODEPEND $(PROGMING_DIR)sfxwrite $(SFXDDIR)WIN32GUI.SFD $(SFXDDIR)WIN32GUI.EXE $@ unace-2.5/licence0000644000175000017500000000436210124046452014515 0ustar danieldaniel00000000000000 Public UnAce Licence ---------------------- The Public UnAce Package (v2.0 or later if not otherwise stated) is distritbuted under the following licence: "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. "Distribution" as it is used here means making data available to a third party. No matter in which way the data is made available. "Copyright Holder" is ACE Compression Software. "Distribution Partner" is e-merge GmbH (authorised signatory). 1. The Standard Version of Public UnAce Package may be freely distributed. 2. The UnAce sources may be used in any software to handle ACE archives without limitations free of charge, but must not be used to reproduce the ACE compression algorithm. This means that that the code must not be used to develop an ACE compatible archiver (that is: software capable of compressing to Ace archives) in any way. 3. Distribution of modified Public UnAce sources (as part of other software or as stand-alone package) requires that it is clearly stated in the documentation and source code that it is distributed under the Public UnAce Licence. The Public UnAce Licence has to be included in this package. 4. The name of the Copyright Holder or the support of ACE archives may not be used to endorse or promote products derived from this package without specific prior written permission from the Copyright Holder or its Distribution Partner. 5. This Software is distributed "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE. 6. Installing and using the Public UnAce Package signifies acceptance of these terms and conditions of the license. Marcel Lemke, ACE Compression Software