* version of my_ebss in lastfile.c and a new firstfile.c file. jhar */
#include <config.h>
-#include <stdlib.h> /* _fmode */
-#include <stdio.h>
-#include <fcntl.h>
-#include <windows.h>
+#include "lisp.h"
+
+#include "syswindows.h"
+
+#include "nt.h"
+#include "ntheap.h"
/* From IMAGEHLP.H which is not installed by default by MSVC < 5 */
/* The IMAGEHLP.DLL library is not distributed by default with Windows95 */
extern BOOL ctrl_c_handler (unsigned long type);
#endif
-#include "ntheap.h"
-
-/* Sync with FSF Emacs 19.34.6 note: struct file_data is now defined in ntheap.h */
+/* Sync with FSF Emacs 19.34.6
+ note: struct file_data is now defined in nt.h */
enum {
HEAP_UNINITIALIZED = 1,
PUCHAR bss_start = UNINIT_PTR;
DWORD bss_size = UNINIT_LONG;
-#ifdef HAVE_NTGUI
-HINSTANCE hinst = NULL;
-HINSTANCE hprevinst = NULL;
-LPSTR lpCmdLine = "";
-int nCmdShow = 0;
-#endif /* HAVE_NTGUI */
-
/* Startup code for running on NT. When we are running as the dumped
version, we need to bootstrap our heap and .bss section into our
address space before we can actually hand off control to the startup
hit and fix all the weirdities this causes us, the better --kkm */
#if 0
/* The default behavior is to treat files as binary and patch up
- text files appropriately, in accordance with the MSDOS code. */
+ text files appropriately. */
_fmode = O_BINARY;
#endif
SetConsoleCtrlHandler ((PHANDLER_ROUTINE) ctrl_c_handler, TRUE);
#endif
- /* Invoke the NT CRT startup routine now that our housecleaning
- is finished. */
-#ifdef HAVE_NTGUI
- /* determine WinMain args like crt0.c does */
- hinst = GetModuleHandle(NULL);
- lpCmdLine = GetCommandLine();
- nCmdShow = SW_SHOWDEFAULT;
-#endif
mainCRTStartup ();
}
/* Dump out .data and .bss sections into a new executable. */
-void
-unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
- void *entry_address)
+int
+unexec (char *new_name, char *old_name, unsigned int start_data,
+ unsigned int start_bss, unsigned int entry_address)
{
file_data in_file, out_file;
char out_filename[MAX_PATH], in_filename[MAX_PATH];
close_file_data (&in_file);
close_file_data (&out_file);
-}
-
-
-/* File handling. */
-
-
-int
-open_output_file (file_data *p_file, const char *filename, unsigned long size)
-{
- HANDLE file;
- HANDLE file_mapping;
- void *file_base;
-
- file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
- CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
- if (file == INVALID_HANDLE_VALUE)
- return FALSE;
-
- file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE,
- 0, size, NULL);
- if (!file_mapping)
- return FALSE;
-
- file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size);
- if (file_base == NULL)
- return FALSE;
-
- p_file->name = filename;
- p_file->size = size;
- p_file->file = file;
- p_file->file_mapping = file_mapping;
- p_file->file_base = (char*) file_base;
- return TRUE;
+ return 0;
}
/* Routines to manipulate NT executable file sections. */