home *** CD-ROM | disk | FTP | other *** search
/ ftp.rarlab.com / 2014.05.ftp.rarlab.com.tar / ftp.rarlab.com / rar / sunrar.zip / const.h < prev    next >
C/C++ Source or Header  |  1998-07-01  |  7KB  |  335 lines

  1. #include "os.h"
  2. #include "compress.h"
  3.  
  4. #define  Min(x,y) (((x)<(y)) ? (x):(y))
  5. #define  Max(x,y) (((x)>(y)) ? (x):(y))
  6.  
  7. #define  NM  260
  8.  
  9.  
  10. #define  SIZEOF_MARKHEAD         7
  11. #define  SIZEOF_OLDMHD           7
  12. #define  SIZEOF_NEWMHD          13
  13. #define  SIZEOF_OLDLHD          21
  14. #define  SIZEOF_NEWLHD          32
  15. #define  SIZEOF_SHORTBLOCKHEAD   7
  16. #define  SIZEOF_LONGBLOCKHEAD   11
  17. #define  SIZEOF_COMMHEAD        13
  18. #define  SIZEOF_PROTECTHEAD     26
  19.  
  20.  
  21. #define  PACK_VER       20
  22. #define  UNP_VER        20
  23. #define  PROTECT_VER    20
  24.  
  25.  
  26. enum { M_DENYREAD,M_DENYWRITE,M_DENYNONE,M_DENYALL };
  27.  
  28. enum { FILE_EMPTY,FILE_ADD,FILE_UPDATE,FILE_COPYOLD,FILE_COPYBLOCK };
  29.  
  30. enum { ARG_RESET,ARG_NEXT,ARG_REMOVE };
  31.  
  32. enum { ARC=1,VOL,SFX };
  33.  
  34. enum { SUCCESS,WARNING,FATAL_ERROR,CRC_ERROR,LOCK_ERROR,WRITE_ERROR,
  35.        OPEN_ERROR,USER_ERROR,MEMORY_ERROR,USER_BREAK=255,IMM_ABORT=0x8000 };
  36.  
  37. enum { EN_LOCK=1,EN_VOL=2 };
  38.  
  39. enum { SD_MEMORY=1,SD_FILES=2 };
  40.  
  41. enum { ASK_OVERWR=0,ALL_OVERWR=1,NO_OVERWR=2 };
  42.  
  43. enum { ALARM_SOUND,ERROR_SOUND };
  44.  
  45. enum { MSG_STDOUT,MSG_STDERR,MSG_NULL };
  46.  
  47. enum { COMPARE_PATH,NOT_COMPARE_PATH };
  48.  
  49. enum { NAMES_DONTCHANGE,NAMES_UPPERCASE,NAMES_LOWERCASE };
  50.  
  51. enum { LOG_ARC=1,LOG_FILE=2 };
  52.  
  53. enum { CRC16=1,CRC32=2 };
  54.  
  55. enum { OLD_DECODE=0,OLD_ENCODE=1,NEW_CRYPT=2 };
  56.  
  57. enum { OLD_UNPACK,NEW_UNPACK };
  58.  
  59. enum { KEEP_TIME=1,LATEST_TIME };
  60.  
  61. #define  MHD_MULT_VOL       1
  62. #define  MHD_COMMENT        2
  63. #define  MHD_LOCK           4
  64. #define  MHD_SOLID          8
  65. #define  MHD_PACK_COMMENT   16
  66. #define  MHD_AV             32
  67. #define  MHD_PROTECT        64
  68.  
  69. #define  LHD_SPLIT_BEFORE   1
  70. #define  LHD_SPLIT_AFTER    2
  71. #define  LHD_PASSWORD       4
  72. #define  LHD_COMMENT        8
  73. #define  LHD_SOLID          16
  74.  
  75. #define  LHD_WINDOWMASK     0x00e0
  76. #define  LHD_WINDOW64       0
  77. #define  LHD_WINDOW128      32
  78. #define  LHD_WINDOW256      64
  79. #define  LHD_WINDOW512      96
  80. #define  LHD_WINDOW1024     128
  81. #define  LHD_DIRECTORY      0x00e0
  82.  
  83. #define  SKIP_IF_UNKNOWN    0x4000
  84. #define  LONG_BLOCK         0x8000
  85.  
  86. #define READSUBBLOCK    0x8000
  87.  
  88. enum { ALL_HEAD=0,MARK_HEAD=0x72,MAIN_HEAD=0x73,FILE_HEAD=0x74,
  89.        COMM_HEAD=0x75,AV_HEAD=0x76,SUB_HEAD=0x77,PROTECT_HEAD=0x78};
  90.  
  91. enum { EA_HEAD=0x100 };
  92.  
  93. enum { MS_DOS=0,OS2=1,WIN_32=2,UNIX=3 };
  94.  
  95. enum { OLD=1,NEW=2};
  96.  
  97. enum { EEMPTY=-1,EBREAK=1,EWRITE,EREAD,EOPEN,ECREAT,ECLOSE,ESEEK,
  98.        EMEMORY,EARCH };
  99.  
  100.  
  101. struct MarkHeader
  102. {
  103.   UBYTE Mark[7];
  104. };
  105.  
  106.  
  107. struct OldMainHeader
  108. {
  109.   UBYTE Mark[4];
  110.   UWORD HeadSize;
  111.   UBYTE Flags;
  112. };
  113.  
  114.  
  115. struct NewMainArchiveHeader
  116. {
  117.   UWORD HeadCRC;
  118.   UBYTE HeadType;
  119.   UWORD Flags;
  120.   UWORD HeadSize;
  121.   UWORD Reserved;
  122.   UDWORD Reserved1;
  123. };
  124.  
  125.  
  126. struct OldFileHeader
  127. {
  128.   UDWORD PackSize;
  129.   UDWORD UnpSize;
  130.   UWORD FileCRC;
  131.   UWORD HeadSize;
  132.   UDWORD FileTime;
  133.   UBYTE FileAttr;
  134.   UBYTE Flags;
  135.   UBYTE UnpVer;
  136.   UBYTE NameSize;
  137.   UBYTE Method;
  138. };
  139.  
  140.  
  141. struct NewFileHeader
  142. {
  143.   UWORD HeadCRC;
  144.   UBYTE HeadType;
  145.   UWORD Flags;
  146.   UWORD HeadSize;
  147.   UDWORD PackSize;
  148.   UDWORD UnpSize;
  149.   UBYTE HostOS;
  150.   UDWORD FileCRC;
  151.   UDWORD FileTime;
  152.   UBYTE UnpVer;
  153.   UBYTE Method;
  154.   UWORD NameSize;
  155.   UDWORD FileAttr;
  156. };
  157.  
  158.  
  159. struct BlockHeader
  160. {
  161.   UWORD HeadCRC;
  162.   UBYTE HeadType;
  163.   UWORD Flags;
  164.   UWORD HeadSize;
  165.   UDWORD DataSize;
  166. };
  167.  
  168.  
  169. struct SubBlockHeader
  170. {
  171.   UWORD HeadCRC;
  172.   UBYTE HeadType;
  173.   UWORD Flags;
  174.   UWORD HeadSize;
  175.   UDWORD DataSize;
  176.   UWORD SubType;
  177.   UBYTE Level;
  178. };
  179.  
  180.  
  181. struct CommentHeader
  182. {
  183.   UWORD HeadCRC;
  184.   UBYTE HeadType;
  185.   UWORD Flags;
  186.   UWORD HeadSize;
  187.   UWORD UnpSize;
  188.   UBYTE UnpVer;
  189.   UBYTE Method;
  190.   UWORD CommCRC;
  191. };
  192.  
  193.  
  194. struct ProtectHeader
  195. {
  196.   UWORD HeadCRC;
  197.   UBYTE HeadType;
  198.   UWORD Flags;
  199.   UWORD HeadSize;
  200.   UDWORD DataSize;
  201.   UBYTE Version;
  202.   UWORD RecSectors;
  203.   UDWORD TotalBlocks;
  204.   UBYTE Mark[8];
  205. };
  206.  
  207.  
  208. struct RAROptions
  209. {
  210.   int Overwrite;
  211.   int Sound;
  212.   int MsgStream;
  213.   int DisableComment;
  214.   int FreshFiles;
  215.   int UpdateFiles;
  216.   int Recurse;
  217.   int PackVolume;
  218.   int AllYes;
  219.   int ConvertNames;
  220.   int KeepBroken;
  221. };
  222.  
  223.  
  224. struct FileStat
  225. {
  226.   UDWORD FileAttr;
  227.   UDWORD FileTime;
  228.   UDWORD FileSize;
  229.   int IsDir;
  230. };
  231.  
  232.  
  233. int ReadHeader(int BlockType);
  234. int GetPassword(int AskCount);
  235. void GetPswStr(char *Str);
  236. void SplitCommandLine(int Argc,char *Argv[]);
  237. void ExecuteCommand(void);
  238. long GetFreeDisk(int NumDisk);
  239. void MakeTmpPath(void);
  240. void InitSomeVars(void);
  241. void AddArgsFromFile(char *Name);
  242. void Ask(char *AskStr);
  243. void ShowUnpWrite(void);
  244. void OutHelp(void);
  245. void AddToArchive(void);
  246. int CmpName(char *Wildcard,char *Name,int CmpPath);
  247. void ListArchive(void);
  248. void ExtrFile(void);
  249. void ShutDown(int Mode);
  250. void ErrExit(int ErrCode,int Code);
  251. void ProcessSignal(int SigType);
  252. void CreatePath(char *fpath);
  253. int FileExist(char *FileName);
  254. int twrite(FILE *stream,void *buf,unsigned len);
  255. int tread(FILE *stream,void *buf,unsigned len);
  256. int tseek(FILE *stream,long offset,int fromwhere);
  257. long filelen(FILE *FPtr);
  258. void SetOpenFileStat(FILE *FPtr);
  259. void SetCloseFileStat(char *Name);
  260. void SetOpenFileTime(FILE *FPtr,UDWORD ft);
  261. void SetCloseFileTime(char *Name,UDWORD ft);
  262. UDWORD GetOpenFileTime(FILE *FPtr);
  263. FILE* topen(char *Name,char *Mode,unsigned int Sharing);
  264. FILE* ShareOpen(char *Name,char *Mode,unsigned int Sharing);
  265. void tclose(FILE *FPtr);
  266. FILE* wopen(char *Name,char *Mode,unsigned int Sharing);
  267. void NextVolumeName(void);
  268. int MergeArchive(int ShowFileName);
  269. void UnstoreFile(void);
  270. void ConvertPath(char *OutPath, char *InPath);
  271. void ViewComment(void);
  272. void ViewFileComment(void);
  273. int IsArchive(void);
  274. int GetArchives(int Mode);
  275. int ToPercent(long N1,long N2);
  276. void AddExclArgs(char *Name);
  277. int ExclCheck(char *Name);
  278. int ReadBlock(int BlockType);
  279. void GetArcNames(void);
  280. void FindArchives(void);
  281. int ReadArcName(void);
  282. void ConvertDate(UDWORD ft);
  283. void SetOptions(char *OptStr,int MultipleSwitches);
  284. int GetKey(void);
  285. int ToUpperCase(int Ch);
  286. int IsProcessFile(int ComparePath);
  287. char * PointToName(char *Path);
  288. FILE* FileCreate(char *Name,int OverwriteMode,int *UserReject);
  289. void WriteBlock(int BlockType);
  290. unsigned int UnpRead(unsigned char *Addr,unsigned int Count);
  291. unsigned int UnpWrite(unsigned char *Addr,unsigned int Count);
  292. void FreeMemory(void);
  293. void InitAddArgName(char *ArgMemAddr,long ArgMemSize);
  294. int NextArgName(int Mode);
  295. void AddArgName(char *Arg);
  296. void AskNextVol(void);
  297. int IsAllArgsUsed(void);
  298. void SetExt(char *Name,char *NewExt);
  299. void ShowComment(UBYTE *Addr,int Size);
  300. int KbdAnsi(UBYTE *Addr,int Size);
  301. int IsRemovable(int NumDrive);
  302. void tunpack(unsigned char *Mem,int Solid,int Mode);
  303.  
  304. void Unpack(unsigned char *UnpAddr,int Solid);
  305. void ShowAnsiComment(UBYTE *Addr,unsigned int Size);
  306. int MakeDir(char *Name,UDWORD Attr);
  307. void MakeSound(int MSec,int Freq);
  308. int DateFormat(void);
  309.  
  310. void SetCryptKeys(char *Password);
  311. void EncryptBlock(unsigned char *Buf);
  312. void DecryptBlock(unsigned char *Buf);
  313. void Crypt(UBYTE *Data,UDWORD Count,int Method);
  314. void InitCRC(void);
  315. UDWORD CRC(UDWORD StartCRC,void *Addr,UDWORD Size, int Mode);
  316.  
  317. char* strlower(char *Str);
  318. char* strupper(char *Str);
  319. int stricomp(char *Str1,char *Str2);
  320. int strnicomp(char *Str1,char *Str2,int N);
  321. int SplitPath(char *FullName,char *Path,char *Name,int RemoveDrive);
  322. int GetPathDisk(char *Path);
  323. int GetCurDisk(void);
  324. void ShowAttr(void);
  325. int IsDir(UDWORD Attr);
  326. int IsLabel(UDWORD Attr);
  327. void ConvertFlags(void);
  328. DIR * DirOpen(char *Name);
  329. int IsPathDiv(int Ch);
  330. void ConvertUnknownHeader(void);
  331. char* RemoveEOL(char *Str);
  332. void mprintf(char *fmt,...);
  333. int CheckForDevice(FILE *CheckFile);
  334.  
  335.