diff --git a/cfg.mk b/cfg.mk index 2a8957a80b..9ad8cf7529 100644 --- a/cfg.mk +++ b/cfg.mk @@ -863,6 +863,30 @@ sc_prohibit_atoi: halt='Use virStrToLong* instead of atoi, atol, atof, atoq, atoll' \ $(_sc_search_regexp) +sc_prohibit_wrong_filename_in_comment: + @fail=0; \ + awk 'BEGIN { \ + fail=0; \ + } FNR < 3 { \ + n=match($$0, /[[:space:]][^[:space:]]*[.][ch][[:space:]:]/); \ + if (n > 0) { \ + A=substr($$0, RSTART+1, RLENGTH-2); \ + n=split(FILENAME, arr, "/"); \ + if (A != arr[n]) { \ + print "in " FILENAME ": " A " mentioned in comments "; \ + fail=1; \ + } \ + } \ + } END { \ + if (fail == 1) { \ + exit 1; \ + } \ + }' $$($(VC_LIST_EXCEPT) | grep '\.[ch]$$') || fail=1; \ + if test $$fail -eq 1; then \ + { echo '$(ME): The file name in comments must match the ' \ + 'actual file name' 1>&2; exit 1; } \ + fi; + # We don't use this feature of maint.mk. prev_version_file = /dev/null diff --git a/daemon/libvirtd-config.c b/daemon/libvirtd-config.c index c816fda64c..856a038726 100644 --- a/daemon/libvirtd-config.c +++ b/daemon/libvirtd-config.c @@ -1,5 +1,5 @@ /* - * libvirtd.c: daemon start of day, guest process & i/o management + * libvirtd-config.c: daemon start of day, guest process & i/o management * * Copyright (C) 2006-2012 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/daemon/libvirtd-config.h b/daemon/libvirtd-config.h index a24d5d2737..0829273db4 100644 --- a/daemon/libvirtd-config.h +++ b/daemon/libvirtd-config.h @@ -1,5 +1,5 @@ /* - * libvirtd.c: daemon start of day, guest process & i/o management + * libvirtd-config.h: daemon start of day, guest process & i/o management * * Copyright (C) 2006-2012 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 1fcc0f2f15..a19daac1fe 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -1,5 +1,5 @@ /* - * bhyve_process.c: bhyve command generation + * bhyve_command.c: bhyve command generation * * Copyright (C) 2014 Roman Bogorodskiy * diff --git a/src/bhyve/bhyve_command.h b/src/bhyve/bhyve_command.h index 8326971ecc..66d934dfe7 100644 --- a/src/bhyve/bhyve_command.h +++ b/src/bhyve/bhyve_command.h @@ -1,5 +1,5 @@ /* - * bhyve_process.c: bhyve command generation + * bhyve_command.h: bhyve command generation * * Copyright (C) 2014 Roman Bogorodskiy * diff --git a/src/conf/domain_audit.h b/src/conf/domain_audit.h index 9486216801..70b09e5aa9 100644 --- a/src/conf/domain_audit.h +++ b/src/conf/domain_audit.h @@ -1,5 +1,5 @@ /* - * domain_audit.c: Domain audit management + * domain_audit.h: Domain audit management * * Copyright (C) 2006-2011 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/datatypes.c b/src/datatypes.c index 33d941db4b..20752cd45a 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -1,5 +1,5 @@ /* - * datatypes.h: management of structs for public data types + * datatypes.c: management of structs for public data types * * Copyright (C) 2006-2014 Red Hat, Inc. * diff --git a/src/hyperv/hyperv_wmi.c b/src/hyperv/hyperv_wmi.c index 39eed0c936..a603badcf3 100644 --- a/src/hyperv/hyperv_wmi.c +++ b/src/hyperv/hyperv_wmi.c @@ -1,6 +1,6 @@ /* - * hyperv_wmi.h: general WMI over WSMAN related functions and structures for + * hyperv_wmi.c: general WMI over WSMAN related functions and structures for * managing Microsoft Hyper-V hosts * * Copyright (C) 2011 Matthias Bolte diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interface_backend_netcf.c index c525ca9c0b..b4c1fe9240 100644 --- a/src/interface/interface_backend_netcf.c +++ b/src/interface/interface_backend_netcf.c @@ -1,6 +1,6 @@ /* - * interface_driver.c: backend driver methods to handle physical - * interface configuration using the netcf library. + * interface_backend_netcf.c: backend driver methods to handle physical + * interface configuration using the netcf library. * * Copyright (C) 2006-2013 Red Hat, Inc. * diff --git a/src/locking/domain_lock.h b/src/locking/domain_lock.h index eefe6cd52f..a9b19c865d 100644 --- a/src/locking/domain_lock.h +++ b/src/locking/domain_lock.h @@ -1,5 +1,5 @@ /* - * domain_lock.c: Locking for domain lifecycle operations + * domain_lock.h: Locking for domain lifecycle operations * * Copyright (C) 2010-2011 Red Hat, Inc. * diff --git a/src/locking/lock_daemon_config.c b/src/locking/lock_daemon_config.c index 8e632f58bd..68cd9e9b44 100644 --- a/src/locking/lock_daemon_config.c +++ b/src/locking/lock_daemon_config.c @@ -1,5 +1,5 @@ /* - * lock_daemon_config.h: virtlockd config file handling + * lock_daemon_config.c: virtlockd config file handling * * Copyright (C) 2006-2012 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/lxc/lxc_hostdev.c b/src/lxc/lxc_hostdev.c index b7248df94a..c3ecc481c6 100644 --- a/src/lxc/lxc_hostdev.c +++ b/src/lxc/lxc_hostdev.c @@ -1,5 +1,5 @@ /* - * virLXC_hostdev.c: VIRLXC hostdev management + * lxc_hostdev.c: VIRLXC hostdev management * * Copyright (C) 2006-2007, 2009-2012 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/lxc/lxc_hostdev.h b/src/lxc/lxc_hostdev.h index 41bb178276..cf89a9907a 100644 --- a/src/lxc/lxc_hostdev.h +++ b/src/lxc/lxc_hostdev.h @@ -1,5 +1,5 @@ /* - * virLXC_hostdev.h: VIRLXC hostdev management + * lxc_hostdev.h: VIRLXC hostdev management * * Copyright (C) 2006-2007, 2009-2010 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h index 1c2a4a7e80..decc08f77d 100644 --- a/src/network/bridge_driver.h +++ b/src/network/bridge_driver.h @@ -1,5 +1,5 @@ /* - * network_driver.h: core driver methods for managing networks + * bridge_driver.h: core driver methods for managing networks * * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/network/bridge_driver_platform.h b/src/network/bridge_driver_platform.h index 82d96f6595..22f3aae616 100644 --- a/src/network/bridge_driver_platform.h +++ b/src/network/bridge_driver_platform.h @@ -1,5 +1,5 @@ /* - * bridge_driver.h: platform specific routines for bridge driver + * bridge_driver_platform.h: platform specific routines for bridge driver * * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c index d5a92cd836..55b3eb3e96 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -1,5 +1,5 @@ /* - * node_device.c: node device enumeration + * node_device_driver.c: node device enumeration * * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright (C) 2008 Virtual Iron Software, Inc. diff --git a/src/node_device/node_device_driver.h b/src/node_device/node_device_driver.h index 0f62c83c62..e238ff8159 100644 --- a/src/node_device/node_device_driver.h +++ b/src/node_device/node_device_driver.h @@ -1,5 +1,5 @@ /* - * node_device.h: node device enumeration + * node_device_driver.h: node device enumeration * * Copyright (C) 2008 Virtual Iron Software, Inc. * Copyright (C) 2008 David F. Lively diff --git a/src/nodeinfo.h b/src/nodeinfo.h index 413fddd0d4..c81fcbb0f1 100644 --- a/src/nodeinfo.h +++ b/src/nodeinfo.h @@ -1,5 +1,5 @@ /* - * nodeinfo.c: Helper routines for OS specific node information + * nodeinfo.h: Helper routines for OS specific node information * * Copyright (C) 2006-2008, 2011-2012 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/openvz/openvz_conf.h b/src/openvz/openvz_conf.h index 47b5123458..a7de7d2f27 100644 --- a/src/openvz/openvz_conf.h +++ b/src/openvz/openvz_conf.h @@ -1,5 +1,5 @@ /* - * openvz_config.h: config information for OpenVZ VPSs + * openvz_conf.h: config information for OpenVZ VPSs * * Copyright (C) 2010 Red Hat, Inc. * Copyright (C) 2006, 2007 Binary Karma. diff --git a/src/openvz/openvz_util.c b/src/openvz/openvz_util.c index 8920d14f9b..31137515ec 100644 --- a/src/openvz/openvz_util.c +++ b/src/openvz/openvz_util.c @@ -1,5 +1,5 @@ /* - * openvz_driver.c: core driver methods for managing OpenVZ VEs + * openvz_util.c: core driver methods for managing OpenVZ VEs * * Copyright (C) 2013 Red Hat, Inc. * Copyright (C) 2012 Guido Günther diff --git a/src/openvz/openvz_util.h b/src/openvz/openvz_util.h index 680e50720f..0c8d55ae29 100644 --- a/src/openvz/openvz_util.h +++ b/src/openvz/openvz_util.h @@ -1,5 +1,5 @@ /* - * openvz_driver.h: common util functions for managing openvz VPEs + * openvz_util.h: common util functions for managing openvz VPEs * * Copyright (C) 2012 Guido Günther * diff --git a/src/parallels/parallels_driver.h b/src/parallels/parallels_driver.h index a503abe539..babe5c02f0 100644 --- a/src/parallels/parallels_driver.h +++ b/src/parallels/parallels_driver.h @@ -1,5 +1,5 @@ /* - * parallels_driver.c: core driver functions for managing + * parallels_driver.h: core driver functions for managing * Parallels Cloud Server hosts * * Copyright (C) 2012 Parallels, Inc. diff --git a/src/parallels/parallels_network.c b/src/parallels/parallels_network.c index 63daf53dc3..432f0cce06 100644 --- a/src/parallels/parallels_network.c +++ b/src/parallels/parallels_network.c @@ -1,5 +1,5 @@ /* - * parallels_storage.c: core privconn functions for managing + * parallels_network.c: core privconn functions for managing * Parallels Cloud Server hosts * * Copyright (C) 2013 Red Hat, Inc. diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index 4a3820cef5..553bff919a 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -1,5 +1,5 @@ /* - * qemu_agent.h: interaction with QEMU guest agent + * qemu_agent.c: interaction with QEMU guest agent * * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index bad63c5238..c321eda32f 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1,5 +1,5 @@ /* - * qemu_domain.h: QEMU domain private state + * qemu_domain.c: QEMU domain private state * * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/qemu/qemu_driver.h b/src/qemu/qemu_driver.h index 84f74c4241..df7533a8a2 100644 --- a/src/qemu/qemu_driver.h +++ b/src/qemu/qemu_driver.h @@ -1,5 +1,5 @@ /* - * driver.h: core driver methods for managing qemu guests + * qemu_driver.h: core driver methods for managing qemu guests * * Copyright (C) 2006, 2007 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 6703c92edd..dd72a794e3 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1,5 +1,5 @@ /* - * qemu_hotplug.h: QEMU device hotplug management + * qemu_hotplug.c: QEMU device hotplug management * * Copyright (C) 2006-2014 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/remote/remote_driver.h b/src/remote/remote_driver.h index 912f0f8b51..4033a3cd2c 100644 --- a/src/remote/remote_driver.h +++ b/src/remote/remote_driver.h @@ -1,5 +1,5 @@ /* - * remote_internal.h: driver to provide access to libvirtd running + * remote_driver.h: driver to provide access to libvirtd running * on a remote machine * * Copyright (C) 2006-2007, 2010 Red Hat, Inc. diff --git a/src/rpc/virnetservermdns.h b/src/rpc/virnetservermdns.h index a1c19c1603..e91b264c1e 100644 --- a/src/rpc/virnetservermdns.h +++ b/src/rpc/virnetservermdns.h @@ -1,5 +1,5 @@ /* - * virnetservermdns.c: advertise server sockets + * virnetservermdns.h: advertise server sockets * * Copyright (C) 2011 Red Hat, Inc. * Copyright (C) 2007 Daniel P. Berrange diff --git a/src/storage/storage_backend_mpath.h b/src/storage/storage_backend_mpath.h index d7f20f3813..b66664576f 100644 --- a/src/storage/storage_backend_mpath.h +++ b/src/storage/storage_backend_mpath.h @@ -1,5 +1,5 @@ /* - * storage_backend_scsi.h: storage backend for SCSI handling + * storage_backend_mpath.h: storage backend for multipath handling * * Copyright (C) 2009-2009 Red Hat, Inc. * Copyright (C) 2009-2008 Dave Allan diff --git a/src/storage/storage_backend_sheepdog.h b/src/storage/storage_backend_sheepdog.h index bc114ffe5d..b0d8440b3a 100644 --- a/src/storage/storage_backend_sheepdog.h +++ b/src/storage/storage_backend_sheepdog.h @@ -1,5 +1,5 @@ /* - * storage_backend_sheepog.h: storage backend for Sheepdog handling + * storage_backend_sheepdog.h: storage backend for Sheepdog handling * * Copyright (C) 2012 Wido den Hollander * Copyright (C) 2012 Frank Spijkerman diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 986f2159b4..181a15a404 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1,5 +1,5 @@ /* - * test.c: A "mock" hypervisor for use by application unit tests + * test_driver.c: A "mock" hypervisor for use by application unit tests * * Copyright (C) 2006-2014 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/test/test_driver.h b/src/test/test_driver.h index b9bf566062..df74433c36 100644 --- a/src/test/test_driver.h +++ b/src/test/test_driver.h @@ -1,5 +1,5 @@ /* - * test.h: A "mock" hypervisor for use by application unit tests + * test_driver.h: A "mock" hypervisor for use by application unit tests * * Copyright (C) 2006-2006 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/uml/uml_conf.h b/src/uml/uml_conf.h index a914be0ae0..05e19ff27b 100644 --- a/src/uml/uml_conf.h +++ b/src/uml/uml_conf.h @@ -1,5 +1,5 @@ /* - * config.h: VM configuration management + * uml_conf.h: VM configuration management * * Copyright (C) 2006, 2007, 2010 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/util/viratomic.c b/src/util/viratomic.c index 160a20b073..278a749b6e 100644 --- a/src/util/viratomic.c +++ b/src/util/viratomic.c @@ -1,5 +1,5 @@ /* - * viratomic.h: atomic integer operations + * viratomic.c: atomic integer operations * * Copyright (C) 2012 Red Hat, Inc. * diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c index 870c8fe814..775262d37e 100644 --- a/src/util/virbitmap.c +++ b/src/util/virbitmap.c @@ -1,5 +1,5 @@ /* - * virbitmap.h: Simple bitmap operations + * virbitmap.c: Simple bitmap operations * * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright (C) 2010 Novell, Inc. diff --git a/src/util/virebtables.h b/src/util/virebtables.h index c0d443d237..2b6f1dde4b 100644 --- a/src/util/virebtables.h +++ b/src/util/virebtables.h @@ -1,5 +1,5 @@ /* - * virebtables.c: Helper APIs for managing ebtables + * virebtables.h: Helper APIs for managing ebtables * * Copyright (C) 2007-2008, 2013 Red Hat, Inc. * Copyright (C) 2009 IBM Corp. diff --git a/src/util/virerror.h b/src/util/virerror.h index 5ae4eb5853..2de04f474f 100644 --- a/src/util/virerror.h +++ b/src/util/virerror.h @@ -1,5 +1,5 @@ /* - * virerror.c: error handling and reporting code for libvirt + * virerror.h: error handling and reporting code for libvirt * * Copyright (C) 2006-2014 Red Hat, Inc. * diff --git a/src/util/vireventpoll.h b/src/util/vireventpoll.h index c46ab807e0..8844c9cd9f 100644 --- a/src/util/vireventpoll.h +++ b/src/util/vireventpoll.h @@ -1,5 +1,5 @@ /* - * vireventpool.h: Poll based event loop for monitoring file handles + * vireventpoll.h: Poll based event loop for monitoring file handles * * Copyright (C) 2007 Daniel P. Berrange * Copyright (C) 2007 Red Hat, Inc. diff --git a/src/util/viruuid.c b/src/util/viruuid.c index c5fa9a8cd2..48f5e2e44b 100644 --- a/src/util/viruuid.c +++ b/src/util/viruuid.c @@ -1,5 +1,5 @@ /* - * viruuid.h: helper APIs for dealing with UUIDs + * viruuid.c: helper APIs for dealing with UUIDs * * Copyright (C) 2007-2013 Red Hat, Inc. * diff --git a/src/util/virxml.h b/src/util/virxml.h index d967a2e1c6..781b3bf8f6 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -1,5 +1,5 @@ /* - * virxml.c: helper APIs for dealing with XML documents + * virxml.h: helper APIs for dealing with XML documents * * Copyright (C) 2005, 2007-2012 Red Hat, Inc. * diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h index 54a1124dd9..b5582a1e2f 100644 --- a/src/xen/xen_driver.h +++ b/src/xen/xen_driver.h @@ -1,5 +1,5 @@ /* - * xen_unified.c: Unified Xen driver. + * xen_driver.h: Unified Xen driver. * * Copyright (C) 2007, 2010-2011 Red Hat, Inc. * diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c index f9c7b4083f..d24db06588 100644 --- a/src/xen/xen_hypervisor.c +++ b/src/xen/xen_hypervisor.c @@ -1,5 +1,5 @@ /* - * xen_internal.c: direct access to Xen hypervisor level + * xen_hypervisor.c: direct access to Xen hypervisor level * * Copyright (C) 2005-2013 Red Hat, Inc. * diff --git a/src/xen/xen_hypervisor.h b/src/xen/xen_hypervisor.h index 6aeab7975c..2990e51ed4 100644 --- a/src/xen/xen_hypervisor.h +++ b/src/xen/xen_hypervisor.h @@ -1,5 +1,5 @@ /* - * xen_internal.h: internal API for direct access to Xen hypervisor level + * xen_hypervisor.h: internal API for direct access to Xen hypervisor level * * Copyright (C) 2005, 2010-2011 Red Hat, Inc. * diff --git a/src/xen/xen_inotify.c b/src/xen/xen_inotify.c index a58509b2cf..6190a9d6f7 100644 --- a/src/xen/xen_inotify.c +++ b/src/xen/xen_inotify.c @@ -1,5 +1,5 @@ /* - * xen_inofify.c: Xen notification of xml file activity in the + * xen_inotify.c: Xen notification of xml file activity in the * following dirs: * /etc/xen * /var/lib/xend/domains diff --git a/src/xen/xen_inotify.h b/src/xen/xen_inotify.h index 6055c88b43..8a9370deab 100644 --- a/src/xen/xen_inotify.h +++ b/src/xen/xen_inotify.h @@ -1,5 +1,5 @@ /* - * xen_inofify.h: Xen notification of xml files + * xen_inotify.h: Xen notification of xml files * * Copyright (C) 2011 Red Hat, Inc. * Copyright (C) 2008 VirtualIron diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index 8037b2e76a..603b71af38 100644 --- a/src/xen/xm_internal.c +++ b/src/xen/xm_internal.c @@ -1,5 +1,5 @@ /* - * xm_internal.h: helper routines for dealing with inactive domains + * xm_internal.c: helper routines for dealing with inactive domains * * Copyright (C) 2006-2007, 2009-2013 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange diff --git a/src/xenapi/xenapi_driver.h b/src/xenapi/xenapi_driver.h index 30a8f1e215..0925731f84 100644 --- a/src/xenapi/xenapi_driver.h +++ b/src/xenapi/xenapi_driver.h @@ -1,5 +1,5 @@ /* - * xenapi_driver.h.c: Xen API driver header file to be included in libvirt.c. + * xenapi_driver.h: Xen API driver header file to be included in libvirt.c. * Copyright (C) 2009, 2010 Citrix Ltd. * * This library is free software; you can redistribute it and/or diff --git a/tests/testutils.h b/tests/testutils.h index fa37246b48..e89492bf62 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -1,5 +1,5 @@ /* - * utils.c: test utils + * testutils.h: test utils * * Copyright (C) 2005, 2008-2013 Red Hat, Inc. * diff --git a/tools/virsh-interface.h b/tools/virsh-interface.h index 2544f7e98d..6272aabf5a 100644 --- a/tools/virsh-interface.h +++ b/tools/virsh-interface.h @@ -1,5 +1,5 @@ /* - * virsh-interface.c: Commands to manage host interface + * virsh-interface.h: Commands to manage host interface * * Copyright (C) 2005, 2007-2012 Red Hat, Inc. * diff --git a/tools/virsh-network.h b/tools/virsh-network.h index 7178fdea61..3beeeb9efc 100644 --- a/tools/virsh-network.h +++ b/tools/virsh-network.h @@ -1,5 +1,5 @@ /* - * virsh-network.c: Commands to manage network + * virsh-network.h: Commands to manage network * * Copyright (C) 2005, 2007-2012 Red Hat, Inc. * diff --git a/tools/virt-host-validate.c b/tools/virt-host-validate.c index d3cf19cbaa..a8c2075fde 100644 --- a/tools/virt-host-validate.c +++ b/tools/virt-host-validate.c @@ -1,5 +1,5 @@ /* - * virt-host-check.c: Sanity check a hypervisor host + * virt-host-validate.c: Sanity check a hypervisor host * * Copyright (C) 2012 Red Hat, Inc. *