Initial standalone code, some stuff runs
[sdl_omap.git] / test / testloadso.c
CommitLineData
e14743d1 1
2/* Test program to test dynamic loading with the loadso subsystem.
3*/
4
5#include <stdio.h>
6#include <stdlib.h>
7
8#include "SDL.h"
9
10typedef int (*fntype)(const char *);
11
12int main(int argc, char *argv[])
13{
14 int retval = 0;
15 int hello = 0;
16 const char *libname = NULL;
17 const char *symname = NULL;
18 void *lib = NULL;
19 fntype fn = NULL;
20
21 if (argc != 3) {
22 const char *app = argv[0];
23 fprintf(stderr, "USAGE: %s <library> <functionname>\n", app);
24 fprintf(stderr, " %s --hello <lib with puts()>\n", app);
25 return 1;
26 }
27
28 /* Initialize SDL */
29 if ( SDL_Init(0) < 0 ) {
30 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
31 return 2;
32 }
33
34 if (strcmp(argv[1], "--hello") == 0) {
35 hello = 1;
36 libname = argv[2];
37 symname = "puts";
38 } else {
39 libname = argv[1];
40 symname = argv[2];
41 }
42
43 lib = SDL_LoadObject(libname);
44 if (lib == NULL) {
45 fprintf(stderr, "SDL_LoadObject('%s') failed: %s\n",
46 libname, SDL_GetError());
47 retval = 3;
48 } else {
49 fn = (fntype) SDL_LoadFunction(lib, symname);
50 if (fn == NULL) {
51 fprintf(stderr, "SDL_LoadFunction('%s') failed: %s\n",
52 symname, SDL_GetError());
53 retval = 4;
54 } else {
55 printf("Found %s in %s at %p\n", symname, libname, fn);
56 if (hello) {
57 printf("Calling function...\n");
58 fflush(stdout);
59 fn(" HELLO, WORLD!\n");
60 printf("...apparently, we survived. :)\n");
61 printf("Unloading library...\n");
62 fflush(stdout);
63 }
64 }
65 SDL_UnloadObject(lib);
66 }
67 SDL_Quit();
68 return(0);
69}
70
71