annotate loader/ext.c @ 25661:293aeec83153

Replace the persistent CODECS_FLAG_SELECTED by a local "stringset" with an almost-trivial implementation. This allows making the builtin codec structs const, and it also makes clearer that this "selected" status is not used outside the init functions.
author reimar
date Sat, 12 Jan 2008 14:05:46 +0000
parents 16d5efcad1f7
children b70f5ac9c001
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1 /********************************************************
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
2 *
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 * Stub functions for Wine module
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 ********************************************************/
15166
f5537cc95b02 Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents: 13827
diff changeset
8
f5537cc95b02 Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents: 13827
diff changeset
9 /*
18783
0783dd397f74 CVS --> Subversion in copyright notices
diego
parents: 15166
diff changeset
10 * Modified for use with MPlayer, detailed changelog at
0783dd397f74 CVS --> Subversion in copyright notices
diego
parents: 15166
diff changeset
11 * http://svn.mplayerhq.hu/mplayer/trunk/
15166
f5537cc95b02 Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents: 13827
diff changeset
12 * $Id$
f5537cc95b02 Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents: 13827
diff changeset
13 */
f5537cc95b02 Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents: 13827
diff changeset
14
3465
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
15 #include "config.h"
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
16 #include <stdio.h>
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
17 #include <stdlib.h>
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 #ifdef HAVE_MALLOC_H
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 #include <malloc.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 #include <unistd.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 #include <sys/mman.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 #include <fcntl.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26 #include <stdarg.h>
3465
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
27 #include <ctype.h>
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
28
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
29 #include "osdep/mmap_anon.h"
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
30 #include "wine/windef.h"
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
31 #include "wine/winbase.h"
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
32 #include "wine/debugtools.h"
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
33 #include "wine/heap.h"
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
34 #include "ext.h"
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
35
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
36 #if 0
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
37 //REMOVE SIMPLIFY
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
38 static void* mymalloc(unsigned int size)
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
39 {
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
40 printf("malloc %d\n", size);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
41 return malloc(size);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
42 }
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
43
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
44 #undef malloc
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
45 #define malloc mymalloc
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
46 #endif
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
47
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 int dbg_header_err( const char *dbg_channel, const char *func )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
50 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 int dbg_header_warn( const char *dbg_channel, const char *func )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
54 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 int dbg_header_fixme( const char *dbg_channel, const char *func )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
58 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 int dbg_header_trace( const char *dbg_channel, const char *func )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
62 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
64 int dbg_vprintf( const char *format, va_list args )
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
66 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 int __vprintf( const char *format, ... )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 #ifdef DETAILED_OUT
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 va_list va;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 va_start(va, format);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 vprintf(format, va);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 va_end(va);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75 #endif
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
76 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 }
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
78
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
79 HANDLE WINAPI GetProcessHeap(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 return 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
84 LPVOID WINAPI HeapAlloc(HANDLE heap, DWORD flags, DWORD size)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 {
24383
d7f252c2e3a6 warning fixes:
diego
parents: 22413
diff changeset
86 //static int i = 5;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
87 void* m = (flags & 0x8) ? calloc(size, 1) : malloc(size);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
88 //printf("HeapAlloc %p %d (%d)\n", m, size, flags);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
89 //if (--i == 0)
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
90 // abort();
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
91 return m;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
94 WIN_BOOL WINAPI HeapFree(HANDLE heap, DWORD flags, LPVOID mem)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95 {
128
28091b3caff9 DLL loader updated from avifile-0.60beta4
arpi_esp
parents: 1
diff changeset
96 if (mem) free(mem);
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
97 //printf("HeapFree %p\n", mem);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
98 //if (!mem)
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
99 // abort();
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100 return 1;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
101 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103 static int last_error;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
105 DWORD WINAPI GetLastError(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
106 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107 return last_error;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
110 VOID WINAPI SetLastError(DWORD error)
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
111 {
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
112 last_error=error;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
113 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
115 WIN_BOOL WINAPI ReadFile(HANDLE handle, LPVOID mem, DWORD size, LPDWORD result, LPOVERLAPPED flags)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
116 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 *result=read(handle, mem, size);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
118 return *result;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
119 }
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
120 INT WINAPI lstrcmpiA(LPCSTR c1, LPCSTR c2)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
121 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 return strcasecmp(c1,c2);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
124 LPSTR WINAPI lstrcpynA(LPSTR dest, LPCSTR src, INT num)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
125 {
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
126 return strncpy(dest,src,num);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
127 }
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
128 INT WINAPI lstrlenA(LPCSTR s)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
129 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 return strlen(s);
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
131 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
132 INT WINAPI lstrlenW(LPCWSTR s)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 int l;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 if(!s)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137 l=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138 while(s[l])
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139 l++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 return l;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
142 LPSTR WINAPI lstrcpynWtoA(LPSTR dest, LPCWSTR src, INT count)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 {
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
144 LPSTR result = dest;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
145 int moved=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
146 if((dest==0) || (src==0))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
147 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148 while(moved<count)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
149 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
150 *dest=*src;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
151 moved++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
152 if(*src==0)
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
153 break;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
154 src++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
155 dest++;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
156 }
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
157 return result;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
158 }
3465
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
159 /* i stands here for ignore case! */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160 int wcsnicmp(const unsigned short* s1, const unsigned short* s2, int n)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
161 {
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
162 /*
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163 if(s1==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
164 return;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
165 if(s2==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
166 return;
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
167 */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
168 while(n>0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
169 {
3465
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
170 if (((*s1 | *s2) & 0xff00) || toupper((char)*s1) != toupper((char)*s2))
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
171 {
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
172
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
173 if(*s1<*s2)
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
174 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
175 else
3465
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
176 if(*s1>*s2)
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
177 return 1;
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
178 else
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
179 if(*s1==0)
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
180 return 0;
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
181 }
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
182 s1++;
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
183 s2++;
4dad31e655b6 avifile merge. kabi: indent changes really suxxxx
arpi
parents: 3134
diff changeset
184 n--;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
185 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
186 return 0;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
187 }
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
188
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
189 WIN_BOOL WINAPI IsBadReadPtr(LPCVOID data, UINT size)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
190 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
191 if(size==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
192 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
193 if(data==NULL)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
194 return 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
195 return 0;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
196 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
197 LPSTR HEAP_strdupA(HANDLE heap, DWORD flags, LPCSTR string)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
198 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199 // return strdup(string);
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
200 char* answ = (char*) malloc(strlen(string) + 1);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
201 strcpy(answ, string);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
202 return answ;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
204 LPWSTR HEAP_strdupAtoW(HANDLE heap, DWORD flags, LPCSTR string)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
205 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
206 int size, i;
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
207 WCHAR* answer;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
208 if(string==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
209 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
210 size=strlen(string);
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
211 answer = (WCHAR*) malloc(sizeof(WCHAR) * (size + 1));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
212 for(i=0; i<=size; i++)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
213 answer[i]=(short)string[i];
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
214 return answer;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
215 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
216 LPSTR HEAP_strdupWtoA(HANDLE heap, DWORD flags, LPCWSTR string)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
217 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
218 int size, i;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
219 char* answer;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
220 if(string==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
221 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
222 size=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
223 while(string[size])
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
224 size++;
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
225 answer = (char*) malloc(size + 2);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
226 for(i=0; i<=size; i++)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
227 answer[i]=(char)string[i];
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
228 return answer;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
229 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231 /***********************************************************************
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 * FILE_dommap
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235 //#define MAP_PRIVATE
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
236 //#define MAP_SHARED
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
237 LPVOID FILE_dommap( int unix_handle, LPVOID start,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
238 DWORD size_high, DWORD size_low,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
239 DWORD offset_high, DWORD offset_low,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
240 int prot, int flags )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 int fd = -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
243 int pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 LPVOID ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
245
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
246 if (size_high || offset_high)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
247 printf("offsets larger than 4Gb not supported\n");
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
248
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
249 if (unix_handle == -1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
250 {
21248
2de480457872 Remove useless fd parameter for mmap_anon
reimar
parents: 21246
diff changeset
251 ret = mmap_anon( start, size_low, prot, flags, offset_low );
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
252 }
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
253 else
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
254 {
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
255 fd = unix_handle;
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
256 ret = mmap( start, size_low, prot, flags, fd, offset_low );
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
257 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
258
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
259 if (ret != (LPVOID)-1)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
261 // printf("address %08x\n", *(int*)ret);
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
262 // printf("%x\n", ret);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
263 return ret;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
264 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
265
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
266 // printf("mmap %d\n", errno);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
267
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
268 /* mmap() failed; if this is because the file offset is not */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
269 /* page-aligned (EINVAL), or because the underlying filesystem */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
270 /* does not support mmap() (ENOEXEC), we do it by hand. */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
271
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
272 if (unix_handle == -1) return ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
273 if ((errno != ENOEXEC) && (errno != EINVAL)) return ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
274 if (prot & PROT_WRITE)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
275 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
276 /* We cannot fake shared write mappings */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
277 #ifdef MAP_SHARED
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
278 if (flags & MAP_SHARED) return ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
279 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280 #ifdef MAP_PRIVATE
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
281 if (!(flags & MAP_PRIVATE)) return ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
282 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
283 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
284 /* printf( "FILE_mmap: mmap failed (%d), faking it\n", errno );*/
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
285 /* Reserve the memory with an anonymous mmap */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
286 ret = FILE_dommap( -1, start, size_high, size_low, 0, 0,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
287 PROT_READ | PROT_WRITE, flags );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
288 if (ret == (LPVOID)-1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
289 // {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
290 // perror(
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
291 return ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
292 /* Now read in the file */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
293 if ((pos = lseek( fd, offset_low, SEEK_SET )) == -1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
294 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
295 FILE_munmap( ret, size_high, size_low );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
296 // printf("lseek\n");
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
297 return (LPVOID)-1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
298 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
299 read( fd, ret, size_low );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
300 lseek( fd, pos, SEEK_SET ); /* Restore the file pointer */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
301 mprotect( ret, size_low, prot ); /* Set the right protection */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
302 // printf("address %08x\n", *(int*)ret);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
303 return ret;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
304 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
307 /***********************************************************************
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308 * FILE_munmap
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
310 int FILE_munmap( LPVOID start, DWORD size_high, DWORD size_low )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
311 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
312 if (size_high)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
313 printf("offsets larger than 4Gb not supported\n");
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
314 return munmap( start, size_low );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
315 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
316
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
317 struct file_mapping_s;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
318 typedef struct file_mapping_s
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
319 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
320 int mapping_size;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
321 char* name;
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
322 LPVOID handle;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
323 struct file_mapping_s* next;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
324 struct file_mapping_s* prev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
325 }file_mapping;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
326 static file_mapping* fm=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
327
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
328
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
329
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
330 #define PAGE_NOACCESS 0x01
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
331 #define PAGE_READONLY 0x02
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
332 #define PAGE_READWRITE 0x04
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
333 #define PAGE_WRITECOPY 0x08
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
334 #define PAGE_EXECUTE 0x10
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
335 #define PAGE_EXECUTE_READ 0x20
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
336 #define PAGE_EXECUTE_READWRITE 0x40
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
337 #define PAGE_EXECUTE_WRITECOPY 0x80
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
338 #define PAGE_GUARD 0x100
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
339 #define PAGE_NOCACHE 0x200
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
340
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
341 HANDLE WINAPI CreateFileMappingA(HANDLE handle, LPSECURITY_ATTRIBUTES lpAttr,
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
342 DWORD flProtect,
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
343 DWORD dwMaxHigh, DWORD dwMaxLow,
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
344 LPCSTR name)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
345 {
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
346 int hFile = (int)handle;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
347 unsigned int len;
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
348 LPVOID answer;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
349 int anon=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
350 int mmap_access=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
351 if(hFile<0)
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
352 anon=1;
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
353
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
354 if(!anon)
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
355 {
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
356 len=lseek(hFile, 0, SEEK_END);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
357 lseek(hFile, 0, SEEK_SET);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
358 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359 else len=dwMaxLow;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
360
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
361 if(flProtect & PAGE_READONLY)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
362 mmap_access |=PROT_READ;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
363 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
364 mmap_access |=PROT_READ|PROT_WRITE;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
365
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
366 if(anon)
21248
2de480457872 Remove useless fd parameter for mmap_anon
reimar
parents: 21246
diff changeset
367 answer=mmap_anon(NULL, len, mmap_access, MAP_PRIVATE, 0);
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
368 else
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
369 answer=mmap(NULL, len, mmap_access, MAP_PRIVATE, hFile, 0);
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
370
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
371 if(answer!=(LPVOID)-1)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
372 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
373 if(fm==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
374 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
375 fm = (file_mapping*) malloc(sizeof(file_mapping));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
376 fm->prev=NULL;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
377 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
378 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
379 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
380 fm->next = (file_mapping*) malloc(sizeof(file_mapping));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
381 fm->next->prev=fm;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
382 fm=fm->next;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
383 }
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
384 fm->next=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
385 fm->handle=answer;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
386 if(name)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
387 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
388 fm->name = (char*) malloc(strlen(name)+1);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
389 strcpy(fm->name, name);
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
390 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
391 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
392 fm->name=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
393 fm->mapping_size=len;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
394
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
395 return (HANDLE)answer;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
396 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
397 return (HANDLE)0;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
398 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
399 WIN_BOOL WINAPI UnmapViewOfFile(LPVOID handle)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
400 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
401 file_mapping* p;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
402 int result;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
403 if(fm==0)
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
404 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
405 for(p=fm; p; p=p->next)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
406 {
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
407 if(p->handle==handle)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
408 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
409 result=munmap((void*)handle, p->mapping_size);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
410 if(p->next)p->next->prev=p->prev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
411 if(p->prev)p->prev->next=p->next;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
412 if(p->name)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
413 free(p->name);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
414 if(p==fm)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
415 fm=p->prev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
416 free(p);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417 return result;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
418 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419 }
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
420 return 0;
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
421 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
422 //static int va_size=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
423 struct virt_alloc_s;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
424 typedef struct virt_alloc_s
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
425 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
426 int mapping_size;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
427 char* address;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
428 struct virt_alloc_s* next;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
429 struct virt_alloc_s* prev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
430 int state;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
431 }virt_alloc;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
432 static virt_alloc* vm=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
433 #define MEM_COMMIT 0x00001000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
434 #define MEM_RESERVE 0x00002000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
435
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
436 LPVOID WINAPI VirtualAlloc(LPVOID address, DWORD size, DWORD type, DWORD protection)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
437 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
438 void* answer;
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
439 long pgsz;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
440
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
441 //printf("VirtualAlloc(0x%08X, %u, 0x%08X, 0x%08X)\n", (unsigned)address, size, type, protection);
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
442
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
443 if ((type&(MEM_RESERVE|MEM_COMMIT)) == 0) return NULL;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
444
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
445 if (type&MEM_RESERVE && (unsigned)address&0xffff) {
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
446 size += (unsigned)address&0xffff;
13827
374178b2a49a gcc-4.0.0-20041024 compile-fix
atmos4
parents: 13306
diff changeset
447 address = (unsigned)address&~0xffff;
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
448 }
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
449 pgsz = sysconf(_SC_PAGESIZE);
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
450 if (type&MEM_COMMIT && (unsigned)address%pgsz) {
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
451 size += (unsigned)address%pgsz;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
452 address -= (unsigned)address%pgsz;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
453 }
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
454
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
455 if (type&MEM_RESERVE && size<0x10000) size = 0x10000;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
456 if (size%pgsz) size += pgsz - size%pgsz;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
457
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
458 if(address!=0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
459 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
460 //check whether we can allow to allocate this
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
461 virt_alloc* str=vm;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
462 while(str)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
464 if((unsigned)address>=(unsigned)str->address+str->mapping_size)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
465 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
466 str=str->prev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
467 continue;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
468 }
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
469 if((unsigned)address+size<=(unsigned)str->address)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
470 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
471 str=str->prev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
472 continue;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
474 if(str->state==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
475 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
476 #warning FIXME
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
477 if( ((unsigned)address >= (unsigned)str->address)
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
478 && ((unsigned)address+size<=(unsigned)str->address+str->mapping_size)
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
479 && (type & MEM_COMMIT))
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
480 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
481 return address; //returning previously reserved memory
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
482 }
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
483 //printf(" VirtualAlloc(...) does not commit or not entirely within reserved, and\n");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
484 }
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
485 /*printf(" VirtualAlloc(...) (0x%08X, %u) overlaps with (0x%08X, %u, state=%d)\n",
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
486 (unsigned)address, size, (unsigned)str->address, str->mapping_size, str->state);*/
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
487 return NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
488 }
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
489 }
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
490
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
491 answer=mmap_anon(address, size, PROT_READ | PROT_WRITE | PROT_EXEC,
21248
2de480457872 Remove useless fd parameter for mmap_anon
reimar
parents: 21246
diff changeset
492 MAP_PRIVATE, 0);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
493 // answer=FILE_dommap(-1, address, 0, size, 0, 0,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
494 // PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE);
21187
d9cedf7b8069 added mmap_anon to osdep lib. Used in loader for now
nplourde
parents: 18783
diff changeset
495
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
496 if (answer != (void *)-1 && address && answer != address) {
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
497 /* It is dangerous to try mmap() with MAP_FIXED since it does not
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
498 always detect conflicts or non-allocation and chaos ensues after
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
499 a successful call but an overlapping or non-allocated region. */
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
500 munmap(answer, size);
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
501 answer = (void *) -1;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
502 errno = EINVAL;
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
503 //printf(" VirtualAlloc(...) cannot satisfy requested address but address=NULL would work.\n");
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
504 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
505 if(answer==(void*)-1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
506 {
13306
rtognimp
parents: 13303
diff changeset
507 /*printf(" VirtualAlloc(...) mmap(0x%08X, %u, ...) failed with errno=%d (\"%s\")\n",
rtognimp
parents: 13303
diff changeset
508 (unsigned)address, size, errno, strerror(errno));*/
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
509 return NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
510 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
511 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
512 {
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
513 virt_alloc *new_vm = (virt_alloc*) malloc(sizeof(virt_alloc));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
514 new_vm->mapping_size=size;
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 3775
diff changeset
515 new_vm->address=(char*)answer;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
516 new_vm->prev=vm;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
517 if(type == MEM_RESERVE)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
518 new_vm->state=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
519 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
520 new_vm->state=1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
521 if(vm)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
522 vm->next=new_vm;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
523 vm=new_vm;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
524 vm->next=0;
3134
181db9e5a887 avifile sync again... :(
arpi
parents: 2651
diff changeset
525 //if(va_size!=0)
181db9e5a887 avifile sync again... :(
arpi
parents: 2651
diff changeset
526 // printf("Multiple VirtualAlloc!\n");
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
527 //printf(" VirtualAlloc(...) provides (0x%08X, %u)\n", (unsigned)answer, size);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
528 return answer;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
529 }
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
530 }
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
531
3134
181db9e5a887 avifile sync again... :(
arpi
parents: 2651
diff changeset
532 WIN_BOOL WINAPI VirtualFree(LPVOID address, SIZE_T dwSize, DWORD dwFreeType)//not sure
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
533 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
534 virt_alloc* str=vm;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
535 int answer;
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
536
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
537 //printf("VirtualFree(0x%08X, %d, 0x%08X)\n", (unsigned)address, dwSize, dwFreeType);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
538 while(str)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
539 {
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
540 if(address!=str->address)
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
541 {
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
542 str=str->prev;
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
543 continue;
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
544 }
13303
2571b2e0c0b4 Fixes for VirtualAlloc function:
rtognimp
parents: 7386
diff changeset
545 //printf(" VirtualFree(...) munmap(0x%08X, %d)\n", (unsigned)str->address, str->mapping_size);
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
546 answer=munmap(str->address, str->mapping_size);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
547 if(str->next)str->next->prev=str->prev;
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
548 if(str->prev)str->prev->next=str->next;
3134
181db9e5a887 avifile sync again... :(
arpi
parents: 2651
diff changeset
549 if(vm==str)vm=str->prev;
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
550 free(str);
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
551 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
552 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
553 return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
554 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
555
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
556 INT WINAPI WideCharToMultiByte(UINT codepage, DWORD flags, LPCWSTR src,
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
557 INT srclen,LPSTR dest, INT destlen, LPCSTR defch, WIN_BOOL* used_defch)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
558 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
559 int i;
128
28091b3caff9 DLL loader updated from avifile-0.60beta4
arpi_esp
parents: 1
diff changeset
560 if(srclen==-1){srclen=0; while(src[srclen++]);}
22413
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
561 if(destlen==0)
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
562 return srclen;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
563 if(used_defch)
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
564 *used_defch=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
565 for(i=0; i<min(srclen, destlen); i++)
22413
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
566 *dest++=(char)*src++;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
567 return min(srclen, destlen);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
568 }
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
569 INT WINAPI MultiByteToWideChar(UINT codepage,DWORD flags, LPCSTR src, INT srclen,
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
570 LPWSTR dest, INT destlen)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
571 {
22413
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
572 int i;
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
573 if(srclen==-1){srclen=0; while(src[srclen++]);}
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
574 if(destlen==0)
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
575 return srclen;
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
576 for(i=0; i<min(srclen, destlen); i++)
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
577 *dest++=(WCHAR)*src++;
219d577285e1 Fix and simplify the WideCharToMultiByte and MultiByteToWideChar pseudo-implementations.
reimar
parents: 21248
diff changeset
578 return min(srclen, destlen);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
579 }
1307
d8c1b0b38edc Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents: 128
diff changeset
580 HANDLE WINAPI OpenFileMappingA(DWORD access, WIN_BOOL prot, LPCSTR name)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
581 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
582 file_mapping* p;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
583 if(fm==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
584 return (HANDLE)0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
585 if(name==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
586 return (HANDLE)0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
587 for(p=fm; p; p=p->prev)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
588 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
589 if(p->name==0)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
590 continue;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
591 if(strcmp(p->name, name)==0)
2069
ce45cce7f7a5 sync with avifile
arpi
parents: 1307
diff changeset
592 return (HANDLE)p->handle;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
593 }
2651
958d10763c34 partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents: 2069
diff changeset
594 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
595 }