[SCM] TANGO distributed control system. branch, master, updated. debian/6.1.1c-1-59-g84502f7

Picca Frédéric-Emmanuel picca at synchrotron-soleil.fr
Tue Oct 5 21:43:08 UTC 2010


The following commit has been merged in the master branch:
commit 6e450a6e417fd304d03ac532afe1f5e097d57e51
Author: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
Date:   Tue Oct 5 22:35:37 2010 +0200

    * update the patches for the 7.2.0

diff --git a/debian/patches/debian/tango-admin b/debian/patches/debian/tango-admin
deleted file mode 100644
index 54afe65..0000000
--- a/debian/patches/debian/tango-admin
+++ /dev/null
@@ -1,2330 +0,0 @@
-Description: add the tango_admin from the CVS
- This patch has been created by dpkg-source during the package build.
- Here's the last changelog entry, hopefully it gives details on why
- those changes were made:
- .
- tango (7.1.1~dfsg-1) unstable; urgency=low
- .
-   * Imported Upstream version 7.1.1~dfsg
-   * add the dversionmangle in the watch file
-   * update to debian-policy 3.8.3 (nothing to do)
-   * switch to the 3.0 (quilt) source format
-   * starter install the right device in the database during installation.
- .
- The person named in the Author field signed this changelog entry.
-Author: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: http://bugs.debian.org/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- /dev/null
-+++ tango-7.1.1~dfsg/utils/tango_admin/tango_admin.cpp
-@@ -0,0 +1,839 @@
-+static const char *RcsId = "$Id: tango_admin.cpp,v 1.1 2010/03/12 12:34:36 taurel Exp $";
-+
-+//+============================================================================
-+//
-+// file :               tango_admin.cpp
-+//
-+// description :        C++ source code for the tango_admin utility
-+//						This utility is a Tango database command line interface
-+//						Obviously, not all the database features are interfaced
-+//						by this tool. Only the features needed for the Debian
-+//						packaging have been implemented. This means:
-+//						- ping the database server
-+//						- check if a device is defined in DB
-+//						- check if a server is defined in DB
-+//						- create a server in DB
-+//						- delete a server from the DB
-+//						- create a property in DB
-+//						- delete a property from DB
-+//
-+// project :            TANGO
-+//
-+// author(s) :          E.Taurel
-+//
-+// Copyright (C) :      2004,2005,2006,2007,2008,2009,2010
-+//						European Synchrotron Radiation Facility
-+//                      BP 220, Grenoble 38043
-+//                      FRANCE
-+//
-+// This file is part of Tango.
-+//
-+// Tango is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU Lesser General Public License as published by
-+// the Free Software Foundation, either version 3 of the License, or
-+// (at your option) any later version.
-+// 
-+// Tango is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU Lesser General Public License for more details.
-+// 
-+// You should have received a copy of the GNU Lesser General Public License
-+// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-+//
-+// $Revision: 1.1 $
-+//
-+//-============================================================================
-+
-+#include <iostream>
-+#include <anyoption.h>
-+#include <tango.h>
-+
-+using namespace std;
-+
-+int ping_database();
-+int check_device(char *);
-+int add_server(char *,char *,char *);
-+void list2vect(string &,vector<string> &);
-+int check_server(char *);
-+int delete_server(char *,bool);
-+int add_property(char *,char *,char *);
-+int delete_property(char *,char *);
-+
-+
-+int main(int argc,char *argv[])
-+{
-+	AnyOption *opt = new AnyOption();
-+
-+//
-+// Add usage menu
-+//
-+
-+	opt->addUsage("Usage: " );
-+ 	opt->addUsage(" --help  		Prints this help " );
-+	opt->addUsage(" --ping-database	Ping database " );
-+	opt->addUsage(" --check-device <dev>    Check if the device is defined in DB");
-+ 	opt->addUsage(" --add-server <exec/inst> <class> <dev list (comma separated)>   Add a server in DB" );
-+ 	opt->addUsage(" --delete-server <exec/inst> [--with-properties]   Delete a server from DB" );
-+	opt->addUsage(" --check-server <exec/inst>   Check if a device server is defined in DB");
-+ 	opt->addUsage(" --add-property <dev> <prop_name> <prop_value (comma separated for array)>    Add a device property in DB" );
-+	opt->addUsage(" --delete-property <dev> <prop_name>   Delete a device property from DB ");
-+
-+
-+//
-+// Define the command line options
-+//
-+
-+	opt->setFlag("help",'h');
-+ 	opt->setFlag("ping-database",'c');
-+	opt->setOption("add-server");
-+	opt->setOption("delete-server");
-+	opt->setFlag("with-properties");
-+	opt->setOption("add-property");
-+	opt->setOption("delete-property");
-+	opt->setOption("check-device");
-+	opt->setOption("check-server");
-+
-+//
-+// Process cmd line
-+//
-+
-+	opt->processCommandArgs( argc, argv );
-+
-+	if (!opt->hasOptions())
-+	{
-+		opt->printUsage();
-+		delete opt;
-+		return 0;
-+	}
-+
-+//
-+// --help option
-+//
-+
-+	if (opt->getFlag("help") || opt->getFlag('h'))
-+	{
-+		opt->printUsage();
-+		delete opt;
-+		return 0;
-+	}
-+
-+//
-+// --ping-database option
-+//
-+
-+	if (opt->getFlag("ping-database") == true)
-+	{
-+		if (opt->getValue("add-server") != NULL ||
-+			opt->getValue("delete-server") != NULL ||
-+		    opt->getValue("add-property") != NULL ||
-+		    opt->getValue("delete-property") != NULL ||
-+			opt->getValue("check-device") != NULL ||
-+			opt->getValue("check-server") != NULL ||
-+		    opt->getFlag("with-properties") == true)
-+			cout << "Can't mix option --check-database with other option(s)" << endl;
-+
-+		if (argc != 2)
-+		{
-+			cout << "Bad argument number for option --check-database" << endl;
-+			opt->printUsage();
-+			delete opt;
-+			return 0;
-+		}
-+
-+		cout << "Check database" << endl;
-+		int ret;
-+		ret = ping_database();
-+
-+		delete opt;
-+		return ret;
-+	}
-+
-+//
-+// --check-device option
-+//
-+
-+
-+	else if (opt->getValue("check-device") != NULL)
-+	{
-+		if (opt->getValue("delete-server") != NULL ||
-+		    opt->getValue("add-property") != NULL ||
-+		    opt->getValue("delete-property") != NULL ||
-+			opt->getValue("add-server") != NULL ||
-+			opt->getValue("check-server") != NULL ||
-+		    opt->getFlag("with-properties") == true)
-+			cout << "Can't mix option --add-server with other option(s)" << endl;
-+		else
-+		{
-+			if (argc != 3)
-+			{
-+				cout << "Bad argument number for option --check_device" << endl;
-+				opt->printUsage();
-+				delete opt;
-+				return 0;
-+			}
-+
-+			int ret;
-+			ret = check_device(opt->getValue("check-device"));
-+
-+			delete opt;
-+			return ret;
-+		}
-+	}
-+
-+//
-+// --add-server option
-+//
-+
-+
-+	else if (opt->getValue("add-server") != NULL)
-+	{
-+		if (opt->getValue("delete-server") != NULL ||
-+		    opt->getValue("add-property") != NULL ||
-+		    opt->getValue("delete-property") != NULL ||
-+			opt->getValue("check-device") != NULL ||
-+			opt->getValue("check-server") != NULL ||
-+		    opt->getFlag("with-properties") == true)
-+			cout << "Can't mix option --add-server with other option(s)" << endl;
-+		else
-+		{
-+			if (argc != 5)
-+			{
-+				cout << "Bad argument number for option --add-server" << endl;
-+				opt->printUsage();
-+				delete opt;
-+				return 0;
-+			}
-+
-+			int ret;
-+			ret = add_server(opt->getValue("add-server"),opt->getArgv(0),opt->getArgv(1));
-+
-+			delete opt;
-+			return ret;
-+		}
-+	}
-+
-+//
-+// --check-server option
-+//
-+
-+
-+	else if (opt->getValue("check-server") != NULL)
-+	{
-+		if (opt->getValue("delete-server") != NULL ||
-+		    opt->getValue("add-property") != NULL ||
-+		    opt->getValue("delete-property") != NULL ||
-+			opt->getValue("add-server") != NULL ||
-+			opt->getValue("check-device") != NULL ||
-+		    opt->getFlag("with-properties") == true)
-+			cout << "Can't mix option --check-server with other option(s)" << endl;
-+		else
-+		{
-+			if (argc != 3)
-+			{
-+				cout << "Bad argument number for option --check_server" << endl;
-+				opt->printUsage();
-+				delete opt;
-+				return 0;
-+			}
-+
-+			int ret;
-+			ret = check_server(opt->getValue("check-server"));
-+
-+			delete opt;
-+			return ret;
-+		}
-+	}
-+
-+//
-+// --delete-server option
-+//
-+
-+	else if (opt->getValue("delete-server") != NULL)
-+	{
-+		if (opt->getValue("add-server") != NULL ||
-+		    opt->getValue("add-property") != NULL ||
-+			opt->getValue("check-server") != NULL ||
-+			opt->getValue("check-device") != NULL ||
-+		    opt->getValue("delete-property") != NULL)
-+			cout << "Can't mix option --delete-server with other option(s)" << endl;
-+		else
-+		{
-+			if ((argc < 3 || argc > 4) ||
-+				(argc == 3 && strcmp(argv[2],"--with-properties") == 0) ||
-+				(strcmp(opt->getValue("delete-server"),"--with-properties") == 0))
-+			{
-+				cout << "Bad option delete-server usage" << endl;
-+				opt->printUsage();
-+				delete opt;
-+				return 0;
-+			}
-+
-+			int ret;
-+			if (opt->getFlag("with-properties") == true)
-+				ret = delete_server(opt->getValue("delete-server"),true);
-+			else
-+				ret = delete_server(opt->getValue("delete-server"),false);
-+
-+			delete opt;
-+			return ret;
-+		}
-+	}
-+
-+//
-+// --add-property option
-+//
-+
-+	else if (opt->getValue("add-property") != NULL)
-+	{
-+		if (opt->getValue("delete-server") != NULL ||
-+		    opt->getValue("delete-property") != NULL ||
-+			opt->getValue("add-server") != NULL ||
-+			opt->getValue("check-device") != NULL ||
-+			opt->getValue("check-server") != NULL ||
-+		    opt->getFlag("with-properties") == true ||
-+			opt->getFlag("ping-database") == true)
-+			cout << "Can't mix option --add-property with other option(s)" << endl;
-+		else
-+		{
-+			if (argc != 5)
-+			{
-+				cout << "Bag argument number for option --add-property" << endl;
-+				opt->printUsage();
-+				delete opt;
-+				return 0;
-+			}
-+
-+			int ret;
-+			ret = add_property(opt->getValue("add-property"),opt->getArgv(0),opt->getArgv(1));
-+
-+			delete opt;
-+			return ret;
-+		}
-+	}
-+
-+//
-+// --delete-property option
-+//
-+
-+	else if (opt->getValue("delete-property") != NULL)
-+	{
-+		if (opt->getValue("delete-server") != NULL ||
-+		    opt->getValue("add-property") != NULL ||
-+			opt->getValue("add-server") != NULL ||
-+			opt->getValue("check-device") != NULL ||
-+			opt->getValue("check-server") != NULL ||
-+		    opt->getFlag("with-properties") == true ||
-+			opt->getFlag("ping-database") == true)
-+			cout << "Can't mix option --delete-property with other option(s)" << endl;
-+		else
-+		{
-+			if (argc != 4)
-+			{
-+				cout << "Bag argument number for option --add-property" << endl;
-+				opt->printUsage();
-+				delete opt;
-+				return 0;
-+			}
-+
-+			int ret;
-+			ret = delete_property(opt->getValue("delete-property"),opt->getArgv(0));
-+
-+			delete opt;
-+			return ret;
-+		}
-+	}
-+//
-+// Unknown choice
-+//
-+
-+	else
-+	{
-+		cout << "Wrong usage" << endl;
-+		opt->printUsage();
-+	}
-+
-+	delete opt;
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		ping_database
-+// 
-+// description : 	This function connect to the database and executes
-+//					one of its command in order to check the database
-+//					connectivity
-+//
-+// The function returns 0 is everything is fine. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int ping_database()
-+{
-+	int ret = 0;
-+
-+	try
-+	{
-+		Tango::Database db;
-+
-+		string db_info;
-+		db_info = db.get_info();
-+	}
-+	catch (Tango::DevFailed &e)
-+	{
-+		ret = -1;
-+	}
-+	return ret;	
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		check_device
-+// 
-+// description : 	This function checks if a device is defined in the DB
-+//
-+// argument : in : 	- name : The device name
-+//
-+// The function returns 0 is the device is defined. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int check_device(char *name)
-+{
-+	int ret = 0;
-+
-+	try
-+	{
-+		Tango::Database db;
-+
-+		string d_name(name);
-+		Tango::DbDevImportInfo dii = db.import_device(d_name);
-+	}
-+	catch (Tango::DevFailed &e)
-+	{
-+		ret = -1;
-+	}
-+	return ret;	
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		add_server
-+// 
-+// description : 	This function adds a server definition in the DB
-+//
-+// argument : in : 	- d_name : The device server name (exec/inst)
-+//					- c_name : The class name
-+//					- d_list : The device list
-+//
-+// The function returns 0 is everything is fine. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int add_server(char *d_name,char *c_name,char *d_list)
-+{
-+	int ret = 0;
-+
-+//
-+// Check ds name syntax
-+//
-+
-+	string ds_name(d_name);
-+	string::size_type pos;
-+
-+	pos = ds_name.find('/');
-+	if ((count(ds_name.begin(),ds_name.end(),'/') != 1) || pos == 0 || pos == (ds_name.size() - 1))
-+	{
-+		cout << "Wrong syntax for ds name" << endl;
-+		ret = -1;
-+		return ret;
-+	}
-+
-+//
-+// Check class name syntax
-+//
-+
-+	string class_name(c_name);
-+	if (count(class_name.begin(),class_name.end(),'/') != 0)
-+	{
-+		cout << "Wrong syntax for class name" << endl;
-+		ret = -1;
-+		return ret;
-+	}
-+
-+//
-+// Check device list and device syntax
-+//
-+
-+	string dev_list(d_list);
-+	vector<string> dev_names;
-+
-+	list2vect(dev_list,dev_names);
-+
-+	for (unsigned int loop = 0;loop < dev_names.size();++loop)
-+	{
-+		if (count(dev_names[loop].begin(),dev_names[loop].end(),'/') != 2)
-+		{
-+			cout << "Wrong syntax for device " << dev_names[loop] << endl;
-+			ret = -1;
-+			return ret;
-+		}
-+
-+		string::size_type pos1,pos2;
-+		pos1 = dev_names[loop].find('/');
-+		pos2 = dev_names[loop].rfind('/');
-+
-+		if (pos1 == 0 || pos2 == dev_names[loop].length() - 1 || pos2 == pos1 + 1)
-+		{
-+			cout << "Wrong syntax for device " << dev_names[loop] << endl;
-+			ret = -1;
-+			return ret;
-+		}
-+	}
-+
-+//
-+// Create server in DB
-+// Dont forget to add the admin device
-+//
-+
-+	try
-+	{
-+		Tango::Database db;
-+
-+		Tango::DbDevInfos ddi;
-+		Tango::DbDevInfo tmp_dbi;
-+
-+		for (unsigned int loop = 0;loop < dev_names.size();++loop)
-+		{
-+			tmp_dbi.name = dev_names[loop];
-+			tmp_dbi._class = class_name;
-+			tmp_dbi.server = ds_name;
-+			ddi.push_back(tmp_dbi);
-+		}
-+		tmp_dbi.name = "dserver/" + ds_name;
-+		tmp_dbi._class = "DServer";
-+		tmp_dbi.server = ds_name;
-+
-+		ddi.push_back(tmp_dbi);
-+
-+		db.add_server(ds_name,ddi);
-+	}
-+	catch (Tango::DevFailed &e)
-+	{
-+		ret = -1;
-+	}
-+	return ret;
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		check_server
-+// 
-+// description : 	This function checks if a device server is defined in the DB
-+//
-+// argument : in : 	- d_name : The device server name
-+//
-+// The function returns 0 is the device is defined. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int check_server(char *d_name)
-+{
-+	int ret = 0;
-+
-+	string dev_name = "dserver/";
-+	string ds_name = d_name;
-+
-+	dev_name = dev_name + ds_name;
-+
-+	ret = check_device((char *)dev_name.c_str());
-+
-+	return ret;
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		delete_server
-+// 
-+// description : 	This function deletes a device server from the DB
-+//
-+// argument : in : 	- d_name : The device server name
-+//					- with_res : If true, also delte device properties
-+//
-+// The function returns 0 is everything is fine. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int delete_server(char *d_name,bool with_res)
-+{
-+	int ret = 0;
-+
-+	string ds_name(d_name);
-+
-+//
-+// Check device server name syntax
-+//
-+
-+	string::size_type pos;
-+	pos = ds_name.find('/');
-+
-+	if (pos == 0 || pos == ds_name.size() - 1 ||
-+		count(ds_name.begin(),ds_name.end(),'/') != 1)
-+	{
-+		ret = -1;
-+		return ret;
-+	}
-+
-+	ret = check_server(d_name);
-+	if (ret != 0)
-+		return ret;
-+
-+
-+	try
-+	{
-+
-+		Tango::Database db;
-+
-+//
-+// If we need to remove prop
-+//
-+
-+		if (with_res == true)
-+		{
-+
-+//
-+//	First get the ds class list
-+//
-+
-+			Tango::DbDatum db_res = db.get_device_class_list(ds_name);
-+			vector<string> dev_list;
-+			db_res >> dev_list;
-+
-+//
-+// Get device property name for each device
-+//
-+
-+			for (unsigned int loop = 0;loop < dev_list.size();++loop)
-+			{
-+				vector<string> prop_list;
-+
-+				db.get_device_property_list(dev_list[loop],"*",prop_list);
-+
-+//
-+// Delete all device properties
-+//
-+
-+				if (prop_list.size() != 0)
-+				{
-+					Tango::DbData dbd;
-+					
-+					for (unsigned int ctr = 0;ctr < prop_list.size();++ctr)
-+						dbd.push_back(Tango::DbDatum(prop_list[ctr]));
-+
-+					db.delete_device_property(dev_list[loop],dbd);
-+				}
-+
-+				++loop;
-+			}				
-+
-+		}
-+
-+//
-+// Delete device server from db
-+//
-+
-+
-+		db.delete_server(ds_name);
-+	}
-+	catch (Tango::DevFailed &e)
-+	{
-+		ret = -1;
-+	}
-+
-+	return ret;
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		add_property
-+// 
-+// description : 	This function adds a device property in the DB
-+//
-+// argument : in : 	- d_name : The device name 
-+//					- p_name : The property name
-+//					- p_val : The property value
-+//
-+// The function returns 0 is everything is fine. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int add_property(char *d_name,char *p_name,char *p_val)
-+{
-+	int ret = 0;
-+
-+//
-+// Check dev name syntax
-+//
-+
-+	string dev_name(d_name);
-+	string::size_type pos1,pos2;
-+
-+	pos1 = dev_name.find('/');
-+	pos2 = dev_name.rfind('/');
-+
-+	if ((count(dev_name.begin(),dev_name.end(),'/') != 2) || 
-+		pos1 == 0 || pos2 == (dev_name.size() - 1) || pos2 == pos1 + 1)
-+	{
-+		cout << "Wrong syntax for device name" << endl;
-+		ret = -1;
-+		return ret;
-+	}
-+
-+//
-+// Check if the device is defined
-+//
-+
-+	if (check_device(d_name) != 0)
-+		return -1;
-+
-+//
-+// Convert prop value(s) into a vector
-+//
-+
-+	string prop_val(p_val);
-+	vector<string> prop_val_list;
-+
-+	list2vect(prop_val,prop_val_list);
-+
-+//
-+// Create server in DB
-+// Dont forget to add the admin device
-+//
-+
-+	try
-+	{
-+		Tango::Database db;
-+
-+		Tango::DbData dbd;
-+		Tango::DbDatum db_s(p_name);
-+		
-+		db_s << prop_val_list;
-+		dbd.push_back(db_s);
-+
-+		db.put_device_property(dev_name,dbd);
-+	}
-+	catch (Tango::DevFailed &e)
-+	{
-+		ret = -1;
-+	}
-+	return ret;
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		delete_property
-+// 
-+// description : 	This function deletes a device property from the DB
-+//
-+// argument : in : 	- d_name : The device name 
-+//					- p_name : The property name
-+//
-+// The function returns 0 is everything is fine. Otherwise, it returns -1
-+//
-+//--------------------------------------------------------------------------
-+
-+int delete_property(char *d_name,char *p_name)
-+{
-+	int ret = 0;
-+
-+//
-+// Check dev name syntax
-+//
-+
-+	string dev_name(d_name);
-+	string::size_type pos1,pos2;
-+
-+	pos1 = dev_name.find('/');
-+	pos2 = dev_name.rfind('/');
-+
-+	if ((count(dev_name.begin(),dev_name.end(),'/') != 2) || 
-+		pos1 == 0 || pos2 == (dev_name.size() - 1) || pos2 == pos1 + 1)
-+	{
-+		cout << "Wrong syntax for device name" << endl;
-+		ret = -1;
-+		return ret;
-+	}
-+
-+//
-+// Check if the device is defined
-+//
-+
-+	if (check_device(d_name) != 0)
-+		return -1;
-+
-+//
-+// Create server in DB
-+// Dont forget to add the admin device
-+//
-+
-+	try
-+	{
-+		Tango::Database db;
-+
-+		Tango::DbData dbd;
-+		dbd.push_back(Tango::DbDatum(p_name));
-+
-+		db.delete_device_property(dev_name,dbd);
-+	}
-+	catch (Tango::DevFailed &e)
-+	{
-+		ret = -1;
-+	}
-+	return ret;
-+}
-+
-+//+-------------------------------------------------------------------------
-+//
-+// method : 		list2vect
-+// 
-+// description : 	This function converts a comma separated
-+//					device list into a vector of strings with one
-+//					element for each device
-+//
-+// argument : in : 	- dev_list : The device list
-+//					- dev_names : The device vector
-+//
-+//--------------------------------------------------------------------------
-+
-+void list2vect(string &dev_list,vector<string> &dev_names)
-+{
-+	string::size_type beg,end;
-+
-+	bool end_loop = false;
-+	beg = 0;
-+
-+	while (end_loop == false)
-+	{
-+		end = dev_list.find(',',beg);
-+		if (end == beg)
-+		{
-+			++beg;
-+			continue;
-+		}
-+
-+		if (end == string::npos)
-+		{
-+			end = dev_list.length();
-+			end_loop = true;
-+		}
-+
-+		string one_dev;
-+		one_dev = dev_list.substr(beg,end - beg);
-+		dev_names.push_back(one_dev);
-+
-+		beg = end + 1;
-+		if (beg == dev_list.size())
-+			end_loop = true;
-+	}
-+}
-+
---- /dev/null
-+++ tango-7.1.1~dfsg/utils/tango_admin/anyoption.h
-@@ -0,0 +1,295 @@
-+//
-+// anyoption.h -	include file for command line options management
-+//
-+// 
-+// Copyright (C) :      2004,2005,2006,2007,2008,2009,2010
-+//						European Synchrotron Radiation Facility
-+//                      BP 220, Grenoble 38043
-+//                      FRANCE
-+//
-+// This file is part of Tango.
-+//
-+// Tango is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU Lesser General Public License as published by
-+// the Free Software Foundation, either version 3 of the License, or
-+// (at your option) any later version.
-+// 
-+// Tango is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU Lesser General Public License for more details.
-+// 
-+// You should have received a copy of the GNU Lesser General Public License
-+// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-+
-+#ifndef _ANYOPTION_H
-+#define _ANYOPTION_H
-+
-+#include <iostream>
-+#include <fstream>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#define COMMON_OPT 	1
-+#define COMMAND_OPT 	2
-+#define FILE_OPT 	3
-+#define COMMON_FLAG 	4
-+#define COMMAND_FLAG 	5
-+#define FILE_FLAG 	6
-+
-+#define COMMAND_OPTION_TYPE  	1
-+#define COMMAND_FLAG_TYPE 	2
-+#define FILE_OPTION_TYPE  	3
-+#define FILE_FLAG_TYPE 		4 
-+#define UNKNOWN_TYPE 		5
-+
-+#define DEFAULT_MAXOPTS 	10
-+#define MAX_LONG_PREFIX_LENGTH 	2
-+
-+#define DEFAULT_MAXUSAGE	3
-+#define DEFAULT_MAXHELP         10	
-+
-+#define TRUE_FLAG "true" 
-+
-+using namespace std;
-+
-+class AnyOption 
-+{
-+
-+public: /* the public interface */
-+	AnyOption();
-+	AnyOption(int maxoptions ); 
-+	AnyOption(int maxoptions , int maxcharoptions); 
-+	~AnyOption();
-+
-+	/* 
-+         * following set methods specifies the  
-+	 * special characters and delimiters 
-+	 * if not set traditional defaults will be used
-+         */
-+
-+	void setCommandPrefixChar( char _prefix );   /* '-' in "-w" */
-+	void setCommandLongPrefix( char *_prefix );  /* '--' in "--width" */
-+	void setFileCommentChar( char _comment );    /* '#' in shellscripts */
-+	void setFileDelimiterChar( char _delimiter );/* ':' in "width : 100" */
-+
-+	/* 
-+	 * provide the input for the options
-+         * like argv[] for commndline and the 
-+         * option file name  to use;
-+	 */
-+
-+	void useCommandArgs( int _argc, char **_argv );
-+	void useFiileName( const char *_filename );
-+
-+	/* 
-+         * turn off the POSIX style options 
-+         * this means anything starting with a '-' or "--"
-+         * will be considered a valid option 
-+         * which alo means you cannot add a bunch of 
-+         * POIX options chars together like "-lr"  for "-l -r"
-+         * 
-+         */
-+
-+	void noPOSIX();
-+
-+	/*
-+         * prints warning verbose if you set anything wrong 
-+         */
-+	void setVerbose();
-+
-+
-+	/* 
-+         * there are two types of options  
-+         *
-+         * Option - has an associated value ( -w 100 )
-+         * Flag  - no value, just a boolean flag  ( -nogui )
-+         * 
-+	 * the options can be either a string ( GNU style )
-+         * or a character ( traditional POSIX style ) 
-+         * or both ( --width, -w )
-+         *
-+         * the options can be common to the commandline and 
-+         * the optionfile, or can belong only to either of 
-+         * commandline and optionfile
-+         *
-+         * following set methods, handle all the aboove 
-+	 * cases of options.
-+         */
-+
-+	/* options comman to command line and option file */
-+	void setOption( const char *opt_string );
-+	void setOption( char  opt_char );
-+	void setOption( const char *opt_string , char opt_char );
-+	void setFlag( const char *opt_string );
-+	void setFlag( char  opt_char );
-+	void setFlag( const char *opt_string , char opt_char );
-+
-+	/* options read from commandline only */
-+	void setCommandOption( const char *opt_string );
-+	void setCommandOption( char  opt_char );
-+	void setCommandOption( const char *opt_string , char opt_char );
-+	void setCommandFlag( const char *opt_string );
-+	void setCommandFlag( char  opt_char );
-+	void setCommandFlag( const char *opt_string , char opt_char );
-+
-+	/* options read from an option file only  */
-+	void setFileOption( const char *opt_string );
-+	void setFileOption( char  opt_char );
-+	void setFileOption( const char *opt_string , char opt_char );
-+	void setFileFlag( const char *opt_string );
-+	void setFileFlag( char  opt_char );
-+	void setFileFlag( const char *opt_string , char opt_char );
-+
-+	/*
-+         * process the options, registerd using 
-+         * useCommandArgs() and useFileName();
-+         */
-+	void processOptions();  
-+	void processCommandArgs();
-+	void processCommandArgs( int max_args );
-+	bool processFile();
-+
-+	/*
-+         * process the specified options 
-+         */
-+	void processCommandArgs( int _argc, char **_argv );
-+	void processCommandArgs( int _argc, char **_argv, int max_args );
-+	bool processFile( const char *_filename );
-+	
-+	/*
-+         * get the value of the options 
-+	 * will return NULL if no value is set 
-+         */
-+	char *getValue( const char *_option );
-+	bool  getFlag( const char *_option );
-+	char *getValue( char _optchar );
-+	bool  getFlag( char _optchar );
-+
-+	/*
-+	 * Print Usage
-+	 */
-+	void printUsage();
-+	void printAutoUsage();
-+	void addUsage( const char *line );
-+	void printHelp();
-+        /* print auto usage printing for unknown options or flag */
-+	void autoUsagePrint(bool flag);
-+	
-+	/* 
-+         * get the argument count and arguments sans the options
-+         */
-+	int   getArgc();
-+	char* getArgv( int index );
-+	bool  hasOptions();
-+
-+private: /* the hidden data structure */
-+	int argc;		/* commandline arg count  */
-+	char **argv;  		/* commndline args */
-+	const char* filename; 	/* the option file */
-+	char* appname; 	/* the application name from argv[0] */
-+
-+	int *new_argv; 		/* arguments sans options (index to argv) */
-+	int new_argc;   	/* argument count sans the options */
-+	int max_legal_args; 	/* ignore extra arguments */
-+
-+
-+	/* option strings storage + indexing */
-+	int max_options; 	/* maximum number of options */
-+	const char **options; 	/* storage */
-+	int *optiontype; 	/* type - common, command, file */
-+	int *optionindex;	/* index into value storage */
-+	int option_counter; 	/* counter for added options  */
-+
-+	/* option chars storage + indexing */
-+	int max_char_options; 	/* maximum number options */
-+	char *optionchars; 	/*  storage */
-+	int *optchartype; 	/* type - common, command, file */
-+	int *optcharindex; 	/* index into value storage */
-+	int optchar_counter; 	/* counter for added options  */
-+
-+	/* values */
-+	char **values; 		/* common value storage */
-+	int g_value_counter; 	/* globally updated value index LAME! */
-+
-+	/* help and usage */
-+	const char **usage; 	/* usage */
-+	int max_usage_lines;	/* max usage lines reseverd */
-+	int usage_lines;	/* number of usage lines */
-+
-+	bool command_set;	/* if argc/argv were provided */
-+	bool file_set;		/* if a filename was provided */
-+	bool mem_allocated;     /* if memory allocated in init() */
-+	bool posix_style; 	/* enables to turn off POSIX style options */
-+	bool verbose;		/* silent|verbose */
-+	bool print_usage;	/* usage verbose */
-+	bool print_help;	/* help verbose */
-+	
-+	char opt_prefix_char;		/*  '-' in "-w" */
-+	char long_opt_prefix[MAX_LONG_PREFIX_LENGTH]; /* '--' in "--width" */
-+	char file_delimiter_char;	/* ':' in width : 100 */
-+	char file_comment_char;		/*  '#' in "#this is a comment" */
-+	char equalsign;
-+	char comment;
-+	char delimiter;
-+	char endofline;
-+	char whitespace;
-+	char nullterminate;
-+
-+	bool set;   //was static member
-+	bool once;  //was static member
-+	
-+	bool hasoptions;
-+	bool autousage;
-+
-+private: /* the hidden utils */
-+	void init();	
-+	void init(int maxopt, int maxcharopt );	
-+	bool alloc();
-+	void cleanup();
-+	bool valueStoreOK();
-+
-+	/* grow storage arrays as required */
-+	bool doubleOptStorage();
-+	bool doubleCharStorage();
-+	bool doubleUsageStorage();
-+
-+	bool setValue( const char *option , char *value );
-+	bool setFlagOn( const char *option );
-+	bool setValue( char optchar , char *value);
-+	bool setFlagOn( char optchar );
-+
-+	void addOption( const char* option , int type );
-+	void addOption( char optchar , int type );
-+	void addOptionError( const char *opt);
-+	void addOptionError( char opt);
-+	bool findFlag( char* value );
-+	void addUsageError( const char *line );
-+	bool CommandSet();
-+	bool FileSet();
-+	bool POSIX();
-+
-+	char parsePOSIX( char* arg );
-+	int parseGNU( char *arg );
-+	bool matchChar( char c );
-+	int matchOpt( char *opt );
-+
-+	/* dot file methods */
-+	char *readFile();
-+	char *readFile( const char* fname );
-+	bool consumeFile( char *buffer );
-+	void processLine( char *theline, int length );
-+	char *chomp( char *str );
-+	void valuePairs( char *type, char *value ); 
-+	void justValue( char *value );
-+
-+	void printVerbose( const char *msg );
-+	void printVerbose( char *msg );
-+	void printVerbose( char ch );
-+	void printVerbose( );
-+
-+
-+};
-+
-+#endif /* ! _ANYOPTION_H */
-+
---- /dev/null
-+++ tango-7.1.1~dfsg/utils/tango_admin/anyoption.cpp
-@@ -0,0 +1,1159 @@
-+static const char *RcsId = "$Id: anyoption.cpp,v 1.1 2010/03/12 12:34:36 taurel Exp $";
-+
-+//+============================================================================
-+//
-+// file :               anyoption.cpp
-+//
-+// description :        C++ source code for the AnyOption
-+//						class. This class is used to manage the command line
-+//						line arguments. This code comes from the
-+//						http://www.hackorama.com/anyoption.
-+//
-+// project :            TANGO
-+//
-+// author(s) :          Kishan Thomas (E.Taurel)
-+//
-+// Copyright (C) :      2004,2005,2006,2007,2008,2009,2010
-+//						European Synchrotron Radiation Facility
-+//                      BP 220, Grenoble 38043
-+//                      FRANCE
-+//
-+// This code (and the associated include file) comes from the following
-+// web page: http://www.hackorama.com/anyoption/
-+//
-+// It is available there without any licensing informations.
-+//
-+// This file is part of Tango.
-+//
-+// Tango is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU Lesser General Public License as published by
-+// the Free Software Foundation, either version 3 of the License, or
-+// (at your option) any later version.
-+// 
-+// Tango is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU Lesser General Public License for more details.
-+// 
-+// You should have received a copy of the GNU Lesser General Public License
-+// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
-+//
-+// $Revision: 1.1 $
-+//
-+//-============================================================================
-+
-+
-+#include "anyoption.h"
-+
-+AnyOption::AnyOption()
-+{
-+	init();
-+}
-+
-+AnyOption::AnyOption(int maxopt)
-+{
-+	init( maxopt , maxopt );
-+}
-+
-+AnyOption::AnyOption(int maxopt, int maxcharopt)
-+{
-+	init( maxopt , maxcharopt );
-+}
-+
-+AnyOption::~AnyOption()
-+{
-+	if( mem_allocated )
-+		cleanup();
-+}
-+
-+void
-+AnyOption::init()
-+{
-+	init( DEFAULT_MAXOPTS , DEFAULT_MAXOPTS );
-+}
-+
-+void
-+AnyOption::init(int maxopt, int maxcharopt )
-+{
-+
-+	max_options 	= maxopt;
-+	max_char_options = maxcharopt;
-+	max_usage_lines	= DEFAULT_MAXUSAGE;
-+	usage_lines	= 0 ;
-+	argc 		= 0;
-+	argv 		= NULL;
-+	posix_style	= true;
-+	verbose 	= false;
-+	filename 	= NULL;
-+	appname 	= NULL;	
-+	option_counter 	= 0;
-+	optchar_counter	= 0;
-+	new_argv 	= NULL;
-+	new_argc 	= 0 ;
-+	max_legal_args 	= 0 ;
-+	command_set 	= false;
-+	file_set 	= false;
-+	values 		= NULL;	
-+	g_value_counter = 0;
-+	mem_allocated 	= false;
-+	command_set 	= false;
-+	file_set	= false;
-+	opt_prefix_char     = '-';
-+	file_delimiter_char = ':';
-+	file_comment_char   = '#';
-+	equalsign 	= '=';
-+	comment       = '#' ;
-+	delimiter     = ':' ;
-+	endofline     = '\n';
-+	whitespace    = ' ' ;
-+	nullterminate = '\0';
-+	set = false;
-+	once = true;
-+	hasoptions = false;
-+	autousage = false;
-+
-+	::strcpy( long_opt_prefix , "--" );
-+
-+	if( alloc() == false ){
-+		cout << endl << "OPTIONS ERROR : Failed allocating memory" ;
-+		cout << endl ;
-+		cout << "Exiting." << endl ;
-+		exit (0);
-+	}
-+}
-+
-+bool
-+AnyOption::alloc()
-+{
-+	int i = 0 ;
-+	int size = 0 ;
-+
-+	if( mem_allocated )
-+		return true;
-+
-+	size = (max_options+1) * sizeof(const char*);
-+	options = (const char**)malloc( size );	
-+	optiontype = (int*) malloc( (max_options+1)*sizeof(int) );	
-+	optionindex = (int*) malloc( (max_options+1)*sizeof(int) );	
-+	if( options == NULL || optiontype == NULL || optionindex == NULL )
-+		return false;
-+	else
-+		mem_allocated  = true;
-+	for( i = 0 ; i < max_options ; i++ ){
-+		options[i] = NULL;
-+		optiontype[i] = 0 ;
-+		optionindex[i] = -1 ;
-+	}
-+	optionchars = (char*) malloc( (max_char_options+1)*sizeof(char) );
-+	optchartype = (int*) malloc( (max_char_options+1)*sizeof(int) );	
-+	optcharindex = (int*) malloc( (max_char_options+1)*sizeof(int) );	
-+	if( optionchars == NULL || 
-+            optchartype == NULL || 
-+            optcharindex == NULL )
-+        {
-+		mem_allocated = false;
-+		return false;
-+	}
-+	for( i = 0 ; i < max_char_options ; i++ ){
-+		optionchars[i] = '0';
-+		optchartype[i] = 0 ;
-+		optcharindex[i] = -1 ;
-+	}
-+
-+	size = (max_usage_lines+1) * sizeof(const char*) ;
-+	usage = (const char**) malloc( size );
-+
-+	if( usage == NULL  ){
-+		mem_allocated = false;
-+		return false;
-+	}
-+	for( i = 0 ; i < max_usage_lines ; i++ )
-+		usage[i] = NULL;
-+
-+	return true;
-+}
-+
-+bool
-+AnyOption::doubleOptStorage()
-+{
-+	options = (const char**)realloc( options,  
-+			((2*max_options)+1) * sizeof( const char*) );
-+	optiontype = (int*) realloc(  optiontype ,  
-+			((2 * max_options)+1)* sizeof(int) );	
-+	optionindex = (int*) realloc(  optionindex,  
-+			((2 * max_options)+1) * sizeof(int) );	
-+	if( options == NULL || optiontype == NULL || optionindex == NULL )
-+		return false;
-+	/* init new storage */
-+	for( int i = max_options ; i < 2*max_options ; i++ ){
-+		options[i] = NULL;
-+		optiontype[i] = 0 ;
-+		optionindex[i] = -1 ;
-+	}
-+	max_options = 2 * max_options ;
-+	return true;
-+}
-+
-+bool
-+AnyOption::doubleCharStorage()
-+{
-+	optionchars = (char*) realloc( optionchars,  
-+			((2*max_char_options)+1)*sizeof(char) );
-+	optchartype = (int*) realloc( optchartype,  
-+			((2*max_char_options)+1)*sizeof(int) );	
-+	optcharindex = (int*) realloc( optcharindex,  
-+			((2*max_char_options)+1)*sizeof(int) );	
-+	if( optionchars == NULL || 
-+	    optchartype == NULL || 
-+	    optcharindex == NULL )
-+		return false;
-+	/* init new storage */
-+	for( int i = max_char_options ; i < 2*max_char_options ; i++ ){
-+		optionchars[i] = '0';
-+		optchartype[i] = 0 ;
-+		optcharindex[i] = -1 ;
-+	}
-+	max_char_options = 2 * max_char_options;	
-+	return true;
-+}
-+
-+bool
-+AnyOption::doubleUsageStorage()
-+{
-+	usage = (const char**)realloc( usage,  
-+			((2*max_usage_lines)+1) * sizeof( const char*) );
-+	if ( usage == NULL )
-+		return false;
-+	for( int i = max_usage_lines ; i < 2*max_usage_lines ; i++ )
-+		usage[i] = NULL;
-+	max_usage_lines = 2 * max_usage_lines ;
-+	return true;
-+
-+}
-+
-+
-+void
-+AnyOption::cleanup()
-+{
-+	free (options);
-+	free (optiontype);
-+	free (optionindex);	
-+	free (optionchars);
-+	free (optchartype);
-+	free (optcharindex);
-+	free (usage);
-+	if( values != NULL )
-+		free (values);
-+	if( new_argv != NULL )
-+		free (new_argv);
-+}
-+
-+void
-+AnyOption::setCommandPrefixChar( char _prefix )
-+{
-+	opt_prefix_char = _prefix;
-+}
-+
-+void
-+AnyOption::setCommandLongPrefix( char *_prefix )
-+{
-+	if( strlen( _prefix ) > MAX_LONG_PREFIX_LENGTH ){
-+		*( _prefix + MAX_LONG_PREFIX_LENGTH ) = '\0'; 
-+	}
-+
-+	strcpy (long_opt_prefix,  _prefix);
-+}
-+
-+void
-+AnyOption::setFileCommentChar( char _comment )
-+{
-+	file_delimiter_char = _comment;
-+}
-+
-+
-+void
-+AnyOption::setFileDelimiterChar( char _delimiter )
-+{
-+	file_comment_char = _delimiter ;
-+}
-+
-+bool
-+AnyOption::CommandSet()
-+{
-+	return( command_set );
-+}
-+
-+bool
-+AnyOption::FileSet()
-+{
-+	return( file_set );
-+}
-+
-+void
-+AnyOption::noPOSIX()
-+{
-+	posix_style = false;
-+}
-+
-+bool
-+AnyOption::POSIX()
-+{
-+	return posix_style;
-+}
-+
-+
-+void
-+AnyOption::setVerbose()
-+{
-+	verbose = true ;
-+}
-+
-+void
-+AnyOption::printVerbose()
-+{
-+	if( verbose )
-+		cout << endl  ;
-+}
-+void
-+AnyOption::printVerbose( const char *msg )
-+{
-+	if( verbose )
-+		cout << msg  ;
-+}
-+
-+void
-+AnyOption::printVerbose( char *msg )
-+{
-+	if( verbose )
-+		cout << msg  ;
-+}
-+
-+void
-+AnyOption::printVerbose( char ch )
-+{
-+	if( verbose )
-+		cout << ch ;
-+}
-+
-+bool
-+AnyOption::hasOptions()
-+{
-+	return hasoptions;
-+}
-+
-+void
-+AnyOption::autoUsagePrint(bool _autousage)
-+{
-+	autousage = _autousage;
-+}
-+
-+void
-+AnyOption::useCommandArgs( int _argc, char **_argv )
-+{
-+	argc = _argc;
-+	argv = _argv;
-+	command_set = true;
-+	appname = argv[0];
-+	if(argc > 1) hasoptions = true;
-+}
-+
-+void
-+AnyOption::useFiileName( const char *_filename )
-+{
-+	filename = _filename;
-+	file_set = true;
-+}
-+
-+/*
-+ * set methods for options 
-+ */
-+
-+void
-+AnyOption::setCommandOption( const char *opt )
-+{
-+	addOption( opt , COMMAND_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setCommandOption( char opt )
-+{
-+	addOption( opt , COMMAND_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setCommandOption( const char *opt , char optchar )
-+{
-+	addOption( opt , COMMAND_OPT );
-+	addOption( optchar , COMMAND_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setCommandFlag( const char *opt )
-+{
-+	addOption( opt , COMMAND_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setCommandFlag( char opt )
-+{
-+	addOption( opt , COMMAND_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setCommandFlag( const char *opt , char optchar )
-+{
-+	addOption( opt , COMMAND_FLAG );
-+	addOption( optchar , COMMAND_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFileOption( const char *opt )
-+{
-+	addOption( opt , FILE_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFileOption( char opt )
-+{
-+	addOption( opt , FILE_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFileOption( const char *opt , char optchar )
-+{
-+	addOption( opt , FILE_OPT );
-+	addOption( optchar, FILE_OPT  );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFileFlag( const char *opt )
-+{
-+	addOption( opt , FILE_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFileFlag( char opt )
-+{
-+	addOption( opt , FILE_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFileFlag( const char *opt , char optchar )
-+{
-+	addOption( opt , FILE_FLAG );
-+	addOption( optchar , FILE_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setOption( const char *opt )
-+{
-+	addOption( opt , COMMON_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setOption( char opt )
-+{
-+	addOption( opt , COMMON_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setOption( const char *opt , char optchar )
-+{
-+	addOption( opt , COMMON_OPT );
-+	addOption( optchar , COMMON_OPT );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFlag( const char *opt )
-+{
-+	addOption( opt , COMMON_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFlag( const char opt )
-+{
-+	addOption( opt , COMMON_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::setFlag( const char *opt , char optchar )
-+{
-+	addOption( opt , COMMON_FLAG );
-+	addOption( optchar , COMMON_FLAG );
-+	g_value_counter++;
-+}
-+
-+void
-+AnyOption::addOption( const char *opt, int type )
-+{
-+	if( option_counter >= max_options ){
-+		if( doubleOptStorage() == false ){
-+			addOptionError( opt );
-+			return;
-+		}
-+	}
-+	options[ option_counter ] = opt ;
-+	optiontype[ option_counter ] =  type ;
-+	optionindex[ option_counter ] = g_value_counter; 
-+	option_counter++;
-+}
-+
-+void
-+AnyOption::addOption( char opt, int type )
-+{
-+	if( !POSIX() ){
-+		printVerbose("Ignoring the option character \"");
-+		printVerbose(  opt );
-+		printVerbose( "\" ( POSIX options are turned off )" );
-+		printVerbose();
-+		return;
-+	}
-+
-+
-+	if( optchar_counter >= max_char_options ){
-+		if( doubleCharStorage() == false ){
-+			addOptionError( opt );
-+			return;
-+		}
-+	}
-+	optionchars[ optchar_counter ] =  opt ;
-+	optchartype[ optchar_counter ] =  type ;
-+	optcharindex[ optchar_counter ] = g_value_counter; 
-+	optchar_counter++;
-+}
-+
-+void
-+AnyOption::addOptionError( const char *opt )
-+{
-+	cout << endl ;
-+	cout << "OPTIONS ERROR : Failed allocating extra memory " << endl ;
-+	cout << "While adding the option : \""<< opt << "\"" << endl;
-+	cout << "Exiting." << endl ;
-+	cout << endl ;
-+	exit(0);
-+}
-+
-+void
-+AnyOption::addOptionError( char opt )
-+{
-+	cout << endl ;
-+	cout << "OPTIONS ERROR : Failed allocating extra memory " << endl ;
-+	cout << "While adding the option: \""<< opt << "\"" << endl;
-+	cout << "Exiting." << endl ;
-+	cout << endl ;
-+	exit(0);
-+}
-+
-+void
-+AnyOption::processOptions()
-+{
-+	if( ! valueStoreOK() )
-+		return;
-+}
-+
-+void 
-+AnyOption::processCommandArgs(int max_args)
-+{
-+	max_legal_args = max_args;
-+	processCommandArgs();
-+}
-+ 
-+void
-+AnyOption::processCommandArgs( int _argc, char **_argv, int max_args )
-+{
-+	max_legal_args = max_args;
-+	processCommandArgs(  _argc, _argv );
-+}
-+
-+void
-+AnyOption::processCommandArgs( int _argc, char **_argv )
-+{
-+	useCommandArgs( _argc, _argv );
-+	processCommandArgs();
-+}
-+
-+void
-+AnyOption::processCommandArgs()
-+{
-+   	if( ! ( valueStoreOK() && CommandSet() )  )
-+	   return;
-+	   
-+	if( max_legal_args == 0 )
-+		max_legal_args = argc;
-+	new_argv = (int*) malloc( (max_legal_args+1) * sizeof(int) );
-+	for( int i = 1 ; i < argc ; i++ ){/* ignore first argv */
-+		if(  argv[i][0] == long_opt_prefix[0] && 
-+                     argv[i][1] == long_opt_prefix[1] ) { /* long GNU option */
-+			int match_at = parseGNU( argv[i]+2 ); /* skip -- */
-+			if( match_at >= 0 && i < argc-1 ) /* found match */
-+				setValue( options[match_at] , argv[++i] );
-+		}else if(  argv[i][0] ==  opt_prefix_char ) { /* POSIX char */
-+			if( POSIX() ){ 
-+				char ch =  parsePOSIX( argv[i]+1 );/* skip - */ 
-+				if( ch != '0' && i < argc-1 ) /* matching char */
-+					setValue( ch ,  argv[++i] );
-+			} else { /* treat it as GNU option with a - */
-+				int match_at = parseGNU( argv[i]+1 ); /* skip - */
-+				if( match_at >= 0 && i < argc-1 ) /* found match */
-+					setValue( options[match_at] , argv[++i] );
-+			}
-+		}else { /* not option but an argument keep index */
-+			if( new_argc < max_legal_args ){
-+                                new_argv[ new_argc ] = i ;
-+                                new_argc++;
-+                        }else{ /* ignore extra arguments */
-+                                printVerbose( "Ignoring extra argument: " );
-+				printVerbose( argv[i] );
-+				printVerbose( );
-+				printAutoUsage();
-+                        }
-+			printVerbose( "Unknown command argument option : " );
-+			printVerbose( argv[i] );
-+			printVerbose( );
-+			printAutoUsage();
-+		}
-+	}
-+}
-+
-+char 
-+AnyOption::parsePOSIX( char* arg )
-+{
-+
-+	for( unsigned int i = 0 ; i < strlen(arg) ; i++ ){ 
-+		char ch = arg[i] ;
-+		if( matchChar(ch) ) { /* keep matching flags till an option */
-+			/*if last char argv[++i] is the value */
-+			if( i == strlen(arg)-1 ){ 
-+				return ch;
-+			}else{/* else the rest of arg is the value */
-+				i++; /* skip any '=' and ' ' */
-+				while( arg[i] == whitespace 
-+			    		|| arg[i] == equalsign )
-+					i++;	
-+				setValue( ch , arg+i );
-+				return '0';
-+			}
-+		}
-+	}
-+	printVerbose( "Unknown command argument option : " );
-+	printVerbose( arg );
-+	printVerbose( );
-+	printAutoUsage();
-+	return '0';
-+}
-+
-+int
-+AnyOption::parseGNU( char *arg )
-+{
-+	int split_at = 0;
-+	/* if has a '=' sign get value */
-+	for( unsigned int i = 0 ; i < strlen(arg) ; i++ ){
-+		if(arg[i] ==  equalsign ){
-+			split_at = i ; /* store index */
-+			i = strlen(arg); /* get out of loop */
-+		}
-+	}
-+	if( split_at > 0 ){ /* it is an option value pair */
-+		char* tmp = (char*) malloc(  (split_at+1)*sizeof(char) );
-+		for( int i = 0 ; i < split_at ; i++ )
-+			tmp[i] = arg[i];
-+		tmp[split_at] = '\0';
-+
-+		if ( matchOpt( tmp ) >= 0 ){
-+			setValue( options[matchOpt(tmp)] , arg+split_at+1 );
-+			free (tmp);
-+		}else{
-+			printVerbose( "Unknown command argument option : " );
-+			printVerbose( arg );
-+			printVerbose( );
-+			printAutoUsage();
-+			free (tmp);
-+			return -1;
-+		}
-+	}else{ /* regular options with no '=' sign  */
-+		return  matchOpt(arg);
-+	}
-+	return -1;
-+}
-+
-+
-+int 
-+AnyOption::matchOpt( char *opt )
-+{
-+	for( int i = 0 ; i < option_counter ; i++ ){
-+		if( strcmp( options[i], opt ) == 0 ){
-+			if( optiontype[i] ==  COMMON_OPT ||
-+			    optiontype[i] ==  COMMAND_OPT )	
-+			{ /* found option return index */
-+				return i;
-+			}else if( optiontype[i] == COMMON_FLAG ||
-+			       optiontype[i] == COMMAND_FLAG )
-+			{ /* found flag, set it */ 
-+				setFlagOn( opt );
-+				return -1;
-+			}
-+		}
-+	}
-+	printVerbose( "Unknown command argument option : " );
-+	printVerbose( opt  ) ;
-+	printVerbose( );
-+	printAutoUsage();
-+	return  -1;	
-+}
-+bool
-+AnyOption::matchChar( char c )
-+{
-+	for( int i = 0 ; i < optchar_counter ; i++ ){
-+		if( optionchars[i] == c ) { /* found match */
-+			if(optchartype[i] == COMMON_OPT ||
-+			     optchartype[i] == COMMAND_OPT )
-+			{ /* an option store and stop scanning */
-+				return true;	
-+			}else if( optchartype[i] == COMMON_FLAG || 
-+				  optchartype[i] == COMMAND_FLAG ) { /* a flag store and keep scanning */
-+				setFlagOn( c );
-+				return false;
-+			}
-+		}
-+	}
-+	printVerbose( "Unknown command argument option : " );
-+	printVerbose( c ) ;
-+	printVerbose( );
-+	printAutoUsage();
-+	return false;
-+}
-+
-+bool
-+AnyOption::valueStoreOK( )
-+{
-+	int size= 0;
-+	if( !set ){
-+		if( g_value_counter > 0 ){
-+			size = g_value_counter * sizeof(char*);
-+			values = (char**)malloc( size );	
-+			for( int i = 0 ; i < g_value_counter ; i++)
-+				values[i] = NULL;
-+			set = true;
-+		}
-+	}
-+	return  set;
-+}
-+
-+/*
-+ * public get methods 
-+ */
-+char*
-+AnyOption::getValue( const char *option )
-+{
-+	if( !valueStoreOK() )
-+		return NULL;
-+
-+	for( int i = 0 ; i < option_counter ; i++ ){
-+		if( strcmp( options[i], option ) == 0 )
-+			return values[ optionindex[i] ];
-+	}
-+	return NULL;
-+}
-+
-+bool
-+AnyOption::getFlag( const char *option )
-+{
-+	if( !valueStoreOK() )
-+		return false;
-+	for( int i = 0 ; i < option_counter ; i++ ){
-+		if( strcmp( options[i], option ) == 0 )
-+			return findFlag( values[ optionindex[i] ] );
-+	}
-+	return false;
-+}
-+
-+char*
-+AnyOption::getValue( char option )
-+{
-+	if( !valueStoreOK() )
-+		return NULL;
-+	for( int i = 0 ; i < optchar_counter ; i++ ){
-+		if( optionchars[i] == option )
-+			return values[ optcharindex[i] ];
-+	}
-+	return NULL;
-+}
-+
-+bool
-+AnyOption::getFlag( char option )
-+{
-+	if( !valueStoreOK() )
-+		return false;
-+	for( int i = 0 ; i < optchar_counter ; i++ ){
-+		if( optionchars[i] == option )
-+			return findFlag( values[ optcharindex[i] ] ) ;
-+	}
-+	return false;
-+}
-+
-+bool
-+AnyOption::findFlag( char* val )
-+{
-+	if( val == NULL )
-+		return false;
-+
-+	if( strcmp( TRUE_FLAG , val ) == 0 )
-+		return true;
-+
-+	return false;
-+}
-+
-+/*
-+ * private set methods 
-+ */
-+bool
-+AnyOption::setValue( const char *option , char *value )
-+{
-+	if( !valueStoreOK() )
-+		return false;
-+        for( int i = 0 ; i < option_counter ; i++ ){
-+                if( strcmp( options[i], option ) == 0 ){
-+                        values[ optionindex[i] ] = (char*) malloc((strlen(value)+1)*sizeof(char));
-+                        strcpy( values[ optionindex[i] ], value );
-+			return true;
-+		}
-+        }
-+        return false;
-+}
-+
-+bool
-+AnyOption::setFlagOn( const char *option )
-+{
-+	if( !valueStoreOK() )
-+		return false;
-+        for( int i = 0 ; i < option_counter ; i++ ){
-+                if( strcmp( options[i], option ) == 0 ){
-+                        values[ optionindex[i] ] = (char*) malloc((strlen(TRUE_FLAG)+1)*sizeof(char));
-+                        strcpy( values[ optionindex[i] ]  ,  TRUE_FLAG );
-+			return true;
-+		}
-+        }
-+        return false;
-+}
-+
-+bool
-+AnyOption::setValue( char option , char *value )
-+{
-+	if( !valueStoreOK() )
-+		return false;
-+        for( int i = 0 ; i < optchar_counter ; i++ ){
-+                if( optionchars[i] == option ){
-+                        values[ optcharindex[i] ] = (char*) malloc((strlen(value)+1)*sizeof(char));
-+                        strcpy( values[ optcharindex[i] ],  value );
-+			return true;
-+		}
-+        }
-+        return false;
-+}
-+
-+bool
-+AnyOption::setFlagOn( char option )
-+{
-+	if( !valueStoreOK() )
-+		return false;
-+        for( int i = 0 ; i < optchar_counter ; i++ ){
-+                if( optionchars[i] == option ){
-+                        values[ optcharindex[i] ] = (char*) malloc((strlen(TRUE_FLAG)+1)*sizeof(char));
-+			strcpy( values[ optcharindex[i] ] , TRUE_FLAG );
-+			return true;
-+		}
-+        }
-+        return false;
-+}
-+
-+
-+int
-+AnyOption::getArgc( )
-+{
-+	return new_argc;
-+}
-+
-+char* 
-+AnyOption::getArgv( int index )
-+{
-+	if( index < new_argc ){
-+		return ( argv[ new_argv[ index ] ] );
-+	}
-+	return NULL;
-+}
-+
-+/* dotfile sub routines */
-+
-+bool
-+AnyOption::processFile()
-+{
-+	if( ! (valueStoreOK() && FileSet())  )
-+		return false;
-+	return  ( consumeFile(readFile()) );
-+}
-+
-+bool
-+AnyOption::processFile( const char *filename )
-+{
-+	useFiileName(filename );
-+	return ( processFile() );
-+}
-+
-+char*
-+AnyOption::readFile()
-+{
-+	return ( readFile(filename) );
-+}
-+
-+/*
-+ * read the file contents to a character buffer 
-+ */
-+
-+char*
-+AnyOption::readFile( const char* fname )
-+{
-+        int length;
-+        char *buffer;
-+        ifstream is;
-+        is.open ( fname , ifstream::in );
-+        if( ! is.good() ){
-+                is.close();
-+                return NULL;
-+        }
-+        is.seekg (0, ios::end);
-+        length = is.tellg();
-+        is.seekg (0, ios::beg);
-+        buffer = (char*) malloc(length*sizeof(char));
-+        is.read (buffer,length);
-+        is.close();
-+        return buffer;
-+}
-+
-+/*
-+ * scans a char* buffer for lines that does not 
-+ * start with the specified comment character.
-+ */
-+bool
-+AnyOption::consumeFile( char *buffer )
-+{
-+
-+        if( buffer == NULL ) 
-+		return false;
-+
-+       	char *cursor = buffer;/* preserve the ptr */
-+       	char *pline = NULL ;
-+       	int linelength = 0;
-+       	bool newline = true;
-+       	for( unsigned int i = 0 ; i < strlen( buffer ) ; i++ ){
-+       	if( *cursor == endofline ) { /* end of line */
-+          	if( pline != NULL ) /* valid line */
-+               		processLine( pline, linelength );
-+                 	pline = NULL;
-+                 	newline = true;
-+           	}else if( newline ){ /* start of line */
-+                 	newline = false;
-+              		if( (*cursor != comment ) ){ /* not a comment */
-+		    		pline = cursor ;
-+                    		linelength = 0 ;
-+                	}
-+             	}
-+            	cursor++; /* keep moving */
-+            	linelength++;
-+       	}
-+     	free (buffer);
-+	return true;
-+}
-+
-+
-+/*
-+ *  find a valid type value pair separated by a delimiter 
-+ *  character and pass it to valuePairs()
-+ *  any line which is not valid will be considered a value
-+ *  and will get passed on to justValue()
-+ *
-+ *  assuming delimiter is ':' the behaviour will be,
-+ *
-+ *  width:10    - valid pair valuePairs( width, 10 );
-+ *  width : 10  - valid pair valuepairs( width, 10 );
-+ *
-+ *  ::::        - not valid 
-+ *  width       - not valid
-+ *  :10         - not valid 
-+ *  width:      - not valid  
-+ *  ::          - not valid 
-+ *  :           - not valid 
-+ *  
-+ */
-+
-+void
-+AnyOption::processLine( char *theline, int length  )
-+{
-+        bool found = false;
-+        char *pline = (char*) malloc( (length+1)*sizeof(char) );
-+        for( int i = 0 ; i < length ; i ++ )
-+                pline[i]= *(theline++);
-+        pline[length] = nullterminate;
-+        char *cursor = pline ; /* preserve the ptr */
-+        if( *cursor == delimiter || *(cursor+length-1) == delimiter ){
-+                justValue( pline );/* line with start/end delimiter */
-+        }else{
-+                for( int i = 1 ; i < length-1 && !found ; i++){/* delimiter */
-+                        if( *cursor == delimiter ){
-+                                *(cursor-1) = nullterminate; /* two strings */
-+                                found = true;
-+                                valuePairs( pline , cursor+1 );
-+                        }
-+                        cursor++;
-+                }
-+                cursor++;
-+                if( !found ) /* not a pair */
-+                        justValue( pline );
-+        }
-+        free (pline);
-+}
-+
-+/*
-+ * removes trailing and preceeding whitespaces from a string
-+ */
-+char*
-+AnyOption::chomp( char *str )
-+{
-+        while( *str == whitespace )
-+                str++;
-+        char *end = str+strlen(str)-1;
-+        while( *end == whitespace )
-+                end--;
-+        *(end+1) = nullterminate;
-+        return str;
-+}
-+
-+void
-+AnyOption::valuePairs( char *type, char *value )
-+{
-+	if ( strlen(chomp(type)) == 1  ){ /* this is a char option */
-+		for( int i = 0 ; i < optchar_counter ; i++ ){
-+			if(  optionchars[i] == type[0]  ){ /* match */
-+				if( optchartype[i] == COMMON_OPT ||
-+				    optchartype[i] == FILE_OPT )
-+				{
-+			 		setValue( type[0] , chomp(value) );
-+			 		return;
-+				}
-+			}
-+		}
-+	}	
-+	/* if no char options matched */
-+	for( int i = 0 ; i < option_counter ; i++ ){
-+		if( strcmp( options[i], type ) == 0 ){ /* match */
-+			if( optiontype[i] == COMMON_OPT ||
-+			    optiontype[i] == FILE_OPT )
-+			{
-+		 		setValue( type , chomp(value) );
-+		 		return;
-+			}
-+		}
-+	}
-+        printVerbose( "Unknown option in resourcefile : " );
-+	printVerbose( type );
-+	printVerbose( );
-+}
-+
-+void
-+AnyOption::justValue( char *type )
-+{
-+
-+	if ( strlen(chomp(type)) == 1  ){ /* this is a char option */
-+		for( int i = 0 ; i < optchar_counter ; i++ ){
-+			if(  optionchars[i] == type[0]  ){ /* match */
-+				if( optchartype[i] == COMMON_FLAG ||
-+				    optchartype[i] == FILE_FLAG )
-+				{
-+			 		setFlagOn( type[0] );
-+			 		return;
-+				}
-+			}
-+		}
-+	}	
-+	/* if no char options matched */
-+	for( int i = 0 ; i < option_counter ; i++ ){
-+		if( strcmp( options[i], type ) == 0 ){ /* match */
-+			if( optiontype[i] == COMMON_FLAG ||
-+			    optiontype[i] == FILE_FLAG )
-+			{
-+		 		setFlagOn( type );
-+		 		return;
-+			}
-+		}
-+	}
-+        printVerbose( "Unknown option in resourcefile : " );
-+	printVerbose( type  );
-+	printVerbose( );
-+}
-+
-+/*
-+ * usage and help 
-+ */
-+
-+
-+void
-+AnyOption::printAutoUsage()
-+{
-+	if( autousage ) printUsage();
-+}
-+
-+void
-+AnyOption::printUsage()
-+{
-+	
-+	if( once ) {
-+		once = false ;
-+		cout << endl ;
-+		for( int i = 0 ; i < usage_lines ; i++ )
-+			cout << usage[i] << endl ;	
-+		cout << endl ;
-+	}
-+}
-+	
-+	
-+void
-+AnyOption::addUsage( const char *line )
-+{
-+	if( usage_lines >= max_usage_lines ){
-+		if( doubleUsageStorage() == false ){
-+			addUsageError( line );
-+			exit(1);
-+		}
-+	}
-+	usage[ usage_lines ] = line ;	
-+	usage_lines++;
-+}
-+
-+void
-+AnyOption::addUsageError( const char *line )
-+{
-+	cout << endl ;
-+	cout << "OPTIONS ERROR : Failed allocating extra memory " << endl ;
-+	cout << "While adding the usage/help  : \""<< line << "\"" << endl;
-+	cout << "Exiting." << endl ;
-+	cout << endl ;
-+	exit(0);
-+
-+}
-+
diff --git a/debian/patches/features/fix-tangotest-string-image b/debian/patches/features/fix-tangotest-string-image
deleted file mode 100644
index 659d905..0000000
--- a/debian/patches/features/fix-tangotest-string-image
+++ /dev/null
@@ -1,39 +0,0 @@
-Description: fix the tango test device for string images
- This patch has been created by dpkg-source during the package build.
- Here's the last changelog entry, hopefully it gives details on why
- those changes were made:
- .
- tango (7.1.1~dfsg-1) unstable; urgency=low
- .
-   * Imported Upstream version 7.1.1~dfsg
-   * add the dversionmangle in the watch file
-   * update to debian-policy 3.8.3 (nothing to do)
-   * switch to the 3.0 (quilt) source format
-   * starter install the right device in the database during installation.
- .
- The person named in the Author field signed this changelog entry.
-Author: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: http://bugs.debian.org/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- tango-7.1.1~dfsg.orig/cppserver/tangotest/TangoTest.cpp
-+++ tango-7.1.1~dfsg/cppserver/tangotest/TangoTest.cpp
-@@ -1081,7 +1081,7 @@ void TangoTest::write_string_image(Tango
-   {
-     for (i = 0; i < dimXStringImage; i++)
-     {
--      str_index = i + j * dimYStringImage;
-+      str_index = i + j * dimXStringImage;
-       CORBA::string_free(attr_string_image_read[str_index]);
-       attr_string_image_read[str_index] = CORBA::string_dup(p[str_index]);
-     }
diff --git a/debian/patches/features/fix_libtango_compilation.diff b/debian/patches/features/fix_libtango_compilation.diff
deleted file mode 100644
index 0645d60..0000000
--- a/debian/patches/features/fix_libtango_compilation.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-From: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
-Subject: [PATCH] features/fix_libtango_compilation
-
-fix the libtango compilation
-
-Signed-off-by: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
-
----
- lib/cpp/server/Makefile.am |    1 +
- lib/cpp/server/Makefile.in |    1 +
- 2 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/lib/cpp/server/Makefile.am b/lib/cpp/server/Makefile.am
-index 976c993..23a097d 100644
---- a/lib/cpp/server/Makefile.am
-+++ b/lib/cpp/server/Makefile.am
-@@ -11,6 +11,7 @@ lib_LTLIBRARIES=libtango.la
- 
- # We need the libclient to link
- libtango_la_LIBADD = ../client/libclient.la	\
-+		     ../log4tango/src/liblog4tango.la \
- 						jpeg/libjpeg.la \
- 						jpeg/libjpeg_mmx.la
- 
-diff --git a/lib/cpp/server/Makefile.in b/lib/cpp/server/Makefile.in
-index 36999af..8def85c 100644
---- a/lib/cpp/server/Makefile.in
-+++ b/lib/cpp/server/Makefile.in
-@@ -290,6 +290,7 @@ lib_LTLIBRARIES = libtango.la
- 
- # We need the libclient to link
- libtango_la_LIBADD = ../client/libclient.la	\
-+		     ../log4tango/src/liblog4tango.la \
- 						jpeg/libjpeg.la \
- 						jpeg/libjpeg_mmx.la
- 
--- 
-tg: (01680bc..) features/fix_libtango_compilation (depends on: upstream)
diff --git a/debian/patches/features/tango-admin-pkg b/debian/patches/features/tango-admin-pkg
deleted file mode 100644
index fa2586e..0000000
--- a/debian/patches/features/tango-admin-pkg
+++ /dev/null
@@ -1,63 +0,0 @@
-Description: patch for the integration of tango_admin in the distribution
- This patch has been created by dpkg-source during the package build.
- Here's the last changelog entry, hopefully it gives details on why
- those changes were made:
- .
- tango (7.1.1~dfsg-1) unstable; urgency=low
- .
-   * Imported Upstream version 7.1.1~dfsg
-   * add the dversionmangle in the watch file
-   * update to debian-policy 3.8.3 (nothing to do)
-   * switch to the 3.0 (quilt) source format
-   * starter install the right device in the database during installation.
- .
- The person named in the Author field signed this changelog entry.
-Author: Picca Frédéric-Emmanuel <picca at synchrotron-soleil.fr>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: http://bugs.debian.org/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- tango-7.1.1~dfsg.orig/configure.in
-+++ tango-7.1.1~dfsg/configure.in
-@@ -413,6 +413,7 @@ AC_OUTPUT(Makefile
- 	  cppserver/tangoaccesscontrol/Makefile
- 	  utils/Makefile
- 	  utils/notifd2db/Makefile
-+	  utils/tango_admin/Makefile
- 	  scripts/Makefile
- 	  scripts/jive
- 	  scripts/logviewer
---- tango-7.1.1~dfsg.orig/utils/Makefile.am
-+++ tango-7.1.1~dfsg/utils/Makefile.am
-@@ -1,2 +1,2 @@
- 
--SUBDIRS = notifd2db 
-+SUBDIRS = notifd2db tango_admin
---- /dev/null
-+++ tango-7.1.1~dfsg/utils/tango_admin/Makefile.am
-@@ -0,0 +1,16 @@
-+INCLUDES = -I$(top_srcdir)/lib/cpp/client \
-+	   -I$(top_srcdir)/lib/cpp/server $(ORB_INCLUDE_PREFIX) \
-+           -I$(top_srcdir)/lib/cpp/log4tango/include \
-+           -I$(top_builddir)/lib/cpp/log4tango/include
-+
-+LDADD = -L$(top_builddir)/lib/cpp/server -ltango \
-+        -L$(top_builddir)/lib/cpp/log4tango/src -llog4tango
-+
-+bin_PROGRAMS=tango_admin
-+
-+tango_admin_SOURCES=\
-+	tango_admin.cpp \
-+	anyoption.cpp \
-+	anyoption.h
-+
-+
diff --git a/debian/patches/series b/debian/patches/series
index cc35b89..9d5676e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,8 +1,4 @@
 debian/fix_database_scripts.diff -p1
 debian/my.cnf.in.diff -p1
 debian/starter -p1
-debian/tango-admin -p1
 debian/notify_daemon -p1
-features/fix_libtango_compilation.diff -p1
-features/fix-tangotest-string-image -p1
-features/tango-admin-pkg -p1

-- 
TANGO distributed control system.



More information about the debian-science-commits mailing list