#include "console-stream.h"
#include "dumper.h"
-#ifdef WINDOWSNT
-#define WINDOWS_LEAN_AND_MEAN
-#include <windows.h>
-#define PATH_MAX MAXPATHLEN
-#else
#ifdef HAVE_MMAP
#include <sys/mman.h>
#endif
-#endif
#ifndef SEPCHAR
#define SEPCHAR ':'
char *pdump_start, *pdump_end;
static size_t pdump_length;
-
-#ifdef WINDOWSNT
-// Handle for the dump file
-HANDLE pdump_hFile = INVALID_HANDLE_VALUE;
-// Handle for the file mapping object for the dump file
-HANDLE pdump_hMap = INVALID_HANDLE_VALUE;
-#endif
-
void (*pdump_free) (void);
static const unsigned char align_table[256] =
}
#ifdef WINDOWSNT
-/* Free the mapped file if we decide we don't want it after all */
static void pdump_file_unmap(void)
{
- UnmapViewOfFile (pdump_start);
- CloseHandle (pdump_hFile);
- CloseHandle (pdump_hMap);
}
static int pdump_file_get(const char *path)
{
-
- pdump_hFile = CreateFile (path,
- GENERIC_READ + GENERIC_WRITE, /* Required for copy on write */
- 0, /* Not shared */
- NULL, /* Not inheritable */
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,
- NULL); /* No template file */
- if (pdump_hFile == INVALID_HANDLE_VALUE)
+ HANDLE hFile;
+ HANDLE hMap;
+
+ hFile = CreateFile (path,
+ GENERIC_READ + GENERIC_WRITE, /* Required for copy on write */
+ 0, /* Not shared */
+ NULL, /* Not inheritable */
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,
+ NULL); /* No template file */
+ if (hFile == INVALID_HANDLE_VALUE)
return 0;
- pdump_length = GetFileSize (pdump_hFile, NULL);
- pdump_hMap = CreateFileMapping (pdump_hFile,
- NULL, /* No security attributes */
- PAGE_WRITECOPY, /* Copy on write */
- 0, /* Max size, high half */
- 0, /* Max size, low half */
- NULL); /* Unnamed */
- if (pdump_hMap == INVALID_HANDLE_VALUE)
+ pdump_length = GetFileSize (hFile, NULL);
+ hMap = CreateFileMapping (hFile,
+ NULL, /* No security attributes */
+ PAGE_WRITECOPY, /* Copy on write */
+ 0, /* Max size, high half */
+ 0, /* Max size, low half */
+ NULL); /* Unnamed */
+ if (hMap == INVALID_HANDLE_VALUE)
return 0;
- pdump_start = MapViewOfFile (pdump_hMap,
+ pdump_start = MapViewOfFile (hMap,
FILE_MAP_COPY, /* Copy on write */
0, /* Start at zero */
0,
return 1;
}
-/* pdump_resource_free is called (via the pdump_free pointer) to release
- any resources allocated by pdump_resource_get. Since the Windows API
- specs specifically state that you don't need to (and shouldn't) free the
- resources allocated by FindResource, LoadResource, and LockResource this
- routine does nothing. */
static void pdump_resource_free (void)
-{
-}
-
static int pdump_resource_get (void)
{
HRSRC hRes; /* Handle to dump resource */
int pdump_load(const char *argv0)
{
char exe_path[PATH_MAX];
+ char *w;
#ifdef WINDOWSNT
- GetModuleFileName (NULL, exe_path, PATH_MAX);
+ GetModuleFileName (NULL, exe_name, PATH_MAX);
#else /* !WINDOWSNT */
- char *w;
const char *dir, *p;
dir = argv0;