=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.255 retrieving revision 1.256 diff -c -r1.255 -r1.256 *** src/usr.bin/tmux/format.c 2020/05/16 16:02:24 1.255 --- src/usr.bin/tmux/format.c 2020/05/25 15:02:25 1.256 *************** *** 1,4 **** ! /* $OpenBSD: format.c,v 1.255 2020/05/16 16:02:24 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: format.c,v 1.256 2020/05/25 15:02:25 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott *************** *** 761,784 **** struct window_pane *wp = ft->wp; struct grid *gd; struct grid_line *gl; ! unsigned long long size; u_int i; if (wp == NULL) return; gd = wp->base.grid; ! size = 0; ! for (i = 0; i < gd->hsize; i++) { gl = grid_get_line(gd, i); size += gl->cellsize * sizeof *gl->celldata; size += gl->extdsize * sizeof *gl->extddata; } ! size += gd->hsize * sizeof *gl; ! xasprintf(&fe->value, "%llu", size); } /* Callback for pane_tabs. */ static void format_cb_pane_tabs(struct format_tree *ft, struct format_entry *fe) --- 761,808 ---- struct window_pane *wp = ft->wp; struct grid *gd; struct grid_line *gl; ! size_t size = 0; u_int i; if (wp == NULL) return; gd = wp->base.grid; ! for (i = 0; i < gd->hsize + gd->sy; i++) { gl = grid_get_line(gd, i); size += gl->cellsize * sizeof *gl->celldata; size += gl->extdsize * sizeof *gl->extddata; } ! size += (gd->hsize + gd->sy) * sizeof *gl; ! xasprintf(&fe->value, "%zu", size); } + /* Callback for history_all_bytes. */ + static void + format_cb_history_all_bytes(struct format_tree *ft, struct format_entry *fe) + { + struct window_pane *wp = ft->wp; + struct grid *gd; + struct grid_line *gl; + u_int i, lines, cells = 0, extended_cells = 0; + + if (wp == NULL) + return; + gd = wp->base.grid; + + lines = gd->hsize + gd->sy; + for (i = 0; i < lines; i++) { + gl = grid_get_line(gd, i); + cells += gl->cellsize; + extended_cells += gl->extdsize; + } + + xasprintf(&fe->value, "%u,%zu,%u,%zu,%u,%zu", lines, + lines * sizeof *gl, cells, cells * sizeof *gl->celldata, + extended_cells, extended_cells * sizeof *gl->extddata); + } + /* Callback for pane_tabs. */ static void format_cb_pane_tabs(struct format_tree *ft, struct format_entry *fe) *************** *** 2823,2828 **** --- 2847,2853 ---- format_add(ft, "history_size", "%u", gd->hsize); format_add(ft, "history_limit", "%u", gd->hlimit); format_add_cb(ft, "history_bytes", format_cb_history_bytes); + format_add_cb(ft, "history_all_bytes", format_cb_history_all_bytes); format_add(ft, "pane_written", "%zu", wp->written); format_add(ft, "pane_skipped", "%zu", wp->skipped);