diff options
| author | Muhammad Moinur Rahman <bofh@FreeBSD.org> | 2026-01-07 19:19:44 +0100 |
|---|---|---|
| committer | Muhammad Moinur Rahman <bofh@FreeBSD.org> | 2026-01-07 19:19:44 +0100 |
| commit | 1dd83cf7e527ff29d734f6a2c8f9b61d39b41d94 (patch) | |
| tree | da5185757a055488bdc9cbb7d17077a8f36596a9 /src/ucl_emitter_utils.c | |
| parent | 1e2f270469c61337ef7f5f92ab93f691e5d86492 (diff) | |
Import libucl 0.9.3vendor/libucl/0.9.3vendor/libucl
Diffstat (limited to 'src/ucl_emitter_utils.c')
| -rw-r--r-- | src/ucl_emitter_utils.c | 279 |
1 files changed, 126 insertions, 153 deletions
diff --git a/src/ucl_emitter_utils.c b/src/ucl_emitter_utils.c index b9f7de8f0224..7f966228bba2 100644 --- a/src/ucl_emitter_utils.c +++ b/src/ucl_emitter_utils.c @@ -43,39 +43,17 @@ static const struct ucl_emitter_context ucl_standard_emitters[] = { .name = "json", .id = UCL_EMIT_JSON, .func = NULL, - .ops = &ucl_standartd_emitter_ops[UCL_EMIT_JSON] - }, - [UCL_EMIT_JSON_COMPACT] = { - .name = "json_compact", - .id = UCL_EMIT_JSON_COMPACT, - .func = NULL, - .ops = &ucl_standartd_emitter_ops[UCL_EMIT_JSON_COMPACT] - }, - [UCL_EMIT_CONFIG] = { - .name = "config", - .id = UCL_EMIT_CONFIG, - .func = NULL, - .ops = &ucl_standartd_emitter_ops[UCL_EMIT_CONFIG] - }, - [UCL_EMIT_YAML] = { - .name = "yaml", - .id = UCL_EMIT_YAML, - .func = NULL, - .ops = &ucl_standartd_emitter_ops[UCL_EMIT_YAML] - }, - [UCL_EMIT_MSGPACK] = { - .name = "msgpack", - .id = UCL_EMIT_MSGPACK, - .func = NULL, - .ops = &ucl_standartd_emitter_ops[UCL_EMIT_MSGPACK] - } -}; + .ops = &ucl_standartd_emitter_ops[UCL_EMIT_JSON]}, + [UCL_EMIT_JSON_COMPACT] = {.name = "json_compact", .id = UCL_EMIT_JSON_COMPACT, .func = NULL, .ops = &ucl_standartd_emitter_ops[UCL_EMIT_JSON_COMPACT]}, + [UCL_EMIT_CONFIG] = {.name = "config", .id = UCL_EMIT_CONFIG, .func = NULL, .ops = &ucl_standartd_emitter_ops[UCL_EMIT_CONFIG]}, + [UCL_EMIT_YAML] = {.name = "yaml", .id = UCL_EMIT_YAML, .func = NULL, .ops = &ucl_standartd_emitter_ops[UCL_EMIT_YAML]}, + [UCL_EMIT_MSGPACK] = {.name = "msgpack", .id = UCL_EMIT_MSGPACK, .func = NULL, .ops = &ucl_standartd_emitter_ops[UCL_EMIT_MSGPACK]}}; static inline void _ucl_emitter_free(void *p) { - free(p); + free(p); } /** @@ -84,7 +62,7 @@ _ucl_emitter_free(void *p) * @return context or NULL if input is invalid */ const struct ucl_emitter_context * -ucl_emit_get_standard_context (enum ucl_emitter emit_type) +ucl_emit_get_standard_context(enum ucl_emitter emit_type) { if (emit_type >= UCL_EMIT_JSON && emit_type < UCL_EMIT_MAX) { return &ucl_standard_emitters[emit_type]; @@ -98,132 +76,129 @@ ucl_emit_get_standard_context (enum ucl_emitter emit_type) * @param str string to emit * @param buf target buffer */ -void -ucl_elt_string_write_json (const char *str, size_t size, - struct ucl_emitter_context *ctx) +void ucl_elt_string_write_json(const char *str, size_t size, + struct ucl_emitter_context *ctx) { const char *p = str, *c = str; size_t len = 0; const struct ucl_emitter_functions *func = ctx->func; - func->ucl_emitter_append_character ('"', 1, func->ud); + func->ucl_emitter_append_character('"', 1, func->ud); while (size) { - if (ucl_test_character (*p, (UCL_CHARACTER_JSON_UNSAFE| - UCL_CHARACTER_DENIED| - UCL_CHARACTER_WHITESPACE_UNSAFE))) { + if (ucl_test_character(*p, (UCL_CHARACTER_JSON_UNSAFE | + UCL_CHARACTER_DENIED | + UCL_CHARACTER_WHITESPACE_UNSAFE))) { if (len > 0) { - func->ucl_emitter_append_len (c, len, func->ud); + func->ucl_emitter_append_len(c, len, func->ud); } switch (*p) { case '\n': - func->ucl_emitter_append_len ("\\n", 2, func->ud); + func->ucl_emitter_append_len("\\n", 2, func->ud); break; case '\r': - func->ucl_emitter_append_len ("\\r", 2, func->ud); + func->ucl_emitter_append_len("\\r", 2, func->ud); break; case '\b': - func->ucl_emitter_append_len ("\\b", 2, func->ud); + func->ucl_emitter_append_len("\\b", 2, func->ud); break; case '\t': - func->ucl_emitter_append_len ("\\t", 2, func->ud); + func->ucl_emitter_append_len("\\t", 2, func->ud); break; case '\f': - func->ucl_emitter_append_len ("\\f", 2, func->ud); + func->ucl_emitter_append_len("\\f", 2, func->ud); break; case '\v': - func->ucl_emitter_append_len ("\\u000B", 6, func->ud); + func->ucl_emitter_append_len("\\u000B", 6, func->ud); break; case '\\': - func->ucl_emitter_append_len ("\\\\", 2, func->ud); + func->ucl_emitter_append_len("\\\\", 2, func->ud); break; case ' ': - func->ucl_emitter_append_character (' ', 1, func->ud); + func->ucl_emitter_append_character(' ', 1, func->ud); break; case '"': - func->ucl_emitter_append_len ("\\\"", 2, func->ud); + func->ucl_emitter_append_len("\\\"", 2, func->ud); break; default: /* Emit unicode unknown character */ - func->ucl_emitter_append_len ("\\uFFFD", 6, func->ud); + func->ucl_emitter_append_len("\\uFFFD", 6, func->ud); break; } len = 0; c = ++p; } else { - p ++; - len ++; + p++; + len++; } - size --; + size--; } if (len > 0) { - func->ucl_emitter_append_len (c, len, func->ud); + func->ucl_emitter_append_len(c, len, func->ud); } - func->ucl_emitter_append_character ('"', 1, func->ud); + func->ucl_emitter_append_character('"', 1, func->ud); } -void -ucl_elt_string_write_squoted (const char *str, size_t size, - struct ucl_emitter_context *ctx) +void ucl_elt_string_write_squoted(const char *str, size_t size, + struct ucl_emitter_context *ctx) { const char *p = str, *c = str; size_t len = 0; const struct ucl_emitter_functions *func = ctx->func; - func->ucl_emitter_append_character ('\'', 1, func->ud); + func->ucl_emitter_append_character('\'', 1, func->ud); while (size) { if (*p == '\'') { if (len > 0) { - func->ucl_emitter_append_len (c, len, func->ud); + func->ucl_emitter_append_len(c, len, func->ud); } len = 0; c = ++p; - func->ucl_emitter_append_len ("\\\'", 2, func->ud); + func->ucl_emitter_append_len("\\\'", 2, func->ud); } else { - p ++; - len ++; + p++; + len++; } - size --; + size--; } if (len > 0) { - func->ucl_emitter_append_len (c, len, func->ud); + func->ucl_emitter_append_len(c, len, func->ud); } - func->ucl_emitter_append_character ('\'', 1, func->ud); + func->ucl_emitter_append_character('\'', 1, func->ud); } -void -ucl_elt_string_write_multiline (const char *str, size_t size, - struct ucl_emitter_context *ctx) +void ucl_elt_string_write_multiline(const char *str, size_t size, + struct ucl_emitter_context *ctx) { const struct ucl_emitter_functions *func = ctx->func; - func->ucl_emitter_append_len ("<<EOD\n", sizeof ("<<EOD\n") - 1, func->ud); - func->ucl_emitter_append_len (str, size, func->ud); - func->ucl_emitter_append_len ("\nEOD", sizeof ("\nEOD") - 1, func->ud); + func->ucl_emitter_append_len("<<EOD\n", sizeof("<<EOD\n") - 1, func->ud); + func->ucl_emitter_append_len(str, size, func->ud); + func->ucl_emitter_append_len("\nEOD", sizeof("\nEOD") - 1, func->ud); } /* * Generic utstring output */ static int -ucl_utstring_append_character (unsigned char c, size_t len, void *ud) +ucl_utstring_append_character(unsigned char c, size_t len, void *ud) { UT_string *buf = ud; if (len == 1) { - utstring_append_c (buf, c); + utstring_append_c(buf, c); } else { - utstring_reserve (buf, len + 1); - memset (&buf->d[buf->i], c, len); + utstring_reserve(buf, len + 1); + memset(&buf->d[buf->i], c, len); buf->i += len; buf->d[buf->i] = '\0'; } @@ -232,39 +207,39 @@ ucl_utstring_append_character (unsigned char c, size_t len, void *ud) } static int -ucl_utstring_append_len (const unsigned char *str, size_t len, void *ud) +ucl_utstring_append_len(const unsigned char *str, size_t len, void *ud) { UT_string *buf = ud; - utstring_append_len (buf, str, len); + utstring_append_len(buf, str, len); return 0; } static int -ucl_utstring_append_int (int64_t val, void *ud) +ucl_utstring_append_int(int64_t val, void *ud) { UT_string *buf = ud; - utstring_printf (buf, "%jd", (intmax_t)val); + utstring_printf(buf, "%jd", (intmax_t) val); return 0; } static int -ucl_utstring_append_double (double val, void *ud) +ucl_utstring_append_double(double val, void *ud) { UT_string *buf = ud; const double delta = 0.0000001; - if (val == (double)(int)val) { - utstring_printf (buf, "%.1lf", val); + if (val == (double) (int) val) { + utstring_printf(buf, "%.1lf", val); } - else if (fabs (val - (double)(int)val) < delta) { + else if (fabs(val - (double) (int) val) < delta) { /* Write at maximum precision */ - utstring_printf (buf, "%.*lg", DBL_DIG, val); + utstring_printf(buf, "%.*lg", DBL_DIG, val); } else { - utstring_printf (buf, "%lf", val); + utstring_printf(buf, "%lf", val); } return 0; @@ -274,52 +249,52 @@ ucl_utstring_append_double (double val, void *ud) * Generic file output */ static int -ucl_file_append_character (unsigned char c, size_t len, void *ud) +ucl_file_append_character(unsigned char c, size_t len, void *ud) { FILE *fp = ud; - while (len --) { - fputc (c, fp); + while (len--) { + fputc(c, fp); } return 0; } static int -ucl_file_append_len (const unsigned char *str, size_t len, void *ud) +ucl_file_append_len(const unsigned char *str, size_t len, void *ud) { FILE *fp = ud; - fwrite (str, len, 1, fp); + fwrite(str, len, 1, fp); return 0; } static int -ucl_file_append_int (int64_t val, void *ud) +ucl_file_append_int(int64_t val, void *ud) { FILE *fp = ud; - fprintf (fp, "%jd", (intmax_t)val); + fprintf(fp, "%jd", (intmax_t) val); return 0; } static int -ucl_file_append_double (double val, void *ud) +ucl_file_append_double(double val, void *ud) { FILE *fp = ud; const double delta = 0.0000001; - if (val == (double)(int)val) { - fprintf (fp, "%.1lf", val); + if (val == (double) (int) val) { + fprintf(fp, "%.1lf", val); } - else if (fabs (val - (double)(int)val) < delta) { + else if (fabs(val - (double) (int) val) < delta) { /* Write at maximum precision */ - fprintf (fp, "%.*lg", DBL_DIG, val); + fprintf(fp, "%.*lg", DBL_DIG, val); } else { - fprintf (fp, "%lf", val); + fprintf(fp, "%lf", val); } return 0; @@ -329,31 +304,31 @@ ucl_file_append_double (double val, void *ud) * Generic file descriptor writing functions */ static int -ucl_fd_append_character (unsigned char c, size_t len, void *ud) +ucl_fd_append_character(unsigned char c, size_t len, void *ud) { - int fd = *(int *)ud; + int fd = *(int *) ud; unsigned char *buf; if (len == 1) { - return write (fd, &c, 1); + return write(fd, &c, 1); } else { - buf = malloc (len); + buf = malloc(len); if (buf == NULL) { /* Fallback */ - while (len --) { - if (write (fd, &c, 1) == -1) { + while (len--) { + if (write(fd, &c, 1) == -1) { return -1; } } } else { - memset (buf, c, len); - if (write (fd, buf, len) == -1) { + memset(buf, c, len); + if (write(fd, buf, len) == -1) { free(buf); return -1; } - free (buf); + free(buf); } } @@ -361,51 +336,51 @@ ucl_fd_append_character (unsigned char c, size_t len, void *ud) } static int -ucl_fd_append_len (const unsigned char *str, size_t len, void *ud) +ucl_fd_append_len(const unsigned char *str, size_t len, void *ud) { - int fd = *(int *)ud; + int fd = *(int *) ud; - return write (fd, str, len); + return write(fd, str, len); } static int -ucl_fd_append_int (int64_t val, void *ud) +ucl_fd_append_int(int64_t val, void *ud) { - int fd = *(int *)ud; + int fd = *(int *) ud; char intbuf[64]; - snprintf (intbuf, sizeof (intbuf), "%jd", (intmax_t)val); - return write (fd, intbuf, strlen (intbuf)); + snprintf(intbuf, sizeof(intbuf), "%jd", (intmax_t) val); + return write(fd, intbuf, strlen(intbuf)); } static int -ucl_fd_append_double (double val, void *ud) +ucl_fd_append_double(double val, void *ud) { - int fd = *(int *)ud; + int fd = *(int *) ud; const double delta = 0.0000001; char nbuf[64]; - if (val == (double)(int)val) { - snprintf (nbuf, sizeof (nbuf), "%.1lf", val); + if (val == (double) (int) val) { + snprintf(nbuf, sizeof(nbuf), "%.1lf", val); } - else if (fabs (val - (double)(int)val) < delta) { + else if (fabs(val - (double) (int) val) < delta) { /* Write at maximum precision */ - snprintf (nbuf, sizeof (nbuf), "%.*lg", DBL_DIG, val); + snprintf(nbuf, sizeof(nbuf), "%.*lg", DBL_DIG, val); } else { - snprintf (nbuf, sizeof (nbuf), "%lf", val); + snprintf(nbuf, sizeof(nbuf), "%lf", val); } - return write (fd, nbuf, strlen (nbuf)); + return write(fd, nbuf, strlen(nbuf)); } -struct ucl_emitter_functions* -ucl_object_emit_memory_funcs (void **pmem) +struct ucl_emitter_functions * +ucl_object_emit_memory_funcs(void **pmem) { struct ucl_emitter_functions *f; UT_string *s; - f = calloc (1, sizeof (*f)); + f = calloc(1, sizeof(*f)); if (f != NULL) { f->ucl_emitter_append_character = ucl_utstring_append_character; @@ -413,7 +388,7 @@ ucl_object_emit_memory_funcs (void **pmem) f->ucl_emitter_append_int = ucl_utstring_append_int; f->ucl_emitter_append_len = ucl_utstring_append_len; f->ucl_emitter_free_func = _ucl_emitter_free; - utstring_new (s); + utstring_new(s); f->ud = s; *pmem = s->d; s->pd = pmem; @@ -422,12 +397,12 @@ ucl_object_emit_memory_funcs (void **pmem) return f; } -struct ucl_emitter_functions* -ucl_object_emit_file_funcs (FILE *fp) +struct ucl_emitter_functions * +ucl_object_emit_file_funcs(FILE *fp) { struct ucl_emitter_functions *f; - f = calloc (1, sizeof (*f)); + f = calloc(1, sizeof(*f)); if (f != NULL) { f->ucl_emitter_append_character = ucl_file_append_character; @@ -441,22 +416,22 @@ ucl_object_emit_file_funcs (FILE *fp) return f; } -struct ucl_emitter_functions* -ucl_object_emit_fd_funcs (int fd) +struct ucl_emitter_functions * +ucl_object_emit_fd_funcs(int fd) { struct ucl_emitter_functions *f; int *ip; - f = calloc (1, sizeof (*f)); + f = calloc(1, sizeof(*f)); if (f != NULL) { - ip = malloc (sizeof (fd)); + ip = malloc(sizeof(fd)); if (ip == NULL) { - free (f); + free(f); return NULL; } - memcpy (ip, &fd, sizeof (fd)); + memcpy(ip, &fd, sizeof(fd)); f->ucl_emitter_append_character = ucl_fd_append_character; f->ucl_emitter_append_double = ucl_fd_append_double; f->ucl_emitter_append_int = ucl_fd_append_int; @@ -468,20 +443,19 @@ ucl_object_emit_fd_funcs (int fd) return f; } -void -ucl_object_emit_funcs_free (struct ucl_emitter_functions *f) +void ucl_object_emit_funcs_free(struct ucl_emitter_functions *f) { if (f != NULL) { if (f->ucl_emitter_free_func != NULL) { - f->ucl_emitter_free_func (f->ud); + f->ucl_emitter_free_func(f->ud); } - free (f); + free(f); } } unsigned char * -ucl_object_emit_single_json (const ucl_object_t *obj) +ucl_object_emit_single_json(const ucl_object_t *obj) { UT_string *buf = NULL; unsigned char *res = NULL; @@ -490,43 +464,43 @@ ucl_object_emit_single_json (const ucl_object_t *obj) return NULL; } - utstring_new (buf); + utstring_new(buf); if (buf != NULL) { switch (obj->type) { case UCL_OBJECT: - ucl_utstring_append_len ("object", 6, buf); + ucl_utstring_append_len("object", 6, buf); break; case UCL_ARRAY: - ucl_utstring_append_len ("array", 5, buf); + ucl_utstring_append_len("array", 5, buf); break; case UCL_INT: - ucl_utstring_append_int (obj->value.iv, buf); + ucl_utstring_append_int(obj->value.iv, buf); break; case UCL_FLOAT: case UCL_TIME: - ucl_utstring_append_double (obj->value.dv, buf); + ucl_utstring_append_double(obj->value.dv, buf); break; case UCL_NULL: - ucl_utstring_append_len ("null", 4, buf); + ucl_utstring_append_len("null", 4, buf); break; case UCL_BOOLEAN: if (obj->value.iv) { - ucl_utstring_append_len ("true", 4, buf); + ucl_utstring_append_len("true", 4, buf); } else { - ucl_utstring_append_len ("false", 5, buf); + ucl_utstring_append_len("false", 5, buf); } break; case UCL_STRING: - ucl_utstring_append_len (obj->value.sv, obj->len, buf); + ucl_utstring_append_len(obj->value.sv, obj->len, buf); break; case UCL_USERDATA: - ucl_utstring_append_len ("userdata", 8, buf); + ucl_utstring_append_len("userdata", 8, buf); break; } - res = utstring_body (buf); - free (buf); + res = utstring_body(buf); + free(buf); } return res; @@ -534,12 +508,11 @@ ucl_object_emit_single_json (const ucl_object_t *obj) #define LONG_STRING_LIMIT 80 -bool -ucl_maybe_long_string (const ucl_object_t *obj) +bool ucl_maybe_long_string(const ucl_object_t *obj) { if (obj->len > LONG_STRING_LIMIT || (obj->flags & UCL_OBJECT_MULTILINE)) { /* String is long enough, so search for newline characters in it */ - if (memchr (obj->value.sv, '\n', obj->len) != NULL) { + if (memchr(obj->value.sv, '\n', obj->len) != NULL) { return true; } } |
