derick Thu Jan 18 14:17:05 2001 EDT
Modified files:
/php4/ext/pgsql pgsql.c php_pgsql.h
Log:
- Added the pg_lolseek function, which allows for arbitrary seeking within
a large object, and the pg_lotell call, which can be used to find the
current file offset for a large object (Submitted by: Adam Haberlach
<[EMAIL PROTECTED]>).
@- Added the pg_lolseek and pg_lotell functions (Derick)
Index: php4/ext/pgsql/pgsql.c
diff -u php4/ext/pgsql/pgsql.c:1.82 php4/ext/pgsql/pgsql.c:1.83
--- php4/ext/pgsql/pgsql.c:1.82 Thu Jan 4 03:15:35 2001
+++ php4/ext/pgsql/pgsql.c Thu Jan 18 14:17:05 2001
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.82 2001/01/04 11:15:35 jah Exp $ */
+/* $Id: pgsql.c,v 1.83 2001/01/18 22:17:05 derick Exp $ */
#include <stdlib.h>
@@ -75,6 +75,8 @@
PHP_FE(pg_loreadall, NULL)
PHP_FE(pg_loimport, NULL)
PHP_FE(pg_loexport, NULL)
+ PHP_FE(pg_lolseek, NULL)
+ PHP_FE(pg_lotell, NULL)
PHP_FE(pg_put_line, NULL)
PHP_FE(pg_end_copy, NULL)
#if HAVE_PQCLIENTENCODING
@@ -1733,6 +1735,59 @@
} else {
RETURN_FALSE;
}
+}
+/* }}} */
+
+/* {{{ proto int pg_lolseek(int objoid, int offset, int whence)
+ Seek into a postgres large object*/
+PHP_FUNCTION(pg_lolseek) {
+ val **pgsql_lofp, **seek_offset, **seek_whence;
+ gLofp *pgsql;
+
+ switch(ZEND_NUM_ARGS()) {
+ case 3:
+ if (zend_get_parameters_ex(3, &pgsql_lofp, &seek_offset,
+&seek_whence)==FAILURE) {
+ RETURN_FALSE;
+ }
+ convert_to_long_ex(seek_offset);
+ convert_to_long_ex(seek_whence);
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ ZEND_FETCH_RESOURCE(pgsql, pgLofp *, pgsql_lofp, -1, "PostgreSQL large
+object", le_lofp);
+ if (lo_lseek((PGconn *)pgsql->conn, pgsql->lofd, Z_STRVAL_PP(seek_offset),
+Z_STRVAL_PP(seek_whence))) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+
+/* {{{ proto int pg_tell(int objoid)
+ return current offset into large object */
+PHP_FUNCTION(pg_lotell) {
+ long int offset;
+ zval **pgsql_lofp;
+ pgLofp *pgsql;
+
+ switch(ZEND_NUM_ARGS()) {
+ case 1:
+ if (zend_get_parameters_ex(1, &pgsql_lofp)==FAILURE) {
+ RETURN_FALSE;
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ END_FETCH_RESOURCE(pgsql, pgLofp *, pgsql_lofp, -1, "PostgreSQL large object",
+le_lofp);
+
+ ffset = lo_tell((PGconn *)pgsql->conn, pgsql->lofd);
+ ETURN_LONG (offset);
}
/* }}} */
Index: php4/ext/pgsql/php_pgsql.h
diff -u php4/ext/pgsql/php_pgsql.h:1.23 php4/ext/pgsql/php_pgsql.h:1.24
--- php4/ext/pgsql/php_pgsql.h:1.23 Thu Jan 4 03:15:35 2001
+++ php4/ext/pgsql/php_pgsql.h Thu Jan 18 14:17:05 2001
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pgsql.h,v 1.23 2001/01/04 11:15:35 jah Exp $ */
+/* $Id: php_pgsql.h,v 1.24 2001/01/18 22:17:05 derick Exp $ */
#ifndef PHP_PGSQL_H
#define PHP_PGSQL_H
@@ -85,6 +85,8 @@
PHP_FUNCTION(pg_loreadall);
PHP_FUNCTION(pg_loimport);
PHP_FUNCTION(pg_loexport);
+PHP_FUNCTION(pg_lolseek);
+PHP_FUNCTION(pg_lotell);
PHP_FUNCTION(pg_put_line);
PHP_FUNCTION(pg_end_copy);
#if HAVE_PQCLIENTENCODING
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]