Code

sysdb.git
11 years agot/utils/channel_test: Added a test-case for sdb_channel_select().
Sebastian Harl [Sun, 20 Oct 2013 13:37:03 +0000 (15:37 +0200)]
t/utils/channel_test: Added a test-case for sdb_channel_select().

11 years agoutils channel: Added sdb_channel_select().
Sebastian Harl [Sun, 20 Oct 2013 13:35:35 +0000 (15:35 +0200)]
utils channel: Added sdb_channel_select().

This function behaves similar to select(2) providing to passively block on a
channel operation until it becomes ready for reading and / or writing.
Optionally, a deadline may be specified.

11 years agoutils/channel: Use a mutex instead of a rwlock.
Sebastian Harl [Sat, 19 Oct 2013 09:58:11 +0000 (11:58 +0200)]
utils/channel: Use a mutex instead of a rwlock.

All access to the channel needs to be fully synchronized.

11 years agot/utils/channel_test: Added some more write/read tests.
Sebastian Harl [Sat, 19 Oct 2013 09:55:07 +0000 (11:55 +0200)]
t/utils/channel_test: Added some more write/read tests.

11 years agot/: Added tests for the channel implementation.
Sebastian Harl [Sat, 19 Oct 2013 08:52:48 +0000 (10:52 +0200)]
t/: Added tests for the channel implementation.

11 years agoutils/channel: Added an asynchronous I/O multiplexer.
Sebastian Harl [Sat, 19 Oct 2013 08:50:11 +0000 (10:50 +0200)]
utils/channel: Added an asynchronous I/O multiplexer.

A channel is a buffered pipe supporting multiple parallel readers and writers.

11 years agoconfigure: Don't fail if CHECK is not available.
Sebastian Harl [Tue, 15 Oct 2013 07:05:23 +0000 (09:05 +0200)]
configure: Don't fail if CHECK is not available.

11 years agostore: Make sure not to store duplicate host entries.
Sebastian Harl [Wed, 2 Oct 2013 19:54:35 +0000 (21:54 +0200)]
store: Make sure not to store duplicate host entries.

11 years agodaemon: Treat parser errors different from daemon/libsysdb errors.
Sebastian Harl [Wed, 2 Oct 2013 19:39:13 +0000 (21:39 +0200)]
daemon: Treat parser errors different from daemon/libsysdb errors.

11 years agoplugin: Unregister all callbacks if module/plugin init failed.
Sebastian Harl [Wed, 2 Oct 2013 09:07:03 +0000 (11:07 +0200)]
plugin: Unregister all callbacks if module/plugin init failed.

11 years agoutils llist: Fixed a segfault in functions doing lookups.
Sebastian Harl [Wed, 2 Oct 2013 09:06:08 +0000 (11:06 +0200)]
utils llist: Fixed a segfault in functions doing lookups.

11 years agoutils llist: Made lookup's user-data a constant pointer.
Sebastian Harl [Wed, 2 Oct 2013 09:04:42 +0000 (11:04 +0200)]
utils llist: Made lookup's user-data a constant pointer.

11 years agoutils llist: Added sdb_llist_remove().
Sebastian Harl [Mon, 30 Sep 2013 16:24:33 +0000 (18:24 +0200)]
utils llist: Added sdb_llist_remove().

11 years agoutils llist: Updated documentation.
Sebastian Harl [Mon, 30 Sep 2013 16:19:36 +0000 (18:19 +0200)]
utils llist: Updated documentation.

11 years agoutils llist: Added lookup callback type to be used for llist_search.
Sebastian Harl [Mon, 30 Sep 2013 16:16:26 +0000 (18:16 +0200)]
utils llist: Added lookup callback type to be used for llist_search.

Lookups should be more flexible than comparing two objects.

11 years agoutils llist: Added sdb_llist_cmp_cb type.
Sebastian Harl [Wed, 25 Sep 2013 20:11:20 +0000 (22:11 +0200)]
utils llist: Added sdb_llist_cmp_cb type.

This is to make sure that comparators always use the same signature.

11 years agoplugin: Removed sdb_ prefix from private functions.
Sebastian Harl [Wed, 25 Sep 2013 19:49:42 +0000 (21:49 +0200)]
plugin: Removed sdb_ prefix from private functions.

11 years agoplugin: Store real plugin name and filename in the context.
Sebastian Harl [Wed, 25 Sep 2013 19:43:32 +0000 (21:43 +0200)]
plugin: Store real plugin name and filename in the context.

11 years agoplugin: Store plugin info attributes in the plugin context.
Sebastian Harl [Wed, 25 Sep 2013 09:02:01 +0000 (11:02 +0200)]
plugin: Store plugin info attributes in the plugin context.

11 years agoplugin: Manage all context information in the core.
Sebastian Harl [Wed, 25 Sep 2013 08:53:06 +0000 (10:53 +0200)]
plugin: Manage all context information in the core.

Store the new dynamic context in callbacks. The daemon may no longer set the
context before loading a plugin. Instead, sdb_plugin_load now accepts a second
parameter specifying the public context attributes.

11 years agoplugin: Made plugin context a dynamic object.
Sebastian Harl [Wed, 18 Sep 2013 08:40:36 +0000 (10:40 +0200)]
plugin: Made plugin context a dynamic object.

A custom type is used for that. The previous context type is used as a public
member of the new internal type. Thus, the external interface does not change.

11 years agoplugin: Dynamically allocate plugin info attributes.
Sebastian Harl [Wed, 18 Sep 2013 08:26:05 +0000 (10:26 +0200)]
plugin: Dynamically allocate plugin info attributes.

This will allow to keep the information around forever.

11 years agounit tests: Added basic tests for unixsock utils; mocking libc I/O functions.
Sebastian Harl [Mon, 16 Sep 2013 07:07:20 +0000 (09:07 +0200)]
unit tests: Added basic tests for unixsock utils; mocking libc I/O functions.

GNU libc's fopencookie is used to mock fdopen() and socket handling. This
allows to mock a UNIX socket.

11 years agoutils unixsock: Explicitely enable line-buffering.
Sebastian Harl [Mon, 16 Sep 2013 07:01:59 +0000 (09:01 +0200)]
utils unixsock: Explicitely enable line-buffering.

The module is based on that, so say it explicitely.

11 years agot/utils/strbuf_test: Added lists of golden data for various checks.
Sebastian Harl [Mon, 9 Sep 2013 17:22:07 +0000 (19:22 +0200)]
t/utils/strbuf_test: Added lists of golden data for various checks.

This makes it much easier to add more checks for particular functions.

11 years agosysdb.h.in: Reintroduced SDB_STATIC_ARRAY_LEN().
Sebastian Harl [Fri, 6 Sep 2013 06:53:38 +0000 (08:53 +0200)]
sysdb.h.in: Reintroduced SDB_STATIC_ARRAY_LEN().

Previously only added to the auto-generated sysdb.h :-/ D'oh!

11 years agot/: Added unit tests for the string buffer utilities.
Sebastian Harl [Fri, 6 Sep 2013 06:41:16 +0000 (08:41 +0200)]
t/: Added unit tests for the string buffer utilities.

11 years agoutils strbuf: Fixed a wrong assertion.
Sebastian Harl [Thu, 5 Sep 2013 16:27:10 +0000 (18:27 +0200)]
utils strbuf: Fixed a wrong assertion.

11 years agoutils strbuf: Allow the initial size to be zero.
Sebastian Harl [Wed, 4 Sep 2013 20:41:03 +0000 (22:41 +0200)]
utils strbuf: Allow the initial size to be zero.

11 years agot/utils/: Name test-cases after the tested function.
Sebastian Harl [Wed, 4 Sep 2013 08:59:49 +0000 (10:59 +0200)]
t/utils/: Name test-cases after the tested function.

This might make it possible to do coverage tests.

11 years agot/utils/dbi_test: Added test queries covering 2-5 columns.
Sebastian Harl [Wed, 4 Sep 2013 08:52:09 +0000 (10:52 +0200)]
t/utils/dbi_test: Added test queries covering 2-5 columns.

11 years agot/utils/dbi_test: Fixed further indexing.
Sebastian Harl [Wed, 4 Sep 2013 08:48:29 +0000 (10:48 +0200)]
t/utils/dbi_test: Fixed further indexing.

11 years agot/utils/dbi_test: Fixed indexing into the golden_data array.
Sebastian Harl [Tue, 3 Sep 2013 18:05:52 +0000 (20:05 +0200)]
t/utils/dbi_test: Fixed indexing into the golden_data array.

11 years agot/utils/dbi_test: Added missing cases in dbi_result_get_field_length_idx().
Sebastian Harl [Tue, 3 Sep 2013 09:05:38 +0000 (11:05 +0200)]
t/utils/dbi_test: Added missing cases in dbi_result_get_field_length_idx().

11 years agot/utils/dbi_test: Verify the received data.
Sebastian Harl [Tue, 3 Sep 2013 09:03:32 +0000 (11:03 +0200)]
t/utils/dbi_test: Verify the received data.

11 years agot/utils/dbi_test: Added mock queries covering various corner cases.
Sebastian Harl [Mon, 2 Sep 2013 16:28:22 +0000 (18:28 +0200)]
t/utils/dbi_test: Added mock queries covering various corner cases.

11 years agot/utils/dbi_test: Mock some actual query results; added simple query.
Sebastian Harl [Mon, 2 Sep 2013 16:24:02 +0000 (18:24 +0200)]
t/utils/dbi_test: Mock some actual query results; added simple query.

The unit-test now supports mocking arbitrary query results. For that,
appropriate mocks for the dbi_result_get*() functions have been added.

The test now executes a simple query returning one column of data.

11 years agot/libsysdb_test: Use a list of test-suite creators.
Sebastian Harl [Wed, 28 Aug 2013 19:16:47 +0000 (21:16 +0200)]
t/libsysdb_test: Use a list of test-suite creators.

… rather than adding a new block for each new test-suite.

11 years agot/utils/dbi_test: Added a simple test-case for query execution.
Sebastian Harl [Wed, 28 Aug 2013 19:09:35 +0000 (21:09 +0200)]
t/utils/dbi_test: Added a simple test-case for query execution.

Added simple mocks for query and result handling.

11 years agot/: Added initial version of unit tests for utils/dbi.
Sebastian Harl [Tue, 27 Aug 2013 16:08:32 +0000 (18:08 +0200)]
t/: Added initial version of unit tests for utils/dbi.

The test cases mocks out any (expected) calls to libdbi.

11 years agot/: Make the test-suite compile with strict compiler flags.
Sebastian Harl [Tue, 27 Aug 2013 06:04:45 +0000 (08:04 +0200)]
t/: Make the test-suite compile with strict compiler flags.

11 years agot/: Fixed header include order.
Sebastian Harl [Tue, 27 Aug 2013 05:53:21 +0000 (07:53 +0200)]
t/: Fixed header include order.

11 years agoMakefile, t/Makefile: Added 'test' alias for 'check'.
Sebastian Harl [Mon, 26 Aug 2013 06:54:01 +0000 (08:54 +0200)]
Makefile, t/Makefile: Added 'test' alias for 'check'.

11 years agot/utils/llist_test: Check sdb_llist_create() return value in setup().
Sebastian Harl [Mon, 26 Aug 2013 06:52:28 +0000 (08:52 +0200)]
t/utils/llist_test: Check sdb_llist_create() return value in setup().

11 years agot/utils/llist_test: Added tests for clone and destroy.
Sebastian Harl [Fri, 23 Aug 2013 19:03:25 +0000 (21:03 +0200)]
t/utils/llist_test: Added tests for clone and destroy.

11 years agoAdded unit testing framework based on ‘check’.
Sebastian Harl [Fri, 23 Aug 2013 18:44:10 +0000 (20:44 +0200)]
Added unit testing framework based on ‘check’.

For now, some basic tests for utils::list have been added.

11 years agoconfigure: Added cname::dns to summary output.
Sebastian Harl [Thu, 22 Aug 2013 19:13:44 +0000 (21:13 +0200)]
configure: Added cname::dns to summary output.

11 years agosysdbd.conf(5): Added a short description for each plugin.
Sebastian Harl [Wed, 21 Aug 2013 19:42:39 +0000 (21:42 +0200)]
sysdbd.conf(5): Added a short description for each plugin.

11 years agoobject: Removed support for cloning typed objects.
Sebastian Harl [Sat, 17 Aug 2013 20:21:51 +0000 (22:21 +0200)]
object: Removed support for cloning typed objects.

This is not used currently. Since it only introduces unneeded complexity (and
somewhat ugly code in some cases), it's better to remove it.

11 years agostore: Support NULL attribute values.
Sebastian Harl [Sat, 17 Aug 2013 20:09:10 +0000 (22:09 +0200)]
store: Support NULL attribute values.

11 years agostore: Handle cname translation centrally.
Sebastian Harl [Sat, 17 Aug 2013 20:05:41 +0000 (22:05 +0200)]
store: Handle cname translation centrally.

11 years agostore: Handle locking correctly when storing attributes.
Sebastian Harl [Sat, 17 Aug 2013 19:58:00 +0000 (21:58 +0200)]
store: Handle locking correctly when storing attributes.

We cannot release the lock before the attribute update is finished.

11 years agostore: Use generic store function also to store attributes.
Sebastian Harl [Sat, 17 Aug 2013 19:53:15 +0000 (21:53 +0200)]
store: Use generic store function also to store attributes.

Except for small special cases, this is exactly the same as storing other
store objects.

11 years agostore: Pass the right timestamp to newly created store objects.
Sebastian Harl [Sat, 17 Aug 2013 19:28:51 +0000 (21:28 +0200)]
store: Pass the right timestamp to newly created store objects.

Also, fixed object initialization.

11 years agostore: Use sdb_object_vcreate() when creating objects from super-class.
Sebastian Harl [Sat, 17 Aug 2013 19:20:41 +0000 (21:20 +0200)]
store: Use sdb_object_vcreate() when creating objects from super-class.

This allows to pass all required arguments to the init function.

11 years agoobject: Added sdb_object_vcreate().
Sebastian Harl [Sat, 17 Aug 2013 18:35:00 +0000 (20:35 +0200)]
object: Added sdb_object_vcreate().

This function expects an va_list argument rather than a "true" variadic list
of arguments.

11 years agostore: Use store super-class when storing objects.
Sebastian Harl [Sat, 17 Aug 2013 18:23:07 +0000 (20:23 +0200)]
store: Use store super-class when storing objects.

This makes the function even more flexible.

11 years agostore: Canonicalize hostname before storing a service.
Sebastian Harl [Sat, 17 Aug 2013 18:10:45 +0000 (20:10 +0200)]
store: Canonicalize hostname before storing a service.

Else, host to service mapping is not correct.

11 years agostore: Refactored host/service store code.
Sebastian Harl [Sat, 17 Aug 2013 18:07:13 +0000 (20:07 +0200)]
store: Refactored host/service store code.

Simplified the code based on the new internal data structures.

11 years agostore: Unified host and service objects into a hierarchical store object.
Sebastian Harl [Sat, 17 Aug 2013 17:22:23 +0000 (19:22 +0200)]
store: Unified host and service objects into a hierarchical store object.

This allows both hosts and services to support attributes. Also, hosts and
services may be children of other objects allowing to represent dependencies
or other hierarchical structures.

The external interface does not support hierarchical stores yet, though.

11 years agostore: Removed now duplicate code.
Sebastian Harl [Sat, 17 Aug 2013 16:55:16 +0000 (18:55 +0200)]
store: Removed now duplicate code.

When creating a new host object, the services/attributes list are always
initialized to an empty list object. No need to further check this anymore.
This was only required in earlier code when copying a user-provided host
object.

11 years agostore: Let store object-types be private types.
Sebastian Harl [Fri, 2 Aug 2013 00:11:14 +0000 (17:11 -0700)]
store: Let store object-types be private types.

The user should interact through the objects names or 'features' rather than
accessing any of the objects themselves.

11 years agostore: Let sdb_store_service() accept const arguments.
Sebastian Harl [Thu, 1 Aug 2013 23:59:19 +0000 (16:59 -0700)]
store: Let sdb_store_service() accept const arguments.

There's no need in letting the caller construct a service object. All passed
in strings are treated as constant values anyway.

11 years agostore: Let sdb_store_attribute() accept const arguments.
Sebastian Harl [Thu, 1 Aug 2013 23:47:39 +0000 (16:47 -0700)]
store: Let sdb_store_attribute() accept const arguments.

… rather than an attribute object. This eases memory management for the caller
and removes unnecessary string duplicates.

11 years agostore: Removed unused function sdb_store_get_service().
Sebastian Harl [Thu, 1 Aug 2013 23:36:15 +0000 (16:36 -0700)]
store: Removed unused function sdb_store_get_service().

This may be reintroduced if and when it's needed.

11 years agostore: Removed unsed function sdb_service_create().
Sebastian Harl [Thu, 1 Aug 2013 23:34:05 +0000 (16:34 -0700)]
store: Removed unsed function sdb_service_create().

There is no need to expose this data-type.

11 years agostore: Removed unused sdb_attribute_create().
Sebastian Harl [Wed, 24 Jul 2013 04:02:51 +0000 (21:02 -0700)]
store: Removed unused sdb_attribute_create().

11 years agostore: Renamed sdb_store_get_host() to sdb_store_has_host().
Sebastian Harl [Wed, 24 Jul 2013 01:45:40 +0000 (18:45 -0700)]
store: Renamed sdb_store_get_host() to sdb_store_has_host().

… and make the function return a boolean value. We don't currently need a
function to access the actual host object. So, don't expose it that way.

11 years agostore: Simplified sdb_store_host().
Sebastian Harl [Wed, 24 Jul 2013 01:42:04 +0000 (18:42 -0700)]
store: Simplified sdb_store_host().

Let the function accept constant arguments describing the hostname and last
update timestamp rather than a host object. This is more flexible for the
caller.

11 years agostore: Removed unused sdb_host_create() function.
Sebastian Harl [Wed, 24 Jul 2013 01:30:13 +0000 (18:30 -0700)]
store: Removed unused sdb_host_create() function.

11 years agostore: Renamed 'parent' attribute to 'super'.
Sebastian Harl [Mon, 22 Jul 2013 15:20:55 +0000 (08:20 -0700)]
store: Renamed 'parent' attribute to 'super'.

We might use 'parent' in different places in the future.

11 years agosysdbd.conf: Improved 'cname' documentation.
Sebastian Harl [Sat, 20 Jul 2013 00:40:53 +0000 (17:40 -0700)]
sysdbd.conf: Improved 'cname' documentation.

11 years agosysdbd.conf: Added and documented a sample LoadPlugin "cname::dns".
Sebastian Harl [Sat, 20 Jul 2013 00:37:40 +0000 (17:37 -0700)]
sysdbd.conf: Added and documented a sample LoadPlugin "cname::dns".

11 years agocname::dns: Added first version of a plugin to query DNS for cnames.
Sebastian Harl [Sat, 20 Jul 2013 00:11:44 +0000 (17:11 -0700)]
cname::dns: Added first version of a plugin to query DNS for cnames.

11 years agoplugin/store: Added support for "cname" plugins.
Sebastian Harl [Sat, 20 Jul 2013 00:08:27 +0000 (17:08 -0700)]
plugin/store: Added support for "cname" plugins.

This type of plugins may be used to canonicalize hostnames. Before storing a
new hosts, all registered cname callbacks will be used to translate the
specified hostname before actually storing it.

11 years agoplugin: Added formatting log functions.
Sebastian Harl [Sat, 20 Jul 2013 00:06:35 +0000 (17:06 -0700)]
plugin: Added formatting log functions.

11 years agoplugin: Removed another custom lookup-by-name function.
Sebastian Harl [Thu, 18 Jul 2013 01:56:44 +0000 (18:56 -0700)]
plugin: Removed another custom lookup-by-name function.

… and use sdb_llist_search_by_name() instead.

11 years agoLet objects be named.
Sebastian Harl [Thu, 18 Jul 2013 01:50:27 +0000 (18:50 -0700)]
Let objects be named.

This allows to move common code into helper functions. The objects module now
provides a function to compare two objects by name and linked-lists support to
lookup objects by name now.

This removes the need for various custom and somewhat ugly helper functions
and data-types.

11 years agosysdbd.conf(5): Added 'syslog' plugin.
Sebastian Harl [Wed, 10 Jul 2013 14:58:43 +0000 (16:58 +0200)]
sysdbd.conf(5): Added 'syslog' plugin.

11 years agoerror: Updated documentation; removed obsolete TODO note.
Sebastian Harl [Wed, 10 Jul 2013 14:56:22 +0000 (16:56 +0200)]
error: Updated documentation; removed obsolete TODO note.

11 years agosyslog plugin: Added plugin to log to syslog.
Sebastian Harl [Wed, 10 Jul 2013 14:55:16 +0000 (16:55 +0200)]
syslog plugin: Added plugin to log to syslog.

11 years agoconfig: Added support for (generic) LoadPlugin.
Sebastian Harl [Wed, 10 Jul 2013 14:54:39 +0000 (16:54 +0200)]
config: Added support for (generic) LoadPlugin.

11 years agoplugin: Added support for log callbacks.
Sebastian Harl [Wed, 10 Jul 2013 14:15:41 +0000 (16:15 +0200)]
plugin: Added support for log callbacks.

Use this logging mechanism to log messages from the error module.

11 years agosysdbd.conf(5): Added an initial manpage for sysdbd's configuration.
Sebastian Harl [Mon, 1 Apr 2013 21:30:01 +0000 (23:30 +0200)]
sysdbd.conf(5): Added an initial manpage for sysdbd's configuration.

11 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.git.
Sebastian Harl [Mon, 1 Apr 2013 18:09:28 +0000 (20:09 +0200)]
Merged branch 'master' of git://git.tokkee.org/sysdb.git.

11 years agoMoved data.h from utils to core.
Sebastian Harl [Mon, 1 Apr 2013 18:01:26 +0000 (20:01 +0200)]
Moved data.h from utils to core.

This should also be considered a core component ;-)

11 years agoMoved error / time from utils to core.
Sebastian Harl [Mon, 1 Apr 2013 17:56:55 +0000 (19:56 +0200)]
Moved error / time from utils to core.

This is more appropriate.

11 years agostore: Use sdb_object_clone, rather than the private, specific functions.
Sebastian Harl [Sat, 23 Mar 2013 04:14:04 +0000 (21:14 -0700)]
store: Use sdb_object_clone, rather than the private, specific functions.

11 years agostore: Let all store types be public.
Sebastian Harl [Sat, 23 Mar 2013 04:10:08 +0000 (21:10 -0700)]
store: Let all store types be public.

This allows to initialize all store objects in a correctly typed fashion.

11 years agostore: Removed the store specific clone callbacks.
Sebastian Harl [Sat, 23 Mar 2013 03:48:20 +0000 (20:48 -0700)]
store: Removed the store specific clone callbacks.

… in favor of sdb_object_clone().

11 years agoobject: Introduced sdb_object_clone().
Sebastian Harl [Sat, 23 Mar 2013 03:25:44 +0000 (20:25 -0700)]
object: Introduced sdb_object_clone().

11 years agoobject system: Introduced a 'clone' callback for types.
Sebastian Harl [Sat, 23 Mar 2013 03:19:20 +0000 (20:19 -0700)]
object system: Introduced a 'clone' callback for types.

This is currently registered for all 'store' types.

11 years agoobject system: Introduced a concept of types.
Sebastian Harl [Sat, 23 Mar 2013 03:01:57 +0000 (20:01 -0700)]
object system: Introduced a concept of types.

A type is defined by its size and init/destroy functions. This is now used
when creating a new object (of that type) rather than passing all required
callbacks to the object create function.

11 years agoSimplified inherited attribute naming in store objects.
Sebastian Harl [Fri, 22 Mar 2013 05:26:37 +0000 (22:26 -0700)]
Simplified inherited attribute naming in store objects.

This way, we avoid name clashes with other variables that would also be
replaced by the preprocessor.

11 years agoplugin: Log a warning in the main loop if there are no collectors.
Sebastian Harl [Wed, 20 Mar 2013 07:16:08 +0000 (00:16 -0700)]
plugin: Log a warning in the main loop if there are no collectors.

11 years agosysdbd: Set a default interval of 60 seconds.
Sebastian Harl [Wed, 20 Mar 2013 07:12:53 +0000 (00:12 -0700)]
sysdbd: Set a default interval of 60 seconds.

11 years agoUse sdb_error_chomp() to remove newlines from multi-part messages.
Sebastian Harl [Wed, 20 Mar 2013 07:03:42 +0000 (00:03 -0700)]
Use sdb_error_chomp() to remove newlines from multi-part messages.

The actual logging callback should take care of handling that appropriately in
these cases as well.

11 years agoutils error, strbuf: Added sdb_error_chomp(), sdb_strbuf_chomp().
Sebastian Harl [Wed, 20 Mar 2013 07:02:54 +0000 (00:02 -0700)]
utils error, strbuf: Added sdb_error_chomp(), sdb_strbuf_chomp().

These functions may be used to remove all consecutive newline characters from
the end of the respective strings.

11 years agoRemoved newline at the end of sdb_log()'ed strings.
Sebastian Harl [Wed, 20 Mar 2013 06:48:10 +0000 (23:48 -0700)]
Removed newline at the end of sdb_log()'ed strings.

The actual logging callback should take care of handling that appropriately.

11 years agoutils strbuf: Copy va_lists rather than using them twice.
Sebastian Harl [Wed, 20 Mar 2013 06:30:43 +0000 (23:30 -0700)]
utils strbuf: Copy va_lists rather than using them twice.

After a va_list has been passed to a function that uses va_arg(), the value of
the va_list is undefined. Thus, rather copy the list before using it for the
first time to make sure we've got a valid va_list object on the second usage.