1*cc361f65SGavin Atkinson /* $NetBSD: progressbar.h,v 1.9 2009/05/20 12:53:47 lukem Exp $ */ 2*cc361f65SGavin Atkinson /* from NetBSD: progressbar.h,v 1.8 2009/04/12 10:18:52 lukem Exp */ 3f982db4aSGavin Atkinson 4f982db4aSGavin Atkinson /*- 5*cc361f65SGavin Atkinson * Copyright (c) 1996-2009 The NetBSD Foundation, Inc. 6f982db4aSGavin Atkinson * All rights reserved. 7f982db4aSGavin Atkinson * 8f982db4aSGavin Atkinson * This code is derived from software contributed to The NetBSD Foundation 9f982db4aSGavin Atkinson * by Luke Mewburn. 10f982db4aSGavin Atkinson * 11f982db4aSGavin Atkinson * Redistribution and use in source and binary forms, with or without 12f982db4aSGavin Atkinson * modification, are permitted provided that the following conditions 13f982db4aSGavin Atkinson * are met: 14f982db4aSGavin Atkinson * 1. Redistributions of source code must retain the above copyright 15f982db4aSGavin Atkinson * notice, this list of conditions and the following disclaimer. 16f982db4aSGavin Atkinson * 2. Redistributions in binary form must reproduce the above copyright 17f982db4aSGavin Atkinson * notice, this list of conditions and the following disclaimer in the 18f982db4aSGavin Atkinson * documentation and/or other materials provided with the distribution. 19f982db4aSGavin Atkinson * 20f982db4aSGavin Atkinson * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21f982db4aSGavin Atkinson * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22f982db4aSGavin Atkinson * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23f982db4aSGavin Atkinson * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24f982db4aSGavin Atkinson * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25f982db4aSGavin Atkinson * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26f982db4aSGavin Atkinson * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27f982db4aSGavin Atkinson * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28f982db4aSGavin Atkinson * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29f982db4aSGavin Atkinson * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30f982db4aSGavin Atkinson * POSSIBILITY OF SUCH DAMAGE. 31f982db4aSGavin Atkinson */ 32f982db4aSGavin Atkinson 33f982db4aSGavin Atkinson #ifndef STANDALONE_PROGRESS 34f982db4aSGavin Atkinson #include <setjmp.h> 35f982db4aSGavin Atkinson #endif /* !STANDALONE_PROGRESS */ 36f982db4aSGavin Atkinson 37f982db4aSGavin Atkinson #ifndef GLOBAL 38f982db4aSGavin Atkinson #define GLOBAL extern 39f982db4aSGavin Atkinson #endif 40f982db4aSGavin Atkinson 41f982db4aSGavin Atkinson 42f982db4aSGavin Atkinson #define STALLTIME 5 /* # of seconds of no xfer before "stalling" */ 43f982db4aSGavin Atkinson 44f982db4aSGavin Atkinson typedef void (*sigfunc)(int); 45f982db4aSGavin Atkinson 46f982db4aSGavin Atkinson 47f982db4aSGavin Atkinson GLOBAL FILE *ttyout; /* stdout, or stderr if retrieving to stdout */ 48f982db4aSGavin Atkinson 49f982db4aSGavin Atkinson GLOBAL int progress; /* display transfer progress bar */ 50f982db4aSGavin Atkinson GLOBAL int ttywidth; /* width of tty */ 51f982db4aSGavin Atkinson 52f982db4aSGavin Atkinson GLOBAL off_t bytes; /* current # of bytes read */ 53f982db4aSGavin Atkinson GLOBAL off_t filesize; /* size of file being transferred */ 54f982db4aSGavin Atkinson GLOBAL off_t restart_point; /* offset to restart transfer */ 55f982db4aSGavin Atkinson GLOBAL char *prefix; /* Text written left of progress bar */ 56f982db4aSGavin Atkinson 57f982db4aSGavin Atkinson 58f982db4aSGavin Atkinson #ifndef STANDALONE_PROGRESS 59f982db4aSGavin Atkinson GLOBAL int fromatty; /* input is from a terminal */ 60f982db4aSGavin Atkinson GLOBAL int verbose; /* print messages coming back from server */ 61f982db4aSGavin Atkinson GLOBAL int quit_time; /* maximum time to wait if stalled */ 62f982db4aSGavin Atkinson 63*cc361f65SGavin Atkinson GLOBAL const char *direction; /* direction transfer is occurring */ 64f982db4aSGavin Atkinson 65f982db4aSGavin Atkinson GLOBAL sigjmp_buf toplevel; /* non-local goto stuff for cmd scanner */ 66f982db4aSGavin Atkinson #endif /* !STANDALONE_PROGRESS */ 67f982db4aSGavin Atkinson 68f982db4aSGavin Atkinson int foregroundproc(void); 69f982db4aSGavin Atkinson void alarmtimer(int); 70f982db4aSGavin Atkinson void progressmeter(int); 71f982db4aSGavin Atkinson sigfunc xsignal(int, sigfunc); 72f982db4aSGavin Atkinson sigfunc xsignal_restart(int, sigfunc, int); 73f982db4aSGavin Atkinson 74f982db4aSGavin Atkinson #ifndef STANDALONE_PROGRESS 75f982db4aSGavin Atkinson void psummary(int); 76f982db4aSGavin Atkinson void ptransfer(int); 77f982db4aSGavin Atkinson #endif /* !STANDALONE_PROGRESS */ 78f982db4aSGavin Atkinson 79f982db4aSGavin Atkinson #ifdef NO_LONG_LONG 80f982db4aSGavin Atkinson # define LLF "%ld" 81f982db4aSGavin Atkinson # define LLFP(x) "%" x "ld" 82f982db4aSGavin Atkinson # define LLT long 83f982db4aSGavin Atkinson # define ULLF "%lu" 84f982db4aSGavin Atkinson # define ULLFP(x) "%" x "lu" 85f982db4aSGavin Atkinson # define ULLT unsigned long 86f982db4aSGavin Atkinson #else 87*cc361f65SGavin Atkinson #if defined(HAVE_PRINTF_QD) 88*cc361f65SGavin Atkinson # define LLF "%qd" 89*cc361f65SGavin Atkinson # define LLFP(x) "%" x "qd" 90*cc361f65SGavin Atkinson # define LLT long long 91*cc361f65SGavin Atkinson # define ULLF "%qu" 92*cc361f65SGavin Atkinson # define ULLFP(x) "%" x "qu" 93*cc361f65SGavin Atkinson # define ULLT unsigned long long 94*cc361f65SGavin Atkinson #else /* !defined(HAVE_PRINTF_QD) */ 95f982db4aSGavin Atkinson # define LLF "%lld" 96f982db4aSGavin Atkinson # define LLFP(x) "%" x "lld" 97f982db4aSGavin Atkinson # define LLT long long 98f982db4aSGavin Atkinson # define ULLF "%llu" 99f982db4aSGavin Atkinson # define ULLFP(x) "%" x "llu" 100f982db4aSGavin Atkinson # define ULLT unsigned long long 101*cc361f65SGavin Atkinson #endif /* !defined(HAVE_PRINTF_QD) */ 102f982db4aSGavin Atkinson #endif 103