[CABMAN]
[reactos.git] / reactos / tools / cabman / cabinet.cxx
old mode 100755 (executable)
new mode 100644 (file)
index 5d834a9..0f23b07
@@ -18,7 +18,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#if !defined(WIN32)
+#if !defined(_WIN32)
 # include <dirent.h>
 # include <sys/stat.h>
 # include <sys/types.h>
@@ -27,7 +27,7 @@
 #include "raw.h"
 #include "mszip.h"
 
-#if defined(WIN32)
+#if defined(_WIN32)
 #define GetSizeOfFile(handle) _GetSizeOfFile(handle)
 static LONG _GetSizeOfFile(FILEHANDLE handle)
 {
@@ -115,7 +115,7 @@ CCFDATAStorage::~CCFDATAStorage()
 }
 
 
-ULONG CCFDATAStorage::Create(const char* FileName)
+ULONG CCFDATAStorage::Create()
 /*
  * FUNCTION: Creates the file
  * ARGUMENTS:
@@ -124,13 +124,16 @@ ULONG CCFDATAStorage::Create(const char* FileName)
  *     Status of operation
  */
 {
+#if defined(_WIN32)
+    char tmpPath[MAX_PATH];
+#endif
     ASSERT(!FileCreated);
 
-#if defined(WIN32)
-    if (GetTempPath(MAX_PATH, FullName) == 0)
+#if defined(_WIN32)
+    if (GetTempPath(MAX_PATH, tmpPath) == 0)
+        return CAB_STATUS_CANNOT_CREATE;
+    if(GetTempFileName(tmpPath, "cab", 0, FullName) == 0)
         return CAB_STATUS_CANNOT_CREATE;
-
-    strcat(FullName, FileName);
 
     /* Create file, overwrite if it already exists */
     FileHandle = CreateFile(FullName,   // Create this file
@@ -147,7 +150,7 @@ ULONG CCFDATAStorage::Create(const char* FileName)
         DPRINT(MID_TRACE, ("ERROR '%u'.\n", (UINT)GetLastError()));
         return CAB_STATUS_CANNOT_CREATE;
     }
-#else /* !WIN32 */
+#else /* !_WIN32 */
     /*if (tmpnam(FullName) == NULL)*/
     if ((FileHandle = tmpfile()) == NULL)
         return CAB_STATUS_CANNOT_CREATE;
@@ -190,12 +193,12 @@ ULONG CCFDATAStorage::Truncate()
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     if( SetFilePointer(FileHandle, 0, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER )
         return CAB_STATUS_FAILURE;
     if (!SetEndOfFile(FileHandle))
         return CAB_STATUS_FAILURE;
-#else /* !WIN32 */
+#else /* !_WIN32 */
     fclose(FileHandle);
     FileHandle = tmpfile();
     if (FileHandle == NULL)
@@ -215,7 +218,7 @@ ULONG CCFDATAStorage::Position()
  *     Current position
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     return SetFilePointer(FileHandle, 0, NULL, FILE_CURRENT);
 #else
     return (ULONG)ftell(FileHandle);
@@ -232,7 +235,7 @@ ULONG CCFDATAStorage::Seek(LONG Position)
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     if( SetFilePointer(FileHandle,
                        Position,
                        NULL,
@@ -260,7 +263,7 @@ ULONG CCFDATAStorage::ReadBlock(PCFDATA Data, void* Buffer, PULONG BytesRead)
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     if (!ReadFile(FileHandle, Buffer, Data->CompSize, (LPDWORD)BytesRead, NULL))
         return CAB_STATUS_CANNOT_READ;
 #else
@@ -284,7 +287,7 @@ ULONG CCFDATAStorage::WriteBlock(PCFDATA Data, void* Buffer, PULONG BytesWritten
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     if (!WriteFile(FileHandle, Buffer, Data->CompSize, (LPDWORD)BytesWritten, NULL))
         return CAB_STATUS_CANNOT_WRITE;
 #else
@@ -394,7 +397,7 @@ char* CCabinet::ConvertPath(char* Path, bool Allocate)
     i = 0;
     while (Path[i] != 0)
     {
-#if defined(WIN32)
+#if defined(_WIN32)
         if (Path[i] == '/')
             newpath[i] = '\\';
         else
@@ -512,7 +515,7 @@ void CCabinet::SetDestinationPath(char* DestinationPath)
     strcpy(DestPath, DestinationPath);
     ConvertPath(DestPath, false);
     if (strlen(DestPath) > 0)
-        NormalizePath(DestPath, MAX_PATH);
+        NormalizePath(DestPath, PATH_MAX);
 }
 
 ULONG CCabinet::AddSearchCriteria(char* SearchCriteria)
@@ -604,7 +607,7 @@ bool CCabinet::SetCompressionCodec(char* CodecName)
         SelectCodec(CAB_CODEC_MSZIP);
     else
     {
-        printf("Invalid codec specified!\n");
+        printf("ERROR: Invalid codec specified!\n");
         return false;
     }
 
@@ -631,22 +634,26 @@ bool CCabinet::SetCabinetReservedFile(char* FileName)
 {
     FILEHANDLE FileHandle;
     ULONG BytesRead;
+    char* ConvertedFileName;
 
-#if defined(WIN32)
-    FileHandle = CreateFile(ConvertPath(FileName, true),  // Open this file
+    ConvertedFileName = ConvertPath(FileName, true);
+#if defined(_WIN32)
+    FileHandle = CreateFile(ConvertedFileName,  // Open this file
         GENERIC_READ,                    // Open for reading
         FILE_SHARE_READ,                 // Share for reading
         NULL,                            // No security
         OPEN_EXISTING,                   // Existing file only
         FILE_ATTRIBUTE_NORMAL,           // Normal file
         NULL);                           // No attribute template
+    free(ConvertedFileName);
     if (FileHandle == INVALID_HANDLE_VALUE)
     {
         DPRINT(MID_TRACE, ("Cannot open cabinet reserved file.\n"));
         return false;
     }
-#else /* !WIN32 */
-    FileHandle = fopen(ConvertPath(FileName, true), "rb");
+#else /* !_WIN32 */
+    FileHandle = fopen(ConvertedFileName, "rb");
+    free(ConvertedFileName);
     if (FileHandle == NULL)
     {
         DPRINT(MID_TRACE, ("Cannot open cabinet reserved file.\n"));
@@ -730,7 +737,7 @@ ULONG CCabinet::Open()
         if (!OutputBuffer)
             return CAB_STATUS_NOMEMORY;
 
-#if defined(WIN32)
+#if defined(_WIN32)
         FileHandle = CreateFile(CabinetName, // Open this file
             GENERIC_READ,                    // Open for reading
             FILE_SHARE_READ,                 // Share for reading
@@ -744,7 +751,7 @@ ULONG CCabinet::Open()
             DPRINT(MID_TRACE, ("Cannot open file.\n"));
             return CAB_STATUS_CANNOT_OPEN;
         }
-#else /* !WIN32 */
+#else /* !_WIN32 */
         FileHandle = fopen(CabinetName, "rb");
         if (FileHandle == NULL)
         {
@@ -791,7 +798,7 @@ ULONG CCabinet::Open()
             FolderReserved  = (Size >> 16) & 0xFF;
             DataReserved    = (Size >> 24) & 0xFF;
 
-#if defined(WIN32)
+#if defined(_WIN32)
             if (SetFilePointer(FileHandle, CabinetReserved, NULL, FILE_CURRENT) == INVALID_SET_FILE_POINTER)
             {
                 DPRINT(MIN_TRACE, ("SetFilePointer() failed, error code is %u.\n", (UINT)GetLastError()));
@@ -1027,11 +1034,11 @@ ULONG CCabinet::ExtractFile(char* FileName)
     CFDATA CFData;
     ULONG Status;
     bool Skip;
-#if defined(WIN32)
+#if defined(_WIN32)
     FILETIME FileTime;
 #endif
-    CHAR DestName[MAX_PATH];
-    CHAR TempName[MAX_PATH];
+    CHAR DestName[PATH_MAX];
+    CHAR TempName[PATH_MAX];
 
     Status = LocateFile(FileName, &File);
     if (Status != CAB_STATUS_SUCCESS)
@@ -1066,7 +1073,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
     strcat(DestName, FileName);
 
     /* Create destination file, fail if it already exists */
-#if defined(WIN32)
+#if defined(_WIN32)
     DestFile = CreateFile(DestName,      // Create this file
         GENERIC_WRITE,                   // Open for writing
         0,                               // No sharing
@@ -1099,7 +1106,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
                 return CAB_STATUS_CANNOT_CREATE;
         }
     }
-#else /* !WIN32 */
+#else /* !_WIN32 */
     DestFile = fopen(DestName, "rb");
     if (DestFile != NULL)
     {
@@ -1121,7 +1128,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
             return CAB_STATUS_CANNOT_CREATE;
     }
 #endif
-#if defined(WIN32)
+#if defined(_WIN32)
     if (!DosDateTimeToFileTime(File->File.FileDate, File->File.FileTime, &FileTime))
     {
         CloseFile(DestFile);
@@ -1147,7 +1154,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
     OnExtract(&File->File, FileName);
 
     /* Search to start of file */
-#if defined(WIN32)
+#if defined(_WIN32)
     Offset = SetFilePointer(FileHandle,
         File->DataBlock->AbsoluteOffset,
         NULL,
@@ -1155,12 +1162,14 @@ ULONG CCabinet::ExtractFile(char* FileName)
     if (Offset == INVALID_SET_FILE_POINTER)
     {
         DPRINT(MIN_TRACE, ("SetFilePointer() failed, error code is %u.\n", (UINT)GetLastError()));
+        CloseFile(DestFile);
         return CAB_STATUS_INVALID_CAB;
     }
 #else
     if (fseek(FileHandle, (off_t)File->DataBlock->AbsoluteOffset, SEEK_SET) != 0)
     {
         DPRINT(MIN_TRACE, ("fseek() failed.\n"));
+        CloseFile(DestFile);
         return CAB_STATUS_FAILURE;
     }
     Offset = ftell(FileHandle);
@@ -1273,7 +1282,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
                         File->DataBlock = CurrentFolderNode->DataListHead;
 
                         /* Search to start of file */
-#if defined(WIN32)
+#if defined(_WIN32)
                         if( SetFilePointer(FileHandle,
                                            File->DataBlock->AbsoluteOffset,
                                            NULL,
@@ -1347,7 +1356,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
                     CFData.CompSize, CFData.UncompSize));
 
                 /* Go to next data block */
-#if defined(WIN32)
+#if defined(_WIN32)
                 if( SetFilePointer(FileHandle,
                                    CurrentDataNode->AbsoluteOffset + sizeof(CFDATA) +
                                    CurrentDataNode->Data.CompSize,
@@ -1386,7 +1395,7 @@ ULONG CCabinet::ExtractFile(char* FileName)
                 (UINT)BytesSkipped, (UINT)Skip,
                 (UINT)Size));
 
-#if defined(WIN32)
+#if defined(_WIN32)
             if (!WriteFile(DestFile, (void*)((PUCHAR)OutputBuffer + BytesSkipped),
                 BytesToWrite, (LPDWORD)&BytesWritten, NULL) ||
                 (BytesToWrite != BytesWritten))
@@ -1527,7 +1536,7 @@ ULONG CCabinet::NewCabinet()
         return CAB_STATUS_NOMEMORY;
     }
 
-    Status = ScratchFile->Create("~CAB.tmp");
+    Status = ScratchFile->Create();
 
     CreateNewFolder = false;
 
@@ -1625,7 +1634,7 @@ ULONG CCabinet::WriteFileToScratchStorage(PCFFILE_NODE FileNode)
     if (!ContinueFile)
     {
         /* Try to open file */
-#if defined(WIN32)
+#if defined(_WIN32)
         SourceFile = CreateFile(
             FileNode->FileName,      // Open this file
             GENERIC_READ,            // Open for reading
@@ -1639,7 +1648,7 @@ ULONG CCabinet::WriteFileToScratchStorage(PCFFILE_NODE FileNode)
             DPRINT(MID_TRACE, ("File not found (%s).\n", FileNode->FileName));
             return CAB_STATUS_NOFILE;
         }
-#else /* !WIN32 */
+#else /* !_WIN32 */
         SourceFile = fopen(FileNode->FileName, "rb");
         if (SourceFile == NULL)
         {
@@ -1839,7 +1848,7 @@ ULONG CCabinet::CommitDisk(ULONG MoreDisks)
     OnCabinetName(CurrentDiskNumber, CabinetName);
 
     /* Create file, fail if it already exists */
-#if defined(WIN32)
+#if defined(_WIN32)
     FileHandle = CreateFile(CabinetName, // Create this file
         GENERIC_WRITE,                   // Open for writing
         0,                               // No sharing
@@ -1874,7 +1883,7 @@ ULONG CCabinet::CommitDisk(ULONG MoreDisks)
                 return CAB_STATUS_CANNOT_CREATE;
         }
     }
-#else /* !WIN32 */
+#else /* !_WIN32 */
     FileHandle = fopen(CabinetName, "rb");
     if (FileHandle != NULL)
     {
@@ -2009,7 +2018,7 @@ ULONG CCabinet::AddFile(char* FileName)
     ConvertPath(NewFileName, false);
 
     /* Try to open file */
-#if defined(WIN32)
+#if defined(_WIN32)
     SrcFile = CreateFile(
         NewFileName,             // Open this file
         GENERIC_READ,            // Open for reading
@@ -2024,7 +2033,7 @@ ULONG CCabinet::AddFile(char* FileName)
         FreeMemory(NewFileName);
         return CAB_STATUS_CANNOT_OPEN;
     }
-#else /* !WIN32 */
+#else /* !_WIN32 */
     SrcFile = fopen(NewFileName, "rb");
     if (SrcFile == NULL)
     {
@@ -2039,6 +2048,7 @@ ULONG CCabinet::AddFile(char* FileName)
     {
         DPRINT(MIN_TRACE, ("Insufficient memory.\n"));
         FreeMemory(NewFileName);
+        CloseFile(SrcFile);
         return CAB_STATUS_NOMEMORY;
     }
 
@@ -2051,6 +2061,7 @@ ULONG CCabinet::AddFile(char* FileName)
     {
         DPRINT(MIN_TRACE, ("Cannot read from file.\n"));
         FreeMemory(NewFileName);
+        CloseFile(SrcFile);
         return CAB_STATUS_CANNOT_READ;
     }
 
@@ -2058,6 +2069,7 @@ ULONG CCabinet::AddFile(char* FileName)
     {
         DPRINT(MIN_TRACE, ("Cannot read file times.\n"));
         FreeMemory(NewFileName);
+        CloseFile(SrcFile);
         return CAB_STATUS_CANNOT_READ;
     }
 
@@ -2065,6 +2077,7 @@ ULONG CCabinet::AddFile(char* FileName)
     {
         DPRINT(MIN_TRACE, ("Cannot read file attributes.\n"));
         FreeMemory(NewFileName);
+        CloseFile(SrcFile);
         return CAB_STATUS_CANNOT_READ;
     }
 
@@ -2080,12 +2093,12 @@ bool CCabinet::CreateSimpleCabinet()
 {
     bool bRet = false;
     char* pszFile;
-    char szFilePath[MAX_PATH];
-    char szFile[MAX_PATH];
+    char szFilePath[PATH_MAX];
+    char szFile[PATH_MAX];
     PSEARCH_CRITERIA Criteria;
     ULONG Status;
 
-#if defined(WIN32)
+#if defined(_WIN32)
     HANDLE hFind;
     WIN32_FIND_DATA FindFileData;
 #else
@@ -2099,7 +2112,7 @@ bool CCabinet::CreateSimpleCabinet()
     if (Status != CAB_STATUS_SUCCESS)
     {
         DPRINT(MIN_TRACE, ("Cannot create cabinet (%u).\n", (UINT)Status));
-        goto cleanup;
+        goto cleanup2;
     }
 
     // Add each file in the criteria list
@@ -2123,7 +2136,7 @@ bool CCabinet::CreateSimpleCabinet()
         {
             pszFile = Criteria->Search;
 
-#if defined(WIN32)
+#if defined(_WIN32)
             szFilePath[0] = 0;
 #else
             // needed for opendir()
@@ -2131,7 +2144,7 @@ bool CCabinet::CreateSimpleCabinet()
 #endif
         }
 
-#if defined(WIN32)
+#if defined(_WIN32)
         // Windows: Use the easy FindFirstFile/FindNextFile API for getting all files and checking them against the pattern
         hFind = FindFirstFile(Criteria->Search, &FindFileData);
 
@@ -2211,10 +2224,11 @@ bool CCabinet::CreateSimpleCabinet()
         goto cleanup;
     }
 
+cleanup:
     CloseCabinet();
     bRet = true;
 
-cleanup:
+cleanup2:
     DestroySearchCriteria();
     return bRet;
 }
@@ -2479,7 +2493,7 @@ ULONG CCabinet::ReadString(char* String, LONG MaxLength)
     // + 1 to skip the terminating NULL character as well.
     Size = -(MaxLength - Size) + 1;
 
-#if defined(WIN32)
+#if defined(_WIN32)
     if( SetFilePointer(FileHandle,
                        (LONG)Size,
                        NULL,
@@ -2515,7 +2529,7 @@ ULONG CCabinet::ReadFileTable()
         (UINT)CABHeader.FileTableOffset));
 
     /* Seek to file table */
-#if defined(WIN32)
+#if defined(_WIN32)
     if( SetFilePointer(FileHandle,
                        CABHeader.FileTableOffset,
                        NULL,
@@ -2548,7 +2562,7 @@ ULONG CCabinet::ReadFileTable()
             return CAB_STATUS_INVALID_CAB;
         }
 
-        File->FileName = (char*)AllocateMemory(MAX_PATH);
+        File->FileName = (char*)AllocateMemory(PATH_MAX);
         if (!File->FileName)
         {
             DPRINT(MIN_TRACE, ("Insufficient memory.\n"));
@@ -2556,7 +2570,7 @@ ULONG CCabinet::ReadFileTable()
         }
 
         /* Read file name */
-        Status = ReadString(File->FileName, MAX_PATH);
+        Status = ReadString(File->FileName, PATH_MAX);
         if (Status != CAB_STATUS_SUCCESS)
             return Status;
 
@@ -2603,7 +2617,7 @@ ULONG CCabinet::ReadDataBlocks(PCFFOLDER_NODE FolderNode)
         }
 
         /* Seek to data block */
-#if defined(WIN32)
+#if defined(_WIN32)
         if( SetFilePointer(FileHandle,
                            AbsoluteOffset,
                            NULL,
@@ -2999,7 +3013,7 @@ bool CCabinet::MatchFileNamePattern(char* FileName, char* Pattern)
                 retryFileName = FileName;
                 break;
 
-            case '?':  
+            case '?':
                 if (*FileName++ == '\0')
                     return false;
 
@@ -3168,7 +3182,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
     CABHeader.CabinetSize = DiskSize;
 
     /* Write header */
-#if defined(WIN32)
+#if defined(_WIN32)
     if (!WriteFile(FileHandle, &CABHeader, sizeof(CFHEADER), (LPDWORD)&BytesWritten, NULL))
     {
         DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3191,7 +3205,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
         ReservedSize = CabinetReservedFileSize & 0xffff;
         ReservedSize |= (0 << 16); /* Folder reserved area size */
         ReservedSize |= (0 << 24); /* Folder reserved area size */
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, &ReservedSize, sizeof(ULONG), (LPDWORD)&BytesWritten, NULL))
         {
             DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3206,7 +3220,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
         }
 #endif
 
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, CabinetReservedFileBuffer, CabinetReservedFileSize, (LPDWORD)&BytesWritten, NULL))
         {
             DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3228,7 +3242,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
 
         /* Write name of previous cabinet */
         Size = (ULONG)strlen(CabinetPrev) + 1;
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, CabinetPrev, Size, (LPDWORD)&BytesWritten, NULL))
         {
             DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3247,7 +3261,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
 
         /* Write label of previous disk */
         Size = (ULONG)strlen(DiskPrev) + 1;
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, DiskPrev, Size, (LPDWORD)&BytesWritten, NULL))
         {
             DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3269,7 +3283,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
 
         /* Write name of next cabinet */
         Size = (ULONG)strlen(CabinetNext) + 1;
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, CabinetNext, Size, (LPDWORD)&BytesWritten, NULL))
         {
             DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3288,7 +3302,7 @@ ULONG CCabinet::WriteCabinetHeader(bool MoreDisks)
 
         /* Write label of next disk */
         Size = (ULONG)strlen(DiskNext) + 1;
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, DiskNext, Size, (LPDWORD)&BytesWritten, NULL))
         {
             DPRINT(MIN_TRACE, ("Cannot write to file.\n"));
@@ -3328,7 +3342,7 @@ ULONG CCabinet::WriteFolderEntries()
             DPRINT(MAX_TRACE, ("Writing folder entry. CompressionType (0x%X)  DataBlockCount (%d)  DataOffset (0x%X).\n",
                 FolderNode->Folder.CompressionType, FolderNode->Folder.DataBlockCount, (UINT)FolderNode->Folder.DataOffset));
 
-#if defined(WIN32)
+#if defined(_WIN32)
             if (!WriteFile(FileHandle,
                         &FolderNode->Folder,
                         sizeof(CFFOLDER),
@@ -3390,7 +3404,7 @@ ULONG CCabinet::WriteFileEntries()
             DPRINT(MAX_TRACE, ("Writing file entry. FileControlID (0x%X)  FileOffset (0x%X)  FileSize (%u)  FileName (%s).\n",
                 File->File.FileControlID, (UINT)File->File.FileOffset, (UINT)File->File.FileSize, File->FileName));
 
-#if defined(WIN32)
+#if defined(_WIN32)
             if (!WriteFile(FileHandle,
                 &File->File,
                 sizeof(CFFILE),
@@ -3406,7 +3420,7 @@ ULONG CCabinet::WriteFileEntries()
             }
 #endif
 
-#if defined(WIN32)
+#if defined(_WIN32)
             if (!WriteFile(FileHandle,
                 GetFileName(File->FileName),
                 (DWORD)strlen(GetFileName(File->FileName)) + 1,
@@ -3470,7 +3484,7 @@ ULONG CCabinet::CommitDataBlocks(PCFFOLDER_NODE FolderNode)
             return Status;
         }
 
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, &DataNode->Data,
             sizeof(CFDATA), (LPDWORD)&BytesWritten, NULL))
         {
@@ -3486,7 +3500,7 @@ ULONG CCabinet::CommitDataBlocks(PCFFOLDER_NODE FolderNode)
         }
 #endif
 
-#if defined(WIN32)
+#if defined(_WIN32)
         if (!WriteFile(FileHandle, InputBuffer,
             DataNode->Data.CompSize, (LPDWORD)&BytesWritten, NULL))
         {
@@ -3595,7 +3609,7 @@ ULONG CCabinet::WriteDataBlock()
     return CAB_STATUS_SUCCESS;
 }
 
-#if !defined(WIN32)
+#if !defined(_WIN32)
 
 void CCabinet::ConvertDateAndTime(time_t* Time,
                                   PUSHORT DosDate,
@@ -3626,7 +3640,7 @@ void CCabinet::ConvertDateAndTime(time_t* Time,
         | (timedef->tm_hour << 11);
 }
 
-#endif // !WIN32
+#endif // !_WIN32
 
 
 ULONG CCabinet::GetFileTimes(FILEHANDLE FileHandle, PCFFILE_NODE File)
@@ -3639,7 +3653,7 @@ ULONG CCabinet::GetFileTimes(FILEHANDLE FileHandle, PCFFILE_NODE File)
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     FILETIME FileTime;
 
     if (GetFileTime(FileHandle, NULL, NULL, &FileTime))
@@ -3648,7 +3662,7 @@ ULONG CCabinet::GetFileTimes(FILEHANDLE FileHandle, PCFFILE_NODE File)
             &File->File.FileTime);
 #else
     struct stat stbuf;
-    char buf[MAX_PATH];
+    char buf[PATH_MAX];
 
     // Check for an absolute path
     if (IsSeparator(File->FileName[0]))
@@ -3679,7 +3693,7 @@ ULONG CCabinet::GetAttributesOnFile(PCFFILE_NODE File)
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     LONG Attributes;
 
     Attributes = GetFileAttributes(File->FileName);
@@ -3692,7 +3706,7 @@ ULONG CCabinet::GetAttributesOnFile(PCFFILE_NODE File)
     File->File.Attributes = (USHORT)(Attributes & 0x37);
 #else
     struct stat stbuf;
-    char buf[MAX_PATH];
+    char buf[PATH_MAX];
 
     // Check for an absolute path
     if (IsSeparator(File->FileName[0]))
@@ -3734,7 +3748,7 @@ ULONG CCabinet::SetAttributesOnFile(char* FileName, USHORT FileAttributes)
  *     Status of operation
  */
 {
-#if defined(WIN32)
+#if defined(_WIN32)
     // 0x37 = READONLY | HIDDEN | SYSTEM | DIRECTORY | ARCHIVE
     // The IDs for these attributes are the same in the CAB file and under Windows
     // If the file has any other attributes, strip them off by the logical AND.