X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_etag.c;h=3604ad8673957f6ca4f52f35420fe06cb15eae14;hp=3a69756b70f53259e6fd5cd2709ca498010a3456;hb=refs%2Fheads%2Fv2.1.x;hpb=4407379af8d886b627c88572e9da69c38cdbda58 diff --git a/php_http_etag.c b/php_http_etag.c index 3a69756..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-2011, 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);