LCOV - code coverage report
Current view: top level - tools - main.c (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 720 0.0 %
Date: 2025-04-24 23:39:19 Functions: 0 21 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* vi: set et sw=4 ts=4 cino=t0,(0: */
       2                 :            : /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       3                 :            : /*
       4                 :            :  * This file is part of libaccounts-glib
       5                 :            :  *
       6                 :            :  * Copyright (C) 2009-2010 Nokia Corporation.
       7                 :            :  * Copyright (C) 2012 Canonical Ltd.
       8                 :            :  *
       9                 :            :  * Contact: Alberto Mardegan <alberto.mardegan@canonical.com>
      10                 :            :  *
      11                 :            :  * This library is free software; you can redistribute it and/or
      12                 :            :  * modify it under the terms of the GNU Lesser General Public License
      13                 :            :  * version 2.1 as published by the Free Software Foundation.
      14                 :            :  *
      15                 :            :  * This library is distributed in the hope that it will be useful, but
      16                 :            :  * WITHOUT ANY WARRANTY; without even the implied warranty of
      17                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
      18                 :            :  * Lesser General Public License for more details.
      19                 :            :  *
      20                 :            :  * You should have received a copy of the GNU Lesser General Public
      21                 :            :  * License along with this library; if not, write to the Free Software
      22                 :            :  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
      23                 :            :  * 02110-1301 USA
      24                 :            :  */
      25                 :            : 
      26                 :            : #define AG_DISABLE_DEPRECATION_WARNINGS
      27                 :            : 
      28                 :            : #include <libaccounts-glib.h>
      29                 :            : #include <stdio.h>
      30                 :            : #include <stdlib.h>
      31                 :            : #include <string.h>
      32                 :            : 
      33                 :            : static gchar *gl_app_name = NULL;
      34                 :            : 
      35                 :            : enum
      36                 :            : {
      37                 :            :     ERROR_GENERIC,
      38                 :            :     INVALID_ACC_ID,
      39                 :            :     INVALID_SERVICE_NAME,
      40                 :            :     INVALID_INPUT
      41                 :            : };
      42                 :            : 
      43                 :            : static void
      44                 :          0 : show_error (gint err)
      45                 :            : {
      46                 :            : 
      47                 :          0 :     switch (err)
      48                 :            :     {
      49                 :            :     case ERROR_GENERIC:
      50                 :          0 :         printf ("\nUnable to process the request\n\n");
      51                 :          0 :         break;
      52                 :            :     case INVALID_ACC_ID:
      53                 :          0 :         printf ("\nAccount does not exist. Check account ID entered\n\n");
      54                 :          0 :         break;
      55                 :            :     case INVALID_SERVICE_NAME:
      56                 :          0 :         printf ("\nService does not exist. Enter valid service name\n\n");
      57                 :          0 :         break;
      58                 :            :     case INVALID_INPUT:
      59                 :          0 :         printf ("\nRequest is not processed. Check the command parameters\n\n");
      60                 :          0 :         break;
      61                 :            :     default:
      62                 :          0 :         printf ("\nUnknown problem in processing the request\n\n");
      63                 :          0 :         break;
      64                 :            :     }
      65                 :          0 : }
      66                 :            : 
      67                 :            : static void
      68                 :          0 : show_help ()
      69                 :            : {
      70                 :            : 
      71                 :          0 :     printf ("\nOptions:\n"
      72                 :            :             "   * Creates an account\n"
      73                 :            :             "   %1$s create-account <provider name> [<display name>] [<enable|disable>] \n\n"
      74                 :            :             "   * Updates/Adds key to account and sets a value to key\n"
      75                 :            :             "   %1$s update-account <account id> (int|uint|bool|string):<key>=<value> \n\n"
      76                 :            :             "   * Updates/Adds key to service of an account and sets a value to the key\n"
      77                 :            :             "   %1$s update-service <account id> <service name>\n"
      78                 :            :             "                       (int|uint|bool|string):<key>=<value> \n\n"
      79                 :            :             "   * Enables an account\n"
      80                 :            :             "   %1$s enable-account <account id>\n\n"
      81                 :            :             "   * Enables service of the account\n"
      82                 :            :             "   %1$s enable-service <account id> <service name>\n\n"
      83                 :            :             "   * Disables an account\n"
      84                 :            :             "   %1$s disable-account <account id>\n\n"
      85                 :            :             "   * Disables service of an account\n"
      86                 :            :             "   %1$s disable-service <account id> <service name>\n\n"
      87                 :            :             "   * Gets the value of a key of an account\n"
      88                 :            :             "   %1$s get-account <account id> <(int|uint|bool|string):key>\n\n"
      89                 :            :             "   * Gets the value of a key of a service\n"
      90                 :            :             "   %1$s get-service <account id> <service name>\n\t\t       <(int|uint|bool|string):<key>=<value>\n\n"
      91                 :            :             "   * Deletes all accounts is <all> keyword is used or deletes specified account\n"
      92                 :            :             "   %1$s delete-account <account id>/<all>\n\n"
      93                 :            :             "   * Lists all providers\n"
      94                 :            :             "   %1$s list-providers\n\n"
      95                 :            :             "   * Lists all services or services that can be associated with an account\n"
      96                 :            :             "   %1$s list-services [<account id>]\n\n"
      97                 :            :             "   * Lists all accounts\n"
      98                 :            :             "   %1$s list-accounts\n\n"
      99                 :            :             "   * List all enabled accounts\n"
     100                 :            :             "     If account ID is specified lists services enabled on the given account\n"
     101                 :            :             "   %1$s list-enabled [<account id>]\n\n"
     102                 :            :             "   * Lists settings associated with account\n"
     103                 :            :             "   %1$s list-settings <account id>\n", gl_app_name);
     104                 :            : 
     105                 :          0 :     printf ("\nParameters in square braces '[param]' are optional\n");
     106                 :          0 : }
     107                 :            : 
     108                 :            : static void
     109                 :          0 : show_help_text (gchar *command)
     110                 :            : {
     111                 :            :     /* TODO: Show individal command help text if needed */
     112                 :          0 :     show_help ();
     113                 :          0 : }
     114                 :            : 
     115                 :            : 
     116                 :            : static gchar *
     117                 :          0 : get_string_value (const GValue *value)
     118                 :            : {
     119                 :          0 :     gchar *str = NULL;
     120                 :            : 
     121                 :          0 :     if (G_VALUE_HOLDS_STRING (value))
     122                 :            :     {
     123                 :          0 :         str = g_value_dup_string (value);
     124                 :            :     }
     125                 :          0 :     else if (G_VALUE_HOLDS_UINT (value))
     126                 :            :     {
     127                 :          0 :         str = g_strdup_printf ("%u", g_value_get_uint (value));
     128                 :            :     }
     129                 :          0 :     else if (G_VALUE_HOLDS_INT (value))
     130                 :            :     {
     131                 :          0 :         str = g_strdup_printf ("%i", g_value_get_int (value));
     132                 :            :     }
     133                 :          0 :     else if (G_VALUE_HOLDS_BOOLEAN (value))
     134                 :            :     {
     135                 :          0 :         str = g_strdup (g_value_get_boolean (value) ? "true" : "false");
     136                 :            :     }
     137                 :            :     else
     138                 :            :     {
     139                 :          0 :         str = g_strdup_value_contents (value);
     140                 :            :     }
     141                 :          0 :     return str;
     142                 :            : }
     143                 :            : 
     144                 :            : static void
     145                 :          0 : get_account (gchar **argv)
     146                 :            : {
     147                 :          0 :     AgManager *manager = NULL;
     148                 :          0 :     AgAccount *account = NULL;
     149                 :          0 :     GValue value = G_VALUE_INIT;
     150                 :          0 :     GType type = 0;
     151                 :          0 :     gchar *str = NULL;
     152                 :          0 :     gchar **param = NULL;
     153                 :            : 
     154                 :          0 :     if (argv[2] == NULL || argv[3] == NULL)
     155                 :            :     {
     156                 :          0 :         show_error (INVALID_INPUT);
     157                 :          0 :         show_help_text (argv[1]);
     158                 :          0 :         return;
     159                 :            :     }
     160                 :            : 
     161                 :            :     /* param[0] = type, param[1] = key. Both separated by ':' */
     162                 :          0 :     param = g_strsplit (argv[3], ":", 2);
     163                 :          0 :     if (param[0] == NULL || param[1] == NULL)
     164                 :            :     {
     165                 :          0 :         show_error (INVALID_INPUT);
     166                 :          0 :         show_help_text (argv[1]);
     167                 :          0 :         g_strfreev (param);
     168                 :          0 :         return;
     169                 :            :     }
     170                 :            : 
     171                 :          0 :     if (strcmp (param[0], "int") == 0)
     172                 :            :     {
     173                 :          0 :         g_value_init (&value, G_TYPE_INT);
     174                 :          0 :         type = G_TYPE_INT;
     175                 :            :     }
     176                 :          0 :     else if (strcmp (param[0], "uint") == 0)
     177                 :            :     {
     178                 :          0 :         g_value_init (&value, G_TYPE_UINT);
     179                 :          0 :         type = G_TYPE_UINT;
     180                 :            :     }
     181                 :          0 :     else if (strcmp (param[0], "bool") == 0 ||
     182                 :          0 :              strcmp (param[0], "boolean") == 0)
     183                 :            :     {
     184                 :          0 :         g_value_init (&value, G_TYPE_BOOLEAN);
     185                 :          0 :         type = G_TYPE_BOOLEAN;
     186                 :            :     }
     187                 :          0 :     else if (strcmp (param[0], "string") == 0)
     188                 :            :     {
     189                 :          0 :         g_value_init (&value, G_TYPE_STRING);
     190                 :          0 :         type = G_TYPE_STRING;
     191                 :            :     }
     192                 :            :     else
     193                 :            :     {
     194                 :          0 :         show_error (INVALID_INPUT);
     195                 :          0 :         show_help_text (argv[1]);
     196                 :          0 :         g_strfreev (param);
     197                 :          0 :         return;
     198                 :            :     }
     199                 :            : 
     200                 :          0 :     manager = ag_manager_new ();
     201                 :          0 :     if (manager == NULL)
     202                 :            :     {
     203                 :          0 :         show_error (ERROR_GENERIC);
     204                 :          0 :         g_strfreev (param);
     205                 :          0 :         return;
     206                 :            :     }
     207                 :            : 
     208                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
     209                 :          0 :     if (account == NULL)
     210                 :            :     {
     211                 :          0 :         show_error (INVALID_ACC_ID);
     212                 :          0 :         g_strfreev (param);
     213                 :          0 :         g_object_unref (manager);
     214                 :          0 :         return;
     215                 :            :     }
     216                 :            : 
     217                 :          0 :     if (ag_account_get_value (account, param[1],
     218                 :            :                               &value) == AG_SETTING_SOURCE_NONE)
     219                 :            :     {
     220                 :          0 :         show_error (INVALID_INPUT);
     221                 :          0 :         show_help_text (argv[1]);
     222                 :          0 :         g_strfreev (param);
     223                 :          0 :         g_object_unref (account);
     224                 :          0 :         g_object_unref (manager);
     225                 :          0 :         return;
     226                 :            :     }
     227                 :            : 
     228                 :          0 :     switch (type)
     229                 :            :     {
     230                 :            :     case G_TYPE_INT:
     231                 :          0 :         str = g_strdup_printf ("%i", g_value_get_int (&value));
     232                 :          0 :         break;
     233                 :            :     case G_TYPE_UINT:
     234                 :          0 :         str = g_strdup_printf ("%u", g_value_get_uint (&value));
     235                 :          0 :         break;
     236                 :            :     case G_TYPE_BOOLEAN:
     237                 :          0 :         str = g_strdup_printf ("%i", g_value_get_boolean (&value));
     238                 :          0 :         break;
     239                 :            :     case G_TYPE_STRING:
     240                 :          0 :         str = g_value_dup_string (&value);
     241                 :          0 :         break;
     242                 :            :     default:
     243                 :          0 :         break;
     244                 :            :     }
     245                 :            : 
     246                 :          0 :     if (G_IS_VALUE (&value))
     247                 :          0 :         g_value_unset (&value);
     248                 :          0 :     g_object_unref (account);
     249                 :          0 :     g_object_unref (manager);
     250                 :            : 
     251                 :          0 :     printf ("%s = %s\n", param[1], str);
     252                 :            : 
     253                 :          0 :     g_strfreev (param);
     254                 :          0 :     g_free(str);
     255                 :            : }
     256                 :            : 
     257                 :            : static void
     258                 :          0 : list_service_settings (AgAccount *account)
     259                 :            : {
     260                 :          0 :     GList *list = NULL;
     261                 :          0 :     GList *tmp = NULL;
     262                 :            :     AgAccountSettingIter iter;
     263                 :          0 :     const gchar *key = NULL;
     264                 :          0 :     const GValue *val = NULL;
     265                 :          0 :     gchar *str = NULL;
     266                 :            : 
     267                 :          0 :     list = ag_account_list_services (account);
     268                 :          0 :     if (list == NULL || g_list_length (list) == 0)
     269                 :            :     {
     270                 :          0 :         return;
     271                 :            :     }
     272                 :            : 
     273                 :          0 :     for (tmp = list; tmp != NULL; tmp = g_list_next (tmp))
     274                 :            :     {
     275                 :          0 :         printf ("\t\t%s\n", ag_service_get_name (tmp->data));
     276                 :          0 :         ag_account_select_service (account, (AgService *) tmp->data);
     277                 :            : 
     278                 :          0 :         ag_account_settings_iter_init (account, &iter, NULL);
     279                 :          0 :         while (ag_account_settings_iter_next (&iter, &key, &val))
     280                 :            :         {
     281                 :          0 :             str = get_string_value (val);
     282                 :          0 :             printf ("%s = %s\n", key, str);
     283                 :          0 :             g_free (str);
     284                 :          0 :             str = NULL;
     285                 :            :         }
     286                 :            :     }
     287                 :            : 
     288                 :          0 :     ag_service_list_free (list);
     289                 :            : }
     290                 :            : 
     291                 :            : static void
     292                 :          0 : list_settings (gchar **argv)
     293                 :            : {
     294                 :          0 :     AgManager *manager = NULL;
     295                 :          0 :     AgAccount *account = NULL;
     296                 :            :     AgAccountSettingIter iter;
     297                 :          0 :     const gchar *key = NULL;
     298                 :          0 :     const GValue *val = NULL;
     299                 :          0 :     gchar *str = NULL;
     300                 :            : 
     301                 :          0 :     if (argv[2] == NULL)
     302                 :            :     {
     303                 :          0 :         show_error (INVALID_INPUT);
     304                 :          0 :         show_help_text (argv[1]);
     305                 :          0 :         return;
     306                 :            :     }
     307                 :            : 
     308                 :          0 :     manager = ag_manager_new ();
     309                 :          0 :     if (manager == NULL)
     310                 :            :     {
     311                 :          0 :         show_error (ERROR_GENERIC);
     312                 :          0 :         return;
     313                 :            :     }
     314                 :            : 
     315                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
     316                 :          0 :     if (account == NULL)
     317                 :            :     {
     318                 :          0 :         show_error (INVALID_ACC_ID);
     319                 :          0 :         g_object_unref (manager);
     320                 :          0 :         return;
     321                 :            :     }
     322                 :            : 
     323                 :          0 :     ag_account_settings_iter_init (account, &iter, NULL);
     324                 :          0 :     while (ag_account_settings_iter_next (&iter, &key, &val))
     325                 :            :     {
     326                 :          0 :         str = get_string_value (val);
     327                 :          0 :         printf ("%s = %s\n", key, str);
     328                 :          0 :         g_free (str);
     329                 :          0 :         str = NULL;
     330                 :            :     }
     331                 :            : 
     332                 :          0 :     list_service_settings (account);
     333                 :            : 
     334                 :          0 :     g_object_unref (account);
     335                 :          0 :     g_object_unref (manager);
     336                 :            : }
     337                 :            : 
     338                 :            : static void
     339                 :          0 : get_service (gchar **argv)
     340                 :            : {
     341                 :          0 :     AgManager *manager = NULL;
     342                 :          0 :     AgService *service = NULL;
     343                 :          0 :     AgAccount *account = NULL;
     344                 :          0 :     GValue value = G_VALUE_INIT;
     345                 :          0 :     GType type = 0;
     346                 :          0 :     gchar *str = NULL;
     347                 :          0 :     gchar **param = NULL;
     348                 :            : 
     349                 :          0 :     if (argv[2] == NULL || argv[3] == NULL || argv[4] == NULL)
     350                 :            :     {
     351                 :          0 :         show_error (INVALID_INPUT);
     352                 :          0 :         show_help_text (argv[1]);
     353                 :          0 :         return;
     354                 :            :     }
     355                 :            : 
     356                 :            :     /* argv[4] = type:key */
     357                 :          0 :     param = g_strsplit (argv[4], ":", 2);
     358                 :          0 :     if (param[0] == NULL || param[1] == NULL)
     359                 :            :     {
     360                 :          0 :         show_error (INVALID_INPUT);
     361                 :          0 :         show_help_text (argv[1]);
     362                 :          0 :         g_strfreev (param);
     363                 :          0 :         return;
     364                 :            :     }
     365                 :            : 
     366                 :          0 :     if (strcmp (param[0], "int") == 0)
     367                 :            :     {
     368                 :          0 :         g_value_init (&value, G_TYPE_INT);
     369                 :          0 :         type = G_TYPE_INT;
     370                 :            :     }
     371                 :          0 :     else if (strcmp (param[0], "uint") == 0)
     372                 :            :     {
     373                 :          0 :         g_value_init (&value, G_TYPE_UINT);
     374                 :          0 :         type = G_TYPE_UINT;
     375                 :            :     }
     376                 :          0 :     else if (strcmp (param[0], "bool") == 0 ||
     377                 :          0 :              strcmp (param[0], "boolean") == 0)
     378                 :            :     {
     379                 :          0 :         g_value_init (&value, G_TYPE_BOOLEAN);
     380                 :          0 :         type = G_TYPE_BOOLEAN;
     381                 :            :     }
     382                 :          0 :     else if (strcmp (param[0], "string") == 0)
     383                 :            :     {
     384                 :          0 :         g_value_init (&value, G_TYPE_STRING);
     385                 :          0 :         type = G_TYPE_STRING;
     386                 :            :     }
     387                 :            :     else
     388                 :            :     {
     389                 :          0 :         show_error (INVALID_INPUT);
     390                 :          0 :         show_help_text (argv[1]);
     391                 :          0 :         g_strfreev (param);
     392                 :          0 :         return;
     393                 :            :     }
     394                 :            : 
     395                 :          0 :     manager = ag_manager_new ();
     396                 :          0 :     if (manager == NULL)
     397                 :            :     {
     398                 :          0 :         show_error (ERROR_GENERIC);
     399                 :          0 :         g_strfreev (param);
     400                 :          0 :         return;
     401                 :            :     }
     402                 :            : 
     403                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
     404                 :          0 :     if (account == NULL)
     405                 :            :     {
     406                 :          0 :         show_error (INVALID_ACC_ID);
     407                 :          0 :         g_strfreev (param);
     408                 :          0 :         g_object_unref (manager);
     409                 :          0 :         return;
     410                 :            :     }
     411                 :            : 
     412                 :          0 :     service = ag_manager_get_service (manager, argv[3]);
     413                 :          0 :     if (service == NULL)
     414                 :            :     {
     415                 :          0 :         show_error (INVALID_SERVICE_NAME);
     416                 :          0 :         g_strfreev (param);
     417                 :          0 :         g_object_unref (account);
     418                 :          0 :         g_object_unref (manager);
     419                 :          0 :         return;
     420                 :            :     }
     421                 :            : 
     422                 :          0 :     ag_account_select_service (account, service);
     423                 :          0 :     if (ag_account_get_value (account, param[1],
     424                 :            :                               &value) == AG_SETTING_SOURCE_NONE)
     425                 :            :     {
     426                 :          0 :         show_error (INVALID_INPUT);
     427                 :          0 :         show_help_text (argv[1]);
     428                 :          0 :         g_strfreev (param);
     429                 :          0 :         ag_service_unref (service);
     430                 :          0 :         g_object_unref (account);
     431                 :          0 :         g_object_unref (manager);
     432                 :          0 :         return;
     433                 :            :     }
     434                 :            : 
     435                 :          0 :     switch (type)
     436                 :            :     {
     437                 :            :     case G_TYPE_INT:
     438                 :          0 :         str = g_strdup_printf ("%i", g_value_get_int (&value));
     439                 :          0 :         break;
     440                 :            :     case G_TYPE_UINT:
     441                 :          0 :         str = g_strdup_printf ("%u", g_value_get_uint (&value));
     442                 :          0 :         break;
     443                 :            :     case G_TYPE_BOOLEAN:
     444                 :          0 :         str = g_strdup_printf ("%i", g_value_get_boolean (&value));
     445                 :          0 :         break;
     446                 :            :     case G_TYPE_STRING:
     447                 :          0 :         str = g_value_dup_string (&value);
     448                 :          0 :         break;
     449                 :            :     default:
     450                 :          0 :         break;
     451                 :            :     }
     452                 :            : 
     453                 :          0 :     if (G_IS_VALUE (&value))
     454                 :          0 :         g_value_unset (&value);
     455                 :          0 :     ag_service_unref (service);
     456                 :          0 :     g_object_unref (account);
     457                 :          0 :     g_object_unref (manager);
     458                 :            : 
     459                 :          0 :     printf ("%s = %s\n", param[1], str);
     460                 :            : 
     461                 :          0 :     g_strfreev (param);
     462                 :          0 :     g_free (str);
     463                 :            : }
     464                 :            : 
     465                 :            : static void
     466                 :          0 : update_service (gchar **argv)
     467                 :            : {
     468                 :          0 :     AgManager *manager = NULL;
     469                 :          0 :     AgAccount *account = NULL;
     470                 :          0 :     GValue *gvalue = NULL;
     471                 :          0 :     gchar **param = NULL;
     472                 :          0 :     gchar **keytype = NULL;
     473                 :          0 :     AgService *service = NULL;
     474                 :          0 :     GError *error = NULL;
     475                 :            : 
     476                 :          0 :     if (argv[2] == NULL || argv[3] == NULL || argv[4] == NULL)
     477                 :            :     {
     478                 :          0 :         show_error (INVALID_INPUT);
     479                 :          0 :         show_help_text (argv[1]);
     480                 :          0 :         return;
     481                 :            :     }
     482                 :            : 
     483                 :          0 :     param = g_strsplit (argv[4], "=", 2);
     484                 :          0 :     if (param[0] == NULL || param[1] == NULL)
     485                 :            :     {
     486                 :          0 :         show_error (INVALID_INPUT);
     487                 :          0 :         show_help_text (argv[1]);
     488                 :          0 :         g_strfreev (param);
     489                 :          0 :         return;
     490                 :            :     }
     491                 :            : 
     492                 :          0 :     keytype = g_strsplit (param[0], ":", 2);
     493                 :          0 :     if (keytype[0] == NULL || keytype[1] == NULL)
     494                 :            :     {
     495                 :          0 :         show_error (INVALID_INPUT);
     496                 :          0 :         show_help_text (argv[1]);
     497                 :          0 :         g_strfreev (param);
     498                 :          0 :         g_strfreev (keytype);
     499                 :          0 :         return;
     500                 :            :     }
     501                 :            : 
     502                 :          0 :     gvalue = g_new0 (GValue, 1);
     503                 :          0 :     if (strcmp (keytype[0], "int") == 0)
     504                 :            :     {
     505                 :          0 :         g_value_init (gvalue, G_TYPE_INT);
     506                 :          0 :         g_value_set_int (gvalue, strtol (param[1], NULL, 10));
     507                 :            :     }
     508                 :          0 :     else if (strcmp (keytype[0], "uint") == 0)
     509                 :            :     {
     510                 :          0 :         g_value_init (gvalue, G_TYPE_UINT);
     511                 :          0 :         g_value_set_uint (gvalue, strtoul (param[1], NULL, 10));
     512                 :            :     }
     513                 :          0 :     else if (strcmp (keytype[0], "bool") == 0 || strcmp (keytype[0],
     514                 :            :                                                          "boolean") == 0)
     515                 :            :     {
     516                 :          0 :         g_value_init (gvalue, G_TYPE_BOOLEAN);
     517                 :          0 :         g_value_set_boolean (gvalue, atoi (param[1]));
     518                 :            :     }
     519                 :          0 :     else if (strcmp (keytype[0], "string") == 0)
     520                 :            :     {
     521                 :          0 :         g_value_init (gvalue, G_TYPE_STRING);
     522                 :          0 :         g_value_set_string (gvalue, param[1]);
     523                 :            :     }
     524                 :            :     else
     525                 :            :     {
     526                 :          0 :         show_error (INVALID_INPUT);
     527                 :          0 :         show_help_text (argv[1]);
     528                 :          0 :         g_strfreev (param);
     529                 :          0 :         g_strfreev (keytype);
     530                 :          0 :         g_value_unset (gvalue);
     531                 :          0 :         g_free (gvalue);
     532                 :          0 :         return;
     533                 :            :     }
     534                 :            : 
     535                 :          0 :     manager = ag_manager_new ();
     536                 :          0 :     if (manager == NULL)
     537                 :            :     {
     538                 :          0 :         show_error (ERROR_GENERIC);
     539                 :          0 :         g_strfreev (param);
     540                 :          0 :         g_strfreev (keytype);
     541                 :          0 :         g_value_unset (gvalue);
     542                 :          0 :         g_free (gvalue);
     543                 :          0 :         return;
     544                 :            :     }
     545                 :            : 
     546                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
     547                 :          0 :     if (account == NULL)
     548                 :            :     {
     549                 :          0 :         show_error (INVALID_ACC_ID);
     550                 :          0 :         g_strfreev (param);
     551                 :          0 :         g_strfreev (keytype);
     552                 :          0 :         g_object_unref (manager);
     553                 :          0 :         g_value_unset (gvalue);
     554                 :          0 :         g_free (gvalue);
     555                 :          0 :         return;
     556                 :            :     }
     557                 :            : 
     558                 :          0 :     service = ag_manager_get_service (manager, argv[3]);
     559                 :          0 :     if (service == NULL)
     560                 :            :     {
     561                 :          0 :         show_error (INVALID_SERVICE_NAME);
     562                 :          0 :         g_strfreev (param);
     563                 :          0 :         g_strfreev (keytype);
     564                 :          0 :         g_object_unref (account);
     565                 :          0 :         g_object_unref (manager);
     566                 :          0 :         g_value_unset (gvalue);
     567                 :          0 :         g_free (gvalue);
     568                 :          0 :         return;
     569                 :            :     }
     570                 :            : 
     571                 :          0 :     ag_account_select_service (account, service);
     572                 :          0 :     ag_account_set_value (account, keytype[1], gvalue);
     573                 :          0 :     ag_account_store_blocking (account, &error);
     574                 :          0 :     if (error)
     575                 :            :     {
     576                 :          0 :         show_error (ERROR_GENERIC);
     577                 :          0 :         g_error_free (error);
     578                 :            :     }
     579                 :            : 
     580                 :          0 :     g_strfreev (param);
     581                 :          0 :     g_strfreev (keytype);
     582                 :          0 :     g_value_unset (gvalue);
     583                 :          0 :     g_free (gvalue);
     584                 :          0 :     ag_service_unref (service);
     585                 :          0 :     g_object_unref (account);
     586                 :          0 :     g_object_unref (manager);
     587                 :            : 
     588                 :          0 :     return;
     589                 :            : }
     590                 :            : 
     591                 :            : static void
     592                 :          0 : update_account (gchar **argv)
     593                 :            : {
     594                 :          0 :     AgManager *manager = NULL;
     595                 :          0 :     AgAccount *account = NULL;
     596                 :          0 :     GValue *gvalue = NULL;
     597                 :          0 :     gchar **param = NULL;
     598                 :          0 :     gchar **keytype = NULL;
     599                 :          0 :     GError *error = NULL;
     600                 :            : 
     601                 :            :     /* Input parameter will be argv[2] = <account Id>
     602                 :            :      * argv[3] = <keytype:key=value>
     603                 :            :      */
     604                 :          0 :     if ((argv[2] == NULL) || (argv[3] == NULL))
     605                 :            :     {
     606                 :          0 :         show_error (INVALID_INPUT);
     607                 :          0 :         show_help_text (argv[1]);
     608                 :          0 :         return;
     609                 :            :     }
     610                 :            : 
     611                 :            :     /* param[0] = <keytype:key>, param[1] = value */
     612                 :          0 :     param = g_strsplit (argv[3], "=", 2);
     613                 :          0 :     if (param[0] == NULL || param[1] == NULL)
     614                 :            :     {
     615                 :          0 :         show_error (INVALID_INPUT);
     616                 :          0 :         show_help_text (argv[1]);
     617                 :          0 :         g_strfreev (param);
     618                 :          0 :         return;
     619                 :            :     }
     620                 :            : 
     621                 :            :     /* keytype[0] = type, keytype[1] = key */
     622                 :          0 :     keytype = g_strsplit (param[0], ":", 2);
     623                 :          0 :     if (keytype[0] == NULL || keytype[1] == NULL)
     624                 :            :     {
     625                 :          0 :         show_error (INVALID_INPUT);
     626                 :          0 :         show_help_text (argv[1]);
     627                 :          0 :         g_strfreev (param);
     628                 :          0 :         g_strfreev (keytype);
     629                 :          0 :         return;
     630                 :            :     }
     631                 :            : 
     632                 :          0 :     gvalue = g_new0 (GValue, 1);
     633                 :          0 :     if (strcmp (keytype[0], "int") == 0)
     634                 :            :     {
     635                 :          0 :         g_value_init (gvalue, G_TYPE_INT);
     636                 :          0 :         g_value_set_int (gvalue, strtol (param[1], NULL, 10));
     637                 :            :     }
     638                 :          0 :     else if (strcmp (keytype[0], "uint") == 0)
     639                 :            :     {
     640                 :          0 :         g_value_init (gvalue, G_TYPE_UINT);
     641                 :          0 :         g_value_set_uint (gvalue, strtoul (param[1], NULL, 10));
     642                 :            :     }
     643                 :          0 :     else if (strcmp (keytype[0], "bool") == 0 || strcmp (keytype[0],
     644                 :            :                                                          "boolean") == 0)
     645                 :            :     {
     646                 :          0 :         g_value_init (gvalue, G_TYPE_BOOLEAN);
     647                 :          0 :         g_value_set_boolean (gvalue, atoi (param[1]));
     648                 :            :     }
     649                 :          0 :     else if (strcmp (keytype[0], "string") == 0)
     650                 :            :     {
     651                 :          0 :         g_value_init (gvalue, G_TYPE_STRING);
     652                 :          0 :         g_value_set_string (gvalue, param[1]);
     653                 :            :     }
     654                 :            :     else
     655                 :            :     {
     656                 :          0 :         show_error (INVALID_INPUT);
     657                 :          0 :         show_help_text (argv[1]);
     658                 :          0 :         g_strfreev (param);
     659                 :          0 :         g_strfreev (keytype);
     660                 :          0 :         g_free (gvalue);
     661                 :          0 :         return;
     662                 :            :     }
     663                 :            : 
     664                 :          0 :     manager = ag_manager_new ();
     665                 :          0 :     if (manager == NULL)
     666                 :            :     {
     667                 :          0 :         show_error (ERROR_GENERIC);
     668                 :          0 :         g_strfreev (param);
     669                 :          0 :         g_strfreev (keytype);
     670                 :          0 :         g_free (gvalue);
     671                 :          0 :         return;
     672                 :            :     }
     673                 :            : 
     674                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
     675                 :          0 :     if (account == NULL)
     676                 :            :     {
     677                 :          0 :         show_error (INVALID_ACC_ID);
     678                 :          0 :         g_strfreev (param);
     679                 :          0 :         g_strfreev (keytype);
     680                 :          0 :         g_value_unset (gvalue);
     681                 :          0 :         g_free (gvalue);
     682                 :          0 :         g_object_unref (manager);
     683                 :          0 :         return;
     684                 :            :     }
     685                 :            : 
     686                 :          0 :     ag_account_set_value (account, keytype[1], gvalue);
     687                 :            : 
     688                 :          0 :     ag_account_store_blocking (account, &error);
     689                 :          0 :     if (error)
     690                 :            :     {
     691                 :          0 :         show_error (ERROR_GENERIC);
     692                 :          0 :         g_error_free (error);
     693                 :            :     }
     694                 :            : 
     695                 :          0 :     g_strfreev (param);
     696                 :          0 :     g_strfreev (keytype);
     697                 :          0 :     g_value_unset (gvalue);
     698                 :          0 :     g_free (gvalue);
     699                 :          0 :     g_object_unref (account);
     700                 :          0 :     g_object_unref (manager);
     701                 :            : }
     702                 :            : 
     703                 :            : static void
     704                 :          0 : create_account (gchar **argv)
     705                 :            : {
     706                 :          0 :     AgManager *manager = NULL;
     707                 :          0 :     AgAccount *account = NULL;
     708                 :          0 :     GError *error = NULL;
     709                 :            : 
     710                 :          0 :     if (argv[2] == NULL)
     711                 :            :     {
     712                 :          0 :         show_error (INVALID_INPUT);
     713                 :          0 :         show_help_text (argv[1]);
     714                 :          0 :         return;
     715                 :            :     }
     716                 :            : 
     717                 :          0 :     manager = ag_manager_new ();
     718                 :          0 :     if (manager == NULL)
     719                 :            :     {
     720                 :          0 :         show_error (ERROR_GENERIC);
     721                 :          0 :         return;
     722                 :            :     }
     723                 :            : 
     724                 :          0 :     account = ag_manager_create_account (manager, argv[2]);
     725                 :          0 :     if (account == NULL)
     726                 :            :     {
     727                 :          0 :         show_error (ERROR_GENERIC);
     728                 :          0 :         g_object_unref (manager);
     729                 :          0 :         return;
     730                 :            :     }
     731                 :            : 
     732                 :          0 :     if (argv[3] != NULL)
     733                 :          0 :         ag_account_set_display_name (account, argv[3]);
     734                 :            : 
     735                 :          0 :     if (argv[4] != NULL)
     736                 :            :     {
     737                 :          0 :         if (strcmp (argv[4], "enable") == 0)
     738                 :          0 :             ag_account_set_enabled (account, TRUE);
     739                 :          0 :         if (strcmp (argv[4], "disable") == 0)
     740                 :          0 :             ag_account_set_enabled (account, FALSE);
     741                 :            :     }
     742                 :            : 
     743                 :          0 :     ag_account_store_blocking (account, &error);
     744                 :          0 :     if (error)
     745                 :            :     {
     746                 :          0 :         show_error (ERROR_GENERIC);
     747                 :          0 :         g_error_free (error);
     748                 :            :     }
     749                 :            : 
     750                 :          0 :     g_object_unref (account);
     751                 :          0 :     g_object_unref (manager);
     752                 :            : }
     753                 :            : 
     754                 :            : static void
     755                 :          0 : enable_disable_service (gchar **argv, gboolean enable)
     756                 :            : {
     757                 :            : 
     758                 :          0 :     AgManager *manager = NULL;
     759                 :          0 :     AgService *service = NULL;
     760                 :          0 :     AgAccount *account = NULL;
     761                 :          0 :     GError *error = NULL;
     762                 :            : 
     763                 :          0 :     if ((argv[2] == NULL) || (argv[3] == NULL))
     764                 :            :     {
     765                 :          0 :         show_error (INVALID_INPUT);
     766                 :          0 :         show_help_text (argv[1]);
     767                 :          0 :         return;
     768                 :            :     }
     769                 :            : 
     770                 :          0 :     manager = ag_manager_new ();
     771                 :          0 :     if (manager == NULL)
     772                 :            :     {
     773                 :          0 :         show_error (ERROR_GENERIC);
     774                 :          0 :         return;
     775                 :            :     }
     776                 :            : 
     777                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
     778                 :          0 :     if (account == NULL)
     779                 :            :     {
     780                 :          0 :         show_error (INVALID_ACC_ID);
     781                 :          0 :         g_object_unref (manager);
     782                 :          0 :         return;
     783                 :            :     }
     784                 :            : 
     785                 :          0 :     service = ag_manager_get_service (manager, argv[3]);
     786                 :          0 :     if (service == NULL)
     787                 :            :     {
     788                 :          0 :         show_error (INVALID_SERVICE_NAME);
     789                 :          0 :         g_object_unref (account);
     790                 :          0 :         g_object_unref (manager);
     791                 :          0 :         return;
     792                 :            :     }
     793                 :            : 
     794                 :          0 :     ag_account_select_service (account, service);
     795                 :          0 :     ag_account_set_enabled (account, enable);
     796                 :            : 
     797                 :          0 :     ag_account_store_blocking (account, &error);
     798                 :          0 :     if (error)
     799                 :            :     {
     800                 :          0 :         show_error (ERROR_GENERIC);
     801                 :          0 :         g_error_free (error);
     802                 :            :     }
     803                 :            : 
     804                 :          0 :     ag_service_unref (service);
     805                 :          0 :     g_object_unref (account);
     806                 :          0 :     g_object_unref (manager);
     807                 :            : }
     808                 :            : 
     809                 :            : static void
     810                 :          0 : delete_account (gchar **argv)
     811                 :            : {
     812                 :          0 :     AgManager *manager = NULL;
     813                 :          0 :     AgAccount *account = NULL;
     814                 :          0 :     gint id = 0;
     815                 :          0 :     GList *list = NULL;
     816                 :          0 :     GList *iter = NULL;
     817                 :          0 :     GError *error = NULL;
     818                 :            : 
     819                 :          0 :     if (argv[2] == NULL)
     820                 :            :     {
     821                 :          0 :         show_error (INVALID_INPUT);
     822                 :          0 :         show_help_text (argv[1]);
     823                 :          0 :         return;
     824                 :            :     }
     825                 :            : 
     826                 :          0 :     manager = ag_manager_new ();
     827                 :          0 :     if (manager == NULL)
     828                 :            :     {
     829                 :          0 :         show_error (ERROR_GENERIC);
     830                 :          0 :         return;
     831                 :            :     }
     832                 :            : 
     833                 :          0 :     if (strcmp (argv[2], "all") == 0)
     834                 :          0 :         list = ag_manager_list (manager);
     835                 :            :     else
     836                 :          0 :         list = g_list_prepend (list, GUINT_TO_POINTER (atoi (argv[2])));
     837                 :            : 
     838                 :          0 :     for (iter = list; iter != NULL; iter = g_list_next (iter))
     839                 :            :     {
     840                 :          0 :         id = GPOINTER_TO_UINT (iter->data);
     841                 :          0 :         account = ag_manager_get_account (manager, id);
     842                 :          0 :         if (account == NULL)
     843                 :            :         {
     844                 :          0 :             show_error (INVALID_ACC_ID);
     845                 :          0 :             continue;
     846                 :            :         }
     847                 :            : 
     848                 :          0 :         ag_account_delete (account);
     849                 :            : 
     850                 :          0 :         ag_account_store_blocking (account, &error);
     851                 :          0 :         if (error)
     852                 :            :         {
     853                 :          0 :             show_error (ERROR_GENERIC);
     854                 :          0 :             g_error_free (error);
     855                 :          0 :             error = NULL;
     856                 :            :         }
     857                 :            : 
     858                 :          0 :         g_object_unref (account);
     859                 :          0 :         account = NULL;
     860                 :            :     }
     861                 :            : 
     862                 :          0 :     g_object_unref (manager);
     863                 :          0 :     ag_manager_list_free (list);
     864                 :            : }
     865                 :            : 
     866                 :            : static void
     867                 :          0 : list_providers ()
     868                 :            : {
     869                 :          0 :     AgManager *manager = NULL;
     870                 :          0 :     GList *list = NULL;
     871                 :          0 :     GList *iter = NULL;
     872                 :          0 :     const gchar *name = NULL;
     873                 :            : 
     874                 :          0 :     manager = ag_manager_new ();
     875                 :          0 :     if (manager == NULL)
     876                 :            :     {
     877                 :          0 :         show_error (ERROR_GENERIC);
     878                 :          0 :         return;
     879                 :            :     }
     880                 :            : 
     881                 :          0 :     list = ag_manager_list_providers (manager);
     882                 :          0 :     if ((list == NULL) || (g_list_length (list) == 0))
     883                 :            :     {
     884                 :          0 :         printf ("No providers are available\n");
     885                 :          0 :         return;
     886                 :            :     }
     887                 :            : 
     888                 :          0 :     printf ("\nProvider Name\n-------------\n");
     889                 :          0 :     for (iter = list; iter != NULL; iter = g_list_next (iter))
     890                 :            :     {
     891                 :          0 :         name = ag_provider_get_name ((AgProvider *) (iter->data));
     892                 :          0 :         printf ("%s\n", name);
     893                 :            :     }
     894                 :            : 
     895                 :          0 :     ag_provider_list_free (list);
     896                 :          0 :     g_object_unref (manager);
     897                 :            : }
     898                 :            : 
     899                 :            : static void
     900                 :          0 : list_services (gchar **argv)
     901                 :            : {
     902                 :          0 :     AgManager *manager = NULL;
     903                 :          0 :     GList *list = NULL;
     904                 :          0 :     GList *iter = NULL;
     905                 :          0 :     const gchar *name = NULL;
     906                 :          0 :     AgAccount *account = NULL;
     907                 :          0 :     const gchar *type = NULL;
     908                 :            : 
     909                 :          0 :     manager = ag_manager_new ();
     910                 :          0 :     if (manager == NULL)
     911                 :            :     {
     912                 :          0 :         show_error (ERROR_GENERIC);
     913                 :          0 :         return;
     914                 :            :     }
     915                 :            : 
     916                 :            :     /* If account Id is not specified, list all services */
     917                 :          0 :     if (argv[2] == NULL)
     918                 :          0 :         list = ag_manager_list_services (manager);
     919                 :            :     else
     920                 :            :     {
     921                 :          0 :         account = ag_manager_get_account (manager, atoi (argv[2]));
     922                 :          0 :         if (account == NULL)
     923                 :            :         {
     924                 :          0 :             show_error (INVALID_ACC_ID);
     925                 :          0 :             g_object_unref (manager);
     926                 :          0 :             return;
     927                 :            :         }
     928                 :            : 
     929                 :          0 :         list = ag_account_list_services (account);
     930                 :            :     }
     931                 :            : 
     932                 :          0 :     if (list == NULL || g_list_length (list) == 0)
     933                 :            :     {
     934                 :          0 :         printf ("No services available\n");
     935                 :            : 
     936                 :          0 :         if (account)
     937                 :          0 :             g_object_unref (account);
     938                 :            : 
     939                 :          0 :         g_object_unref (manager);
     940                 :          0 :         return;
     941                 :            :     }
     942                 :            : 
     943                 :          0 :     printf ("%-35s %s\n", "Service type", "Service name");
     944                 :          0 :     printf ("%-35s %s\n", "------------", "------------");
     945                 :            : 
     946                 :          0 :     for (iter = list; iter != NULL; iter = g_list_next (iter))
     947                 :            :     {
     948                 :          0 :         name = ag_service_get_name ((AgService *) (iter->data));
     949                 :          0 :         type = ag_service_get_service_type ((AgService *) (iter->data));
     950                 :          0 :         printf ("%-35s %s\n", type, name);
     951                 :            :     }
     952                 :            : 
     953                 :          0 :     ag_service_list_free (list);
     954                 :            : 
     955                 :          0 :     if (account)
     956                 :          0 :         g_object_unref (account);
     957                 :            : 
     958                 :          0 :     g_object_unref (manager);
     959                 :            : }
     960                 :            : 
     961                 :            : static void
     962                 :          0 : list_accounts ()
     963                 :            : {
     964                 :          0 :     AgManager *manager = NULL;
     965                 :          0 :     GList *list = NULL;
     966                 :          0 :     GList *iter = NULL;
     967                 :          0 :     const gchar *name = NULL;
     968                 :          0 :     const gchar *provider = NULL;
     969                 :          0 :     AgAccount *account = NULL;
     970                 :            : 
     971                 :          0 :     manager = ag_manager_new ();
     972                 :          0 :     if (manager == NULL)
     973                 :            :     {
     974                 :          0 :         show_error (ERROR_GENERIC);
     975                 :          0 :         return;
     976                 :            :     }
     977                 :            : 
     978                 :          0 :     list = ag_manager_list (manager);
     979                 :          0 :     if (list == NULL || g_list_length (list) == 0)
     980                 :            :     {
     981                 :          0 :         printf ("\nNo accounts configured\n");
     982                 :          0 :         g_object_unref (manager);
     983                 :          0 :         return;
     984                 :            :     }
     985                 :            : 
     986                 :          0 :     printf ("%-10s %-30s %s\n", "ID", "Provider", "Name");
     987                 :          0 :     printf ("%-10s %-30s %s\n", "--", "--------", "----");
     988                 :            : 
     989                 :          0 :     for (iter = list; iter != NULL; iter = g_list_next (iter))
     990                 :            :     {
     991                 :          0 :         printf ("%-10d ", GPOINTER_TO_UINT (iter->data));
     992                 :            : 
     993                 :          0 :         account = ag_manager_get_account (manager,
     994                 :          0 :                                           GPOINTER_TO_UINT (iter->data));
     995                 :          0 :         if (account == NULL)
     996                 :            :         {
     997                 :          0 :             continue;
     998                 :            :         }
     999                 :            : 
    1000                 :          0 :         provider = ag_account_get_provider_name (account);
    1001                 :          0 :         if (provider != NULL)
    1002                 :          0 :             printf ("%-30s ", provider);
    1003                 :            :         else
    1004                 :          0 :             printf ("%-30s ", " ");
    1005                 :            : 
    1006                 :          0 :         name = ag_account_get_display_name (account);
    1007                 :          0 :         if (name != NULL)
    1008                 :          0 :             printf ("%s\n", name);
    1009                 :            :         else
    1010                 :          0 :             printf ("\n");
    1011                 :            : 
    1012                 :          0 :         g_object_unref (account);
    1013                 :          0 :         account = NULL;
    1014                 :            :     }
    1015                 :            : 
    1016                 :          0 :     ag_manager_list_free (list);
    1017                 :          0 :     g_object_unref (manager);
    1018                 :            : }
    1019                 :            : 
    1020                 :            : static void
    1021                 :          0 : enable_disable_account (gchar **argv, gboolean enable)
    1022                 :            : {
    1023                 :          0 :     AgManager *manager = NULL;
    1024                 :          0 :     AgAccount *account = NULL;
    1025                 :          0 :     GError *error = NULL;
    1026                 :            : 
    1027                 :          0 :     if (argv[2] == NULL)
    1028                 :            :     {
    1029                 :          0 :         show_error (INVALID_INPUT);
    1030                 :          0 :         show_help_text (argv[1]);
    1031                 :          0 :         return;
    1032                 :            :     }
    1033                 :            : 
    1034                 :          0 :     manager = ag_manager_new ();
    1035                 :          0 :     if (manager == NULL)
    1036                 :            :     {
    1037                 :          0 :         show_error (ERROR_GENERIC);
    1038                 :          0 :         return;
    1039                 :            :     }
    1040                 :            : 
    1041                 :          0 :     account = ag_manager_get_account (manager, atoi (argv[2]));
    1042                 :          0 :     if (account == NULL)
    1043                 :            :     {
    1044                 :          0 :         show_error (INVALID_ACC_ID);
    1045                 :          0 :         g_object_unref (manager);
    1046                 :          0 :         return;
    1047                 :            :     }
    1048                 :            : 
    1049                 :          0 :     ag_account_set_enabled (account, enable);
    1050                 :          0 :     ag_account_store_blocking (account, &error);
    1051                 :          0 :     if (error)
    1052                 :            :     {
    1053                 :          0 :         show_error (ERROR_GENERIC);
    1054                 :          0 :         g_error_free (error);
    1055                 :            :     }
    1056                 :            : 
    1057                 :          0 :     g_object_unref (account);
    1058                 :          0 :     g_object_unref (manager);
    1059                 :            : }
    1060                 :            : 
    1061                 :            : static void
    1062                 :          0 : list_enabled_services (gchar *id)
    1063                 :            : {
    1064                 :          0 :     AgManager *manager = NULL;
    1065                 :          0 :     AgAccount *account = NULL;
    1066                 :          0 :     GList *list = NULL;
    1067                 :          0 :     GList *iter = NULL;
    1068                 :          0 :     const gchar *name = NULL;
    1069                 :          0 :     const gchar *type = NULL;
    1070                 :            : 
    1071                 :          0 :     manager = ag_manager_new ();
    1072                 :          0 :     if (manager == NULL)
    1073                 :            :     {
    1074                 :          0 :         show_error (ERROR_GENERIC);
    1075                 :          0 :         return;
    1076                 :            :     }
    1077                 :            : 
    1078                 :          0 :     account = ag_manager_get_account (manager, atoi (id));
    1079                 :          0 :     if (account == NULL)
    1080                 :            :     {
    1081                 :          0 :         show_error (INVALID_ACC_ID);
    1082                 :          0 :         g_object_unref (manager);
    1083                 :          0 :         return;
    1084                 :            :     }
    1085                 :            : 
    1086                 :          0 :     list = ag_account_list_enabled_services (account);
    1087                 :          0 :     if (list == NULL || g_list_length (list) == 0)
    1088                 :            :     {
    1089                 :          0 :         printf ("No services enabled for account\n");
    1090                 :          0 :         g_object_unref (account);
    1091                 :          0 :         g_object_unref (manager);
    1092                 :          0 :         return;
    1093                 :            :     }
    1094                 :            : 
    1095                 :          0 :     printf ("%-35s%s\n", "Type", "Service Name");
    1096                 :          0 :     printf ("%-35s%s\n", "----", "------------");
    1097                 :          0 :     for (iter = list; iter != NULL; iter = g_list_next (iter))
    1098                 :            :     {
    1099                 :          0 :         name = ag_service_get_name ((AgService *) (iter->data));
    1100                 :          0 :         type = ag_service_get_service_type ((AgService *) (iter->data));
    1101                 :          0 :         printf ("%-35s", type);
    1102                 :          0 :         printf ("%s\n", name);
    1103                 :            :     }
    1104                 :            : 
    1105                 :          0 :     ag_service_list_free (list);
    1106                 :          0 :     g_object_unref (account);
    1107                 :          0 :     g_object_unref (manager);
    1108                 :            : }
    1109                 :            : 
    1110                 :            : static void
    1111                 :          0 : list_enabled (gchar **argv)
    1112                 :            : {
    1113                 :          0 :     AgManager *manager = NULL;
    1114                 :          0 :     AgAccount *account = NULL;
    1115                 :          0 :     GList *list = NULL;
    1116                 :          0 :     GList *iter = NULL;
    1117                 :          0 :     const gchar *provider = NULL;
    1118                 :          0 :     const gchar *name = NULL;
    1119                 :            : 
    1120                 :          0 :     if (argv[2] != NULL)
    1121                 :            :     {
    1122                 :          0 :         list_enabled_services (argv[2]);
    1123                 :          0 :         return;
    1124                 :            :     }
    1125                 :            : 
    1126                 :          0 :     manager = ag_manager_new ();
    1127                 :          0 :     if (manager == NULL)
    1128                 :            :     {
    1129                 :          0 :         show_error (ERROR_GENERIC);
    1130                 :          0 :         return;
    1131                 :            :     }
    1132                 :            : 
    1133                 :          0 :     list = ag_manager_list_enabled (manager);
    1134                 :          0 :     if (list == NULL || g_list_length (list) == 0)
    1135                 :            :     {
    1136                 :          0 :         printf ("No accounts enabled\n");
    1137                 :          0 :         g_object_unref (manager);
    1138                 :          0 :         return;
    1139                 :            :     }
    1140                 :            : 
    1141                 :          0 :     printf ("%-10s %-30s %s\n", "ID", "Provider", "Name");
    1142                 :          0 :     printf ("%-10s %-30s %s\n", "--", "--------", "----");
    1143                 :            : 
    1144                 :            : 
    1145                 :          0 :     for (iter = list; iter != NULL; iter = g_list_next (iter))
    1146                 :            :     {
    1147                 :          0 :         printf ("%-10d ", (AgAccountId) GPOINTER_TO_UINT (iter->data));
    1148                 :            : 
    1149                 :          0 :         account = ag_manager_get_account (manager,
    1150                 :          0 :                                           GPOINTER_TO_UINT (iter->data));
    1151                 :          0 :         if (account == NULL)
    1152                 :            :         {
    1153                 :          0 :             continue;
    1154                 :            :         }
    1155                 :            : 
    1156                 :          0 :         provider = ag_account_get_provider_name (account);
    1157                 :          0 :         if (provider != NULL)
    1158                 :          0 :             printf ("%-30s ", provider);
    1159                 :            :         else
    1160                 :          0 :             printf ("%-30s ", " ");
    1161                 :            : 
    1162                 :          0 :         name = ag_account_get_display_name (account);
    1163                 :          0 :         if (name != NULL)
    1164                 :          0 :             printf ("%s\n", name);
    1165                 :            :         else
    1166                 :          0 :             printf ("\n");
    1167                 :            : 
    1168                 :          0 :         g_object_unref (account);
    1169                 :          0 :         account = NULL;
    1170                 :            : 
    1171                 :            :     }
    1172                 :          0 :     ag_manager_list_free (list);
    1173                 :          0 :     g_object_unref (manager);
    1174                 :            : }
    1175                 :            : 
    1176                 :            : static int
    1177                 :          0 : parse (int argc, char **argv)
    1178                 :            : {
    1179                 :          0 :     if (strcmp (argv[1], "create-account") == 0)
    1180                 :            :     {
    1181                 :          0 :         create_account (argv);
    1182                 :          0 :         return 0;
    1183                 :            :     }
    1184                 :          0 :     else if (strcmp (argv[1], "delete-account") == 0)
    1185                 :            :     {
    1186                 :          0 :         delete_account (argv);
    1187                 :          0 :         return 0;
    1188                 :            :     }
    1189                 :          0 :     else if (strcmp (argv[1], "list-providers") == 0)
    1190                 :            :     {
    1191                 :          0 :         list_providers ();
    1192                 :          0 :         return 0;
    1193                 :            :     }
    1194                 :          0 :     else if (strcmp (argv[1], "list-services") == 0)
    1195                 :            :     {
    1196                 :          0 :         list_services (argv);
    1197                 :          0 :         return 0;
    1198                 :            :     }
    1199                 :          0 :     else if (strcmp (argv[1], "list-accounts") == 0)
    1200                 :            :     {
    1201                 :          0 :         list_accounts ();
    1202                 :          0 :         return 0;
    1203                 :            :     }
    1204                 :          0 :     else if (strcmp (argv[1], "enable-account") == 0)
    1205                 :            :     {
    1206                 :          0 :         enable_disable_account (argv, TRUE);
    1207                 :          0 :         return 0;
    1208                 :            :     }
    1209                 :          0 :     else if (strcmp (argv[1], "disable-account") == 0)
    1210                 :            :     {
    1211                 :          0 :         enable_disable_account (argv, FALSE);
    1212                 :          0 :         return 0;
    1213                 :            :     }
    1214                 :          0 :     else if (strcmp (argv[1], "list-enabled") == 0)
    1215                 :            :     {
    1216                 :          0 :         list_enabled (argv);
    1217                 :          0 :         return 0;
    1218                 :            :     }
    1219                 :          0 :     else if (strcmp (argv[1], "enable-service") == 0)
    1220                 :            :     {
    1221                 :          0 :         enable_disable_service (argv, TRUE);
    1222                 :          0 :         return 0;
    1223                 :            :     }
    1224                 :          0 :     else if (strcmp (argv[1], "disable-service") == 0)
    1225                 :            :     {
    1226                 :          0 :         enable_disable_service (argv, FALSE);
    1227                 :          0 :         return 0;
    1228                 :            :     }
    1229                 :          0 :     else if (strcmp (argv[1], "update-account") == 0)
    1230                 :            :     {
    1231                 :          0 :         update_account (argv);
    1232                 :          0 :         return 0;
    1233                 :            :     }
    1234                 :          0 :     else if (strcmp (argv[1], "update-service") == 0)
    1235                 :            :     {
    1236                 :          0 :         update_service (argv);
    1237                 :          0 :         return 0;
    1238                 :            :     }
    1239                 :          0 :     else if (strcmp (argv[1], "get-service") == 0)
    1240                 :            :     {
    1241                 :          0 :         get_service (argv);
    1242                 :          0 :         return 0;
    1243                 :            :     }
    1244                 :          0 :     else if (strcmp (argv[1], "get-account") == 0)
    1245                 :            :     {
    1246                 :          0 :         get_account (argv);
    1247                 :          0 :         return 0;
    1248                 :            :     }
    1249                 :          0 :     else if (strcmp (argv[1], "list-settings") == 0)
    1250                 :            :     {
    1251                 :          0 :         list_settings (argv);
    1252                 :          0 :         return 0;
    1253                 :            :     }
    1254                 :            : 
    1255                 :          0 :     return -1;
    1256                 :            : }
    1257                 :            : 
    1258                 :            : gint
    1259                 :          0 : main (int argc, char **argv)
    1260                 :            : {
    1261                 :          0 :     gl_app_name = g_path_get_basename (argv[0]);
    1262                 :            : 
    1263                 :          0 :     if (argc < 2)
    1264                 :            :     {
    1265                 :          0 :         show_help ();
    1266                 :          0 :         return 0;
    1267                 :            :     }
    1268                 :            : 
    1269                 :          0 :     if (parse (argc, argv))
    1270                 :          0 :         show_help ();
    1271                 :            : }

Generated by: LCOV version 1.12