summaryrefslogtreecommitdiff
path: root/xs_mime.h
diff options
context:
space:
mode:
authorLouis Brauer <louis77@noreply.codeberg.org>2024-05-25 08:05:36 +0000
committerLouis Brauer <louis77@noreply.codeberg.org>2024-05-25 08:05:36 +0000
commit84a767dd0878013194ed7551b5ae6ef715e841a6 (patch)
tree9fb1b2b89e0bfbb4b8bf1e85d840c8653e646bb7 /xs_mime.h
parentcf5718bf4dedb85d2e1a1495f05bfc7e66124022 (diff)
parenta2920800007c291bdf2b5264622cbc713d4961ee (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.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/xs_mime.h b/xs_mime.h
index 84af49c..853b092 100644
--- a/xs_mime.h
+++ b/xs_mime.h
@@ -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];
}
}