- CURLcode err = curl_formadd(&http_post_data[0], &http_post_data[1],
- CURLFORM_COPYNAME, Z_STRVAL_PP(name),
- CURLFORM_FILE, Z_STRVAL_PP(file),
- CURLFORM_CONTENTTYPE, Z_STRVAL_PP(type),
+ CURLcode err;
+ const char *path;
+ zval *file = http_zsep(IS_STRING, *file_ptr);
+ zval *type = http_zsep(IS_STRING, *type_ptr);
+ zval *name = http_zsep(IS_STRING, *name_ptr);
+
+ HTTP_CHECK_OPEN_BASEDIR(Z_STRVAL_P(file), curl_formfree(http_post_data[0]); return NULL);
+
+ /* this is blatant but should be sufficient for most cases */
+ if (strncasecmp(Z_STRVAL_P(file), "file://", lenof("file://"))) {
+ path = Z_STRVAL_P(file);
+ } else {
+ path = Z_STRVAL_P(file) + lenof("file://");
+ }
+
+ err = curl_formadd(&http_post_data[0], &http_post_data[1],
+ CURLFORM_COPYNAME, Z_STRVAL_P(name),
+ CURLFORM_FILE, path,
+ CURLFORM_CONTENTTYPE, Z_STRVAL_P(type),