diff options
Diffstat (limited to 'src/pgsql.c')
-rw-r--r-- | src/pgsql.c | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/src/pgsql.c b/src/pgsql.c index 44b1fa6..011a4b7 100644 --- a/src/pgsql.c +++ b/src/pgsql.c @@ -1,19 +1,18 @@ /* This file is part of guile-sql. Copyright (C) 2002 Sergey Poznyakoff - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3 of the License, or (at your + option) any later version. This program 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 General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + You should have received a copy of the GNU General Public License along + with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H # include <config.h> @@ -22,13 +21,13 @@ #include <guile-sql.h> #include <libpq-fe.h> -SCM +static SCM s_pgsql_mark(struct sql_connect *conn) { return SCM_BOOL_F; } -scm_sizet +static scm_sizet s_pgsql_free(struct sql_connect *conn) { PGconn *pgconn = (PGconn*) conn->data; @@ -38,9 +37,10 @@ s_pgsql_free(struct sql_connect *conn) return sizeof(pgconn); } -SCM -s_pgsql_connect (char *hostname, int port, - char *dbname, char *user, char *pass, const char *why) +static SCM +s_pgsql_connect (const char *hostname, int port, + const char *dbname, const char *user, const char *pass, + const char *why) { PGconn *pgconn; char buf[24]; @@ -62,7 +62,7 @@ s_pgsql_connect (char *hostname, int port, return smob; } -SCM +static SCM result_to_list(PGresult *res) { int i, j; @@ -75,10 +75,8 @@ result_to_list(PGresult *res) SCM head = SCM_EOL, tail; for (j = 0; j < nfields; j++) { - SCM new_elt; char *val = PQgetvalue(res, i, j); - SCM_NEWCELL(new_elt); - SCM_SETCAR(new_elt, scm_makfrom0str(val)); + SCM new_elt = scm_cons(scm_makfrom0str(val), SCM_EOL); if (head == SCM_EOL) head = new_elt; else @@ -86,11 +84,7 @@ result_to_list(PGresult *res) tail = new_elt; } - if (head != SCM_EOL) - SCM_SETCDR(tail, SCM_EOL); - - SCM_NEWCELL(new_row); - SCM_SETCAR(new_row, head); + new_row = scm_cons(head, SCM_EOL); if (row_head == SCM_EOL) row_head = new_row; @@ -98,13 +92,11 @@ result_to_list(PGresult *res) SCM_SETCDR(row_tail, new_row); row_tail = new_row; } - if (row_head != SCM_EOL) - SCM_SETCDR(row_tail, SCM_EOL); return row_head; } -SCM -s_pgsql_query(struct sql_connect *conn, char *query) +static SCM +s_pgsql_query(struct sql_connect *conn, const char *query) { PGconn *pgconn = (PGconn*) conn->data; PGresult *res; @@ -137,7 +129,7 @@ s_pgsql_query(struct sql_connect *conn, char *query) return cell; } -void +static void s_pgsql_close(struct sql_connect *conn) { PGconn *pgconn = (PGconn*) conn->data; |