cvs: php4 /ext/pgsql/ pgsql.c php_pgsql.h

[email protected] ("Zeev Suraski") Wed, 31 May 2000 20:40:29 -0000
Newsgroups php.version4
Message-ID <cvszeev959805629@cvsserver>
zeev		Wed May 31 13:40:29 2000 EDT

  Modified files:
    /php4/ext/pgsql	pgsql.c php_pgsql.h 
  Log:
  @- Added pg_trace() and pg_untrace (Dominic J. Eidson & Zeev)
  
  
Index: php4/ext/pgsql/pgsql.c
diff -u php4/ext/pgsql/pgsql.c:1.51 php4/ext/pgsql/pgsql.c:1.52
--- php4/ext/pgsql/pgsql.c:1.51	Thu May 25 00:51:40 2000
+++ php4/ext/pgsql/pgsql.c	Wed May 31 13:40:28 2000
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
  
-/* $Id: pgsql.c,v 1.51 2000/05/25 07:51:40 jah Exp $ */
+/* $Id: pgsql.c,v 1.52 2000/05/31 20:40:28 zeev Exp $ */
 
 #include <stdlib.h>
 
@@ -48,6 +48,8 @@
 	PHP_FE(pg_cmdtuples,	NULL)
 	PHP_FE(pg_dbname,		NULL)
 	PHP_FE(pg_errormessage,	NULL)
+	PHP_FE(pg_trace,		NULL)
+	PHP_FE(pg_untrace,		NULL)
 	PHP_FE(pg_options,		NULL)
 	PHP_FE(pg_port,			NULL)
 	PHP_FE(pg_tty,			NULL)
@@ -1102,6 +1104,91 @@
 #endif
 }
 /* }}} */
+
+
+/* {{{ proto bool pg_trace(string filename [, string mode [, resource connection]])
+   Enable tracing a PostgresSQL connection */
+PHP_FUNCTION(pg_trace)
+{
+	zval **z_filename, **z_mode, **z_pgsql_link;
+	int id = -1;
+	PGconn *pgsql;
+	char *mode = "w";
+	int issock, socketd;
+	FILE *fp;
+	PGLS_FETCH();
+
+	id = PGG(default_link);
+
+	switch (ZEND_NUM_ARGS()) {
+		case 1:
+			if (zend_get_parameters_ex(1, &z_filename)==FAILURE) {
+				RETURN_FALSE;
+			}
+			break;
+		case 2:
+			if (zend_get_parameters_ex(2, &z_filename, &z_mode)==FAILURE) {
+				RETURN_FALSE;
+			}
+			convert_to_string_ex(z_mode);
+			mode = Z_STRVAL_PP(z_mode);
+			break;
+		case 3:
+			if (zend_get_parameters_ex(3, &z_filename, &z_mode, &z_pgsql_link)==FAILURE) {
+				RETURN_FALSE;
+			}
+			convert_to_string_ex(z_mode);
+			mode = Z_STRVAL_PP(z_mode);
+			break;
+		default:
+			ZEND_WRONG_PARAM_COUNT();
+			break;
+	}
+		
+    ZEND_FETCH_RESOURCE2(pgsql, PGconn *, z_pgsql_link, id, "PostgreSQL link", le_link, le_plink);
+	convert_to_string_ex(z_filename);
+
+	fp = php_fopen_wrapper(Z_STRVAL_PP(z_filename), mode, ENFORCE_SAFE_MODE, &issock, &socketd, NULL);
+
+	if (!fp) {
+		php_error(E_WARNING, "Unable to open %s for logging", Z_STRVAL_PP(z_filename));
+		RETURN_FALSE;
+	}
+	
+	PQtrace(pgsql, fp);
+	ZEND_REGISTER_RESOURCE(NULL, fp, php_file_le_fopen());
+	RETURN_TRUE;
+}
+
+
+/* {{{ proto bool pg_untrace([int connection])
+   Disable tracing of a PostgreSQL connection */
+PHP_FUNCTION(pg_untrace)
+{
+	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:
+			ZEND_WRONG_PARAM_COUNT();
+			break;
+	}
+
+	ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL link", le_link, le_plink);
+	PQuntrace(pgsql);
+	RETURN_TRUE;
+}
+
 
 /* {{{ proto int pg_locreate(int connection)
    Create a large object */
Index: php4/ext/pgsql/php_pgsql.h
diff -u php4/ext/pgsql/php_pgsql.h:1.10 php4/ext/pgsql/php_pgsql.h:1.11
--- php4/ext/pgsql/php_pgsql.h:1.10	Tue May 23 23:48:04 2000
+++ php4/ext/pgsql/php_pgsql.h	Wed May 31 13:40:28 2000
@@ -27,7 +27,7 @@
    +----------------------------------------------------------------------+
  */
  
-/* $Id: php_pgsql.h,v 1.10 2000/05/24 06:48:04 jah Exp $ */
+/* $Id: php_pgsql.h,v 1.11 2000/05/31 20:40:28 zeev Exp $ */
 
 #ifndef _PHP_PGSQL_H
 #define _PHP_PGSQL_H
@@ -69,6 +69,8 @@
 PHP_FUNCTION(pg_close);
 PHP_FUNCTION(pg_dbname);
 PHP_FUNCTION(pg_errormessage);
+PHP_FUNCTION(pg_trace);
+PHP_FUNCTION(pg_untrace);
 PHP_FUNCTION(pg_options);
 PHP_FUNCTION(pg_port);
 PHP_FUNCTION(pg_tty);