projects
/
project
/
uci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
implement history parsing
[project/uci.git]
/
err.h
diff --git
a/err.h
b/err.h
index
2e1e606
..
078fdbe
100644
(file)
--- a/
err.h
+++ b/
err.h
@@
-27,6
+27,7
@@
* in the context.
*/
#define UCI_THROW(ctx, err) do { \
* in the context.
*/
#define UCI_THROW(ctx, err) do { \
+ DPRINTF("Exception: %s in %s, %s:%d\n", #err, __func__, __FILE__, __LINE__); \
longjmp(ctx->trap, err); \
} while (0)
longjmp(ctx->trap, err); \
} while (0)
@@
-40,10
+41,12
@@
* and UCI_TRAP_RESTORE.
*/
#define UCI_HANDLE_ERR(ctx) do { \
* and UCI_TRAP_RESTORE.
*/
#define UCI_HANDLE_ERR(ctx) do { \
- int __val
;
\
+ int __val
= 0;
\
if (!ctx) \
return UCI_ERR_INVAL; \
if (!ctx) \
return UCI_ERR_INVAL; \
- __val = setjmp(ctx->trap); \
+ if (!ctx->internal) \
+ __val = setjmp(ctx->trap); \
+ ctx->internal = false; \
if (__val) { \
ctx->errno = __val; \
return __val; \
if (__val) { \
ctx->errno = __val; \
return __val; \
@@
-70,6
+73,11
@@
memcpy(ctx->trap, __old_trap, sizeof(ctx->trap)); \
} while(0)
memcpy(ctx->trap, __old_trap, sizeof(ctx->trap)); \
} while(0)
+#define UCI_INTERNAL(func, ctx, ...) do { \
+ ctx->internal = true; \
+ func(ctx, __VA_ARGS__); \
+} while (0);
+
/*
* check the specified condition.
* throw an invalid argument exception if it's false
/*
* check the specified condition.
* throw an invalid argument exception if it's false