pollita Sun Jan 26 21:54:12 2003 EDT Modified files: /php4/ext/ftp ftp.c ftp.h php_ftp.c php_ftp.h Log: Feature Request #21748. Added function ftp_chmod(). Index: php4/ext/ftp/ftp.c diff -u php4/ext/ftp/ftp.c:1.73 php4/ext/ftp/ftp.c:1.74 --- php4/ext/ftp/ftp.c:1.73 Tue Jan 7 08:02:43 2003 +++ php4/ext/ftp/ftp.c Sun Jan 26 21:54:12 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ftp.c,v 1.73 2003/01/07 13:02:43 iliaa Exp $ */ +/* $Id: ftp.c,v 1.74 2003/01/27 02:54:12 pollita Exp $ */ #include "php.h" @@ -534,6 +534,31 @@ return 1; } /* }}} */ + +/* {{{ ftp_chmod + */ +int +ftp_chmod(ftpbuf_t *ftp, const int mode, const char *filename) +{ + char buffer[1024]; + + if (ftp == NULL) { + return 0; + } + + sprintf(buffer, "CHMOD %o %s", mode, filename); + + if (!ftp_putcmd(ftp, "SITE", buffer)) { + return 0; + } + + if (!ftp_getresp(ftp) || ftp->resp != 200) { + return 0; + } + return 1; +} +/* }}} */ + /* {{{ ftp_nlist */ Index: php4/ext/ftp/ftp.h diff -u php4/ext/ftp/ftp.h:1.33 php4/ext/ftp/ftp.h:1.34 --- php4/ext/ftp/ftp.h:1.33 Tue Jan 7 08:02:43 2003 +++ php4/ext/ftp/ftp.h Sun Jan 26 21:54:12 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ftp.h,v 1.33 2003/01/07 13:02:43 iliaa Exp $ */ +/* $Id: ftp.h,v 1.34 2003/01/27 02:54:12 pollita Exp $ */ #ifndef FTP_H #define FTP_H @@ -134,6 +134,9 @@ /* removes a directory, return true on success, false on error */ int ftp_rmdir(ftpbuf_t *ftp, const char *dir); + +/* Set permissions on a file */ +int ftp_chmod(ftpbuf_t *ftp, const int mode, const char *filename); /* returns a NULL-terminated array of filenames in the given path * or NULL on error. the return array must be freed (but don't Index: php4/ext/ftp/php_ftp.c diff -u php4/ext/ftp/php_ftp.c:1.79 php4/ext/ftp/php_ftp.c:1.80 --- php4/ext/ftp/php_ftp.c:1.79 Tue Jan 7 08:02:43 2003 +++ php4/ext/ftp/php_ftp.c Sun Jan 26 21:54:12 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ftp.c,v 1.79 2003/01/07 13:02:43 iliaa Exp $ */ +/* $Id: php_ftp.c,v 1.80 2003/01/27 02:54:12 pollita Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -58,6 +58,7 @@ PHP_FE(ftp_exec, NULL) PHP_FE(ftp_mkdir, NULL) PHP_FE(ftp_rmdir, NULL) + PHP_FE(ftp_chmod, NULL) PHP_FE(ftp_nlist, NULL) PHP_FE(ftp_rawlist, NULL) PHP_FE(ftp_systype, NULL) @@ -377,6 +378,30 @@ } RETURN_TRUE; +} +/* }}} */ + +/* {{{ proto int ftp_chmod(resource stream, int mode, string filename) + Sets permissions on a file */ +PHP_FUNCTION(ftp_chmod) +{ + zval *z_ftp; + ftpbuf_t *ftp; + char *filename; + int mode, filename_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &z_ftp, &mode, +&filename, &filename_len) == FAILURE) { + RETURN_FALSE; + } + + ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name, le_ftpbuf); + + if (!ftp_chmod(ftp, mode, filename)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ftp->inbuf); + RETURN_FALSE; + } + + RETURN_LONG(mode); } /* }}} */ Index: php4/ext/ftp/php_ftp.h diff -u php4/ext/ftp/php_ftp.h:1.22 php4/ext/ftp/php_ftp.h:1.23 --- php4/ext/ftp/php_ftp.h:1.22 Tue Dec 31 11:06:38 2002 +++ php4/ext/ftp/php_ftp.h Sun Jan 26 21:54:12 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ftp.h,v 1.22 2002/12/31 16:06:38 sebastian Exp $ */ +/* $Id: php_ftp.h,v 1.23 2003/01/27 02:54:12 pollita Exp $ */ #ifndef _INCLUDED_FTP_H #define _INCLUDED_FTP_H @@ -45,6 +45,7 @@ PHP_FUNCTION(ftp_exec); PHP_FUNCTION(ftp_mkdir); PHP_FUNCTION(ftp_rmdir); +PHP_FUNCTION(ftp_chmod); PHP_FUNCTION(ftp_nlist); PHP_FUNCTION(ftp_rawlist); PHP_FUNCTION(ftp_systype);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php