Added guac_error usage to guacio
This commit is contained in:
parent
d7b0c5085e
commit
797c30de75
@ -125,9 +125,13 @@ typedef struct GUACIO {
|
|||||||
* Allocates and initializes a new GUACIO object with the given open
|
* Allocates and initializes a new GUACIO object with the given open
|
||||||
* file descriptor.
|
* file descriptor.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while allocating the GUACIO object, NULL is returned,
|
||||||
|
* and guac_error is set appropriately.
|
||||||
|
*
|
||||||
* @param fd An open file descriptor that this GUACIO object should manage.
|
* @param fd An open file descriptor that this GUACIO object should manage.
|
||||||
* @return A newly allocated GUACIO object associated with the given
|
* @return A newly allocated GUACIO object associated with the given
|
||||||
* file descriptor.
|
* file descriptor, or NULL if an error occurs while allocating
|
||||||
|
* the GUACIO object.
|
||||||
*/
|
*/
|
||||||
GUACIO* guac_open(int fd);
|
GUACIO* guac_open(int fd);
|
||||||
|
|
||||||
@ -147,6 +151,9 @@ int64_t guac_parse_int(const char* str);
|
|||||||
* written may be buffered until the buffer is flushed automatically or
|
* written may be buffered until the buffer is flushed automatically or
|
||||||
* manually.
|
* manually.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while writing, a non-zero value is returned, and
|
||||||
|
* guac_error is set appropriately.
|
||||||
|
*
|
||||||
* @param io The GUACIO object to write to.
|
* @param io The GUACIO object to write to.
|
||||||
* @param i The unsigned int to write.
|
* @param i The unsigned int to write.
|
||||||
* @return Zero on success, or non-zero if an error occurs while writing.
|
* @return Zero on success, or non-zero if an error occurs while writing.
|
||||||
@ -160,6 +167,9 @@ ssize_t guac_write_int(GUACIO* io, int64_t i);
|
|||||||
* internally by the Guacamole protocol (commas, semicolons, or
|
* internally by the Guacamole protocol (commas, semicolons, or
|
||||||
* backslashes) it will need to be escaped.
|
* backslashes) it will need to be escaped.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while writing, a non-zero value is returned, and
|
||||||
|
* guac_error is set appropriately.
|
||||||
|
*
|
||||||
* @param io The GUACIO object to write to.
|
* @param io The GUACIO object to write to.
|
||||||
* @param str The string to write.
|
* @param str The string to write.
|
||||||
* @return Zero on success, or non-zero if an error occurs while writing.
|
* @return Zero on success, or non-zero if an error occurs while writing.
|
||||||
@ -174,6 +184,9 @@ ssize_t guac_write_string(GUACIO* io, const char* str);
|
|||||||
* be made before non-base64 writes (or writes of an independent block of
|
* be made before non-base64 writes (or writes of an independent block of
|
||||||
* base64 data) can be made.
|
* base64 data) can be made.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while writing, a non-zero value is returned, and
|
||||||
|
* guac_error is set appropriately.
|
||||||
|
*
|
||||||
* @param io The GUACIO object to write to.
|
* @param io The GUACIO object to write to.
|
||||||
* @param buf A buffer containing the data to write.
|
* @param buf A buffer containing the data to write.
|
||||||
* @param count The number of bytes to write.
|
* @param count The number of bytes to write.
|
||||||
@ -184,6 +197,9 @@ ssize_t guac_write_base64(GUACIO* io, const void* buf, size_t count);
|
|||||||
/**
|
/**
|
||||||
* Flushes the base64 buffer, writing padding characters as necessary.
|
* Flushes the base64 buffer, writing padding characters as necessary.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while writing, a non-zero value is returned, and
|
||||||
|
* guac_error is set appropriately.
|
||||||
|
*
|
||||||
* @param io The GUACIO object to flush
|
* @param io The GUACIO object to flush
|
||||||
* @return Zero on success, or non-zero if an error occurs during flush.
|
* @return Zero on success, or non-zero if an error occurs during flush.
|
||||||
*/
|
*/
|
||||||
@ -192,6 +208,9 @@ ssize_t guac_flush_base64(GUACIO* io);
|
|||||||
/**
|
/**
|
||||||
* Flushes the write buffer.
|
* Flushes the write buffer.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while writing, a non-zero value is returned, and
|
||||||
|
* guac_error is set appropriately.
|
||||||
|
*
|
||||||
* @param io The GUACIO object to flush
|
* @param io The GUACIO object to flush
|
||||||
* @return Zero on success, or non-zero if an error occurs during flush.
|
* @return Zero on success, or non-zero if an error occurs during flush.
|
||||||
*/
|
*/
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
#include "guacio.h"
|
#include "guacio.h"
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
char __GUACIO_BASE64_CHARACTERS[64] = {
|
char __GUACIO_BASE64_CHARACTERS[64] = {
|
||||||
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
|
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
|
||||||
@ -64,6 +65,13 @@ char __GUACIO_BASE64_CHARACTERS[64] = {
|
|||||||
GUACIO* guac_open(int fd) {
|
GUACIO* guac_open(int fd) {
|
||||||
|
|
||||||
GUACIO* io = malloc(sizeof(GUACIO));
|
GUACIO* io = malloc(sizeof(GUACIO));
|
||||||
|
|
||||||
|
/* If no memory available, return with error */
|
||||||
|
if (io == NULL) {
|
||||||
|
guac_error = GUAC_STATUS_NO_MEMORY;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
io->ready = 0;
|
io->ready = 0;
|
||||||
io->written = 0;
|
io->written = 0;
|
||||||
io->total_written = 0;
|
io->total_written = 0;
|
||||||
@ -72,6 +80,15 @@ GUACIO* guac_open(int fd) {
|
|||||||
/* Allocate instruction buffer */
|
/* Allocate instruction buffer */
|
||||||
io->instructionbuf_size = 1024;
|
io->instructionbuf_size = 1024;
|
||||||
io->instructionbuf = malloc(io->instructionbuf_size);
|
io->instructionbuf = malloc(io->instructionbuf_size);
|
||||||
|
|
||||||
|
/* If no memory available, return with error */
|
||||||
|
if (io->instructionbuf == NULL) {
|
||||||
|
guac_error = GUAC_STATUS_NO_MEMORY;
|
||||||
|
free(io);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Init members */
|
||||||
io->instructionbuf_used_length = 0;
|
io->instructionbuf_used_length = 0;
|
||||||
io->instructionbuf_parse_start = 0;
|
io->instructionbuf_parse_start = 0;
|
||||||
io->instructionbuf_elementc = 0;
|
io->instructionbuf_elementc = 0;
|
||||||
@ -99,6 +116,10 @@ ssize_t __guac_write(GUACIO* io, const char* buf, int count) {
|
|||||||
retval = write(io->fd, buf, count);
|
retval = write(io->fd, buf, count);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Record errors in guac_error */
|
||||||
|
if (retval < 0)
|
||||||
|
guac_error = GUAC_STATUS_OUTPUT_ERROR;
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user