diff options
Diffstat (limited to 'include/fs.h')
-rw-r--r-- | include/fs.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/fs.h b/include/fs.h index d7fa7714b4..f8a3b8bda4 100644 --- a/include/fs.h +++ b/include/fs.h @@ -100,6 +100,26 @@ struct fs_device_d { char *linux_rootarg; }; +/* + * Some filesystems i.e. tftpfs only support lseek into one direction. + * To detect this limited functionality we add this extra function. + * Additionaly we also return 0 if we even can not seek forward. + */ +static inline int can_lseek_backward(int fd) +{ + int ret; + + ret = lseek(fd, 1, SEEK_SET); + if (ret < 0) + return 0; + + ret = lseek(fd, 0, SEEK_SET); + if (ret < 0) + return 0; + + return ret; +} + #define drv_to_fs_driver(d) container_of(d, struct fs_driver_d, drv) int flush(int fd); |