kalowsky Mon Sep 9 16:49:01 2002 EDT
Modified files: (Branch: PHP_4_2_0)
/php4/ext/imap php_imap.c
Log:
Re-applying compiler fix for IRIX, bug #15630
# Jani make sure you update your sources before you commit them. You
# blew this entire bugfix out of 4.2.3
Index: php4/ext/imap/php_imap.c
diff -u php4/ext/imap/php_imap.c:1.112.2.4 php4/ext/imap/php_imap.c:1.112.2.5
--- php4/ext/imap/php_imap.c:1.112.2.4 Sun Aug 25 21:58:31 2002
+++ php4/ext/imap/php_imap.c Mon Sep 9 16:49:00 2002
@@ -25,7 +25,7 @@
| PHP 4.0 updates: Zeev Suraski <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.c,v 1.112.2.4 2002/08/26 01:58:31 sniper Exp $ */
+/* $Id: php_imap.c,v 1.112.2.5 2002/09/09 20:49:00 kalowsky Exp $ */
#define IMAP41
@@ -376,13 +376,28 @@
*/
void mail_getquota(MAILSTREAM *stream, char *qroot, QUOTALIST *qlist)
{
+ zval *t_map;
TSRMLS_FETCH();
/* this should only be run through once */
for (; qlist; qlist = qlist->next)
{
- IMAPG(quota_usage) = qlist->usage;
- IMAPG(quota_limit) = qlist->limit;
+ MAKE_STD_ZVAL(t_map);
+ if (array_init(t_map) == FAILURE) {
+ php_error(E_WARNING, "Unable to allocate t_map memory");
+ FREE_ZVAL(t_map);
+ FREE_ZVAL(IMAPG(quota_return));
+ return;
+ }
+ if (strncmp(qlist->name, "STORAGE", 7) == 0)
+ {
+ add_assoc_long_ex(IMAPG(quota_return), "usage",
+sizeof("usage"), qlist->usage);
+ add_assoc_long_ex(IMPAG(quota_return), "limit",
+sizeof("limit"), qlist->limit);
+ }
+
+ add_assoc_long_ex(t_map, "usage", sizeof("usage"), qlist->usage);
+ add_assoc_long_ex(t_map, "limit", sizeof("limit"), qlist->usage);
+ ass_assoc_zval_ex(IMAPG(quota_return), qlist->name,
+strlen(qlist->name)+1, t_map);
}
}
/* }}} */
@@ -1044,6 +1059,13 @@
convert_to_string_ex(qroot);
+ MAKE_STD_ZVAL(IMAPG(quota_return));
+ if (array_init(IMAPG(quota_return)) == FAILURE) {
+ php_error(E_WARNING, "Unable to allocate array memory");
+ FREE_ZVAL(IMAPG(quota_return));
+ RETURN_FALSE;
+ }
+
/* set the callback for the GET_QUOTA function */
mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota);
if(!imap_getquota(imap_le_struct->imap_stream, Z_STRVAL_PP(qroot))) {
@@ -1051,13 +1073,9 @@
RETURN_FALSE;
}
- if (array_init(return_value) == FAILURE) {
- php_error(E_WARNING, "Unable to allocate array memory");
- RETURN_FALSE;
- }
-
- add_assoc_long(return_value, "usage", IMAPG(quota_usage));
- add_assoc_long(return_value, "limit", IMAPG(quota_limit));
+ *return_value = *IMAPG(quota_return);
+ FREE_ZVAL(IMAPG(quota_return));
+
}
/* }}} */
@@ -2200,7 +2218,7 @@
/* author: Andrew Skalski <[EMAIL PROTECTED]> */
zval **arg;
const unsigned char *in, *inp, *endp;
- unsigned char *out, *outp;
+ unsigned char *out, *outp, c;
int inlen, outlen;
enum {
ST_NORMAL, /* printable text */
@@ -2302,13 +2320,15 @@
break;
case ST_DECODE1:
outp[1] = UNB64(*inp);
- *outp++ |= outp[1] >> 4;
+ c = outp[1] >> 4;
+ *outp++ |= c;
*outp <<= 4;
state = ST_DECODE2;
break;
case ST_DECODE2:
outp[1] = UNB64(*inp);
- *outp++ |= outp[1] >> 2;
+ c = outp[1] >> 2;
+ *outp++ |= c;
*outp <<= 6;
state = ST_DECODE3;
break;
@@ -2341,7 +2361,7 @@
/* author: Andrew Skalski <[EMAIL PROTECTED]> */
zval **arg;
const unsigned char *in, *inp, *endp;
- unsigned char *out, *outp;
+ unsigned char *out, *outp, c;
int inlen, outlen;
enum {
ST_NORMAL, /* printable text */
@@ -2412,7 +2432,8 @@
} else if (inp == endp || !SPECIAL(*inp)) {
/* flush overflow and terminate region */
if (state != ST_ENCODE0) {
- *outp++ = B64(*outp);
+ c = B64(*outp);
+ *outp++ = c;
}
*outp++ = '-';
state = ST_NORMAL;
@@ -2420,17 +2441,20 @@
/* encode input character */
switch (state) {
case ST_ENCODE0:
- *outp++ = B64(*inp >> 2);
+ c = B64(*outp | *inp >> 4);
+ *outp = c;
*outp = *inp++ << 4;
state = ST_ENCODE1;
break;
case ST_ENCODE1:
- *outp++ = B64(*outp | *inp >> 4);
+ c = B64(*outp | *inp >> 4);
+ *outp++ = c;
*outp = *inp++ << 2;
state = ST_ENCODE2;
break;
case ST_ENCODE2:
- *outp++ = B64(*outp | *inp >> 6);
+ c = B64(*outp | *inp >> 6);
+ *outp++ = c;
*outp++ = B64(*inp++);
state = ST_ENCODE0;
case ST_NORMAL:
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php