migration/qemu-file: add qemu_put_counted_string()
authorVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Tue, 13 Mar 2018 19:34:00 +0000 (15:34 -0400)
committerJohn Snow <jsnow@redhat.com>
Tue, 13 Mar 2018 21:05:55 +0000 (17:05 -0400)
Add function opposite to qemu_get_counted_string.
qemu_put_counted_string puts one-byte length of the string (string
should not be longer than 255 characters), and then it puts the string,
without last zero byte.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-id: 20180313180320.339796-9-vsementsov@virtuozzo.com

migration/qemu-file.c
migration/qemu-file.h

index 2ab2bf362d8a689f48875ed367b4a3095c3d9aea..e85f501f86e1f319112279a50610955fc81e7ea1 100644 (file)
@@ -733,6 +733,19 @@ size_t qemu_get_counted_string(QEMUFile *f, char buf[256])
     return res == len ? res : 0;
 }
 
+/*
+ * Put a string with one preceding byte containing its length. The length of
+ * the string should be less than 256.
+ */
+void qemu_put_counted_string(QEMUFile *f, const char *str)
+{
+    size_t len = strlen(str);
+
+    assert(len < 256);
+    qemu_put_byte(f, len);
+    qemu_put_buffer(f, (const uint8_t *)str, len);
+}
+
 /*
  * Set the blocking state of the QEMUFile.
  * Note: On some transports the OS only keeps a single blocking state for
index aae4e5ed36d5fcddd6584ea11ade6005622a05ba..f4f356ab12af35e99d4b85be79af268b6a351237 100644 (file)
@@ -174,4 +174,6 @@ size_t ram_control_save_page(QEMUFile *f, ram_addr_t block_offset,
                              ram_addr_t offset, size_t size,
                              uint64_t *bytes_sent);
 
+void qemu_put_counted_string(QEMUFile *f, const char *name);
+
 #endif