diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-07-26 14:22:18 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-07-26 14:22:18 +0200 |
commit | 0ffde34faac958a28842a952157852fd072834a5 (patch) | |
tree | 28a2ccbac9dec9e843bd995a42d1c82f14c4fc6d /mmss/protocol.cpp | |
parent | ac9f22678b5db6a63dd3a64313d7123000702733 (diff) | |
download | gmrf-0ffde34faac958a28842a952157852fd072834a5.tar gmrf-0ffde34faac958a28842a952157852fd072834a5.zip |
Convert mmss to C++, add parser
Diffstat (limited to 'mmss/protocol.cpp')
-rw-r--r-- | mmss/protocol.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/mmss/protocol.cpp b/mmss/protocol.cpp new file mode 100644 index 0000000..ace3560 --- /dev/null +++ b/mmss/protocol.cpp @@ -0,0 +1,51 @@ +/* + Copyright (c) 2013, Matthias Schiffer <mschiffer@universe-factory.net> + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mmss.hpp" + +#include <dlfcn.h> +#include <cstdio> + + +const mmss_protocol_t* mmss_load_protocol(const char *module) { + void *handle = dlopen(module, RTLD_NOW); + if (!handle) { + fprintf(stderr, "unable to load protocol from `%s': %s\n", module, dlerror()); + return NULL; + } + + dlerror(); + const mmss_protocol_t *proto = reinterpret_cast<const mmss_protocol_t*>(dlsym(handle, "mmss_protocol_info")); + if (!proto) { + fprintf(stderr, "unable to load protocol from `%s': %s\n", module, dlerror()); + dlclose(handle); + return NULL; + } + + fprintf(stderr, "loaded protocol `%s' version %s\n", proto->get_name(), proto->get_version()); + + return proto; +} |