utils: add helper wrapper for osmo_strlcpy()

Add wrapper for osmo_strlcpy() which uses sizeof() to automatically
determine buffer's size and use it for GSMTAP logging. This is pretty
common use case for osmo_strlcpy() so it's a good idea to save some
typing by using generic define.

Related: OS#2864
Change-Id: I03d0d3d32a8d572ad573d03c603e14cdc27a3f7b
This commit is contained in:
Max 2018-01-30 14:33:01 +01:00
parent f1076ed75a
commit 18c014de67
2 changed files with 6 additions and 4 deletions

View File

@ -26,6 +26,9 @@
/*! Number of bytes necessary to store given BITS */
#define OSMO_BYTES_FOR_BITS(BITS) ((BITS + 8 - 1) / 8)
/*! Copy a C-string into a sized buffer using sizeof to detect buffer's size */
#define OSMO_STRLCPY_ARRAY(array, src) osmo_strlcpy(array, src, sizeof(array))
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>

View File

@ -81,17 +81,16 @@ static void _gsmtap_raw_output(struct log_target *target, int subsys,
/* Logging header */
golh = (struct gsmtap_osmocore_log_hdr *) msgb_put(msg, sizeof(*golh));
osmo_strlcpy(golh->proc_name, target->tgt_gsmtap.ident,
sizeof(golh->proc_name));
OSMO_STRLCPY_ARRAY(golh->proc_name, target->tgt_gsmtap.ident);
if (subsys_name)
osmo_strlcpy(golh->subsys, subsys_name+1, sizeof(golh->subsys));
OSMO_STRLCPY_ARRAY(golh->subsys, subsys_name + 1);
else
golh->subsys[0] = '\0';
/* strip all leading path elements from file, if any. */
file_basename = strrchr(file, '/');
file = (file_basename && file_basename[1])? file_basename + 1 : file;
osmo_strlcpy(golh->src_file.name, file, sizeof(golh->src_file.name));
OSMO_STRLCPY_ARRAY(golh->src_file.name, file);
golh->src_file.line_nr = osmo_htonl(line);
golh->level = level;
/* we always store the timestamp in the message, irrespective