Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Apr 2004 02:21:17 +0800 (CST)
From:      Sunpoet Po-Chuan Hsieh <sunpoet@sunpoet.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/65403: [lang/php4] Fix php4 build with curl 7.11.1 
Message-ID:  <20040410182117.7BC5017073@IRIS.sunpoet.net>
Resent-Message-ID: <200404101830.i3AIUJtk058476@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         65403
>Category:       ports
>Synopsis:       [lang/php4] Fix php4 build with curl 7.11.1
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Apr 10 11:30:19 PDT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Sunpoet Po-Chuan Hsieh
>Release:        FreeBSD 5.2-CURRENT i386
>Organization:
SUNPOET.net
>Environment:
System: FreeBSD IRIS.sunpoet.net 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Tue Mar 23 18:25:35 CST 2004 sunpoet@IRIS.sunpoet.net:/usr/src/sys/i386/compile/sunpoet i386

	
>Description:

After upgrading curl from 7.10.0 to 7.11.1, building php4 failed for two changes:
1. HttpPost -> curl_httppost
2. CURLOPT_PASSWDFUNCTION is defined as 0 (same as CURLOPT_MUTE)
Compilation passed after patching ext/curl/curl.c.

Note: this patch works for curl 7.11.1 only.

	
>How-To-Repeat:

% pkg_info -Ix curl
curl-7.11.1         Non-interactive tool to get files from FTP, GOPHER, HTTP(S)
% cd /usr/ports/lang/php4
% make
===>  Building for php4-4.3.5_7
/bin/sh /usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/libtool --silent --preserve-dup-deps --mode=compile gcc  -Iext/curl/ -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/ -DPHP_ATOM_INC -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/include -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/main -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5 -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/Zend -I/usr/local/include -I/usr/local/include/libxml2 -I/usr/local/include/freetype2 -I/usr/local/include/c-client -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/mbstring/mbregex -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/mbstring/libmbfl -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/mbstring/libmbfl/mbfl -I/usr/local/include/mysql  -I/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/TSRM  -O2 -pipe -s -march=pentium4  -prefer-pic -c /usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c -o ext
 /curl/curl.lo
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c: In function `curl_free_post':
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:568: warning: passing arg 1 of `curl_formfree' from incompatible pointer type
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c: In function `alloc_curl_handle':
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:608: error: invalid application of `sizeof' to an incomplete type
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c: In function `zif_curl_setopt':
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:845: error: duplicate case value
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:700: error: previously used here
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:890: warning: passing arg 1 of `curl_formadd' from incompatible pointer type
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:890: warning: passing arg 2 of `curl_formadd' from incompatible pointer type
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:898: warning: passing arg 1 of `curl_formadd' from incompatible pointer type
/usr/ports/works/usr/ports/lang/php4/work/php-4.3.5/ext/curl/curl.c:898: warning: passing arg 2 of `curl_formadd' from incompatible pointer type
*** Error code 1

Stop in /usr/ports/works/usr/ports/lang/php4/work/php-4.3.5.
*** Error code 1

Stop in /usr/ports/lang/php4.
*** Error code 1

Stop in /usr/ports/lang/php4.

	
>Fix:

% diff -u ext/curl/curl.c.orig ext/curl/curl.c
--- ext/curl/curl.c.orig	Sat Mar 13 01:43:17 2004
+++ ext/curl/curl.c	Sun Apr 11 01:51:38 2004
@@ -565,7 +565,7 @@
  */
 static void curl_free_post(void **post)
 {
-	curl_formfree((struct HttpPost *) *post);
+	curl_formfree((struct curl_httppost *) *post);
 }
 /* }}} */
 
@@ -605,7 +605,7 @@
 	                (void(*)(void *)) curl_free_string, 0);
 	zend_llist_init(&(*ch)->to_free.slist, sizeof(struct curl_slist),
 	                (void(*)(void *)) curl_free_slist, 0);
-	zend_llist_init(&(*ch)->to_free.post, sizeof(struct HttpPost),
+	zend_llist_init(&(*ch)->to_free.post, sizeof(struct curl_httppost),
 	                (void(*)(void *)) curl_free_post, 0);
 }
 /* }}} */
@@ -842,6 +842,7 @@
 			ch->handlers->write_header->func   = *zvalue;
 			ch->handlers->write_header->method = PHP_CURL_USER;
 			break;
+/*
 		case CURLOPT_PASSWDFUNCTION:
 			if (ch->handlers->passwd) {
 				zval_ptr_dtor(&ch->handlers->passwd);
@@ -851,12 +852,13 @@
 			error = curl_easy_setopt(ch->cp, CURLOPT_PASSWDFUNCTION, curl_passwd);
 			error = curl_easy_setopt(ch->cp, CURLOPT_PASSWDDATA,     (void *) ch);
 			break;
+*/
 		case CURLOPT_POSTFIELDS:
 			if (Z_TYPE_PP(zvalue) == IS_ARRAY || Z_TYPE_PP(zvalue) == IS_OBJECT) {
 				zval            **current;
 				HashTable        *postfields;
-				struct HttpPost  *first = NULL;
-				struct HttpPost  *last  = NULL;
+				struct curl_httppost  *first = NULL;
+				struct curl_httppost  *last  = NULL;
 				char             *postval;
 				char             *string_key = NULL;
 				ulong             num_key;

	
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040410182117.7BC5017073>