12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #ifndef VSFTP_NETSTR_H
- #define VSFTP_NETSTR_H
- struct mystr;
- struct vsf_session;
- typedef int (*str_netfd_read_t)(struct vsf_session*
- p_sess, char*,
- unsigned int);
- /* str_netfd_alloc()
- * PURPOSE
- * Read a string from a network socket into a string buffer object. The string
- * is delimited by a specified string terminator character.
- * If any network related errors occur trying to read the string, this call
- * will exit the program.
- * This method avoids reading one character at a time from the network.
- * PARAMETERS
- * p_sess - the session object, used for passing into the I/O callbacks
- * p_str - the destination string object
- * term - the character which will terminate the string. This character
- * is included in the returned string.
- * p_readbuf - pointer to a scratch buffer into which to read from the
- * network. This buffer must be at least "maxlen" characters!
- * maxlen - maximum length of string to return. If this limit is passed,
- * an empty string will be returned.
- * p_peekfunc - a function called to peek data from the network
- * p_readfunc - a function called to read data from the network
- * RETURNS
- * -1 upon reaching max buffer length without seeing terminator, or the number
- * of bytes read, _including_ the terminator. 0 for an EOF on the socket.
- * Does not return (exits) for a serious socket error.
- */
- int str_netfd_alloc(struct vsf_session* p_sess,
- struct mystr* p_str,
- char term,
- char* p_readbuf,
- unsigned int maxlen,
- str_netfd_read_t p_peekfunc,
- str_netfd_read_t p_readfunc);
- /* str_netfd_read()
- * PURPOSE
- * Fills contents of a string buffer object from a (typically network) file
- * descriptor.
- * PARAMETERS
- * p_str - the string object to be filled
- * fd - the file descriptor to read from
- * len - the number of bytes to read
- * RETURNS
- * Number read on success, -1 on failure. The read is considered a failure
- * unless the full requested byte count is read.
- */
- int str_netfd_read(struct mystr* p_str, int fd, unsigned int len);
- /* str_netfd_write()
- * PURPOSE
- * Write the contents of a string buffer object out to a (typically network)
- * file descriptor.
- * PARAMETERS
- * p_str - the string object to send
- * fd - the file descriptor to write to
- * RETURNS
- * Number written on success, -1 on failure. The write is considered a failure
- * unless the full string buffer object is written.
- */
- int str_netfd_write(const struct mystr* p_str, int fd);
- #endif /* VSFTP_NETSTR_H */
|