cvs: php4 /ext/pgsql pgsql.c
| From: | Yasuo Ohgaki | Date: | Sat, 20 Apr 2002 03:37:01 +0000 |
| Subject: | cvs: php4 /ext/pgsql pgsql.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-11255@lists.php.net to get a copy of this message | ||
yohgaki Fri Apr 19 23:37:01 2002 EDT
Modified files:
/php4/ext/pgsql pgsql.c
Log:
Some cleanup.
More OID range related fixes.
# Need a little more work for OID
Index: php4/ext/pgsql/pgsql.c
diff -u php4/ext/pgsql/pgsql.c:1.182 php4/ext/pgsql/pgsql.c:1.183
--- php4/ext/pgsql/pgsql.c:1.182 Fri Apr 19 23:03:42 2002
+++ php4/ext/pgsql/pgsql.c Fri Apr 19 23:37:01 2002
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.182 2002/04/20 03:03:42 yohgaki Exp $ */
+/* $Id: pgsql.c,v 1.183 2002/04/20 03:37:01 yohgaki Exp $ */
#include <stdlib.h>
@@ -1480,7 +1480,7 @@
zval **result;
PGresult *pgsql_result;
pgsql_result_handle *pg_result;
- uint oid;
+ Oid oid;
char *oid_str;
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &result)==FAILURE) {
@@ -1496,20 +1496,15 @@
} else if (oid > LONG_MAX) {
oid_str = (char *)emalloc(PGSQL_MAX_LENGTH_OF_LONG+1);
sprintf(oid_str, "%l", oid);
- RETVAL_STRING(oid_str, 0);
- }
- else {
- RETVAL_LONG((long)oid);
+ RETURN_STRING(oid_str, 0);
}
+ RETURN_LONG((long)oid);
#else
Z_STRVAL_P(return_value) = (char *) PQoidStatus(pgsql_result);
- Z_TYPE_P(return_value) = IS_STRING;
if (Z_STRVAL_P(return_value)) {
- Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
- Z_STRVAL_P(return_value) = estrndup(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value));
- } else {
- Z_STRVAL_P(return_value) = empty_string;
+ RETURN_STRING((Z_STRVAL_P(return_value), 1);
}
+ RETURN_STRING(empty_string, 0);
#endif
}
/* }}} */
@@ -1608,6 +1603,7 @@
zval **pgsql_link = NULL;
PGconn *pgsql;
Oid pgsql_oid;
+ char *oid_str;
int id = -1;
switch(ZEND_NUM_ARGS()) {
@@ -1635,14 +1631,17 @@
the object, probably (?) overrides this. (Jouni)
*/
- if ((pgsql_oid = lo_creat(pgsql, INV_READ|INV_WRITE))==0) {
+ if ((pgsql_oid = lo_creat(pgsql, INV_READ|INV_WRITE)) == InvalidOid) {
php_error(E_WARNING, "%s() unable to create PostgreSQL large object",
get_active_function_name(TSRMLS_C));
RETURN_FALSE;
}
-
- Z_LVAL_P(return_value) = pgsql_oid;
- Z_TYPE_P(return_value) = IS_LONG;
+ if (pgsql_oid > LONG_MAX) {
+ oid_str = (char *)emalloc(PGSQL_MAX_LENGTH_OF_LONG+1);
+ sprintf(oid_str, "%l", pgsql_oid);
+ RETURN_STRING(oid_str, 0);
+ }
+ RETURN_LONG((long)pgsql_oid);
}
/* }}} */
@@ -1747,7 +1746,6 @@
}
}
-
pgsql_lofp = (pgLofp *) emalloc(sizeof(pgLofp));
if ((pgsql_lofd = lo_open(pgsql, pgsql_oid, pgsql_mode)) == -1) {
@@ -1786,10 +1784,6 @@
pgsql_lofp->conn = pgsql;
pgsql_lofp->lofd = pgsql_lofd;
ZEND_REGISTER_RESOURCE(return_value, pgsql_lofp, le_lofp);
- /*
- Z_LVAL_P(return_value) = zend_list_insert(pgsql_lofp, le_lofp);
- Z_TYPE_P(return_value) = IS_LONG;
- */
}
}
/* }}} */
@@ -1822,7 +1816,7 @@
RETVAL_TRUE;
}
- zend_list_delete(Z_LVAL_PP(pgsql_lofp));
+ zend_list_delete(Z_RESVAL_PP(pgsql_lofp));
return;
}
/* }}} */
@@ -1854,7 +1848,7 @@
RETURN_FALSE;
}
- buf[nbytes] = 0;
+ buf[nbytes] = '\0';
RETURN_STRINGL(buf, nbytes, 0);
}
/* }}} */
@@ -1934,7 +1928,7 @@
PHP_FUNCTION(pg_lo_import)
{
zval *pgsql_link = NULL;
- char *file_in;
+ char *file_in, *oid_str;
int id = -1, name_len;
int argc = ZEND_NUM_ARGS();
PGconn *pgsql;
@@ -1965,11 +1959,15 @@
oid = lo_import(pgsql, file_in);
- if (oid > 0) {
- RETURN_LONG((int)oid);
- } else {
+ if (oid == InvalidOid) {
RETURN_FALSE;
+ }
+ if (oid > LONG_MAX) {
+ oid_str = (char *)emalloc(PGSQL_MAX_LENGTH_OF_LONG+1);
+ sprintf(oid_str, "%l", oid);
+ RETURN_STRING(oid_str, 0);
}
+ RETURN_LONG((long)oid);
}
/* }}} */