ReactOS  0.4.15-dev-1068-g467feb9
zippidl.cpp
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Zip Shell Extension
3  * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4  * PURPOSE: zip pidl handling
5  * COPYRIGHT: Copyright 2017-2019 Mark Jansen (mark.jansen@reactos.org)
6  */
7 
8 #include "precomp.h"
9 
11 {
12  int cbData = sizeof(ZipPidlEntry) + strlen(lpString);
13  ZipPidlEntry* pidl = (ZipPidlEntry*)SHAlloc(cbData + sizeof(WORD));
14  if (!pidl)
15  return NULL;
16 
17  ZeroMemory(pidl, cbData + sizeof(WORD));
18 
19  pidl->cb = cbData;
20  pidl->MagicType = 'z';
21  pidl->ZipType = Type;
22 
23  if (Type != ZIP_PIDL_DIRECTORY)
24  {
25  pidl->CompressedSize = info.compressed_size;
26  pidl->UncompressedSize = info.uncompressed_size;
27  pidl->DosDate = info.dosDate;
28  pidl->Password = info.flag & MINIZIP_PASSWORD_FLAG;
29  }
30 
31  strcpy(pidl->Name, lpString);
32  *(WORD*)((char*)pidl + cbData) = 0;
33 
34  return (LPITEMIDLIST)pidl;
35 }
36 
37 
39 {
40  const ZipPidlEntry* zipPidl = (const ZipPidlEntry*)pidl;
41  if (zipPidl->MagicType == 'z')
42  return zipPidl;
43  return NULL;
44 }
ULONG64 CompressedSize
Definition: zippidl.hpp:22
Type
Definition: Type.h:6
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define ZeroMemory
Definition: winbase.h:1648
ZipPidlType ZipType
Definition: zippidl.hpp:20
BYTE Password
Definition: zippidl.hpp:25
ULONG64 UncompressedSize
Definition: zippidl.hpp:23
smooth NULL
Definition: ftsmooth.c:416
BYTE MagicType
Definition: zippidl.hpp:19
const char * LPCSTR
Definition: xmlstorage.h:183
ULONG DosDate
Definition: zippidl.hpp:24
char Name[1]
Definition: zippidl.hpp:27
unsigned short WORD
Definition: ntddk_ex.h:93
LPITEMIDLIST _ILCreate(ZipPidlType Type, LPCSTR lpString, unz_file_info64 &info)
Definition: zippidl.cpp:10
#define MINIZIP_PASSWORD_FLAG
Definition: precomp.h:43
const ZipPidlEntry * _ZipFromIL(LPCITEMIDLIST pidl)
Definition: zippidl.cpp:38
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
ZipPidlType
Definition: zippidl.hpp:9
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:309