author | Philipp Wiesemann <philipp.wiesemann@arcor.de> |
Sun, 02 Jun 2013 14:13:21 +0200 | |
changeset 7262 | 3c5f6170df8e |
parent 7191 | 75360622e65f |
child 7719 | 31b5f9ff36ca |
child 8477 | ad08f0d710f3 |
permissions | -rw-r--r-- |
0 | 1 |
/* |
5535
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
2 |
Simple DirectMedia Layer |
6885 | 3 |
Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org> |
0 | 4 |
|
5535
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
5 |
This software is provided 'as-is', without any express or implied |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
6 |
warranty. In no event will the authors be held liable for any damages |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
7 |
arising from the use of this software. |
0 | 8 |
|
5535
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
9 |
Permission is granted to anyone to use this software for any purpose, |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
10 |
including commercial applications, and to alter it and redistribute it |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
11 |
freely, subject to the following restrictions: |
0 | 12 |
|
5535
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
13 |
1. The origin of this software must not be misrepresented; you must not |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
14 |
claim that you wrote the original software. If you use this software |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
15 |
in a product, an acknowledgment in the product documentation would be |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
16 |
appreciated but is not required. |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
17 |
2. Altered source versions must be plainly marked as such, and must not be |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
18 |
misrepresented as being the original software. |
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
19 |
3. This notice may not be removed or altered from any source distribution. |
0 | 20 |
*/ |
6643
673aed697ce6
Fixed compiling fseek64o on Linux systems
Sam Lantinga <slouken@libsdl.org>
parents:
6642
diff
changeset
|
21 |
/* Need this so Linux systems define fseek64o, ftell64o and off64_t */ |
673aed697ce6
Fixed compiling fseek64o on Linux systems
Sam Lantinga <slouken@libsdl.org>
parents:
6642
diff
changeset
|
22 |
#define _LARGEFILE64_SOURCE |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
23 |
#include "SDL_config.h" |
0 | 24 |
|
25 |
/* This file provides a general interface for SDL to read and write |
|
26 |
data sources. It can easily be extended to files, memory, etc. |
|
27 |
*/ |
|
28 |
||
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
29 |
#include "SDL_endian.h" |
0 | 30 |
#include "SDL_rwops.h" |
1330
450721ad5436
It's now possible to build SDL without any C runtime at all on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
31 |
|
4447
947201caa46e
Added automated test to Xcode project plus needed changes to SDL_RWFromFile to be OS X bundle aware.
Eric Wing <ewing . public |-at-| gmail . com>
parents:
3697
diff
changeset
|
32 |
#ifdef __APPLE__ |
4454
be387681d876
Fixed Eric's changes to allow building from the command line.
Sam Lantinga <slouken@libsdl.org>
parents:
4447
diff
changeset
|
33 |
#include "cocoa/SDL_rwopsbundlesupport.h" |
4447
947201caa46e
Added automated test to Xcode project plus needed changes to SDL_RWFromFile to be OS X bundle aware.
Eric Wing <ewing . public |-at-| gmail . com>
parents:
3697
diff
changeset
|
34 |
#endif /* __APPLE__ */ |
947201caa46e
Added automated test to Xcode project plus needed changes to SDL_RWFromFile to be OS X bundle aware.
Eric Wing <ewing . public |-at-| gmail . com>
parents:
3697
diff
changeset
|
35 |
|
5582
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
36 |
#ifdef ANDROID |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
37 |
#include "../core/android/SDL_android.h" |
7262
3c5f6170df8e
Fixed implicit function declaration for SDL_AndroidGetInternalStoragePath().
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
7191
diff
changeset
|
38 |
#include "SDL_system.h" |
5582
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
39 |
#endif |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
40 |
|
5086
c2539ff054c8
Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents:
5062
diff
changeset
|
41 |
#ifdef __WIN32__ |
0 | 42 |
|
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
43 |
/* Functions to read/write Win32 API file pointers */ |
0 | 44 |
|
5090
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
45 |
#include "../core/windows/SDL_windows.h" |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
46 |
|
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
47 |
#ifndef INVALID_SET_FILE_POINTER |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
48 |
#define INVALID_SET_FILE_POINTER 0xFFFFFFFF |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
49 |
#endif |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
50 |
|
7191
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
7070
diff
changeset
|
51 |
#define READAHEAD_BUFFER_SIZE 1024 |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
52 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
53 |
static int SDLCALL |
5062 | 54 |
windows_file_open(SDL_RWops * context, const char *filename, const char *mode) |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
55 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
56 |
UINT old_error_mode; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
57 |
HANDLE h; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
58 |
DWORD r_right, w_right; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
59 |
DWORD must_exist, truncate; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
60 |
int a_mode; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
61 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
62 |
if (!context) |
2164
d083a2e4433d
Merged memory leak fix from SDL 1.2
Sam Lantinga <slouken@libsdl.org>
parents:
2161
diff
changeset
|
63 |
return -1; /* failed (invalid call) */ |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
64 |
|
5062 | 65 |
context->hidden.windowsio.h = INVALID_HANDLE_VALUE; /* mark this as unusable */ |
66 |
context->hidden.windowsio.buffer.data = NULL; |
|
67 |
context->hidden.windowsio.buffer.size = 0; |
|
68 |
context->hidden.windowsio.buffer.left = 0; |
|
2165
c2ffcc627701
Merged r3201:3204 from branches/SDL-1.2: win32 rwops tweaks.
Ryan C. Gordon <icculus@icculus.org>
parents:
2164
diff
changeset
|
69 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
70 |
/* "r" = reading, file must exist */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
71 |
/* "w" = writing, truncate existing, file may not exist */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
72 |
/* "r+"= reading or writing, file must exist */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
73 |
/* "a" = writing, append file may not exist */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
74 |
/* "a+"= append + read, file may not exist */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
75 |
/* "w+" = read, write, truncate. file may not exist */ |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
76 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
77 |
must_exist = (SDL_strchr(mode, 'r') != NULL) ? OPEN_EXISTING : 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
78 |
truncate = (SDL_strchr(mode, 'w') != NULL) ? CREATE_ALWAYS : 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
79 |
r_right = (SDL_strchr(mode, '+') != NULL |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
80 |
|| must_exist) ? GENERIC_READ : 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
81 |
a_mode = (SDL_strchr(mode, 'a') != NULL) ? OPEN_ALWAYS : 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
82 |
w_right = (a_mode || SDL_strchr(mode, '+') |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
83 |
|| truncate) ? GENERIC_WRITE : 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
84 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
85 |
if (!r_right && !w_right) /* inconsistent mode */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
86 |
return -1; /* failed (invalid call) */ |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
87 |
|
5062 | 88 |
context->hidden.windowsio.buffer.data = |
2173 | 89 |
(char *) SDL_malloc(READAHEAD_BUFFER_SIZE); |
5062 | 90 |
if (!context->hidden.windowsio.buffer.data) { |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
91 |
return SDL_OutOfMemory(); |
2165
c2ffcc627701
Merged r3201:3204 from branches/SDL-1.2: win32 rwops tweaks.
Ryan C. Gordon <icculus@icculus.org>
parents:
2164
diff
changeset
|
92 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
93 |
/* Do not open a dialog box if failure */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
94 |
old_error_mode = |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
95 |
SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS); |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
96 |
|
5090
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
97 |
{ |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
98 |
LPTSTR tstr = WIN_UTF8ToString(filename); |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
99 |
h = CreateFile(tstr, (w_right | r_right), |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
100 |
(w_right) ? 0 : FILE_SHARE_READ, NULL, |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
101 |
(must_exist | truncate | a_mode), |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
102 |
FILE_ATTRIBUTE_NORMAL, NULL); |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
103 |
SDL_free(tstr); |
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
104 |
} |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
105 |
|
5090
327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
Sam Lantinga <slouken@libsdl.org>
parents:
5086
diff
changeset
|
106 |
/* restore old behavior */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
107 |
SetErrorMode(old_error_mode); |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
108 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
109 |
if (h == INVALID_HANDLE_VALUE) { |
5062 | 110 |
SDL_free(context->hidden.windowsio.buffer.data); |
111 |
context->hidden.windowsio.buffer.data = NULL; |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
112 |
SDL_SetError("Couldn't open %s", filename); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
113 |
return -2; /* failed (CreateFile) */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
114 |
} |
5062 | 115 |
context->hidden.windowsio.h = h; |
116 |
context->hidden.windowsio.append = a_mode ? SDL_TRUE : SDL_FALSE; |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
117 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
118 |
return 0; /* ok */ |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
119 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
120 |
|
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
121 |
static Sint64 SDLCALL |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
122 |
windows_file_size(SDL_RWops * context) |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
123 |
{ |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
124 |
LARGE_INTEGER size; |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
125 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
126 |
if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE) { |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
127 |
return SDL_SetError("windows_file_size: invalid context/file not opened"); |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
128 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
129 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
130 |
if (!GetFileSizeEx(context->hidden.windowsio.h, &size)) { |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
131 |
return WIN_SetError("windows_file_size"); |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
132 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
133 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
134 |
return size.QuadPart; |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
135 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
136 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
137 |
static Sint64 SDLCALL |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
138 |
windows_file_seek(SDL_RWops * context, Sint64 offset, int whence) |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
139 |
{ |
5062 | 140 |
DWORD windowswhence; |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
141 |
LARGE_INTEGER windowsoffset; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
142 |
|
5062 | 143 |
if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE) { |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
144 |
return SDL_SetError("windows_file_seek: invalid context/file not opened"); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
145 |
} |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
146 |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
147 |
/* FIXME: We may be able to satisfy the seek within buffered data */ |
5062 | 148 |
if (whence == RW_SEEK_CUR && context->hidden.windowsio.buffer.left) { |
149 |
offset -= (long)context->hidden.windowsio.buffer.left; |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
150 |
} |
5062 | 151 |
context->hidden.windowsio.buffer.left = 0; |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
152 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
153 |
switch (whence) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
154 |
case RW_SEEK_SET: |
5062 | 155 |
windowswhence = FILE_BEGIN; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
156 |
break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
157 |
case RW_SEEK_CUR: |
5062 | 158 |
windowswhence = FILE_CURRENT; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
159 |
break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
160 |
case RW_SEEK_END: |
5062 | 161 |
windowswhence = FILE_END; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
162 |
break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
163 |
default: |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
164 |
return SDL_SetError("windows_file_seek: Unknown value for 'whence'"); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
165 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
166 |
|
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
167 |
windowsoffset.QuadPart = offset; |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
168 |
if (!SetFilePointerEx(context->hidden.windowsio.h, windowsoffset, &windowsoffset, windowswhence)) { |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
169 |
return WIN_SetError("windows_file_seek"); |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
170 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
171 |
return windowsoffset.QuadPart; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
172 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
173 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
174 |
static size_t SDLCALL |
5062 | 175 |
windows_file_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
176 |
{ |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
177 |
size_t total_need; |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
178 |
size_t total_read = 0; |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
179 |
size_t read_ahead; |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
180 |
DWORD byte_read; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
181 |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
182 |
total_need = size * maxnum; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
183 |
|
5062 | 184 |
if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
185 |
|| !total_need) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
186 |
return 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
187 |
|
5062 | 188 |
if (context->hidden.windowsio.buffer.left > 0) { |
189 |
void *data = (char *) context->hidden.windowsio.buffer.data + |
|
190 |
context->hidden.windowsio.buffer.size - |
|
191 |
context->hidden.windowsio.buffer.left; |
|
2185
2032348afed1
This code adds support for DirectColor visuals to SDL 1.3. The support uses part of the Xmu library. To ensure that the library is
Bob Pendleton <bob@pendleton.com>
parents:
2179
diff
changeset
|
192 |
read_ahead = |
5062 | 193 |
SDL_min(total_need, context->hidden.windowsio.buffer.left); |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
194 |
SDL_memcpy(ptr, data, read_ahead); |
5062 | 195 |
context->hidden.windowsio.buffer.left -= read_ahead; |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
196 |
|
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
197 |
if (read_ahead == total_need) { |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
198 |
return maxnum; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
199 |
} |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
200 |
ptr = (char *) ptr + read_ahead; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
201 |
total_need -= read_ahead; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
202 |
total_read += read_ahead; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
203 |
} |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
204 |
|
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
205 |
if (total_need < READAHEAD_BUFFER_SIZE) { |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
206 |
if (!ReadFile |
5062 | 207 |
(context->hidden.windowsio.h, context->hidden.windowsio.buffer.data, |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
208 |
READAHEAD_BUFFER_SIZE, &byte_read, NULL)) { |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
209 |
SDL_Error(SDL_EFREAD); |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
210 |
return 0; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
211 |
} |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
212 |
read_ahead = SDL_min(total_need, (int) byte_read); |
5062 | 213 |
SDL_memcpy(ptr, context->hidden.windowsio.buffer.data, read_ahead); |
214 |
context->hidden.windowsio.buffer.size = byte_read; |
|
215 |
context->hidden.windowsio.buffer.left = byte_read - read_ahead; |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
216 |
total_read += read_ahead; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
217 |
} else { |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
218 |
if (!ReadFile |
5062 | 219 |
(context->hidden.windowsio.h, ptr, (DWORD)total_need, &byte_read, NULL)) { |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
220 |
SDL_Error(SDL_EFREAD); |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
221 |
return 0; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
222 |
} |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
223 |
total_read += byte_read; |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
224 |
} |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
225 |
return (total_read / size); |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
226 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
227 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
228 |
static size_t SDLCALL |
5062 | 229 |
windows_file_write(SDL_RWops * context, const void *ptr, size_t size, |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
230 |
size_t num) |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
231 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
232 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
233 |
size_t total_bytes; |
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
234 |
DWORD byte_written; |
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
235 |
size_t nwritten; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
236 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
237 |
total_bytes = size * num; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
238 |
|
5062 | 239 |
if (!context || context->hidden.windowsio.h == INVALID_HANDLE_VALUE |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
240 |
|| total_bytes <= 0 || !size) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
241 |
return 0; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
242 |
|
5062 | 243 |
if (context->hidden.windowsio.buffer.left) { |
244 |
SetFilePointer(context->hidden.windowsio.h, |
|
245 |
-(LONG)context->hidden.windowsio.buffer.left, NULL, |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
246 |
FILE_CURRENT); |
5062 | 247 |
context->hidden.windowsio.buffer.left = 0; |
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
248 |
} |
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
249 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
250 |
/* if in append mode, we must go to the EOF before write */ |
5062 | 251 |
if (context->hidden.windowsio.append) { |
252 |
if (SetFilePointer(context->hidden.windowsio.h, 0L, NULL, FILE_END) == |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
253 |
INVALID_SET_FILE_POINTER) { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
254 |
SDL_Error(SDL_EFWRITE); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
255 |
return 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
256 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
257 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
258 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
259 |
if (!WriteFile |
5062 | 260 |
(context->hidden.windowsio.h, ptr, (DWORD)total_bytes, &byte_written, NULL)) { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
261 |
SDL_Error(SDL_EFWRITE); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
262 |
return 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
263 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
264 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
265 |
nwritten = byte_written / size; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
266 |
return nwritten; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
267 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
268 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
269 |
static int SDLCALL |
5062 | 270 |
windows_file_close(SDL_RWops * context) |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
271 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
272 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
273 |
if (context) { |
5062 | 274 |
if (context->hidden.windowsio.h != INVALID_HANDLE_VALUE) { |
275 |
CloseHandle(context->hidden.windowsio.h); |
|
276 |
context->hidden.windowsio.h = INVALID_HANDLE_VALUE; /* to be sure */ |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
277 |
} |
5062 | 278 |
if (context->hidden.windowsio.buffer.data) { |
279 |
SDL_free(context->hidden.windowsio.buffer.data); |
|
280 |
context->hidden.windowsio.buffer.data = NULL; |
|
2159
dd4753e47ed4
Merged read-ahead support for Win32 file I/O from SDL 1.2 revision 3183
Sam Lantinga <slouken@libsdl.org>
parents:
1978
diff
changeset
|
281 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
282 |
SDL_FreeRW(context); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
283 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
284 |
return (0); |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
285 |
} |
5086
c2539ff054c8
Fixed compiling on Windows Mobile SDK 5.0 with Visual Studio 2008
Sam Lantinga <slouken@libsdl.org>
parents:
5062
diff
changeset
|
286 |
#endif /* __WIN32__ */ |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
287 |
|
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
288 |
#ifdef HAVE_STDIO_H |
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
289 |
|
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
290 |
/* Functions to read/write stdio file pointers */ |
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
291 |
|
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
292 |
static Sint64 SDLCALL |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
293 |
stdio_size(SDL_RWops * context) |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
294 |
{ |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
295 |
Sint64 pos, size; |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
296 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
297 |
pos = SDL_RWseek(context, 0, RW_SEEK_CUR); |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
298 |
if (pos < 0) { |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
299 |
return -1; |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
300 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
301 |
size = SDL_RWseek(context, 0, RW_SEEK_END); |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
302 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
303 |
SDL_RWseek(context, pos, RW_SEEK_SET); |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
304 |
return size; |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
305 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
306 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
307 |
static Sint64 SDLCALL |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
308 |
stdio_seek(SDL_RWops * context, Sint64 offset, int whence) |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
309 |
{ |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
310 |
#ifdef HAVE_FSEEKO64 |
6644 | 311 |
if (fseeko64(context->hidden.stdio.fp, (off64_t)offset, whence) == 0) { |
312 |
return ftello64(context->hidden.stdio.fp); |
|
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
313 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
314 |
#elif defined(HAVE_FSEEKO) |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
315 |
if (fseeko(context->hidden.stdio.fp, (off_t)offset, whence) == 0) { |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
316 |
return ftello(context->hidden.stdio.fp); |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
317 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
318 |
#else |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
319 |
if (fseek(context->hidden.stdio.fp, offset, whence) == 0) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
320 |
return (ftell(context->hidden.stdio.fp)); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
321 |
} |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
322 |
#endif |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
323 |
return SDL_Error(SDL_EFSEEK); |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
324 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
325 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
326 |
static size_t SDLCALL |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
327 |
stdio_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
328 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
329 |
size_t nread; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
330 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
331 |
nread = fread(ptr, size, maxnum, context->hidden.stdio.fp); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
332 |
if (nread == 0 && ferror(context->hidden.stdio.fp)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
333 |
SDL_Error(SDL_EFREAD); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
334 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
335 |
return (nread); |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
336 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
337 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
338 |
static size_t SDLCALL |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
339 |
stdio_write(SDL_RWops * context, const void *ptr, size_t size, size_t num) |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
340 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
341 |
size_t nwrote; |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
342 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
343 |
nwrote = fwrite(ptr, size, num, context->hidden.stdio.fp); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
344 |
if (nwrote == 0 && ferror(context->hidden.stdio.fp)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
345 |
SDL_Error(SDL_EFWRITE); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
346 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
347 |
return (nwrote); |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
348 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
349 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
350 |
static int SDLCALL |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
351 |
stdio_close(SDL_RWops * context) |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
352 |
{ |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
353 |
int status = 0; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
354 |
if (context) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
355 |
if (context->hidden.stdio.autoclose) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
356 |
/* WARNING: Check the return value here! */ |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
357 |
if (fclose(context->hidden.stdio.fp) != 0) { |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
358 |
status = SDL_Error(SDL_EFWRITE); |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
359 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
360 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
361 |
SDL_FreeRW(context); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
362 |
} |
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
363 |
return status; |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
364 |
} |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
365 |
#endif /* !HAVE_STDIO_H */ |
1330
450721ad5436
It's now possible to build SDL without any C runtime at all on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
366 |
|
0 | 367 |
/* Functions to read/write memory pointers */ |
368 |
||
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
369 |
static Sint64 SDLCALL |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
370 |
mem_size(SDL_RWops * context) |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
371 |
{ |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
372 |
return (Sint64)(context->hidden.mem.stop - context->hidden.mem.base); |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
373 |
} |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
374 |
|
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
375 |
static Sint64 SDLCALL |
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
376 |
mem_seek(SDL_RWops * context, Sint64 offset, int whence) |
0 | 377 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
378 |
Uint8 *newpos; |
0 | 379 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
380 |
switch (whence) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
381 |
case RW_SEEK_SET: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
382 |
newpos = context->hidden.mem.base + offset; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
383 |
break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
384 |
case RW_SEEK_CUR: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
385 |
newpos = context->hidden.mem.here + offset; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
386 |
break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
387 |
case RW_SEEK_END: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
388 |
newpos = context->hidden.mem.stop + offset; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
389 |
break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
390 |
default: |
7037
3fedf1f25b94
Make SDL_SetError and friends unconditionally return -1.
Ryan C. Gordon <icculus@icculus.org>
parents:
7011
diff
changeset
|
391 |
return SDL_SetError("Unknown value for 'whence'"); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
392 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
393 |
if (newpos < context->hidden.mem.base) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
394 |
newpos = context->hidden.mem.base; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
395 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
396 |
if (newpos > context->hidden.mem.stop) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
397 |
newpos = context->hidden.mem.stop; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
398 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
399 |
context->hidden.mem.here = newpos; |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
400 |
return (Sint64)(context->hidden.mem.here - context->hidden.mem.base); |
0 | 401 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
402 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
403 |
static size_t SDLCALL |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
404 |
mem_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) |
0 | 405 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
406 |
size_t total_bytes; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
407 |
size_t mem_available; |
1078
e2ef6b7001fd
Patch from Antonio SJ Musumeci:
Ryan C. Gordon <icculus@icculus.org>
parents:
769
diff
changeset
|
408 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
409 |
total_bytes = (maxnum * size); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
410 |
if ((maxnum <= 0) || (size <= 0) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
411 |
|| ((total_bytes / maxnum) != (size_t) size)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
412 |
return 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
413 |
} |
0 | 414 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
415 |
mem_available = (context->hidden.mem.stop - context->hidden.mem.here); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
416 |
if (total_bytes > mem_available) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
417 |
total_bytes = mem_available; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
418 |
} |
1078
e2ef6b7001fd
Patch from Antonio SJ Musumeci:
Ryan C. Gordon <icculus@icculus.org>
parents:
769
diff
changeset
|
419 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
420 |
SDL_memcpy(ptr, context->hidden.mem.here, total_bytes); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
421 |
context->hidden.mem.here += total_bytes; |
1078
e2ef6b7001fd
Patch from Antonio SJ Musumeci:
Ryan C. Gordon <icculus@icculus.org>
parents:
769
diff
changeset
|
422 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
423 |
return (total_bytes / size); |
0 | 424 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
425 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
426 |
static size_t SDLCALL |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
427 |
mem_write(SDL_RWops * context, const void *ptr, size_t size, size_t num) |
0 | 428 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
429 |
if ((context->hidden.mem.here + (num * size)) > context->hidden.mem.stop) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
430 |
num = (context->hidden.mem.stop - context->hidden.mem.here) / size; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
431 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
432 |
SDL_memcpy(context->hidden.mem.here, ptr, num * size); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
433 |
context->hidden.mem.here += num * size; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
434 |
return (num); |
0 | 435 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
436 |
|
2160
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
437 |
static size_t SDLCALL |
00adbaed3910
Updated to use size_t instead of int for amounts of data.
Sam Lantinga <slouken@libsdl.org>
parents:
2159
diff
changeset
|
438 |
mem_writeconst(SDL_RWops * context, const void *ptr, size_t size, size_t num) |
764
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
543
diff
changeset
|
439 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
440 |
SDL_SetError("Can't write to read-only memory"); |
6996
bc0fd5bced25
Fix bug 1560 - SDL_RWFromConstMem write operation returns -1 but should return 0.
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6885
diff
changeset
|
441 |
return (0); |
764
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
543
diff
changeset
|
442 |
} |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2185
diff
changeset
|
443 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
444 |
static int SDLCALL |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
445 |
mem_close(SDL_RWops * context) |
0 | 446 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
447 |
if (context) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
448 |
SDL_FreeRW(context); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
449 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
450 |
return (0); |
0 | 451 |
} |
452 |
||
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
453 |
|
0 | 454 |
/* Functions to create SDL_RWops structures from various data sources */ |
455 |
||
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
456 |
SDL_RWops * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
457 |
SDL_RWFromFile(const char *file, const char *mode) |
0 | 458 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
459 |
SDL_RWops *rwops = NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
460 |
if (!file || !*file || !mode || !*mode) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
461 |
SDL_SetError("SDL_RWFromFile(): No file or no mode specified"); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
462 |
return NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
463 |
} |
5582
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
464 |
#if defined(ANDROID) |
6629
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
465 |
#ifdef HAVE_STDIO_H |
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
466 |
/* Try to open the file on the filesystem first */ |
6633
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
467 |
if (*file == '/') { |
6629
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
468 |
FILE *fp = fopen(file, mode); |
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
469 |
if (fp) { |
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
470 |
return SDL_RWFromFP(fp, 1); |
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
471 |
} |
6633
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
472 |
} else { |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
473 |
/* Try opening it from internal storage if it's a relative path */ |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
474 |
char *path; |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
475 |
FILE *fp; |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
476 |
|
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
477 |
path = SDL_stack_alloc(char, PATH_MAX); |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
478 |
if (path) { |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
479 |
SDL_snprintf(path, PATH_MAX, "%s/%s", |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
480 |
SDL_AndroidGetInternalStoragePath(), file); |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
481 |
fp = fopen(path, mode); |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
482 |
SDL_stack_free(path); |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
483 |
if (fp) { |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
484 |
return SDL_RWFromFP(fp, 1); |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
485 |
} |
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
486 |
} |
6629
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
487 |
} |
6633
e36b94438fcf
Try opening relative path files from internal storage.
Sam Lantinga <slouken@libsdl.org>
parents:
6629
diff
changeset
|
488 |
#endif /* HAVE_STDIO_H */ |
6629
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
489 |
|
8e2c731103e6
Try opening the file path directly before hitting the asset system.
Sam Lantinga <slouken@libsdl.org>
parents:
6430
diff
changeset
|
490 |
/* Try to open the file from the asset system */ |
5582
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
491 |
rwops = SDL_AllocRW(); |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
492 |
if (!rwops) |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
493 |
return NULL; /* SDL_SetError already setup by SDL_AllocRW() */ |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
494 |
if (Android_JNI_FileOpen(rwops, file, mode) < 0) { |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
495 |
SDL_FreeRW(rwops); |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
496 |
return NULL; |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
497 |
} |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
498 |
rwops->size = Android_JNI_FileSize; |
5582
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
499 |
rwops->seek = Android_JNI_FileSeek; |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
500 |
rwops->read = Android_JNI_FileRead; |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
501 |
rwops->write = Android_JNI_FileWrite; |
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
502 |
rwops->close = Android_JNI_FileClose; |
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
503 |
rwops->type = SDL_RWOPS_JNIFILE; |
5582
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
504 |
|
1281a3f1f0a6
Allow Android platforms to read from .apk files via the RWOPS interface.
Ryan C. Gordon <icculus@icculus.org>
parents:
5535
diff
changeset
|
505 |
#elif defined(__WIN32__) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
506 |
rwops = SDL_AllocRW(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
507 |
if (!rwops) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
508 |
return NULL; /* SDL_SetError already setup by SDL_AllocRW() */ |
5062 | 509 |
if (windows_file_open(rwops, file, mode) < 0) { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
510 |
SDL_FreeRW(rwops); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
511 |
return NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
512 |
} |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
513 |
rwops->size = windows_file_size; |
5062 | 514 |
rwops->seek = windows_file_seek; |
515 |
rwops->read = windows_file_read; |
|
516 |
rwops->write = windows_file_write; |
|
517 |
rwops->close = windows_file_close; |
|
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
518 |
rwops->type = SDL_RWOPS_WINFILE; |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
519 |
|
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
520 |
#elif HAVE_STDIO_H |
6375
93f9a24d1c02
Fixed some minor compiler warnings.
Ryan C. Gordon <icculus@icculus.org>
parents:
6138
diff
changeset
|
521 |
{ |
7191
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
7070
diff
changeset
|
522 |
#ifdef __APPLE__ |
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
7070
diff
changeset
|
523 |
FILE *fp = SDL_OpenFPFromBundleOrFallback(file, mode); |
6375
93f9a24d1c02
Fixed some minor compiler warnings.
Ryan C. Gordon <icculus@icculus.org>
parents:
6138
diff
changeset
|
524 |
#else |
7191
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
7070
diff
changeset
|
525 |
FILE *fp = fopen(file, mode); |
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
7070
diff
changeset
|
526 |
#endif |
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
7070
diff
changeset
|
527 |
if (fp == NULL) { |
6375
93f9a24d1c02
Fixed some minor compiler warnings.
Ryan C. Gordon <icculus@icculus.org>
parents:
6138
diff
changeset
|
528 |
SDL_SetError("Couldn't open %s", file); |
93f9a24d1c02
Fixed some minor compiler warnings.
Ryan C. Gordon <icculus@icculus.org>
parents:
6138
diff
changeset
|
529 |
} else { |
93f9a24d1c02
Fixed some minor compiler warnings.
Ryan C. Gordon <icculus@icculus.org>
parents:
6138
diff
changeset
|
530 |
rwops = SDL_RWFromFP(fp, 1); |
93f9a24d1c02
Fixed some minor compiler warnings.
Ryan C. Gordon <icculus@icculus.org>
parents:
6138
diff
changeset
|
531 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
532 |
} |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
533 |
#else |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
534 |
SDL_SetError("SDL not compiled with stdio support"); |
1446
47bf1767c4ca
Date: Mon, 27 Feb 2006 02:17:29 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
535 |
#endif /* !HAVE_STDIO_H */ |
1447
515df0086eb7
Prefer the raw Win32 API over stdio for file RWops
Sam Lantinga <slouken@libsdl.org>
parents:
1446
diff
changeset
|
536 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
537 |
return (rwops); |
0 | 538 |
} |
539 |
||
1330
450721ad5436
It's now possible to build SDL without any C runtime at all on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
540 |
#ifdef HAVE_STDIO_H |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
541 |
SDL_RWops * |
2161
e635db5b45ef
Oh yeah, they're boolean values...
Sam Lantinga <slouken@libsdl.org>
parents:
2160
diff
changeset
|
542 |
SDL_RWFromFP(FILE * fp, SDL_bool autoclose) |
0 | 543 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
544 |
SDL_RWops *rwops = NULL; |
0 | 545 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
546 |
rwops = SDL_AllocRW(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
547 |
if (rwops != NULL) { |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
548 |
rwops->size = stdio_size; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
549 |
rwops->seek = stdio_seek; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
550 |
rwops->read = stdio_read; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
551 |
rwops->write = stdio_write; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
552 |
rwops->close = stdio_close; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
553 |
rwops->hidden.stdio.fp = fp; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
554 |
rwops->hidden.stdio.autoclose = autoclose; |
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
555 |
rwops->type = SDL_RWOPS_STDFILE; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
556 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
557 |
return (rwops); |
0 | 558 |
} |
3564
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
559 |
#else |
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
560 |
SDL_RWops * |
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
561 |
SDL_RWFromFP(void * fp, SDL_bool autoclose) |
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
562 |
{ |
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
563 |
SDL_SetError("SDL not compiled with stdio support"); |
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
564 |
return NULL; |
d264d99576c1
Add a dummy function if SDL doesn't have STDIO support
Sam Lantinga <slouken@libsdl.org>
parents:
3253
diff
changeset
|
565 |
} |
1330
450721ad5436
It's now possible to build SDL without any C runtime at all on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
566 |
#endif /* HAVE_STDIO_H */ |
0 | 567 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
568 |
SDL_RWops * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
569 |
SDL_RWFromMem(void *mem, int size) |
0 | 570 |
{ |
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
571 |
SDL_RWops *rwops = NULL; |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
572 |
if (!mem) { |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
573 |
SDL_InvalidParamError("mem"); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
574 |
return (rwops); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
575 |
} |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
576 |
if (!size) { |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
577 |
SDL_InvalidParamError("size"); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
578 |
return (rwops); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
579 |
} |
0 | 580 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
581 |
rwops = SDL_AllocRW(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
582 |
if (rwops != NULL) { |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
583 |
rwops->size = mem_size; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
584 |
rwops->seek = mem_seek; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
585 |
rwops->read = mem_read; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
586 |
rwops->write = mem_write; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
587 |
rwops->close = mem_close; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
588 |
rwops->hidden.mem.base = (Uint8 *) mem; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
589 |
rwops->hidden.mem.here = rwops->hidden.mem.base; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
590 |
rwops->hidden.mem.stop = rwops->hidden.mem.base + size; |
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
591 |
rwops->type = SDL_RWOPS_MEMORY; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
592 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
593 |
return (rwops); |
0 | 594 |
} |
595 |
||
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
596 |
SDL_RWops * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
597 |
SDL_RWFromConstMem(const void *mem, int size) |
764
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
543
diff
changeset
|
598 |
{ |
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
599 |
SDL_RWops *rwops = NULL; |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
600 |
if (!mem) { |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
601 |
SDL_InvalidParamError("mem"); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
602 |
return (rwops); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
603 |
} |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
604 |
if (!size) { |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
605 |
SDL_InvalidParamError("size"); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
606 |
return (rwops); |
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
607 |
} |
764
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
543
diff
changeset
|
608 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
609 |
rwops = SDL_AllocRW(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
610 |
if (rwops != NULL) { |
6642
b716011e53ce
Added an API to get the size of a file - WARNING! ABI CHANGE!
Sam Lantinga <slouken@libsdl.org>
parents:
6633
diff
changeset
|
611 |
rwops->size = mem_size; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
612 |
rwops->seek = mem_seek; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
613 |
rwops->read = mem_read; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
614 |
rwops->write = mem_writeconst; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
615 |
rwops->close = mem_close; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
616 |
rwops->hidden.mem.base = (Uint8 *) mem; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
617 |
rwops->hidden.mem.here = rwops->hidden.mem.base; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
618 |
rwops->hidden.mem.stop = rwops->hidden.mem.base + size; |
6999
681820ca0e78
Fix bug 122 - SDL_RWops bug fixes: set RWops.type field, add input validation, add test coverage
Andreas Schiffler <aschiffler@ferzkopp.net>
parents:
6996
diff
changeset
|
619 |
rwops->type = SDL_RWOPS_MEMORY_RO; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
620 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
621 |
return (rwops); |
764
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
543
diff
changeset
|
622 |
} |
974c0fb74bf8
Added function to create RWops from const memory: SDL_RWFromConstMem()
Sam Lantinga <slouken@libsdl.org>
parents:
543
diff
changeset
|
623 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
624 |
SDL_RWops * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
625 |
SDL_AllocRW(void) |
0 | 626 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
627 |
SDL_RWops *area; |
0 | 628 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
629 |
area = (SDL_RWops *) SDL_malloc(sizeof *area); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
630 |
if (area == NULL) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
631 |
SDL_OutOfMemory(); |
7070
65df21723f58
Fixed bug 1802 - NULL pointer dereference in SDL_AllocRW() if out of memory.
Sam Lantinga <slouken@libsdl.org>
parents:
7037
diff
changeset
|
632 |
} else { |
65df21723f58
Fixed bug 1802 - NULL pointer dereference in SDL_AllocRW() if out of memory.
Sam Lantinga <slouken@libsdl.org>
parents:
7037
diff
changeset
|
633 |
area->type = SDL_RWOPS_UNKNOWN; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
634 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
635 |
return (area); |
0 | 636 |
} |
637 |
||
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
638 |
void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
639 |
SDL_FreeRW(SDL_RWops * area) |
0 | 640 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
641 |
SDL_free(area); |
0 | 642 |
} |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
643 |
|
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
644 |
/* Functions for dynamically reading and writing endian-specific values */ |
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
645 |
|
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
646 |
Uint8 |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
647 |
SDL_ReadU8(SDL_RWops * src) |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
648 |
{ |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
649 |
Uint8 value = 0; |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
650 |
|
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
651 |
SDL_RWread(src, &value, (sizeof value), 1); |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
652 |
return value; |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
653 |
} |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
654 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
655 |
Uint16 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
656 |
SDL_ReadLE16(SDL_RWops * src) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
657 |
{ |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
658 |
Uint16 value = 0; |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
659 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
660 |
SDL_RWread(src, &value, (sizeof value), 1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
661 |
return (SDL_SwapLE16(value)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
662 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
663 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
664 |
Uint16 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
665 |
SDL_ReadBE16(SDL_RWops * src) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
666 |
{ |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
667 |
Uint16 value = 0; |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
668 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
669 |
SDL_RWread(src, &value, (sizeof value), 1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
670 |
return (SDL_SwapBE16(value)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
671 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
672 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
673 |
Uint32 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
674 |
SDL_ReadLE32(SDL_RWops * src) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
675 |
{ |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
676 |
Uint32 value = 0; |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
677 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
678 |
SDL_RWread(src, &value, (sizeof value), 1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
679 |
return (SDL_SwapLE32(value)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
680 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
681 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
682 |
Uint32 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
683 |
SDL_ReadBE32(SDL_RWops * src) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
684 |
{ |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
685 |
Uint32 value = 0; |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
686 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
687 |
SDL_RWread(src, &value, (sizeof value), 1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
688 |
return (SDL_SwapBE32(value)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
689 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
690 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
691 |
Uint64 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
692 |
SDL_ReadLE64(SDL_RWops * src) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
693 |
{ |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
694 |
Uint64 value = 0; |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
695 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
696 |
SDL_RWread(src, &value, (sizeof value), 1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
697 |
return (SDL_SwapLE64(value)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
698 |
} |
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
699 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
700 |
Uint64 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
701 |
SDL_ReadBE64(SDL_RWops * src) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
702 |
{ |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
703 |
Uint64 value = 0; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
704 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
705 |
SDL_RWread(src, &value, (sizeof value), 1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
706 |
return (SDL_SwapBE64(value)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
707 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
708 |
|
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
709 |
size_t |
6655
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
710 |
SDL_WriteU8(SDL_RWops * dst, Uint8 value) |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
711 |
{ |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
712 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
713 |
} |
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
714 |
|
6a3e741ea70d
Added SDL_ReadU8() and SDL_WriteU8() for consistency with the rest of the API.
Sam Lantinga <slouken@libsdl.org>
parents:
6644
diff
changeset
|
715 |
size_t |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
716 |
SDL_WriteLE16(SDL_RWops * dst, Uint16 value) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
717 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
718 |
value = SDL_SwapLE16(value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
719 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
720 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
721 |
|
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
722 |
size_t |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
723 |
SDL_WriteBE16(SDL_RWops * dst, Uint16 value) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
724 |
{ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
725 |
value = SDL_SwapBE16(value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
726 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
727 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
728 |
|
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
729 |
size_t |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
730 |
SDL_WriteLE32(SDL_RWops * dst, Uint32 value) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
731 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
732 |
value = SDL_SwapLE32(value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
733 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
734 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
735 |
|
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
736 |
size_t |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
737 |
SDL_WriteBE32(SDL_RWops * dst, Uint32 value) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
738 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
739 |
value = SDL_SwapBE32(value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
740 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
741 |
} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
742 |
|
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
743 |
size_t |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
744 |
SDL_WriteLE64(SDL_RWops * dst, Uint64 value) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
745 |
{ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
746 |
value = SDL_SwapLE64(value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
747 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
748 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
749 |
|
3253
5d7ef5970073
Fixed issues building 64-bit Windows binary
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
750 |
size_t |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
751 |
SDL_WriteBE64(SDL_RWops * dst, Uint64 value) |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
752 |
{ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
753 |
value = SDL_SwapBE64(value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
754 |
return (SDL_RWwrite(dst, &value, (sizeof value), 1)); |
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
755 |
} |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
756 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1769
diff
changeset
|
757 |
/* vi: set ts=4 sw=4 expandtab: */ |