From 10eb67a3aac6cd78d69ed98a6fc1e1380df652ff Mon Sep 17 00:00:00 2001 From: "Thies C. Arntzen" Date: Tue, 6 Jun 2000 12:16:44 +0000 Subject: @- 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(). --- ext/standard/file.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'ext/standard/file.c') 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 @@ -1116,6 +1116,43 @@ PHP_FUNCTION(fwrite) RETURN_LONG(ret); } +/* }}} */ +/* {{{ 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 */ -- cgit v1.2.1