Mercurial > mplayer.hg
comparison loader/ext.c @ 2069:ce45cce7f7a5
sync with avifile
author | arpi |
---|---|
date | Thu, 04 Oct 2001 02:21:47 +0000 |
parents | d8c1b0b38edc |
children | 958d10763c34 |
comparison
equal
deleted
inserted
replaced
2068:3189c317dfc1 | 2069:ce45cce7f7a5 |
---|---|
65 return calloc(size, 1); | 65 return calloc(size, 1); |
66 else | 66 else |
67 return malloc(size); | 67 return malloc(size); |
68 } | 68 } |
69 | 69 |
70 WIN_BOOL WINAPI HeapFree(HANDLE heap, DWORD flags,LPVOID mem) | 70 WIN_BOOL WINAPI HeapFree(HANDLE heap, DWORD flags, LPVOID mem) |
71 { | 71 { |
72 if (mem) free(mem); | 72 if (mem) free(mem); |
73 return 1; | 73 return 1; |
74 } | 74 } |
75 | 75 |
80 return last_error; | 80 return last_error; |
81 } | 81 } |
82 | 82 |
83 VOID WINAPI SetLastError(DWORD error) | 83 VOID WINAPI SetLastError(DWORD error) |
84 { | 84 { |
85 last_error = error; | 85 last_error=error; |
86 } | 86 } |
87 | 87 |
88 WIN_BOOL WINAPI ReadFile(HANDLE handle,LPVOID mem, DWORD size, LPDWORD result, LPOVERLAPPED flags) | 88 WIN_BOOL WINAPI ReadFile(HANDLE handle, LPVOID mem, DWORD size, LPDWORD result, LPOVERLAPPED flags) |
89 { | 89 { |
90 *result=read(handle, mem, size); | 90 *result=read(handle, mem, size); |
91 return *result; | 91 return *result; |
92 } | 92 } |
93 int WINAPI lstrcmpiA(const char* c1, const char* c2) | 93 INT WINAPI lstrcmpiA(LPCSTR c1, LPCSTR c2) |
94 { | 94 { |
95 return strcasecmp(c1,c2); | 95 return strcasecmp(c1,c2); |
96 } | 96 } |
97 LPSTR WINAPI lstrcpynA(LPSTR dest, LPCSTR src, INT num) | 97 LPSTR WINAPI lstrcpynA(LPSTR dest, LPCSTR src, INT num) |
98 { | 98 { |
99 return strncpy(dest,src,num); | 99 return strncpy(dest,src,num); |
100 } | 100 } |
101 int WINAPI lstrlenA(const char* s) | 101 INT WINAPI lstrlenA(LPCSTR s) |
102 { | 102 { |
103 return strlen(s); | 103 return strlen(s); |
104 } | 104 } |
105 INT WINAPI lstrlenW(LPCWSTR s) | 105 INT WINAPI lstrlenW(LPCWSTR s) |
106 { | 106 { |
112 l++; | 112 l++; |
113 return l; | 113 return l; |
114 } | 114 } |
115 LPSTR WINAPI lstrcpynWtoA(LPSTR dest, LPCWSTR src, INT count) | 115 LPSTR WINAPI lstrcpynWtoA(LPSTR dest, LPCWSTR src, INT count) |
116 { | 116 { |
117 LPSTR rval = dest; | 117 LPSTR result = dest; |
118 int moved=0; | 118 int moved=0; |
119 if((dest==0) || (src==0)) | 119 if((dest==0) || (src==0)) |
120 return 0; | 120 return 0; |
121 while(moved<count) | 121 while(moved<count) |
122 { | 122 { |
125 if(*src==0) | 125 if(*src==0) |
126 break; | 126 break; |
127 src++; | 127 src++; |
128 dest++; | 128 dest++; |
129 } | 129 } |
130 return rval; | 130 return result; |
131 } | 131 } |
132 int wcsnicmp(const unsigned short* s1, const unsigned short* s2, int n) | 132 int wcsnicmp(const unsigned short* s1, const unsigned short* s2, int n) |
133 { | 133 { |
134 /* | |
134 if(s1==0) | 135 if(s1==0) |
135 return; | 136 return; |
136 if(s2==0) | 137 if(s2==0) |
137 return; | 138 return; |
139 */ | |
138 while(n>0) | 140 while(n>0) |
139 { | 141 { |
140 if(*s1<*s2) | 142 if(*s1<*s2) |
141 return -1; | 143 return -1; |
142 else | 144 else |
307 struct file_mapping_s; | 309 struct file_mapping_s; |
308 typedef struct file_mapping_s | 310 typedef struct file_mapping_s |
309 { | 311 { |
310 int mapping_size; | 312 int mapping_size; |
311 char* name; | 313 char* name; |
312 HANDLE handle; | 314 LPVOID handle; |
313 struct file_mapping_s* next; | 315 struct file_mapping_s* next; |
314 struct file_mapping_s* prev; | 316 struct file_mapping_s* prev; |
315 }file_mapping; | 317 }file_mapping; |
316 static file_mapping* fm=0; | 318 static file_mapping* fm=0; |
317 | 319 |
333 DWORD dwMaxHigh, DWORD dwMaxLow, | 335 DWORD dwMaxHigh, DWORD dwMaxLow, |
334 LPCSTR name) | 336 LPCSTR name) |
335 { | 337 { |
336 int hFile = (int)handle; | 338 int hFile = (int)handle; |
337 unsigned int len; | 339 unsigned int len; |
338 HANDLE answer; | 340 LPVOID answer; |
339 int anon=0; | 341 int anon=0; |
340 int mmap_access=0; | 342 int mmap_access=0; |
341 if(hFile<0) | 343 if(hFile<0) |
342 { | 344 { |
343 anon=1; | 345 anon=1; |
355 if(flProtect & PAGE_READONLY) | 357 if(flProtect & PAGE_READONLY) |
356 mmap_access |=PROT_READ; | 358 mmap_access |=PROT_READ; |
357 else | 359 else |
358 mmap_access |=PROT_READ|PROT_WRITE; | 360 mmap_access |=PROT_READ|PROT_WRITE; |
359 | 361 |
360 answer=(HANDLE)mmap(NULL, len, mmap_access, MAP_PRIVATE, hFile, 0); | 362 answer=mmap(NULL, len, mmap_access, MAP_PRIVATE, hFile, 0); |
361 if(anon) | 363 if(anon) |
362 close(hFile); | 364 close(hFile); |
363 if(answer!=(HANDLE)-1) | 365 if(answer!=(LPVOID)-1) |
364 { | 366 { |
365 if(fm==0) | 367 if(fm==0) |
366 { | 368 { |
367 fm=malloc(sizeof(file_mapping)); | 369 fm=malloc(sizeof(file_mapping)); |
368 fm->prev=NULL; | 370 fm->prev=NULL; |
384 fm->name=NULL; | 386 fm->name=NULL; |
385 fm->mapping_size=len; | 387 fm->mapping_size=len; |
386 | 388 |
387 if(anon) | 389 if(anon) |
388 close(hFile); | 390 close(hFile); |
389 return answer; | 391 return (HANDLE)answer; |
390 } | 392 } |
391 return (HANDLE)0; | 393 return (HANDLE)0; |
392 } | 394 } |
393 WIN_BOOL WINAPI UnmapViewOfFile(LPVOID handle) | 395 WIN_BOOL WINAPI UnmapViewOfFile(LPVOID handle) |
394 { | 396 { |
395 file_mapping* p; | 397 file_mapping* p; |
396 int result; | 398 int result; |
397 if(fm==0) | 399 if(fm==0) |
398 return (HANDLE)0; | 400 return 0; |
399 for(p=fm; p; p=p->next) | 401 for(p=fm; p; p=p->next) |
400 { | 402 { |
401 if(p->handle==(HANDLE)handle) | 403 if(p->handle==handle) |
402 { | 404 { |
403 result=munmap((void*)handle, p->mapping_size); | 405 result=munmap((void*)handle, p->mapping_size); |
404 if(p->next)p->next->prev=p->prev; | 406 if(p->next)p->next->prev=p->prev; |
405 if(p->prev)p->prev->next=p->next; | 407 if(p->prev)p->prev->next=p->next; |
406 if(p->name) | 408 if(p->name) |
425 }virt_alloc; | 427 }virt_alloc; |
426 static virt_alloc* vm=0; | 428 static virt_alloc* vm=0; |
427 #define MEM_COMMIT 0x00001000 | 429 #define MEM_COMMIT 0x00001000 |
428 #define MEM_RESERVE 0x00002000 | 430 #define MEM_RESERVE 0x00002000 |
429 | 431 |
430 void* WINAPI VirtualAlloc(void* address, DWORD size, DWORD type, DWORD protection) | 432 LPVOID WINAPI VirtualAlloc(LPVOID address, DWORD size, DWORD type, DWORD protection) |
431 { | 433 { |
432 void* answer; | 434 void* answer; |
433 int fd=open("/dev/zero", O_RDWR); | 435 int fd=open("/dev/zero", O_RDWR); |
434 size=(size+0xffff)&(~0xffff); | 436 size=(size+0xffff)&(~0xffff); |
435 // printf("VirtualAlloc(0x%08X, %d)\n", address | 437 // printf("VirtualAlloc(0x%08X, %d)\n", address |
472 // PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE); | 474 // PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE); |
473 close(fd); | 475 close(fd); |
474 if(answer==(void*)-1) | 476 if(answer==(void*)-1) |
475 { | 477 { |
476 printf("Error no %d\n", errno); | 478 printf("Error no %d\n", errno); |
477 printf("VirtualAlloc(0x%08X, %d) failed\n", address, size); | 479 printf("VirtualAlloc(0x%p, %ld) failed\n", address, size); |
478 return NULL; | 480 return NULL; |
479 } | 481 } |
480 else | 482 else |
481 { | 483 { |
482 virt_alloc *new_vm=malloc(sizeof(virt_alloc)); | 484 virt_alloc *new_vm=malloc(sizeof(virt_alloc)); |
495 // printf("Multiple VirtualAlloc!\n"); | 497 // printf("Multiple VirtualAlloc!\n"); |
496 // printf("answer=0x%08x\n", answer); | 498 // printf("answer=0x%08x\n", answer); |
497 return answer; | 499 return answer; |
498 } | 500 } |
499 } | 501 } |
500 WIN_BOOL WINAPI VirtualFree(LPVOID address, DWORD t1, DWORD t2)//not sure | 502 WIN_BOOL WINAPI VirtualFree(LPVOID address, DWORD t1, DWORD t2)//not sure |
501 { | 503 { |
502 virt_alloc* str=vm; | 504 virt_alloc* str=vm; |
503 int answer; | 505 int answer; |
504 while(str) | 506 while(str) |
505 { | 507 { |
516 return 0; | 518 return 0; |
517 } | 519 } |
518 return -1; | 520 return -1; |
519 } | 521 } |
520 | 522 |
521 INT WINAPI WideCharToMultiByte(UINT codepage, DWORD flags, | 523 INT WINAPI WideCharToMultiByte(UINT codepage, DWORD flags, LPCWSTR src, |
522 LPCWSTR src, INT srclen, | 524 INT srclen,LPSTR dest, INT destlen, LPCSTR defch, WIN_BOOL* used_defch) |
523 LPSTR dest, INT destlen, | |
524 LPCSTR defch, WIN_BOOL*used_defch) | |
525 { | 525 { |
526 int i; | 526 int i; |
527 if(src==0) | 527 if(src==0) |
528 return 0; | 528 return 0; |
529 if ((srclen==-1)&&(dest==0)) return 0; | |
529 if(srclen==-1){srclen=0; while(src[srclen++]);} | 530 if(srclen==-1){srclen=0; while(src[srclen++]);} |
530 // for(i=0; i<srclen; i++) | 531 // for(i=0; i<srclen; i++) |
531 // printf("%c", src[i]); | 532 // printf("%c", src[i]); |
532 // printf("\n"); | 533 // printf("\n"); |
533 if(dest==0) | 534 if(dest==0) |
550 if(*src==0) | 551 if(*src==0) |
551 return i+1; | 552 return i+1; |
552 } | 553 } |
553 return min(srclen, destlen); | 554 return min(srclen, destlen); |
554 } | 555 } |
555 INT WINAPI MultiByteToWideChar(UINT codepage, DWORD flags, | 556 INT WINAPI MultiByteToWideChar(UINT codepage,DWORD flags, LPCSTR src, INT srclen, |
556 LPCSTR src, INT srclen, | 557 LPWSTR dest, INT destlen) |
557 LPWSTR dest, INT destlen) | |
558 { | 558 { |
559 return 0; | 559 return 0; |
560 } | 560 } |
561 HANDLE WINAPI OpenFileMappingA(DWORD access, WIN_BOOL prot, LPCSTR name) | 561 HANDLE WINAPI OpenFileMappingA(DWORD access, WIN_BOOL prot, LPCSTR name) |
562 { | 562 { |
568 for(p=fm; p; p=p->prev) | 568 for(p=fm; p; p=p->prev) |
569 { | 569 { |
570 if(p->name==0) | 570 if(p->name==0) |
571 continue; | 571 continue; |
572 if(strcmp(p->name, name)==0) | 572 if(strcmp(p->name, name)==0) |
573 return p->handle; | 573 return (HANDLE)p->handle; |
574 } | 574 } |
575 return 0; | 575 return 0; |
576 } | 576 } |