feature list: Workaround g_string_replace on GLib < 2.68
g_string_replace was added in GLib 2.68. We only expect to find a string once and erase it instead of replacing it, so a workaround is simple. Remove the similar workaround in capture-pcap-util-unix.c for libpcap.
This commit is contained in:
parent
f70ead9865
commit
8f651e222e
@ -163,16 +163,7 @@ gather_caplibs_compile_info(feature_list l)
|
|||||||
void
|
void
|
||||||
gather_caplibs_runtime_info(feature_list l)
|
gather_caplibs_runtime_info(feature_list l)
|
||||||
{
|
{
|
||||||
const char *vstr = pcap_lib_version();
|
with_feature(l, "%s", pcap_lib_version());
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove the substring "version" from the output of pcap_lib_version()
|
|
||||||
* to be consistent with our format.
|
|
||||||
*/
|
|
||||||
if (g_str_has_prefix(vstr, "libpcap version ")) /* Sanity check */
|
|
||||||
with_feature(l, "libpcap %s", vstr + strlen("libpcap version "));
|
|
||||||
else
|
|
||||||
with_feature(l, "%s", vstr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* HAVE_LIBPCAP */
|
#else /* HAVE_LIBPCAP */
|
||||||
|
@ -14,6 +14,19 @@
|
|||||||
|
|
||||||
#include <wsutil/feature_list.h>
|
#include <wsutil/feature_list.h>
|
||||||
|
|
||||||
|
#if !GLIB_CHECK_VERSION(2, 68, 0)
|
||||||
|
static GString*
|
||||||
|
g_string_find_and_erase(GString *string, const char* find)
|
||||||
|
{
|
||||||
|
/* Find and erases find a single time. */
|
||||||
|
const char* pos = strstr(string->str, find);
|
||||||
|
if (pos != NULL) {
|
||||||
|
g_string_erase(string, pos - string->str, strlen(find));
|
||||||
|
}
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
with_feature(feature_list l, const char *fmt, ...)
|
with_feature(feature_list l, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
@ -22,9 +35,14 @@ with_feature(feature_list l, const char *fmt, ...)
|
|||||||
va_start(arg, fmt);
|
va_start(arg, fmt);
|
||||||
g_string_append_vprintf(msg, fmt, arg);
|
g_string_append_vprintf(msg, fmt, arg);
|
||||||
va_end(arg);
|
va_end(arg);
|
||||||
/* Strip "version from the string" */
|
/* Strip "version" from the string */
|
||||||
|
#if GLIB_CHECK_VERSION(2, 68, 0)
|
||||||
g_string_replace(msg, " version", "", 0);
|
g_string_replace(msg, " version", "", 0);
|
||||||
g_string_replace(msg, " based on", "", 0);
|
g_string_replace(msg, " based on", "", 0);
|
||||||
|
#else
|
||||||
|
g_string_find_and_erase(msg, " version");
|
||||||
|
g_string_find_and_erase(msg, " based on");
|
||||||
|
#endif
|
||||||
*l = g_list_prepend(*l, g_string_free(msg, FALSE));
|
*l = g_list_prepend(*l, g_string_free(msg, FALSE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user