2009-04-19 19:10:45 +04:00
#!/bin/sh
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
2012-07-27 02:58:02 +04:00
# You should have received a copy of the GNU Lesser General Public
2012-09-21 02:30:55 +04:00
# License along with this library. If not, see
2012-07-27 02:58:02 +04:00
# <http://www.gnu.org/licenses/>.
2009-04-19 19:10:45 +04:00
set -e
2013-08-20 02:26:41 +04:00
case $1 in
-h | --h | --he | --hel | --help)
cat <<EOF
Usage:
$0 XML-FILE [SCHEMA-NAME]
$0 OPTION
Options:
-h | --help Display program help
-V | --version Display program version
EOF
exit ;;
-V | --v | --ve | --ver | --vers | --versi | --versio | --version)
cat <<EOF
$0 (libvirt) @VERSION@
EOF
exit ;;
--) shift ;;
-*)
echo "$0: unrecognized option '$1'" >&2
exit 1 ;;
esac
2011-02-20 23:29:26 +03:00
XMLFILE="$1"
TYPE="$2"
2009-04-19 19:10:45 +04:00
if [ -z "$XMLFILE" ]; then
2013-08-20 02:26:41 +04:00
echo "syntax: $0 XMLFILE [TYPE]" >&2
2009-04-19 19:10:45 +04:00
exit 1
fi
if [ ! -f "$XMLFILE" ]; then
2013-08-20 02:26:41 +04:00
echo "$0: document $XMLFILE does not exist" >&2
2009-04-19 19:10:45 +04:00
exit 2
fi
if [ -z "$TYPE" ]; then
2011-02-20 23:29:26 +03:00
ROOT=`xmllint --stream --debug "$XMLFILE" 2>/dev/null | grep "^0 1 " | awk '{ print $3 }'`
case "$ROOT" in
2013-08-20 02:32:31 +04:00
*domainsnapshot*) # Must come first, since *domain* is a substring
TYPE="domainsnapshot"
;;
2009-04-19 19:10:45 +04:00
*domain*)
TYPE="domain"
;;
*network*)
TYPE="network"
;;
*pool*)
TYPE="storagepool"
;;
*volume*)
TYPE="storagevol"
;;
*capabilities*)
TYPE="capability"
;;
*device*)
TYPE="nodedev"
;;
2013-08-20 02:32:31 +04:00
*filter*)
TYPE="nwfilter"
;;
*secret*)
TYPE="secret"
;;
2013-09-11 07:47:14 +04:00
*interface*)
TYPE="interface"
;;
2009-04-19 19:10:45 +04:00
*)
2013-08-20 02:26:41 +04:00
echo "$0: cannot determine schema type for $XMLFILE" >&2
2009-04-19 19:10:45 +04:00
exit 3
esac
fi
build: use common .in replacement mechanism
We had several different styles of .in conversion in our Makefiles:
ALLCAPS, @ALLCAPS@, @lower@, ::lower::
Canonicalize on one form, to make it easier to copy and paste
between .in files.
Also, we were using some non-portable sed constructs: \@ is an
undefined escape sequence (it happens to be @ itself in GNU sed,
but POSIX allows it to mean something else), as well as risky
behavior (failure to consistently quote things means a space
in $(sysconfdir) could throw things off; also, Autoconf recommends
using | rather than , or ! in the s||| operator, because | has to
be quoted in shell and is therefore less likely to appear in file
names than , or !).
Fix all of these uses to follow the same syntax.
* daemon/libvirtd.8.in: Switch to @var@.
* tools/virt-xml-validate.in: Likewise.
* tools/virt-pki-validate.in: Likewise.
* src/locking/virtlockd.init.in: Likewise.
* daemon/Makefile.am: Prefer | over ! in sed.
(libvirtd.8): Prefer consistent substitution.
(libvirtd.init, libvirtd.service): Avoid non-portable sed.
* tools/Makefile.am (libvirt-guests.sh, libvirt-guests.init)
(libvirt-guests.service): Likewise.
(virt-xml-validate, virt-pki-validate, virt-sanlock-cleanup):
Prefer consistent capitalization.
* src/Makefile.am (virtlockd.init, virtlockd.service)
(virtlockd.socket): Prefer consistent substitution.
2013-01-05 00:35:04 +04:00
SCHEMA="@schemadir@/${TYPE}.rng"
2009-04-19 19:10:45 +04:00
if [ ! -f "$SCHEMA" ]; then
2013-08-20 02:26:41 +04:00
echo "$0: schema $SCHEMA does not exist" >&2
2009-04-19 19:10:45 +04:00
exit 4
fi
2011-02-20 23:29:26 +03:00
xmllint --noout --relaxng "$SCHEMA" "$XMLFILE"
2009-04-19 19:10:45 +04:00
2013-08-20 02:26:41 +04:00
exit