Add hasmntopt(3)
bionic has the Linux-specific mntent.h but is missing hasmntopt().
Change-Id: I0ab7b83626c969704add4e64b37a6fc715d4a723
Signed-off-by: Greg Hackmann <ghackmann@google.com>
diff --git a/libc/bionic/mntent.cpp b/libc/bionic/mntent.cpp
index d169e29..994b84d 100644
--- a/libc/bionic/mntent.cpp
+++ b/libc/bionic/mntent.cpp
@@ -77,3 +77,24 @@
}
return 1;
}
+
+char* hasmntopt(const struct mntent* mnt, const char* opt) {
+ char* token = mnt->mnt_opts;
+ char* const end = mnt->mnt_opts + strlen(mnt->mnt_opts);
+ const size_t optLen = strlen(opt);
+
+ while (token) {
+ char* const tokenEnd = token + optLen;
+ if (tokenEnd > end) break;
+
+ if (memcmp(token, opt, optLen) == 0 &&
+ (*tokenEnd == '\0' || *tokenEnd == ',' || *tokenEnd == '=')) {
+ return token;
+ }
+
+ token = strchr(token, ',');
+ if (token) token++;
+ }
+
+ return nullptr;
+}