.\" File automatically generated by doxy2man0.3 .\" Generation date: Thu Sep 3 2026 .TH radcli_avp_add_str 3 2026-09-03 "radcli" "Radius client library" .SH "NAME" radcli_avp_add_str \- Append a string- or text-typed attribute. .SH SYNOPSIS .nf .B #include .sp \fBint radcli_avp_add_str\fP( \fBradcli_avp_list *\fP\fIlist\fP, \fBconst radcli_attr_def *\fP\fIdef\fP, \fBconst char *\fP\fIvalue\fP ); .fi .SH DESCRIPTION .PP Accepts both RADCLI_TYPE_STRING and RADCLI_TYPE_TEXT attributes. For RADCLI_TYPE_STRING, value's bytes are copied verbatim (opaque octets, no validation) unchanged from this function's original behavior, so that a caller already using it against an attribute later retagged from "string" to "text" (RFC 8044 SS3.1) in the dictionary keeps working rather than starting to fail with the retag. For RADCLI_TYPE_TEXT, value must additionally be valid UTF-8; invalid UTF-8 is rejected rather than stored. .SH PARAMETERS .TP .B list destination list. .TP .B def the attribute; must be RADCLI_TYPE_STRING or RADCLI_TYPE_TEXT. .TP .B value a null-terminated string. .SH RETURN VALUE .PP 0 on success, -1 on failure (def is neither RADCLI_TYPE_STRING nor RADCLI_TYPE_TEXT, value is invalid UTF-8 for a RADCLI_TYPE_TEXT def, or as radcli_avp_add_bytes()). .SH SEE ALSO .PP .nh .ad l \fIradcli_avp_add_bytes\fP(3), \fIradcli_avp_add_bytes_by_num\fP(3), \fIradcli_avp_add_gigawords64\fP(3), \fIradcli_avp_add_gigawords64_by_num\fP(3), \fIradcli_avp_add_ip4\fP(3), \fIradcli_avp_add_ip4_by_num\fP(3), \fIradcli_avp_add_ip4prefix\fP(3), \fIradcli_avp_add_ip4prefix_by_num\fP(3), \fIradcli_avp_add_ip6\fP(3), \fIradcli_avp_add_ip6_by_num\fP(3), \fIradcli_avp_add_str_by_num\fP(3), \fIradcli_avp_add_uint32\fP(3), \fIradcli_avp_add_uint32_by_num\fP(3), \fIradcli_avp_add_uint64\fP(3), \fIradcli_avp_add_uint64_by_num\fP(3), \fIradcli_avp_add_username\fP(3), \fIradcli_avp_concat_str\fP(3), \fIradcli_avp_concat_str_by_num\fP(3), \fIradcli_avp_def\fP(3), \fIradcli_avp_get\fP(3), \fIradcli_avp_get_by_num\fP(3), \fIradcli_avp_get_bytes\fP(3), \fIradcli_avp_get_bytes_by_num\fP(3), \fIradcli_avp_get_cstr\fP(3), \fIradcli_avp_get_cstr_by_num\fP(3), \fIradcli_avp_get_gigawords64\fP(3), \fIradcli_avp_get_gigawords64_by_num\fP(3), \fIradcli_avp_get_ip4prefix\fP(3), \fIradcli_avp_get_ip4prefix_by_num\fP(3), \fIradcli_avp_get_ip6\fP(3), \fIradcli_avp_get_ip6_by_num\fP(3), \fIradcli_avp_get_uint32\fP(3), \fIradcli_avp_get_uint32_by_num\fP(3), \fIradcli_avp_get_uint64\fP(3), \fIradcli_avp_get_uint64_by_num\fP(3), \fIradcli_avp_iter_next\fP(3), \fIradcli_avp_list_error\fP(3), \fIradcli_avp_list_free\fP(3), \fIradcli_avp_list_iter\fP(3), \fIradcli_avp_list_new\fP(3) .ad .hy