1*cfc0a495SScott Long /* $NetBSD: progressbar.c,v 1.21 2009/04/12 10:18:52 lukem Exp $ */ 2*cfc0a495SScott Long 3*cfc0a495SScott Long /*- 4*cfc0a495SScott Long * Copyright (c) 1997-2012 The NetBSD Foundation, Inc. 5*cfc0a495SScott Long * All rights reserved. 6*cfc0a495SScott Long * 7*cfc0a495SScott Long * This code is derived from software contributed to The NetBSD Foundation 8*cfc0a495SScott Long * by Luke Mewburn. 9*cfc0a495SScott Long * 10*cfc0a495SScott Long * Redistribution and use in source and binary forms, with or without 11*cfc0a495SScott Long * modification, are permitted provided that the following conditions 12*cfc0a495SScott Long * are met: 13*cfc0a495SScott Long * 1. Redistributions of source code must retain the above copyright 14*cfc0a495SScott Long * notice, this list of conditions and the following disclaimer. 15*cfc0a495SScott Long * 2. Redistributions in binary form must reproduce the above copyright 16*cfc0a495SScott Long * notice, this list of conditions and the following disclaimer in the 17*cfc0a495SScott Long * documentation and/or other materials provided with the distribution. 18*cfc0a495SScott Long * 19*cfc0a495SScott Long * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20*cfc0a495SScott Long * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21*cfc0a495SScott Long * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22*cfc0a495SScott Long * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23*cfc0a495SScott Long * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24*cfc0a495SScott Long * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25*cfc0a495SScott Long * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26*cfc0a495SScott Long * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27*cfc0a495SScott Long * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28*cfc0a495SScott Long * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29*cfc0a495SScott Long * POSSIBILITY OF SUCH DAMAGE. 30*cfc0a495SScott Long * 31*cfc0a495SScott Long * $FreeBSD$ 32*cfc0a495SScott Long */ 33*cfc0a495SScott Long 34*cfc0a495SScott Long #ifndef PROGRESS_H_ 35*cfc0a495SScott Long #define PROGRESS_H_ 20100228 36*cfc0a495SScott Long 37*cfc0a495SScott Long #include <sys/types.h> 38*cfc0a495SScott Long 39*cfc0a495SScott Long #include <inttypes.h> 40*cfc0a495SScott Long 41*cfc0a495SScott Long /* structure used to display a progress meter */ 42*cfc0a495SScott Long typedef struct progress_t { 43*cfc0a495SScott Long char *prefix; /* any prefix explanation */ 44*cfc0a495SScott Long uint64_t size; /* total of bytes/units to be counted */ 45*cfc0a495SScott Long uint64_t done; /* number of units counted to date */ 46*cfc0a495SScott Long uint64_t percent; /* cache the percentage complete */ 47*cfc0a495SScott Long time_t start; /* time we started this */ 48*cfc0a495SScott Long time_t now; /* time now */ 49*cfc0a495SScott Long time_t eta; /* estimated # of secs until completion */ 50*cfc0a495SScott Long int64_t elapsed; /* cached # of elapsed seconds */ 51*cfc0a495SScott Long int32_t ttywidth; /* width of tty in columns */ 52*cfc0a495SScott Long } progress_t; 53*cfc0a495SScott Long 54*cfc0a495SScott Long int progress_init(progress_t */*meter*/, const char */*prefix*/, uint64_t /*size*/); 55*cfc0a495SScott Long int progress_update(progress_t */*meter*/, uint64_t /*done*/); 56*cfc0a495SScott Long int progress_draw(progress_t */*meter*/); 57*cfc0a495SScott Long int progress_reset_size(progress_t */*meter*/, uint64_t /*size*/); 58*cfc0a495SScott Long int progress_complete(progress_t */*meter*/, uint64_t /*done*/); 59*cfc0a495SScott Long 60*cfc0a495SScott Long #endif 61