diff options
author | Michael Stone <michael@laptop.org> | 2009-12-09 03:52:26 (GMT) |
---|---|---|
committer | Michael Stone <michael@laptop.org> | 2009-12-09 03:52:26 (GMT) |
commit | 38bb9be39486214eeb7e0f4273fa0051ed880adc (patch) | |
tree | d873ffc29ec34d5c19e527d52ac62d540da7bc9d | |
parent | 88a1ff04953df5c40109e9e023d33cb15eb71249 (diff) |
Add INIT() and COPY() operators from dnshash.
-rw-r--r-- | rainbow/nss/cgen.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/rainbow/nss/cgen.h b/rainbow/nss/cgen.h index 5ef151a..81bc895 100644 --- a/rainbow/nss/cgen.h +++ b/rainbow/nss/cgen.h @@ -6,3 +6,5 @@ #define CHK(EXPR, MSG, ERR_LABEL) {if(EXPR) { PERROR(MSG); goto ERR_LABEL;}} #define LET(LETEXPR, CONDEXPR, MSG, ERR_LABEL) LETEXPR; if (CONDEXPR) { PERROR(MSG); goto ERR_LABEL;} #define TST(EXPR, TRUE, MSG, ERR_LABEL) {if (EXPR) {(TRUE); PERROR(MSG); goto ERR_LABEL;}} +#define INIT(BUF, LEN, TYPE, INIT, MSG, ERR_LABEL) { CHK(*(LEN) < sizeof(TYPE), (MSG), ERR_LABEL); (*(TYPE*)(*(BUF))) = (INIT); (*(LEN)) -= sizeof(TYPE); (*(BUF)) += sizeof(TYPE); } +#define COPY(BUF, LEN, TYPE, SRC, MSG, ERR_LABEL) { CHK(*(LEN) < sizeof(TYPE), (MSG), ERR_LABEL); memcpy(*(BUF), (SRC), sizeof(TYPE)); (*(LEN)) -= sizeof(TYPE); (*(BUF)) += sizeof(TYPE); } |