Code

sysdb.git
9 years agoMove sdb_get_homedir() from tools/sysdb to utils/os.
Sebastian Harl [Fri, 30 Jan 2015 10:49:20 +0000 (11:49 +0100)]
Move sdb_get_homedir() from tools/sysdb to utils/os.

9 years agoSSL utils: Include the relevant filename in all error messages.
Sebastian Harl [Fri, 30 Jan 2015 10:27:16 +0000 (11:27 +0100)]
SSL utils: Include the relevant filename in all error messages.

9 years agoSSL utils: Add sdb_ssl_free_options().
Sebastian Harl [Fri, 30 Jan 2015 10:26:49 +0000 (11:26 +0100)]
SSL utils: Add sdb_ssl_free_options().

9 years agoclient: Make SSL options configurable.
Sebastian Harl [Fri, 30 Jan 2015 10:12:12 +0000 (11:12 +0100)]
client: Make SSL options configurable.

9 years agoconfigure: Where available, include version information in the summary.
Sebastian Harl [Wed, 28 Jan 2015 15:35:37 +0000 (16:35 +0100)]
configure: Where available, include version information in the summary.

9 years agofrontend: Log an INFO message about which listener sockets are in use.
Sebastian Harl [Wed, 28 Jan 2015 15:20:19 +0000 (16:20 +0100)]
frontend: Log an INFO message about which listener sockets are in use.

9 years agoclient, sysdb: Let TCP connection use SSL.
Sebastian Harl [Wed, 28 Jan 2015 15:19:24 +0000 (16:19 +0100)]
client, sysdb: Let TCP connection use SSL.

9 years agoclient: Don't use select() before reading from a client connection.
Sebastian Harl [Wed, 28 Jan 2015 15:17:47 +0000 (16:17 +0100)]
client: Don't use select() before reading from a client connection.

This doesn't work well if the connection buffers data (like with the upcoming
SSL support).

9 years agofrontend, sysdbd: Let all TCP connections use SSL.
Sebastian Harl [Wed, 28 Jan 2015 15:14:23 +0000 (16:14 +0100)]
frontend, sysdbd: Let all TCP connections use SSL.

Client certificate checks are enforced and the client cert's common name (CN)
is used as the peer name.

9 years agoSSL utils: Added helper functions for managing OpenSSL servers and clients.
Sebastian Harl [Wed, 28 Jan 2015 15:07:50 +0000 (16:07 +0100)]
SSL utils: Added helper functions for managing OpenSSL servers and clients.

The module provides session management for OpenSSL servers and clients and
helper functions for I/O operations.

9 years agostore::network plugin: Fixed a minor memory leak.
Sebastian Harl [Sun, 25 Jan 2015 05:28:51 +0000 (21:28 -0800)]
store::network plugin: Fixed a minor memory leak.

9 years agovalgrind.suppress: Add a memory leak reported for some dl helper.
Sebastian Harl [Sun, 25 Jan 2015 05:28:01 +0000 (21:28 -0800)]
valgrind.suppress: Add a memory leak reported for some dl helper.

9 years agoRemoved a spammy and now unnecessary debug log message.
Sebastian Harl [Mon, 19 Jan 2015 05:02:31 +0000 (21:02 -0800)]
Removed a spammy and now unnecessary debug log message.

9 years agointegration: Use store::network in the query tests.
Sebastian Harl [Sat, 17 Jan 2015 23:18:36 +0000 (15:18 -0800)]
integration: Use store::network in the query tests.

Set up a second SysDB instance which receives all data from the other
instance. Query the receiver instead of the collector.

9 years agointegration: Split off mock_timeseries from mock_plugin.
Sebastian Harl [Sat, 17 Jan 2015 23:17:09 +0000 (15:17 -0800)]
integration: Split off mock_timeseries from mock_plugin.

9 years agofrontend: Trigger the main thread after putting a connection back in the list.
Sebastian Harl [Sat, 17 Jan 2015 19:24:22 +0000 (11:24 -0800)]
frontend: Trigger the main thread after putting a connection back in the list.

Else, we'd have pauses of up to a second (select timeout) between processing
subsequent requests from a client because the main thread didn't notice that
an open connection was put back into the waiting queue.

9 years agostore::network: Add a store writer plugin sending objects over the network.
Sebastian Harl [Sat, 17 Jan 2015 00:27:07 +0000 (01:27 +0100)]
store::network: Add a store writer plugin sending objects over the network.

The plugin supports sending data to one or more other SysDB instances using
the wire-format of the STORE command.

9 years agostore: Don't report an error in scan() if the store is still empty.
Sebastian Harl [Sat, 17 Jan 2015 00:26:07 +0000 (01:26 +0100)]
store: Don't report an error in scan() if the store is still empty.

9 years agosysdb: Simplified prompt used for continuation lines.
Sebastian Harl [Sat, 17 Jan 2015 00:22:34 +0000 (01:22 +0100)]
sysdb: Simplified prompt used for continuation lines.

9 years agofrontend/store: Free dynamically allocated memory of attribute values.
Sebastian Harl [Sat, 17 Jan 2015 00:19:47 +0000 (01:19 +0100)]
frontend/store: Free dynamically allocated memory of attribute values.

9 years agofrontend/store: Fixed parsing of STORE attribute commands.
Sebastian Harl [Sat, 17 Jan 2015 00:08:06 +0000 (01:08 +0100)]
frontend/store: Fixed parsing of STORE attribute commands.

In this case, the object type is a bit-wise OR of the parent type and the
attribute type.

9 years agofrontend/store: Fixed parsing of STORE command.
Sebastian Harl [Fri, 16 Jan 2015 23:57:45 +0000 (00:57 +0100)]
frontend/store: Fixed parsing of STORE command.

After parsing the type, keep it still around in the current buffer. The
sdb_proto_unmarshal_<type> functions expect to find it as well.

9 years agoplugin: Let store writer plugin object inherit from generic plugin objects.
Sebastian Harl [Fri, 16 Jan 2015 23:46:23 +0000 (00:46 +0100)]
plugin: Let store writer plugin object inherit from generic plugin objects.

Else, we cannot use them in the same way.

9 years agoclient: Use sdb_client_rpc in sdb_client_connect.
Sebastian Harl [Fri, 16 Jan 2015 22:46:25 +0000 (23:46 +0100)]
client: Use sdb_client_rpc in sdb_client_connect.

9 years agoclient: Added sdb_client_rpc.
Sebastian Harl [Fri, 16 Jan 2015 22:45:23 +0000 (23:45 +0100)]
client: Added sdb_client_rpc.

This function handles a full RPC call: it sends a message to the server and
waits for the reply. While doing so, it handles all asynchronous log messages.
That is, it'll return the actual result status of the command.

9 years agostore: Pass on all stored objects to store writer plugins.
Sebastian Harl [Fri, 16 Jan 2015 21:10:46 +0000 (22:10 +0100)]
store: Pass on all stored objects to store writer plugins.

9 years agocore: Add the store writer plugin type.
Sebastian Harl [Fri, 16 Jan 2015 21:03:52 +0000 (22:03 +0100)]
core: Add the store writer plugin type.

A plugin may now provide an implementation of a store by providing a set of
callbacks. For now, this is only about writing to a store. Queries are not
supported through this interface.

9 years agoplugin: Reload time-series fetcher callbacks as well.
Sebastian Harl [Fri, 16 Jan 2015 20:30:29 +0000 (21:30 +0100)]
plugin: Reload time-series fetcher callbacks as well.

9 years agointegration/config.sh: Add a test to load and reload a plugin.
Sebastian Harl [Fri, 16 Jan 2015 20:26:17 +0000 (21:26 +0100)]
integration/config.sh: Add a test to load and reload a plugin.

9 years agot/integration: Add a simple time-series fetcher test.
Sebastian Harl [Fri, 16 Jan 2015 20:22:06 +0000 (21:22 +0100)]
t/integration: Add a simple time-series fetcher test.

9 years agoconnection_test: Updated according to latest changes.
Sebastian Harl [Fri, 16 Jan 2015 20:15:20 +0000 (21:15 +0100)]
connection_test: Updated according to latest changes.

9 years agosysdbql(7): Document the STORE commands.
Sebastian Harl [Fri, 16 Jan 2015 13:52:27 +0000 (14:52 +0100)]
sysdbql(7): Document the STORE commands.

9 years agoconnection: Log peer information after accepting a connection.
Sebastian Harl [Fri, 16 Jan 2015 13:31:42 +0000 (14:31 +0100)]
connection: Log peer information after accepting a connection.

9 years agosysdb: Use the current user's homedir rather than the SysDB user.
Sebastian Harl [Fri, 16 Jan 2015 13:16:12 +0000 (14:16 +0100)]
sysdb: Use the current user's homedir rather than the SysDB user.

9 years agoconnection: Let sdb_connection_accept() handle all connection setup.
Sebastian Harl [Thu, 15 Jan 2015 08:05:57 +0000 (09:05 +0100)]
connection: Let sdb_connection_accept() handle all connection setup.

… rather than having it split up between the caller and accept().

9 years agoclient: Add support for TCP connections.
Sebastian Harl [Wed, 14 Jan 2015 21:51:38 +0000 (22:51 +0100)]
client: Add support for TCP connections.

9 years agofrontend: Add support for TCP connections.
Sebastian Harl [Wed, 14 Jan 2015 21:47:10 +0000 (22:47 +0100)]
frontend: Add support for TCP connections.

This is the new default listener type (unless the listen address starts with a
slash in which case a UNIXSOCK connection is used).

This does not support any kind of peer lookup yet. Instead, it'll fully trust
the client for now and accept any username. In the future, this will be
configurable and multiple mechanisms (e.g. ident, SSL cert) will be supported.

9 years agofrontend: Make peer detection more flexible.
Sebastian Harl [Wed, 14 Jan 2015 21:36:38 +0000 (22:36 +0100)]
frontend: Make peer detection more flexible.

It's now a property of a listener implementation.

Moved the unixsock implementation over from frontend/connection to
frontend/sock.

9 years agoos utils: Fixed a typo in the UDP resolver implementation.
Sebastian Harl [Wed, 14 Jan 2015 21:02:31 +0000 (22:02 +0100)]
os utils: Fixed a typo in the UDP resolver implementation.

9 years agofrontend/sock: Simplified internal address handling.
Sebastian Harl [Wed, 14 Jan 2015 21:01:03 +0000 (22:01 +0100)]
frontend/sock: Simplified internal address handling.

Strip the <type>: prefix early. Else, we'd have to strip it off over and over
again when working with the address string.

9 years agoconnection: Update the connection name as early as possible.
Sebastian Harl [Wed, 14 Jan 2015 20:56:22 +0000 (21:56 +0100)]
connection: Update the connection name as early as possible.

This is just to avoid weird error messages if setting up the connection
failed.

9 years agoos utils: Added sdb_resolve().
Sebastian Harl [Mon, 12 Jan 2015 17:43:35 +0000 (18:43 +0100)]
os utils: Added sdb_resolve().

This is a convenient wrapper around getaddrinfo().

9 years agoclient: Make I/O handling more flexible.
Sebastian Harl [Sun, 11 Jan 2015 13:43:14 +0000 (14:43 +0100)]
client: Make I/O handling more flexible.

9 years agofrontend: Make connection I/O handling more flexible.
Sebastian Harl [Sat, 10 Jan 2015 15:28:20 +0000 (16:28 +0100)]
frontend: Make connection I/O handling more flexible.

That'll allow to create connection objects which require special I/O
operations.

9 years agosysdb: Accept status=OK after sending a query.
Sebastian Harl [Sat, 10 Jan 2015 13:03:36 +0000 (14:03 +0100)]
sysdb: Accept status=OK after sending a query.

OK is sent back on successful STORE commands.

9 years agofrontend/grammar: Added 'STORE host|service|metric [attribute]' commands.
Sebastian Harl [Sat, 10 Jan 2015 13:02:31 +0000 (14:02 +0100)]
frontend/grammar: Added 'STORE host|service|metric [attribute]' commands.

This implements the STORE command in SysQL.

9 years agofrontend: Add support for SDB_CONNECTION_STORE.
Sebastian Harl [Sat, 10 Jan 2015 13:00:14 +0000 (14:00 +0100)]
frontend: Add support for SDB_CONNECTION_STORE.

The front-end now supports parsing and executing STORE commands.

9 years agostore: Let store_metric() accept non-NULL but empty metric-store.
Sebastian Harl [Sat, 10 Jan 2015 12:33:13 +0000 (13:33 +0100)]
store: Let store_metric() accept non-NULL but empty metric-store.

9 years agoproto: Added support for unmarshaling hosts/services/metrics/attributes.
Sebastian Harl [Fri, 2 Jan 2015 16:52:52 +0000 (17:52 +0100)]
proto: Added support for unmarshaling hosts/services/metrics/attributes.

9 years agoproto: Let unmarshaled string/binary data point into the provided buffer.
Sebastian Harl [Fri, 2 Jan 2015 15:09:14 +0000 (16:09 +0100)]
proto: Let unmarshaled string/binary data point into the provided buffer.

The caller may decide whether to keep a copy or not.

9 years agoutils unixsock: Avoid memory allocations in common cases.
Sebastian Harl [Fri, 2 Jan 2015 14:53:54 +0000 (15:53 +0100)]
utils unixsock: Avoid memory allocations in common cases.

9 years agodata: Let sdb_data_parse() accept a const string and copy it if necessary.
Sebastian Harl [Fri, 2 Jan 2015 14:47:24 +0000 (15:47 +0100)]
data: Let sdb_data_parse() accept a const string and copy it if necessary.

Given that we need a copy for regex values anyway, this is more consistent.

9 years agofrontend/scanner: Pass the right size to strncat.
Sebastian Harl [Fri, 2 Jan 2015 11:56:14 +0000 (12:56 +0100)]
frontend/scanner: Pass the right size to strncat.

Thanks to clang for identifying this :-)

9 years agosysdb/scanner.l: Include ctype.h; needed for isspace().
Sebastian Harl [Fri, 2 Jan 2015 11:55:53 +0000 (12:55 +0100)]
sysdb/scanner.l: Include ctype.h; needed for isspace().

9 years agoLink librt into libsysdbclient.
Sebastian Harl [Fri, 2 Jan 2015 11:44:03 +0000 (12:44 +0100)]
Link librt into libsysdbclient.

That's required for clock_gettime.

9 years agoproto: Added sdb_proto_unmarshal_data().
Sebastian Harl [Fri, 2 Jan 2015 11:35:28 +0000 (12:35 +0100)]
proto: Added sdb_proto_unmarshal_data().

This function decodes a datum from the wire format.

9 years agodata: Free binary and regex array values as well.
Sebastian Harl [Fri, 2 Jan 2015 11:33:50 +0000 (12:33 +0100)]
data: Free binary and regex array values as well.

9 years agodata: Let sdb_data_cmp() support all array types.
Sebastian Harl [Fri, 2 Jan 2015 10:51:37 +0000 (11:51 +0100)]
data: Let sdb_data_cmp() support all array types.

9 years agoproto: Let unmarshal functions return the number of bytes processed.
Sebastian Harl [Mon, 29 Dec 2014 15:53:44 +0000 (16:53 +0100)]
proto: Let unmarshal functions return the number of bytes processed.

That's a more flexible and straight-forward interface allowing callers to not
care about the size of the expected data.

9 years agoproto: Added support for marshaling attribute objects.
Sebastian Harl [Thu, 25 Dec 2014 17:21:02 +0000 (18:21 +0100)]
proto: Added support for marshaling attribute objects.

9 years agoproto: Use hton instead of ntoh functions in marshal functions.
Sebastian Harl [Wed, 24 Dec 2014 15:49:55 +0000 (16:49 +0100)]
proto: Use hton instead of ntoh functions in marshal functions.

D'oh!

9 years agoproto: Define a wire format for host/service/metric and add marshal functions.
Sebastian Harl [Wed, 24 Dec 2014 15:47:18 +0000 (16:47 +0100)]
proto: Define a wire format for host/service/metric and add marshal functions.

9 years agoproto: Don't include a string's length in the wire format.
Sebastian Harl [Wed, 24 Dec 2014 15:40:29 +0000 (16:40 +0100)]
proto: Don't include a string's length in the wire format.

That's not necessary given that all strings are null-terminated.

9 years agoAdd a suffix to integer marshal/unmarshal functions specifying the int size.
Sebastian Harl [Wed, 24 Dec 2014 11:58:02 +0000 (12:58 +0100)]
Add a suffix to integer marshal/unmarshal functions specifying the int size.

9 years agoproto: Add support for marshaling all data types.
Sebastian Harl [Tue, 23 Dec 2014 17:47:21 +0000 (18:47 +0100)]
proto: Add support for marshaling all data types.

9 years agoproto: Add support for marshaling regex types.
Sebastian Harl [Tue, 23 Dec 2014 17:25:57 +0000 (18:25 +0100)]
proto: Add support for marshaling regex types.

That is, marshal the regex's raw string to be recompiled by the receiver.

9 years agoproto: Added support for marshaling double-precision values.
Sebastian Harl [Tue, 23 Dec 2014 17:16:13 +0000 (18:16 +0100)]
proto: Added support for marshaling double-precision values.

For this, determine the memory layout of doubles in 'configure' and then use
IEEE-754 big-endian encoding on the wire. For now, only little- and big-endian
IEEE-754 doubles are supported but that'll cover the vast majority of all
systems.

9 years agoproto: Added sdb_proto_marshal_data.
Sebastian Harl [Sat, 20 Dec 2014 15:05:50 +0000 (16:05 +0100)]
proto: Added sdb_proto_marshal_data.

This function encodes a datum into the wire format.

9 years agoutils/proto: Let all unmarshal functions accept strings instead of strbufs.
Sebastian Harl [Wed, 17 Dec 2014 21:59:57 +0000 (22:59 +0100)]
utils/proto: Let all unmarshal functions accept strings instead of strbufs.

This is more consistent and flexible.

9 years agoutils/strbuf: Added SDB_STRBUF_STR.
Sebastian Harl [Wed, 17 Dec 2014 21:53:55 +0000 (22:53 +0100)]
utils/strbuf: Added SDB_STRBUF_STR.

This macro returns a tuple describing the buffer content and length. The idea
is that functions which operate on (binary) strings should accept two such
arguments and the macro will make it easier to pass them in.

9 years agoproto: Renamed sdb_proto_get_int to sdb_proto_unmarshal_int.
Sebastian Harl [Tue, 16 Dec 2014 08:54:58 +0000 (09:54 +0100)]
proto: Renamed sdb_proto_get_int to sdb_proto_unmarshal_int.

… to be consistent with the other functions.

9 years agoconnection: Use sdb_connection_close to close a connection.
Sebastian Harl [Mon, 15 Dec 2014 20:22:16 +0000 (21:22 +0100)]
connection: Use sdb_connection_close to close a connection.

9 years agoconnection: Use sdb_proto_unmarshal_header.
Sebastian Harl [Mon, 15 Dec 2014 09:46:25 +0000 (10:46 +0100)]
connection: Use sdb_proto_unmarshal_header.

9 years agoproto: Add sdb_proto_unmarshal_header().
Sebastian Harl [Mon, 15 Dec 2014 09:46:08 +0000 (10:46 +0100)]
proto: Add sdb_proto_unmarshal_header().

9 years agoMoved sdb_proto_send/sdb_proto_select to sdb_write/sdb_select.
Sebastian Harl [Mon, 15 Dec 2014 09:39:05 +0000 (10:39 +0100)]
Moved sdb_proto_send/sdb_proto_select to sdb_write/sdb_select.

These functions are not protocol-specific but rather simple wrappers around
system calls.

9 years agoconnection: Let sdb_connection_close not deallocate the connection.
Sebastian Harl [Mon, 15 Dec 2014 08:18:43 +0000 (09:18 +0100)]
connection: Let sdb_connection_close not deallocate the connection.

That'll allow for more flexible use.

9 years agoconnection: Renamed sdb_connection_read to sdb_connection_handle.
Sebastian Harl [Mon, 15 Dec 2014 08:12:10 +0000 (09:12 +0100)]
connection: Renamed sdb_connection_read to sdb_connection_handle.

The function does more than read from the connection, so the old name was a
bad choice.

9 years agoutils/proto: Replaced sdb_proto_send_msg with sdb_proto_marshal.
Sebastian Harl [Sun, 14 Dec 2014 15:30:20 +0000 (16:30 +0100)]
utils/proto: Replaced sdb_proto_send_msg with sdb_proto_marshal.

The new function won't actually send the message but write it into a provided
buffer in the wire format. This allows for more flexible use of the function.

9 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.
Sebastian Harl [Fri, 12 Dec 2014 07:55:39 +0000 (08:55 +0100)]
Merged branch 'master' of git://git.tokkee.org/sysdb.

9 years agosysdb: Use sdb_log() instead of printf().
Sebastian Harl [Thu, 11 Dec 2014 23:24:20 +0000 (00:24 +0100)]
sysdb: Use sdb_log() instead of printf().

9 years agosysdb: Wait for the actual reply after sending a command.
Sebastian Harl [Thu, 11 Dec 2014 23:03:06 +0000 (00:03 +0100)]
sysdb: Wait for the actual reply after sending a command.

Otherwise, multiple replies (log messages) will be interleaved with input
prompts.

9 years agosysdb: Only try to reconnect before executing a command or on an empty line.
Sebastian Harl [Thu, 11 Dec 2014 22:42:14 +0000 (23:42 +0100)]
sysdb: Only try to reconnect before executing a command or on an empty line.

9 years agosysdb: Fixed check for duplicate history entries.
Sebastian Harl [Thu, 11 Dec 2014 21:42:39 +0000 (22:42 +0100)]
sysdb: Fixed check for duplicate history entries.

current_history() returns the currently *selected* history entry. Rather, we
want the latest entry, that is, the one added last.

9 years agosysdb: Store all commands in the history; even if they failed.
Sebastian Harl [Thu, 11 Dec 2014 21:17:37 +0000 (22:17 +0100)]
sysdb: Store all commands in the history; even if they failed.

9 years agosysdb: Parse strings correctly.
Sebastian Harl [Thu, 11 Dec 2014 21:06:49 +0000 (22:06 +0100)]
sysdb: Parse strings correctly.

… and focus only on syntax elements that may include semicolons and escape
their meaning as a query terminator.

9 years agosysdb: Do an attempt to reconnect on all user input.
Sebastian Harl [Thu, 11 Dec 2014 08:57:49 +0000 (09:57 +0100)]
sysdb: Do an attempt to reconnect on all user input.

9 years agosysdb: Don't exit if the server closed the connection.
Sebastian Harl [Thu, 11 Dec 2014 08:47:56 +0000 (09:47 +0100)]
sysdb: Don't exit if the server closed the connection.

Instead, notify the user an try to reconnect before executing the next
command.

9 years agosysdb: Make sure to properly reset term attributes.
Sebastian Harl [Thu, 11 Dec 2014 08:45:41 +0000 (09:45 +0100)]
sysdb: Make sure to properly reset term attributes.

Don't record the "old" settings on each call to rawmode since we do that a lot
of times. Also, don't use up all atexit handler slots this way.

9 years agosysdb: Clear the current command from the buffer after error.
Sebastian Harl [Thu, 11 Dec 2014 08:44:35 +0000 (09:44 +0100)]
sysdb: Clear the current command from the buffer after error.

9 years agostore.h: Make it such that HOST/SERVICE/METRIC don't share bits with ATTRIBUTE
Sebastian Harl [Wed, 10 Dec 2014 23:15:55 +0000 (00:15 +0100)]
store.h: Make it such that HOST/SERVICE/METRIC don't share bits with ATTRIBUTE

An attribute can be assigned to any of the other types. This approach allows
to represent host-, service-, and metric-attributes in one byte.

9 years agofrontend: Get the username of the remote peer from a UNIX socket.
Sebastian Harl [Tue, 9 Dec 2014 14:19:47 +0000 (15:19 +0100)]
frontend: Get the username of the remote peer from a UNIX socket.

Then, only allow that user to authenticate against the daemon. That is, use
the same as PostgreSQL's "peer" authentication for all connections.

9 years agoutils/os: Added sdb_get_current_user().
Sebastian Harl [Tue, 9 Dec 2014 14:18:04 +0000 (15:18 +0100)]
utils/os: Added sdb_get_current_user().

… copied from sysdb/main.c which now uses this new function.

9 years agoREADME: Added libfacter and librrd to list of prerequisites.
Sebastian Harl [Sun, 7 Dec 2014 22:41:04 +0000 (23:41 +0100)]
README: Added libfacter and librrd to list of prerequisites.

9 years agoAdded documentation and sample configuration for the facter backend.
Sebastian Harl [Thu, 4 Dec 2014 20:10:01 +0000 (21:10 +0100)]
Added documentation and sample configuration for the facter backend.

9 years agofacter plugin: Added a plugin collecting local facter values.
Sebastian Harl [Thu, 4 Dec 2014 19:55:00 +0000 (20:55 +0100)]
facter plugin: Added a plugin collecting local facter values.

The plugin uses libfacter from the cfacter project. libfacter is a C++
library, so the plugin is implemented in C++ as well using a small shim to
talk to SysDB.

9 years agoBootstrap the build system for C++ as well.
Sebastian Harl [Thu, 4 Dec 2014 16:35:45 +0000 (17:35 +0100)]
Bootstrap the build system for C++ as well.

That is, check CXX support for strict compiler flags.

Also, use all configured strict flags when checking for other strict flags.
This way, we detect problems when using flags that are not supported in C++
mode.

9 years agoUse stdbool.h's bool type instead of _Bool.
Sebastian Harl [Wed, 3 Dec 2014 21:20:45 +0000 (22:20 +0100)]
Use stdbool.h's bool type instead of _Bool.

That'll work with C++ as well.

9 years agoanalyzer: Analyze expressions as well; validate typed expressions.
Sebastian Harl [Tue, 2 Dec 2014 17:31:48 +0000 (18:31 +0100)]
analyzer: Analyze expressions as well; validate typed expressions.

Also, added various tests for typed expressions.

9 years agofrontend/grammar: Added support for <obj_type> . <obj_expression>.
Sebastian Harl [Mon, 1 Dec 2014 16:36:29 +0000 (17:36 +0100)]
frontend/grammar: Added support for <obj_type> . <obj_expression>.

… where <obj_expression> may be an arbitrary expression accessing an object's
fields or attributes.

9 years agostore: Added sdb_store_expr_typed.
Sebastian Harl [Mon, 1 Dec 2014 16:34:59 +0000 (17:34 +0100)]
store: Added sdb_store_expr_typed.

This function creates an expression which evaluates another expression in the
context of an object's sibling. The sibling is specified by type and refers to
a parent or child node of the specified type.