[Piglit] [PATCH 48/63] util: add piglit_is_file_older_than helper
Alejandro Piñeiro
apinheiro at igalia.com
Sat Feb 23 23:45:36 UTC 2019
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
This will be used by shader_runner to check whether SPIRV object files
are up-to-date.
---
tests/util/piglit-util.c | 34 ++++++++++++++++++++++++++++++++++
tests/util/piglit-util.h | 1 +
2 files changed, 35 insertions(+)
diff --git a/tests/util/piglit-util.c b/tests/util/piglit-util.c
index 3a8f9bcfb..c7398c60a 100644
--- a/tests/util/piglit-util.c
+++ b/tests/util/piglit-util.c
@@ -507,6 +507,40 @@ char *piglit_load_text_file(const char *file_name, unsigned *size)
#endif
}
+/**
+ * Return true if file A is older than file B. A file that does not exist is
+ * considered "infinitely old".
+ */
+bool piglit_is_file_older_than(const char *file_name_a, const char *file_name_b)
+{
+#ifdef USE_STDIO
+ return false;
+#else
+ struct stat stat_a;
+ struct stat stat_b;
+ int ret;
+
+ ret = stat(file_name_b, &stat_b);
+ if (ret < 0) {
+ printf("Failed to stat %s\n", file_name_b);
+ return false;
+ }
+
+ ret = stat(file_name_a, &stat_a);
+ if (ret < 0) {
+ printf("Failed to stat %s\n", file_name_a);
+ return true;
+ }
+
+ if (stat_a.st_mtim.tv_sec < stat_b.st_mtim.tv_sec ||
+ (stat_a.st_mtim.tv_sec == stat_b.st_mtim.tv_sec &&
+ stat_a.st_mtim.tv_nsec < stat_b.st_mtim.tv_nsec))
+ return true;
+
+ return false;
+#endif
+}
+
const char*
piglit_source_dir(void)
{
diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h
index 53cffedbb..70dbfd91f 100644
--- a/tests/util/piglit-util.h
+++ b/tests/util/piglit-util.h
@@ -369,6 +369,7 @@ void piglit_general_init(void);
extern void piglit_set_rlimit(unsigned long lim);
char *piglit_load_text_file(const char *file_name, unsigned *size);
+bool piglit_is_file_older_than(const char *file_name_a, const char *file_name_b);
/**
* \brief Read environment variable PIGLIT_SOURCE_DIR.
--
2.19.1
More information about the Piglit
mailing list