Wireshark 4.7.3
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
str_util.h
Go to the documentation of this file.
1
10
11#ifndef __STR_UTIL_H__
12#define __STR_UTIL_H__
13
14#include <wireshark.h>
15#include <wsutil/wmem/wmem.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif /* __cplusplus */
20
34WS_DLL_PUBLIC
35char *
36wmem_strconcat(wmem_allocator_t *allocator, const char *first, ...)
37G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
38
52WS_DLL_PUBLIC
53char *
54wmem_strjoin(wmem_allocator_t *allocator,
55 const char *separator, const char *first, ...)
56G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
57
58
73WS_DLL_PUBLIC
74char *
75wmem_strjoinv(wmem_allocator_t *allocator,
76 const char *separator, char **str_array)
77G_GNUC_MALLOC;
78
92WS_DLL_PUBLIC
93char **
94wmem_strsplit(wmem_allocator_t *allocator, const char *src,
95 const char *delimiter, int max_tokens);
96
111WS_DLL_PUBLIC
112char*
113wmem_ascii_strdown(wmem_allocator_t *allocator, const char *str, ssize_t len);
114
133WS_DLL_PUBLIC
134char *ascii_strdown_inplace(char *str);
135
154WS_DLL_PUBLIC
155char *ascii_strup_inplace(char *str);
156
163WS_DLL_PUBLIC
164bool isprint_string(const char *str);
165
192WS_DLL_PUBLIC
193bool isprint_utf8_string(const char *str, const unsigned length);
194
201WS_DLL_PUBLIC
202bool isdigit_string(const char *str);
203
219WS_DLL_PUBLIC
220const char *ws_ascii_strcasestr(const char *haystack, const char *needle);
221
230WS_DLL_PUBLIC
231const uint8_t *ws_memrchr(const void *haystack, int ch, size_t n);
232
241WS_DLL_PUBLIC
242char *ws_strchrnul(const char *str, int ch);
243
256WS_DLL_PUBLIC
257char *ws_escape_string(wmem_allocator_t *alloc, const char *string, bool add_quotes);
258
271WS_DLL_PUBLIC
272char *ws_escape_string_len(wmem_allocator_t *alloc, const char *string, ssize_t len, bool add_quotes);
273
290WS_DLL_PUBLIC
291char *ws_escape_null(wmem_allocator_t *alloc, const char *string, size_t len, bool add_quotes);
292
313WS_DLL_PUBLIC
314char *ws_escape_csv(wmem_allocator_t *alloc, const char *string, bool add_quotes, char quote_char, bool double_quote, bool escape_whitespace);
315
325WS_DLL_PUBLIC
326int ws_xton(char ch);
327
338typedef enum {
340 /* XXX - This does not append a trailing space if there is no prefix.
341 * That's good if you intend to list the unit somewhere else, e.g. in a
342 * legend, header, or other column, but doesn't work well if intending
343 * to append your own unit. You can test whether there's a prefix or
344 * not with g_ascii_isdigit() (plus special handling for inf and NaN).
345 */
358
359#define FORMAT_SIZE_PREFIX_SI (1 << 0)
360#define FORMAT_SIZE_PREFIX_IEC (1 << 1)
361
378WS_DLL_PUBLIC
379char *format_units(wmem_allocator_t *allocator, double size,
380 format_size_units_e unit, uint16_t flags,
381 int precision);
382
394WS_DLL_PUBLIC
395char *format_size_wmem(wmem_allocator_t *allocator, int64_t size,
396 format_size_units_e unit, uint16_t flags);
397
408#define format_size(size, unit, flags) \
409 format_size_wmem(NULL, size, unit, flags)
410
420WS_DLL_PUBLIC
421char printable_char_or_period(char c);
422
436WS_DLL_PUBLIC WS_RETNONNULL
437const char *ws_strerrorname_r(int errnum, char *buf, size_t buf_size);
438
452WS_DLL_PUBLIC
453char *ws_strdup_underline(wmem_allocator_t *allocator, long offset, size_t len);
454
480WS_DLL_PUBLIC
481char *format_text(wmem_allocator_t* allocator, const char *string, size_t len);
482
491WS_DLL_PUBLIC
492char *format_text_string(wmem_allocator_t* allocator, const char *string);
493
505WS_DLL_PUBLIC
506char *format_text_wsp(wmem_allocator_t* allocator, const char *line, size_t len);
507
526WS_DLL_PUBLIC
527char *format_text_chr(wmem_allocator_t *allocator,
528 const char *string, size_t len, char chr);
529
545WS_DLL_PUBLIC
546char *format_char(wmem_allocator_t *allocator, char c);
547
568WS_DLL_PUBLIC
569char* ws_utf8_truncate(char *string, size_t len);
570
580WS_DLL_PUBLIC
581void EBCDIC_to_ASCII(uint8_t *buf, unsigned bytes);
582
589WS_DLL_PUBLIC
590uint8_t EBCDIC_to_ASCII1(uint8_t c);
591
603
604/*
605 * Hexdump options for ASCII:
606 */
607
611#define HEXDUMP_ASCII_MASK (0x0003U)
612
619#define HEXDUMP_ASCII_OPTION(option) ((option) & HEXDUMP_ASCII_MASK)
620
627#define HEXDUMP_ASCII_INCLUDE (0x0000U)
628
634#define HEXDUMP_ASCII_DELIMIT (0x0001U)
635
641#define HEXDUMP_ASCII_EXCLUDE (0x0002U)
642
661WS_DLL_PUBLIC
662bool hex_dump_buffer(bool (*print_line)(void *, const char *), void *fp,
663 const unsigned char *cp, unsigned length,
664 hex_dump_enc encoding,
665 unsigned ascii_option);
666
677#define plurality(d,s,p) ((d) == 1 ? (s) : (p))
678
685#define true_or_false(val) ((val) ? "TRUE" : "FALSE")
686
693#define string_or_null(val) ((val) ? (val) : "[NULL]")
694
695#ifdef __cplusplus
696}
697#endif /* __cplusplus */
698
699#endif /* __STR_UTIL_H__ */
struct _wmem_allocator_t wmem_allocator_t
Definition wmem_core.h:44
WS_DLL_PUBLIC char * format_text_string(wmem_allocator_t *allocator, const char *string)
Definition str_util.c:1297
WS_DLL_PUBLIC char * ws_utf8_truncate(char *string, size_t len)
Definition str_util.c:1374
WS_DLL_PUBLIC WS_RETNONNULL const char * ws_strerrorname_r(int errnum, char *buf, size_t buf_size)
Return the symbolic name of an error code.
Definition str_util.c:830
hex_dump_enc
Character encoding types supported by hex dump formatting.
Definition str_util.h:599
@ HEXDUMP_ENC_EBCDIC
Definition str_util.h:601
@ HEXDUMP_ENC_ASCII
Definition str_util.h:600
format_size_units_e
Unit types used by format_size_wmem() for formatting size values.
Definition str_util.h:338
@ FORMAT_SIZE_UNIT_BITS_S
Definition str_util.h:348
@ FORMAT_SIZE_UNIT_EVENTS
Definition str_util.h:352
@ FORMAT_SIZE_UNIT_BYTES
Definition str_util.h:346
@ FORMAT_SIZE_UNIT_PACKETS
Definition str_util.h:350
@ FORMAT_SIZE_UNIT_BYTES_S
Definition str_util.h:349
@ FORMAT_SIZE_UNIT_SECONDS
Definition str_util.h:355
@ FORMAT_SIZE_UNIT_NONE
Definition str_util.h:339
@ FORMAT_SIZE_UNIT_FIELDS
Definition str_util.h:354
@ FORMAT_SIZE_UNIT_EVENTS_S
Definition str_util.h:353
@ FORMAT_SIZE_UNIT_ERLANGS
Definition str_util.h:356
@ FORMAT_SIZE_UNIT_PACKETS_S
Definition str_util.h:351
@ FORMAT_SIZE_UNIT_BITS
Definition str_util.h:347
WS_DLL_PUBLIC uint8_t EBCDIC_to_ASCII1(uint8_t c)
Convert a single EBCDIC-encoded byte to its ASCII equivalent.
Definition str_util.c:1496
WS_DLL_PUBLIC char * format_text_chr(wmem_allocator_t *allocator, const char *string, size_t len, char chr)
Definition str_util.c:1326
WS_DLL_PUBLIC char * format_text_wsp(wmem_allocator_t *allocator, const char *line, size_t len)
Definition str_util.c:1309
WS_DLL_PUBLIC char * format_units(wmem_allocator_t *allocator, double size, format_size_units_e unit, uint16_t flags, int precision)
Definition str_util.c:485
WS_DLL_PUBLIC bool hex_dump_buffer(bool(*print_line)(void *, const char *), void *fp, const unsigned char *cp, unsigned length, hex_dump_enc encoding, unsigned ascii_option)
Generate a formatted hex dump of a byte buffer.
Definition str_util.c:1525
WS_DLL_PUBLIC char * ws_strdup_underline(wmem_allocator_t *allocator, long offset, size_t len)
Create a string of underscores for visual alignment or highlighting.
Definition str_util.c:844
WS_DLL_PUBLIC char * format_text(wmem_allocator_t *allocator, const char *string, size_t len)
Definition str_util.c:1272
WS_DLL_PUBLIC char * format_char(wmem_allocator_t *allocator, char c)
Definition str_util.c:1346
WS_DLL_PUBLIC char * format_size_wmem(wmem_allocator_t *allocator, int64_t size, format_size_units_e unit, uint16_t flags)
Definition str_util.c:630
WS_DLL_PUBLIC void EBCDIC_to_ASCII(uint8_t *buf, unsigned bytes)
Convert a buffer of EBCDIC-encoded bytes to ASCII in-place.
Definition str_util.c:1483
WS_DLL_PUBLIC char * wmem_strconcat(wmem_allocator_t *allocator, const char *first,...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED
Concatenate multiple strings into a single newly allocated string.
Definition str_util.c:48
WS_DLL_PUBLIC char printable_char_or_period(char c)
Return a printable character or '.' if non-printable.
Definition str_util.c:697