/[emacs]/emacs/src/unexw32.c
ViewVC logotype

Diff of /emacs/src/unexw32.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21 by andrewi, Tue Aug 22 22:44:39 2000 UTC revision 1.21.20.1 by miles, Fri Apr 4 06:21:03 2003 UTC
# Line 148  open_input_file (file_data *p_file, char Line 148  open_input_file (file_data *p_file, char
148    
149    file = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ, NULL,    file = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ, NULL,
150                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
151    if (file == INVALID_HANDLE_VALUE)    if (file == INVALID_HANDLE_VALUE)
152      return FALSE;      return FALSE;
153    
154    size = GetFileSize (file, &upper_size);    size = GetFileSize (file, &upper_size);
155    file_mapping = CreateFileMapping (file, NULL, PAGE_READONLY,    file_mapping = CreateFileMapping (file, NULL, PAGE_READONLY,
156                                      0, size, NULL);                                      0, size, NULL);
157    if (!file_mapping)    if (!file_mapping)
158      return FALSE;      return FALSE;
159    
160    file_base = MapViewOfFile (file_mapping, FILE_MAP_READ, 0, 0, size);    file_base = MapViewOfFile (file_mapping, FILE_MAP_READ, 0, 0, size);
161    if (file_base == 0)    if (file_base == 0)
162      return FALSE;      return FALSE;
163    
164    p_file->name = filename;    p_file->name = filename;
# Line 179  open_output_file (file_data *p_file, cha Line 179  open_output_file (file_data *p_file, cha
179    
180    file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,    file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
181                       CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);                       CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
182    if (file == INVALID_HANDLE_VALUE)    if (file == INVALID_HANDLE_VALUE)
183      return FALSE;      return FALSE;
184    
185    file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE,    file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE,
186                                      0, size, NULL);                                      0, size, NULL);
187    if (!file_mapping)    if (!file_mapping)
188      return FALSE;      return FALSE;
189      
190    file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size);    file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size);
191    if (file_base == 0)    if (file_base == 0)
192      return FALSE;      return FALSE;
193      
194    p_file->name = filename;    p_file->name = filename;
195    p_file->size = size;    p_file->size = size;
196    p_file->file = file;    p_file->file = file;
# Line 345  get_section_info (file_data *p_infile) Line 345  get_section_info (file_data *p_infile)
345    PIMAGE_NT_HEADERS nt_header;    PIMAGE_NT_HEADERS nt_header;
346    PIMAGE_SECTION_HEADER section;    PIMAGE_SECTION_HEADER section;
347    int overlap;    int overlap;
348      
349    dos_header = (PIMAGE_DOS_HEADER) p_infile->file_base;    dos_header = (PIMAGE_DOS_HEADER) p_infile->file_base;
350    if (dos_header->e_magic != IMAGE_DOS_SIGNATURE)    if (dos_header->e_magic != IMAGE_DOS_SIGNATURE)
351      {      {
352        printf ("Unknown EXE header in %s...bailing.\n", p_infile->name);        printf ("Unknown EXE header in %s...bailing.\n", p_infile->name);
353        exit (1);        exit (1);
354      }      }
355    nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +    nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +
356                                     dos_header->e_lfanew);                                     dos_header->e_lfanew);
357    if (nt_header == NULL)    if (nt_header == NULL)
358      {      {
359        printf ("Failed to find IMAGE_NT_HEADER in %s...bailing.\n",        printf ("Failed to find IMAGE_NT_HEADER in %s...bailing.\n",
360               p_infile->name);               p_infile->name);
361        exit (1);        exit (1);
362      }      }
363    
364    /* Check the NT header signature ...  */    /* Check the NT header signature ...  */
365    if (nt_header->Signature != IMAGE_NT_SIGNATURE)    if (nt_header->Signature != IMAGE_NT_SIGNATURE)
366      {      {
367        printf ("Invalid IMAGE_NT_SIGNATURE 0x%x in %s...bailing.\n",        printf ("Invalid IMAGE_NT_SIGNATURE 0x%x in %s...bailing.\n",
368                nt_header->Signature, p_infile->name);                nt_header->Signature, p_infile->name);
# Line 482  get_section_info (file_data *p_infile) Line 482  get_section_info (file_data *p_infile)
482  /* The dump routines.  */  /* The dump routines.  */
483    
484  void  void
485  copy_executable_and_dump_data (file_data *p_infile,  copy_executable_and_dump_data (file_data *p_infile,
486                                 file_data *p_outfile)                                 file_data *p_outfile)
487  {  {
488    unsigned char *dst, *dst_save;    unsigned char *dst, *dst_save;
# Line 537  copy_executable_and_dump_data (file_data Line 537  copy_executable_and_dump_data (file_data
537       Note that dst is updated implicitly by each COPY_CHUNK.  */       Note that dst is updated implicitly by each COPY_CHUNK.  */
538    
539    dos_header = (PIMAGE_DOS_HEADER) p_infile->file_base;    dos_header = (PIMAGE_DOS_HEADER) p_infile->file_base;
540    nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +    nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +
541                                     dos_header->e_lfanew);                                     dos_header->e_lfanew);
542    section = IMAGE_FIRST_SECTION (nt_header);    section = IMAGE_FIRST_SECTION (nt_header);
543    
544    dst = (unsigned char *) p_outfile->file_base;    dst = (unsigned char *) p_outfile->file_base;
545    
546    COPY_CHUNK ("Copying DOS header...", dos_header,    COPY_CHUNK ("Copying DOS header...", dos_header,
# Line 736  unexec (char *new_name, char *old_name, Line 736  unexec (char *new_name, char *old_name,
736    if ((q = strrchr (new_name, '/')) == NULL)    if ((q = strrchr (new_name, '/')) == NULL)
737      abort ();      abort ();
738    strcpy (p, q);    strcpy (p, q);
739      
740    /* Make sure that the output filename has the ".exe" extension...patch    /* Make sure that the output filename has the ".exe" extension...patch
741       it up if not.  */       it up if not.  */
742    p = out_filename + strlen (out_filename) - 4;    p = out_filename + strlen (out_filename) - 4;
# Line 752  unexec (char *new_name, char *old_name, Line 752  unexec (char *new_name, char *old_name,
752    /* Open the undumped executable file.  */    /* Open the undumped executable file.  */
753    if (!open_input_file (&in_file, in_filename))    if (!open_input_file (&in_file, in_filename))
754      {      {
755        printf ("Failed to open %s (%d)...bailing.\n",        printf ("Failed to open %s (%d)...bailing.\n",
756                in_filename, GetLastError ());                in_filename, GetLastError ());
757        exit (1);        exit (1);
758      }      }
# Line 768  unexec (char *new_name, char *old_name, Line 768  unexec (char *new_name, char *old_name,
768      extra_bss_size_static;      extra_bss_size_static;
769    if (!open_output_file (&out_file, out_filename, size))    if (!open_output_file (&out_file, out_filename, size))
770      {      {
771        printf ("Failed to open %s (%d)...bailing.\n",        printf ("Failed to open %s (%d)...bailing.\n",
772                out_filename, GetLastError ());                out_filename, GetLastError ());
773        exit (1);        exit (1);
774      }      }

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.21.20.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26