diff options
author | Anatol Belski <ab@php.net> | 2013-03-23 22:43:58 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2013-03-23 22:43:58 +0100 |
commit | ec26141f928d380cf5a3c3b9b2c4d858b9a39254 (patch) | |
tree | 545407d3ce0edf6f728efafa1b3d1bd4931e4c8b /sapi/cli/php_cli_server.c | |
parent | 2b622261888f2b027a74dbf5aed1225f73617dc8 (diff) | |
parent | 3af489683753ab31d7397812989e82f6a424d244 (diff) | |
download | php-git-ec26141f928d380cf5a3c3b9b2c4d858b9a39254.tar.gz |
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
- fix x64 issues on windows with the various time types (overflow, signed and unsigned bits ops, etc.) causing crashes on start, error or log, must be done in win32/time.c for some of these functions too
Diffstat (limited to 'sapi/cli/php_cli_server.c')
-rw-r--r-- | sapi/cli/php_cli_server.c | 59 |
1 files changed, 43 insertions, 16 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index a2b85d47b0..94ef883559 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -24,11 +24,12 @@ #include <assert.h> #ifdef PHP_WIN32 -#include <process.h> -#include <io.h> -#include "win32/time.h" -#include "win32/signal.h" -#include "win32/php_registry.h" +# include <process.h> +# include <io.h> +# include "win32/time.h" +# include "win32/signal.h" +# include "win32/php_registry.h" +# include <sys/timeb.h> #else # include "php_config.h" #endif @@ -296,6 +297,34 @@ static const char php_cli_server_css[] = "<style>\n" \ "</style>\n"; /* }}} */ +#ifdef PHP_WIN32 +int php_cli_server_get_system_time(char *buf) { + struct _timeb system_time; + errno_t err; + + if (buf == NULL) { + return -1; + } + + _ftime(&system_time); + err = ctime_s(buf, 52, &(system_time.time) ); + if (err) { + return -1; + } + return 0; +} +#else +int php_cli_server_get_system_time(char *buf) { + struct timeval tv; + struct tm tm; + + gettimeofday(&tv, NULL); + php_localtime_r(&tv.tv_sec, &tm); + php_asctime_r(&tm, buf); + return 0; +} +#endif + static void char_ptr_dtor_p(char **p) /* {{{ */ { pefree(*p, 1); @@ -640,13 +669,11 @@ static void sapi_cli_server_register_variables(zval *track_vars_array TSRMLS_DC) static void sapi_cli_server_log_message(char *msg TSRMLS_DC) /* {{{ */ { - struct timeval tv; - struct tm tm; char buf[52]; - gettimeofday(&tv, NULL); - php_localtime_r(&tv.tv_sec, &tm); - php_asctime_r(&tm, buf); - { + + if (php_cli_server_get_system_time(buf) != 0) { + memmove(buf, "unknown time, can't be fetched", sizeof("unknown time, can't be fetched")); + } else { size_t l = strlen(buf); if (l > 0) { buf[l - 1] = '\0'; @@ -2402,12 +2429,12 @@ int do_cli_server(int argc, char **argv TSRMLS_DC) /* {{{ */ sapi_module.phpinfo_as_text = 0; { - struct timeval tv; - struct tm tm; char buf[52]; - gettimeofday(&tv, NULL); - php_localtime_r(&tv.tv_sec, &tm); - php_asctime_r(&tm, buf); + + if (php_cli_server_get_system_time(buf) != 0) { + memmove(buf, "unknown time, can't be fetched", sizeof("unknown time, can't be fetched")); + } + printf("PHP %s Development Server started at %s" "Listening on http://%s\n" "Document root is %s\n" |