}
/* }}} */
+/* {{{ 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
*/
char**
/* 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
* free the array elements)
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)
}
/* }}} */
+/* {{{ 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);
+}
+/* }}} */
+
/* {{{ proto array ftp_nlist(resource stream, string directory)
Returns an array of filenames in the given directory */
PHP_FUNCTION(ftp_nlist)