@@ -682,11 +682,12 @@ PHP_FUNCTION(ftp_get)
682682 ftpbuf_t * ftp ;
683683 ftptype_t xtype ;
684684 php_stream * outstream ;
685- char * local , * remote ;
686- size_t local_len , remote_len ;
685+ zend_string * local ;
686+ char * remote ;
687+ size_t remote_len ;
687688 zend_long mode = FTPTYPE_IMAGE , resumepos = 0 ;
688689
689- if (zend_parse_parameters (ZEND_NUM_ARGS (), "Opp |ll" , & z_ftp , php_ftp_ce , & local , & local_len , & remote , & remote_len , & mode , & resumepos ) == FAILURE ) {
690+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "OPp |ll" , & z_ftp , php_ftp_ce , & local , & remote , & remote_len , & mode , & resumepos ) == FAILURE ) {
690691 RETURN_THROWS ();
691692 }
692693 GET_FTPBUF (ftp , z_ftp );
@@ -702,9 +703,9 @@ PHP_FUNCTION(ftp_get)
702703#endif
703704
704705 if (ftp -> autoseek && resumepos ) {
705- outstream = php_stream_open_wrapper (local , mode == FTPTYPE_ASCII ? "rt+" : "rb+" , REPORT_ERRORS , NULL );
706+ outstream = php_stream_open_wrapper (ZSTR_VAL ( local ) , mode == FTPTYPE_ASCII ? "rt+" : "rb+" , REPORT_ERRORS , NULL );
706707 if (outstream == NULL ) {
707- outstream = php_stream_open_wrapper (local , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
708+ outstream = php_stream_open_wrapper (ZSTR_VAL ( local ) , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
708709 }
709710 if (outstream != NULL ) {
710711 /* if autoresume is wanted seek to end */
@@ -716,17 +717,17 @@ PHP_FUNCTION(ftp_get)
716717 }
717718 }
718719 } else {
719- outstream = php_stream_open_wrapper (local , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
720+ outstream = php_stream_open_wrapper (ZSTR_VAL ( local ) , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
720721 }
721722
722723 if (outstream == NULL ) {
723- php_error_docref (NULL , E_WARNING , "Error opening %s" , local );
724+ php_error_docref (NULL , E_WARNING , "Error opening %s" , ZSTR_VAL ( local ) );
724725 RETURN_FALSE ;
725726 }
726727
727728 if (!ftp_get (ftp , outstream , remote , remote_len , xtype , resumepos )) {
728729 php_stream_close (outstream );
729- VCWD_UNLINK (local );
730+ VCWD_UNLINK (ZSTR_VAL ( local ), ZSTR_LEN ( local ) );
730731 if (* ftp -> inbuf ) {
731732 php_error_docref (NULL , E_WARNING , "%s" , ftp -> inbuf );
732733 }
@@ -745,12 +746,13 @@ PHP_FUNCTION(ftp_nb_get)
745746 ftpbuf_t * ftp ;
746747 ftptype_t xtype ;
747748 php_stream * outstream ;
748- char * local , * remote ;
749- size_t local_len , remote_len ;
749+ zend_string * local ;
750+ char * remote ;
751+ size_t remote_len ;
750752 int ret ;
751753 zend_long mode = FTPTYPE_IMAGE , resumepos = 0 ;
752754
753- if (zend_parse_parameters (ZEND_NUM_ARGS (), "Oss |ll" , & z_ftp , php_ftp_ce , & local , & local_len , & remote , & remote_len , & mode , & resumepos ) == FAILURE ) {
755+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "OSs |ll" , & z_ftp , php_ftp_ce , & local , & remote , & remote_len , & mode , & resumepos ) == FAILURE ) {
754756 RETURN_THROWS ();
755757 }
756758 GET_FTPBUF (ftp , z_ftp );
@@ -764,9 +766,9 @@ PHP_FUNCTION(ftp_nb_get)
764766 mode = FTPTYPE_IMAGE ;
765767#endif
766768 if (ftp -> autoseek && resumepos ) {
767- outstream = php_stream_open_wrapper (local , mode == FTPTYPE_ASCII ? "rt+" : "rb+" , REPORT_ERRORS , NULL );
769+ outstream = php_stream_open_wrapper (ZSTR_VAL ( local ) , mode == FTPTYPE_ASCII ? "rt+" : "rb+" , REPORT_ERRORS , NULL );
768770 if (outstream == NULL ) {
769- outstream = php_stream_open_wrapper (local , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
771+ outstream = php_stream_open_wrapper (ZSTR_VAL ( local ) , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
770772 }
771773 if (outstream != NULL ) {
772774 /* if autoresume is wanted seek to end */
@@ -778,7 +780,7 @@ PHP_FUNCTION(ftp_nb_get)
778780 }
779781 }
780782 } else {
781- outstream = php_stream_open_wrapper (local , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
783+ outstream = php_stream_open_wrapper (ZSTR_VAL ( local ) , mode == FTPTYPE_ASCII ? "wt" : "wb" , REPORT_ERRORS , NULL );
782784 }
783785
784786 if (outstream == NULL ) {
@@ -793,7 +795,7 @@ PHP_FUNCTION(ftp_nb_get)
793795 if ((ret = ftp_nb_get (ftp , outstream , remote , remote_len , xtype , resumepos )) == PHP_FTP_FAILED ) {
794796 php_stream_close (outstream );
795797 ftp -> stream = NULL ;
796- VCWD_UNLINK (local );
798+ VCWD_UNLINK (ZSTR_VAL ( local ), ZSTR_LEN ( local ) );
797799 if (* ftp -> inbuf ) {
798800 php_error_docref (NULL , E_WARNING , "%s" , ftp -> inbuf );
799801 }
0 commit comments