Max Kellermann
d256a0e98f
config/ConfigFile: use std::exception on syntax error
2015-12-16 11:13:16 +01:00
Max Kellermann
a944927b56
util/StringPointer: add method empty()
2015-11-11 15:13:46 +01:00
Max Kellermann
b9a8b0d146
util/StringView: add method Literal()
2015-11-06 10:03:45 +01:00
Max Kellermann
4d15db0134
util/StringCompare: use StringView to simplify inline implementations
2015-11-06 10:03:14 +01:00
Max Kellermann
75d46efd23
util/UriUtil: use StringAfterPrefix() instead of memcmp()
2015-11-06 09:49:22 +01:00
Max Kellermann
b83392cb04
util/UriUtil: move code to SkipUriScheme()
2015-11-06 09:49:22 +01:00
Max Kellermann
7640d333f4
util/UriUtil: make variables more local
2015-11-06 09:49:22 +01:00
Max Kellermann
c880099deb
util/StringCompare: add StringIsEmpty()
2015-11-06 09:37:07 +01:00
Max Kellermann
42f5ecd4a1
util/StringCompare: use strncmp() instead of memcmp() in StringStartsWith()
...
Some optimized implementations of memcmp() may not start from the
beginning of the string, and may thus segfault.
2015-11-06 09:24:18 +01:00
Max Kellermann
733989a284
util/StringUtil: move comparison functions to StringCompare.cxx
2015-11-06 09:20:18 +01:00
Max Kellermann
8d23706354
util/DeleteDisposer: new utility class
2015-10-19 15:57:30 +02:00
Max Kellermann
607c2c5ba2
util/StringUtil: add StringAfterPrefix()
2015-10-16 19:18:04 +02:00
Max Kellermann
85f58eb082
util/WStringUtil: fix indent
2015-10-16 19:17:54 +02:00
Max Kellermann
438b7b7bd0
util/ConstBuffer: add method MoveFront()
2015-10-16 09:00:36 +02:00
Max Kellermann
27a40a9843
util/StringView: add methods StripLeft(), StripRight()
2015-10-16 08:59:47 +02:00
Max Kellermann
356c829b76
util/StringView: new utility class
2015-09-30 22:21:46 +02:00
Max Kellermann
e31cdf0df9
util/AllocatedString: fix off-by-one bug in Duplicate()
2015-09-01 23:33:19 +02:00
Max Kellermann
6f41791ea6
util/StringAPI: add UnsafeCopyStringP()
2015-09-01 21:16:22 +02:00
Max Kellermann
0bacbcd04e
util/StringAPI: fix include guard name
2015-09-01 21:12:16 +02:00
Max Kellermann
ffe689363f
util/AllocatedString: add constant "SENTINEL"
2015-09-01 21:11:22 +02:00
Max Kellermann
037d1d9ad1
util/AllocatedString: add methods Duplicate(), Clone()
2015-06-25 23:44:16 +02:00
Max Kellermann
619ef2b341
util/AllocatedString: add method empty()
2015-06-25 23:44:16 +02:00
Max Kellermann
61a3028788
util/AllocatedString: remove bogus code from operator=
2015-06-23 13:20:11 +02:00
Max Kellermann
11d048b8e3
util/AllocatedString: new utility class
2015-06-23 12:48:21 +02:00
Max Kellermann
e4844b9936
util/StringPointer: new utility class
2015-06-23 12:34:44 +02:00
Max Kellermann
b31d171ae8
*: doxygen fixups
2015-03-17 11:21:43 +01:00
Max Kellermann
5798faa13b
util/StringUtil: add wchar_t overloads
2015-03-05 10:06:56 +01:00
Max Kellermann
a062693875
util/StringAPI: add wchar_t overloads
2015-03-05 08:58:04 +01:00
Max Kellermann
44565e22a0
fs/Traits: use string.h API wrappers
2015-03-05 08:58:04 +01:00
Max Kellermann
250332a8d5
util/StringUtil: reorder functions
2015-03-04 20:22:05 +01:00
Max Kellermann
39825c6622
util/ASCII: strip include guard
2015-03-04 20:05:39 +01:00
Max Kellermann
820debf45a
util/StringUtil: add FindStringSuffix()
2015-03-03 11:29:31 +01:00
Max Kellermann
c19292c036
Util/StringUtil: use std::copy_n()
2015-03-02 22:35:59 +01:00
Max Kellermann
64b9e7fd48
util/DynamicFifoBuffer: adjust include guard
2015-02-16 00:53:59 +01:00
Max Kellermann
ae7e1a22cb
Merge branch 'v0.19.x'
2015-01-26 20:57:29 +01:00
PHO
023b9c1e7e
Test the existence of strndup(3) before using it.
...
This can eliminate the ad-hoc "#ifdef WIN32" and can also support other platforms lacking it as well (including Darwin 9).
2015-01-26 20:39:49 +01:00
Max Kellermann
6725c2afa1
util/format: allow upper case, digits and underscore in names
2015-01-22 18:59:42 +01:00
Max Kellermann
e9d4b73cc3
util/format: move code to is_name_char()
2015-01-22 18:59:01 +01:00
Max Kellermann
91a12f76cd
util/CharUtil: minor API documentation fix
2015-01-15 19:34:02 +01:00
Max Kellermann
e8debd2e45
output/recorder: dynamic file name
2015-01-14 22:03:26 +01:00
Max Kellermann
712ed555e6
Copyright year 2015
2015-01-01 19:48:13 +01:00
Max Kellermann
412bedb697
Merge branch 'v0.19.x'
2014-12-26 14:40:32 +01:00
Max Kellermann
940cab8620
Merge branch 'v0.18.x' into v0.19.x
2014-12-26 14:28:52 +01:00
Max Kellermann
53f4044890
util/{ASCII,UriUtil}, ...: work around -Wtautological-pointer-compare
...
New in clang 3.6.
2014-12-26 13:43:32 +01:00
Max Kellermann
705b3c6b63
util/ASCII: fix indent
2014-12-26 13:37:38 +01:00
Max Kellermann
0964b06240
Compiler.h: add macro GCC_OLDER_THAN()
2014-12-26 13:30:44 +01:00
Max Kellermann
8400da9934
release v0.19.7
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUkcmtAAoJECNuiljG20USLuwP/3MjssxpUkq6aN1beyNACWJ8
Zgr/ibDjxYJY+UAHUOycnJQ8WNpgfXNSR4F5jQHznJdpemJCZCeBd2s5yelEdu0C
SBjJ9FiKPeu8or5N34CPmRQDmDGHv0II4/ySmzlBhH4XRV5JF5li/j4KtAlOCqCT
GNnlmgn05o+oX4Olpg/id6H7wvny+YDY3p33sJmi+djBnSbJyJNvk9NhAr9n4I7Q
FfGHbTzRLSZKHa47zzXag30PBj2X8x7NOAcAX7/evQpw9Gud/8CwXKk21kp6L/fv
RJnj4lLtkj8MRc+8vskZ9EXgYr3yC/cldP8Fw8qsY/t7d8UFUN8qFqpq9O8IPnga
D4hNpq7VF9ZxMhQtxBiT3cRvjTXBp8J/B7p2YDuYHBhIZh8IPzjDCyF4CzlN/470
3zTqq/aar93AeI/6MQlpQPBK1DGvrrHBVP3Mj7cCTbx61P7/1xEIxYntRIfJw449
JRJDJKjdyOY4+Sqm3Agu3WiQlyOzZXmqM3E3FFeul4mUvcOKhfbZxjayYsGlfigA
MHge1wif2aOe6IU334DUD5V0m61MMoefznEvWUdAZHtdvQox0ovDmwwFRizX2fGc
rlUhoUOXWjjGbTI2VjXsBklzh8P+MxQ8OiJGw+V4DBI0XL+A2tpqISs9mpCVPwQ0
T37uc6kdDB99noMuD2cw
=+4Cz
-----END PGP SIGNATURE-----
Merge tag 'v0.19.7'
2014-12-17 19:27:59 +01:00
Max Kellermann
81f17d10c8
util/HugeAllocator: enable MEM_COMMIT on Windows
...
Without MEM_COMMIT, the reserved address space is not accessible, and
MPD crashes.
2014-12-17 19:10:58 +01:00
Max Kellermann
2fec463542
util/HugeAllocator: disable MEM_LARGE_PAGES on Windows
...
MEM_LARGE_PAGES does not appear to work. Instead, MEM_RESERVE appears
to be necessary. Until I figure this out, this large pages are
disabled.
2014-12-12 13:20:58 +01:00
Max Kellermann
4741d7bfe2
Merge branch 'v0.19.x'
2014-12-12 13:14:29 +01:00
Max Kellermann
dbbcbc3616
Util/Manual: cast via void* to avoid alignment warnings
2014-12-09 23:10:05 +01:00
Max Kellermann
1889150013
Util/Manual: use Get() in Destruct()
2014-12-09 23:08:53 +01:00
Max Kellermann
14f9cdde6b
Util/Manual: add assertion to Get()
2014-12-09 23:08:22 +01:00
Max Kellermann
3ab0691eec
Util/Manual: add method Get()
...
May be more clear than operators.
2014-12-09 23:07:43 +01:00
Max Kellermann
1e073a196f
util/Manual: use gcc_alignas()
2014-12-09 23:05:47 +01:00
Max Kellermann
ad4e597f74
util/Error: use FormatMessage() instead of g_win32_error_message()
2014-12-05 00:10:44 +01:00
Max Kellermann
4b70f9d213
util/DivideString: add option "strip"
2014-12-04 23:05:44 +01:00
Max Kellermann
4e2f4e2091
util/StringUtil: add ToUpperASCII()
...
Replaces g_ascii_strup() and allows building the Vorbis encoder
without GLib.
2014-12-04 17:43:01 +01:00
Max Kellermann
e69bef3ce3
util/SplitString: new utility class
...
Replaces GLib's g_strsplit().
2014-12-04 09:14:28 +01:00
Max Kellermann
050f0c3d8f
util/SplitString: rename to DivideString
2014-12-03 21:38:06 +01:00
Max Kellermann
849b0563ce
util/Alloc: add fallback for gcc 4.6
2014-11-28 19:44:32 +01:00
Max Kellermann
d93172bee8
Compiler.h: add macro CLANG_OR_GCC_VERSION()
2014-11-28 19:09:56 +01:00
Max Kellermann
25429af122
Compiler.h: add macro GCC_OLDER_THAN()
2014-11-28 19:09:52 +01:00
Max Kellermann
b19d3629b9
util/Manual: use GCC_CHECK_VERSION
2014-11-28 19:00:26 +01:00
Max Kellermann
84c519df09
util/Alloc: remove bogus "unused" attribute
2014-11-27 18:21:50 +01:00
Max Kellermann
303d67aed2
release v0.19.2
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUVifPAAoJECNuiljG20USJbYP/2SjixBWtHjHn1wF9K3tRzs3
7GGSBxxBpJVZCTg/PGRJ9m2BNJvocBPhw3WN7PU29xi5kBxDy5yvBcc58OzYHz28
HVZymj8zhdiDqULHPn6b9px6f4Oe8+1xh9q6gwR8rZsRAXKYDrC0GPDMGBeSkWo1
ycnSVTcZ4CjfkM2/jfnCc79q4mC+k2BR5T9OYRnznThVMx+gimMwLFYBjNNdh1MT
ugAxXVtpDs2aTR8fqu/ADGLJosfTjzGdqQ3eowOqVXmsmVIttBGruZdKyrN9KAtU
FfPf60zZ3I8qKppArfEoJAejNyGbhIg1AqX7J7IxHMI+zjlo2kGnEcVFJaG5zZb/
GQThrzGXRPFLlvVDtzfALmBNo3gN0y4I73exlpRCupaxZdFaD5UUPlaLak8r9bt5
30YBBxs7ydIPqs25AwZ9f94NT2QrKityLv+O+Q8lz8AfurqJnuOwEo/HuT4Bxv47
pSx86TtokknyN0A3lw5ttIMbTqN5eNHjJY4PulGJPEPfKjn9p4NLtLrZjT4fnnKG
GKXYcMzeOhMKszbHzOR7dcjI0uKXyx4r7LE4SdL+3msCYbyXDTbCirdusZ1pZDC3
ttkSf+a/dILHZagEAN37t53/NlsAjxjJzenKD4H6Eprxm6er24kSWu+W410b3Bw0
jYLYGXCWVZyJ5dqpTcYb
=NiFd
-----END PGP SIGNATURE-----
Merge tag 'v0.19.2'
2014-11-02 14:06:05 +01:00
Max Kellermann
674091424e
util/UriUtil: add uri_get_suffix() overload that ignores query string
2014-11-02 11:53:31 +01:00
Max Kellermann
eab32f2e5d
util/UriUtil: add uri_get_suffix() overload that ignores query string
2014-11-01 12:45:47 +01:00
Max Kellermann
1178f2c1ab
Util/Alloc: add xstrcatdup(), replacing g_strconcat()
2014-10-25 01:24:10 +02:00
Max Kellermann
063d369672
util/StaticFifoBuffer: make Shift() public
2014-10-19 00:49:08 +02:00
Max Kellermann
8ed4124184
util/DynamicFifoBuffer: make the "Range" type public
...
Export it from the protected base class. This fixes a build failure
on Mac OS X.
2014-10-11 20:28:08 +02:00
Max Kellermann
464767c5fd
db/upnp/Util: move caturl() to util/UriUtil.cxx
2014-10-10 22:43:40 +02:00
Max Kellermann
b70bf938c2
util/UTF8: add SequenceLengthUTF8()
2014-10-10 22:11:38 +02:00
Max Kellermann
d5cf41e043
util/UTF8: new library
2014-10-10 22:11:38 +02:00
Max Kellermann
a9f6556454
Merge branch 'v0.18.x'
2014-08-16 08:25:10 +02:00
François Revol
40280fa6cf
util: Fix header for strcasecmp
...
According to POSIX and both OSX and Linux manpages,
strcasecmp comes from strings.h, not string.h.
Most OSes also have them available in string.h,
but we just fixed the headers on Haiku and it now
only provides them in strings.h.
We might want to fall back to string.h for other
OSes though...
cf.
http://pubs.opengroup.org/onlinepubs/009695399/functions/strcasecmp.html
http://linux.die.net/man/3/strcasecmp
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/strcasecmp.3.html
2014-08-16 06:51:13 +02:00
Max Kellermann
c597538b40
util/HugeAllocator: implement on Windows
2014-08-11 23:06:45 +02:00
Max Kellermann
2ccfb71d12
util/CharUtil: add ToLowerASCII()
2014-08-11 18:42:05 +02:00
Max Kellermann
5ac2a69940
input/TextInputStream: move ReadBufferedLine() to util/TextFile.hxx
2014-08-07 19:38:25 +02:00
Max Kellermann
e88dd9b08b
util/DynamicFifoBuffer: make GetCapacity() and Clear() public
2014-08-07 19:21:09 +02:00
Max Kellermann
67958f7fa7
util/{Static,Foreign}FifoBuffer: lazy shift
...
Reduce the number of unnecessary memmove() calls.
2014-08-07 16:11:00 +02:00
Max Kellermann
ab9c527274
util/StaticFifoBuffer: fix indent
2014-08-07 16:08:55 +02:00
Max Kellermann
59d38f876a
util/StringUtil: add StripRight() overload with "end" argument
2014-08-07 16:08:02 +02:00
Max Kellermann
74aafe6a10
util/StringUtil: use IsWhitespaceOrNull() in StripRight()
...
The null byte is whitespace, too.
2014-08-07 16:08:02 +02:00
Max Kellermann
f860a2fbd6
util/StringUtil: move code to StripRight()
2014-08-07 16:08:02 +02:00
Max Kellermann
87bcf739ee
util/StringUtil: rename strchug_fast() to StripLeft()
2014-08-07 16:08:02 +02:00
Max Kellermann
db6db51742
util/CharUtil: add IsWhitespaceFast()
2014-08-07 16:08:02 +02:00
Max Kellermann
981be7956b
util/CharUtil: make IsWhitespace*() "constexpr"
2014-08-07 16:08:02 +02:00
Max Kellermann
8c10aa575c
util/CharUtil: fix indent
2014-08-07 16:08:02 +02:00
Max Kellermann
cf16d81fa4
util/ForeignFifoBuffer: add method Swap()
2014-08-07 09:02:24 +02:00
Max Kellermann
2beb763b4f
util/ForeignFifoBuffer: add method MoveFrom()
2014-08-07 08:53:02 +02:00
Max Kellermann
08fee9a284
util/ForeignFifoBuffer: add method GetAvailable()
2014-08-06 22:55:59 +02:00
Max Kellermann
f89da17827
util/DynamicFifoBuffer: move code to new base class ForeignFifoBuffer
2014-08-06 17:39:07 +02:00
Max Kellermann
ea26da0be7
util/FifoBuffer: rename to StaticFifoBuffer
2014-08-06 17:29:05 +02:00
Max Kellermann
c8858f85d8
util/Error: add method FormatLastError()
2014-07-30 22:10:31 +02:00
Max Kellermann
d1bc46ffad
util/Error: add SetLastError() overload with "DWORD code" parameter
2014-07-30 22:08:26 +02:00
Max Kellermann
32e5848f34
util/Error: add "printf" attributes
2014-07-30 22:02:46 +02:00
Max Kellermann
f9e63dfd65
util/DynamicFifoBuffer: fix typo in API documentation
2014-07-30 20:53:09 +02:00
Max Kellermann
d8558a3af3
util/Cast: add "const" overload
2014-07-14 17:08:57 +02:00
Max Kellermann
72eedb1c98
util/Cast: add missing include
2014-07-14 17:08:41 +02:00
Max Kellermann
3c5cf9500d
util/Cast: fix indent
2014-07-14 16:44:43 +02:00
Max Kellermann
7a1f3177c9
util/Cast: reimplement as template without macro
2014-07-14 16:24:07 +02:00
Max Kellermann
f8da8b0261
util/Cast: add const overloads
2014-07-14 16:02:02 +02:00
Max Kellermann
393cb7fd7d
util/Cast: suppress "unused function" warning by using "inline"
2014-07-14 15:58:12 +02:00
Max Kellermann
e74e1256d4
util/Cast: fix indent
2014-07-14 15:57:48 +02:00
Max Kellermann
211aea1441
util/ConstBuffer: add method skip_front()
2014-06-26 22:25:03 +02:00
Max Kellermann
74a46788cd
util/ConstBuffer: wrap assert() in NDEBUG check
...
Fixes build failure because assert.h was not included.
2014-06-26 13:31:48 +02:00
Max Kellermann
7213c26798
util/ConstBuffer: add method Contains()
2014-06-23 22:30:01 +02:00
Max Kellermann
3ca0a39a35
db/simple: use class boost::intrusive::list
...
Remove the C list_head library and use type-safe C++ instead.
2014-06-16 18:39:16 +02:00
Max Kellermann
7fb9bebd46
util/{Const,Writable}Buffer: add front(), back(), pop_{front,back}(), shift()
2014-04-24 09:50:19 +02:00
Max Kellermann
3b8a9dd6ec
util/{Const,Writable}Buffer: add typedef reference_type
2014-04-24 09:47:59 +02:00
Max Kellermann
a68acf5c66
util/ConstBuffer: add FromVoid(), ToVoid() to "void" specialization
...
Provide the full API.
2014-03-18 12:09:17 +01:00
Max Kellermann
328860c8ba
util/CircularBuffer: add method GetSpace()
2014-03-16 00:28:42 +01:00
Max Kellermann
89ac111853
util/CircularBuffer: add method GetSize()
2014-03-16 00:27:18 +01:00
Max Kellermann
3d4f588a7f
util/CircularBuffer: rename GetSize() to GetCapacity()
2014-03-15 23:12:20 +01:00
Max Kellermann
f660d30138
util/CircularBuffer: new buffer class
2014-03-15 18:35:52 +01:00
Max Kellermann
1e06c66c77
java: new helper library for the Android port
2014-03-01 18:48:20 +01:00
Max Kellermann
4ba7427fa0
util/{Const,Writable}Buffer: add operator[]
2014-03-01 07:49:13 +01:00
Max Kellermann
9dc5335e3e
util/{Const,Writable}Buffer: add template specialization for "void"
...
Omit a few methods that are not applicable.
2014-03-01 07:37:58 +01:00
Max Kellermann
d333de1980
util/ConstBuffer: remove cast operator ConstBuffer<void>
...
This was bugged, because it did not scale the "size".
2014-03-01 07:37:20 +01:00
Max Kellermann
6ba1fe7568
UriUtil: support ftp:// URLs in uri_remove_auth()
2014-02-24 19:59:53 +01:00
Max Kellermann
fb5fbb8088
util/Tokenizer: relicense to BSD-2
2014-02-19 10:41:48 +01:00
Max Kellermann
2b21312b36
util/StringUtil: add StringEndsWith()
...
Replaces g_str_has_suffix().
2014-02-18 09:18:42 +01:00
Max Kellermann
579e48edbb
util/StringUtil: add function Strip()
...
Replaces g_strstrip().
2014-02-17 22:37:43 +01:00
Max Kellermann
d05ae4b444
util/HugeAllocator: relicense to BSD-2
2014-02-10 13:32:50 +01:00
Max Kellermann
56f082c9d4
util/PeakBuffer: fix nullptr dereference when peak_size==0
2014-01-15 11:24:29 +01:00
Max Kellermann
fe7cda57e4
util/PeakBuffer: fix nullptr dereference when peak_size==0
2014-01-14 23:07:04 +01:00
Max Kellermann
4f83c60296
copyright year 2014
2014-01-13 22:31:55 +01:00
Max Kellermann
139122c57f
Merge branch 'v0.18.x'
2014-01-08 22:14:12 +01:00
Max Kellermann
27ca0db7a6
util/Alloc: new library replacing GLib's g_malloc()
2014-01-07 23:35:18 +01:00
Max Kellermann
da80f91e1c
Directory: make some code generic, move to VarSize.hxx
2014-01-07 23:10:56 +01:00
Max Kellermann
0d20130d07
util/Cast: new utility library
2014-01-06 18:21:45 +01:00
Max Kellermann
afc70c120e
util/UriUtil: uri_get_suffix() fails if name begins with dot
...
A file called ".jpg" is not a JPEG file with an empty name; it is
merely a hidden file.
2013-12-29 17:40:51 +01:00
Max Kellermann
86e72ffefb
util/Clamp: generic Clamp() function
2013-12-22 21:08:06 +01:00
Max Kellermann
d86cd4e4b4
util/fifo_buffer: remove obsolete library
2013-12-19 12:17:09 +01:00
Max Kellermann
a191db84f2
util/Error: add missing <algorithm> include
...
For std::move().
2013-12-19 10:58:20 +01:00
Max Kellermann
52dca859c7
util/PeakBuffer: use IsEmpty() instead of IsNull()
...
The DynamicFifoBuffer methods never return nullptr when the buffer is
empty or full; instead, they return an empty buffer. This bug caused
an endless loop.
2013-12-19 10:30:26 +01:00
Max Kellermann
f544316314
util/{Domain,Error}: relicense to BSD 2-clause
2013-12-16 22:42:01 +01:00
Max Kellermann
ecdebb315f
util/PeakBuffer: use DynamicFifoBuffer instead of struct fifo_buffer
...
Switch to the C++ version.
2013-12-15 23:07:08 +01:00
Max Kellermann
1f523be72d
util/PeakBuffer: return ConstBuffer<void>
2013-12-15 23:07:08 +01:00
Max Kellermann
f2a20a0a80
util/WritableBuffer: add cast methods
2013-12-15 23:01:06 +01:00
Max Kellermann
e5a2efaa65
util/WritableBuffer: fix indent
2013-12-15 22:58:32 +01:00
Max Kellermann
c44cb3246d
util/DynamicFifoBuffer: make constructor "explicit"
2013-12-15 22:35:21 +01:00
Max Kellermann
635d6a19ef
util/Tokenizer, ...: include cleanup
2013-12-15 18:33:26 +01:00
Max Kellermann
777844ae0c
system/SocketError, ...: use strerror() instead of g_strerror()
...
Avoid GLib.
2013-12-15 18:32:07 +01:00
Max Kellermann
e1ec65bd53
UriUtil: add function uri_get_scheme()
...
Replaces g_uri_parse_scheme().
2013-12-15 17:06:10 +01:00
Max Kellermann
635a67afac
util/SplitString: new utility class
...
To replace g_strdup().
2013-12-14 12:58:26 +01:00
Max Kellermann
ad7302a032
util/DynamicFifoBuffer: new class replacing growing_fifo
2013-12-05 11:49:21 +01:00
Max Kellermann
6f47c1ca20
util/ConstBuffer: new utility class
2013-11-29 22:06:04 +01:00
Max Kellermann
af4133e3c9
Util/StringUtil: add StringStartsWith()
...
Replaces GLib's g_str_has_prefix().
2013-11-28 18:48:35 +01:00