Some commands need files in which they can lseek backwards which is particularly not possible on TFTP. Instead of hiding this behind can_lseek_backward() create a function for it which tests if the file is on TFTP directly rather than using different lseek operations. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- fs/fs.c | 22 ++++++++++++++++++++++ include/fs.h | 10 ++++++++++ 2 files changed, 32 insertions(+) diff --git a/fs/fs.c b/fs/fs.c index 6f15e93ba9..e073e3577d 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -1906,3 +1906,25 @@ char *path_get_linux_rootarg(const char *path) return xstrdup(str); } + +/** + * __is_tftp_fs() - return true when path is mounted on TFTP + * @path: The path + * + * Do not use directly, use is_tftp_fs instead. + * + * Return: true when @path is on TFTP, false otherwise + */ +bool __is_tftp_fs(const char *path) +{ + struct fs_device_d *fsdev; + + fsdev = get_fsdevice_by_path(path); + if (!fsdev) + return false; + + if (strcmp(fsdev->driver->drv.name, "tftp")) + return false; + + return true; +} diff --git a/include/fs.h b/include/fs.h index 3d88bfad4a..5a50d9b9e4 100644 --- a/include/fs.h +++ b/include/fs.h @@ -121,6 +121,16 @@ static inline int can_lseek_backward(int fd) return 1; } +bool __is_tftp_fs(const char *path); + +static inline bool is_tftp_fs(const char *path) +{ + if (!IS_ENABLED(CONFIG_FS_TFTP)) + return 0; + + return __is_tftp_fs(path); +} + #define drv_to_fs_driver(d) container_of(d, struct fs_driver_d, drv) int flush(int fd); -- 2.11.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox