1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-03 15:22:11 +03:00
Files
postgres/src/backend/port/dynloader/darwin.c
2001-03-22 04:01:46 +00:00

56 lines
1.1 KiB
C

/*
* These routines were taken from the Apache source, but were made
* available with a PostgreSQL-compatible license. Kudos Wilfredo
* Sánchez <wsanchez@apple.com>.
*
* $Header: /cvsroot/pgsql/src/backend/port/dynloader/darwin.c,v 1.5 2001/03/22 03:59:42 momjian Exp $
*/
#include "postgres.h"
#include <mach-o/dyld.h>
#include "dynloader.h"
void *
pg_dlopen(char *filename)
{
NSObjectFileImage image;
if (NSCreateObjectFileImageFromFile(filename, &image) !=
NSObjectFileImageSuccess)
return NULL;
return NSLinkModule(image, filename, TRUE);
}
void
pg_dlclose(void *handle)
{
NSUnLinkModule(handle, FALSE);
return;
}
PGFunction
pg_dlsym(void *handle, char *funcname)
{
NSSymbol symbol;
char *symname = (char *) malloc(strlen(funcname) + 2);
sprintf(symname, "_%s", funcname);
if (NSIsSymbolNameDefined(symname))
{
symbol = NSLookupAndBindSymbol(symname);
free(symname);
return (PGFunction) NSAddressOfSymbol(symbol);
}
else
{
free(symname);
return (PGFunction) NULL;
}
}
char *
pg_dlerror(void)
{
return "no error message available";
}