diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-12-26 21:54:07 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-12-26 21:54:07 +0000 |
commit | f60b650e9acd449b142c37e4fcc55390c62f4832 (patch) | |
tree | 3f3e026b1db43a9344fb65e6a83d7534b7434ff0 /src/mysql.c | |
parent | 06e6d0bcfcd33203091a817e4423fdd12e1bcd68 (diff) | |
download | gamma-f60b650e9acd449b142c37e4fcc55390c62f4832.tar.gz gamma-f60b650e9acd449b142c37e4fcc55390c62f4832.tar.bz2 |
* NEWS: Update.
* configure.ac: Version number 1.1
* COPYING: GPLv3.
* Makefile.am: GPLv3.
* examples/whoisd.scm: GPLv3.
* m4/guile.m4: Require Guile v. 1.8 or later.
* scripts/Makefile.am: GPLv3.
* scripts/guile-doc-snarf.awk: GPLv3.
* src/.cvsignore (gettext.inc, gettext.scm): Remove.
* src/Makefile.am: Remove libguile-gettext.
* src/app.h: GPLv3.
* src/gsql_conn.c, src/gsql_lib.c, src/guile-sql.h, src/mysql.c,
src/pgsql.c: GPLv3; Guile v.>=1.8.
* src/gettext.sci, src/gettext.h, src/gettext.c: Remove.
* src/gettext.scm: New file.
Diffstat (limited to 'src/mysql.c')
-rw-r--r-- | src/mysql.c | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/src/mysql.c b/src/mysql.c index d788a92..ac7e0f7 100644 --- a/src/mysql.c +++ b/src/mysql.c @@ -1,54 +1,54 @@ /* This file is part of guile-sql. Copyright (C) 2002, 2004, 2005 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> #endif #include <string.h> #include <guile-sql.h> #include <mysql/mysql.h> -SCM +static SCM s_mysql_mark(struct sql_connect *conn) { return SCM_BOOL_F; } -scm_sizet +static scm_sizet s_mysql_free(struct sql_connect *conn) { MYSQL *mysql = (MYSQL*) conn->data; if (!mysql) return 0; mysql_close(mysql); return sizeof(MYSQL); } -SCM -s_mysql_connect (char *hostname, int port, - char *dbname, char *user, char *pass, const char *why) +static SCM +s_mysql_connect (const char *hostname, int port, + const char *dbname, const char *user, const char *pass, + const char *why) { MYSQL *mysql; SCM smob; struct sql_connect *conn; - char *socket_path = NULL; + const char *socket_path = NULL; mysql = mysql_init(NULL); if (!mysql) scm_throw(gsql_error, scm_list_2(scm_makfrom0str("mysql_init() failed"), scm_makfrom0str(""))); @@ -69,14 +69,14 @@ s_mysql_connect (char *hostname, int port, smob = sql_connect_create("mysql"); conn = (struct sql_connect *)SCM_CDR(smob); conn->data = mysql; return smob; } -SCM -s_mysql_query(struct sql_connect *conn, char *query) +static SCM +s_mysql_query(struct sql_connect *conn, const char *query) { MYSQL *mysql = conn->data; MYSQL_RES *result; SCM cell; if (mysql_query(mysql, query)) @@ -96,36 +96,28 @@ s_mysql_query(struct sql_connect *conn, char *query) SCM head = SCM_EOL, tail; MYSQL_ROW row = mysql_fetch_row(result); if (!row) break; for (j = 0; j < nfields; j++) { - SCM new_elt; - SCM_NEWCELL(new_elt); - SCM_SETCAR(new_elt, scm_makfrom0str(row[j])); + SCM new_elt = scm_cons(scm_makfrom0str(row[j]), + SCM_EOL); if (head == SCM_EOL) head = new_elt; else SCM_SETCDR(tail, new_elt); 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; else SCM_SETCDR(row_tail, new_row); row_tail = new_row; } - if (row_head != SCM_EOL) - SCM_SETCDR(row_tail, SCM_EOL); cell = row_head; mysql_free_result(result); } else { /* should it have returned something? */ if (mysql_field_count(mysql) == 0) { cell = scm_makenum(mysql_affected_rows(mysql)); } else { /* mysql_store_result() should have returned data */ @@ -134,13 +126,13 @@ s_mysql_query(struct sql_connect *conn, char *query) scm_makfrom0str(mysql_error(mysql)))); } } return cell; } -void +static void s_mysql_close(struct sql_connect *conn) { if (conn->data) mysql_close(conn->data); conn->data = NULL; } |