X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_etag.c;h=1ebddb35d4a7b283db6cc07c954133bbbde18c2e;hp=b9c0333fbfb835d2274f2c484614ee25f585725a;hb=cd3cad9da098f0dae2997dd6a52a907bfaaf6041;hpb=0b83632b2b0a03eeca090f993259ccd95ab646fb diff --git a/php_http_etag.c b/php_http_etag.c index b9c0333..1ebddb3 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) { void *ctx; php_http_etag_t *e; @@ -47,12 +47,11 @@ PHP_HTTP_API php_http_etag_t *php_http_etag_init(const char *mode TSRMLS_DC) e = emalloc(sizeof(*e)); e->ctx = ctx; e->mode = estrdup(mode); - TSRMLS_SET_CTX(e->ts); 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 +60,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 +93,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);