mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-06 09:04:55 +00:00
shared: move nm_utils_strbuf_*() helper to shared/nm-utils
This commit is contained in:
parent
f4fb4d271f
commit
f779c51f87
|
@ -27,6 +27,85 @@
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
void
|
||||
nm_utils_strbuf_append_c (char **buf, gsize *len, char c)
|
||||
{
|
||||
switch (*len) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
(*buf)[0] = '\0';
|
||||
*len = 0;
|
||||
(*buf)++;
|
||||
return;
|
||||
default:
|
||||
(*buf)[0] = c;
|
||||
(*buf)[1] = '\0';
|
||||
(*len)--;
|
||||
(*buf)++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nm_utils_strbuf_append_str (char **buf, gsize *len, const char *str)
|
||||
{
|
||||
gsize src_len;
|
||||
|
||||
switch (*len) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
if (!str || !*str) {
|
||||
(*buf)[0] = '\0';
|
||||
return;
|
||||
}
|
||||
(*buf)[0] = '\0';
|
||||
*len = 0;
|
||||
(*buf)++;
|
||||
return;
|
||||
default:
|
||||
if (!str || !*str) {
|
||||
(*buf)[0] = '\0';
|
||||
return;
|
||||
}
|
||||
src_len = g_strlcpy (*buf, str, *len);
|
||||
if (src_len >= *len) {
|
||||
*buf = &(*buf)[*len];
|
||||
*len = 0;
|
||||
} else {
|
||||
*buf = &(*buf)[src_len];
|
||||
*len -= src_len;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nm_utils_strbuf_append (char **buf, gsize *len, const char *format, ...)
|
||||
{
|
||||
char *p = *buf;
|
||||
va_list args;
|
||||
gint retval;
|
||||
|
||||
if (*len == 0)
|
||||
return;
|
||||
|
||||
va_start (args, format);
|
||||
retval = g_vsnprintf (p, *len, format, args);
|
||||
va_end (args);
|
||||
|
||||
if (retval >= *len) {
|
||||
*buf = &p[*len];
|
||||
*len = 0;
|
||||
} else {
|
||||
*buf = &p[retval];
|
||||
*len -= retval;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* _nm_utils_ascii_str_to_int64:
|
||||
*
|
||||
* A wrapper for g_ascii_strtoll, that checks whether the whole string
|
||||
|
|
|
@ -24,6 +24,25 @@
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static inline void
|
||||
_nm_utils_strbuf_init (char *buf, gsize len, char **p_buf_ptr, gsize *p_buf_len)
|
||||
{
|
||||
NM_SET_OUT (p_buf_len, len);
|
||||
NM_SET_OUT (p_buf_ptr, buf);
|
||||
buf[0] = '\0';
|
||||
}
|
||||
|
||||
#define nm_utils_strbuf_init(buf, p_buf_ptr, p_buf_len) \
|
||||
G_STMT_START { \
|
||||
G_STATIC_ASSERT (G_N_ELEMENTS (buf) == sizeof (buf) && sizeof (buf) > sizeof (char *)); \
|
||||
_nm_utils_strbuf_init ((buf), sizeof (buf), (p_buf_ptr), (p_buf_len)); \
|
||||
} G_STMT_END
|
||||
void nm_utils_strbuf_append (char **buf, gsize *len, const char *format, ...) _nm_printf (3, 4);
|
||||
void nm_utils_strbuf_append_c (char **buf, gsize *len, char c);
|
||||
void nm_utils_strbuf_append_str (char **buf, gsize *len, const char *str);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
gint64 _nm_utils_ascii_str_to_int64 (const char *str, guint base, gint64 min, gint64 max, gint64 fallback);
|
||||
|
||||
gint _nm_utils_ascii_str_to_bool (const char *str,
|
||||
|
|
|
@ -1771,83 +1771,6 @@ nm_utils_to_string_buffer_init_null (gconstpointer obj, char **buf, gsize *len)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
nm_utils_strbuf_append_c (char **buf, gsize *len, char c)
|
||||
{
|
||||
switch (*len) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
(*buf)[0] = '\0';
|
||||
*len = 0;
|
||||
(*buf)++;
|
||||
return;
|
||||
default:
|
||||
(*buf)[0] = c;
|
||||
(*buf)[1] = '\0';
|
||||
(*len)--;
|
||||
(*buf)++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nm_utils_strbuf_append_str (char **buf, gsize *len, const char *str)
|
||||
{
|
||||
gsize src_len;
|
||||
|
||||
switch (*len) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
if (!str || !*str) {
|
||||
(*buf)[0] = '\0';
|
||||
return;
|
||||
}
|
||||
(*buf)[0] = '\0';
|
||||
*len = 0;
|
||||
(*buf)++;
|
||||
return;
|
||||
default:
|
||||
if (!str || !*str) {
|
||||
(*buf)[0] = '\0';
|
||||
return;
|
||||
}
|
||||
src_len = g_strlcpy (*buf, str, *len);
|
||||
if (src_len >= *len) {
|
||||
*buf = &(*buf)[*len];
|
||||
*len = 0;
|
||||
} else {
|
||||
*buf = &(*buf)[src_len];
|
||||
*len -= src_len;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nm_utils_strbuf_append (char **buf, gsize *len, const char *format, ...)
|
||||
{
|
||||
char *p = *buf;
|
||||
va_list args;
|
||||
gint retval;
|
||||
|
||||
if (*len == 0)
|
||||
return;
|
||||
|
||||
va_start (args, format);
|
||||
retval = g_vsnprintf (p, *len, format, args);
|
||||
va_end (args);
|
||||
|
||||
if (retval >= *len) {
|
||||
*buf = &p[*len];
|
||||
*len = 0;
|
||||
} else {
|
||||
*buf = &p[retval];
|
||||
*len -= retval;
|
||||
}
|
||||
}
|
||||
|
||||
const char *
|
||||
nm_utils_flags2str (const NMUtilsFlags2StrDesc *descs,
|
||||
gsize n_descs,
|
||||
|
|
|
@ -262,23 +262,6 @@ fcn_name (lookup_type val) \
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static inline void
|
||||
_nm_utils_strbuf_init (char *buf, gsize len, char **p_buf_ptr, gsize *p_buf_len)
|
||||
{
|
||||
NM_SET_OUT (p_buf_len, len);
|
||||
NM_SET_OUT (p_buf_ptr, buf);
|
||||
buf[0] = '\0';
|
||||
}
|
||||
|
||||
#define nm_utils_strbuf_init(buf, p_buf_ptr, p_buf_len) \
|
||||
G_STMT_START { \
|
||||
G_STATIC_ASSERT (G_N_ELEMENTS (buf) == sizeof (buf) && sizeof (buf) > sizeof (char *)); \
|
||||
_nm_utils_strbuf_init ((buf), sizeof (buf), (p_buf_ptr), (p_buf_len)); \
|
||||
} G_STMT_END
|
||||
void nm_utils_strbuf_append (char **buf, gsize *len, const char *format, ...) _nm_printf (3, 4);
|
||||
void nm_utils_strbuf_append_c (char **buf, gsize *len, char c);
|
||||
void nm_utils_strbuf_append_str (char **buf, gsize *len, const char *str);
|
||||
|
||||
const char *nm_utils_get_ip_config_method (NMConnection *connection,
|
||||
GType ip_setting_type);
|
||||
|
||||
|
|
Loading…
Reference in a new issue