=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/systat/engine.c,v retrieving revision 1.3 retrieving revision 1.4 diff -c -r1.3 -r1.4 *** src/usr.bin/systat/engine.c 2008/06/13 17:45:02 1.3 --- src/usr.bin/systat/engine.c 2008/07/22 03:00:23 1.4 *************** *** 1,4 **** ! /* $Id: engine.c,v 1.3 2008/06/13 17:45:02 canacar Exp $ */ /* * Copyright (c) 2001, 2007 Can Erkin Acar * --- 1,4 ---- ! /* $Id: engine.c,v 1.4 2008/07/22 03:00:23 canacar Exp $ */ /* * Copyright (c) 2001, 2007 Can Erkin Acar * *************** *** 691,696 **** --- 691,703 ---- size /= div; if (tbprintf("%lluG", size) <= len) goto ok; + if (size == 0) + goto err; + + tb_start(); + size /= div; + if (tbprintf("%lluT", size) <= len) + goto ok; err: print_fld_str(fld, "*"); *************** *** 705,710 **** --- 712,774 ---- print_fld_size(field_def *fld, u_int64_t size) { print_fld_sdiv(fld, size, 1024); + } + + void + print_fld_ssdiv(field_def *fld, int64_t size, int div) + { + int len; + + if (fld == NULL) + return; + + len = fld->width; + if (len < 1) + return; + + tb_start(); + if (tbprintf("%lld", size) <= len) + goto ok; + + tb_start(); + size /= div; + if (tbprintf("%lldK", size) <= len) + goto ok; + if (size == 0) + goto err; + + tb_start(); + size /= div; + if (tbprintf("%lldM", size) <= len) + goto ok; + if (size == 0) + goto err; + + tb_start(); + size /= div; + if (tbprintf("%lldG", size) <= len) + goto ok; + if (size == 0) + goto err; + + tb_start(); + size /= div; + if (tbprintf("%lldT", size) <= len) + goto ok; + + err: + print_fld_str(fld, "*"); + tb_end(); + return; + + ok: + print_fld_tb(fld); + } + + void + print_fld_ssize(field_def *fld, int64_t size) + { + print_fld_ssdiv(fld, size, 1024); } void