Polytropon wrote:
On Tue, 08 Jan 2013 16:30:49 -0500, Fbsd8 wrote:
I can not get the return code from mtree to control
the displaying of a error message.

The mtree at the end of the script does function correctly
because I can tell from the printed output.

When mtree prints comments saying "extra" that means the directory being read does not match the specification file. return code should be Not equal to zero.

And when they do match IE: no mtree comments printed, that should be a return code of zero.

I tried 2 different ways to capture the return code to no joy.
What I am doing wrong?

#! /bin/sh
flavor="/a/mtree.std"
echo "flavor = ${flavor}"
/bin/cat  << EOF |
/set type=dir uname=root gname=wheel
.
etc     ignore
..
root    ignore
..
usr
home    ignore
..
local
etc     ignore
..
..
..
..
EOF

  mtree -d -u -p "${flavor}"  || \
    echo "Error invalid directories in flavor ${flavor}."

#mtree -d -p "${flavor}"
#[ $? -eq 0 ] || \
#  echo "Error invalid directories in flavor ${flavor}."
echo "return = $?"

It seems that returning 0 is correct in a case as you mentioned.
The manual at "man mtree" states:

EXIT STATUS
     The mtree utility exits 0 on success, and >0 if an error occurs.

Question: What _is_ an error here?

If you use the source Luke at /usr/src/usr.sbin/mtree/mtree.c,
you could find out what combination of options plus circumstances
found at runtime could trigger an exit status != 0.

The main() functions finishes with exit(status); where status
is either set by functions mtree_specspec() or mtree_verifyspec(),
or manually to 0 when -U is provided and MISMATCHEXIT (is 2) is
encountered.

Again from the manual:

     -u    Same as -U except a status of 2 is returned if the file hierarchy
           did not match the specification.

     -U    Modify the owner, group, permissions, and modification time of
           existing files to match the specification and create any missing
           directories or symbolic links.  User, group and permissions must
           all be specified for missing directories to be created.  Corrected
           mismatches are not considered errors.

However, you're not using -U, but -u, so the last sentence of
the description above should be relevant: No error per se,
even though the status code should be 2.




Well I just tested with -U -u together no joy.
Tested with -U no joy.

My read of the above is -u should cause a return code of 2 when the file hierarchy does not match the specification. I don't want -U because I am not modifying any content of the directory tree mtree is looking at.

I just don't get the point your trying to make.

Oh the other hand are you saying the script code is correct to capture the return code but using wrong options with mtree ?




_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to