summaryrefslogtreecommitdiff
path: root/sapi/apache2handler/sapi_apache2.c
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2015-11-08 16:35:49 +0100
committerAnatol Belski <ab@php.net>2016-01-11 21:36:55 +0100
commitf301a0b23c8f1170d0f635d6fea8f613a184a23f (patch)
tree5566e1c59aad2c0bb65112d05bf5f3f280512e59 /sapi/apache2handler/sapi_apache2.c
parent3217c033a511bb8db1948620b3a1bade32b73b59 (diff)
downloadphp-git-f301a0b23c8f1170d0f635d6fea8f613a184a23f.tar.gz
Simplify code per Anatol.
Diffstat (limited to 'sapi/apache2handler/sapi_apache2.c')
-rw-r--r--sapi/apache2handler/sapi_apache2.c47
1 files changed, 8 insertions, 39 deletions
diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c
index d25fe3f265..6fa2521c38 100644
--- a/sapi/apache2handler/sapi_apache2.c
+++ b/sapi/apache2handler/sapi_apache2.c
@@ -88,44 +88,6 @@ php_apache_sapi_ub_write(const char *str, uint str_length TSRMLS_DC)
return str_length; /* we always consume all the data passed to us. */
}
-/* Code shamelessly nicked from timelib. This should probably be in a common
- * header eventually. */
-#if defined(_MSC_VER)
-# define strtoll(s, f, b) _atoi64(s)
-#elif !defined(HAVE_STRTOLL)
-# if defined(HAVE_ATOLL)
-# define strtoll(s, f, b) atoll(s)
-# else
-# define strtoll(s, f, b) strtol(s, f, b)
-# endif
-#endif
-
-static apr_off_t
-php_apache_sapi_header_content_length(const char *val)
-{
-#if defined(PHP_WIN32) && defined(APR_HAS_LARGE_FILES)
- return (apr_off_t) _strtoui64(val, (char **) NULL, 10);
-#else
- /* Although apr_off_t started life as a simpler typedef for off_t, APR has
- * long had the ability to use off64_t on platforms that support it, even
- * if the platform itself is 32 bit. We need to check for the 64 bit case
- * to ensure that we don't try to convert to a 32 bit integer
- * unconditionally and therefore lose the ability to set a content length
- * over 2G. */
- if (sizeof(apr_off_t) >= 8) {
- /* We're going to assume that long long is always 64 bits. If it's
- * smaller, we're not doing any worse than we would have before bug
- * #70879 was fixed anyway, since we'll just truncate to 32 bits. */
- return (apr_off_t) strtoll(val, (char **) NULL, 10);
- }
-
- /* There's no real guarantee that sizeof(off_t) >= sizeof(long) in the
- * POSIX standard, but we've done this for years and nobody's complained
- * yet, so I think we'll consider this safe. */
- return (apr_off_t) strtol(val, (char **) NULL, 10);
-#endif
-}
-
static int
php_apache_sapi_header_handler(sapi_header_struct *sapi_header, sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC)
{
@@ -164,7 +126,14 @@ php_apache_sapi_header_handler(sapi_header_struct *sapi_header, sapi_header_op_e
}
ctx->content_type = estrdup(val);
} else if (!strcasecmp(sapi_header->header, "content-length")) {
- apr_off_t clen = php_apache_sapi_header_content_length(val);
+ apr_off_t clen = 0;
+
+ if (APR_SUCCESS != apr_strtoff(&clen, val, (char **) NULL, 10)) {
+ /* We'll fall back to strtol, since that's what we used to
+ * do anyway. */
+ clen = (apr_off_t) strtol(val, (char **) NULL, 10);
+ }
+
ap_set_content_length(ctx->r, clen);
} else if (op == SAPI_HEADER_REPLACE) {
apr_table_set(ctx->r->headers_out, sapi_header->header, val);