+extern off_t
+filedes_seek(struct filedes *fd, off_t offset);
+
+extern bool
+filedes_is_seekable(struct filedes *fd);
+
+static inline void filedes_init(struct filedes *fd, int raw_fd)
+{
+ fd->fd = raw_fd;
+ fd->offset = 0;
+ fd->is_pipe = 0;
+}
+
+static inline void filedes_invalidate(struct filedes *fd)
+{
+ fd->fd = -1;
+}
+
+#define filedes_close(f) close((f)->fd)
+
+static inline bool
+filedes_valid(const struct filedes *fd)
+{
+ return fd->fd != -1;
+}
+