Release 960717
[wine] / library / sup.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include "windows.h"
4 #include "callback.h"
5 #include "arch.h"
6 #include "neexe.h"
7
8 /*
9  * Header loading routines for WineLib.
10  */
11
12 /* LOADSHORT Calls LOAD and swaps the high and the low bytes */
13
14 #define LOAD(x)  read (fd, &TAB->x, sizeof (TAB->x))
15 #define LOADSHORT(x) LOAD(x); TAB->x = CONV_SHORT (TAB->x);
16 #define LOADLONG(x) LOAD(x);  TAB->x = CONV_LONG (TAB->x);
17
18 void load_mz_header (int fd, struct mz_header_s *mz_header)
19 {
20 #define TAB mz_header
21         LOAD (mz_magic);
22     LOAD (dont_care);
23     LOADSHORT (ne_offset);
24 }
25
26 void load_ne_header (int fd, struct ne_header_s *ne_header)
27 {
28 #undef TAB
29 #define TAB ne_header
30     LOAD (ne_magic);
31     LOADSHORT (linker_version);
32     LOADSHORT (linker_revision);
33     LOADSHORT (entry_tab_offset);
34     LOADSHORT (entry_tab_length);
35     LOAD (reserved1);
36     LOADSHORT (format_flags);
37     LOADSHORT (auto_data_seg);
38     LOADSHORT (local_heap_length);
39     LOADSHORT (stack_length);
40     LOADSHORT (ip);
41     LOADSHORT (cs);
42     LOADSHORT (sp);
43     LOADSHORT (ss);
44     LOADSHORT (n_segment_tab);
45     LOADSHORT (n_mod_ref_tab);
46     LOADSHORT (nrname_tab_length);
47     LOADSHORT (segment_tab_offset);
48     LOADSHORT (resource_tab_offset);
49     LOADSHORT (rname_tab_offset);
50     LOADSHORT (moduleref_tab_offset);
51     LOADSHORT (iname_tab_offset);
52     LOADLONG (nrname_tab_offset);
53     LOADSHORT (n_mov_entry_points);
54     LOADSHORT (align_shift_count);
55     LOADSHORT (n_resource_seg);
56     LOAD (operating_system);
57     LOAD (additional_flags);
58     LOADSHORT (fastload_offset);
59     LOADSHORT (fastload_length);
60     LOADSHORT (reserved2);
61     LOADSHORT (expect_version);
62 }
63
64 /*
65  * Typeinfo loading routines for non PC-architectures.
66  */
67
68 int load_typeinfo (int fd, struct resource_typeinfo_s *typeinfo)
69 {
70 #undef TAB
71 #define TAB typeinfo
72     LOADSHORT (type_id);
73     LOADSHORT (count);
74     LOADLONG  (reserved);
75     return 1;
76 }
77
78 int load_nameinfo (int fd, struct resource_nameinfo_s *nameinfo)
79 {
80 #undef TAB
81 #define TAB nameinfo
82     LOADSHORT (offset);
83     LOADSHORT (length);
84     LOADSHORT (flags);
85     LOADSHORT (id);
86     LOADSHORT (handle);
87     LOADSHORT (usage);
88     return 0;
89 }