|
|
|
@ -1851,12 +1851,14 @@ PHP_FUNCTION(pg_lo_close) |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
#define PGSQL_LO_READ_BUF_SIZE 8192 |
|
|
|
|
|
|
|
/* {{{ proto string pg_lo_read(resource large_object [, int len]) |
|
|
|
Read a large object */ |
|
|
|
PHP_FUNCTION(pg_lo_read) |
|
|
|
{ |
|
|
|
zval **pgsql_id, **len; |
|
|
|
int buf_len = 1024, nbytes; |
|
|
|
int buf_len = PGSQL_LO_READ_BUF_SIZE, nbytes; |
|
|
|
char *buf; |
|
|
|
pgLofp *pgsql; |
|
|
|
|
|
|
|
@ -1925,9 +1927,8 @@ PHP_FUNCTION(pg_lo_read_all) |
|
|
|
zval **pgsql_id; |
|
|
|
int i, tbytes; |
|
|
|
volatile int nbytes; |
|
|
|
char buf[8192]; |
|
|
|
char buf[PGSQL_LO_READ_BUF_SIZE]; |
|
|
|
pgLofp *pgsql; |
|
|
|
int output=1; |
|
|
|
|
|
|
|
switch(ZEND_NUM_ARGS()) { |
|
|
|
case 1: |
|
|
|
@ -1943,11 +1944,9 @@ PHP_FUNCTION(pg_lo_read_all) |
|
|
|
ZEND_FETCH_RESOURCE(pgsql, pgLofp *, pgsql_id, -1, "PostgreSQL large object", le_lofp); |
|
|
|
|
|
|
|
tbytes = 0; |
|
|
|
while ((nbytes = lo_read((PGconn *)pgsql->conn, pgsql->lofd, buf, 8192))>0) { |
|
|
|
for(i=0; i<nbytes; i++) { |
|
|
|
if (output) { (void) PUTC(buf[i]); } |
|
|
|
} |
|
|
|
tbytes += i; |
|
|
|
while ((nbytes = lo_read((PGconn *)pgsql->conn, pgsql->lofd, buf, PGSQL_LO_READ_BUF_SIZE))>0) { |
|
|
|
php_body_write(buf, nbytes TSRMLS_CC); |
|
|
|
tbytes += nbytes; |
|
|
|
} |
|
|
|
RETURN_LONG(tbytes); |
|
|
|
} |
|
|
|
@ -1974,7 +1973,7 @@ PHP_FUNCTION(pg_lo_import) |
|
|
|
CHECK_DEFAULT_LINK(id); |
|
|
|
} |
|
|
|
else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC, |
|
|
|
"rs", &pgsql_link, &file_in, &name_len) == SUCCESS) { |
|
|
|
"sr", &file_in, &name_len, &pgsql_link ) == SUCCESS) { |
|
|
|
php_error(E_NOTICE, "Old API for %s() is used.", get_active_function_name(TSRMLS_C)); |
|
|
|
} |
|
|
|
else { |
|
|
|
|