Re: cvs: php4 /sapi/cgi cgi_main.c config.m4

From: Date: Sat, 19 May 2001 05:35:57 +0000
Subject: Re: cvs: php4 /sapi/cgi cgi_main.c config.m4
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-5852@lists.php.net to get a copy of this message
Sascha Schumann wrote:
sas Sat May 19 07:30:33 2001 EDT
  Modified files:                  /php4/sapi/cgi	cgi_main.c config.m4   Log:
Use write(2), if we can successfully write to stdout. Index: php4/sapi/cgi/cgi_main.c diff -u php4/sapi/cgi/cgi_main.c:1.109 php4/sapi/cgi/cgi_main.c:1.110 --- php4/sapi/cgi/cgi_main.c:1.109 Fri May 18 07:40:02 2001 +++ php4/sapi/cgi/cgi_main.c Sat May 19 07:30:32 2001 @@ -87,6 +87,26 @@ return 0; } +#ifndef STDOUT_FILENO +#define STDOUT_FILENO 1 +#endif +
Unless I'm missing something, on windows this should be GetStdHandle(STD_INPUT_HANDLE);???
+static inline size_t sapi_cgibin_single_write(const char *str, uint str_length) +{ +#ifdef PHP_WRITE_STDOUT + long ret; + + ret = write(STDOUT_FILENO, str, str_length); + if (ret <= 0) return 0; + return ret; +#else + size_t ret; + + ret = fwrite(str, 1, MIN(str_length, 16384), stdout); + return ret; +#endif +} + static int sapi_cgibin_ub_write(const char *str, uint str_length) { const char *ptr = str; @@ -95,7 +115,7 @@ while (remaining > 0) { - ret = fwrite(ptr, 1, MIN(remaining, 16384), stdout); + ret = sapi_cgibin_single_write(ptr, remaining); if (!ret) { php_handle_aborted_connection(); } Index: php4/sapi/cgi/config.m4 diff -u php4/sapi/cgi/config.m4:1.9 php4/sapi/cgi/config.m4:1.10 --- php4/sapi/cgi/config.m4:1.9 Mon Apr 9 08:47:19 2001 +++ php4/sapi/cgi/config.m4 Sat May 19 07:30:33 2001 @@ -1,5 +1,35 @@ +AC_DEFUN(PHP_TEST_WRITE_STDOUT,[ + AC_CACHE_CHECK(whether writing to stdout works,ac_cv_write_stdout,[
+    AC_TRY_RUN([
+#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#define TEXT "This is the test message -- "
+        +main()
+{ + int n; + + n = write(1, TEXT, sizeof(TEXT)-1); + return (!(n == sizeof(TEXT)-1)); +}
+    ],[
+      ac_cv_write_stdout=yes
+    ],[
+      ac_cv_write_stdout=no
+    ],[
+      ac_cv_write_stdout=no
+    ])
+ ]) + if test "$ac_cv_write_stdout" = "yes"; then
+    AC_DEFINE(PHP_WRITE_STDOUT, 1, [whether write(2) works])
+ fi +]) +
On what systems is write() not present? -Sterling

« previous php.cvs (#5852) next »