]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
sandbox: Add a way to access persistent test files
authorSimon Glass <sjg@chromium.org>
Thu, 24 Aug 2023 19:55:37 +0000 (13:55 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 25 Aug 2023 21:55:19 +0000 (17:55 -0400)
Some pytests create files in the persistent-data directory. It is useful
to be able to access these files in C tests. Add a function which can
locate a file given its leaf name, using the environment variable set
up in test/py/conftest.py

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/sandbox/cpu/os.c
include/os.h

index 9e93a0fa571fb9d098b820226f21149e1e337b83..85d0d6a17035d7038718f9316b4a7f140d1b4f44 100644 (file)
@@ -258,6 +258,30 @@ int os_unmap(void *buf, int size)
        return 0;
 }
 
+int os_persistent_file(char *buf, int maxsize, const char *fname)
+{
+       const char *dirname = getenv("U_BOOT_PERSISTENT_DATA_DIR");
+       char *ptr;
+       int len;
+
+       len = strlen(fname) + (dirname ? strlen(dirname) + 1 : 0) + 1;
+       if (len > maxsize)
+               return -ENOSPC;
+
+       ptr = buf;
+       if (dirname) {
+               strcpy(ptr, dirname);
+               ptr += strlen(dirname);
+               *ptr++ = '/';
+       }
+       strcpy(ptr, fname);
+
+       if (access(buf, F_OK) == -1)
+               return -ENOENT;
+
+       return 0;
+}
+
 /* Restore tty state when we exit */
 static struct termios orig_term;
 static bool term_setup;
index 968412b0a822914943751e503aa2e7f502f53ef8..fc8a1b15cbf08828a04d2634692f7da97f318d03 100644 (file)
@@ -98,6 +98,16 @@ int os_close(int fd);
  */
 int os_unlink(const char *pathname);
 
+/** os_persistent_fname() - Find the path to a test file
+ *
+ * @buf: Buffer to hold path
+ * @maxsize: Maximum size of buffer
+ * @fname: Leaf filename to find
+ * Returns: 0 on success, -ENOENT if file is not found, -ENOSPC if the buffer is
+ * too small
+ */
+int os_persistent_file(char *buf, int maxsize, const char *fname);
+
 /**
  * os_exit() - access to the OS exit() system call
  *