php-src/ext/pdo_dblib/php_pdo_dblib_int.h
Christoph M. Becker 50b3a0d011
Add comments about internal headers (GH-15689)
A common convention is to name internal C header files as `*_int.h`.
Since a couple of these are actually installed, we add comments that
this is not supposed to happen, (a) to avoid installing further
internal headers, and (b) to pave the way to fix this in the next major
PHP version.

Somewhat special is php_gmp_int.h, where "int" is meant as abbreviation
for "interface".

Another common convention is appending `_priv` or `_private`, but since
there have not been any issues regarding these headers so far, we
refrain from adding respective comments to these headers.

Anyhow, it might be a good idea to introduce some common naming
convention for such internal/private headers.
2024-09-08 16:11:25 +02:00

167 lines
4.6 KiB
C

/*
+----------------------------------------------------------------------+
| Copyright (c) The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| https://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Wez Furlong <wez@php.net> |
| Frank M. Kromann <frank@kromann.info> |
+----------------------------------------------------------------------+
*/
/* internal header; not supposed to be installed */
#ifndef PHP_PDO_DBLIB_INT_H
#define PHP_PDO_DBLIB_INT_H
#ifndef PDO_DBLIB_FLAVOUR
# define PDO_DBLIB_FLAVOUR "Generic DB-lib"
#endif
#ifdef PHP_DBLIB_IS_MSSQL
# include <sqlfront.h>
# include <sqldb.h>
# define DBERRHANDLE(a, b) dbprocerrhandle(a, b)
# define DBMSGHANDLE(a, b) dbprocmsghandle(a, b)
# define EHANDLEFUNC DBERRHANDLE_PROC
# define MHANDLEFUNC DBMSGHANDLE_PROC
# define DBSETOPT(a, b, c) dbsetopt(a, b, c)
# define SYBESMSG SQLESMSG
# define SYBESEOF SQLESEOF
# define SYBEFCON SQLECONN /* SQLEFCON does not exist in MS SQL Server. */
# define SYBEMEM SQLEMEM
# define SYBEPWD SQLEPWD
#else
# include <sybfront.h>
# include <sybdb.h>
# include <syberror.h>
/* alias some types */
# define SQLTEXT SYBTEXT
# define SQLCHAR SYBCHAR
# define SQLVARCHAR SYBVARCHAR
# define SQLINT1 SYBINT1
# define SQLINT2 SYBINT2
# define SQLINT4 SYBINT4
# define SQLINT8 SYBINT8
# define SQLINTN SYBINTN
# define SQLBIT SYBBIT
# define SQLFLT4 SYBREAL
# define SQLFLT8 SYBFLT8
# define SQLFLTN SYBFLTN
# define SQLDECIMAL SYBDECIMAL
# define SQLNUMERIC SYBNUMERIC
# define SQLDATETIME SYBDATETIME
# define SQLDATETIM4 SYBDATETIME4
# define SQLDATETIMN SYBDATETIMN
# ifdef SYBMSDATETIME2
# define SQLMSDATETIME2 SYBMSDATETIME2
# endif
# define SQLMONEY SYBMONEY
# define SQLMONEY4 SYBMONEY4
# define SQLMONEYN SYBMONEYN
# define SQLIMAGE SYBIMAGE
# define SQLBINARY SYBBINARY
# define SQLVARBINARY SYBVARBINARY
# ifdef SYBUNIQUE
# define SQLUNIQUE SYBUNIQUE
#else
# define SQLUNIQUE 36 /* FreeTDS Hack */
# endif
# define DBERRHANDLE(a, b) dberrhandle(b)
# define DBMSGHANDLE(a, b) dbmsghandle(b)
# define DBSETOPT(a, b, c) dbsetopt(a, b, c, -1)
# define NO_MORE_RPC_RESULTS 3
# define dbfreelogin dbloginfree
# define dbrpcexec dbrpcsend
typedef short TDS_SHORT;
# ifndef PHP_WIN32
typedef unsigned char *LPBYTE;
# endif
typedef float DBFLT4;
#endif
/* hardcoded string length from FreeTDS
* src/tds/convert.c:tds_convert_datetimeall()
*/
# define DATETIME_MAX_LEN 63
int pdo_dblib_error_handler(DBPROCESS *dbproc, int severity, int dberr,
int oserr, char *dberrstr, char *oserrstr);
int pdo_dblib_msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate,
int severity, char *msgtext, char *srvname, char *procname, int line);
extern const pdo_driver_t pdo_dblib_driver;
extern const struct pdo_stmt_methods dblib_stmt_methods;
typedef struct {
int severity;
int oserr;
int dberr;
char *oserrstr;
char *dberrstr;
char *sqlstate;
char *lastmsg;
} pdo_dblib_err;
void pdo_dblib_err_dtor(pdo_dblib_err *err);
typedef struct {
LOGINREC *login;
DBPROCESS *link;
pdo_dblib_err err;
unsigned assume_national_character_set_strings:1;
unsigned stringify_uniqueidentifier:1;
unsigned skip_empty_rowsets:1;
unsigned datetime_convert:1;
} pdo_dblib_db_handle;
typedef struct {
pdo_dblib_db_handle *H;
pdo_dblib_err err;
unsigned int computed_column_name_count;
} pdo_dblib_stmt;
typedef struct {
const char* key;
int value;
} pdo_dblib_keyval;
ZEND_BEGIN_MODULE_GLOBALS(dblib)
pdo_dblib_err err;
char sqlstate[6];
ZEND_END_MODULE_GLOBALS(dblib)
#if defined(ZTS) && (defined(COMPILE_DL_PDO_DBLIB) || defined(COMPILE_DL_PDO_MSSQL))
ZEND_TSRMLS_CACHE_EXTERN()
#endif
ZEND_EXTERN_MODULE_GLOBALS(dblib)
#define DBLIB_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(dblib, v)
ZEND_EXTERN_MODULE_GLOBALS(dblib)
enum {
PDO_DBLIB_ATTR_CONNECTION_TIMEOUT = PDO_ATTR_DRIVER_SPECIFIC,
PDO_DBLIB_ATTR_QUERY_TIMEOUT,
PDO_DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER,
PDO_DBLIB_ATTR_VERSION,
PDO_DBLIB_ATTR_TDS_VERSION,
PDO_DBLIB_ATTR_SKIP_EMPTY_ROWSETS,
PDO_DBLIB_ATTR_DATETIME_CONVERT,
};
#endif