mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-21 16:14:23 +01:00
We don't handle \u, since we assume everyone sane is using UTF-8. We'd still have to reject '\u0000' and maybe other weird cases if we did. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
40 lines
1.3 KiB
C
40 lines
1.3 KiB
C
#ifndef LIGHTNING_COMMON_JSON_ESCAPED_H
|
|
#define LIGHTNING_COMMON_JSON_ESCAPED_H
|
|
#include "config.h"
|
|
#include <common/json.h>
|
|
|
|
/* Type differentiation for a correctly-escaped JSON string */
|
|
struct json_escaped {
|
|
/* NUL terminated string. */
|
|
char s[1];
|
|
};
|
|
|
|
/* @str be a valid UTF-8 string */
|
|
struct json_escaped *json_escape(const tal_t *ctx, const char *str TAKES);
|
|
|
|
/* Extract a JSON-escaped string. */
|
|
struct json_escaped *json_tok_escaped_string(const tal_t *ctx,
|
|
const char *buffer,
|
|
const jsmntok_t *tok);
|
|
|
|
/* Is @esc equal to @str */
|
|
bool json_escaped_streq(const struct json_escaped *esc, const char *str);
|
|
|
|
|
|
/* Are two escaped json strings identical? */
|
|
bool json_escaped_eq(const struct json_escaped *a,
|
|
const struct json_escaped *b);
|
|
|
|
void json_add_escaped_string(struct json_result *result,
|
|
const char *fieldname,
|
|
const struct json_escaped *esc TAKES);
|
|
|
|
/* Internal routine for creating json_escaped from bytes. */
|
|
struct json_escaped *json_escaped_string_(const tal_t *ctx,
|
|
const void *bytes, size_t len);
|
|
|
|
/* Be very careful here! Can fail! Doesn't handle \u: use UTF-8 please. */
|
|
const char *json_escaped_unescape(const tal_t *ctx,
|
|
const struct json_escaped *esc);
|
|
#endif /* LIGHTNING_COMMON_JSON_ESCAPED_H */
|