📄 nextstep.c
字号:
/* $PostgreSQL: pgsql/src/backend/port/dynloader/nextstep.c,v 1.6 2006/03/11 04:38:31 momjian Exp $ */#include "postgres.h"#include "mach-o/rld.h"#include "streams/streams.h"static char *lastError = NULL;static NXStream *OpenError(){ return NXOpenMemory(NULL, 0, NX_WRITEONLY);}static voidCloseError(NXStream * s){ if (s) NXCloseMemory(s, NX_FREEBUFFER);}static voidTransferError(NXStream * s){ char *buffer; int len, maxlen; if (lastError) free(lastError); NXGetMemoryBuffer(s, &buffer, &len, &maxlen); lastError = malloc(len + 1); strcpy(lastError, buffer);}void *next_dlopen(char *name){ int rld_success; NXStream *errorStream; char *result = NULL; char **p; errorStream = OpenError(); p = calloc(2, sizeof(void *)); p[0] = name; rld_success = rld_load(errorStream, NULL, p, NULL); free(p); if (!rld_success) { TransferError(errorStream); result = (char *) 1; } CloseError(errorStream); return result;}intnext_dlclose(void *handle){ return 0;}void *next_dlsym(void *handle, char *symbol){ NXStream *errorStream = OpenError(); char symbuf[1024]; unsigned long symref = 0; snprintf(symbuf, sizeof(symbuf), "_%s", symbol); if (!rld_lookup(errorStream, symbuf, &symref)) TransferError(errorStream); CloseError(errorStream); return (void *) symref;}char *next_dlerror(void){ return lastError;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -