Add API for getting human readable descriptions of a compress_method_t

See: https://bugs.torproject.org/21667
This commit is contained in:
Alexander Færøy 2017-05-12 12:45:00 +02:00
parent f8218b5ada
commit 3a05687c6d
No known key found for this signature in database
GPG Key ID: E15081D5D3C3DB53
2 changed files with 27 additions and 0 deletions

View File

@ -343,6 +343,32 @@ compression_method_get_name(compress_method_t method)
return NULL;
}
/** Table of compression human readable method names. */
static const struct {
compress_method_t method;
const char *name;
} compression_method_human_names[] = {
{ NO_METHOD, "uncompressed" },
{ GZIP_METHOD, "gzipped" },
{ ZLIB_METHOD, "deflated" },
{ LZMA_METHOD, "LZMA compressed" },
{ ZSTD_METHOD, "Zstandard compressed" },
{ UNKNOWN_METHOD, "unknown encoding" },
};
/** Return a human readable string representation of the compression method
* <b>method</b>, or NULL if the method isn't recognized. */
const char *
compression_method_get_human_name(compress_method_t method)
{
unsigned i;
for (i = 0; i < ARRAY_LENGTH(compression_method_human_names); ++i) {
if (method == compression_method_human_names[i].method)
return compression_method_human_names[i].name;
}
return NULL;
}
/** Return the compression method represented by the string <b>name</b>, or
* UNKNOWN_METHOD if the string isn't recognized. */
compress_method_t

View File

@ -50,6 +50,7 @@ int tor_compress_is_compression_bomb(size_t size_in, size_t size_out);
int tor_compress_supports_method(compress_method_t method);
unsigned tor_compress_get_supported_method_bitmask(void);
const char * compression_method_get_name(compress_method_t method);
const char *compression_method_get_human_name(compress_method_t method);
compress_method_t compression_method_get_by_name(const char *name);
const char *tor_compress_version_str(compress_method_t method);