diff options
author | Thies C. Arntzen <thies@php.net> | 2000-06-06 12:16:44 +0000 |
---|---|---|
committer | Thies C. Arntzen <thies@php.net> | 2000-06-06 12:16:44 +0000 |
commit | 10eb67a3aac6cd78d69ed98a6fc1e1380df652ff (patch) | |
tree | 3ea1d68be97a006ffbc7466109dfd75c551651cf | |
parent | 8ed100e5c56cfeb21d278f285a697bce8722064f (diff) | |
download | php-git-10eb67a3aac6cd78d69ed98a6fc1e1380df652ff.tar.gz |
@- added fflush() function. (Eric Huss)
# the socket fsync() might not work on Win32.
#
# i'm not sure if we need any code for flushing sockets as they are
# currently alway written via write().
-rw-r--r-- | ext/standard/basic_functions.c | 1 | ||||
-rw-r--r-- | ext/standard/file.c | 37 | ||||
-rw-r--r-- | ext/standard/file.h | 1 |
3 files changed, 39 insertions, 0 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index ee38b43c9d..f994b70545 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -361,6 +361,7 @@ function_entry basic_functions[] = { PHP_FE(fstat, NULL) PHP_FE(fseek, NULL) PHP_FE(ftell, NULL) + PHP_FE(fflush, NULL) PHP_FE(fwrite, NULL) PHP_FALIAS(fputs, fwrite, NULL) PHP_FE(mkdir, NULL) diff --git a/ext/standard/file.c b/ext/standard/file.c index b5df693593..232b1ee048 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -1117,6 +1117,43 @@ PHP_FUNCTION(fwrite) } /* }}} */ +/* {{{ proto int fflush(int fp) + flushes output */ + +PHP_FUNCTION(fflush) +{ + pval **arg1; + int ret,type; + int issock=0; + int socketd=0; + void *what; + + if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { + WRONG_PARAM_COUNT; + } + + what = zend_fetch_resource(arg1,-1,"File-Handle",&type,3,le_fopen,le_popen,le_socket); + ZEND_VERIFY_RESOURCE(what); + + if (type == le_socket) { + issock=1; + socketd=*(int*)what; + } + + if (issock){ + ret = fsync(socketd); + } else { + ret = fflush((FILE*)what); + } + + if (ret) { + RETURN_FALSE; + } else { + RETURN_TRUE; + } +} + +/* }}} */ /* {{{ proto int set_file_buffer(int fp, int buffer) Set file write buffer */ diff --git a/ext/standard/file.h b/ext/standard/file.h index b2ff0f4f22..334e69af2b 100644 --- a/ext/standard/file.h +++ b/ext/standard/file.h @@ -49,6 +49,7 @@ PHP_FUNCTION(fgets); PHP_FUNCTION(fgetss); PHP_FUNCTION(fgetcsv); PHP_FUNCTION(fwrite); +PHP_FUNCTION(fflush); PHP_FUNCTION(rewind); PHP_FUNCTION(ftell); PHP_FUNCTION(fseek); |