x0vncserver does not support SetDesktopSize; remove -AcceptSetDesktopSize
Add a Configuration::removeParam to support such cases.
diff --git a/common/rfb/Configuration.cxx b/common/rfb/Configuration.cxx
index a5c2302..418a0c9 100644
--- a/common/rfb/Configuration.cxx
+++ b/common/rfb/Configuration.cxx
@@ -1,5 +1,6 @@
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright 2004-2005 Cendio AB.
+ * Copyright 2017 Peter Astrand <astrand@cendio.se> for Cendio AB
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -166,6 +167,23 @@
}
+bool Configuration::remove(const char* param) {
+ VoidParameter *current = head;
+ VoidParameter **prevnext = &head;
+
+ while (current) {
+ if (strcasecmp(current->getName(), param) == 0) {
+ *prevnext = current->_next;
+ return true;
+ }
+ prevnext = ¤t->_next;
+ current = current->_next;
+ }
+
+ return false;
+}
+
+
// -=- VoidParameter
VoidParameter::VoidParameter(const char* name_, const char* desc_,
diff --git a/common/rfb/Configuration.h b/common/rfb/Configuration.h
index d319915..6197317 100644
--- a/common/rfb/Configuration.h
+++ b/common/rfb/Configuration.h
@@ -80,6 +80,9 @@
// - List the parameters of this Configuration group
void list(int width=79, int nameWidth=10);
+ // - Remove a parameter from this Configuration group
+ bool remove(const char* param);
+
// - readFromFile
// Read configuration parameters from the specified file.
void readFromFile(const char* filename);
@@ -116,6 +119,9 @@
static void listParams(int width=79, int nameWidth=10) {
global()->list(width, nameWidth);
}
+ static bool removeParam(const char* param) {
+ return global()->remove(param);
+ }
private:
friend class VoidParameter;