MT#55283 add STR_PTR macro

Convenience wrapper for &STR()

This is useful so that STR() and STR_DUP() can be extended to avoid
duplicate expansion of its macro arguments.

Change-Id: Ieae170807c11b0cdd8b52fac9bab98dccdc2b951
pull/1870/head
Richard Fuchs 7 months ago
parent 6ab036c4e5
commit dd91961aeb

@ -2377,7 +2377,7 @@ static void ng_stats_endpoint(const ng_parser_t *parser, parser_arg dict, const
if (!ep->address.family)
return;
parser->dict_add_string(dict, "family", ep->address.family->name);
parser->dict_add_str_dup(dict, "address", &STR(sockaddr_print_buf(&ep->address)));
parser->dict_add_str_dup(dict, "address", STR_PTR(sockaddr_print_buf(&ep->address)));
parser->dict_add_int(dict, "port", ep->port);
}
@ -2420,7 +2420,7 @@ static void ng_stats_stream(ng_command_ctx_t *ctx, parser_arg list, const struct
if (ps->selected_sfd) {
parser->dict_add_int(dict, "local port", ps->selected_sfd->socket.local.port);
parser->dict_add_str_dup(dict, "local address",
&STR(sockaddr_print_buf(&ps->selected_sfd->socket.local.address)));
STR_PTR(sockaddr_print_buf(&ps->selected_sfd->socket.local.address)));
parser->dict_add_string(dict, "family", ps->selected_sfd->socket.local.address.family->name);
}
ng_stats_endpoint(parser, parser->dict_add_dict(dict, "endpoint"), &ps->endpoint);

@ -301,7 +301,7 @@ static bool json_dict_contains(JsonNode *on, const char *ele) {
static void json_dict_iter_fn(JsonObject *o, const char *key, JsonNode *val, void *arg) {
void **ptrs = arg;
void (*callback)(const ng_parser_t *, str *key, JsonNode *value, helper_arg) = ptrs[1];
callback(ptrs[0], &STR(key), val, ptrs[2]);
callback(ptrs[0], STR_PTR(key), val, ptrs[2]);
}
static bool json_dict_iter(const ng_parser_t *parser, JsonNode *input,
@ -340,7 +340,7 @@ static void json_list_iter(const ng_parser_t *parser, JsonNode *list,
{
const char *s = json_node_get_string(n);
if (s)
str_callback(&STR(s), i, arg);
str_callback(STR_PTR(s), i, arg);
}
else
item_callback(parser, n, arg);

@ -260,7 +260,7 @@ static bool parse_codec_to_dict(str * key, str * val, const char *cmp1, const ch
return false;
}
call_ng_codec_flags(&dummy_parser, &STR(dictstr), &s, flags);
call_ng_codec_flags(&dummy_parser, STR_PTR(dictstr), &s, flags);
return true;
}
@ -294,7 +294,7 @@ static void parse_transports(unsigned int transport, sdp_ng_flags *out)
const char * val = transports[transport & 0x007];
if (!val)
return;
call_ng_main_flags(&dummy_parser, &STR_CONST("transport-protocol"), &STR(val), out);
call_ng_main_flags(&dummy_parser, &STR_CONST("transport-protocol"), STR_PTR(val), out);
}

@ -368,7 +368,7 @@ void recording_start_daemon(call_t *call) {
char rand_str[rand_bytes * 2 + 1];
rand_hex_str(rand_str, rand_bytes);
g_autoptr(char) meta_prefix = g_strdup_printf("%s-%s", escaped_callid, rand_str);
call->recording_meta_prefix = call_str_cpy(&STR(meta_prefix));
call->recording_meta_prefix = call_str_cpy(STR_PTR(meta_prefix));
call->recording_random_tag = call_str_cpy(&STR_CONST(rand_str));
}

@ -2344,7 +2344,7 @@ err:
str encstr = parser->escape(enc, d, l); \
parser->dict_add_str_dup(inner, a, &encstr); \
} while (0)
#define JSON_SET_SIMPLE_CSTR(a,d) parser->dict_add_str_dup(inner, a, &STR(d))
#define JSON_SET_SIMPLE_CSTR(a,d) parser->dict_add_str_dup(inner, a, STR_PTR(d))
#define JSON_SET_SIMPLE_STR(a,d) parser->dict_add_str_dup(inner, a, d)
static void json_update_crypto_params(const ng_parser_t *parser, parser_arg inner, const char *key, struct crypto_params *p) {

@ -351,7 +351,7 @@ static bool sdp_manipulate_remove(struct sdp_manipulations * sdp_manipulations,
*/
static bool sdp_manipulate_remove_c(const char *attr_name, const sdp_ng_flags *flags, enum media_type media_type) {
struct sdp_manipulations *sdp_manipulations = sdp_manipulations_get_by_id(flags, media_type);
return sdp_manipulate_remove(sdp_manipulations, &STR(attr_name));
return sdp_manipulate_remove(sdp_manipulations, STR_PTR(attr_name));
}
/**
@ -417,7 +417,7 @@ void sdp_append_str_attr(GString *s, const sdp_ng_flags *flags, enum media_type
INLINE void append_attr_to_gstring(GString *s, const char * name, const str * value,
const sdp_ng_flags *flags, enum media_type media_type)
{
append_str_attr_to_gstring(s, &STR(name), value, flags, media_type);
append_str_attr_to_gstring(s, STR_PTR(name), value, flags, media_type);
}
INLINE struct sdp_attribute *attr_get_by_id(struct sdp_attributes *a, enum attr_id id) {
return t_hash_table_lookup(a->id_hash, &id);

@ -973,10 +973,10 @@ const char *statistics_ng(ng_command_ctx_t *ctx) {
m->int_value);
else if (m->value_raw)
parser->dict_add_str_dup(dict, parser->strdup(parser_ctx, m->label),
&STR(m->value_raw));
STR_PTR(m->value_raw));
else
parser->dict_add_str_dup(dict, parser->strdup(parser_ctx, m->label),
&STR(m->value_short));
STR_PTR(m->value_short));
continue;
}

@ -38,7 +38,7 @@ sdp_attr_print_f sdp_insert_monologue_attributes;
void sdp_append_str_attr(GString *s, const sdp_ng_flags *flags, enum media_type media_type,
const str *name, const char *fmt, ...)
__attribute__ ((format (printf, 5, 6)));
#define sdp_append_attr(s, g, t, n, f, ...) sdp_append_str_attr(s, g, t, &STR(n), f, ##__VA_ARGS__)
#define sdp_append_attr(s, g, t, n, f, ...) sdp_append_str_attr(s, g, t, STR_PTR(n), f, ##__VA_ARGS__)
void sdp_attr_free(struct sdp_attr *);
sdp_origin *sdp_orig_dup(const sdp_origin *orig);

@ -38,6 +38,7 @@ TYPED_GQUEUE(str, str)
#define STR_EMPTY ((str) { "", 0 })
#define STR_CONST(s) ((str) { s, sizeof(s)-1 })
#define STR(s) ((str) { (char *) (s), (s) ? strlen(s) : 0 })
#define STR_PTR(s) (&((str) { (char *) (s), (s) ? strlen(s) : 0 }))
#define STR_NC(s) ((str) { (char *) (s), strlen(s) })
#define STR_GS(s) ((str) { (s)->str, (s)->len })
#define STR_LEN(s, len) ((str) { (char *) (s), len })

@ -1929,10 +1929,10 @@ int main(int argc, char **argv) {
if (!rtpe_poller)
die("Failed to create poller");
decoder_def = codec_find(&STR(source_codec), MT_AUDIO);
decoder_def = codec_find(STR_PTR(source_codec), MT_AUDIO);
if (!decoder_def)
die("Codec definition for source codec not found");
encoder_def = codec_find(&STR(dest_codec), MT_AUDIO);
encoder_def = codec_find(STR_PTR(dest_codec), MT_AUDIO);
if (!encoder_def)
die("Codec definition for destination codec not found");

Loading…
Cancel
Save