X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fpostgresql.c;h=34b608ed1dc49eda894852c607f0ea90777b16b6;hb=f94fbd3020e40c3685853c905014f2ae310b02c7;hp=9ed4e8efd0c84661b7304676857c1f1e667737e4;hpb=a1655b870904de973c366d85ebdc8adde4ef5e1e;p=chise%2Fxemacs-chise.git.1 diff --git a/src/postgresql.c b/src/postgresql.c index 9ed4e8e..34b608e 100644 --- a/src/postgresql.c +++ b/src/postgresql.c @@ -3,8 +3,8 @@ Copyright (C) 2000 Electrotechnical Laboratory, JAPAN. Licensed to the Free Software Foundation. - Author: SL Baur - Maintainer: SL Baur + Author: SL Baur + Maintainer: SL Baur Please send patches to this file to me first before submitting them to xemacs-patches. @@ -92,7 +92,6 @@ TODO (in rough order of priority): */ #if (EMACS_MAJOR_VERSION == 21) && (EMACS_MINOR_VERSION < 2) #define RUNNING_XEMACS_21_1 1 -#define POSTGRES_INCLUDE(file) #endif /* #define POSTGRES_LO_IMPORT_IS_VOID 1 */ @@ -100,16 +99,12 @@ TODO (in rough order of priority): #include "lisp.h" #include "sysdep.h" #include "buffer.h" - -#include POSTGRES_INCLUDE (libpq-fe.h) #include "postgresql.h" #ifdef RUNNING_XEMACS_21_1 /* handle interface changes */ -#define I_HATE_CONST CONST #define PG_OS_CODING FORMAT_FILENAME #define TO_EXTERNAL_FORMAT(a,from,b,to,c) GET_C_STRING_EXT_DATA_ALLOCA(from,FORMAT_FILENAME,to) #else -#define I_HATE_CONST const #ifdef MULE #define PG_OS_CODING Fget_coding_system(Vpg_coding_system) #else @@ -396,7 +391,7 @@ DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult, /* notices */ static void -xemacs_notice_processor (void *arg, I_HATE_CONST char *msg) +xemacs_notice_processor (void *arg, const char *msg) { warn_when_safe (Qpostgresql, Qnotice, "%s", msg); } @@ -540,15 +535,15 @@ Poll an asynchronous connection for completion (conn)) { PGconn *P; - PostgresPollingStatusType PS; + PostgresPollingStatusType polling_status; CHECK_PGCONN (conn); P = (XPGCONN (conn))->pgconn; CHECK_LIVE_CONNECTION (P); - PS = PQconnectPoll (P); - switch (PS) + polling_status = PQconnectPoll (P); + switch (polling_status) { case PGRES_POLLING_FAILED: /* Something Bad has happened */ @@ -566,7 +561,7 @@ Poll an asynchronous connection for completion return Qpgres_polling_active; default: /* they've added a new field we don't know about */ - error ("Help! Unknown status code %08x from backend!", PS); + error ("Help! Unknown status code %08x from backend!", polling_status); } } @@ -725,20 +720,20 @@ Reset connection to the backend asynchronously. } DEFUN ("pq-reset-poll", Fpq_reset_poll, 1, 1, 0, /* -Poll an asynchronous reset for completion +Poll an asynchronous reset for completion. */ (conn)) { PGconn *P; - PostgresPollingStatusType PS; + PostgresPollingStatusType polling_status; CHECK_PGCONN (conn); P = (XPGCONN (conn))->pgconn; CHECK_LIVE_CONNECTION (P); - PS = PQresetPoll (P); - switch (PS) + polling_status = PQresetPoll (P); + switch (polling_status) { case PGRES_POLLING_FAILED: /* Something Bad has happened */ @@ -756,7 +751,7 @@ Poll an asynchronous reset for completion return Qpgres_polling_active; default: /* they've added a new field we don't know about */ - error ("Help! Unknown status code %08x from backend!", PS); + error ("Help! Unknown status code %08x from backend!", polling_status); } } #endif @@ -846,12 +841,12 @@ pq::backend-pid Process ID of backend process return build_ext_string (PQoptions(P), PG_OS_CODING); else if (EQ (field, Qpqstatus)) { - ExecStatusType est; + ConnStatusType cst; /* PQstatus Returns the status of the connection. The status can be CONNECTION_OK or CONNECTION_BAD. ConnStatusType PQstatus(PGconn *conn) */ - switch ((est = PQstatus (P))) + switch ((cst = PQstatus (P))) { case CONNECTION_OK: return Qpg_connection_ok; case CONNECTION_BAD: return Qpg_connection_bad; @@ -864,7 +859,7 @@ pq::backend-pid Process ID of backend process #endif /* HAVE_POSTGRESQLV7 */ default: /* they've added a new field we don't know about */ - error ("Help! Unknown exec status code %08x from backend!", est); + error ("Help! Unknown connection status code %08x from backend!", cst); } } else if (EQ (field, Qpqerrormessage)) @@ -1257,7 +1252,7 @@ Returns the command status string from the SQL command that generated the result } DEFUN ("pq-cmd-tuples", Fpq_cmd_tuples, 1, 1, 0, /* -Returns the number of rows affected by the SQL command +Returns the number of rows affected by the SQL command. */ (result)) { @@ -1309,7 +1304,7 @@ Needs to be called only on a connected database connection. } DEFUN ("pq-is-nonblocking", Fpq_is_nonblocking, 1, 1, 0, /* -Return the blocking status of the database connection +Return the blocking status of the database connection. */ (conn)) { @@ -1323,7 +1318,7 @@ Return the blocking status of the database connection } DEFUN ("pq-flush", Fpq_flush, 1, 1, 0, /* -Force the write buffer to be written (or at least try) +Force the write buffer to be written (or at least try). */ (conn)) { @@ -1543,7 +1538,7 @@ The returned string is *not* null-terminated. if (ret == -1) return Qt; /* done! */ else if (!ret) return Qnil; /* no data yet */ else return Fcons (make_int (ret), - make_ext_string (buffer, ret, PG_OS_CODING)); + make_ext_string ((Extbyte *) buffer, ret, PG_OS_CODING)); } DEFUN ("pq-put-nbytes", Fpq_put_nbytes, 2, 2, 0, /* @@ -1703,8 +1698,6 @@ syms_of_postgresql(void) void vars_of_postgresql(void) { - char *p; - Fprovide (Qpostgresql); #ifdef HAVE_POSTGRESQLV7 Fprovide (intern ("postgresqlv7")); @@ -1716,6 +1709,97 @@ Default Postgres client coding system. */ ); #endif + DEFVAR_LISP ("pg:host", &VXPGHOST /* +Default PostgreSQL server name. +If not set, the server running on the local host is used. The +initial value is set from the PGHOST environment variable. +*/ ); + + DEFVAR_LISP ("pg:user", &VXPGUSER /* +Default PostgreSQL user name. +This value is used when connecting to a database for authentication. +The initial value is set from the PGUSER environment variable. +*/ ); + + DEFVAR_LISP ("pg:options", &VXPGOPTIONS /* +Default PostgreSQL user name. +This value is used when connecting to a database for authentication. +The initial value is set from the PGUSER environment variable. +*/ ); + + DEFVAR_LISP ("pg:port", &VXPGPORT /* +Default port to connect to PostgreSQL backend. +This value is used when connecting to a database. +The initial value is set from the PGPORT environment variable. +*/ ); + + DEFVAR_LISP ("pg:tty", &VXPGTTY /* +Default debugging TTY. +There is no useful setting of this variable in the XEmacs Lisp API. +The initial value is set from the PGTTY environment variable. +*/ ); + + DEFVAR_LISP ("pg:database", &VXPGDATABASE /* +Default database to connect to. +The initial value is set from the PGDATABASE environment variable. +*/ ); + + DEFVAR_LISP ("pg:realm", &VXPGREALM /* +Default kerberos realm to use for authentication. +The initial value is set from the PGREALM environment variable. +*/ ); + +#ifdef MULE + /* It's not clear whether this is any use. My intent is to + autodetect the coding system from the database. */ + DEFVAR_LISP ("pg:client-encoding", &VXPGCLIENTENCODING /* +Default client encoding to use. +The initial value is set from the PGCLIENTENCODING environment variable. +*/ ); +#endif + +#if !defined(HAVE_POSTGRESQLV7) + DEFVAR_LISP ("pg:authtype", &VXPGAUTHTYPE /* +Default authentication to use. +The initial value is set from the PGAUTHTYPE environment variable. + +WARNING: This variable has gone away in versions of PostgreSQL newer +than 6.5. +*/ ); +#endif + + DEFVAR_LISP ("pg:geqo", &VXPGGEQO /* +Genetic Query Optimizer options. +The initial value is set from the PGGEQO environment variable. +*/ ); + + DEFVAR_LISP ("pg:cost-index", &VXPGCOSTINDEX /* +Default cost index options. +The initial value is set from the PGCOSTINDEX environment variable. +*/ ); + + DEFVAR_LISP ("pg:cost-heap", &VXPGCOSTHEAP /* +Default cost heap options. +The initial value is set from the PGCOSTHEAP environment variable. +*/ ); + + DEFVAR_LISP ("pg:tz", &VXPGTZ /* +Default timezone to use. +The initial value is set from the PGTZ environment variable. +*/ ); + + DEFVAR_LISP ("pg:date-style", &VXPGDATESTYLE /* +Default date style to use. +The initial value is set from the PGDATESTYLE environment variable. +*/ ); +} + +/* These initializations should not be done at dump-time. */ +void +init_postgresql_from_environment(void) +{ + char *p; + if ((p = getenv ("PGHOST"))) { VXPGHOST = build_ext_string (p, PG_OS_CODING); @@ -1724,11 +1808,6 @@ Default Postgres client coding system. { VXPGHOST = Qnil; } - DEFVAR_LISP ("pg:host", &VXPGHOST /* -Default PostgreSQL server name. -If not set, the server running on the local host is used. The -initial value is set from the PGHOST environment variable. -*/ ); if ((p = getenv ("PGUSER"))) { @@ -1738,11 +1817,6 @@ initial value is set from the PGHOST environment variable. { VXPGUSER = Qnil; } - DEFVAR_LISP ("pg:user", &VXPGUSER /* -Default PostgreSQL user name. -This value is used when connecting to a database for authentication. -The initial value is set from the PGUSER environment variable. -*/ ); if ((p = getenv ("PGOPTIONS"))) { @@ -1752,11 +1826,6 @@ The initial value is set from the PGUSER environment variable. { VXPGOPTIONS = Qnil; } - DEFVAR_LISP ("pg:options", &VXPGOPTIONS /* -Default PostgreSQL user name. -This value is used when connecting to a database for authentication. -The initial value is set from the PGUSER environment variable. -*/ ); if ((p = getenv ("PGPORT"))) { @@ -1766,11 +1835,6 @@ The initial value is set from the PGUSER environment variable. { VXPGPORT = Qnil; } - DEFVAR_LISP ("pg:port", &VXPGPORT /* -Default port to connect to PostgreSQL backend. -This value is used when connecting to a database. -The initial value is set from the PGPORT environment variable. -*/ ); if ((p = getenv ("PGTTY"))) { @@ -1780,11 +1844,6 @@ The initial value is set from the PGPORT environment variable. { VXPGTTY = Qnil; } - DEFVAR_LISP ("pg:tty", &VXPGTTY /* -Default debugging TTY. -There is no useful setting of this variable in the XEmacs Lisp API. -The initial value is set from the PGTTY environment variable. -*/ ); if ((p = getenv ("PGDATABASE"))) { @@ -1794,10 +1853,6 @@ The initial value is set from the PGTTY environment variable. { VXPGDATABASE = Qnil; } - DEFVAR_LISP ("pg:database", &VXPGDATABASE /* -Default database to connect to. -The initial value is set from the PGDATABASE environment variable. -*/ ); if ((p = getenv ("PGREALM"))) { @@ -1807,10 +1862,6 @@ The initial value is set from the PGDATABASE environment variable. { VXPGREALM = Qnil; } - DEFVAR_LISP ("pg:realm", &VXPGREALM /* -Default kerberos realm to use for authentication. -The initial value is set from the PGREALM environment variable. -*/ ); #ifdef MULE /* It's not clear whether this is any use. My intent is to @@ -1823,10 +1874,6 @@ The initial value is set from the PGREALM environment variable. { VXPGCLIENTENCODING = Qnil; } - DEFVAR_LISP ("pg:client-encoding", &VXPGCLIENTENCODING /* -Default client encoding to use. -The initial value is set from the PGCLIENTENCODING environment variable. -*/ ); #endif #if !defined(HAVE_POSTGRESQLV7) @@ -1838,13 +1885,6 @@ The initial value is set from the PGCLIENTENCODING environment variable. { VXPGAUTHTYPE = Qnil; } - DEFVAR_LISP ("pg:authtype", &VXPGAUTHTYPE /* -Default authentication to use. -The initial value is set from the PGAUTHTYPE environment variable. - -WARNING: This variable has gone away in versions of PostgreSQL newer -than 6.5. -*/ ); #endif if ((p = getenv ("PGGEQO"))) @@ -1855,10 +1895,6 @@ than 6.5. { VXPGGEQO = Qnil; } - DEFVAR_LISP ("pg:geqo", &VXPGGEQO /* -Genetic Query Optimizer options. -The initial value is set from the PGGEQO environment variable. -*/ ); if ((p = getenv ("PGCOSTINDEX"))) { @@ -1868,10 +1904,6 @@ The initial value is set from the PGGEQO environment variable. { VXPGCOSTINDEX = Qnil; } - DEFVAR_LISP ("pg:cost-index", &VXPGCOSTINDEX /* -Default cost index options. -The initial value is set from the PGCOSTINDEX environment variable. -*/ ); if ((p = getenv ("PGCOSTHEAP"))) { @@ -1881,10 +1913,6 @@ The initial value is set from the PGCOSTINDEX environment variable. { VXPGCOSTHEAP = Qnil; } - DEFVAR_LISP ("pg:cost-heap", &VXPGCOSTHEAP /* -Default cost heap options. -The initial value is set from the PGCOSTHEAP environment variable. -*/ ); if ((p = getenv ("PGTZ"))) { @@ -1894,10 +1922,6 @@ The initial value is set from the PGCOSTHEAP environment variable. { VXPGTZ = Qnil; } - DEFVAR_LISP ("pg:tz", &VXPGTZ /* -Default timezone to use. -The initial value is set from the PGTZ environment variable. -*/ ); if ((p = getenv ("PGDATESTYLE"))) { @@ -1907,8 +1931,5 @@ The initial value is set from the PGTZ environment variable. { VXPGDATESTYLE = Qnil; } - DEFVAR_LISP ("pg:date-style", &VXPGDATESTYLE /* -Default date style to use. -The initial value is set from the PGDATESTYLE environment variable. -*/ ); } +