[Gnucash-changes] Better error reporting.
David Hampton
hampton at cvs.gnucash.org
Sat Apr 2 14:19:49 EST 2005
Log Message:
-----------
Better error reporting. Don't uppercase the symbol name.
Modified Files:
--------------
gnucash/src/quotes:
dump-finance-quote
Revision Data
-------------
Index: dump-finance-quote
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/quotes/dump-finance-quote,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lsrc/quotes/dump-finance-quote -Lsrc/quotes/dump-finance-quote -u -r1.4 -r1.5
--- src/quotes/dump-finance-quote
+++ src/quotes/dump-finance-quote
@@ -48,27 +48,51 @@
sub report {
my($itemname, $qh, $verbose) = @_;
my ($symbol, $date, $currency, $last, $nav, $price, $timezone, $keyname);
- my($success);
+ my($gccanuse);
+
+ # Sanity check returned results
+ if ((keys %$qh) < 1) {
+ printf("No results found for stock $itemname.\n");
+ return;
+ } else {
+ my ($stock, $attribute, %seen, $first);
+
+ foreach $keyname (sort keys %$qh) {
+ ($stock, $attribute) = split('\034', $keyname);
+ last if $stock eq $itemname;
+ $first = $stock if !defined $first;
+ $seen{$stock} = 1;
+ }
+
+ if ($stock ne $itemname) {
+ printf "\nNo results found for stock $itemname, but results were returned for\n";
+ printf "the stock(s) %s. ", join(", ", keys(%seen));
+ printf "Printing data for the first stock returned.\n\n";
+
+ # Print stats for the first stock returned.
+ $itemname = $first;
+ }
+ }
# Parse the quote fields and put warnings where necessary.
- $success = 1;
+ $gccanuse = 1;
if (defined($$qh{$itemname, "symbol"})) {
$symbol = $$qh{$itemname, "symbol"};
} else {
$symbol = "$itemname (deduced)";
- $success = 0;
+ $gccanuse = 0;
}
if (defined($$qh{$itemname, "date"})) {
$date = $$qh{$itemname, "date"};
} else {
$date = "** missing **";
- $success = 0;
+ $gccanuse = 0;
}
if (defined($$qh{$itemname, "currency"})) {
$currency = $$qh{$itemname, "currency"};
} else {
$currency = "** missing **";
- $success = 0;
+ $gccanuse = 0;
}
if ((!defined($$qh{$itemname, "last"})) &&
(!defined($$qh{$itemname, "nav" })) &&
@@ -76,7 +100,7 @@
$$qh{$itemname, "last"} = "**missing**";
$$qh{$itemname, "nav"} = "**missing**";
$$qh{$itemname, "price"} = "**missing**";
- $success = 0;
+ $gccanuse = 0;
} else {
$last = defined($$qh{$itemname, "last"})
? $$qh{$itemname, "last"} : "";
@@ -88,20 +112,6 @@
$timezone = defined($$qh{$itemname, "timezone"})
? $$qh{$itemname, "timezone"} : "";
- # Report failure
- if ($success == 0) {
- my ($stock, $key, %seen);
- printf("\nThe query for $itemname failed!!");
- foreach $keyname (sort keys %$qh) {
- ($stock, $key) = split('\034', $keyname);
- next if $stock eq $itemname;
- next if $seen{$stock} == 1;
- $seen{$stock} = 1;
- printf " Found data for stock(s) %s instead.\n", join(", ", keys(%seen));
- }
- printf "\n";
- }
-
# Dump gnucash recognized fields
printf "Finance::Quote fields Gnucash uses:\n";
printf " symbol: %-20s <=== required\n", $symbol;
@@ -112,6 +122,11 @@
printf " price: %-20s <=/ \n", $price;
printf " timezone: %-20s <=== optional\n", $timezone;
+ # Report failure
+ if ($gccanuse == 0) {
+ printf "\n** This stock quote cannot be used by gnucash!!\n\n";
+ }
+
# Dump all fields if requested
if ($verbose) {
printf "\nAll fields returned by Finance::Quote for stock $itemname\n\n";
@@ -148,7 +163,6 @@
while ($#ARGV >= 0) {
my $stock = shift;
my %quotes = $q->fetch($exchange, $stock);
- $stock =~ tr/a-z/A-Z/;
report($stock, \%quotes, $verbose);
if ($#ARGV >= 0) {
printf "=====\n\n";
More information about the gnucash-changes
mailing list