[libvirt] [PATCH] virt-xml-validate: Allow input to be read from stdin

Johannes Holmberg johannes.holmberg at dataductus.se
Tue May 21 07:35:58 UTC 2019


On Tue, 2019-05-21 at 07:36 +0200, Philipp Hahn wrote:
> Hello,
> 
> Some nits:
> 
> Am 20.05.19 um 13:57 schrieb Johannes Holmberg:
> > diff --git a/tools/virt-xml-validate.in b/tools/virt-xml-
> > validate.in
> > index 64aeaaaa33..2d2afb74ec 100644
> > --- a/tools/virt-xml-validate.in
> > +++ b/tools/virt-xml-validate.in
> > @@ -16,6 +16,16 @@
> >  
> >  set -e
> >  
> > +TMPFILE=
> > +
> > +cleanup() {
> > +  if [ $TMPFILE ]; then
> 
> Missing Quoting.
> Better also give "-n"
> 
> > +    rm -f $TMPFILE
> 
> Quoting
> 
> > +  fi
> > +}
> > +
> > +trap cleanup EXIT
> > +
> >  case $1 in
> 
> Not your fault, but also missing quoting.
> 
> >    -h | --h | --he | --hel | --help)
> >      cat <<EOF
> > @@ -34,7 +44,7 @@ $0 (libvirt) @VERSION@
> >  EOF
> >      exit ;;
> >    --) shift ;;
> > -  -*)
> > +  -?*)
> >      echo "$0: unrecognized option '$1'" >&2
> >      exit 1 ;;
> >  esac
> > @@ -42,18 +52,27 @@ esac
> >  XMLFILE="$1"
> >  TYPE="$2"
> >  
> > -if [ -z "$XMLFILE" ]; then
> > -  echo "syntax: $0 XMLFILE [TYPE]" >&2
> > -  exit 1
> > -fi
> > +if [ "$XMLFILE" = "-" ]; then
> > +    TMPFILE=`mktemp --tmpdir virt-xml.XXXX`> +    cat > $TMPFILE
> 
> Quoting
> 
> > +else
> > +  if [ -z "$XMLFILE" ]; then
> > +    echo "syntax: $0 XMLFILE [TYPE]" >&2
> > +    exit 1
> > +  fi
> >  
> > -if [ ! -f "$XMLFILE" ]; then
> > -  echo "$0: document $XMLFILE does not exist" >&2
> > -  exit 2
> > +  if [ ! -f "$XMLFILE" ]; then
> > +    echo "$0: document $XMLFILE does not exist" >&2
> > +    exit 2
> > +  fi
> >  fi
> >  
> >  if [ -z "$TYPE" ]; then
> > -  ROOT=`xmllint --stream --debug "$XMLFILE" 2>/dev/null | grep "^0
> > 1 " | awk '{ print $3 }'`
> > +  if [ $TMPFILE ]; then
> > +    ROOT=`xmllint --stream --debug - < "$TMPFILE" 2>/dev/null |
> > grep "^0 1 " | awk '{ print $3 }'`
> > +  else
> > +    ROOT=`xmllint --stream --debug "$XMLFILE" 2>/dev/null | grep
> > "^0 1 " | awk '{ print $3 }'`
> > +  fi
> >    case "$ROOT" in
> >       *domainsnapshot*) # Must come first, since *domain* is a
> > substring
> >          TYPE="domainsnapshot"
> > @@ -101,6 +120,9 @@ if [ ! -f "$SCHEMA" ]; then
> >    exit 4
> >  fi
> >  
> > -xmllint --noout --relaxng "$SCHEMA" "$XMLFILE"
> > -
> > +if [ $TMPFILE ]; then
> 
> Quoting
> "-n"
> 
> > +  xmllint --noout --relaxng "$SCHEMA" - < "$TMPFILE"
> > +else
> > +  xmllint --noout --relaxng "$SCHEMA" "$XMLFILE"
> > +fi
> >  exit

Good point(s). I can only imagine I skipped the quoting because TMPFILE
is known to contain a safe string, but that is a poor excuse really.
I'll post a v2 shortly.

 /Johannes





More information about the libvir-list mailing list