]> granicus.if.org Git - php/commitdiff
Feature Request #21748. Added function ftp_chmod().
authorSara Golemon <pollita@php.net>
Mon, 27 Jan 2003 02:54:12 +0000 (02:54 +0000)
committerSara Golemon <pollita@php.net>
Mon, 27 Jan 2003 02:54:12 +0000 (02:54 +0000)
ext/ftp/ftp.c
ext/ftp/ftp.h
ext/ftp/php_ftp.c
ext/ftp/php_ftp.h

index ef27ed0df275d649af8a6aa83a01780929ffc080..96e2a7f299dae1a10306c6a3d9d68685d7a2b2df 100644 (file)
@@ -535,6 +535,31 @@ ftp_rmdir(ftpbuf_t *ftp, const char *dir)
 }
 /* }}} */
 
+/* {{{ 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**
index dd6be94c8bd58993aa39180204f4da41c3c79f76..35bf12bffb49b2b80b96c440e6331f8933e525c2 100644 (file)
@@ -135,6 +135,9 @@ char*               ftp_mkdir(ftpbuf_t *ftp, const char *dir);
 /* 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)
index 3b218385fd7f84816da08bdbd3aedf0d1db517db..b8fc548b1e629e7b914731980affae4640b6aaf8 100644 (file)
@@ -58,6 +58,7 @@ function_entry php_ftp_functions[] = {
        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)
@@ -380,6 +381,30 @@ PHP_FUNCTION(ftp_rmdir)
 }
 /* }}} */
 
+/* {{{ 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)
index 10c87b7b0ae7d6425592b7e3636f0f5bc6cc97e8..f203987b23d1b8f9c647c9bdac2d3efa60da56d1 100644 (file)
@@ -45,6 +45,7 @@ PHP_FUNCTION(ftp_chdir);
 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);