summaryrefslogtreecommitdiff
path: root/include/Utility/Utility.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/Utility/Utility.h')
-rw-r--r--include/Utility/Utility.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/Utility/Utility.h b/include/Utility/Utility.h
index bd6019e..8d68baa 100644
--- a/include/Utility/Utility.h
+++ b/include/Utility/Utility.h
@@ -3,6 +3,7 @@
#include "General.h"
#include "Version.h"
+#include <glob.h>
/**********************************************************************
* COPYRIGHT 2020 MULTI-TECH SYSTEMS, INC.
@@ -56,4 +57,26 @@ inline mode_t fileType(std::string file) {
}
}
+/*
+ findFileGlob() function has been added for generic file name search.
+ For example: one device has file /dev/tpm0, another one has /dev/tpm3.
+ And as a search parameter, you can specify the filepath with wildcard,
+ findFileGlob("/dev/tpm*"). The function will find the required file.
+*/
+
+inline mode_t findFileGlob(std::string file) {
+ struct stat buf = {};
+ glob_t gl;
+ mode_t result = -1;
+
+ if (0 == glob(file.c_str(), 0, NULL, &gl)) {
+ if (0 < gl.gl_pathc && 0 == stat(gl.gl_pathv[0], &buf)) {
+ result = buf.st_mode & S_IFMT;
+ }
+ globfree(&gl);
+ }
+
+ return result;
+}
+
#endif /* UTILITIES_H_ */