18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CVSID: $Id$
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * hal_get_property.c : Get property for a device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2003 David Zeuthen, <david@fubar.dk>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is free software; you can redistribute it and/or modify
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * it under the terms of the GNU General Public License as published by
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the Free Software Foundation; either version 2 of the License, or
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * (at your option) any later version.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is distributed in the hope that it will be useful,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * but WITHOUT ANY WARRANTY; without even the implied warranty of
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * GNU General Public License for more details.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You should have received a copy of the GNU General Public License
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * along with this program; if not, write to the Free Software
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifdef HAVE_CONFIG_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem# include <config.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <stdio.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <string.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <unistd.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <getopt.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <libhal.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @defgroup HalGetProperty Get HAL device property
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ingroup HalMisc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @brief A commandline tool getting a property of a device. Uses libhal
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstatic LibHalContext *hal_ctx;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** Print out program usage.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argc Number of arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argv Arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstatic void
18c2aff776a775d34a4c9893a4c72e0434d68e36artemusage (int argc, char *argv[])
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "usage : hal-get-property --udi <udi> --key <key> \n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " [--hex] [--help] [--verbose] [--version]\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --udi Unique Device Id\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --key Key of the property to get\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --hex Show integer values in hex (without leading 0x)\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --verbose Be verbose\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --version Show version and exit\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --help Show this information and exit\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "This program retrieves a property from a device. If the property exist\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "then it is printed on stdout and this program exits with exit code 0.\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "On error, the program exits with an exit code different from 0\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** Entry point
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argc Number of arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argv Arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @return Return code
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemmain (int argc, char *argv[])
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *udi = NULL;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *key = NULL;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int type;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t is_hex = FALSE;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t is_verbose = FALSE;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t is_version = FALSE;
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems dbus_bool_t udi_exists = FALSE;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *str;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError error;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (argc <= 1) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem usage (argc, argv);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem while (1) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int c;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int option_index = 0;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *opt;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem static struct option long_options[] = {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {"udi", 1, NULL, 0},
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {"key", 1, NULL, 0},
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {"hex", 0, NULL, 0},
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {"verbose", 0, NULL, 0},
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {"version", 0, NULL, 0},
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {"help", 0, NULL, 0},
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {NULL, 0, NULL, 0}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem };
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem c = getopt_long (argc, argv, "",
18c2aff776a775d34a4c9893a4c72e0434d68e36artem long_options, &option_index);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (c == -1)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem switch (c) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case 0:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem opt = long_options[option_index].name;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (strcmp (opt, "help") == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem usage (argc, argv);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 0;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } else if (strcmp (opt, "hex") == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem is_hex = TRUE;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } else if (strcmp (opt, "verbose") == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem is_verbose = TRUE;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } else if (strcmp (opt, "version") == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem is_version = TRUE;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } else if (strcmp (opt, "key") == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem key = strdup (optarg);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } else if (strcmp (opt, "udi") == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem udi = strdup (optarg);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem default:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem usage (argc, argv);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (is_version) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("hal-get-property " PACKAGE_VERSION "\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 0;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (udi == NULL || key == NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem usage (argc, argv);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_error_init (&error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((hal_ctx = libhal_ctx_new ()) == NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: libhal_ctx_new\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (!libhal_ctx_set_dbus_connection (hal_ctx, dbus_bus_get (DBUS_BUS_SYSTEM, &error))) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: libhal_ctx_set_dbus_connection: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_FREE_DBUS_ERROR (&error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (!libhal_ctx_init (hal_ctx, &error)) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (dbus_error_is_set(&error)) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems dbus_error_free (&error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "Could not initialise connection to hald.\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "Normally this means the HAL daemon (hald) is not running or not ready.\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems /* check UDI exists */
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems udi_exists = libhal_device_exists (hal_ctx, udi, &error);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems if (!udi_exists) {
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: UDI %s does not exist\n", udi);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems return 1;
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems }
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems if (dbus_error_is_set(&error)) {
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: libhal_device_exists: %s: %s\n", error.name, error.message);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems dbus_error_free (&error);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems return 1;
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems }
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems
18c2aff776a775d34a4c9893a4c72e0434d68e36artem type = libhal_device_get_property_type (hal_ctx, udi, key, &error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (type == LIBHAL_PROPERTY_TYPE_INVALID) {
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems if (dbus_error_is_set(&error)) {
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: libhal_device_get_property_type: %s: %s\n", error.name, error.message);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems dbus_error_free (&error);
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems } else {
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems fprintf (stderr, "error: libhal_device_get_property_type: invalid params.\n");
de7d23d85e06f547e8cd4ed4bce494209d63612aLin Guo - Sun Microsystems }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /* emit the value to stdout */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem switch (type) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case LIBHAL_PROPERTY_TYPE_STRING:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem str = libhal_device_get_property_string (hal_ctx, udi, key, &error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (is_verbose)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Type is string\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("%s\n", str);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_free_string (str);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case LIBHAL_PROPERTY_TYPE_INT32:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (is_verbose)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Type is integer (shown in %s)\n",
18c2aff776a775d34a4c9893a4c72e0434d68e36artem (is_hex ? "hexadecimal" : "decimal"));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ((is_hex ? "%x\n" : "%d\n"),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_device_get_property_int (hal_ctx, udi, key, &error));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case LIBHAL_PROPERTY_TYPE_UINT64:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (is_verbose)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Type is uint64 (shown in %s)\n",
18c2aff776a775d34a4c9893a4c72e0434d68e36artem (is_hex ? "hexadecimal" : "decimal"));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ((is_hex ? "%llx\n" : "%llu\n"),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem (long long unsigned int) libhal_device_get_property_uint64 (hal_ctx, udi, key, &error));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case LIBHAL_PROPERTY_TYPE_DOUBLE:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (is_verbose)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Type is double\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("%f\n",
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_device_get_property_double (hal_ctx, udi, key, &error));
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case LIBHAL_PROPERTY_TYPE_BOOLEAN:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (is_verbose)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Type is boolean\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("%s\n",
18c2aff776a775d34a4c9893a4c72e0434d68e36artem libhal_device_get_property_bool (hal_ctx, udi, key, &error) ? "true" : "false");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem case LIBHAL_PROPERTY_TYPE_STRLIST:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem unsigned int i;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char **strlist;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if ((strlist = libhal_device_get_property_strlist (hal_ctx, udi, key, &error)) != NULL) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem for (i = 0; strlist[i] != 0; i++) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("%s", strlist[i]);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (strlist[i+1] != NULL)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf (" ");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem default:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Unknown type %d='%c'\n", type, type);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (dbus_error_is_set (&error)) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_error_free (&error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return 0;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */