diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2020-04-06 16:49:42 +1200 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2020-04-06 16:49:42 +1200 |
commit | f2852a520a26d88fb248c0563e73af43110a13a8 (patch) | |
tree | b548ddfea98d2572d16e19c20541a95ec4c86b18 | |
parent | fbba461052ae6ebc43167ab69ad91cadb7914c83 (diff) | |
parent | 012a20b01082850af47e54eeefc90ea100ae55de (diff) | |
download | psycopg2-f2852a520a26d88fb248c0563e73af43110a13a8.tar.gz |
Merge branch 'add-aix-support'
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | psycopg/aix_support.c | 58 | ||||
-rw-r--r-- | psycopg/aix_support.h | 48 | ||||
-rw-r--r-- | psycopg/pqpath.c | 2 | ||||
-rw-r--r-- | setup.py | 2 |
5 files changed, 110 insertions, 1 deletions
@@ -10,6 +10,7 @@ What's new in psycopg 2.8.5 `~psycopg2.extras.LoggingConnection` (:ticket:`#1026`). - `~psycopg2.extensions.Column` objects in `cursor.description` can be sliced (:ticket:`#1034`). +- Added AIX support (:ticket:`#1061`). - Fixed `~copy.copy()` of `~psycopg2.extras.DictCursor` rows (:ticket:`#1073`). diff --git a/psycopg/aix_support.c b/psycopg/aix_support.c new file mode 100644 index 0000000..dc83a39 --- /dev/null +++ b/psycopg/aix_support.c @@ -0,0 +1,58 @@ +/* aix_support.c - emulate functions missing on AIX + * + * Copyright (C) 2017 My Karlsson <mk@acc.umu.se> + * Copyright (c) 2018, Joyent, Inc. + * Copyright (C) 2020 The Psycopg Team + * + * This file is part of psycopg. + * + * psycopg2 is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition, as a special exception, the copyright holders give + * permission to link this program with the OpenSSL library (or with + * modified versions of OpenSSL that use the same license as OpenSSL), + * and distribute linked combinations including the two. + * + * You must obey the GNU Lesser General Public License in all respects for + * all of the code used other than OpenSSL. + * + * psycopg2 is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + */ + +#define PSYCOPG_MODULE +#include "psycopg/psycopg.h" +#include "psycopg/aix_support.h" + +#if defined(_AIX) +/* timeradd is missing on AIX */ +#ifndef timeradd +void +timeradd(struct timeval *a, struct timeval *b, struct timeval *c) +{ + c->tv_sec = a->tv_sec + b->tv_sec; + c->tv_usec = a->tv_usec + b->tv_usec; + if (c->tv_usec >= 1000000) { + c->tv_usec -= 1000000; + c->tv_sec += 1; + } +} + +/* timersub is missing on AIX */ +void +timersub(struct timeval *a, struct timeval *b, struct timeval *c) +{ + c->tv_sec = a->tv_sec - b->tv_sec; + c->tv_usec = a->tv_usec - b->tv_usec; + if (c->tv_usec < 0) { + c->tv_usec += 1000000; + c->tv_sec -= 1; + } +} +#endif /* timeradd */ +#endif /* defined(_AIX)*/ diff --git a/psycopg/aix_support.h b/psycopg/aix_support.h new file mode 100644 index 0000000..81f2bd6 --- /dev/null +++ b/psycopg/aix_support.h @@ -0,0 +1,48 @@ +/* aix_support.h - definitions for aix_support.c + * + * Copyright (C) 2017 My Karlsson <mk@acc.umu.se> + * Copyright (c) 2018-2019, Joyent, Inc. + * Copyright (C) 2020 The Psycopg Team + * + * This file is part of psycopg. + * + * psycopg2 is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition, as a special exception, the copyright holders give + * permission to link this program with the OpenSSL library (or with + * modified versions of OpenSSL that use the same license as OpenSSL), + * and distribute linked combinations including the two. + * + * You must obey the GNU Lesser General Public License in all respects for + * all of the code used other than OpenSSL. + * + * psycopg2 is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + */ +#ifndef PSYCOPG_AIX_SUPPORT_H +#define PSYCOPG_AIX_SUPPORT_H + +#include "psycopg/config.h" + +#ifdef _AIX +#include <sys/time.h> + +#ifndef timeradd +extern HIDDEN void timeradd(struct timeval *a, struct timeval *b, struct timeval *c); +extern HIDDEN void timersub(struct timeval *a, struct timeval *b, struct timeval *c); +#endif + +#ifndef timercmp +#define timercmp(a, b, cmp) \ + (((a)->tv_sec == (b)->tv_sec) ? \ + ((a)->tv_usec cmp (b)->tv_usec) : \ + ((a)->tv_sec cmp (b)->tv_sec)) +#endif +#endif + +#endif /* !defined(PSYCOPG_AIX_SUPPORT_H) */ diff --git a/psycopg/pqpath.c b/psycopg/pqpath.c index e52ba18..52ba78b 100644 --- a/psycopg/pqpath.c +++ b/psycopg/pqpath.c @@ -54,6 +54,8 @@ #include "win32_support.h" #elif defined(__sun) && defined(__SVR4) #include "solaris_support.h" +#elif defined(_AIX) +#include "aix_support.h" #else #include <sys/time.h> #endif @@ -483,7 +483,7 @@ data_files = [] sources = [ 'psycopgmodule.c', 'green.c', 'pqpath.c', 'utils.c', 'bytes_format.c', - 'libpq_support.c', 'win32_support.c', 'solaris_support.c', + 'libpq_support.c', 'win32_support.c', 'solaris_support.c', 'aix_support.c', 'connection_int.c', 'connection_type.c', 'cursor_int.c', 'cursor_type.c', 'column_type.c', |