aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend.c
diff options
context:
space:
mode:
authorcbdev <cb@cbcdn.com>2017-06-03 23:02:46 +0200
committercbdev <cb@cbcdn.com>2017-06-03 23:02:46 +0200
commitb7e009a98698c4ed81b16cbc274a3b47793c1bab (patch)
treed0f130451f381bea80822b5d1533fca36d4f3434 /backend.c
parent19fd0404ba636ff5f67cbf218d175ccbef29579a (diff)
downloadmidimonster-b7e009a98698c4ed81b16cbc274a3b47793c1bab.tar.gz
midimonster-b7e009a98698c4ed81b16cbc274a3b47793c1bab.tar.bz2
midimonster-b7e009a98698c4ed81b16cbc274a3b47793c1bab.zip
Config parser
Diffstat (limited to 'backend.c')
-rw-r--r--backend.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/backend.c b/backend.c
new file mode 100644
index 0000000..e1e143f
--- /dev/null
+++ b/backend.c
@@ -0,0 +1,43 @@
+#include <string.h>
+#include "midimonster.h"
+#include "backend.h"
+
+static size_t nbackends = 0;
+static backend* backends = NULL;
+
+backend* backend_match(char* name){
+ size_t u;
+ for(u = 0; u < nbackends; u++){
+ if(!strcmp(backends[u].name, name)){
+ return backends + u;
+ }
+ }
+ return NULL;
+}
+
+backend* mm_backend_register(backend b){
+ if(!backend_match(b.name)){
+ backends = realloc(backends, (nbackends + 1) * sizeof(backend));
+ if(!backends){
+ fprintf(stderr, "Failed to allocate memory\n");
+ nbackends = 0;
+ return NULL;
+ }
+ backends[nbackends] = b;
+ nbackends++;
+
+ fprintf(stderr, "Registered backend %s\n", b.name);
+ return backends + (nbackends - 1);
+ }
+ return NULL;
+}
+
+int backends_stop(){
+ size_t u;
+ for(u = 0; u < nbackends; u++){
+ backends[u].shutdown();
+ }
+ free(backends);
+ nbackends = 0;
+ return 0;
+}