]> granicus.if.org Git - php/commitdiff
int/long change.
authorIlia Alshanetsky <iliaa@php.net>
Sat, 22 Feb 2003 20:33:11 +0000 (20:33 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sat, 22 Feb 2003 20:33:11 +0000 (20:33 +0000)
ext/standard/basic_functions.c
ext/standard/file.c
ext/standard/file.h
ext/standard/html.c

index 31c7f54e07e94a171e1d763312617d76caf10952..4ff5f555a7a55b99820ce0debbe4b45528d21af5 100644 (file)
@@ -670,6 +670,7 @@ function_entry basic_functions[] = {
        PHP_STATIC_FE("tmpfile",                php_if_tmpfile,                                                 NULL)
        PHP_FE(file,                                                                                                                    NULL)
        PHP_FE(file_get_contents,                                                                                               NULL)
+       PHP_FE(file_write_content,                                                                                              NULL)
        PHP_FE(stream_select,                                     first_through_third_args_force_ref)
        PHP_FE(stream_context_create,                                                                                   NULL)
        PHP_FE(stream_context_set_params,                                                                               NULL)
index fa7649b45c61504401a30f60bf061fe61ad26b73..3aad41ee19b1ed4a1c0c96a89ab0040759a54f47 100644 (file)
@@ -408,6 +408,67 @@ PHP_FUNCTION(get_meta_tags)
 
 /* }}} */
 
+/* {{{ proto int file_write_content(string filename, mixed content [, char mode [, bool use_include_path]])
+   Write a string to a file. */
+PHP_FUNCTION(file_write_content)
+{
+       zval *content;
+       char *filename, *mode;
+       int filename_len, mode_len = 0;
+       zend_bool use_include_path = 0;
+       size_t written;
+       php_stream *stream;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|sb", &filename, &filename_len, &content, &mode, &mode_len, &use_include_path) == FAILURE) {
+               RETURN_FALSE;
+       }
+
+       if (!(stream = php_stream_open_wrapper(filename, (mode_len ? mode : "wb"), (use_include_path ? USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL))) {
+               RETURN_FALSE;
+       }
+
+       /* try to set an exclusive lock on the file to prevent access to the file while the write operation
+        * is happening.
+        */
+       php_stream_set_option(stream, PHP_STREAM_OPTION_LOCKING, F_SETLKW, (void *) F_WRLCK TSRMLS_CC);
+
+       if (Z_TYPE_P(content) == IS_ARRAY) {
+               HashPosition pos;
+               zval **tmp;
+               size_t cur_write; 
+               
+               written = 0;
+               zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(content), &pos);
+                       
+               while (zend_hash_get_current_data_ex(Z_ARRVAL_P(content), (void **) &tmp, &pos) == SUCCESS) {
+                       SEPARATE_ZVAL(tmp);
+                       convert_to_string(*tmp);
+                       
+                       if ((cur_write = php_stream_write(stream, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp))) < 0) {
+                               RETVAL_FALSE;
+                               goto done;
+                       }
+                       written += cur_write;
+                       
+                       zend_hash_move_forward_ex(Z_ARRVAL_P(content), &pos);
+               }
+               RETVAL_LONG(written);
+       } else {
+               SEPARATE_ZVAL(&content);
+               convert_to_string(content);
+               if ((written = php_stream_write(stream, Z_STRVAL_P(content), Z_STRLEN_P(content))) < 0) {
+                       RETVAL_FALSE;
+               } else {
+                       RETVAL_LONG(written);
+               }
+               zval_ptr_dtor(&content);
+       }
+
+done:
+       php_stream_close(stream);
+}
+/* }}} */
+
 /* {{{ proto string file_get_contents(string filename [, bool use_include_path])
    Read the entire file into a string */
 PHP_FUNCTION(file_get_contents)
index ffd26693153db4fd398732f1b5d80893e841f555..0771e731d68c57afadab00aec0c4a5c16a2f6d92 100644 (file)
@@ -54,6 +54,7 @@ PHP_FUNCTION(unlink);
 PHP_FUNCTION(copy);
 PHP_FUNCTION(file);
 PHP_FUNCTION(file_get_contents);
+PHP_FUNCTION(file_write_content);
 PHP_FUNCTION(set_socket_blocking); /* deprecated */
 PHP_FUNCTION(stream_set_blocking);
 PHP_FUNCTION(stream_select);
index 2133ed8b7152423fc797ce51be0e68beb8e77c4d..be06b8dbeff47a151295a8e6ea517b5d137273c1 100644 (file)
@@ -831,11 +831,11 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all)
 {
        char *str, *hint_charset = NULL;
        int str_len, hint_charset_len = 0;
-       int len, quote_style = ENT_COMPAT;
+       int len;
+       long quote_style = ENT_COMPAT;
        char *replaced;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls", &str, &str_len,
-                                                         &quote_style, &hint_charset, &hint_charset_len) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls", &str, &str_len, &quote_style, &hint_charset, &hint_charset_len) == FAILURE) {
                return;
        }