Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
76 lines (60 loc) · 2.15 KB

SDL_sysloadso.c

File metadata and controls

76 lines (60 loc) · 2.15 KB
 
Nov 23, 2005
Nov 23, 2005
1
2
/*
SDL - Simple DirectMedia Layer
Feb 1, 2006
Feb 1, 2006
3
Copyright (C) 1997-2006 Sam Lantinga
Nov 23, 2005
Nov 23, 2005
4
5
This library is free software; you can redistribute it and/or
Feb 1, 2006
Feb 1, 2006
6
modify it under the terms of the GNU Lesser General Public
Nov 23, 2005
Nov 23, 2005
7
License as published by the Free Software Foundation; either
Feb 1, 2006
Feb 1, 2006
8
version 2.1 of the License, or (at your option) any later version.
Nov 23, 2005
Nov 23, 2005
9
10
11
12
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Feb 1, 2006
Feb 1, 2006
13
Lesser General Public License for more details.
Nov 23, 2005
Nov 23, 2005
14
Feb 1, 2006
Feb 1, 2006
15
16
17
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Nov 23, 2005
Nov 23, 2005
18
19
20
21
Sam Lantinga
slouken@libsdl.org
*/
Feb 21, 2006
Feb 21, 2006
22
#include "SDL_config.h"
Nov 23, 2005
Nov 23, 2005
23
Apr 14, 2006
Apr 14, 2006
24
25
#ifdef SDL_LOADSO_OS2
Nov 23, 2005
Nov 23, 2005
26
27
28
29
30
31
32
33
34
35
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* System dependent library loading routines */
#include <stdio.h>
#define INCL_DOSERRORS
#define INCL_DOSMODULEMGR
#include <os2.h>
#include "SDL_loadso.h"
Jul 10, 2006
Jul 10, 2006
36
37
void *
SDL_LoadObject(const char *sofile)
Nov 23, 2005
Nov 23, 2005
38
39
40
{
HMODULE handle = NULL;
char buf[512];
Jul 10, 2006
Jul 10, 2006
41
APIRET ulrc = DosLoadModule(buf, sizeof(buf), (char *) sofile, &handle);
Nov 23, 2005
Nov 23, 2005
42
43
44
45
46
/* Generate an error message if all loads failed */
if ((ulrc != NO_ERROR) || (handle == NULL))
SDL_SetError("Failed loading %s: %s", sofile, buf);
Jul 10, 2006
Jul 10, 2006
47
return ((void *) handle);
Nov 23, 2005
Nov 23, 2005
48
49
}
Jul 10, 2006
Jul 10, 2006
50
51
void *
SDL_LoadFunction(void *handle, const char *name)
Nov 23, 2005
Nov 23, 2005
52
53
54
{
const char *loaderror = "Unknown error";
void *symbol = NULL;
Jul 10, 2006
Jul 10, 2006
55
56
APIRET ulrc =
DosQueryProcAddr((HMODULE) handle, 0, (char *) name, &symbol);
Nov 23, 2005
Nov 23, 2005
57
58
59
60
61
62
63
64
if (ulrc == ERROR_INVALID_HANDLE)
loaderror = "Invalid module handle";
else if (ulrc == ERROR_INVALID_NAME)
loaderror = "Symbol not found";
if (symbol == NULL)
SDL_SetError("Failed loading %s: %s", name, loaderror);
Jul 10, 2006
Jul 10, 2006
65
return (symbol);
Nov 23, 2005
Nov 23, 2005
66
67
}
Jul 10, 2006
Jul 10, 2006
68
69
void
SDL_UnloadObject(void *handle)
Nov 23, 2005
Nov 23, 2005
70
{
Jul 10, 2006
Jul 10, 2006
71
if (handle != NULL)
Nov 23, 2005
Nov 23, 2005
72
73
74
DosFreeModule((HMODULE) handle);
}
Apr 14, 2006
Apr 14, 2006
75
#endif /* SDL_LOADSO_OS2 */
Jul 10, 2006
Jul 10, 2006
76
/* vi: set ts=4 sw=4 expandtab: */