Configuration: Add nxt_conf_get_string_dup()

This function is like nxt_conf_get_string(), but creates a new copy,
so that it can be modified without corrupting the configuration string.

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Cc: Zhidao Hong <z.hong@f5.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
Alejandro Colomar
2024-02-02 23:29:48 +01:00
parent 990fbe7010
commit ecd573924f
2 changed files with 14 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
* Copyright (C) Igor Sysoev * Copyright (C) Igor Sysoev
* Copyright (C) Valentin V. Bartenev * Copyright (C) Valentin V. Bartenev
* Copyright (C) NGINX, Inc. * Copyright (C) NGINX, Inc.
* Copyright 2024, Alejandro Colomar <alx@kernel.org>
*/ */
#include <nxt_main.h> #include <nxt_main.h>
@@ -174,6 +175,16 @@ nxt_conf_get_string(nxt_conf_value_t *value, nxt_str_t *str)
} }
nxt_str_t *
nxt_conf_get_string_dup(nxt_conf_value_t *value, nxt_mp_t *mp, nxt_str_t *str)
{
nxt_str_t s;
nxt_conf_get_string(value, &s);
return nxt_str_dup(mp, str, &s);
}
void void
nxt_conf_set_string(nxt_conf_value_t *value, nxt_str_t *str) nxt_conf_set_string(nxt_conf_value_t *value, nxt_str_t *str)
{ {

View File

@@ -3,6 +3,7 @@
* Copyright (C) Igor Sysoev * Copyright (C) Igor Sysoev
* Copyright (C) Valentin V. Bartenev * Copyright (C) Valentin V. Bartenev
* Copyright (C) NGINX, Inc. * Copyright (C) NGINX, Inc.
* Copyright 2024, Alejandro Colomar <alx@kernel.org>
*/ */
#ifndef _NXT_CONF_INCLUDED_ #ifndef _NXT_CONF_INCLUDED_
@@ -116,6 +117,8 @@ void nxt_conf_json_position(u_char *start, const u_char *pos, nxt_uint_t *line,
nxt_int_t nxt_conf_validate(nxt_conf_validation_t *vldt); nxt_int_t nxt_conf_validate(nxt_conf_validation_t *vldt);
NXT_EXPORT void nxt_conf_get_string(nxt_conf_value_t *value, nxt_str_t *str); NXT_EXPORT void nxt_conf_get_string(nxt_conf_value_t *value, nxt_str_t *str);
NXT_EXPORT nxt_str_t *nxt_conf_get_string_dup(nxt_conf_value_t *value,
nxt_mp_t *mp, nxt_str_t *str);
NXT_EXPORT void nxt_conf_set_string(nxt_conf_value_t *value, nxt_str_t *str); NXT_EXPORT void nxt_conf_set_string(nxt_conf_value_t *value, nxt_str_t *str);
NXT_EXPORT nxt_int_t nxt_conf_set_string_dup(nxt_conf_value_t *value, NXT_EXPORT nxt_int_t nxt_conf_set_string_dup(nxt_conf_value_t *value,
nxt_mp_t *mp, const nxt_str_t *str); nxt_mp_t *mp, const nxt_str_t *str);