File: print_safe_buffer.c

package info (click to toggle)
radvd 1%3A2.20-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,416 kB
  • sloc: ansic: 5,780; sh: 5,467; yacc: 1,002; makefile: 265; lex: 168
file content (33 lines) | stat: -rw-r--r-- 912 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#include "print_safe_buffer.h"
#include "../config.h"
#include "../radvd.h"

#include <stdio.h>

void print_safe_buffer(struct safe_buffer const *sb)
{
	char buf[4096];
	snprint_safe_buffer(buf, sizeof(buf), sb);
	printf("%s", buf);
}

size_t snprint_safe_buffer(char *s, size_t size, struct safe_buffer const *sb)
{
	size_t count = 0;

	count += snprintf((s + count), (size - count), "unsigned char expected[] = { /* sb.allocated = %ld, sb.used = %ld */", sb->allocated, sb->used);

	for (size_t i = 0; i < sb->used; ++i) {
		if (i % 8 == 0) {
			count += snprintf((s + count), (size - count), "\n\t0x%02x,", sb->buffer[i]);
		} else {
			count += snprintf((s + count), (size - count), " 0x%02x,", sb->buffer[i]);
		}
	}
	/* Do not remove the final byte's comma. Only JSON requires the comma is
	 * removed, and this is not JSON. */

	count += snprintf((s + count), (size - count), "\n};\n");
	return count;
}