[Libguestfs] [PATCH] Improve augeas error reporting
Richard W.M. Jones
rjones at redhat.com
Thu May 13 14:14:34 UTC 2010
On Thu, May 13, 2010 at 02:34:03PM +0100, Matthew Booth wrote:
> Add a function to display more complete augeas errors if they occur. Update all
> uses of augeas in GuestOS::RedHat to use it for error reporting.
ACK, but:
> +sub _augeas_error
> +{
> + my $self = shift;
> + my ($err) = @_; # The original error message. We will emit this if there
> + # were no augeas errors.
> +
> + my $g = $self->{g};
> +
> + my $msg = "";
> +
> + foreach my $error ($g->aug_match('/augeas/files//error')) {
> + $error =~ /^\/augeas\/files(\/.*)\/error$/
> + or die("Unexpected return from aug_match: $error");
> + my $file = $1;
> +
> + my %detail;
> + foreach my $detail_path ($g->aug_match("$error//*")) {
> + $detail_path =~ /^$error\/(.*)$/
> + or die("Unexpected return from aug_match: $detail_path");
> + $detail{$1} = $g->aug_get($detail_path);
> + }
> +
> + if (defined($detail{message})) {
> + $msg .= __x("augeas error for {file}: {error}",
> + file => $file,
> + error => $detail{message})."\n";
> + } else {
> + $msg .= __x("augeas error for {file}",
> + file => $file)."\n";
> + }
> +
> + if (defined($detail{pos}) && defined($detail{line}) &&
> + defined($detail{char}))
> + {
> + $msg .= __x("error at line {line}, char {char}, file ".
> + "position {pos}",
> + line => $detail{line},
> + char => $detail{char},
> + pos => $detail{pos})."\n";
> + }
> +
> + if (defined($detail{lens})) {
> + $msg .= __x("augeas lens: {lens}",
> + lens => $detail{lens})."\n";
> + }
> + }
> +
> + chomp($msg);
> +
> + die(user_message($msg)) if (length($msg) > 0);
> + die($err);
> +}
If the Augeas functions in this function fail, then you might end up
losing information. How about wrapping most of this function in a big
eval?
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora
More information about the Libguestfs
mailing list