]> granicus.if.org Git - php/commitdiff
@- added fflush() function. (Eric Huss)
authorThies C. Arntzen <thies@php.net>
Tue, 6 Jun 2000 12:16:44 +0000 (12:16 +0000)
committerThies C. Arntzen <thies@php.net>
Tue, 6 Jun 2000 12:16:44 +0000 (12:16 +0000)
# 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/basic_functions.c
ext/standard/file.c
ext/standard/file.h

index ee38b43c9d386497e2b005fd6d01fe2b05fde85a..f994b7054503d567e57fdb5be7950774fb218b4a 100644 (file)
@@ -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)
index b5df69359379179d9dbe02fc674d84dac3b09ee9..232b1ee048dd6d743c55c46d764476eba36fac8f 100644 (file)
@@ -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 */
index b2ff0f4f22af3f98ca868315618503c6ba3fb205..334e69af2b2073961c1a2edc2bca94bdbbb3bbe5 100644 (file)
@@ -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);