home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 January / VPR0101A.BIN / OLS / UNRAR32005 / unrar32005.lzh / src / comm-arc.h < prev    next >
C/C++ Source or Header  |  1998-03-12  |  14KB  |  402 lines

  1. /*
  2.  *   Copyright (c) 1998 T. Kamei (kamei@jsdlab.co.jp)
  3.  *
  4.  *   Permission to use, copy, modify, and distribute this software
  5.  * and its documentation for any purpose is hereby granted provided
  6.  * that the above copyright notice and this permission notice appear
  7.  * in all copies of the software and related documentation.
  8.  *
  9.  *                          NO WARRANTY
  10.  *
  11.  *   THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY WARRANTIES;
  12.  * WITHOUT EVEN THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS
  13.  * FOR A PARTICULAR PURPOSE.
  14.  */
  15.  
  16. #ifndef __COMM_ARC_H__
  17. #define __COMM_ARC_H__
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. #ifndef __wtypes_h__
  24. #include <wtypes.h>
  25. #endif
  26.  
  27. #ifndef _TIME_T_DEFINED
  28. #define _TIME_T_DEFINED
  29. typedef long time_t;
  30. #endif
  31.  
  32. #ifndef FNAME_MAX32
  33. #define FNAME_MAX32 512
  34. #endif
  35.  
  36. #if defined(ARC_DECSTRACT) && !defined(__ARC_STRUCT_DEFINED__)
  37. #define __ARC_STRUCT_DEFINED__
  38. #endif
  39.  
  40. #ifndef __ARC_STRUCT_DEFINED__
  41. #define __ARC_STRUCT_DEFINED__
  42.  
  43. typedef    HGLOBAL    HARC;
  44.  
  45. #ifdef __BORLANDC__
  46. #pragma option -a-
  47. #else
  48. #pragma pack(1)
  49. #endif
  50.  
  51. typedef struct
  52. {
  53.   DWORD dwOriginalSize;              /* ファイルのサイズ                  */
  54.   DWORD dwCompressedSize;            /* 圧縮後のサイズ                    */
  55.   DWORD dwCRC;                       /* 格納ファイルのチェックサム/CRC    */
  56.   UINT  uFlag;                       /* 解凍やテストの処理結果            */
  57.   UINT  uOSType;                     /* このファイルの作成に使われたOS  */
  58.   WORD  wRatio;                      /* 圧縮率(パーミル)                 */
  59.   WORD  wDate;                       /* 格納ファイルの日付                */
  60.   WORD  wTime;                       /* 格納ファイルの時刻                */
  61.   char  szFileName[FNAME_MAX32 + 1]; /* アーカイブファイル名              */
  62.   char  dummy1[3];
  63.   char  szAttribute[8];              /* 格納ファイルの属性                */
  64.   char  szMode[8];                   /* 格納ファイルの格納モード          */
  65. }
  66.   INDIVIDUALINFO, FAR *LPINDIVIDUALINFO;
  67.  
  68. typedef struct
  69. {
  70.   DWORD dwFileSize;                        /* 格納ファイルのサイズ */
  71.   DWORD dwWriteSize;                       /* 解凍して書き込んだサイズ */
  72.   char  szSourceFileName[FNAME_MAX32 + 1]; /* 処理を行う格納ファイル名 */
  73.   char  dummy1[3];
  74.   char  szDestFileName[FNAME_MAX32 + 1];   /* 実際に書き込まれるパス名 */
  75.   char  dummy[3];
  76. }
  77.   EXTRACTINGINFO, FAR *LPEXTRACTINGINFO;
  78.  
  79. typedef struct
  80. {
  81.   EXTRACTINGINFO exinfo;
  82.   DWORD dwCompressedSize;               /* 圧縮後のサイズ  */
  83.   DWORD dwCRC;                          /* 格納ファイルのチェックサム/CRC */
  84.   UINT  uOSType;                        /* このファイルの作成に使われたOS */
  85.   WORD  wRatio;                         /* 圧縮率(パーミル) */
  86.   WORD  wDate;                          /* 格納ファイルの日付  */
  87.   WORD  wTime;                          /* 格納ファイルの時刻  */
  88.   char  szAttribute[8];                 /* 格納ファイルの属性  */
  89.   char  szMode[8];                      /* 格納ファイルの格納モード  */
  90. }
  91.   EXTRACTINGINFOEX, FAR *LPEXTRACTINGINFOEX;
  92.  
  93. #ifdef __BORLANDC__
  94. #pragma option -a.
  95. #else
  96. #pragma pack()
  97. #endif
  98.  
  99. #endif /* __ARC_STRUCT_DEFINED__ */
  100.  
  101. #ifndef CHECKARCHIVE_RAPID
  102. #define CHECKARCHIVE_MASK       3
  103. #define    CHECKARCHIVE_RAPID    0     /* 簡易型(高速) */
  104. #define    CHECKARCHIVE_BASIC    1     /* 標準型(ヘッダーのみ) */
  105. #define    CHECKARCHIVE_FULLCRC    2    /* 完全型(CRC等のチェックを含む) */
  106.  
  107. /* 以下のフラグは上記と組み合わせて使用。*/
  108. #define CHECKARCHIVE_RECOVERY    4    /* 破損ヘッダを読み飛ばして処理 */
  109. #define CHECKARCHIVE_SFX    8    /* SFX かどうかを返す */
  110. #define CHECKARCHIVE_ALL    16    /* ファイルの最後まで検索する */
  111. #endif /* CHECKARCHIVE_RAPID */
  112.  
  113. #ifndef UNPACK_CONFIG_MODE
  114. #define    UNPACK_CONFIG_MODE    1 /* 解凍(復元)系のコマンド */
  115. #define    PACK_CONFIG_MODE    2 /* 圧縮(作成)系のコマンド */
  116. #endif
  117.  
  118. #ifndef ISARC_FUNCTION_START
  119. #define ISARC_FUNCTION_START            0
  120. #define ISARC                    0
  121. #define ISARC_GET_VERSION            1
  122. #define ISARC_GET_CURSOR_INTERVAL        2
  123. #define ISARC_SET_CURSOR_INTERVAL        3
  124. #define ISARC_GET_BACK_GROUND_MODE        4
  125. #define ISARC_SET_BACK_GROUND_MODE        5
  126. #define ISARC_GET_CURSOR_MODE            6
  127. #define ISARC_SET_CURSOR_MODE            7
  128. #define ISARC_GET_RUNNING            8
  129.  
  130. #define ISARC_CHECK_ARCHIVE            16
  131. #define ISARC_CONFIG_DIALOG            17
  132. #define ISARC_GET_FILE_COUNT            18
  133. #define ISARC_QUERY_FUNCTION_LIST        19
  134. #define ISARC_HOUT                20
  135. #define ISARC_STRUCTOUT                21
  136. #define ISARC_GET_ARC_FILE_INFO            22
  137.  
  138. #define ISARC_OPEN_ARCHIVE            23
  139. #define ISARC_CLOSE_ARCHIVE            24
  140. #define ISARC_FIND_FIRST            25
  141. #define ISARC_FIND_NEXT                26
  142. #define ISARC_EXTRACT                27
  143. #define ISARC_ADD                28
  144. #define ISARC_MOVE                29
  145. #define ISARC_DELETE                30
  146.  
  147. #define ISARC_GET_ARC_FILE_NAME            40
  148. #define ISARC_GET_ARC_FILE_SIZE            41
  149. #define ISARC_GET_ARC_ORIGINAL_SIZE        42
  150. #define ISARC_GET_ARC_COMPRESSED_SIZE        43
  151. #define ISARC_GET_ARC_RATIO            44
  152. #define ISARC_GET_ARC_DATE            45
  153. #define ISARC_GET_ARC_TIME            46
  154. #define ISARC_GET_ARC_OS_TYPE            47
  155. #define ISARC_GET_ARC_IS_SFX_FILE        48
  156. #define ISARC_GET_FILE_NAME            57
  157. #define ISARC_GET_ORIGINAL_SIZE            58
  158. #define ISARC_GET_COMPRESSED_SIZE        59
  159. #define ISARC_GET_RATIO                60
  160. #define ISARC_GET_DATE                61
  161. #define ISARC_GET_TIME                62
  162. #define ISARC_GET_CRC                63
  163. #define ISARC_GET_ATTRIBUTE            64
  164. #define ISARC_GET_OS_TYPE            65
  165. #define ISARC_GET_METHOD            66
  166. #define ISARC_GET_WRITE_TIME            67
  167. #define ISARC_GET_CREATE_TIME            68
  168. #define ISARC_GET_ACCESS_TIME            69
  169.  
  170. #define ISARC_FUNCTION_END            69
  171.  
  172. #endif /* ISARC_FUNCTION_START */
  173.  
  174. /* Attributes */
  175. #ifndef FA_RDONLY
  176. #define FA_RDONLY       0x01            /* Read only attribute */
  177. #define FA_HIDDEN       0x02            /* Hidden file */
  178. #define FA_SYSTEM       0x04            /* System file */
  179. #define FA_LABEL        0x08            /* Volume label */
  180. #define FA_DIREC        0x10            /* Directory */
  181. #define FA_ARCH         0x20            /* Archive */
  182. #endif /* FA_RDONLY */
  183.  
  184. #ifndef ERROR_START
  185. #define ERROR_START            0x8000
  186.  
  187. /* Warnings */
  188. #define ERROR_DISK_SPACE        0x8005
  189. #define ERROR_READ_ONLY            0x8006
  190. #define ERROR_USER_SKIP            0x8007
  191. #define ERROR_UNKNOWN_TYPE        0x8008
  192. #define ERROR_METHOD            0x8009
  193. #define ERROR_PASSWORD_FILE        0x800A
  194. #define ERROR_VERSION            0x800B
  195. #define ERROR_FILE_CRC            0x800C
  196. #define ERROR_FILE_OPEN            0x800D
  197. #define ERROR_MORE_FRESH        0x800E
  198. #define ERROR_NOT_EXIST            0x800F
  199. #define ERROR_ALREADY_EXIST        0x8010
  200. #define ERROR_TOO_MANY_FILES        0x8011
  201.  
  202. /* Errors */
  203. /*#define ERROR_DIRECTORY        0x8012*/
  204. #define ERROR_MAKEDIRECTORY        0x8012
  205. #define ERROR_CANNOT_WRITE        0x8013
  206. #define ERROR_HUFFMAN_CODE        0x8014
  207. #define ERROR_COMMENT_HEADER        0x8015
  208. #define ERROR_HEADER_CRC        0x8016
  209. #define ERROR_HEADER_BROKEN        0x8017
  210. #define ERROR_ARCHIVE_FILE_OPEN        0x8018
  211. #define ERROR_ARC_FILE_OPEN        ERROR_ARCHIVE_FILE_OPEN
  212. #define ERROR_NOT_ARC_FILE        0x8019
  213. #define ERROR_NOT_ARCHIVE_FILE    ERROR_NOT_ARC_FILE
  214. #define ERROR_CANNOT_READ        0x801A
  215. #define ERROR_FILE_STYLE        0x801B
  216. #define ERROR_COMMAND_NAME        0x801C
  217. #define ERROR_MORE_HEAP_MEMORY        0x801D
  218. #define ERROR_ENOUGH_MEMORY        0x801E
  219. #ifndef ERROR_ALREADY_RUNNING
  220. #define ERROR_ALREADY_RUNNING        0x801F
  221. #endif
  222. #define ERROR_USER_CANCEL        0x8020
  223. #define ERROR_HARC_ISNOT_OPENED        0x8021
  224. #define ERROR_NOT_SEARCH_MODE        0x8022
  225. #define ERROR_NOT_SUPPORT        0x8023
  226. #define ERROR_TIME_STAMP        0x8024
  227. /*#define ERROR_NULL_POINTER        0x8025*/
  228. /*#define ERROR_ILLEGAL_PARAMETER    0x8026*/
  229. #define ERROR_TMP_OPEN            0x8025
  230. #define ERROR_LONG_FILE_NAME        0x8026
  231. #define ERROR_ARC_READ_ONLY        0x8027
  232. #define ERROR_SAME_NAME_FILE        0x8028
  233. #define ERROR_NOT_FIND_ARC_FILE     0x8029
  234. #define ERROR_RESPONSE_READ        0x802A
  235. #define ERROR_NOT_FILENAME        0x802B
  236. #define ERROR_TMP_COPY            0x802C
  237. #define ERROR_EOF            0x802D
  238. #define ERROR_ADD_TO_LARC        0x802E
  239.  
  240. #ifndef NO_COMPAT_ISH32
  241. #define    ERROR_CANNOT_CREATE        0x8030
  242. #define    ERROR_CANNOT_OPEN        0x8031
  243. #endif /* NO_COMPAT_ISH32 */
  244.  
  245. #define ERROR_UNEXPECTED        0x8032
  246. #define ERROR_BUF_TOO_SMALL        0x8033
  247.  
  248. #define ERROR_END            ERROR_ADD_TO_LARC
  249.  
  250. #endif /* ERROR_START */
  251.  
  252. /* Modes for OpenArchive */
  253. #ifndef EXTRACT_FOUND_FILE
  254. #define M_INIT_FILE_USE        0x00000001L    /* レジストリ設定を利用 */
  255. #define M_REGARDLESS_INIT_FILE    0x00000002L    /* レジストリ設定を無視 */
  256. #define M_NOT_USE_TIME_STAMP    0x00000008L    /* タイムスタンプ検査を省略 */
  257. #define M_EXTRACT_REPLACE_FILE    0x00000010L    /* ファイルが存在し、新しい場合のみ */
  258. #define M_EXTRACT_NEW_FILE    0x00000020L    /* ファイルが存在し無い場合のみ */
  259. #define M_EXTRACT_UPDATE_FILE    0x00000040L    /* ファイルが存在しないか新しい場合 */
  260. #define M_CHECK_ALL_PATH    0x00000100L    /* 厳格なファイル名サーチ */
  261. #define M_CHECK_FILENAME_ONLY    0x00000200L    /* 〃を行わない */
  262. #define M_CHECK_DISK_SIZE    0x00000400L
  263. #define M_REGARDLESS_DISK_SIZE    0x00000800L
  264. #define M_USE_DRIVE_LETTER    0x00001000L    /* ドライブ名から格納 */
  265. #define M_NOT_USE_DRIVE_LETTER    0x00002000L    /* 〃 を格納しない */
  266. #define M_INQUIRE_DIRECTORY    0x00004000L
  267. #define M_NOT_INQUIRE_DIRECTORY 0x00008000L
  268. #define M_INQUIRE_WRITE        0x00010000L
  269. #define M_NOT_INQUIRE_WRITE    0x00020000L
  270. #define M_CHECK_READONLY    0x00040000L
  271. #define M_REGARDLESS_READONLY    0x00080000L
  272. #define M_REGARD_E_COMMAND    0x00100000L
  273. #define M_REGARD_X_COMMAND    0x00200000L
  274. #define M_ERROR_MESSAGE_ON    0x00400000L    /* エラーメッセージを表示 */
  275. #define M_ERROR_MESSAGE_OFF    0x00800000L    /* 〃を表示しない */
  276. #define M_RECOVERY_ON        0x08000000L    /* 破損ヘッダの読み飛ばし */
  277. #define M_BAR_WINDOW_ON        0x01000000L
  278. #define M_BAR_WINDOW_OFF    0x02000000L
  279. #define M_MAKE_INDEX_FILE    0x10000000L
  280. #define M_NOT_MAKE_INDEX_FILE    0x20000000L
  281. #define EXTRACT_FOUND_FILE    0x40000000L    /* 検索されたファイルを解凍 */
  282. #define EXTRACT_NAMED_FILE    0x80000000L    /* 指定したファイルを解凍 */
  283. #endif /* EXTRACT_FOUND_FILE */
  284.  
  285. #ifndef SFX_NOT
  286. #define SFX_NOT            0    /* 通常の書庫 */
  287.  
  288. #define SFX_DOS_S        1    /* LHA's SFX 系 (small) */
  289. #define SFX_DOS_204S        1    /* LHA's SFX 2.04S 以降 */
  290. #define SFX_DOS_213S        1    /* LHA's SFX 2.04S 以降 */
  291. #define SFX_DOS_250S        2    /* LHA's SFX 2.50S 以降 */
  292. #define SFX_DOS_260S        3    /* LHA's SFX 2.60S 以降 */
  293. #define SFX_DOS_265S        3    /* LHA's SFX 2.60S 以降 */
  294.  
  295. #define SFX_DOS_L        51    /* LHA's SFX 系 (large) */
  296. #define SFX_DOS_204L        51    /* LHA's SFX 2.04L 以降 */
  297. #define SFX_DOS_213L        51    /* LHA's SFX 2.04L 以降 */
  298. #define SFX_DOS_250L        52    /* LHA's SFX 2.50L 以降 */
  299. #define SFX_DOS_260L        53    /* LHA's SFX 2.60L 以降 */
  300. #define SFX_DOS_265L        53    /* LHA's SFX 2.60L 以降 */
  301.  
  302. #define SFX_DOS_LARC        201    /* SFX by LARC 系 */
  303. #define SFX_DOS_LARC_S        201    /* SFX by LARC (small) */
  304.  
  305. #define SFX_DOS_LHARC        301    /* LHarc's SFX 系 */
  306. #define SFX_DOS_LHARC_S        301    /* LHarc's SFX (small) */
  307. #define SFX_DOS_LHARC_L        351    /* LHarc's SFX (large) */
  308.  
  309. #define SFX_WIN16_213        1001    /* LHA's SFX 2.13.w16 系 */
  310. #define SFX_WIN16_213_1        1001    /* WinSFX 2.13.w16.1 */
  311. #define SFX_WIN16_213_2        1002    /* WinSFX 2.13.w16.2 */
  312. #define SFX_WIN16_213_3        1003    /* WinSFX 2.13.w16.3 以降 */
  313.  
  314. #define SFX_WIN16_250        1011    /* LHA's SFX 2.50.w16 系 */
  315. #define SFX_WIN16_250_1        1011    /* WinSFXM 2.50.w16.0001 以降 */
  316. #define SFX_WIN16_255_1        1021    /* WinSFXM 2.55.w16.0001 以降 */
  317.  
  318. #define SFX_WIN32_213        2001    /* LHA's SFX 2.13.w32 系 */
  319. #define SFX_WIN32_213_1        2001    /* WinSFX32 2.13.w32.1 以降 */
  320. #define SFX_WIN32_213_3        2002    /* WinSFX32 2.13.w32.3 以降 */
  321.  
  322. #define SFX_WIN32_250        2011    /* LHA's SFX 2.50.w32 系 */
  323. #define SFX_WIN32_250_1        2011    /* WinSFX32M 2.50.w32.0001 以降 */
  324. #define SFX_WIN32_250_6        2012    /* WinSFX32M 2.50.w32.0006 以降 */
  325.  
  326. #define SFX_LZHSFX        2051    /* LZHSFX 系 */
  327. #define SFX_LZHSFX_1002        2051    /* LZHSFX 1.0.0.2 以降 */
  328. #define SFX_LZHSFX_1100        2052    /* LZHSFX 1.1.0.0 以降 */
  329.  
  330. #define SFX_LZHAUTO        2101    /* LZHAUTO 系 */
  331. #define SFX_LZHAUTO_0002    2101    /* LZHAUTO 0.0.0.2 以降 */
  332. #define SFX_LZHAUTO_1000    2102    /* LZHAUTO 1.0.0.0 以降 */
  333. #define SFX_LZHAUTO_1002    2102    /* LZHAUTO 1.0.0.0 以降 */
  334. #define SFX_LZHAUTO_1100    2103    /* LZHAUTO 1.1.0.0 以降 */
  335.  
  336. #define SFX_WIN32_LHASA        3001    /* Lhasa インストーラ */
  337.  
  338. #define SFX_DOS_UNKNOWN        9901    /* 認識できない DOS SFX */
  339. #define SFX_WIN16_UNKNOWN    9911    /* 認識できない Win16 SFX */
  340. #define SFX_WIN32_UNKNOWN    9921    /* 認識できない Win32 SFX */
  341.  
  342. #endif /* SFX_NOT */
  343.  
  344. #ifndef ARCHIVETYPE_TAR
  345. #define ARCHIVETYPE_TAR   1
  346. #define ARCHIVETYPE_TARGZ 2
  347. #define ARCHIVETYPE_TARZ  3
  348. #define ARCHIVETYPE_GZ    4
  349. #define ARCHIVETYPE_Z     5
  350. #endif /* ARCHIVETYPE_TAR */
  351.  
  352. #ifndef WM_ARCEXTRACT
  353. #define WM_ARCEXTRACT "wm_arcextract"
  354.  
  355. #define ARCEXTRACT_BEGIN        0       /* 該当ファイルの処理の開始 */
  356. #define ARCEXTRACT_INPROCESS    1       /* 該当ファイルの展開中 */
  357. #define ARCEXTRACT_END          2       /* 処理終了、関連メモリを開放 */
  358. #define ARCEXTRACT_OPEN         3       /* 該当書庫の処理の開始 */
  359. #define ARCEXTRACT_COPY         4       /* ワークファイルの書き戻し */
  360.  
  361. typedef BOOL (CALLBACK *LPARCHIVERPROC)(HWND, UINT, UINT, LPEXTRACTINGINFOEX);
  362.  
  363. #endif /* WM_ARCEXTRACT */
  364.  
  365. #ifndef OSTYPE_MSDOS
  366. #define OSTYPE_MSDOS        0    /* MS-DOS */
  367. #define OSTYPE_PRIMOS        1    /* PRIMOS */
  368. #define OSTYPE_UNIX        2    /* unix */
  369. #define OSTYPE_AMIGA        3    /* AMIGA */
  370. #define OSTYPE_MACOS        4    /* MAC-OS */
  371. #define OSTYPE_OS2        5    /* OS/2 */
  372. #define OSTYPE_APPLE        6    /* APPLE GS */
  373. #define OSTYPE_ATARI        7    /* ATARI ST */
  374. #define OSTYPE_NEXT        8    /* NEXT */
  375. #define OSTYPE_VMS        9    /* VAX VMS */
  376. #define OSTYPE_UNKNOWN        10    /* その他 */
  377. #define OSTYPE_OS9        11    /* OS9 */
  378. #define OSTYPE_OS68K        12    /* OS/68K */
  379. #define OSTYPE_OS386        13    /* OS/386 */
  380. #define OSTYPE_HUMAN68K        14    /* Human68K */
  381. #define OSTYPE_CPM        15    /* CP/M */
  382. #define OSTYPE_FLEX        16    /* FLEX */
  383. #define OSTYPE_RUNSER        17    /* Runser */
  384. #define OSTYPE_WINDOWSNT    18    /* Windows NT(LHA) */
  385. #define OSTYPE_CMS        18    /* VM CMS(others) */
  386. #define OSTYPE_WINDOWS95    19    /* Windows 95(LHA) */
  387. #define OSTYPE_ZSYSTEM        19    /* Z System(others) */
  388. #define OSTYPE_TOPS20        20    /* TOPS20 */
  389. #define OSTYPE_NTFS        21    /* NTFS */
  390. #define OSTYPE_QDOS        22    /* QDOS */
  391. #define OSTYPE_VFAT95        23    /* VFAT95 */
  392. #define OSTYPE_MVS        24    /* MVS */
  393. #define OSTYPE_BEBOX        25    /* Be Box */
  394. #define OSTYPE_ERROR        (-1)    /* エラー */
  395. #endif /* OSTYPE_MSDOS */
  396.  
  397. #ifdef __cplusplus
  398. }
  399. #endif
  400.  
  401. #endif /* __COMM_ARC_H__ */
  402.