]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add ser_skip() and ser_set() to serialisation functions
authorAlain Spineux <alain@baculasystems.com>
Wed, 5 Oct 2022 13:15:21 +0000 (15:15 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:59 +0000 (13:56 +0200)
- ser_skip() skip some bytes without writing anything
- ser_set() works like memset()

bacula/src/lib/serial.c
bacula/src/lib/serial.h

index 497ad93491c7c4cf92103791efaae18b71e04d0a..f9b2543b114c7383198f3432964676b6a537b54a 100644 (file)
@@ -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.  */
 
index 54ed407695a026dba1184b517a049a5b02e8103a..dcc77b8805b919e665f3329bb858030e8917deed 100644 (file)
@@ -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  */