diff -r 000000000000 -r d0f3a028347a telepathygabble/src/write-mgr-file.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telepathygabble/src/write-mgr-file.c Tue Feb 02 01:10:06 2010 +0200 @@ -0,0 +1,104 @@ +/* + * write_mgr_file.c - utility to produce gabble.manager. Part of Gabble. + * Copyright (C) 2006 Collabora Ltd. + * + * + * This library 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 2.1 of the License, or (at your option) any later version. + * + * This library 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 this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include +#include + +#include "telepathy-constants.h" +#include "gabble-connection-manager.h" + +static gchar * +mgr_file_contents (const char *busname, + const char *objpath, + const GabbleProtocolSpec *protocols, + GError **error) +{ + GKeyFile *f = g_key_file_new(); + const GabbleProtocolSpec *protocol; + const GabbleParamSpec *row; + + g_key_file_set_string(f, "ConnectionManager", "BusName", busname); + g_key_file_set_string(f, "ConnectionManager", "ObjectPath", objpath); + + for (protocol = protocols; protocol->name; protocol++) + { + gchar *section_name = g_strdup_printf("Protocol %s", protocol->name); + + for (row = protocol->parameters; row->name; row++) + { + gchar *param_name = g_strdup_printf("param-%s", row->name); + gchar *param_value = g_strdup_printf("%s%s%s", row->dtype, + (row->flags & TP_CONN_MGR_PARAM_FLAG_REQUIRED ? " required" : ""), + (row->flags & TP_CONN_MGR_PARAM_FLAG_REGISTER ? " register" : "")); + g_key_file_set_string(f, section_name, param_name, param_value); + g_free(param_value); + g_free(param_name); + } + + for (row = protocol->parameters; row->name; row++) + { + if (row->flags & TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT) + { + gchar *default_name = g_strdup_printf("default-%s", row->name); + + switch (row->gtype) + { + case G_TYPE_STRING: + g_key_file_set_string(f, section_name, default_name, + row->def); + break; + case G_TYPE_INT: + case G_TYPE_UINT: + g_key_file_set_integer(f, section_name, default_name, + GPOINTER_TO_INT(row->def)); + break; + case G_TYPE_BOOLEAN: + g_key_file_set_boolean(f, section_name, default_name, + GPOINTER_TO_INT(row->def) ? 1 : 0); + } + g_free(default_name); + } + } + g_free(section_name); + } + return g_key_file_to_data(f, NULL, error); +} + +int +main (void) +{ + GError *error = NULL; + + gchar *s = mgr_file_contents(GABBLE_CONN_MGR_BUS_NAME, + GABBLE_CONN_MGR_OBJECT_PATH, + gabble_protocols, &error); + if (!s) + { + fprintf(stderr, error->message); + g_error_free(error); + return 1; + } + g_message("%s", s); + getchar(); //vinod + g_free(s); + return 0; +}