summaryrefslogtreecommitdiff
path: root/ext/pgsql/pgsql.c
diff options
context:
space:
mode:
authorRui Hirokawa <hirokawa@php.net>2000-07-02 08:59:44 +0000
committerRui Hirokawa <hirokawa@php.net>2000-07-02 08:59:44 +0000
commit074f52f38298c771064063389103731509ad728b (patch)
tree280e03fdb7f260e2230ae0516e0ef164e82ec3c6 /ext/pgsql/pgsql.c
parent4300d396b4688c5b378b3593bf22b4fd27dca81f (diff)
downloadphp-git-074f52f38298c771064063389103731509ad728b.tar.gz
added new functions: pg_setclientencoding, pg_clientencoding in Postgres-7.0.
Diffstat (limited to 'ext/pgsql/pgsql.c')
-rw-r--r--ext/pgsql/pgsql.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 0391c24785..b25f983786 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -74,6 +74,10 @@ function_entry pgsql_functions[] = {
PHP_FE(pg_loreadall, NULL)
PHP_FE(pg_loimport, NULL)
PHP_FE(pg_loexport, NULL)
+#if HAVE_PQCLIENTENCODING
+ PHP_FE(pg_clientencoding, NULL)
+ PHP_FE(pg_setclientencoding, NULL)
+#endif
{NULL, NULL, NULL}
};
@@ -1598,6 +1602,76 @@ PHP_FUNCTION(pg_loexport)
}
/* }}} */
+#if HAVE_PQCLIENTENCODING
+
+/* {{{ proto int pg_setclientencoding([int connection,] string encoding)
+ Set client encoding */
+PHP_FUNCTION(pg_setclientencoding)
+{
+ zval **encoding, **pgsql_link;
+ int id = -1;
+ PGconn *pgsql;
+ PGLS_FETCH();
+
+ switch(ZEND_NUM_ARGS()) {
+ case 1:
+ if (zend_get_parameters_ex(1, &encoding)==FAILURE) {
+ RETURN_FALSE;
+ }
+ id = PGG(default_link);
+ break;
+ case 2:
+ if (zend_get_parameters_ex(2, &pgsql_link, &encoding)==FAILURE) {
+ RETURN_FALSE;
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL link", le_link, le_plink);
+
+ convert_to_string_ex(encoding);
+ return_value->value.lval = PQsetClientEncoding(pgsql, Z_STRVAL_PP(encoding));
+ return_value->type = IS_LONG;
+
+}
+/* }}} */
+
+/* {{{ proto string pg_clientencoding([int connection])
+ Get the current client encoding */
+PHP_FUNCTION(pg_clientencoding)
+{
+ zval **pgsql_link;
+ int id = -1;
+ PGconn *pgsql;
+ PGLS_FETCH();
+
+ switch(ZEND_NUM_ARGS()) {
+ case 0:
+ id = PGG(default_link);
+ break;
+ case 1:
+ if (zend_get_parameters_ex(1, &pgsql_link)==FAILURE) {
+ RETURN_FALSE;
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL link", le_link, le_plink);
+
+ return_value->value.str.val
+ = (char *) pg_encoding_to_char(PQclientEncoding(pgsql));
+ return_value->value.str.len = strlen(return_value->value.str.val);
+ return_value->value.str.val = (char *) estrdup(return_value->value.str.val);
+ return_value->type = IS_STRING;
+}
+/* }}} */
+#endif
#endif