/* 
solar@here /var/cvsroot/gentoo-projects/portage-utils/mod $ gcc -o dl dl.c -ldl -Wl,--export-dynamic

+int readdir_main(int argc, char **argv) {        
+	/* pass argv[0] to the python interpreter, initialize it and fill argc, argv */
+	Py_SetProgramName(argv[0]);
+	Py_Initialize();        
+	PySys_SetArgv(argc, argv);
+	init_readdir();
+	return 0;
+}

*/

#include <dlfcn.h>
#include <stdio.h>

int verbose = 1;

int main(int argc, char **argv)
{
    typedef int (*APPLET) (int, char **);
    APPLET iptr;
    void *dlhandle = NULL;
    char *ptr;
    char *modpath;

    if (argc < 2)
	return 1;

    modpath = (char *) get_current_dir_name();
    asprintf(&ptr, "%s/lib%s.so", modpath, argv[1]);

    if ((dlhandle = dlopen(ptr, RTLD_LAZY)) == NULL) {
	fprintf(stderr, "unable to load %s : %s\n", ptr, dlerror());
	return 1;
    }
    free(ptr);
    asprintf(&ptr, "%s_main", argv[1]);
    iptr = (APPLET) dlsym(dlhandle, ptr);
    printf("Calling %s\n", ptr);

    free(ptr);
    free(modpath);

    return (iptr)(argc - 1, ++argv);
}
