git: 9front

Download patch

ref: 941fd1d0b8ec8903635302d849f339d72f601fa2
parent: 42c466c2812510fbaa74fc25db150cc99ffa537b
parent: 2fe166155f40f53c877ac734216e98b286e1c997
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat Jun 8 19:54:47 EDT 2013

merge

--- a/sys/src/cmd/btc/dat.h
+++ b/sys/src/cmd/btc/dat.h
@@ -4,6 +4,7 @@
 enum
 {
 	TROOT,
+	TBLOCKS,
 	TADDR,
 	TADDRSUB,
 	TADDRTX,
--- a/sys/src/cmd/btc/fs.c
+++ b/sys/src/cmd/btc/fs.c
@@ -10,6 +10,7 @@
 static char *addrwalk(Fid *, char *, Qid *);
 char *balancestr(DirEntry *, Aux *);
 char *txstr(DirEntry *, Aux *);
+char *blocksstr(DirEntry *, Aux *);
 
 DirEntry entr[] = {
 	[TROOT] = {
@@ -16,7 +17,13 @@
 		.name = "",
 		.qid = {TROOT, 0, QTDIR},
 		.par = TROOT,
-		.sub = {TADDR},
+		.sub = {TADDR, TBLOCKS},
+	},
+	[TBLOCKS] = {
+		.name = "blocks",
+		.qid = {TBLOCKS, 0, 0},
+		.par = TROOT,
+		.str = blocksstr,
 	},
 	[TADDR] = {
 		.name = "addr",
--- a/sys/src/cmd/btc/httpfs.c
+++ b/sys/src/cmd/btc/httpfs.c
@@ -74,14 +74,16 @@
 char *
 balancestr(DirEntry *, Aux *a)
 {
-	char *s;
 	char buf[512];
 
 	sprint(buf, "http://blockchain.info/q/addressbalance/%s", a->addr);
-	s = graburl(buf);
-	if(s == nil)
-		return nil;
-	return s;
+	return graburl(buf);
+}
+
+char *
+blocksstr(DirEntry *, Aux *)
+{
+	return graburl("http://blockchain.info/q/getblockcount");
 }
 
 char *
--- /dev/null
+++ b/sys/src/cmd/btc/status
@@ -1,0 +1,31 @@
+#!/bin/rc
+wallet=$home/lib/wallet
+btc=/mnt/btc
+addr=`{awk ' { print $1 } ' < $wallet}
+last=`{cat $btc/blocks}
+cat $btc/addr/$addr/tx | sort +0n | uniq | tail -n 10 | awk '
+	BEGIN {
+		split("'^$"addr^'", addrs)
+		for(x in addrs)
+			my[addrs[x]] = 1
+		last='^$last^'
+	}
+	{
+		f = -1
+		bal = 0
+		for(i = 4; i <= NF; i++){
+			if($i == "|")
+				f = 1
+			else if(my[$i]){
+				i++
+				bal += f*$i
+			}else
+				i++
+		}
+		d = last - $3
+		printf "%s %+15.4f %c %s\n", $1, bal/1e8, (d > 9) ? 32 : (d + 48), $2
+	}
+'
+echo '================================================================================================'
+cat $btc/addr/$addr/balance | awk ' { a += $1 } END { printf "balance %18.4f BTC\n", a/1e8 } '
+
--