summaryrefslogtreecommitdiffstats
path: root/include/fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/fs.h')
-rw-r--r--include/fs.h20
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);