From: Alain Spineux Date: Wed, 5 Oct 2022 13:15:21 +0000 (+0200) Subject: Add ser_skip() and ser_set() to serialisation functions X-Git-Tag: Beta-15.0.0~411 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b9aa7c6580a56cc884c626df4fa3f027c111613;p=thirdparty%2Fbacula.git Add ser_skip() and ser_set() to serialisation functions - ser_skip() skip some bytes without writing anything - ser_set() works like memset() --- diff --git a/bacula/src/lib/serial.c b/bacula/src/lib/serial.c index 497ad9349..f9b2543b1 100644 --- a/bacula/src/lib/serial.c +++ b/bacula/src/lib/serial.c @@ -174,6 +174,12 @@ void serial_string(uint8_t * * const ptr, const char * const str) // Dmsg2(000, "ser src=%s dest=%s\n", src, dest); } +/* skip some bytes without writing anything */ + +void serial_skip(uint8_t * * const ptr, int len) +{ + *ptr += len; +} /* unserial_int16 -- Unserialise a signed 16 bit integer. */ diff --git a/bacula/src/lib/serial.h b/bacula/src/lib/serial.h index 54ed40769..dcc77b880 100644 --- a/bacula/src/lib/serial.h +++ b/bacula/src/lib/serial.h @@ -33,6 +33,7 @@ extern void serial_uint64(uint8_t * * const ptr, const uint64_t v); extern void serial_btime(uint8_t * * const ptr, const btime_t v); extern void serial_float64(uint8_t * * const ptr, const float64_t v); extern void serial_string(uint8_t * * const ptr, const char * const str); +extern void serial_skip(uint8_t * * const ptr, int len); extern int16_t unserial_int16(uint8_t * * const ptr); extern uint16_t unserial_uint16(uint8_t * * const ptr); @@ -134,12 +135,18 @@ extern void unserial_string(uint8_t * * const ptr, char * const str, int max); /* Binary byte stream len bytes not requiring serialisation */ #define ser_bytes(x, len) memcpy(ser_ptr, (x), (len)), ser_ptr += (len) +/* initialize len bytes to x using memset() */ +#define ser_set(x, len) memset(ser_ptr, (x), (len)), ser_ptr += (len) + /* Binary byte stream not requiring serialisation (length obtained by sizeof) */ #define ser_buffer(x) ser_bytes((x), (sizeof (x))) /* Binary string not requiring serialization */ #define ser_string(x) serial_string(&ser_ptr, (x)) +/* skip some bytes without writing anything */ +#define ser_skip(len) serial_skip(&ser_ptr, len) + /* Unserialisation */ /* 8 bit signed integer */