X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_etag.c;h=3604ad8673957f6ca4f52f35420fe06cb15eae14;hp=b9c0333fbfb835d2274f2c484614ee25f585725a;hb=refs%2Fheads%2Fv2.4.x;hpb=0b83632b2b0a03eeca090f993259ccd95ab646fb diff --git a/php_http_etag.c b/php_http_etag.c index b9c0333..3604ad8 100644 --- a/php_http_etag.c +++ b/php_http_etag.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2013, Michael Wallner | + | Copyright (c) 2004-2014, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -20,7 +20,7 @@ #include #include -PHP_HTTP_API php_http_etag_t *php_http_etag_init(const char *mode TSRMLS_DC) +php_http_etag_t *php_http_etag_init(const char *mode TSRMLS_DC) { void *ctx; php_http_etag_t *e; @@ -52,7 +52,7 @@ PHP_HTTP_API php_http_etag_t *php_http_etag_init(const char *mode TSRMLS_DC) return e; } -PHP_HTTP_API char *php_http_etag_finish(php_http_etag_t *e) +char *php_http_etag_finish(php_http_etag_t *e) { unsigned char digest[128] = {0}; char *etag = NULL; @@ -61,11 +61,15 @@ PHP_HTTP_API char *php_http_etag_finish(php_http_etag_t *e) unsigned char buf[4]; *((uint *) e->ctx) = ~*((uint *) e->ctx); +#ifdef WORDS_BIGENDIAN + etag = php_http_etag_digest((unsigned char *) e->ctx, 4); +#else buf[0] = ((unsigned char *) e->ctx)[3]; buf[1] = ((unsigned char *) e->ctx)[2]; buf[2] = ((unsigned char *) e->ctx)[1]; buf[3] = ((unsigned char *) e->ctx)[0]; etag = php_http_etag_digest(buf, 4); +#endif } else if ((!strcasecmp(e->mode, "sha1"))) { PHP_SHA1Final(digest, e->ctx); etag = php_http_etag_digest(digest, 20); @@ -90,7 +94,7 @@ PHP_HTTP_API char *php_http_etag_finish(php_http_etag_t *e) return etag; } -PHP_HTTP_API size_t php_http_etag_update(php_http_etag_t *e, const char *data_ptr, size_t data_len) +size_t php_http_etag_update(php_http_etag_t *e, const char *data_ptr, size_t data_len) { if (!strcasecmp(e->mode, "crc32b")) { uint i, c = *((uint *) e->ctx);