Added a test program for loadso subsystem.
--HG-- branch : SDL-1.2 extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402222
This commit is contained in:
parent
23fc5d0035
commit
92643bac52
2 changed files with 74 additions and 1 deletions
|
@ -7,7 +7,7 @@ EXE = @EXE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
|
|
||||||
TARGETS = checkkeys$(EXE) graywin$(EXE) loopwave$(EXE) testalpha$(EXE) testbitmap$(EXE) testblitspeed$(EXE) testcdrom$(EXE) testcursor$(EXE) testdyngl$(EXE) testerror$(EXE) testfile$(EXE) testgamma$(EXE) testgl$(EXE) testhread$(EXE) testiconv$(EXE) testjoystick$(EXE) testkeys$(EXE) testlock$(EXE) testoverlay2$(EXE) testoverlay$(EXE) testpalette$(EXE) testplatform$(EXE) testsem$(EXE) testsprite$(EXE) testtimer$(EXE) testver$(EXE) testvidinfo$(EXE) testwin$(EXE) testwm$(EXE) threadwin$(EXE) torturethread$(EXE)
|
TARGETS = checkkeys$(EXE) graywin$(EXE) loopwave$(EXE) testalpha$(EXE) testbitmap$(EXE) testblitspeed$(EXE) testcdrom$(EXE) testcursor$(EXE) testdyngl$(EXE) testerror$(EXE) testfile$(EXE) testgamma$(EXE) testgl$(EXE) testhread$(EXE) testiconv$(EXE) testjoystick$(EXE) testkeys$(EXE) testlock$(EXE) testoverlay2$(EXE) testoverlay$(EXE) testpalette$(EXE) testplatform$(EXE) testsem$(EXE) testsprite$(EXE) testtimer$(EXE) testver$(EXE) testvidinfo$(EXE) testwin$(EXE) testwm$(EXE) threadwin$(EXE) torturethread$(EXE) testloadso$(EXE)
|
||||||
|
|
||||||
all: $(TARGETS)
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
@ -104,6 +104,9 @@ threadwin$(EXE): $(srcdir)/threadwin.c
|
||||||
torturethread$(EXE): $(srcdir)/torturethread.c
|
torturethread$(EXE): $(srcdir)/torturethread.c
|
||||||
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
testloadso$(EXE): $(srcdir)/testloadso.c
|
||||||
|
$(CC) -o $@ $? $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(TARGETS)
|
rm -f $(TARGETS)
|
||||||
|
|
70
test/testloadso.c
Normal file
70
test/testloadso.c
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
|
||||||
|
/* Test program to test dynamic loading with the loadso subsystem.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "SDL.h"
|
||||||
|
|
||||||
|
typedef int (*fntype)(const char *);
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int retval = 0;
|
||||||
|
int hello = 0;
|
||||||
|
const char *libname = NULL;
|
||||||
|
const char *symname = NULL;
|
||||||
|
void *lib = NULL;
|
||||||
|
fntype fn = NULL;
|
||||||
|
|
||||||
|
if (argc != 3) {
|
||||||
|
fprintf(stderr, "USAGE: %s <library> <functionname>\n");
|
||||||
|
fprintf(stderr, " %s --hello <library with puts()>\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize SDL */
|
||||||
|
if ( SDL_Init(0) < 0 ) {
|
||||||
|
fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(argv[1], "--hello") == 0) {
|
||||||
|
hello = 1;
|
||||||
|
libname = argv[2];
|
||||||
|
symname = "puts";
|
||||||
|
} else {
|
||||||
|
libname = argv[1];
|
||||||
|
symname = argv[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
lib = SDL_LoadObject(libname);
|
||||||
|
if (lib == NULL) {
|
||||||
|
fprintf(stderr, "SDL_LoadObject('%s') failed: %s\n",
|
||||||
|
libname, SDL_GetError());
|
||||||
|
retval = 3;
|
||||||
|
} else {
|
||||||
|
fn = (fntype) SDL_LoadFunction(lib, symname);
|
||||||
|
if (fn == NULL) {
|
||||||
|
fprintf(stderr, "SDL_LoadFunction('%s') failed: %s\n",
|
||||||
|
symname, SDL_GetError());
|
||||||
|
retval = 4;
|
||||||
|
} else {
|
||||||
|
printf("Found %s in %s at %p\n", symname, libname);
|
||||||
|
if (hello) {
|
||||||
|
printf("Calling function...\n");
|
||||||
|
fflush(stdout);
|
||||||
|
fn(" HELLO, WORLD!\n");
|
||||||
|
printf("...apparently, we survived. :)\n");
|
||||||
|
printf("Unloading library...\n");
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SDL_UnloadObject(lib);
|
||||||
|
}
|
||||||
|
SDL_Quit();
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue