From a1f2f9faaed0d2829602d98940eecc3bf2f7c949 Mon Sep 17 00:00:00 2001 From: Richard Nyberg Date: Fri, 17 Feb 2006 21:03:02 +0000 Subject: [PATCH] Two changes to stat output: 1. Show the number of torrents with tracker errors on the total status line. 2. Show the torrent status character on the status line instead of the name line. This only has effect when the '-i' flag is given. --- cli/btcli.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/cli/btcli.c b/cli/btcli.c index bd66201..00c747f 100644 --- a/cli/btcli.c +++ b/cli/btcli.c @@ -44,31 +44,26 @@ handle_ipc_res(enum ipc_code code, const char *target) return code; } -void -print_state_name(struct tpstat *ts) +char +state_char(struct tpstat *ts) { - char c; switch (ts->state) { case T_STARTING: - c = '+'; - break; + return '+'; case T_ACTIVE: - c = ts->pieces_got == ts->torrent_pieces ? 'S' : 'L'; - break; + return ts->pieces_got == ts->torrent_pieces ? 'S' : 'L'; case T_STOPPING: - c = '-'; - break; + return '-'; default: - c = 'U'; - break; + return ' '; } - printf("%c. %s", c, ts->name); } void print_stat(struct tpstat *ts) { - printf("%5.1f%% %6.1fM %7.2fkB/s %6.1fM %7.2fkB/s %4u %5.1f%%", + printf("%c %5.1f%% %6.1fM %7.2fkB/s %6.1fM %7.2fkB/s %4u %5.1f%%", + state_char(ts), 100.0 * ts->content_got / ts->content_size, (double)ts->downloaded / (1 << 20), (double)ts->rate_down / (20 << 10), @@ -281,8 +276,8 @@ cmd_list(int argc, char **argv) if (handle_ipc_res(btpd_stat(ipc, &st), "list") != IPC_OK) exit(1); for (int i = 0; i < st->ntorrents; i++) { - print_state_name(&st->torrents[i]); - putchar('\n'); + struct tpstat *ts = &st->torrents[i]; + printf("%c. %s\n", state_char(ts), ts->name); } printf("%u torrent%s.\n", st->ntorrents, st->ntorrents == 1 ? "" : "s"); @@ -320,6 +315,7 @@ do_stat(int individual, int seconds, int hash_count, uint8_t (*hashes)[20]) struct tpstat tot; again: bzero(&tot, sizeof(tot)); + tot.state = -1; if (handle_ipc_res(btpd_stat(ipc, &st), "stat") != IPC_OK) exit(1); for (int i = 0; i < st->ntorrents; i++) { @@ -341,9 +337,10 @@ again: tot.torrent_pieces += cur->torrent_pieces; tot.content_got += cur->content_got; tot.content_size += cur->content_size; + if (cur->tr_errors > 0) + tot.tr_errors++; if (individual) { - print_state_name(cur); - printf(":\n"); + printf("%s:\n", cur->name); print_stat(cur); } }