fix build with xcode clang
[m6w6/ext-http] / php_http_message_body.c
index fd5b76293b9384b279089a9301d1084467cc5526..f48dbd66f7bdb9218a39c0251522b4b389be93a2 100644 (file)
@@ -202,7 +202,10 @@ PHP_HTTP_API size_t php_http_message_body_append(php_http_message_body_t *body,
        php_stream *s;
        TSRMLS_FETCH_FROM_CTX(body->ts);
 
-       s = php_http_message_body_stream(body);
+       if (!(s = php_http_message_body_stream(body))) {
+               return -1;
+       }
+
        php_stream_seek(s, 0, SEEK_END);
        return php_stream_write(s, buf, len);
 }
@@ -660,6 +663,8 @@ PHP_METHOD(HttpMessageBody, unserialize)
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_toStream, 0, 0, 1)
        ZEND_ARG_INFO(0, stream)
+       ZEND_ARG_INFO(0, offset)
+       ZEND_ARG_INFO(0, maxlen)
 ZEND_END_ARG_INFO();
 PHP_METHOD(HttpMessageBody, toStream)
 {
@@ -674,13 +679,14 @@ PHP_METHOD(HttpMessageBody, toStream)
 
                php_stream_from_zval(stream, &zstream);
                php_http_message_body_to_stream(obj->body, stream, offset, forlen);
-               RETURN_TRUE;
+               RETURN_ZVAL(getThis(), 1, 0);
        }
-       RETURN_FALSE;
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_toCallback, 0, 0, 1)
        ZEND_ARG_INFO(0, callback)
+       ZEND_ARG_INFO(0, offset)
+       ZEND_ARG_INFO(0, maxlen)
 ZEND_END_ARG_INFO();
 PHP_METHOD(HttpMessageBody, toCallback)
 {
@@ -700,9 +706,8 @@ PHP_METHOD(HttpMessageBody, toCallback)
                zend_fcall_info_args_clear(&fcd.fci, 1);
 
                zval_ptr_dtor(&fcd.fcz);
-               RETURN_TRUE;
+               RETURN_ZVAL(getThis(), 1, 0);
        }
-       RETURN_FALSE;
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_getResource, 0, 0, 0)
@@ -719,6 +724,21 @@ PHP_METHOD(HttpMessageBody, getResource)
        }
 }
 
+ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_getBoundary, 0, 0, 0)
+ZEND_END_ARG_INFO();
+PHP_METHOD(HttpMessageBody, getBoundary)
+{
+       if (SUCCESS == zend_parse_parameters_none()) {
+               php_http_message_body_object_t * obj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+               PHP_HTTP_MESSAGE_BODY_OBJECT_INIT(obj);
+
+               if (obj->body->boundary) {
+                       RETURN_STRING(obj->body->boundary, 1);
+               }
+       }
+}
+
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_append, 0, 0, 1)
        ZEND_ARG_INFO(0, string)
 ZEND_END_ARG_INFO();
@@ -732,9 +752,11 @@ PHP_METHOD(HttpMessageBody, append)
 
                PHP_HTTP_MESSAGE_BODY_OBJECT_INIT(obj);
 
-               RETURN_LONG(php_http_message_body_append(obj->body, str, len));
+               if (len != php_http_message_body_append(obj->body, str, len)) {
+                       php_http_error(HE_WARNING, PHP_HTTP_E_MESSAGE_BODY, "Could not append to body");
+               }
+               RETURN_ZVAL(getThis(), 1, 0);
        }
-       RETURN_FALSE;
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_addForm, 0, 0, 0)
@@ -750,9 +772,9 @@ PHP_METHOD(HttpMessageBody, addForm)
 
                PHP_HTTP_MESSAGE_BODY_OBJECT_INIT(obj);
 
-               RETURN_BOOL(SUCCESS == php_http_message_body_add_form(obj->body, fields, files));
+               php_http_message_body_add_form(obj->body, fields, files);
+               RETURN_ZVAL(getThis(), 1, 0);
        }
-       RETURN_FALSE;
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_addPart, 0, 0, 1)
@@ -769,9 +791,8 @@ PHP_METHOD(HttpMessageBody, addPart)
                PHP_HTTP_MESSAGE_BODY_OBJECT_INIT(obj);
 
                php_http_message_body_add_part(obj->body, mobj->message);
-               RETURN_TRUE;
+               RETURN_ZVAL(getThis(), 1, 0);
        }
-       RETURN_FALSE;
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_etag, 0, 0, 0)
@@ -786,13 +807,14 @@ PHP_METHOD(HttpMessageBody, etag)
 
                if ((etag = php_http_message_body_etag(obj->body))) {
                        RETURN_STRING(etag, 0);
+               } else {
+                       RETURN_FALSE;
                }
        }
-       RETURN_FALSE;
 }
 
 ZEND_BEGIN_ARG_INFO_EX(ai_HttpMessageBody_stat, 0, 0, 0)
-       ZEND_ARG_INFO(0, what)
+       ZEND_ARG_INFO(0, field)
 ZEND_END_ARG_INFO();
 PHP_METHOD(HttpMessageBody, stat)
 {
@@ -829,16 +851,14 @@ PHP_METHOD(HttpMessageBody, stat)
                                                        break;
                                        }
                        } else {
-                               array_init(return_value);
-                               add_assoc_long_ex(return_value, ZEND_STRS("size"), sb->sb.st_size);
-                               add_assoc_long_ex(return_value, ZEND_STRS("atime"), sb->sb.st_atime);
-                               add_assoc_long_ex(return_value, ZEND_STRS("mtime"), sb->sb.st_mtime);
-                               add_assoc_long_ex(return_value, ZEND_STRS("ctime"), sb->sb.st_ctime);
-                               return;
+                               object_init(return_value);
+                               add_property_long_ex(return_value, ZEND_STRS("size"), sb->sb.st_size TSRMLS_CC);
+                               add_property_long_ex(return_value, ZEND_STRS("atime"), sb->sb.st_atime TSRMLS_CC);
+                               add_property_long_ex(return_value, ZEND_STRS("mtime"), sb->sb.st_mtime TSRMLS_CC);
+                               add_property_long_ex(return_value, ZEND_STRS("ctime"), sb->sb.st_ctime TSRMLS_CC);
                        }
                }
        }
-       RETURN_FALSE;
 }
 
 static zend_function_entry php_http_message_body_methods[] = {
@@ -850,6 +870,7 @@ static zend_function_entry php_http_message_body_methods[] = {
        PHP_ME(HttpMessageBody, toStream,     ai_HttpMessageBody_toStream,     ZEND_ACC_PUBLIC)
        PHP_ME(HttpMessageBody, toCallback,   ai_HttpMessageBody_toCallback,   ZEND_ACC_PUBLIC)
        PHP_ME(HttpMessageBody, getResource,  ai_HttpMessageBody_getResource,  ZEND_ACC_PUBLIC)
+       PHP_ME(HttpMessageBody, getBoundary,  ai_HttpMessageBody_getBoundary,  ZEND_ACC_PUBLIC)
        PHP_ME(HttpMessageBody, append,       ai_HttpMessageBody_append,       ZEND_ACC_PUBLIC)
        PHP_ME(HttpMessageBody, addForm,      ai_HttpMessageBody_addForm,      ZEND_ACC_PUBLIC)
        PHP_ME(HttpMessageBody, addPart,      ai_HttpMessageBody_addPart,      ZEND_ACC_PUBLIC)