symbian-qemu-0.9.1-12/libsdl-trunk/test/testloadso.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 
       
    10 typedef int (*fntype)(const char *);
       
    11 
       
    12 int 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