C99 Compliance #29

Merged
jordan merged 11 commits from c99 into master 2024-01-13 22:13:46 +00:00
18 changed files with 118 additions and 103 deletions
Showing only changes of commit e413092a54 - Show all commits

View file

@ -38,12 +38,12 @@ struct Array
size_t size; /* Elements actually filled */ size_t size; /* Elements actually filled */
}; };
int bool
ArrayAdd(Array * array, void *value) ArrayAdd(Array * array, void *value)
{ {
if (!array) if (!array)
{ {
return 0; return false;
} }
return ArrayInsert(array, array->size, value); return ArrayInsert(array, array->size, value);
@ -122,14 +122,14 @@ ArrayGet(Array * array, size_t index)
} }
extern int bool
ArrayInsert(Array * array, size_t index, void *value) ArrayInsert(Array * array, size_t index, void *value)
{ {
size_t i; size_t i;
if (!array || !value || index > array->size) if (!array || !value || index > array->size)
{ {
return 0; return false;
} }
if (array->size >= array->allocated) if (array->size >= array->allocated)
@ -145,7 +145,7 @@ ArrayInsert(Array * array, size_t index, void *value)
if (!array->entries) if (!array->entries)
{ {
array->entries = tmp; array->entries = tmp;
return 0; return false;
} }
array->allocated = newSize; array->allocated = newSize;
@ -160,7 +160,7 @@ ArrayInsert(Array * array, size_t index, void *value)
array->entries[index] = value; array->entries[index] = value;
return 1; return true;
} }
extern void * extern void *
@ -200,14 +200,14 @@ ArraySize(Array * array)
return array->size; return array->size;
} }
int bool
ArrayTrim(Array * array) ArrayTrim(Array * array)
{ {
void **tmp; void **tmp;
if (!array) if (!array)
{ {
return 0; return false;
} }
tmp = array->entries; tmp = array->entries;
@ -218,10 +218,10 @@ ArrayTrim(Array * array)
if (!array->entries) if (!array->entries)
{ {
array->entries = tmp; array->entries = tmp;
return 0; return false;
} }
return 1; return true;
} }
static void static void

View file

@ -212,7 +212,7 @@ Base64Unpad(char *base64, size_t length)
base64[length] = '\0'; base64[length] = '\0';
} }
extern int bool
Base64Pad(char **base64Ptr, size_t length) Base64Pad(char **base64Ptr, size_t length)
{ {
char *tmp; char *tmp;
@ -221,7 +221,7 @@ Base64Pad(char **base64Ptr, size_t length)
if (length % 4 == 0) if (length % 4 == 0)
{ {
return length; /* Success: no padding needed */ return true; /* Success: no padding needed */
} }
newSize = length + (4 - (length % 4)); newSize = length + (4 - (length % 4));
@ -229,7 +229,7 @@ Base64Pad(char **base64Ptr, size_t length)
tmp = Realloc(*base64Ptr, newSize + 100);; tmp = Realloc(*base64Ptr, newSize + 100);;
if (!tmp) if (!tmp)
{ {
return 0; /* Memory error */ return false; /* Memory error */
} }
*base64Ptr = tmp; *base64Ptr = tmp;
@ -240,5 +240,5 @@ Base64Pad(char **base64Ptr, size_t length)
(*base64Ptr)[newSize] = '\0'; (*base64Ptr)[newSize] = '\0';
return newSize; return true;
} }

View file

@ -24,12 +24,22 @@
#include <Cytoplasm.h> #include <Cytoplasm.h>
char *CytoplasmGetName(void) int
CytoplasmGetVersion(void)
{ {
return LIB_NAME; return CYTOPLASM_VERSION;
} }
char *CytoplasmGetVersion(void) const char *
CytoplasmGetVersionStr(void)
{ {
return LIB_VERSION; #define S(x) #x
return "v" S(CYTOPLASM_VERSION_MAJOR) "." S(CYTOPLASM_VERSION_MINOR) "." S(CYTOPLASM_VERSION_PATCH)
#if CYTOPLASM_VERSION_ALPHA
"-alpha" S(CYTOPLASM_VERSION_ALPHA)
#elif CYTOPLASM_VERSION_BETA
"-beta" S(CYTOPLASM_VERSION_BETA)
#endif
;
#undef S
} }

View file

@ -693,19 +693,19 @@ DbCreate(Db * db, size_t nArgs,...)
return ret; return ret;
} }
int bool
DbDelete(Db * db, size_t nArgs,...) DbDelete(Db * db, size_t nArgs,...)
{ {
va_list ap; va_list ap;
Array *args; Array *args;
char *file; char *file;
char *hash; char *hash;
int ret = 1; bool ret = true;
DbRef *ref; DbRef *ref;
if (!db) if (!db)
{ {
return 0; return false;
} }
va_start(ap, nArgs); va_start(ap, nArgs);
@ -756,7 +756,7 @@ DbDelete(Db * db, size_t nArgs,...)
if (UtilLastModified(file)) if (UtilLastModified(file))
{ {
ret = remove(file) == 0; ret = (remove(file) == 0);
} }
pthread_mutex_unlock(&db->lock); pthread_mutex_unlock(&db->lock);
@ -789,14 +789,14 @@ DbLock(Db * db, size_t nArgs,...)
return ret; return ret;
} }
int bool
DbUnlock(Db * db, DbRef * ref) DbUnlock(Db * db, DbRef * ref)
{ {
int destroy; bool destroy;
if (!db || !ref) if (!db || !ref)
{ {
return 0; return false;
} }
lseek(ref->fd, 0L, SEEK_SET); lseek(ref->fd, 0L, SEEK_SET);
@ -805,7 +805,7 @@ DbUnlock(Db * db, DbRef * ref)
pthread_mutex_unlock(&db->lock); pthread_mutex_unlock(&db->lock);
Log(LOG_ERR, "Failed to truncate file on disk."); Log(LOG_ERR, "Failed to truncate file on disk.");
Log(LOG_ERR, "Error on fd %d: %s", ref->fd, strerror(errno)); Log(LOG_ERR, "Error on fd %d: %s", ref->fd, strerror(errno));
return 0; return false;
} }
JsonEncode(ref->json, ref->stream, JSON_DEFAULT); JsonEncode(ref->json, ref->stream, JSON_DEFAULT);
@ -826,18 +826,18 @@ DbUnlock(Db * db, DbRef * ref)
* require some items to be evicted. */ * require some items to be evicted. */
DbCacheEvict(db); DbCacheEvict(db);
destroy = 0; destroy = false;
} }
else else
{ {
destroy = 1; destroy = true;
} }
Free(key); Free(key);
} }
else else
{ {
destroy = 1; destroy = true;
} }
if (destroy) if (destroy)
@ -849,16 +849,16 @@ DbUnlock(Db * db, DbRef * ref)
} }
pthread_mutex_unlock(&db->lock); pthread_mutex_unlock(&db->lock);
return 1; return true;
} }
int bool
DbExists(Db * db, size_t nArgs,...) DbExists(Db * db, size_t nArgs,...)
{ {
va_list ap; va_list ap;
Array *args; Array *args;
char *file; char *file;
int ret; bool ret;
va_start(ap, nArgs); va_start(ap, nArgs);
args = ArrayFromVarArgs(nArgs, ap); args = ArrayFromVarArgs(nArgs, ap);
@ -866,13 +866,13 @@ DbExists(Db * db, size_t nArgs,...)
if (!args) if (!args)
{ {
return 0; return false;
} }
pthread_mutex_lock(&db->lock); pthread_mutex_lock(&db->lock);
file = DbFileName(db, args); file = DbFileName(db, args);
ret = UtilLastModified(file) != 0; ret = (UtilLastModified(file) != 0);
pthread_mutex_unlock(&db->lock); pthread_mutex_unlock(&db->lock);
@ -954,15 +954,15 @@ DbJson(DbRef * ref)
return ref ? ref->json : NULL; return ref ? ref->json : NULL;
} }
int bool
DbJsonSet(DbRef * ref, HashMap * json) DbJsonSet(DbRef * ref, HashMap * json)
{ {
if (!ref || !json) if (!ref || !json)
{ {
return 0; return false;
} }
JsonFree(ref->json); JsonFree(ref->json);
ref->json = JsonDuplicate(json); ref->json = JsonDuplicate(json);
return 1; return true;
} }

View file

@ -247,12 +247,12 @@ HashMapGet(HashMap * map, const char *key)
return NULL; return NULL;
} }
int bool
HashMapIterateReentrant(HashMap * map, char **key, void **value, size_t * i) HashMapIterateReentrant(HashMap * map, char **key, void **value, size_t * i)
{ {
if (!map) if (!map)
{ {
return 0; return false;
} }
if (*i >= map->capacity) if (*i >= map->capacity)
@ -260,7 +260,7 @@ HashMapIterateReentrant(HashMap * map, char **key, void **value, size_t * i)
*i = 0; *i = 0;
*key = NULL; *key = NULL;
*value = NULL; *value = NULL;
return 0; return false;
} }
while (*i < map->capacity) while (*i < map->capacity)
@ -273,20 +273,20 @@ HashMapIterateReentrant(HashMap * map, char **key, void **value, size_t * i)
{ {
*key = bucket->key; *key = bucket->key;
*value = bucket->value; *value = bucket->value;
return 1; return true;
} }
} }
*i = 0; *i = 0;
return 0; return false;
} }
int bool
HashMapIterate(HashMap * map, char **key, void **value) HashMapIterate(HashMap * map, char **key, void **value)
{ {
if (!map) if (!map)
{ {
return 0; return false;
} }
else else
{ {

View file

@ -143,7 +143,7 @@ HttpRouterFree(HttpRouter * router)
Free(router); Free(router);
} }
int bool
HttpRouterAdd(HttpRouter * router, char *regPath, HttpRouteFunc * exec) HttpRouterAdd(HttpRouter * router, char *regPath, HttpRouteFunc * exec)
{ {
RouteNode *node; RouteNode *node;
@ -152,19 +152,19 @@ HttpRouterAdd(HttpRouter * router, char *regPath, HttpRouteFunc * exec)
if (!router || !regPath || !exec) if (!router || !regPath || !exec)
{ {
return 0; return false;
} }
if (StrEquals(regPath, "/")) if (StrEquals(regPath, "/"))
{ {
router->root->exec = exec; router->root->exec = exec;
return 1; return true;
} }
regPath = StrDuplicate(regPath); regPath = StrDuplicate(regPath);
if (!regPath) if (!regPath)
{ {
return 0; return false;
} }
tmp = regPath; tmp = regPath;
@ -187,10 +187,10 @@ HttpRouterAdd(HttpRouter * router, char *regPath, HttpRouteFunc * exec)
Free(regPath); Free(regPath);
return 1; return true;
} }
int bool
HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret) HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret)
{ {
RouteNode *node; RouteNode *node;
@ -199,17 +199,17 @@ HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret)
HttpRouteFunc *exec = NULL; HttpRouteFunc *exec = NULL;
Array *matches = NULL; Array *matches = NULL;
size_t i; size_t i;
int retval; bool retval;
if (!router || !path) if (!router || !path)
{ {
return 0; return false;
} }
matches = ArrayCreate(); matches = ArrayCreate();
if (!matches) if (!matches)
{ {
return 0; return false;
} }
node = router->root; node = router->root;
@ -280,7 +280,7 @@ HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret)
if (!exec) if (!exec)
{ {
retval = 0; retval = false;
goto finish; goto finish;
} }
@ -293,7 +293,7 @@ HttpRouterRoute(HttpRouter * router, char *path, void *args, void **ret)
exec(matches, args); exec(matches, args);
} }
retval = 1; retval = true;
finish: finish:
for (i = 0; i < ArraySize(matches); i++) for (i = 0; i < ArraySize(matches); i++)

View file

@ -715,25 +715,25 @@ HttpServerEventThread(void *args)
return NULL; return NULL;
} }
int bool
HttpServerStart(HttpServer * server) HttpServerStart(HttpServer * server)
{ {
if (!server) if (!server)
{ {
return 0; return false;
} }
if (server->isRunning) if (server->isRunning)
{ {
return 1; return true;
} }
if (pthread_create(&server->socketThread, NULL, HttpServerEventThread, server) != 0) if (pthread_create(&server->socketThread, NULL, HttpServerEventThread, server) != 0)
{ {
return 0; return false;
} }
return 1; return true;
} }
void void

View file

@ -75,39 +75,39 @@ QueueFree(Queue * q)
Free(q); Free(q);
} }
int bool
QueueFull(Queue * q) QueueFull(Queue * q)
{ {
if (!q) if (!q)
{ {
return 0; return false;
} }
return ((q->front == q->rear + 1) || (q->front == 0 && q->rear == q->size - 1)); return ((q->front == q->rear + 1) || (q->front == 0 && q->rear == q->size - 1));
} }
int bool
QueueEmpty(Queue * q) QueueEmpty(Queue * q)
{ {
if (!q) if (!q)
{ {
return 0; return false;
} }
return q->front == q->size + 1; return (q->front == (q->size + 1));
} }
int bool
QueuePush(Queue * q, void *element) QueuePush(Queue * q, void *element)
{ {
if (!q || !element) if (!q || !element)
{ {
return 0; return false;
} }
if (QueueFull(q)) if (QueueFull(q))
{ {
return 0; return false;
} }
if (q->front == q->size + 1) if (q->front == q->size + 1)
@ -126,7 +126,7 @@ QueuePush(Queue * q, void *element)
q->items[q->rear] = element; q->items[q->rear] = element;
return 1; return true;
} }
void * void *

View file

@ -549,13 +549,13 @@ StreamSeek(Stream * stream, off_t offset, int whence)
return result; return result;
} }
int bool
StreamEof(Stream * stream) StreamEof(Stream * stream)
{ {
return stream && (stream->flags & STREAM_EOF); return stream && (stream->flags & STREAM_EOF);
} }
int bool
StreamError(Stream * stream) StreamError(Stream * stream)
{ {
return stream && (stream->flags & STREAM_ERR); return stream && (stream->flags & STREAM_ERR);

View file

@ -52,6 +52,7 @@
#include <stddef.h> #include <stddef.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdbool.h>
/** /**
* The functions in this API operate on an array structure which is * The functions in this API operate on an array structure which is
@ -98,7 +99,7 @@ extern void *ArrayGet(Array *, size_t);
* This function returns a boolean value indicating whether or not it * This function returns a boolean value indicating whether or not it
* suceeded. * suceeded.
*/ */
extern int ArrayInsert(Array *, size_t, void *); extern bool ArrayInsert(Array *, size_t, void *);
/** /**
* Set the value at the specified index in the specified array to the * Set the value at the specified index in the specified array to the
@ -115,7 +116,7 @@ extern void *ArraySet(Array *, size_t, void *);
* return value as * return value as
* .Fn ArrayInsert . * .Fn ArrayInsert .
*/ */
extern int ArrayAdd(Array *, void *); extern bool ArrayAdd(Array *, void *);
/** /**
* Remove the element at the specified index from the specified array. * Remove the element at the specified index from the specified array.
@ -146,7 +147,7 @@ extern void ArraySort(Array *, int (*) (void *, void *));
* .P * .P
* This is a relatively expensive operation. The array must first be * This is a relatively expensive operation. The array must first be
* duplicated. Then it is sorted, then it is iterated from beginning * duplicated. Then it is sorted, then it is iterated from beginning
* to end to remove duplicate entires. Note that the comparison * to end to remove duplicate entries. Note that the comparison
* function is executed on each element at least twice. * function is executed on each element at least twice.
*/ */
extern Array *ArrayUnique(Array *, int (*) (void *, void *)); extern Array *ArrayUnique(Array *, int (*) (void *, void *));
@ -167,7 +168,7 @@ extern Array *ArrayReverse(Array *);
* array. This function is intended to be used by functions that return * array. This function is intended to be used by functions that return
* relatively read-only arrays that will be long-lived. * relatively read-only arrays that will be long-lived.
*/ */
extern int ArrayTrim(Array *); extern bool ArrayTrim(Array *);
/** /**
* Convert a variadic arguments list into an Array. In most cases, the * Convert a variadic arguments list into an Array. In most cases, the

View file

@ -39,6 +39,7 @@
*/ */
#include <stddef.h> #include <stddef.h>
#include <stdbool.h>
/** /**
* This function computes the amount of bytes needed to store a message * This function computes the amount of bytes needed to store a message
@ -93,7 +94,7 @@ extern void
* this means it will only fail if a bigger string is necessary, but it * this means it will only fail if a bigger string is necessary, but it
* could not be automatically allocated on the heap. * could not be automatically allocated on the heap.
*/ */
extern int extern bool
Base64Pad(char **, size_t); Base64Pad(char **, size_t);
#endif /* CYTOPLASM_BASE64_H */ #endif /* CYTOPLASM_BASE64_H */

View file

@ -24,6 +24,15 @@
#ifndef CYTOPLASM_CYTOPLASM_H #ifndef CYTOPLASM_CYTOPLASM_H
#define CYTOPLASM_CYTOPLASM_H #define CYTOPLASM_CYTOPLASM_H
#define CYTOPLASM_VERSION_MAJOR 0
#define CYTOPLASM_VERSION_MINOR 4
#define CYTOPLASM_VERSION_PATCH 1
#define CYTOPLASM_VERSION ((CYTOPLASM_VERSION_MAJOR * 10000) + (CYTOPLASM_VERSION_MINOR * 100) + (CYTOPLASM_VERSION_PATCH))
#define CYTOPLASM_VERSION_ALPHA 0
#define CYTOPLASM_VERSION_BETA 0
#define CYTOPLASM_VERSION_STABLE (!CYTOPLASM_VERSION_ALPHA && !CYTOPLASM_VERSION_BETA)
/*** /***
* @Nm Cytoplasm * @Nm Cytoplasm
* @Nd A simple API that provides metadata on the library itself. * @Nd A simple API that provides metadata on the library itself.
@ -34,18 +43,8 @@
* currently loaded library. * currently loaded library.
*/ */
/** */
/** extern int CytoplasmGetVersion(void);
* Get the name that this library was compiled with. In most cases,
* this will be hard-coded to "Cytoplasm", but it may differ if, for
* some reason, there exists another ABI-compatible library that
* wishes to report its name.
*
* This function really only exists because the information is
* available along side of the version information so for
* consistency, it made sense to include both.
*/
extern char * CytoplasmGetName(void);
/** /**
* Get the library version. This will be useful mostly for printing * Get the library version. This will be useful mostly for printing
@ -55,6 +54,6 @@ extern char * CytoplasmGetName(void);
* This function returns a string, which should usually be able to be * This function returns a string, which should usually be able to be
* parsed using sscanf() if absolutely necessary. * parsed using sscanf() if absolutely necessary.
*/ */
extern char * CytoplasmGetVersion(void); extern const char * CytoplasmGetVersionStr(void);
#endif /* CYTOPLASM_CYTOPLASM_H */ #endif /* CYTOPLASM_CYTOPLASM_H */

View file

@ -37,6 +37,7 @@
*/ */
#include <stddef.h> #include <stddef.h>
#include <stdbool.h>
#include "HashMap.h" #include "HashMap.h"
#include "Array.h" #include "Array.h"
@ -113,7 +114,7 @@ extern DbRef * DbLock(Db *, size_t,...);
* This function assumes the object is not locked, otherwise undefined * This function assumes the object is not locked, otherwise undefined
* behavior will result. * behavior will result.
*/ */
extern int DbDelete(Db *, size_t,...); extern bool DbDelete(Db *, size_t,...);
/** /**
* Unlock an object and return it back to the database. This function * Unlock an object and return it back to the database. This function
@ -121,7 +122,7 @@ extern int DbDelete(Db *, size_t,...);
* read cache; writes are always immediate to ensure data integrity in * read cache; writes are always immediate to ensure data integrity in
* the event of a system failure. * the event of a system failure.
*/ */
extern int DbUnlock(Db *, DbRef *); extern bool DbUnlock(Db *, DbRef *);
/** /**
* Check the existence of the given database object in a more efficient * Check the existence of the given database object in a more efficient
@ -130,7 +131,7 @@ extern int DbUnlock(Db *, DbRef *);
* This function does not lock the object, nor does it load it into * This function does not lock the object, nor does it load it into
* memory if it exists. * memory if it exists.
*/ */
extern int DbExists(Db *, size_t,...); extern bool DbExists(Db *, size_t,...);
/** /**
* List all of the objects at a given path. Unlike the other varargs * List all of the objects at a given path. Unlike the other varargs
@ -164,6 +165,6 @@ extern HashMap * DbJson(DbRef *);
* replace it with new JSON. This is more efficient than duplicating * replace it with new JSON. This is more efficient than duplicating
* a separate object into the database reference. * a separate object into the database reference.
*/ */
extern int DbJsonSet(DbRef *, HashMap *); extern bool DbJsonSet(DbRef *, HashMap *);
#endif #endif

View file

@ -150,7 +150,7 @@ extern void * HashMapDelete(HashMap *, const char *);
* insertions or deletions occur during the iteration. This * insertions or deletions occur during the iteration. This
* functionality has not been tested, and will likely not work. * functionality has not been tested, and will likely not work.
*/ */
extern int HashMapIterate(HashMap *, char **, void **); extern bool HashMapIterate(HashMap *, char **, void **);
/** /**
* A reentrant version of * A reentrant version of
@ -163,7 +163,7 @@ extern int HashMapIterate(HashMap *, char **, void **);
* .Pp * .Pp
* The cursor should be initialized to 0 at the start of iteration. * The cursor should be initialized to 0 at the start of iteration.
*/ */
extern int extern bool
HashMapIterateReentrant(HashMap *, char **, void **, size_t *); HashMapIterateReentrant(HashMap *, char **, void **, size_t *);
/** /**

View file

@ -74,7 +74,7 @@ extern void HttpRouterFree(HttpRouter *);
* .Pa /some/path/(.*)/parts * .Pa /some/path/(.*)/parts
* to work as one would expect. * to work as one would expect.
*/ */
extern int HttpRouterAdd(HttpRouter *, char *, HttpRouteFunc *); extern bool HttpRouterAdd(HttpRouter *, char *, HttpRouteFunc *);
/** /**
* Route the specified request path using the specified routing * Route the specified request path using the specified routing
@ -86,6 +86,6 @@ extern int HttpRouterAdd(HttpRouter *, char *, HttpRouteFunc *);
* how to handle, and the pointer to a void pointer is where the * how to handle, and the pointer to a void pointer is where the
* route function's response will be placed. * route function's response will be placed.
*/ */
extern int HttpRouterRoute(HttpRouter *, char *, void *, void **); extern bool HttpRouterRoute(HttpRouter *, char *, void *, void **);
#endif /* CYTOPLASM_HTTPROUTER_H */ #endif /* CYTOPLASM_HTTPROUTER_H */

View file

@ -47,6 +47,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdbool.h>
#include "Http.h" #include "Http.h"
#include "HashMap.h" #include "HashMap.h"
@ -133,7 +134,7 @@ extern void HttpServerFree(HttpServer *);
* caller can continue working while the HTTP server is running in a * caller can continue working while the HTTP server is running in a
* separate thread and managing a pool of threads to handle responses. * separate thread and managing a pool of threads to handle responses.
*/ */
extern int HttpServerStart(HttpServer *); extern bool HttpServerStart(HttpServer *);
/** /**
* Typically, at some point after calling * Typically, at some point after calling

View file

@ -46,6 +46,7 @@
*/ */
#include <stddef.h> #include <stddef.h>
#include <stdbool.h>
/** /**
* These functions operate on a queue structure that is opaque to the * These functions operate on a queue structure that is opaque to the
@ -73,7 +74,7 @@ extern void QueueFree(Queue *);
* value indicating whether or not the push succeeded. Pushing items * value indicating whether or not the push succeeded. Pushing items
* into the queue will fail if the queue is full. * into the queue will fail if the queue is full.
*/ */
extern int QueuePush(Queue *, void *); extern bool QueuePush(Queue *, void *);
/** /**
* Pop an element out of the queue. This function returns NULL if the * Pop an element out of the queue. This function returns NULL if the
@ -95,11 +96,11 @@ extern void * QueuePeek(Queue *);
/** /**
* Determine whether or not the queue is full. * Determine whether or not the queue is full.
*/ */
extern int QueueFull(Queue *); extern bool QueueFull(Queue *);
/** /**
* Determine whether or not the queue is empty. * Determine whether or not the queue is empty.
*/ */
extern int QueueEmpty(Queue *); extern bool QueueEmpty(Queue *);
#endif #endif

View file

@ -40,6 +40,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <stdint.h> #include <stdint.h>
#include <stdbool.h>
/** /**
* An opaque structure analogous to C's FILE pointers. * An opaque structure analogous to C's FILE pointers.
@ -173,7 +174,7 @@ extern off_t StreamSeek(Stream *, off_t, int);
* .Xr feof 3 * .Xr feof 3
* function. * function.
*/ */
extern int StreamEof(Stream *); extern bool StreamEof(Stream *);
/** /**
* Test the stream for an error condition, returning a boolean value * Test the stream for an error condition, returning a boolean value
@ -182,7 +183,7 @@ extern int StreamEof(Stream *);
* .Xr ferror 3 * .Xr ferror 3
* function. * function.
*/ */
extern int StreamError(Stream *); extern bool StreamError(Stream *);
/** /**
* Clear the error condition associated with the given stream, allowing * Clear the error condition associated with the given stream, allowing