diff options
Diffstat (limited to 'xorg-server/hw/xwin/xlaunch/config.cc')
-rw-r--r-- | xorg-server/hw/xwin/xlaunch/config.cc | 373 |
1 files changed, 190 insertions, 183 deletions
diff --git a/xorg-server/hw/xwin/xlaunch/config.cc b/xorg-server/hw/xwin/xlaunch/config.cc index 3be68b0b3..45dfea745 100644 --- a/xorg-server/hw/xwin/xlaunch/config.cc +++ b/xorg-server/hw/xwin/xlaunch/config.cc @@ -1,189 +1,196 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include <libxml/parser.h> -#include <libxml/tree.h> -#include "config.h" -#include "window/util.h" -#include <stdexcept> - -xmlDocPtr CreateDocument() -{ - xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); - xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST "XLaunch"); - xmlDocSetRootElement(doc, root_node); - - return doc; - -} - -void setAttribute(xmlNodePtr elem, const char *name, const char *value) -{ - xmlNewProp(elem, BAD_CAST name, BAD_CAST value); -} - -void CConfig::Save(const char *filename) -{ - xmlDocPtr doc = CreateDocument(); - xmlNodePtr root = xmlDocGetRootElement(doc); - - switch (window) - { - case MultiWindow: - setAttribute(root, "WindowMode", "MultiWindow"); - break; - case Fullscreen: - setAttribute(root, "WindowMode", "Fullscreen"); - break; - default: - case Windowed: - setAttribute(root, "WindowMode", "Windowed"); - break; - case Nodecoration: - setAttribute(root, "WindowMode", "Nodecoration"); - break; - } - switch (client) - { - default: - case NoClient: - setAttribute(root, "ClientMode", "NoClient"); - break; - case StartProgram: - setAttribute(root, "ClientMode", "StartProgram"); - break; - case XDMCP: - setAttribute(root, "ClientMode", "XDMCP"); - break; - } - setAttribute(root, "LocalClient", local?"True":"False"); - setAttribute(root, "Display", display.c_str()); - setAttribute(root, "Program", program.c_str()); - setAttribute(root, "RemoteProtocol", protocol.c_str()); - setAttribute(root, "RemoteHost", host.c_str()); - setAttribute(root, "RemoteUser", user.c_str()); - setAttribute(root, "XDMCPHost", xdmcp_host.c_str()); - setAttribute(root, "XDMCPBroadcast", broadcast?"True":"False"); - setAttribute(root, "XDMCPIndirect", indirect?"True":"False"); - setAttribute(root, "Clipboard", clipboard?"True":"False"); - setAttribute(root, "ClipboardPrimary", clipboardprimary?"True":"False"); - setAttribute(root, "ExtraParams", extra_params.c_str()); - setAttribute(root, "Wgl", wgl?"True":"False"); - - xmlSaveFormatFileEnc(filename, doc, "UTF-8", 1); - - /*free the document */ - xmlFreeDoc(doc); +/*
+ * Copyright (c) 2005 Alexander Gottwald
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above copyright
+ * holders shall not be used in advertising or otherwise to promote the sale,
+ * use or other dealings in this Software without prior written authorization.
+ */
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include "config.h"
+#include "window/util.h"
+#include <stdexcept>
+
+xmlDocPtr CreateDocument()
+{
+ xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
+ xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST "XLaunch");
+ xmlDocSetRootElement(doc, root_node);
+
+ return doc;
+
+}
+
+void setAttribute(xmlNodePtr elem, const char *name, const char *value)
+{
+ xmlNewProp(elem, BAD_CAST name, BAD_CAST value);
+}
+
+void CConfig::Save(const char *filename)
+{
+ xmlDocPtr doc = CreateDocument();
+ xmlNodePtr root = xmlDocGetRootElement(doc);
+
+ switch (window)
+ {
+ case MultiWindow:
+ setAttribute(root, "WindowMode", "MultiWindow");
+ break;
+ case Fullscreen:
+ setAttribute(root, "WindowMode", "Fullscreen");
+ break;
+ default:
+ case Windowed:
+ setAttribute(root, "WindowMode", "Windowed");
+ break;
+ case Nodecoration:
+ setAttribute(root, "WindowMode", "Nodecoration");
+ break;
+ }
+ switch (client)
+ {
+ default:
+ case NoClient:
+ setAttribute(root, "ClientMode", "NoClient");
+ break;
+ case StartProgram:
+ setAttribute(root, "ClientMode", "StartProgram");
+ break;
+ case XDMCP:
+ setAttribute(root, "ClientMode", "XDMCP");
+ break;
+ }
+ setAttribute(root, "LocalClient", local?"True":"False");
+ setAttribute(root, "Display", display.c_str());
+ setAttribute(root, "LocalProgram", localprogram.c_str()); + setAttribute(root, "RemoteProgram", remoteprogram.c_str()); + setAttribute(root, "RemotePassword", remotepassword.c_str());
+ setAttribute(root, "RemoteHost", host.c_str());
+ setAttribute(root, "RemoteUser", user.c_str());
+ setAttribute(root, "XDMCPHost", xdmcp_host.c_str());
+ setAttribute(root, "XDMCPBroadcast", broadcast?"True":"False");
+ setAttribute(root, "XDMCPIndirect", indirect?"True":"False");
+ setAttribute(root, "Clipboard", clipboard?"True":"False");
+ setAttribute(root, "ClipboardPrimary", clipboardprimary?"True":"False");
+ setAttribute(root, "ExtraParams", extra_params.c_str());
+ setAttribute(root, "Wgl", wgl?"True":"False");
+ setAttribute(root, "DisableAC", disableac?"True":"False");
+
+ xmlSaveFormatFileEnc(filename, doc, "UTF-8", 1);
+
+ /*free the document */
+ xmlFreeDoc(doc);
/*
*Free the global variables that may
*have been allocated by the parser.
*/
xmlCleanupParser();
-} - -BOOL getAttribute(xmlNodePtr elem, const char *name, std::string &ret) -{ - ret=(char*)xmlGetProp(elem,BAD_CAST name); - return true; -} - -BOOL getAttributeBool(xmlNodePtr elem, const char *name, bool &ret) -{ - const char *pVal=(char*)xmlGetProp(elem, BAD_CAST name); - if (!pVal) - return false; - - std::string str(pVal); - - if (str == "True") - ret = true; - else - ret = false; - return true; -} - - -void CConfig::Load(const char *filename) -{ - xmlDocPtr doc = xmlReadFile(filename, NULL, 0); - - xmlNodePtr root; - - if (doc == NULL) - { - return; - } - - root = xmlDocGetRootElement(doc); - - std::string windowMode; - std::string clientMode; - - if (getAttribute(root, "WindowMode", windowMode)) - { - if (windowMode == "MultiWindow") - window = MultiWindow; - else if (windowMode == "Fullscreen") - window = Fullscreen; - else if (windowMode == "Windowed") - window = Windowed; - else if (windowMode == "Nodecoration") - window = Nodecoration; - } - if (getAttribute(root, "ClientMode", clientMode)) - { - if (clientMode == "NoClient") - client = NoClient; - else if (clientMode == "StartProgram") - client = StartProgram; - else if (clientMode == "XDMCP") - client = XDMCP; - } - - getAttributeBool(root, "LocalClient", local); - getAttribute(root, "Display", display); - getAttribute(root, "Program", program); - getAttribute(root, "RemoteProtocol", protocol); - getAttribute(root, "RemoteHost", host); - getAttribute(root, "RemoteUser", user); - getAttribute(root, "XDMCPHost", xdmcp_host); - getAttributeBool(root, "XDMCPBroadcast", broadcast); - getAttributeBool(root, "XDMCPIndirect", indirect); - getAttributeBool(root, "Clipboard", clipboard); - getAttributeBool(root, "ClipboardPrimary", clipboardprimary); - getAttribute(root, "ExtraParams", extra_params); - getAttributeBool(root, "Wgl", wgl); - - /*free the document */ - xmlFreeDoc(doc); - - /* - *Free the global variables that may - *have been allocated by the parser. - */ - xmlCleanupParser(); -} - +}
+
+BOOL getAttribute(xmlNodePtr elem, const char *name, std::string &ret)
+{
+ char *pVal=(char*)xmlGetProp(elem,BAD_CAST name);
+ if (!pVal)
+ return false;
+ ret=pVal;
+ return true;
+}
+
+BOOL getAttributeBool(xmlNodePtr elem, const char *name, bool &ret)
+{
+ const char *pVal=(char*)xmlGetProp(elem, BAD_CAST name);
+ if (!pVal)
+ return false;
+
+ std::string str(pVal);
+
+ if (str == "True")
+ ret = true;
+ else
+ ret = false;
+ return true;
+}
+
+
+void CConfig::Load(const char *filename)
+{
+ xmlDocPtr doc = xmlReadFile(filename, NULL, 0);
+
+ xmlNodePtr root;
+
+ if (doc == NULL)
+ {
+ return;
+ }
+
+ root = xmlDocGetRootElement(doc);
+
+ std::string windowMode;
+ std::string clientMode;
+
+ if (getAttribute(root, "WindowMode", windowMode))
+ {
+ if (windowMode == "MultiWindow")
+ window = MultiWindow;
+ else if (windowMode == "Fullscreen")
+ window = Fullscreen;
+ else if (windowMode == "Windowed")
+ window = Windowed;
+ else if (windowMode == "Nodecoration")
+ window = Nodecoration;
+ }
+ if (getAttribute(root, "ClientMode", clientMode))
+ {
+ if (clientMode == "NoClient")
+ client = NoClient;
+ else if (clientMode == "StartProgram")
+ client = StartProgram;
+ else if (clientMode == "XDMCP")
+ client = XDMCP;
+ }
+
+ getAttributeBool(root, "LocalClient", local);
+ getAttribute(root, "Display", display);
+ getAttribute(root, "LocalProgram", localprogram);
+ getAttribute(root, "RemoteProgram", remoteprogram);
+ getAttribute(root, "RemotePassword", remotepassword);
+ getAttribute(root, "RemoteHost", host);
+ getAttribute(root, "RemoteUser", user);
+ getAttribute(root, "XDMCPHost", xdmcp_host);
+ getAttributeBool(root, "XDMCPBroadcast", broadcast);
+ getAttributeBool(root, "XDMCPIndirect", indirect);
+ getAttributeBool(root, "Clipboard", clipboard);
+ getAttributeBool(root, "ClipboardPrimary", clipboardprimary);
+ getAttribute(root, "ExtraParams", extra_params);
+ getAttributeBool(root, "Wgl", wgl);
+ getAttributeBool(root, "DisableAC", disableac);
+
+ /*free the document */
+ xmlFreeDoc(doc);
+
+ /*
+ *Free the global variables that may
+ *have been allocated by the parser.
+ */
+ xmlCleanupParser();
+}
+
|