aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Python/dynload_shlib.c
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:44:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:49 +0300
commit718c552901d703c502ccbefdfc3c9028d608b947 (patch)
tree46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/tools/python3/src/Python/dynload_shlib.c
parente9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff)
downloadydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/tools/python3/src/Python/dynload_shlib.c')
-rw-r--r--contrib/tools/python3/src/Python/dynload_shlib.c250
1 files changed, 125 insertions, 125 deletions
diff --git a/contrib/tools/python3/src/Python/dynload_shlib.c b/contrib/tools/python3/src/Python/dynload_shlib.c
index 23828898d3..dad5628629 100644
--- a/contrib/tools/python3/src/Python/dynload_shlib.c
+++ b/contrib/tools/python3/src/Python/dynload_shlib.c
@@ -1,133 +1,133 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "Python.h"
+
+/* Support for dynamic loading of extension modules */
+
+#include "Python.h"
#include "pycore_interp.h" // _PyInterpreterState.dlopenflags
#include "pycore_pystate.h" // _PyInterpreterState_GET()
-#include "importdl.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(__NetBSD__)
-#include <sys/param.h>
-#if (NetBSD < 199712)
-#include <nlist.h>
-#include <link.h>
-#define dlerror() "error in dynamic linking"
-#endif
-#endif /* NetBSD */
-
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__)
-#define LEAD_UNDERSCORE "_"
-#else
-#define LEAD_UNDERSCORE ""
-#endif
-
-/* The .so extension module ABI tag, supplied by the Makefile via
- Makefile.pre.in and configure. This is used to discriminate between
- incompatible .so files so that extensions for different Python builds can
- live in the same directory. E.g. foomodule.cpython-32.so
-*/
-
-const char *_PyImport_DynLoadFiletab[] = {
-#ifdef __CYGWIN__
- ".dll",
-#else /* !__CYGWIN__ */
- "." SOABI ".so",
+#include "importdl.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined(__NetBSD__)
+#include <sys/param.h>
+#if (NetBSD < 199712)
+#include <nlist.h>
+#include <link.h>
+#define dlerror() "error in dynamic linking"
+#endif
+#endif /* NetBSD */
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__)
+#define LEAD_UNDERSCORE "_"
+#else
+#define LEAD_UNDERSCORE ""
+#endif
+
+/* The .so extension module ABI tag, supplied by the Makefile via
+ Makefile.pre.in and configure. This is used to discriminate between
+ incompatible .so files so that extensions for different Python builds can
+ live in the same directory. E.g. foomodule.cpython-32.so
+*/
+
+const char *_PyImport_DynLoadFiletab[] = {
+#ifdef __CYGWIN__
+ ".dll",
+#else /* !__CYGWIN__ */
+ "." SOABI ".so",
#ifdef ALT_SOABI
"." ALT_SOABI ".so",
#endif
- ".abi" PYTHON_ABI_STRING ".so",
- ".so",
-#endif /* __CYGWIN__ */
- NULL,
-};
-
-static struct {
- dev_t dev;
- ino_t ino;
- void *handle;
-} handles[128];
-static int nhandles = 0;
-
-
-dl_funcptr
-_PyImport_FindSharedFuncptr(const char *prefix,
- const char *shortname,
- const char *pathname, FILE *fp)
-{
- dl_funcptr p;
- void *handle;
- char funcname[258];
- char pathbuf[260];
- int dlopenflags=0;
-
- if (strchr(pathname, '/') == NULL) {
- /* Prefix bare filename with "./" */
- PyOS_snprintf(pathbuf, sizeof(pathbuf), "./%-.255s", pathname);
- pathname = pathbuf;
- }
-
- PyOS_snprintf(funcname, sizeof(funcname),
- LEAD_UNDERSCORE "%.20s_%.200s", prefix, shortname);
-
- if (fp != NULL) {
- int i;
- struct _Py_stat_struct status;
- if (_Py_fstat(fileno(fp), &status) == -1)
- return NULL;
- for (i = 0; i < nhandles; i++) {
- if (status.st_dev == handles[i].dev &&
- status.st_ino == handles[i].ino) {
- p = (dl_funcptr) dlsym(handles[i].handle,
- funcname);
- return p;
- }
- }
- if (nhandles < 128) {
- handles[nhandles].dev = status.st_dev;
- handles[nhandles].ino = status.st_ino;
- }
- }
-
+ ".abi" PYTHON_ABI_STRING ".so",
+ ".so",
+#endif /* __CYGWIN__ */
+ NULL,
+};
+
+static struct {
+ dev_t dev;
+ ino_t ino;
+ void *handle;
+} handles[128];
+static int nhandles = 0;
+
+
+dl_funcptr
+_PyImport_FindSharedFuncptr(const char *prefix,
+ const char *shortname,
+ const char *pathname, FILE *fp)
+{
+ dl_funcptr p;
+ void *handle;
+ char funcname[258];
+ char pathbuf[260];
+ int dlopenflags=0;
+
+ if (strchr(pathname, '/') == NULL) {
+ /* Prefix bare filename with "./" */
+ PyOS_snprintf(pathbuf, sizeof(pathbuf), "./%-.255s", pathname);
+ pathname = pathbuf;
+ }
+
+ PyOS_snprintf(funcname, sizeof(funcname),
+ LEAD_UNDERSCORE "%.20s_%.200s", prefix, shortname);
+
+ if (fp != NULL) {
+ int i;
+ struct _Py_stat_struct status;
+ if (_Py_fstat(fileno(fp), &status) == -1)
+ return NULL;
+ for (i = 0; i < nhandles; i++) {
+ if (status.st_dev == handles[i].dev &&
+ status.st_ino == handles[i].ino) {
+ p = (dl_funcptr) dlsym(handles[i].handle,
+ funcname);
+ return p;
+ }
+ }
+ if (nhandles < 128) {
+ handles[nhandles].dev = status.st_dev;
+ handles[nhandles].ino = status.st_ino;
+ }
+ }
+
dlopenflags = _PyInterpreterState_GET()->dlopenflags;
-
- handle = dlopen(pathname, dlopenflags);
-
- if (handle == NULL) {
- PyObject *mod_name;
- PyObject *path;
- PyObject *error_ob;
- const char *error = dlerror();
- if (error == NULL)
- error = "unknown dlopen() error";
+
+ handle = dlopen(pathname, dlopenflags);
+
+ if (handle == NULL) {
+ PyObject *mod_name;
+ PyObject *path;
+ PyObject *error_ob;
+ const char *error = dlerror();
+ if (error == NULL)
+ error = "unknown dlopen() error";
error_ob = PyUnicode_DecodeLocale(error, "surrogateescape");
- if (error_ob == NULL)
- return NULL;
- mod_name = PyUnicode_FromString(shortname);
- if (mod_name == NULL) {
- Py_DECREF(error_ob);
- return NULL;
- }
+ if (error_ob == NULL)
+ return NULL;
+ mod_name = PyUnicode_FromString(shortname);
+ if (mod_name == NULL) {
+ Py_DECREF(error_ob);
+ return NULL;
+ }
path = PyUnicode_DecodeFSDefault(pathname);
- if (path == NULL) {
- Py_DECREF(error_ob);
- Py_DECREF(mod_name);
- return NULL;
- }
- PyErr_SetImportError(error_ob, mod_name, path);
- Py_DECREF(error_ob);
- Py_DECREF(mod_name);
- Py_DECREF(path);
- return NULL;
- }
- if (fp != NULL && nhandles < 128)
- handles[nhandles++].handle = handle;
- p = (dl_funcptr) dlsym(handle, funcname);
- return p;
-}
+ if (path == NULL) {
+ Py_DECREF(error_ob);
+ Py_DECREF(mod_name);
+ return NULL;
+ }
+ PyErr_SetImportError(error_ob, mod_name, path);
+ Py_DECREF(error_ob);
+ Py_DECREF(mod_name);
+ Py_DECREF(path);
+ return NULL;
+ }
+ if (fp != NULL && nhandles < 128)
+ handles[nhandles++].handle = handle;
+ p = (dl_funcptr) dlsym(handle, funcname);
+ return p;
+}