f201daec89
catalog_update() would call strbuf_cleanup(NULL) on allocation error. CID #1390928.
46 lines
943 B
C
46 lines
943 B
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
/***
|
|
This file is part of systemd.
|
|
|
|
Copyright 2012 Kay Sievers <kay@vrfy.org>
|
|
***/
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <sys/types.h>
|
|
|
|
#include "macro.h"
|
|
|
|
struct strbuf {
|
|
char *buf;
|
|
size_t len;
|
|
struct strbuf_node *root;
|
|
|
|
size_t nodes_count;
|
|
size_t in_count;
|
|
size_t in_len;
|
|
size_t dedup_len;
|
|
size_t dedup_count;
|
|
};
|
|
|
|
struct strbuf_node {
|
|
size_t value_off;
|
|
size_t value_len;
|
|
|
|
struct strbuf_child_entry *children;
|
|
uint8_t children_count;
|
|
};
|
|
|
|
struct strbuf_child_entry {
|
|
uint8_t c;
|
|
struct strbuf_node *child;
|
|
};
|
|
|
|
struct strbuf *strbuf_new(void);
|
|
ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len);
|
|
void strbuf_complete(struct strbuf *str);
|
|
void strbuf_cleanup(struct strbuf *str);
|
|
DEFINE_TRIVIAL_CLEANUP_FUNC(struct strbuf*, strbuf_cleanup);
|