Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2007 Pekka Riikonen
+ Copyright (C) 2007 - 2008 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
*/
-/****h* silcutil/SILC Errno
+/****h* silcutil/Errno Interface
*
* DESCRIPTION
*
* // Get the detailed reason for the error too
* if (silc_some_routine() == FALSE) {
* fprintf(stderr, "%s (%d) (%s)", silc_errno_string(silc_errno),
- * silc_errno, silc_errno_reason);
+ * silc_errno, silc_errno_reason());
* exit(1);
* }
*
#ifndef SILCERRNO_H
#define SILCERRNO_H
-/****d* silcutil/SilcErrnoAPI/SilcResult
+/****d* silcutil/SilcResult
*
* NAME
*
SILC_ERR_INTERRUPTED = 23, /* Interrupted */
SILC_ERR_NOT_VALID = 24, /* Not valid */
SILC_ERR_LIMIT = 25, /* Limit reached */
+ SILC_ERR_SYNTAX = 26, /* Syntax error */
/* File, directory and device errors */
SILC_ERR_NO_SUCH_FILE = 40, /* No such file */
SILC_ERR_NET_DOWN = 82, /* Network is down */
SILC_ERR_EOS = 83, /* End of stream */
+ /* Regular expression errors */
+ SILC_ERR_REGEX_PAREN = 100, /* Unmatched parenthesis */
+ SILC_ERR_REGEX_HEX = 101, /* Bad hex number */
+ SILC_ERR_REGEX_REG = 102, /* Bad register number */
+ SILC_ERR_REGEX_SPECIAL = 103, /* Unmatched special character */
+ SILC_ERR_REGEX_TOO_COMPLEX = 104, /* Too complex expression */
+ SILC_ERR_REGEX_OPCODE = 105, /* Bad regex opcode */
+ SILC_ERR_REGEX_REPEAT = 106, /* Bad repeat value */
+
SILC_ERR_MAX,
} SilcResult;
/***/
-/****d* silcutil/SilcErrnoAPI/silc_errno
+/****d* silcutil/silc_errno
*
* NAME
*
***/
#define silc_errno silc_get_errno()
-/****f* silcutil/SilcErrnoAPI/silc_errno_string
+/****f* silcutil/silc_errno_string
*
* NAME
*
***/
const char *silc_errno_string(SilcResult error);
-/****d* silcutil/SilcErrnoAPI/silc_errno_string
+/****d* silcutil/silc_errno_reason
*
* NAME
*
/* Low-level routines for the error handling. */
-/* Return last error */
-SilcResult silc_get_errno(void);
-
-/* Set error */
+/****d* silcutil/silc_set_errno
+ *
+ * NAME
+ *
+ * void silc_set_errno(SilcResult error);
+ *
+ * DESCRIPTION
+ *
+ * A low level routine to set the error for current thread.
+ *
+ ***/
void silc_set_errno(SilcResult error);
-/* Set error, cannot fail. */
+/****d* silcutil/silc_set_errno_nofail
+ *
+ * NAME
+ *
+ * void silc_set_errno_nofail(SilcResult error);
+ *
+ * DESCRIPTION
+ *
+ * A low level routine to set the error for current thread. This call
+ * itself cannot cause setting of errno.
+ *
+ ***/
void silc_set_errno_nofail(SilcResult error);
-/* Set error and reason string. */
+/****d* silcutil/silc_set_errno_reason
+ *
+ * NAME
+ *
+ * void silc_set_errno_reason(SilcResult error, const char *format, ...);
+ *
+ * DESCRIPTION
+ *
+ * A low level routine to set the error reason for current thread.
+ *
+ ***/
void silc_set_errno_reason(SilcResult error, const char *format, ...);
-/* Set error and reason string, cannot fail. */
+/****d* silcutil/silc_set_errno_reason_nofail
+ *
+ * NAME
+ *
+ * void silc_set_errno_reason_nofail(SilcResult error,
+ * const char *format, ...);
+ *
+ * DESCRIPTION
+ *
+ * A low level routine to set the error reason for current thread. This
+ * call itself cannot cause setting of errno.
+ *
+ ***/
void silc_set_errno_reason_nofail(SilcResult error, const char *format, ...);
-/* Set error from POSIX errno */
+/****d* silcutil/silc_set_errno_posix
+ *
+ * NAME
+ *
+ * void silc_set_errno_posix(int error);
+ *
+ * DESCRIPTION
+ *
+ * A low level routine to set the error for current thread from POSIX
+ * errno.
+ *
+ ***/
void silc_set_errno_posix(int error);
+/* Return last error */
+SilcResult silc_get_errno(void);
+
#endif /* SILCERRNO_H */