hal_find_by_property.c revision 18c2aff776a775d34a4c9893a4c72e0434d68e36
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CVSID: $Id$
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * hal_find_by_property.c : Find hal devices
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2005 David Zeuthen, <david@fubar.dk>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
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 * 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 * 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/** Print out program usage.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argc Number of arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argv Arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "usage : hal-find-by-property --key <key> --string <value>\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " [--help] [--verbose] [--version]\n");
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** @todo support other property types a'la hal-[get|set]-property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --key Key of the property to check\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --string String value of property\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --verbose Be verbose\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --version Show version and exit\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem " --help Show this information and exit\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "This program prints the Unique Device Identifiers for HAL device\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "objects where a given property assumes a given value. On success\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "the program exists with exit code 0. If there is an error, the\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "program exits with an exit code different from 0.\n"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/** Entry point
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argc Number of arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @param argv Arguments given to program
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @return Return code
18c2aff776a775d34a4c9893a4c72e0434d68e36artem while (1) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *opt;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (c == -1)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem switch (c) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("hal-find-by-property " PACKAGE_VERSION "\n");
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 fprintf (stderr, "error: libhal_ctx_init: %s: %s\n", error.name, error.message);
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 udis = libhal_manager_find_device_string_match (hal_ctx, key, value, &num_udis, &error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, "error: %s: %s\n", error.name, error.message);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem printf ("Found %d device objects with string property %s = '%s'\n", num_udis, key, value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem for (i = 0; i < num_udis; i++) {