Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2005 Pekka Riikonen
+ Copyright (C) 2005 - 2007 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*
* SYNOPSIS
*
- * SilcStream silc_fd_stream_create(int fd);
+ * SilcStream silc_fd_stream_create(int fd, SilcStack stack);
*
* DESCRIPTION
*
* Creates file descriptor stream for the open file descriptor indicated
* by `fd'. The stream is closed with the silc_stream_close and destroyed
- * with the silc_stream_destroy.
+ * with the silc_stream_destroy. Returns NULL if system is out of memory.
*
- * The silc_stream_set_notifier must be called in order to be able to read
- * from and write to this file descriptor stream.
+ * If the silc_stream_set_notifier is called the stream is set to
+ * non-blocking mode.
+ *
+ * If `stack' is non-NULL all memory is allocated from the `stack' and
+ * will be released back to `stack' after the stream is destroyed.
*
***/
-SilcStream silc_fd_stream_create(int fd);
+SilcStream silc_fd_stream_create(int fd, SilcStack stack);
/****f* silcutil/SilcFDStreamAPI/silc_fd_stream_create2
*
* SYNOPSIS
*
- * SilcStream silc_fd_stream_create2(int read_fd, int write_fd);
+ * SilcStream silc_fd_stream_create2(int read_fd, int write_fd,
+ * SilcStack stack);
*
* DESCRIPTION
*
* Creates file descriptor stream for the open file descriptors indicated
* by `read_fd' and `write_fd'. The `read_fd' must be opened for reading
* and `write_fd' opened for writing. The stream is closed with the
- * silc_stream_close and destroyed with the silc_stream_destroy.
+ * silc_stream_close and destroyed with the silc_stream_destroy. Returns
+ * NULL if system is out of memory.
+ *
+ * If the silc_stream_set_notifier is called the stream is set to
+ * non-blocking mode.
*
- * The silc_stream_set_notifier must be called in order to be able to read
- * from and write to this file descriptor stream.
+ * If `stack' is non-NULL all memory is allocated from the `stack' and
+ * will be released back to `stack' after the stream is destroyed.
*
***/
-SilcStream silc_fd_stream_create2(int read_fd, int write_fd);
+SilcStream silc_fd_stream_create2(int read_fd, int write_fd, SilcStack stack);
/****f* silcutil/SilcFDStreamAPI/silc_fd_stream_file
*
* SYNOPSIS
*
* SilcStream silc_fd_stream_file(const char *filename, SilcBool reading,
- * SilcBool writing);
+ * SilcBool writing, SilcStack stack);
*
* DESCRIPTION
*
* Same as silc_fd_stream_create but creates the stream by opening the
* file indicated by `filename'. If the `reading' is TRUE the file is
* opened for reading. If the `writing' is TRUE the file is opened
- * for writing.
+ * for writing. Returns NULL if system is out of memory.
+ *
+ * If the silc_stream_set_notifier is called the stream is set to
+ * non-blocking mode.
*
- * The silc_stream_set_notifier must be called in order to be able to read
- * from and write to this file descriptor stream.
+ * If `stack' is non-NULL all memory is allocated from the `stack' and
+ * will be released back to `stack' after the stream is destroyed.
*
***/
SilcStream silc_fd_stream_file(const char *filename, SilcBool reading,
- SilcBool writing);
+ SilcBool writing, SilcStack stack);
-/****f* silcutil/SilcFDStreamAPI/silc_fd_stream_get_info
+/****f* silcutil/SilcFDStreamAPI/silc_fd_stream_file2
*
* SYNOPSIS
*
- * SilcBool
- * silc_fd_stream_get_info(SilcStream stream, int *read_fd, int *write_fd);
+ * SilcStream silc_fd_stream_file2(const char *read_file,
+ * const char *write_file,
+ * SilcStack stack);
*
* DESCRIPTION
*
- * Returns the file descriptors associated with the stream. The 'write_fd'
- * is available only if the stream was created with silc_fd_stream_create2
- * function.
+ * Same as silc_fd_stream_file but creates the stream by opening `read_file'
+ * for reading and `write_file' for writing. Returns NULL if system is
+ * out of memory.
+ *
+ * If the silc_stream_set_notifier is called the stream is set to
+ * non-blocking mode.
+ *
+ * If `stack' is non-NULL all memory is allocated from the `stack' and
+ * will be released back to `stack' after the stream is destroyed.
*
***/
-SilcBool silc_fd_stream_get_info(SilcStream stream,
- int *read_fd, int *write_fd);
+SilcStream silc_fd_stream_file2(const char *read_file, const char *write_file,
+ SilcStack stack);
-/****f* silcutil/SilcFDStreamAPI/silc_fd_stream_get_error
+/****f* silcutil/SilcFDStreamAPI/silc_fd_stream_get_info
*
* SYNOPSIS
*
- * int silc_fd_stream_get_error(SilcStream stream);
+ * SilcBool
+ * silc_fd_stream_get_info(SilcStream stream, int *read_fd, int *write_fd);
*
* DESCRIPTION
*
- * If error occurred during file descriptor stream operations, this
- * function can be used to retrieve the error number that occurred.
+ * Returns the file descriptors associated with the stream. The 'write_fd'
+ * is available only if the stream was created with silc_fd_stream_create2
+ * function. Returns FALSE if the information is not available.
*
***/
-int silc_fd_stream_get_error(SilcStream stream);
+SilcBool silc_fd_stream_get_info(SilcStream stream,
+ int *read_fd, int *write_fd);
+
+/* Backwards support */
+#define silc_fd_stream_get_error(stream) silc_errno
#endif /* SILCFDSTREAM_H */