GMCP_Status(): Statusabfrage GMCP-Module

Funktion kann verwendet werden, um zu pruefen,
ob bestimmte Module aktiv sind und welche Version
davon. Explizit auch, ob das "Core"-Modul und
damit GMCP ueberhaupt aktiv ist.

Change-Id: I516bd2085584705a504ad9480cd6e962178aed40
diff --git a/std/player/protocols/gmcp.c b/std/player/protocols/gmcp.c
index 2845bd7..3d954da 100644
--- a/std/player/protocols/gmcp.c
+++ b/std/player/protocols/gmcp.c
@@ -59,6 +59,21 @@
 
 // **************** API nach Aussen folgt ab hier ********************
 
+// Prueft, ob ein Modul aktiv ist. Falls ja, wird die Versionsnummer des
+// aktiven Moduls geliefert.
+// Wenn <module> 0 ist, wird das Modul "Core" geprueft, d.h. ob GMCP
+// grundsaetzlich aktiv ist.
+protected int GMCP_Status(string module)
+{
+  module ||= "Core";
+  if (mappingp(gmcpdata) && member(gmcpdata, module))
+  {
+    struct gmcp_mod_s mod = gmcpdata[module];
+    return mod->version;
+  }
+  return 0;
+}
+
 // Wird vom Spielerobjekt gerufen, wenn sich Daten am Charakter veraendert
 // haben, die gesendet werden sollten.
 // Dies ist eigentlich nur ein Wrapper, der die Daten an den Handler eines
diff --git a/sys/player/gmcp.h b/sys/player/gmcp.h
index 8a0f13a..1c6e4fa 100644
--- a/sys/player/gmcp.h
+++ b/sys/player/gmcp.h
@@ -17,6 +17,7 @@
 #define __GMCP_H_PROTO__
 
 // prototypes
+protected int GMCP_Status(string module);
 protected int GMCP_Char(mapping data);
 protected int GMCP_Channel(string msg, string channel, string sender);
 protected int GMCP_Room();