From 94d4ab8921b60870144bc3ba6d885f43976ead78 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 14 Jun 2012 08:54:54 +0000 Subject: [PATCH] -needing yet another API to box stdin for scheduler reading, not ported to W32 yet --- src/include/gnunet_disk_lib.h | 18 +++++++++++++++++- src/util/disk.c | 27 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/include/gnunet_disk_lib.h b/src/include/gnunet_disk_lib.h index ae9cdbbe9..fdd9e8d77 100644 --- a/src/include/gnunet_disk_lib.h +++ b/src/include/gnunet_disk_lib.h @@ -425,6 +425,7 @@ GNUNET_DISK_pipe (int blocking_read, int blocking_write, int inherit_read, int i struct GNUNET_DISK_PipeHandle * GNUNET_DISK_pipe_from_fd (int blocking_read, int blocking_write, int fd[2]); + /** * Closes an interprocess channel * @param p pipe @@ -433,6 +434,7 @@ GNUNET_DISK_pipe_from_fd (int blocking_read, int blocking_write, int fd[2]); int GNUNET_DISK_pipe_close (struct GNUNET_DISK_PipeHandle *p); + /** * Closes one half of an interprocess channel * @@ -465,6 +467,18 @@ const struct GNUNET_DISK_FileHandle * GNUNET_DISK_pipe_handle (const struct GNUNET_DISK_PipeHandle *p, enum GNUNET_DISK_PipeEnd n); + +/** + * Get a handle from a native FD. + * + * @param fd native file descriptor + * @return file handle corresponding to the descriptor + */ +const struct GNUNET_DISK_FileHandle * +GNUNET_DISK_get_handle_from_native (FILE *fd); + + + /** * Read the contents of a binary file into a buffer. * @param h handle to an open file @@ -476,6 +490,7 @@ ssize_t GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *result, size_t len); + /** * Read the contents of a binary file into a buffer. * Guarantees not to block (returns GNUNET_SYSERR and sets errno to EAGAIN @@ -488,7 +503,8 @@ GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *result, */ ssize_t GNUNET_DISK_file_read_non_blocking (const struct GNUNET_DISK_FileHandle * h, - void *result, size_t len); + void *result, size_t len); + /** * Read the contents of a binary file into a buffer. diff --git a/src/util/disk.c b/src/util/disk.c index ecd361ba1..32263584b 100644 --- a/src/util/disk.c +++ b/src/util/disk.c @@ -1774,6 +1774,33 @@ GNUNET_DISK_file_close (struct GNUNET_DISK_FileHandle *h) } +/** + * Get a handle from a native FD. + * + * @param fd native file descriptor + * @return file handle corresponding to the descriptor + */ +struct GNUNET_DISK_FileHandle * +GNUNET_DISK_get_handle_from_native (FILE *fd) +{ +#if MINGW + // FIXME: LRN help! + GNUNET_break (0); + return NULL; +#else + struct GNUNET_DISK_FileHandle *fh; + int fno; + + fno = fileno (fd); + if (-1 == fno) + return NULL; + fh = GNUNET_malloc (sizeof (struct GNUNET_DISK_FileHandle)); + fh->fd = fno; + return fh; +#endif +} + + /** * Construct full path to a file inside of the private * directory used by GNUnet. Also creates the corresponding -- 2.25.1