summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-02-05 13:54:01 -0500
committerTavian Barnes <tavianator@tavianator.com>2024-02-05 13:56:12 -0500
commit10b6da04521cf3f65f3c47bece8e2e5e6e664d6d (patch)
treed9e8e27a73c8bf4ee3ebf78e5a3c09ce5fe184e9
parentdab66643f54d0f79c212db9e68d8545b98a2d653 (diff)
downloadbfs-10b6da04521cf3f65f3c47bece8e2e5e6e664d6d.tar.xz
mtab: Take the basename directly in bfs_might_be_mount()
This avoids some hot xbaseoff() calls.
-rw-r--r--src/bftw.c2
-rw-r--r--src/mtab.c3
-rw-r--r--src/mtab.h6
3 files changed, 5 insertions, 6 deletions
diff --git a/src/bftw.c b/src/bftw.c
index debf92c..d392aed 100644
--- a/src/bftw.c
+++ b/src/bftw.c
@@ -1390,7 +1390,7 @@ static bool bftw_need_stat(const struct bftw_state *state) {
// need to stat() to get the correct type. We don't need to
// check for directories because they can only be mounted over
// by other directories.
- if (bfs_might_be_mount(state->mtab, ftwbuf->path)) {
+ if (bfs_might_be_mount(state->mtab, ftwbuf->path + ftwbuf->nameoff)) {
return true;
}
#endif
diff --git a/src/mtab.c b/src/mtab.c
index cc726a2..c76f403 100644
--- a/src/mtab.c
+++ b/src/mtab.c
@@ -271,8 +271,7 @@ const char *bfs_fstype(const struct bfs_mtab *mtab, const struct bfs_stat *statb
}
}
-bool bfs_might_be_mount(const struct bfs_mtab *mtab, const char *path) {
- const char *name = path + xbaseoff(path);
+bool bfs_might_be_mount(const struct bfs_mtab *mtab, const char *name) {
return trie_find_str(&mtab->names, name);
}
diff --git a/src/mtab.h b/src/mtab.h
index ca4372c..d99d78f 100644
--- a/src/mtab.h
+++ b/src/mtab.h
@@ -43,12 +43,12 @@ const char *bfs_fstype(const struct bfs_mtab *mtab, const struct bfs_stat *statb
*
* @param mtab
* The current mount table.
- * @param path
- * The path to check.
+ * @param name
+ * The name of the file to check.
* @return
* Whether the named file could be a mount point.
*/
-bool bfs_might_be_mount(const struct bfs_mtab *mtab, const char *path);
+bool bfs_might_be_mount(const struct bfs_mtab *mtab, const char *name);
/**
* Free a mount table.