30 KiB
30 KiB
UNRELEASED
- feature: allow --format to include "%nA" more than once, with different "n" valeus (#122)
- fix: add configure script fallback for --remote check when cross-compiling (#120)
- fix: allow extra-display to be changed by --remote (#123)
1.9.7 - 2 December 2024
- feature: new --extra-display option to update window and process titles (#3, #4)
- fix: correct failure to report file positions in --watchfd (#118)
- i18n: Russian translations added
- cleanup: tests added for --watchfd (#10)
- cleanup: worked around file descriptor leak false positives in valgrind 3.23 (#97)
- cleanup: cleared all shellcheck warnings in the test scripts
- cleanup: check at compile-time whether --remote is going to be usable (#119)
1.9.0 - 15 October 2024
- feature: new --store-and-forward option to read input to a file first, then write it to the output (#100)
- feature: new --stats option to show transfer stats at the end, like "
ping" (#49) - feature: --rate can now be used with --numeric (#17)
- feature: --gauge with --progress to show rate gauge when size is unknown (#46)
- i18n: comprehensive German translations update
- i18n: comprehensive Polish translations update
- i18n: complete Turkish translations added
- i18n: complete Czech translations added
- i18n: updates to French translations
- fix: resume stopped pipelines when running in the background (part of #56)
- fix: inspect the output pipe buffer to give a more accurate progress indicator of how much the next command has consumed
- fix: prefix completion time (--fineta) with FIN rather than ETA (#43)
- fix: surround average rate (--average-rate) with brackets rather than square brackets
- fix: correct a memory leak in --watchfd PID
- fix: make --direct-io work correctly with --output instead of assuming stdout
- fix: call
posix_fadvise()on every input, not just the first one - fix: write UTC timestamps in debugging mode to avoid lockups in signal handlers
- security: added a signed MANIFEST file to releases
- cleanup: removed TODO.md, since it's just an outdated copy of the issue tracker
- cleanup: re-ordered structure members to reduce padding
- cleanup: improved readability of SIGTTOU handling code
- cleanup: refactored to separate display, transfer, and calculation more cleanly
- cleanup: instead of moving stderr when backgrounded, set a suspend-output flag
1.8.14 - 7 September 2024
1.8.13 - 18 August 2024
- feature: when using --size @FILE, FILE can be a block device, and its size will be used (pull request #94) supplied by alexanderperlis
1.8.12 - 18 July 2024
- fix: correct the detection of output block device size that was broken in 1.8.10 (#91)
- fix: do not treat a zero/interrupted write as an end of file (pull requests #92 and #93)
1.8.10 - 15 June 2024
- feature: new --output option to write to a file instead of standard output (pull request #90) supplied by xmort
1.8.9 - 21 April 2024
- feature: new --si option to display and interpret size suffixes in multiples of 1000 rather than 1024 (pull request #85) supplied by kevinruddy
- fix: continue producing progress output when the output is blocking writes (#34, #86, #87)
- fix: honour the TMPDIR / TMP environment variables again, rather than hard-coding "
/tmp", when using a terminal lock file (originally removed in 1.8.0) (#88) - i18n: corrections and missing strings added to French translations (pull request #83) supplied by Thomas Bertels
1.8.5 - 19 November 2023
- fix: corrected percentage formatting so it doesn't jump from 2 to 3 characters wide at 100% (#80)
- fix: replaced --remote mechanism, using a temporary file instead of SysV IPC, so it can work reliably even when there are multiple PV instances
- fix: corrected compilation failure when without IPC support
- security: addressed all issues highlighted by the software auditing tools "
splint" and "flawfinder" (see "make analyse") (#77) - cleanup: compilation warnings fixed on non-IPC and MacOS systems
1.8.0 - 24 September 2023
Features
- feature: new --discard option to discard input as if writing to /dev/null (#42)
- feature: new --error-skip-block option to make --skip-errors skip whole blocks (#37)
- feature: use
posix_fadvise()likecat(1) does, to improve efficiency (#39) - feature: new --enable-static option to "
configure" for static builds (#75)
Security
- security: with --pidfile, write to a temporary file and rename it into place, to improve security
- security: keep self-contained copies of name and format string in PV internal state for memory safety
- security: ignore TMP / TMPDIR environment variables when using a terminal lock file
Fixes
- fix: only report errors about missing files when starting to transfer from them, not while calculating size, and behave more like
cat(1) by skipping them and moving on - fix: auto-calculate total line count with --line-mode when all inputs are regular files
- fix: use
clock_gettime()in ETA calculation to cope with machine suspend/resume (#13) - fix: if --width or --height were provided, do not change them when the window size changes (#36)
- fix: when a file descriptor position in --watchfd moves backwards, show the rate using the correct prefix (#41)
- fix: rewrite terminal state save/restore so state is not intermittently garbled on exit when using --cursor (#20), (#24)
Cleanups
- cleanup: addressed many potential issues highlighted by the software auditing tools "
splint" and "flawfinder" (see new target "make analyse") - cleanup: switched the build system to GNU Automake
- cleanup: replaced the test harness with the one native to GNU Automake
- cleanup: added a test for terminal width detection to "
make check" - cleanup: added a test to "
make check" to ensure that "make install" installs everything expected - cleanup: replaced AC_HEADER_TIOCGWINSZ with AC_CHECK_HEADERS(sys/ioctl.h) for better MacOS compatibility (#74)
- cleanup: with --sync, call
fsync()instead offdatasync()on incapable systems (#73) - cleanup: the manual is now a static file instead of needing to be built with "
configure"
Dropped items
- dropped: dropped support for --enable-static-nls
- dropped: removed the Linux Software Map file, as the LSM project appears to be long dead
- dropped: will no longer publish to SourceForge as it has a chequered history and is unnecessary
- dropped: removed project from GitHub and moved to Codeberg - see "Give Up GitHub"
Other items
- licensing change from Artistic 2.0 to GPLv3+
1.7.24 - 30 July 2023
- fix: correct terminal size detection, broken in 1.7.17 by the configuration script rewrite (#72)
- security: removed DEBUG environment variable in debug mode, added --debug instead
- cleanup: added "
make analyse" to run "splint" and "flawfinder" on all source files - cleanup: corrected detection of boolean capability
- cleanup: word wrapping of --help output is now multi-byte locale aware
- cleanup: adjusted "
indent" rules to line length of 120 and reformatted code
1.7.18 - 28 July 2023
- fix: language file installation had been broken by the configuration script rewrite
1.7.17 - 27 July 2023
- feature: new --sync option to flush cache to disk after every write (related to #6, to improve accuracy when writing to slow disks)
- feature: new --direct-io option to bypass cache - implements #29 "Option to enable O_DIRECT" - requested by Romain Kang, Jacek Wielemborek
- fix: correct byte prefix size to 2 spaces in rate display, so progress display size remains constant at low transfer rates
- cleanup: rewrote
configure.inas per suggestions in newer "autoconf" manuals - cleanup: replaced
header.inwith one generated by "autoheader", moving custom logic to a separate header file "config-aux.h" - cleanup: added copyright notice to all source files as per GNU standards
- cleanup: changed --version output to conform to GNU standards
- cleanup: replaced backticks with
$()in all shell scripts that did not come from elsewhere, as backticks are deprecated and harder to read - cleanup: improved the output formatting of "
make test" - cleanup: extended the "
make test" mechanism to allow certain tests to be skipped on platforms that cannot support them - cleanup: skip the "pipe" test (for SIGPIPE) if GNU "
head" is not available, so that "make test" on stock OpenBSD 7.3 works - cleanup: added a lot more tests to "
make test" - cleanup: replace all calls to
sprintf()andsnprintf()with a new wrapper functionpv_snprintf()to improve security and compatibility - cleanup: replace all calls to
strcat()with a wrapperpv_strlcat()to improve security and compatibility - cleanup: replace all
write()calls to the terminal with a wrapperpv_write_retry()for consistency - cleanup: tidy up and fix compilation warning in --watchfd code
- cleanup: rewrote all local shell scripts to pass analysis by ShellCheck
1.7.0 - 17 July 2023
- dropped: support for Red Hat Enterprise Linux and its derivatives has been dropped; removed the RPM spec file, and will no longer build binaries
- feature: the --size option now accepts "
@filename" to use the size of another file (pull request #57 supplied by Dave Beckett) - feature: the --watchfd option is now available on OS X (pull request #60 supplied by christoph-zededa)
- feature: new --bits option to show bit count instead of byte count (adapted from pull request #63 supplied by Nick Black)
- feature: new --average-rate-window option, to set the window over which the average rate is calculated, also used for ETA (modified from pull request #65 supplied by lemonsqueeze)
- feature: the --watchfd option will now show relative filenames, if they are under the current directory (pull request #66 supplied by ikasty)
- fix: correction to
pv_in_foreground()to behave as its comment block says it should, when not on a terminal - corrects #19 "No output in Arch Linux initcpio after 1.6.6", #31 "No output written from inside zsh <() construct", #55 "pv Stopped Working in the Background" (pull request #64 supplied by Michael Weiß) - fix: workaround for OS X 11 behaviour in configure script regarding stat64 at compile time (pull request #57 supplied by Dave Beckett)
- fix: workaround for macOS equivalence of stat to stat64 - patches from Filippo Valsorda and Demitri Muna, correcting #33 "Fix compilation problems due to
stat64()on Apple Silicon" - fix: add burst rate limit to transfer, so rate limits are not broken by bursty traffic (pull request #62 supplied by Volodymyr Bychkovyak)
- fix: corrected --force option so it will still output progress when not in the same process group as the owner of the terminal - corrects #23 "No output with "-f" when run in background after 1.6.6" and helps to correct #31 "No output written from inside zsh <() construct"
- fix: corrected elapsed time display to show as D:HH:MM:SS after 1 day, like the ETA does - corrects #16 "Show days in same format in ETA as in elapsed time"
- fix: corrected bug where percentages went down after 100% when in --numeric mode with a --size that was too small - corrects #26 "Correct "-n" behaviour when going past 100% of "-s" size"
- i18n: recoded Polish translation file to UTF-8
- i18n: removed inaccurate fuzzy translation matches
- docs: moved all open issues into GitHub and updated the TODO list
- docs: renamed README to README.md and altered it to Markdown format
- docs: moved contributors from the README to docs/ACKNOWLEDGEMENTS.md
- docs: moved TODO to TODO.md and altered it to Markdown format
- docs: moved NEWS to NEWS.md, converted it to UTF-8, and altered it to Markdown format
1.6.20 - 12 September 2021
- fix: add missing
stddef.hinclude tonumber.c(Sam James)
1.6.19 - 5 September 2021
- fix: starting pv in the background no longer immediately stops unless the transfer is to/from the terminal (Andriy Gapon, Jonathan Elchison)
- fix: using -B, -A, or -T now switches on -C implicitly (Johannes Gerer, André Stapf)
- fix: AIX build fixes (Peter Korsgaard)
- i18n: updated German --help translations (Richard Fonfara)
- i18n: switched to UTF-8 encoding, added missing translations (de,fr,pt)
- docs: new "common switches" manual section (Jacek Wielemborek)
- docs: use placeholder instead of
/dev/sdain the manual (Pranav Peshwe) - docs: mention MacOS pipes and -B 1024 in the manual (Jan Venekamp)
- docs: correct shell in
autoconf/scripts/index.sh(Juan Picca) - cleanup: various compiler warnings cleaned up
Full changelog is below:
- (r181) added common switches section to manual (Jacek Wielemborek)
- (r184) use placeholder instead of /dev/sda in the manual (Pranav Peshwe)
- (r185) replace ash with sh in autoconf/scripts/index.sh (Juan Picca)
- (r185) added note to manual about -B 1024 in MacOS pipes (Jan Venekamp)
- (r185) fix AIX config check when the CWD contains "yes" (Peter Korsgaard)
- (r189) (#1556) updated German --help translations (Richard Fonfara)
- (r189) updated missing German translations and changed to UTF-8 encoding
- (r191) updated missing French translations and changed to UTF-8 encoding
- (r193) updated missing Portuguese translations, changed to UTF-8 encoding
- (r196) (#1563) using -B, -A, or -T now switches on -C implicitly (Johannes Gerer, André Stapf)
- (r199) fixed numerous compiler warnings in newer GCC versions
- (r200,205) fixed bug where "
pv /dev/zero >/dev/null &" stopped immediately (Jonathan Elchison, Andriy Gapon) - (r203,205) marked unused arguments with GCC unused attribute, started using boolean data type for flags, corrected more compiler warnings
1.6.6 - 30 June 2017
- (r161) use
%lluinstead of%Lufor better compatibility (Eric A. Borisch) - (r162) (#1532) fix target buffer size (-B) being ignored (AndCycle, Ilya Basin, Antoine Beaupré)
- (r164) cap read/write sizes, and check elapsed time during read/write cycles, to avoid display hangs with large buffers or slow media; also remove
select()call from repeated_write function as it slows the transfer down and the wrappingalarm()means it is unnecessary - (r169) (#1477) use alternate form for transfer counter, such that 13GB is shown as 13.0GB so it's the same width as 13.1GB (André Stapf)
- (r171) cleanup: units corrections in man page, of the form kb -> KiB
- (r175) report error in -d if process fd directory is unreadable, or if process disappears before we start the main loop (Jacek Wielemborek)
1.6.0 - 15 March 2015
- fix lstat64 support when unavailable - separate patches supplied by Ganael Laplanche and Peter Korsgaard
- (#1506) new option -D / --delay-start to only show bar after N seconds (Damon Harper)
- new option --fineta / -I to show ETA as time of day rather than time remaining - patch supplied by Erkki Seppälä (r147)
- (#1509) change ETA (--eta / -e) so that days are given if the hours remaining are 24 or more (Jacek Wielemborek)
- (#1499) repeat read and write attempts on partial buffer fill/empty to work around post-signal transfer rate drop reported by Ralf Ramsauer
- (#1507) do not try to calculate total size in line mode, due to bug reported by Jacek Wielemborek and Michiel Van Herwegen
- cleanup: removed defunct RATS comments and unnecessary copyright notices
- clean up displayed lines when using --watchfd PID, when PID exits
- output errors on a new line to avoid overwriting transfer bar
1.5.7 - 26 August 2014
- show KiB instead of incorrect kiB (Debian bug #706175)
- (#1284) do not gzip man page, for non-Linux OSes (Bob Friesenhahn)
- work around "awk" bug in
tests/016-numeric-timerin decimal "," locales - fix "
make rpm" and "make srpm", extend "make release" to sign releases
1.5.3 - 4 May 2014
- remove SPLICE_F_NONBLOCK to fix problem with slow
splice()(Jan Seda)
1.5.2 - 10 February 2014
- allow --watchfd to look at block devices
- let --watchfd PID:FD work with --size N
- moved contributors out of the manual as the list was too long (NB everyone is still listed in the README and always will be)
1.5.1 - 23 January 2014
- new option --watchfd - suggested by Jacek Wielemborek and "fdwatch"
- use non-block flag with
splice() - new display option --buffer-percent, suggested by Kim Krecht
- new display option --last-written, suggested by Kim Krecht
- new transfer option --no-splice
- fix for minor bug which dropped display elements after one empty one
- fix for single fd leak on exit (Cristian Ciupitu)
1.4.12 - 5 August 2013
- new option --null - patch supplied by Zing Shishak
- AIX build fix (add "
-lc128") - with help from Pawel Piatek - AIX -c fixes - with help from Pawel Piatek
- SCO build fix (
po2table.sh) - reported by Wouter Pronk - test scripts fix for older distributions - patch from Bryan Dongray
- fix for
splice()not using stdin - patch from Zev Weiss
1.4.6 - 22 January 2013
- added patch from Pawel Piatek to omit O_NOFOLLOW in AIX
1.4.5 - 10 January 2013
- updated manual page to show known problem with -R on Cygwin
1.4.4 - 11 December 2012
- added debugging, see "
pv -h" whenconfigureis run with --enable-debugging - rewrote cursor positioning code used when IPC is unavailable (Cygwin)
- fixed cursor positioning cursor read answerback problem (Cygwin/Solaris)
- fixed bug causing crash when progress displayed with too-small terminal
1.4.0 - 6 December 2012
- new option --skip-errors commissioned by Jim Salter
- if stdout is a block device, and we don't know the total size, use the size of that block device as the total (Peter Samuelson)
- new option --stop-at-size to stop after --size bytes
- report correct filename on read errors
- fix use-after-free bug in remote PID cleanup code
- refactored large chunks of code to make it more readable and to replace most static variables with a state structure
1.3.9 - 5 November 2012
- allow --format parameters to be sent with --remote
- configure option --disable-ipc
- added tests for --numeric with --timer and --bytes
- added tests for --remote
1.3.8 - 29 October 2012
- new --pidfile option to save process ID to a file
- integrated patch for --numeric with --timer and --bytes (Sami Liedes)
- removed signalling from --remote to prevent accidental process kills
- new --format option (originally Vladimir Pal / Vladimir Ermakov)
1.3.4 - 27 June 2012
- new --disable-splice configure script option
- fixed line mode size count with multiple files (Moritz Barsnick)
- fixes for AIX core dumps (Pawel Piatek)
1.3.1 - 9 June 2012
- do not use
splice()if the write buffer is not empty (Thomas Rachel) - added test 15 (pipe transfers), and new test script
1.3.0 - 5 June 2012
- added Tiger build patch from Olle Jonsson
- fix 1024-boundary display garble (Debian bug #586763)
- use
splice(2) where available (Debian bug #601683) - added known bugs section of the manual page
- fixed average rate test, 12 (Andrew Macheret)
- use IEEE1541 units (Thomas Rachel)
- bug with rate limit under 10 fixed (Henry Precheur)
- speed up PV line mode (patch: Guillaume Marcais)
- remove
LD=ldfromvars.mkto fix cross-compilation (paintitgray/PV#1291)
1.2.0 - 14 December 2010
- integrated improved SI prefixes and --average-rate (Henry Gebhardt)
- return nonzero if exiting due to SIGTERM (Martin Baum)
- patch from Phil Rutschman to restore terminal properly on exit
- fix i18n especially for --help (Sebastian Kayser)
- refactored
pv_display - we now have a coherent, documented, exit status
- modified pipe test and new cksum test from Sebastian Kayser
- default CFLAGS to just "
-O" for non-GCC (Kjetil Torgrim Homme) - LFS compile fix for OS X 10.4 (Alexandre de Verteuil)
- remove DESTDIR
/suffix (Sam Nelson, Daniel Pape) - fixed potential NULL deref in transfer (Elias Pipping / LLVM/Clang)
1.1.4 - 6 March 2008
- patch from Elias Pipping correcting compilation failure on Darwin 9
- patch from Patrick Collison correcting similar problems on OS X
- trap SIGINT / SIGHUP / SIGTERM so we clean up IPCs on exit (Laszlo Ersek)
- abort if numeric option, eg -L, has non-numeric value (Boris Lohner)
1.1.0 - 30 August 2007
- new option --remote (-R) to control an already-running process
- new option --line-mode (-l) to count lines instead of bytes
- fix for -L to be less resource intensive
- fix for input/output equivalence check on Mac OS X
- fix for size calculation in pipelines on Mac OS X
- fixed "
make uninstall" - removed "
/debian" directory at request of new Debian maintainer
1.0.1 - 4 August 2007
- licensing change from Artistic to Artistic 2.0
- removed the -l / --license option
1.0.0 - 2 August 2007
- act more like "
cat" - just skip unreadable files, don't abort - removed text version of manual page, and obsolete Info file generation
- code cleanup and separation of PV internals from CLI front-end
0.9.9 - 5 February 2007
- new option --buffer-size (-B) suggested by Mark Tomich
- build fix: HP/UX largefile compile fix from Timo Savinen
- maintain better buffer filling during transfers
- workaround: "
pv /dev/zero | dd bs=1M count=1k" bug (reported by Gert Menke) - dropped support for the Texinfo manual
0.9.6 - 27 February 2006
- bugfix:
key_tincompatibility with Cygwin - bugfix: interval (-i) parameter parses numbers after decimal point
- build fix: use static NLS if
msgfmtis unavailable - on the final update, blank out the now-zero ETA
0.9.2 - 1 September 2005
- Daniel Roethlisberger patch: use lockfiles if terminal locking fails
0.9.1 - 16 June 2005
- minor RPM spec file fix for Fedora Core 4
0.9.0 - 15 November 2004
- minor NLS bugfix
0.8.9 - 6 November 2004
- decimal values now accepted for rate and size, eg -L 1.23M
- code cleanup
- developers: "
make help" now lists Makefile targets
0.8.6 - 29 June 2004
- use
uu_lock()for terminal locking on FreeBSD
0.8.5 - 2 May 2004
- cursor positioning (-c) reliability improved on systems with IPC
- minor fix: made test 005 more reliable
- new option --height (-H)
0.8.2 - 24 April 2004
- allow k,m,g,t suffixes on numbers
- added "
srpm" and "release" Makefile targets
0.8.1 - 19 April 2004
- bugfix in cursor positioning (-c)
0.8.0 - 12 February 2004
- replaced GNU getopt with my library code
- replaced GNU gettext with my very minimal replacement
- use DESTDIR instead of RPM_BUILD_ROOT for optional installation prefix
- looked for flaws using RATS, cleaned up code
0.7.0 - 8 February 2004
- display buffer management fixes (thanks Cédric Delfosse)
- replaced --enable-debug with --enable-debugging and --enable-profiling
0.6.4 - 14 January 2004
- fixed minor bug in RPM installation
- bugfix in "
make index" (only of interest to developers)
0.6.3 - 22 December 2003
- fixed transient bug that reported "resource unavailable" occasionally
0.6.2 - 6 August 2003
- block devices now have their size read correctly, so "
pv /dev/hda1" works - minor code cleanups (mainly removal of CVS "Id" tags)
0.6.0 - 3 August 2003
- doing ^Z then "
bg" then "fg" now continues displaying
0.5.9 - 23 July 2003
- fix for test 007 when not in C locale
- fix for build process to use CPPFLAGS
- fix for build process to use correct i18n libraries
- fix for build process - more portable sed in dependency generator
- fix for install process - remember to
mkinstalldirsbefore installing - fixes for building on Mac OS X
0.5.3 - 4 May 2003
- added Polish translation thanks to Bartosz Feński fenio@o2.pl http://skawina.eu.org/ and Krystian Zubel
- moved
doc/debianto./debianat insistence of common sense - minor Solaris 8 compatibility fixes
- seems to compile and test OK on Mac OS X
0.5.0 - 15 April 2003
- added French translation thanks to Stéphane Lacasse stephane@gorfou.ca
- added German translation thanks to Marcos Kreinacke public@kreinacke.com
- switched LGPL reference from "Library" to "Lesser"
0.4.9 - 18 February 2003
- support for >2GB files added where available (Debian bug #180986)
- added
doc/debiandir (from Cédric Delfosse) - added "
make rpm" and "make deb" targets to build RPM and Debian packages - added a "
make pv-static" rule to build a statically linked version
0.4.5 - 13 December 2002
- added Portuguese (Brazilian) translation thanks to Eduardo Aguiar
0.4.4 - 7 December 2002
- pause/resume support - don't count time while stopped
- stop output when resumed in the background
- terminal size change support
- bugfix: "
<=>" indicator no longer sticks at right hand edge
0.4.0 - 27 November 2002
- allow decimal interval values, eg 0.1, 0.5, etc
- some simple tests added ("
make check") - smoother throughput limiting (--rate-limit), now done in 0.1sec chunks
- bounds-check interval values (-i) - max update interval now 10 minutes
- more reliable non-blocking output to keep display updated
- no longer rely on
atoll() - don't output final blank line if --numeric
- use
fcntl()instead offlock()for Solaris compatibility
0.3.0 - 25 November 2002
- handle broken output pipe gracefully
- continue updating display even when output pipe is blocking
0.2.6 - 21 October 2002
- we now ignore EINTR on
select() - variable-size buffer (still need to add code to change size)
- added (tentative) support for internationalisation
- removed superfluous --no-progress, etc options
- optimised transfer by using bigger buffers, based on
st_blksize - added --wait option to wait until transfer begins before showing progress
- added --rate-limit option to limit rate to a maximum throughput
- added --quiet option (no output at all) to be used with --rate-limit
0.2.5 - 23 July 2002
- added [FILE]... arguments, like "
cat" - function separation in code
- some bug fixes related to numeric overflow
0.2.3 - 19 July 2002
- Texinfo manual written, man page updated
- byte counter added
0.2.0 - 18 July 2002
- ETA counter added
- screen width estimation added
- progress bar added
0.1.0 - 17 July 2002
- main loop created
- rate counter added
- elapsed time counter added
- percentage calculation added
0.0.1 - 16 July 2002
- package created
- first draft of man page written