summaryrefslogtreecommitdiff
path: root/sys/src/cmd/btc
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2013-06-07 19:43:40 +0200
committeraiju <aiju@phicode.de>2013-06-07 19:43:40 +0200
commit1f52da20a2f87e99893c8ced132ea136e2b5410a (patch)
tree027ed2c09ce9829d4a7c094328d206107b7e4030 /sys/src/cmd/btc
parent4e81aab690a17910e221af2a7eeaf6f2309524ac (diff)
bitcoin stuff
Diffstat (limited to 'sys/src/cmd/btc')
-rw-r--r--sys/src/cmd/btc/dat.h1
-rw-r--r--sys/src/cmd/btc/fs.c9
-rw-r--r--sys/src/cmd/btc/httpfs.c12
-rwxr-xr-xsys/src/cmd/btc/status31
4 files changed, 47 insertions, 6 deletions
diff --git a/sys/src/cmd/btc/dat.h b/sys/src/cmd/btc/dat.h
index 4cdc1d259..cb5673d35 100644
--- a/sys/src/cmd/btc/dat.h
+++ b/sys/src/cmd/btc/dat.h
@@ -4,6 +4,7 @@ typedef struct DirEntry DirEntry;
enum
{
TROOT,
+ TBLOCKS,
TADDR,
TADDRSUB,
TADDRTX,
diff --git a/sys/src/cmd/btc/fs.c b/sys/src/cmd/btc/fs.c
index 31a69d9d0..c4509f1aa 100644
--- a/sys/src/cmd/btc/fs.c
+++ b/sys/src/cmd/btc/fs.c
@@ -10,13 +10,20 @@ Reqqueue *queue;
static char *addrwalk(Fid *, char *, Qid *);
char *balancestr(DirEntry *, Aux *);
char *txstr(DirEntry *, Aux *);
+char *blocksstr(DirEntry *, Aux *);
DirEntry entr[] = {
[TROOT] = {
.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",
diff --git a/sys/src/cmd/btc/httpfs.c b/sys/src/cmd/btc/httpfs.c
index 0222762e5..c29a39e31 100644
--- a/sys/src/cmd/btc/httpfs.c
+++ b/sys/src/cmd/btc/httpfs.c
@@ -74,14 +74,16 @@ parsetx(String *str, JSON *j, JSON *l)
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 *
diff --git a/sys/src/cmd/btc/status b/sys/src/cmd/btc/status
new file mode 100755
index 000000000..e98e35ea9
--- /dev/null
+++ b/sys/src/cmd/btc/status
@@ -0,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 } '
+