diff options
author | Louis Brauer <louis77@noreply.codeberg.org> | 2024-05-25 08:05:36 +0000 |
---|---|---|
committer | Louis Brauer <louis77@noreply.codeberg.org> | 2024-05-25 08:05:36 +0000 |
commit | 84a767dd0878013194ed7551b5ae6ef715e841a6 (patch) | |
tree | 9fb1b2b89e0bfbb4b8bf1e85d840c8653e646bb7 /xs_mime.h | |
parent | cf5718bf4dedb85d2e1a1495f05bfc7e66124022 (diff) | |
parent | a2920800007c291bdf2b5264622cbc713d4961ee (diff) |
Merge pull request 'master' (#1) from grunfink/snac2:master into master
Reviewed-on: https://codeberg.org/louis77/snac2/pulls/1
Diffstat (limited to 'xs_mime.h')
-rw-r--r-- | xs_mime.h | 22 |
1 files changed, 13 insertions, 9 deletions
@@ -55,19 +55,23 @@ const char *xs_mime_by_ext(const char *file) const char *ext = strrchr(file, '.'); if (ext) { - const char **p = xs_mime_types; - xs *uext = xs_tolower_i(xs_dup(ext + 1)); + xs *uext = xs_tolower_i(xs_dup(ext + 1)); + int b = 0; + int t = xs_countof(xs_mime_types) / 2 - 2; - while (*p) { - int c; + while (t >= b) { + int n = (b + t) / 2; + const char *p = xs_mime_types[n * 2]; - if ((c = strcmp(*p, uext)) == 0) - return p[1]; + int c = strcmp(uext, p); + + if (c < 0) + t = n - 1; else if (c > 0) - break; - - p += 2; + b = n + 1; + else + return xs_mime_types[(n * 2) + 1]; } } |