- char *etag = NULL;
-
- if (!strcasecmp(e->mode, "crc32b")) {
- unsigned char buf[4];
-
- *((uint *) e->ctx) = ~*((uint *) e->ctx);
-#if 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);
- } else if ((!strcasecmp(e->mode, "md5"))) {
- PHP_MD5Final(digest, e->ctx);
- etag = php_http_etag_digest(digest, 16);
- } else {
-#if PHP_HTTP_HAVE_HASH
- const php_hash_ops *eho = NULL;
-
- if ((eho = php_hash_fetch_ops(e->mode, strlen(e->mode)))) {
- eho->hash_final(digest, e->ctx);
- etag = php_http_etag_digest(digest, eho->digest_size);
- }
-#endif
- }