57 Commits
Author SHA1 Message Date
Andrew Wood 283bafa228 Word wrap update from auto generation. 2025-07-26 14:58:02 +01:00
Andrew Wood 03bd428345 Timestamp updates. 2025-07-26 14:50:58 +01:00
Andrew Wood f77b853f3f Commit to a release date. 2025-07-26 14:50:39 +01:00
Andrew Wood 43a89a5c61 Line number updates. 2025-07-25 23:58:17 +01:00
Andrew Wood 44d7f94c31 Version bump. 2025-07-25 23:57:51 +01:00
Andrew Wood 7c84dc9890 Note the fix for #163. 2025-07-25 23:57:23 +01:00
Andrew Wood 025577a13f Free default_bar_style on exit. 2025-07-25 23:46:24 +01:00
Andrew Wood c180cc85cf Allocate the state copy's default_bar_style using the setter function rather than pv_strdup directly (#163). 2025-07-25 23:44:12 +01:00
Andrew Wood 092a30dd7d When watching file descriptors, duplicate the default_bar_style string rather than copying its pointer, to avoid double-free() (#163). 2025-07-25 23:40:41 +01:00
Andrew Wood cd7c8f7849 Version bump. 2025-07-25 22:32:05 +01:00
Andrew Wood 89ee1332fe Timestamp and line number update. 2025-07-25 22:31:52 +01:00
Andrew Wood b926fffe80 Note issue #164. 2025-07-25 22:08:44 +01:00
Andrew Wood 7924a796ea Add debugging message when SIGPIPE is received. 2025-07-25 20:49:50 +01:00
Andrew Wood 8d45738126 Line number updates. 2025-07-25 20:14:37 +01:00
Andrew Wood e687c9b4d9 When EOF on input and output is reached but the output pipe buffer is not empty, sleep for a short time before looping while waiting for the buffer to empty, to avoid a busy-wait (#164). 2025-07-25 20:13:49 +01:00
Andrew Wood d2e9028726 Add debugging output to pv_transfer wherever it returns zero (#164) 2025-07-25 19:49:02 +01:00
Andrew Wood e6638faffc New shorter home page URL. 2025-05-31 15:21:56 +01:00
Andrew Wood f000530746 Correct which language Maxi_Mega is acknowledged for providing translations to. 2025-05-31 15:15:56 +01:00
Andrew Wood 5bf04f841b Acknowledge translations from user milimarg. 2025-05-31 15:12:55 +01:00
Andrew Wood 5d95797aff Merge pull request 'Translations update from Codeberg Translate' (#162) from translate/pv:weblate-pv-pv into main
Reviewed-on: https://codeberg.org/ivarch/pv/pulls/162
2025-05-31 16:07:58 +02:00
milimargandCodeberg Translate 9db2907a48 Translated using Weblate (French)
Currently translated at 100.0% (132 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/fr/
2025-05-31 08:58:24 +00:00
Andrew Wood 5423ae40d6 Removed www. prefix from ivarch.com URL. 2025-02-19 23:18:56 +00:00
Andrew Wood 2de68acfea Remove the bug reporting email address. 2025-02-19 21:55:28 +00:00
Andrew Wood 71e29b7388 Adjust project URL. 2025-02-19 20:42:22 +00:00
Andrew Wood 6d6619cbb4 Merge pull request 'Translations update from Codeberg Translate' (#129) from translate/pv:weblate-pv-pv into main
Reviewed-on: https://codeberg.org/a-j-wood/pv/pulls/129
2025-02-09 17:18:14 +00:00
a-j-woodandCodeberg Translate 651053491e Translated using Weblate (French)
Currently translated at 90.1% (119 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/fr/
2025-02-09 17:17:10 +00:00
Andrew Wood 81f9919992 Acknowledge new French translations. 2025-02-09 17:16:44 +00:00
Andrew Wood b57170d596 Merge pull request 'Translations update from Codeberg Translate' (#128) from translate/pv:weblate-pv-pv into main
Reviewed-on: https://codeberg.org/a-j-wood/pv/pulls/128
2025-02-09 17:11:41 +00:00
Maxi_MegaandCodeberg Translate 60462c033b Translated using Weblate (French)
Currently translated at 90.1% (119 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/fr/
2025-02-09 16:43:58 +00:00
Andrew Wood 3f597e59e0 Adjust the installer test to retry with both "gmake" and "make", to work around strange behaviour on NetBSD. 2025-01-28 22:10:49 +00:00
Andrew Wood a62051e5ff Adjust the sensitivity of the test. 2025-01-28 21:35:42 +00:00
Andrew Wood 5483ddf024 Version bump. 2025-01-28 21:22:12 +00:00
Andrew Wood 62ef4b91fc Timestamp update. 2025-01-28 21:21:56 +00:00
Andrew Wood 8664521f08 Reformat with indent; update translation string line numbers. 2025-01-26 20:08:17 +00:00
Andrew Wood 6ef23916f0 Adjust formatting of indented paragraphs. 2025-01-25 21:38:26 +00:00
Andrew Wood 73f8a2fb02 Acknowledge #127. 2025-01-25 21:34:21 +00:00
Andrew Wood a552fc5329 Document the use of "--numeric" with "--format". 2025-01-25 21:28:33 +00:00
Andrew Wood 505a91a6ed In --numeric mode, still call the same formatting functions, only with a different default string, and end with a newline rather than a carriage return (#127). 2025-01-25 21:15:05 +00:00
Andrew Wood 0d3b678800 Format the average rate, byte/line count, percentage completion, transfer rate, and elapsed time as just a number on its own in numeric mode. 2025-01-24 23:10:59 +00:00
Andrew Wood efb115c2aa Remove the TODO since buffer utilisation may not be useful with --numeric, as it is not always a number. 2025-01-24 23:07:05 +00:00
Andrew Wood 8721d285ce Add TODO markers at possible touch points for "--numeric --format" implementation (#127). 2025-01-23 21:56:57 +00:00
Andrew Wood f421f9979d Acknowledge updated Polish and Russian translations. 2025-01-15 21:20:37 +00:00
Andrew Wood d5ad641102 Merge pull request 'Translations update from Codeberg Translate' (#126) from translate/pv:weblate-pv-pv into main
Reviewed-on: https://codeberg.org/a-j-wood/pv/pulls/126
2025-01-15 21:17:23 +00:00
0koandCodeberg Translate ec6199c973 Translated using Weblate (Russian)
Currently translated at 90.1% (119 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/ru/
2025-01-15 19:08:24 +00:00
coralpinkandCodeberg Translate 0eb09d097e Translated using Weblate (Polish)
Currently translated at 100.0% (132 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/pl/
2025-01-15 19:08:24 +00:00
Andrew Wood 13265b3d6b Note the translation update. 2025-01-14 21:19:53 +00:00
Andrew Wood dbc7cd7bac Update the translation acknowledgements. 2025-01-14 20:54:46 +00:00
Andrew Wood 4c1f36cda4 Merge pull request 'Translations update from Codeberg Translate' (#125) from translate/pv:weblate-pv-pv into main
Reviewed-on: https://codeberg.org/a-j-wood/pv/pulls/125
2025-01-14 20:42:58 +00:00
BennyandCodeberg Translate 987af6ba16 Translated using Weblate (German)
Currently translated at 100.0% (132 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/de/
2025-01-14 20:39:46 +00:00
m0yellowandCodeberg Translate 58451ae18b Translated using Weblate (German)
Currently translated at 100.0% (132 of 132 strings)

Translation: pv/pv
Translate-URL: https://translate.codeberg.org/projects/pv/pv/de/
2025-01-14 17:19:02 +00:00
Andrew Wood cd2f5cbbfa Date adjustment. 2025-01-12 13:41:35 +00:00
Andrew Wood 896ff890d8 Adjustments to reduce false positives on slow systems. 2025-01-12 13:14:38 +00:00
Andrew Wood 8ba24e39e0 Version bump. 2025-01-11 21:40:02 +00:00
Andrew Wood 0cf4e50e96 Timestamp update. 2025-01-11 21:22:02 +00:00
Andrew Wood c8ad7eb0e2 Bypass valgrind checks on ARM by default due to false positives. 2025-01-11 20:57:26 +00:00
Andrew Wood 42e47e8291 Turn off IPC support when sys/shm.h is missing, to fix compilation on Termux. 2025-01-10 23:23:07 +00:00
Andrew Wood 7d6c7d0735 Copyright note update for 2025. 2025-01-03 16:11:08 +00:00
60 changed files with 726 additions and 653 deletions
+4 -4
View File
@@ -51,7 +51,7 @@ run it as described above.
See "[docs/ACKNOWLEDGEMENTS.md](./docs/ACKNOWLEDGEMENTS.md)" for a list of
contributors.
Copyright (C) 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood.
Copyright (C) 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood.
License GPLv3+: GNU GPL version 3 or later <https://www.gnu.org/licenses/gpl-3.0.html>.
@@ -69,12 +69,12 @@ You should have received a copy of the GNU General Public License, version
3, in "[docs/COPYING](./docs/COPYING)". If not, see
<https://www.gnu.org/licenses/gpl-3.0.html>.
Please report any bugs to **pv@ivarch.com**, or use the issue tracker linked
from the **pv** home page.
Please report bugs or request features via the issue tracker linked from the
home page.
The **pv** home page is at:
> [https://www.ivarch.com/programs/pv.shtml](https://www.ivarch.com/programs/pv.shtml)
> [https://ivarch.com/p/pv](https://ivarch.com/p/pv)
The latest version can always be found here.
+3 -2
View File
@@ -1,10 +1,10 @@
dnl Process this file with autoconf to produce a configure script.
dnl
dnl Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
dnl Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
dnl
dnl License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
AC_INIT([pv], [1.9.25], [pv@ivarch.com], [pv], [https://www.ivarch.com/programs/pv.shtml])
AC_INIT([pv], [1.9.34], [https://codeberg.org/ivarch/pv/issues], [pv], [https://ivarch.com/p/pv])
AC_CONFIG_SRCDIR([src/include/config.h.in])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([src/include/config.h])
@@ -173,6 +173,7 @@ yes
if test "$IPC_SUPPORT" = "yes"; then
AC_CHECK_HEADERS([sys/ipc.h], [], [IPC_SUPPORT=no])
AC_CHECK_HEADERS([sys/shm.h], [], [IPC_SUPPORT=no])
AC_CHECK_HEADERS([sys/param.h])
if test "$IPC_SUPPORT" = "yes"; then
AC_CHECK_FUNCS([shmget], [], [IPC_SUPPORT=no])
+29 -24
View File
@@ -84,28 +84,30 @@ is acknowledged and greatly appreciated:
* [Nick Black](https://nick-black.com) - added **--bits** option
* [Andrew Schulman](https://github.com/andrew-schulman) - provided reproducible example of terminal size detection issue in 1.7.17/1.7.18
* [fuschia74](https://github.com/fuchsia74) - provided **--enable-static** patch for "`configure`"
* [Wilhelm von Thiele](https://github.com/TurtleWilly) - assisted with OS X cleanups ([#73](https://codeberg.org/a-j-wood/pv/issues/73), [#74](https://codeberg.org/a-j-wood/pv/issues/74))
* Matějů Miroslav, Ing. - suggested fix for ETA and elapsed time faults when suspending and resuming a machine ([#13](https://codeberg.org/a-j-wood/pv/issues/13))
* Anthony DeRobertis - suggested the **--error-skip-block** option ([#37](https://codeberg.org/a-j-wood/pv/issues/37))
* [Wilhelm von Thiele](https://github.com/TurtleWilly) - assisted with OS X cleanups ([#73](https://codeberg.org/ivarch/pv/issues/73), [#74](https://codeberg.org/ivarch/pv/issues/74))
* Matějů Miroslav, Ing. - suggested fix for ETA and elapsed time faults when suspending and resuming a machine ([#13](https://codeberg.org/ivarch/pv/issues/13))
* Anthony DeRobertis - suggested the **--error-skip-block** option ([#37](https://codeberg.org/ivarch/pv/issues/37))
* Benoit Pierre - provided patches for compilation without IPC support, without HAVE_STRUCT_STAT_ST_BLKSIZE, and on MacOS
* [gustav-b](https://codeberg.org/gustav-b) - suggested percentage formatting correction ([#80](https://codeberg.org/a-j-wood/pv/issues/80))
* [Thomas Bertels](https://codeberg.org/tbertels) - updated French translations ([#83](https://codeberg.org/a-j-wood/pv/pulls/83))
* [kevinruddy](https://codeberg.org/kevinruddy) - added decimal units option ([#85](https://codeberg.org/a-j-wood/pv/pulls/85))
* [xmort](https://codeberg.org/xmort) - added **--output** option ([#90](https://codeberg.org/a-j-wood/pv/pulls/90))
* [bogiord](https://codeberg.org/bogiord) - reported the loss of output block device size detection in 1.8.10, and suggested the fix ([#91](https://codeberg.org/a-j-wood/pv/issues/91))
* [eborisch](https://codeberg.org/eborisch) - provided fix for misbehaviour when used with "`zfs send`" due to treating zero sized writes (generally due to timer interruption) as end of file ([#92](https://codeberg.org/a-j-wood/pv/pulls/92), [#93](https://codeberg.org/a-j-wood/pv/pulls/93))
* [alexanderperlis](https://codeberg.org/alexanderperlis) - provided initial support for block devices with **--size `@`FILE** ([#94](https://codeberg.org/a-j-wood/pv/pulls/94))
* [jettero](https://codeberg.org/jettero) - reported double-free coredump when using **--watchfd** after 1.8.10 ([#96](https://codeberg.org/a-j-wood/pv/issues/96))
* Venky.N.Iyer - suggested **--stats** ([#49](https://codeberg.org/a-j-wood/pv/issues/49))
* Roland Kletzing - suggested **--rate** with **--numeric** ([#17](https://codeberg.org/a-j-wood/pv/issues/17))
* [Michael Mior](https://codeberg.org/michaelmior) - suggested **--store-and-forward** ([#100](https://codeberg.org/a-j-wood/pv/issues/100))
* [dbungert](https://codeberg.org/dbungert) - reported issue with *valgrind* 3.23 misreporting leaking file descriptors ([#97](https://codeberg.org/a-j-wood/pv/issues/97))
* Joachim Haga - suggested showing progress in the window title ([#3](https://codeberg.org/a-j-wood/pv/issues/3))
* [Martin Sarsale](https://github.com/runa) - suggested showing progress in the process title ([#4](https://codeberg.org/a-j-wood/pv/issues/4))
* [2bits](https://github.com/2bits) - reported position sensing fault with **--watchfd** in 1.9.0 ([#118](https://codeberg.org/a-j-wood/pv/issues/118))
* [heitbaum](https://codeberg.org/heitbaum) - assisted with cross-compilation fault introduced in 1.9.7 ([#120](https://codeberg.org/a-j-wood/pv/issues/120))
* [meego](https://codeberg.org/meego) - suggested "**%nL**", the last line preview ([#121](https://codeberg.org/a-j-wood/pv/issues/121))
* [Alexander Petrossian](https://github.com/neopaf) - suggested using Unicode output for a more granular progress bar, and provided the codepoints to use ([#15](https://codeberg.org/a-j-wood/pv/issues/15))
* [gustav-b](https://codeberg.org/gustav-b) - suggested percentage formatting correction ([#80](https://codeberg.org/ivarch/pv/issues/80))
* [Thomas Bertels](https://codeberg.org/tbertels) - updated French translations ([#83](https://codeberg.org/ivarch/pv/pulls/83))
* [kevinruddy](https://codeberg.org/kevinruddy) - added decimal units option ([#85](https://codeberg.org/ivarch/pv/pulls/85))
* [xmort](https://codeberg.org/xmort) - added **--output** option ([#90](https://codeberg.org/ivarch/pv/pulls/90))
* [bogiord](https://codeberg.org/bogiord) - reported the loss of output block device size detection in 1.8.10, and suggested the fix ([#91](https://codeberg.org/ivarch/pv/issues/91))
* [eborisch](https://codeberg.org/eborisch) - provided fix for misbehaviour when used with "`zfs send`" due to treating zero sized writes (generally due to timer interruption) as end of file ([#92](https://codeberg.org/ivarch/pv/pulls/92), [#93](https://codeberg.org/ivarch/pv/pulls/93))
* [alexanderperlis](https://codeberg.org/alexanderperlis) - provided initial support for block devices with **--size `@`FILE** ([#94](https://codeberg.org/ivarch/pv/pulls/94))
* [jettero](https://codeberg.org/jettero) - reported double-free coredump when using **--watchfd** after 1.8.10 ([#96](https://codeberg.org/ivarch/pv/issues/96))
* Venky.N.Iyer - suggested **--stats** ([#49](https://codeberg.org/ivarch/pv/issues/49))
* Roland Kletzing - suggested **--rate** with **--numeric** ([#17](https://codeberg.org/ivarch/pv/issues/17))
* [Michael Mior](https://codeberg.org/michaelmior) - suggested **--store-and-forward** ([#100](https://codeberg.org/ivarch/pv/issues/100))
* [dbungert](https://codeberg.org/dbungert) - reported issue with *valgrind* 3.23 misreporting leaking file descriptors ([#97](https://codeberg.org/ivarch/pv/issues/97))
* Joachim Haga - suggested showing progress in the window title ([#3](https://codeberg.org/ivarch/pv/issues/3))
* [Martin Sarsale](https://github.com/runa) - suggested showing progress in the process title ([#4](https://codeberg.org/ivarch/pv/issues/4))
* [2bits](https://github.com/2bits) - reported position sensing fault with **--watchfd** in 1.9.0 ([#118](https://codeberg.org/ivarch/pv/issues/118))
* [heitbaum](https://codeberg.org/heitbaum) - assisted with cross-compilation fault introduced in 1.9.7 ([#120](https://codeberg.org/ivarch/pv/issues/120))
* [meego](https://codeberg.org/meego) - suggested "**%nL**", the last line preview ([#121](https://codeberg.org/ivarch/pv/issues/121))
* [Alexander Petrossian](https://github.com/neopaf) - suggested using Unicode output for a more granular progress bar, and provided the codepoints to use ([#15](https://codeberg.org/ivarch/pv/issues/15))
* [jmealo](https://codeberg.org/jmealo) - suggested JSON progress output ([#127](https://codeberg.org/ivarch/pv/issues/127))
* [ipaqmaster](https://codeberg.org/ipaqmaster) - investigated 100%-CPU utilisation bug when piping to a command that has exited ([#164](https://codeberg.org/ivarch/pv/issues/164))
Translations provided through [Codeberg Weblate](https://translate.codeberg.org/projects/pv/):
@@ -113,15 +115,18 @@ Translations provided through [Codeberg Weblate](https://translate.codeberg.org/
* [mmatous](https://translate.codeberg.org/user/mmatous/) (135)
* **French**
* anonymous suggestions (7)
* [milimarg](https://codeberg.org/milimarg) (13)
* [Maxi_Mega](https://translate.codeberg.org/user/Maxi_Mega/) (11)
* **German**
* [Hartmut Goebel](https://translate.codeberg.org/user/htgoebel/) (77)
* [Benny](https://translate.codeberg.org/user/Benny/) (6)
* [m0yellow](https://translate.codeberg.org/user/m0yellow/) (9)
* [Benny](https://translate.codeberg.org/user/Benny/) (7)
* [kre](https://translate.codeberg.org/user/kre/) (2)
* [fnetX](https://translate.codeberg.org/user/fnetX/) (1)
* **Polish**
* [coralpink](https://translate.codeberg.org/user/coralpink/) (100)
* [coralpink](https://translate.codeberg.org/user/coralpink/) (106)
* **Russian**
* [0ko](https://translate.codeberg.org/user/0ko/) (151)
* [0ko](https://translate.codeberg.org/user/0ko/) (157)
* **Turkish**
* [omerdduran](https://translate.codeberg.org/user/omerdduran/) (129)
+1 -1
View File
@@ -138,7 +138,7 @@ these will need to be corrected by translators.
The package maintainer should run through these steps for a new release:
* Check for patches and bug reports:
* <https://codeberg.org/a-j-wood/pv/issues>
* <https://codeberg.org/ivarch/pv/issues>
* <https://tracker.debian.org/pkg/pv>
* <https://launchpad.net/ubuntu/+source/pv>
* <https://archlinux.org/packages/extra/x86_64/pv/>
+73 -55
View File
@@ -1,13 +1,31 @@
### 1.9.34 - 26 July 2025
* *fix:* prevent tight loop consuming CPU when waiting for a partially filled output pipe to be drained ([#164](https://codeberg.org/ivarch/pv/issues/164))
* *fix:* correct a memory handling fault when using **--bar-style** with **--watchfd** ([#163](https://codeberg.org/ivarch/pv/issues/163))
* *i18n:* French translations updated
### 1.9.31 - 28 January 2025
* *feature:* the **--format** option can now be used with **--numeric** for customised numeric output, such as JSON ([#127](https://codeberg.org/ivarch/pv/issues/127))
* *i18n:* German translations updated
* *i18n:* Polish translations updated
* *i18n:* Russian translations updated
### 1.9.27 - 12 January 2025
* *fix:* turn off IPC support if _sys/shm.h_ is not available, for compilation on Termux
* *fix:* bypass valgrind checks on ARM by default due to false positives
### 1.9.25 - 22 December 2024
* *fix:* test failure of **--watchfd** on macOS corrected ([#124](https://codeberg.org/a-j-wood/pv/issues/124))
* *fix:* test failure of **--watchfd** on macOS corrected ([#124](https://codeberg.org/ivarch/pv/issues/124))
### 1.9.24 - 19 December 2024
* *feature:* new **--format** sequences for graphical progress bars - "**%{bar-block}**", "**%{bar-granular}**", and "**%{bar-shaded}**" ([#15](https://codeberg.org/a-j-wood/pv/issues/15))
* *feature:* new **--format** sequences for graphical progress bars - "**%{bar-block}**", "**%{bar-granular}**", and "**%{bar-shaded}**" ([#15](https://codeberg.org/ivarch/pv/issues/15))
* *feature:* new **--format** sequence "**%{sgr:colour,...}**" to use ECMA-48 Select Graphic Rendition codes to add colours
* *feature:* new **--bar-style** option to change the default bar style ([#15](https://codeberg.org/a-j-wood/pv/issues/15))
* *feature:* allow decimal values such as "1.5G" with "**--size**", "**--rate-limit**", "**--buffer-size**", and "**error-skip-block**" ([#35](https://codeberg.org/a-j-wood/pv/issues/35))
* *feature:* new **--bar-style** option to change the default bar style ([#15](https://codeberg.org/ivarch/pv/issues/15))
* *feature:* allow decimal values such as "1.5G" with "**--size**", "**--rate-limit**", "**--buffer-size**", and "**error-skip-block**" ([#35](https://codeberg.org/ivarch/pv/issues/35))
* *cleanup:* improve progress bar granularity on wide displays by internally tracking the transfer percentage as a decimal number
* *cleanup:* correct detection of **--remote** usability on GNU Hurd
* *cleanup:* reduce likelihood of race conditions in tests when running on slow systems
@@ -16,41 +34,41 @@
### 1.9.15 - 8 December 2024
* *feature:* new **--format** sequence "**%nL**", showing the most recent line written ([#121](https://codeberg.org/a-j-wood/pv/issues/121))
* *feature:* new **--format** sequence "**%nL**", showing the most recent line written ([#121](https://codeberg.org/ivarch/pv/issues/121))
* *feature:* each **--format** sequence now has a more readable equivalent name, for example "**%r**" can be written as "**%{rate}**"
* *feature:* new **--format** sequences "**%{progress-bar-only}**" and "**%{progress-amount-only}**"
* *fix:* allow **--format** to include "%nA" more than once, with different "n" values ([#122](https://codeberg.org/a-j-wood/pv/issues/122))
* *fix:* allow **--format** to include "%nA" more than once, with different "n" values ([#122](https://codeberg.org/ivarch/pv/issues/122))
* *fix:* allow **--format** to include "%p" more than once, with optional width prefix
* *fix:* calculate width correctly when wide characters are in **--format** strings
* *fix:* add _configure_ script fallback for **--remote** check when cross-compiling ([#120](https://codeberg.org/a-j-wood/pv/issues/120))
* *fix:* allow **extra-display** to be changed by **--remote** ([#123](https://codeberg.org/a-j-wood/pv/issues/123))
* *fix:* add _configure_ script fallback for **--remote** check when cross-compiling ([#120](https://codeberg.org/ivarch/pv/issues/120))
* *fix:* allow **extra-display** to be changed by **--remote** ([#123](https://codeberg.org/ivarch/pv/issues/123))
* *cleanup:* refactored display formatters into separate functions
* *cleanup:* improve format parser handling of dangling or invalid "%" sequences
### 1.9.7 - 2 December 2024
* *feature:* new **--extra-display** option to update window and process titles ([#3](https://codeberg.org/a-j-wood/pv/issues/3), [#4](https://codeberg.org/a-j-wood/pv/issues/4))
* *fix:* correct failure to report file positions in **--watchfd** ([#118](https://codeberg.org/a-j-wood/pv/issues/118))
* *feature:* new **--extra-display** option to update window and process titles ([#3](https://codeberg.org/ivarch/pv/issues/3), [#4](https://codeberg.org/ivarch/pv/issues/4))
* *fix:* correct failure to report file positions in **--watchfd** ([#118](https://codeberg.org/ivarch/pv/issues/118))
* *i18n:* Russian translations added
* *cleanup:* tests added for **--watchfd** ([#10](https://codeberg.org/a-j-wood/pv/issues/10))
* *cleanup:* worked around file descriptor leak false positives in valgrind 3.23 ([#97](https://codeberg.org/a-j-wood/pv/issues/97))
* *cleanup:* tests added for **--watchfd** ([#10](https://codeberg.org/ivarch/pv/issues/10))
* *cleanup:* worked around file descriptor leak false positives in valgrind 3.23 ([#97](https://codeberg.org/ivarch/pv/issues/97))
* *cleanup:* cleared all *shellcheck* warnings in the test scripts
* *cleanup:* check at compile-time whether **--remote** is going to be usable ([#119](https://codeberg.org/a-j-wood/pv/issues/119))
* *cleanup:* check at compile-time whether **--remote** is going to be usable ([#119](https://codeberg.org/ivarch/pv/issues/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](https://codeberg.org/a-j-wood/pv/issues/100))
* *feature:* new **--stats** option to show transfer stats at the end, like "`ping`" ([#49](https://codeberg.org/a-j-wood/pv/issues/49))
* *feature:* **--rate** can now be used with **--numeric** ([#17](https://codeberg.org/a-j-wood/pv/issues/17))
* *feature:* **--gauge** with **--progress** to show rate gauge when size is unknown ([#46](https://codeberg.org/a-j-wood/pv/issues/46))
* *feature:* new **--store-and-forward** option to read input to a file first, then write it to the output ([#100](https://codeberg.org/ivarch/pv/issues/100))
* *feature:* new **--stats** option to show transfer stats at the end, like "`ping`" ([#49](https://codeberg.org/ivarch/pv/issues/49))
* *feature:* **--rate** can now be used with **--numeric** ([#17](https://codeberg.org/ivarch/pv/issues/17))
* *feature:* **--gauge** with **--progress** to show rate gauge when size is unknown ([#46](https://codeberg.org/ivarch/pv/issues/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](https://codeberg.org/a-j-wood/pv/issues/56))
* *fix:* resume stopped pipelines when running in the background (part of [#56](https://codeberg.org/ivarch/pv/issues/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](https://codeberg.org/a-j-wood/pv/issues/43))
* *fix:* prefix completion time (**--fineta**) with *FIN* rather than *ETA* ([#43](https://codeberg.org/ivarch/pv/issues/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
@@ -65,44 +83,44 @@
### 1.8.14 - 7 September 2024
* *fix:* correct double-free on exit when using **--watchfd** ([#96](https://codeberg.org/a-j-wood/pv/issues/96)) reported by [jettero](https://codeberg.org/jettero)
* *fix:* correct double-free on exit when using **--watchfd** ([#96](https://codeberg.org/ivarch/pv/issues/96)) reported by [jettero](https://codeberg.org/jettero)
### 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](https://codeberg.org/a-j-wood/pv/pulls/94)) supplied by [alexanderperlis](https://codeberg.org/alexanderperlis)
* *feature:* when using **--size @FILE**, *FILE* can be a block device, and its size will be used (pull request [#94](https://codeberg.org/ivarch/pv/pulls/94)) supplied by [alexanderperlis](https://codeberg.org/alexanderperlis)
### 1.8.12 - 18 July 2024
* *fix:* correct the detection of output block device size that was broken in 1.8.10 ([#91](https://codeberg.org/a-j-wood/pv/issues/91))
* *fix:* do not treat a zero/interrupted write as an end of file (pull requests [#92](https://codeberg.org/a-j-wood/pv/pulls/92) and [#93](https://codeberg.org/a-j-wood/pv/pulls/93))
* *fix:* correct the detection of output block device size that was broken in 1.8.10 ([#91](https://codeberg.org/ivarch/pv/issues/91))
* *fix:* do not treat a zero/interrupted write as an end of file (pull requests [#92](https://codeberg.org/ivarch/pv/pulls/92) and [#93](https://codeberg.org/ivarch/pv/pulls/93))
### 1.8.10 - 15 June 2024
* *feature:* new **--output** option to write to a file instead of standard output (pull request [#90](https://codeberg.org/a-j-wood/pv/pulls/90)) supplied by [xmort](https://codeberg.org/xmort)
* *feature:* new **--output** option to write to a file instead of standard output (pull request [#90](https://codeberg.org/ivarch/pv/pulls/90)) supplied by [xmort](https://codeberg.org/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](https://codeberg.org/a-j-wood/pv/pulls/85)) supplied by [kevinruddy](https://codeberg.org/kevinruddy)
* *fix:* continue producing progress output when the output is blocking writes ([#34](https://codeberg.org/a-j-wood/pv/issues/34), [#86](https://codeberg.org/a-j-wood/pv/issues/86), [#87](https://codeberg.org/a-j-wood/pv/issues/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](https://codeberg.org/a-j-wood/pv/issues/88))
* *i18n:* corrections and missing strings added to French translations (pull request [#83](https://codeberg.org/a-j-wood/pv/pulls/83)) supplied by [Thomas Bertels](https://codeberg.org/tbertels)
* *feature:* new **--si** option to display and interpret size suffixes in multiples of 1000 rather than 1024 (pull request [#85](https://codeberg.org/ivarch/pv/pulls/85)) supplied by [kevinruddy](https://codeberg.org/kevinruddy)
* *fix:* continue producing progress output when the output is blocking writes ([#34](https://codeberg.org/ivarch/pv/issues/34), [#86](https://codeberg.org/ivarch/pv/issues/86), [#87](https://codeberg.org/ivarch/pv/issues/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](https://codeberg.org/ivarch/pv/issues/88))
* *i18n:* corrections and missing strings added to French translations (pull request [#83](https://codeberg.org/ivarch/pv/pulls/83)) supplied by [Thomas Bertels](https://codeberg.org/tbertels)
### 1.8.5 - 19 November 2023
* *fix:* corrected percentage formatting so it doesn't jump from 2 to 3 characters wide at 100% ([#80](https://codeberg.org/a-j-wood/pv/issues/80))
* *fix:* corrected percentage formatting so it doesn't jump from 2 to 3 characters wide at 100% ([#80](https://codeberg.org/ivarch/pv/issues/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](https://codeberg.org/a-j-wood/pv/issues/77))
* *security:* addressed all issues highlighted by the software auditing tools "`splint`" and "`flawfinder`" (see "`make analyse`") ([#77](https://codeberg.org/ivarch/pv/issues/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](https://codeberg.org/a-j-wood/pv/issues/42))
* *feature:* new **--error-skip-block** option to make **--skip-errors** skip whole blocks ([#37](https://codeberg.org/a-j-wood/pv/issues/37))
* *feature:* use `posix_fadvise()` like `cat`(1) does, to improve efficiency ([#39](https://codeberg.org/a-j-wood/pv/issues/39))
* *feature:* new **--enable-static** option to "`configure`" for static builds ([#75](https://codeberg.org/a-j-wood/pv/pull/75))
* *feature:* new **--discard** option to discard input as if writing to */dev/null* ([#42](https://codeberg.org/ivarch/pv/issues/42))
* *feature:* new **--error-skip-block** option to make **--skip-errors** skip whole blocks ([#37](https://codeberg.org/ivarch/pv/issues/37))
* *feature:* use `posix_fadvise()` like `cat`(1) does, to improve efficiency ([#39](https://codeberg.org/ivarch/pv/issues/39))
* *feature:* new **--enable-static** option to "`configure`" for static builds ([#75](https://codeberg.org/ivarch/pv/pull/75))
#### Security
@@ -114,10 +132,10 @@
* *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](https://codeberg.org/a-j-wood/pv/issues/13))
* *fix:* if **--width** or **--height** were provided, do not change them when the window size changes ([#36](https://codeberg.org/a-j-wood/pv/issues/36))
* *fix:* when a file descriptor position in **--watchfd** moves backwards, show the rate using the correct prefix ([#41](https://codeberg.org/a-j-wood/pv/issues/41))
* *fix:* rewrite terminal state save/restore so state is not intermittently garbled on exit when using **--cursor** ([#20](https://codeberg.org/a-j-wood/pv/issues/20)), ([#24](https://codeberg.org/a-j-wood/pv/issues/24))
* *fix:* use `clock_gettime()` in ETA calculation to cope with machine suspend/resume ([#13](https://codeberg.org/ivarch/pv/issues/13))
* *fix:* if **--width** or **--height** were provided, do not change them when the window size changes ([#36](https://codeberg.org/ivarch/pv/issues/36))
* *fix:* when a file descriptor position in **--watchfd** moves backwards, show the rate using the correct prefix ([#41](https://codeberg.org/ivarch/pv/issues/41))
* *fix:* rewrite terminal state save/restore so state is not intermittently garbled on exit when using **--cursor** ([#20](https://codeberg.org/ivarch/pv/issues/20)), ([#24](https://codeberg.org/ivarch/pv/issues/24))
#### Cleanups
@@ -126,8 +144,8 @@
* *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](https://codeberg.org/a-j-wood/pv/issues/74))
* *cleanup:* with **--sync**, call `fsync()` instead of `fdatasync()` on incapable systems ([#73](https://codeberg.org/a-j-wood/pv/issues/73))
* *cleanup:* replaced *AC_HEADER_TIOCGWINSZ* with *AC_CHECK_HEADERS(sys/ioctl.h)* for better MacOS compatibility ([#74](https://codeberg.org/ivarch/pv/issues/74))
* *cleanup:* with **--sync**, call `fsync()` instead of `fdatasync()` on incapable systems ([#73](https://codeberg.org/ivarch/pv/issues/73))
* *cleanup:* the manual is now a static file instead of needing to be built with "`configure`"
#### Dropped items
@@ -143,7 +161,7 @@
### 1.7.24 - 30 July 2023
* *fix:* correct terminal size detection, broken in 1.7.17 by the configuration script rewrite ([#72](https://codeberg.org/a-j-wood/pv/issues/72))
* *fix:* correct terminal size detection, broken in 1.7.17 by the configuration script rewrite ([#72](https://codeberg.org/ivarch/pv/issues/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
@@ -156,8 +174,8 @@
### 1.7.17 - 27 July 2023
* *feature:* new **--sync** option to flush cache to disk after every write (related to [#6](https://codeberg.org/a-j-wood/pv/issues/6), to improve accuracy when writing to slow disks)
* *feature:* new **--direct-io** option to bypass cache - implements [#29 "Option to enable O_DIRECT"](https://codeberg.org/a-j-wood/pv/issues/29) - requested by Romain Kang, Jacek Wielemborek
* *feature:* new **--sync** option to flush cache to disk after every write (related to [#6](https://codeberg.org/ivarch/pv/issues/6), to improve accuracy when writing to slow disks)
* *feature:* new **--direct-io** option to bypass cache - implements [#29 "Option to enable O_DIRECT"](https://codeberg.org/ivarch/pv/issues/29) - 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.in` as per suggestions in newer "`autoconf`" manuals
* *cleanup:* replaced `header.in` with one generated by "`autoheader`", moving custom logic to a separate header file "`config-aux.h`"
@@ -177,18 +195,18 @@
### 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](https://codeberg.org/a-j-wood/pv/pull/57) supplied by [Dave Beckett](https://github.com/dajobe))
* *feature:* the **--watchfd** option is now available on OS X (pull request [#60](https://codeberg.org/a-j-wood/pv/pull/60) supplied by [christoph-zededa](https://github.com/christoph-zededa))
* *feature:* new **--bits** option to show bit count instead of byte count (adapted from pull request [#63](https://codeberg.org/a-j-wood/pv/pull/63) supplied by [Nick Black](https://nick-black.com))
* *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](https://codeberg.org/a-j-wood/pv/pull/65) supplied by [lemonsqueeze](https://github.com/lemonsqueeze))
* *feature:* the **--watchfd** option will now show relative filenames, if they are under the current directory (pull request [#66](https://codeberg.org/a-j-wood/pv/pull/66) supplied by [ikasty](https://github.com/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"](https://codeberg.org/a-j-wood/pv/issues/19), [#31 "No output written from inside zsh <() construct"](https://codeberg.org/a-j-wood/pv/issues/31), [#55 "pv Stopped Working in the Background"](https://codeberg.org/a-j-wood/pv/issues/55) (pull request [#64](https://codeberg.org/a-j-wood/pv/pull/64) supplied by [Michael Weiß](https://github.com/quitschbo))
* *fix:* workaround for OS X 11 behaviour in configure script regarding stat64 at compile time (pull request [#57](https://codeberg.org/a-j-wood/pv/pull/57) supplied by [Dave Beckett](https://github.com/dajobe))
* *fix:* workaround for macOS equivalence of stat to stat64 - patches from [Filippo Valsorda](https://github.com/FiloSottile) and [Demitri Muna](https://github.com/demitri), correcting [#33 "Fix compilation problems due to `stat64()` on Apple Silicon"](https://codeberg.org/a-j-wood/pv/issues/33)
* *fix:* add burst rate limit to transfer, so rate limits are not broken by bursty traffic (pull request [#62](https://codeberg.org/a-j-wood/pv/pull/62) supplied by [Volodymyr Bychkovyak](https://github.com/vbychkoviak))
* *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"](https://codeberg.org/a-j-wood/pv/issues/23) and helps to correct [#31 "No output written from inside zsh <() construct"](https://codeberg.org/a-j-wood/pv/issues/31)
* *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"](https://codeberg.org/a-j-wood/pv/issues/16)
* *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"](https://codeberg.org/a-j-wood/pv/issues/26)
* *feature:* the **--size** option now accepts "`@filename`" to use the size of another file (pull request [#57](https://codeberg.org/ivarch/pv/pull/57) supplied by [Dave Beckett](https://github.com/dajobe))
* *feature:* the **--watchfd** option is now available on OS X (pull request [#60](https://codeberg.org/ivarch/pv/pull/60) supplied by [christoph-zededa](https://github.com/christoph-zededa))
* *feature:* new **--bits** option to show bit count instead of byte count (adapted from pull request [#63](https://codeberg.org/ivarch/pv/pull/63) supplied by [Nick Black](https://nick-black.com))
* *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](https://codeberg.org/ivarch/pv/pull/65) supplied by [lemonsqueeze](https://github.com/lemonsqueeze))
* *feature:* the **--watchfd** option will now show relative filenames, if they are under the current directory (pull request [#66](https://codeberg.org/ivarch/pv/pull/66) supplied by [ikasty](https://github.com/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"](https://codeberg.org/ivarch/pv/issues/19), [#31 "No output written from inside zsh <() construct"](https://codeberg.org/ivarch/pv/issues/31), [#55 "pv Stopped Working in the Background"](https://codeberg.org/ivarch/pv/issues/55) (pull request [#64](https://codeberg.org/ivarch/pv/pull/64) supplied by [Michael Weiß](https://github.com/quitschbo))
* *fix:* workaround for OS X 11 behaviour in configure script regarding stat64 at compile time (pull request [#57](https://codeberg.org/ivarch/pv/pull/57) supplied by [Dave Beckett](https://github.com/dajobe))
* *fix:* workaround for macOS equivalence of stat to stat64 - patches from [Filippo Valsorda](https://github.com/FiloSottile) and [Demitri Muna](https://github.com/demitri), correcting [#33 "Fix compilation problems due to `stat64()` on Apple Silicon"](https://codeberg.org/ivarch/pv/issues/33)
* *fix:* add burst rate limit to transfer, so rate limits are not broken by bursty traffic (pull request [#62](https://codeberg.org/ivarch/pv/pull/62) supplied by [Volodymyr Bychkovyak](https://github.com/vbychkoviak))
* *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"](https://codeberg.org/ivarch/pv/issues/23) and helps to correct [#31 "No output written from inside zsh <() construct"](https://codeberg.org/ivarch/pv/issues/31)
* *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"](https://codeberg.org/ivarch/pv/issues/16)
* *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"](https://codeberg.org/ivarch/pv/issues/26)
* *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
+5 -2
View File
@@ -15,6 +15,9 @@
# The packages built with this script are not "official", in that they are
# not part of any Linux distribution and may not follow the distribution's
# policies. Use at your own risk.
#
# Copyright 2024-2025 Andrew Wood
# License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
sourceArchive="$1"
test -n "${sourceArchive}" && test -f "${sourceArchive}" \
@@ -27,8 +30,8 @@ pv (Pipe Viewer) can be inserted into any normal pipeline between two
processes to give a visual indication of how quickly data is passing
through, how long it has taken, how near to completion it is, and an
estimate of how long it will be until completion."
packageUrl="https://www.ivarch.com/programs/pv.shtml"
sourceUrl="https://www.ivarch.com/programs/sources/${packageName}-%{version}.tar.gz"
packageUrl="https://ivarch.com/p/pv"
sourceUrl="https://ivarch.com/programs/sources/${packageName}-%{version}.tar.gz"
packageEmail="Andrew Wood <pv@ivarch.com>"
workDir="$(mktemp -d)" || exit 1
+30 -29
View File
@@ -1,4 +1,4 @@
.TH PV 1 2024-12-22 pv-1.9.25 "User Commands"
.TH PV 1 2025-07-26 pv-1.9.34 "User Commands"
.\"
.SH NAME
pv \- monitor the progress of data through a pipe
@@ -97,8 +97,7 @@ percentage, one per line, on standard error, suitable for passing to a tool
such as \fBdialog\fR(1).
Note that \*(lq\fB\-\-force\fR\*(rq is not required if
\*(lq\fB\-\-numeric\fR\*(rq is being used.
.TP
.B ""
.IP
Combining \*(lq\fB\-\-numeric\fR\*(rq with \*(lq\fB\-\-bytes\fR\*(rq will
cause the number of bytes processed so far to be output instead of a
percentage.
@@ -109,6 +108,13 @@ Adding \*(lq\fB\-\-rate\fR\*(rq adds the transfer rate to each output line
byte/line count).
Adding \*(lq\fB\-\-timer\fR\*(rq prefixes each output line with the elapsed
time so far, as a decimal number of seconds.
.IP
Combining \*(lq\fB\-\-numeric\fR\*(rq with \*(lq\fB\-\-format\fR\*(rq allows
for custom output. The default format string components for
\*(lq\fB\-\-numeric\fR\*(rq are
\*(lq\fB%t\~%b\~%r\~%{progress\-amount\-only}\fR\*(rq in that order, each
item being active or inactive according to the rules above (so the default
with no other options is \*(lq\fB%{progress\-amount\-only}\fR\*(rq.
.TP
.B \-q, \-\-quiet
No output.
@@ -147,13 +153,10 @@ A suffix of \*(lqK\*(rq, \*(lqM\*(rq, \*(lqG\*(rq, or \*(lqT\*(rq can be
added to denote kibibytes (*1024), mebibytes, gibibytes, tebibytes.
If \*(lq\fB\-\-si\fR\*(rq appears before this option, suffixes will denote
kilobytes (*1000), megabytes, and so on instead.
.TP
.B ""
.IP
If \fISIZE\fR starts with \*(lq\fB@\fR\*(rq, the size of file whose name
follows the @ will be used.
.TP
.B ""
.TP
.B \-g, \-\-gauge
If the progress bar is shown but the size is not known, then instead of
moving the bar left and right to show progress, show the current transfer
@@ -163,8 +166,7 @@ rate as a percentage of the maximum rate seen so far.
Instead of counting bytes, count lines (newline characters).
The progress bar will only move when a new line is found, and the value
passed to \*(lq\fB\-\-size\fR\*(rq will be interpreted as a line count.
.TP
.B ""
.IP
If this option is used without \*(lq\fB\-\-size\fR\*(rq, the "total size"
(in this case, total line count) is calculated by reading through all input
files once before transfer starts.
@@ -282,8 +284,7 @@ The corresponding parts of the output will be null bytes.
At first only a few bytes will be skipped, but if there are many errors in a
row then the skips will move up to chunks of 512.
This is intended to be similar to \*(lq\fIdd\~conv=sync,noerror\fR\*(rq.
.TP
.B ""
.IP
Specify \*(lq\fB\-\-skip\-errors\fR\*(rq twice to only report a read error
once per file, instead of reporting each byte range skipped.
.TP
@@ -295,8 +296,7 @@ block of \fIBYTES\fR bytes as soon as an error occurs.
There may still be some shorter skips where the block being skipped
coincides with the end of the transfer buffer.
The same suffixes as \*(lq\fB\-\-size\fR\*(rq can be used.
.TP
.B ""
.IP
This option can only be used with \*(lq\fB\-\-skip\-errors\fR\*(rq
and is intended for use when reading from a block device, such as
\*(lq\fB\-\-skip\-errors\~\-\-error\-skip\-block\~4K\fR\*(rq
@@ -337,8 +337,7 @@ exhausted, read all of \fIFILE\fR and write it to the output.
\fIFILE\fR remains in place afterwards, unless it is
\*(lq\fB-\fR\*(rq, in which case \fBpv\fR creates a temporary file for this
purpose, and automatically removes it afterwards.
.TP
.B ""
.IP
This can be useful if you have a pipeline which generates data (your
input) quickly but you don't know the size, and you wish to pass it to some
slower process, once all of the input has been generated and you know its
@@ -356,8 +355,7 @@ Instead of transferring data, watch file descriptor \fIFD\fR of process
The \fBpv\fR process will exit when \fIFD\fR either changes to a different
file, changes read/write mode, or is closed; other data transfer modifiers -
and remote control - may not be used with this option.
.TP
.B ""
.IP
If only a \fIPID\fR is specified, then that process will be watched, and all
regular files and block devices it opens will be shown with a progress bar.
The \fBpv\fR process will exit when process \fIPID\fR exits.
@@ -489,8 +487,7 @@ Emit ECMA-48 SGR (Select Graphic Rendition) codes if the terminal supports
colours, where \fIcolour,...\fR is a comma-separated list of any of the
keywords below, or the numeric values from \fBconsole_codes\fR(4). If
colour support is not available, nothing is emitted.
.TP
.B ""
.IP
Supported keywords are:
\fBreset\fR or \fBnone\fR,
\fBblack\fR,
@@ -530,12 +527,10 @@ Supported keywords are:
\fBno\-underscore\fR or \fBno\-underline\fR,
\fBno\-blink\fR,
\fBno\-reverse\fR.
.TP
.B ""
.IP
With colours, the optional "fg-" prefix indicates foreground; a prefix of
"bg-" indicates background.
.TP
.B ""
.IP
For example, \*(lq\fB%{sgr:green,bold}TEXT%{sgr:reset}\fR\*(lq will make
\fITEXT\fR bold green on supported terminals.
.TP
@@ -666,6 +661,14 @@ the progress display:
pv \-\-format '%a %p : %L' big.log | processing-script
.EE
.in
.PP
Showing progress as lines of JSON data:
.PP
.in +4
.EX
pv \-\-numeric \-\-format '{"elapsed":%t,"bytes":%b,"rate":%r,"percentage":%{progress-amount-only}}' big.log | processing-script
.EE
.in
.\"
.SH EXIT STATUS
An exit status of 1 indicates a problem with the \*(lq\fB\-\-remote\fR\*(rq
@@ -740,7 +743,7 @@ pv InputFile | ( while read \-r line; do sleep 0.1; done; )
.in
.PP
Refer to
.UR https://codeberg.org/a-j-wood/pv/issues/105
.UR https://codeberg.org/ivarch/pv/issues/105
issue #105
.UE
for full details.
@@ -779,10 +782,8 @@ Numbers passed to \*(lq\fB\-\-last\-written\fR\*(rq,
must be integers with no suffix.
.\"
.SH REPORTING BUGS
Please report any bugs to \fBpv@ivarch.com\fR.
.PP
Alternatively, use the issue tracker linked from the
.UR https://www.ivarch.com/programs/pv.shtml
Please report bugs or feature requests via the issue tracker linked from the
.UR https://ivarch.com/p/pv
\fBpv\fR home page
.UE .
.\"
@@ -795,7 +796,7 @@ Alternatively, use the issue tracker linked from the
.BR console_codes (4)
.\"
.SH COPYRIGHT
Copyright \(co 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood.
Copyright \(co 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood.
.PP
License GPLv3+:
.UR https://www.gnu.org/licenses/gpl-3.0.html
+24 -18
View File
@@ -100,7 +100,7 @@ are explicitly switched on will be shown.
suitable for passing to a tool such as **dialog**(1). Note that
"**\--force**" is not required if "**\--numeric**" is being used.
: Combining "**\--numeric**" with "**\--bytes**" will cause the number
Combining "**\--numeric**" with "**\--bytes**" will cause the number
of bytes processed so far to be output instead of a percentage.
Adding "**\--line-mode**" as well as "**\--bytes**" writes the
number of lines instead of bytes or a percentage. Adding
@@ -109,6 +109,12 @@ are explicitly switched on will be shown.
count). Adding "**\--timer**" prefixes each output line with the
elapsed time so far, as a decimal number of seconds.
Combining "**\--numeric**" with "**\--format**" allows for custom
output. The default format string components for "**\--numeric**"
are "**%t %b %r %{progress-amount-only}**" in that order, each item
being active or inactive according to the rules above (so the
default with no other options is "**%{progress-amount-only}**".
**-q, \--quiet**
: No output. Useful if the "**\--rate-limit**" option is being used on
@@ -150,11 +156,9 @@ are explicitly switched on will be shown.
tebibytes. If "**\--si**" appears before this option, suffixes will
denote kilobytes (\*1000), megabytes, and so on instead.
: If *SIZE* starts with "**@**", the size of file whose name follows
If *SIZE* starts with "**@**", the size of file whose name follows
the @ will be used.
:
**-g, \--gauge**
: If the progress bar is shown but the size is not known, then instead
@@ -167,7 +171,7 @@ are explicitly switched on will be shown.
progress bar will only move when a new line is found, and the value
passed to "**\--size**" will be interpreted as a line count.
: If this option is used without "**\--size**", the \"total size\" (in
If this option is used without "**\--size**", the \"total size\" (in
this case, total line count) is calculated by reading through all
input files once before transfer starts. If any inputs are pipes or
non-regular files, or are unreadable, the total size will not be
@@ -290,7 +294,7 @@ are explicitly switched on will be shown.
errors in a row then the skips will move up to chunks of 512. This
is intended to be similar to "*dd conv=sync,noerror*".
: Specify "**\--skip-errors**" twice to only report a read error once
Specify "**\--skip-errors**" twice to only report a read error once
per file, instead of reporting each byte range skipped.
**-Z BYTES, \--error-skip-block BYTES**
@@ -303,7 +307,7 @@ are explicitly switched on will be shown.
coincides with the end of the transfer buffer. The same suffixes as
"**\--size**" can be used.
: This option can only be used with "**\--skip-errors**" and is
This option can only be used with "**\--skip-errors**" and is
intended for use when reading from a block device, such as
"**\--skip-errors \--error-skip-block 4K**" to skip in 4 kibibyte
blocks. This will speed up reads from faulty media, at the expense
@@ -347,7 +351,7 @@ are explicitly switched on will be shown.
**pv** creates a temporary file for this purpose, and automatically
removes it afterwards.
: This can be useful if you have a pipeline which generates data (your
This can be useful if you have a pipeline which generates data (your
input) quickly but you don\'t know the size, and you wish to pass it
to some slower process, once all of the input has been generated and
you know its size, so you can see its progress. Note that when doing
@@ -365,7 +369,7 @@ are explicitly switched on will be shown.
closed; other data transfer modifiers - and remote control - may not
be used with this option.
: If only a *PID* is specified, then that process will be watched, and
If only a *PID* is specified, then that process will be watched, and
all regular files and block devices it opens will be shown with a
progress bar. The **pv** process will exit when process *PID* exits.
@@ -515,7 +519,7 @@ contain the following sequences:
**console_codes**(4). If colour support is not available, nothing is
emitted.
: Supported keywords are: **reset** or **none**, **black**, **red**,
Supported keywords are: **reset** or **none**, **black**, **red**,
**green**, **brown** or **yellow**, **blue**, **magenta**, **cyan**,
**white**, **fg-black**, **fg-red**, **fg-green**, **fg-brown** or
**fg-yellow**, **fg-blue**, **fg-magenta**, **fg-cyan**,
@@ -526,10 +530,10 @@ contain the following sequences:
**reverse**, **no-bold** or **no-dim**, **no-italic**,
**no-underscore** or **no-underline**, **no-blink**, **no-reverse**.
: With colours, the optional \"fg-\" prefix indicates foreground; a
With colours, the optional \"fg-\" prefix indicates foreground; a
prefix of \"bg-\" indicates background.
: For example, "**%{sgr:green,bold}TEXT%{sgr:reset}**" will make
For example, "**%{sgr:green,bold}TEXT%{sgr:reset}**" will make
*TEXT* bold green on supported terminals.
**%%**
@@ -629,6 +633,10 @@ part of the progress display:
pv --format '%a %p : %L' big.log | processing-script
Showing progress as lines of JSON data:
pv --numeric --format '{"elapsed":%t,"bytes":%b,"rate":%r,"percentage":%{progress-amount-only}}' big.log | processing-script
# EXIT STATUS
An exit status of 1 indicates a problem with the "**\--remote**" or
@@ -701,7 +709,7 @@ brackets to force the use of a subshell:
pv InputFile | ( while read -r line; do sleep 0.1; done; )
Refer to [issue #105](https://codeberg.org/a-j-wood/pv/issues/105) for
Refer to [issue #105](https://codeberg.org/ivarch/pv/issues/105) for
full details.
The "**\--remote**" option requires that either */run/user/\<uid\>/* or
@@ -734,10 +742,8 @@ be integers with no suffix.
# REPORTING BUGS
Please report any bugs to **pv@ivarch.com**.
Alternatively, use the issue tracker linked from the [**pv** home
page](https://www.ivarch.com/programs/pv.shtml).
Please report bugs or feature requests via the issue tracker linked from
the [**pv** home page](https://ivarch.com/p/pv).
# SEE ALSO
@@ -746,7 +752,7 @@ page](https://www.ivarch.com/programs/pv.shtml).
# COPYRIGHT
Copyright © 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew
Copyright © 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew
Wood.
License GPLv3+: [GNU GPL version 3 or
+3
View File
@@ -10,6 +10,9 @@
# All of the release artefacts are placed in a "RELEASE-x" directory, where
# "x" is the version.
#
# Copyright 2024-2025 Andrew Wood
# License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
#
# Version: 0.0.2 / 16 Dec 2024
srcdir="$(awk '/^VPATH/{print $NF}' < Makefile | sed -n 1p)"
+4 -1
View File
@@ -21,7 +21,10 @@
# (without timestamps), "framework-output.log" (messages from this script),
# and the "config.log", "test-suite.log", and "tests/" from the build area.
#
# Requires "scw" (https://www.ivarch.com/programs/scw.shtml).
# Requires "scw" (https://ivarch.com/p/scw).
#
# Copyright 2024-2025 Andrew Wood
# License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
#
# Version: 0.0.1 / 16 Dec 2024
+37 -37
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: 2024-10-13 20:43+0000\n"
"Last-Translator: mmatous <mmatous@users.noreply.translate.codeberg.org>\n"
"Language-Team: Czech <https://translate.codeberg.org/projects/pv/pv/cs/>\n"
@@ -285,69 +285,69 @@ msgstr "(vstup)"
msgid "state allocation failed"
msgstr "selhala alokace stavu"
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "nebylo možné zjistit informace o souboru"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr "je adresář"
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr "selhalo vytváření jména pro soubor v sysfs"
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr "selhalo čtení velikosti souboru v sysfs"
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr "selhalo otevření blokového zařízení"
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr "selhalo zjištění velikosti blokového zařízení"
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "selhala alokace struktury pro volby"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "selhala alokace struktury pro argv"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "očekáván celočíselný argument"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "očekáván číselný argument"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "očekáváno ID procesu nebo dvojice PID:DS"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "neplatné ID procesu"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Zkuste `%s --help' pro více informací."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "Zkuste `%s --h' pro více informací."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
@@ -355,19 +355,19 @@ msgstr ""
"při sledování deskriptorů souborů nelze použít řádkový mód nebo volby pro "
"modifikaci přenosu"
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr "při sledování deskriptorů souborů nelze pozicování kurzoru použít"
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr "při sledování deskriptorů souborů nelze použít vzdálené ovládání"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr "při sledování deskriptorů souborů nelze použít přenos souborů"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "není dostupné na systémech bez /proc/self/fdinfo"
@@ -419,7 +419,7 @@ msgstr "yzafpnum kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "selhala alokace vyrovnávací paměti"
@@ -451,26 +451,26 @@ msgstr "(žádný)"
msgid "(stdin)"
msgstr "(stdin)"
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr "b/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr "/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "B/s"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr "b"
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr "B"
@@ -482,15 +482,15 @@ msgstr "ETA"
msgid "FIN"
msgstr "FIN"
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr "rychlost min/avg/max/std"
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr "rychlost neměřena"
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -502,7 +502,7 @@ msgstr "pid"
msgid "history structure allocation failed"
msgstr "selhala alokace struktury historie"
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr "selhala alokace seznamu souborů"
@@ -542,11 +542,11 @@ msgstr "selhalo vynulování intervalového časovače"
msgid "line position buffer allocation failed"
msgstr "selhala alokace vyrovnávací paměti pro pozici v řádcích"
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "zápis selhal"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "selhalo volání select"
+47 -48
View File
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"PO-Revision-Date: 2024-10-13 20:43+0000\n"
"Last-Translator: fnetX <otto@codeberg.org>\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: 2025-01-14 20:39+0000\n"
"Last-Translator: Benny <benny@users.noreply.translate.codeberg.org>\n"
"Language-Team: German <https://translate.codeberg.org/projects/pv/pv/de/>\n"
"Language: de\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.7.2\n"
"X-Generator: Weblate 5.9.2\n"
"Date: 1999-06-01 15:18:29+0100\n"
"From: Andrew Wood <ivarch@ubik>\n"
"Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-"
@@ -158,19 +158,19 @@ msgstr "setze den NAMEn für visuelle Darstellung"
#: src/main/help.c:311
msgid "STYLE"
msgstr ""
msgstr "Stil"
#: src/main/help.c:312
msgid "set default bar style to NAME"
msgstr ""
msgstr "setze die voreingestellte Darstellung auf NAME"
#: src/main/help.c:314
msgid "SPEC"
msgstr ""
msgstr "STIL"
#: src/main/help.c:315
msgid "also send progress to SPEC"
msgstr ""
msgstr "Fortschritt auch an SPEC senden"
#: src/main/help.c:318
msgid "output transfer statistics at the end"
@@ -288,7 +288,7 @@ msgstr ""
#: src/main/help.c:555
msgid "Supported format sequences:"
msgstr ""
msgstr "unterstützte Formate:"
#: src/main/help.c:569
#, c-format
@@ -303,69 +303,69 @@ msgstr "(eingabe)"
msgid "state allocation failed"
msgstr "Speicherzuweisung für `state' fehlgeschlagen"
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "konnte Dateiinformationen nicht lesen"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr "ist ein Verzeichnis"
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr "konnte Sysfs-Dateinamen nicht erzeugen"
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr "konnte Größe der Sysfs-Datei nicht lesen"
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr "konnte Blockgerät nicht öffnen"
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr "konnte Größe des Blockgeräts nicht ermitteln"
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "Speicherzuweisung für `option' fehlgeschlagen"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "Speicherzuweisung für `argv' der Option fehlgeschlagen"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
msgstr "numerischen Wert nicht verstanden"
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "Ganzzahliges Argument erwartet"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "numerisches Argument erwartet"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "Prozess-ID oder PID:FD-Paar erwartet"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "ungültige Prozess-ID"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "`%s --help' zeigt weitere Informationen an."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "`%s -h' zeigt weitere Informationen an."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
@@ -373,24 +373,24 @@ msgstr ""
"Beim Beobachten von Dateideskriptoren können keine Optionen für den "
"Zeilenmodus oder den Übertragungsmodifikator verwendet werden"
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr ""
"Beim Beobachten von Dateideskriptoren kann Cursor-Positionierung nicht "
"verwendet werden"
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr ""
"Beim Beobachten von Dateideskriptoren kann die Fernbedienung nicht verwenden "
"werden"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr ""
"Beim Beobachten von Dateideskriptoren können Dateien nicht übertragen werden"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "Nicht verfügbar auf Systemen ohne /proc/self/fdinfo"
@@ -442,7 +442,7 @@ msgstr "yzafpnµm kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnµm KMGTPEZY"
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "Speicherzuweisung für den Puffer fehlgeschlagen"
@@ -474,26 +474,26 @@ msgstr "(keine)"
msgid "(stdin)"
msgstr "(stdin)"
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr "b/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr "/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "B/s"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr "b"
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr "B"
@@ -505,16 +505,15 @@ msgstr "ETA"
msgid "FIN"
msgstr "Endzeit"
#: src/pv/loop.c:550
#, fuzzy
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr "Rate min/mittel/max/mdev"
msgstr "Rate min/mittel/max/abweichung"
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr "Übertragungsrate nicht gemessen"
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -526,7 +525,7 @@ msgstr "pid"
msgid "history structure allocation failed"
msgstr "Speicherzuweisung für `history' fehlgeschlagen"
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr "Speicherzuweisung für die Dateiliste fehlgeschlagen"
@@ -566,11 +565,11 @@ msgstr "konnte Intervall-Timer nicht löschen"
msgid "line position buffer allocation failed"
msgstr "Zuweisung des Zeilenpuffers fehlgeschlagen"
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "write-Aufruf fehlgeschlagen"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "select-Aufruf fehlgeschlagen"
+40 -40
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -279,87 +279,87 @@ msgstr ""
msgid "state allocation failed"
msgstr ""
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr ""
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr ""
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr ""
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr ""
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr ""
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr ""
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr ""
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr ""
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr ""
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr ""
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr ""
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr ""
#: src/main/options.c:698
#, c-format
msgid "Try `%s --help' for more information."
msgstr ""
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr ""
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr ""
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
msgstr ""
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr ""
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr ""
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr ""
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr ""
@@ -411,7 +411,7 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr ""
@@ -443,26 +443,26 @@ msgstr ""
msgid "(stdin)"
msgstr ""
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr ""
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr ""
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr ""
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr ""
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr ""
@@ -474,15 +474,15 @@ msgstr ""
msgid "FIN"
msgstr ""
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr ""
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr ""
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -494,7 +494,7 @@ msgstr ""
msgid "history structure allocation failed"
msgstr ""
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr ""
@@ -534,11 +534,11 @@ msgstr ""
msgid "line position buffer allocation failed"
msgstr ""
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr ""
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr ""
+63 -63
View File
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"PO-Revision-Date: 2024-10-12 11:13+0000\n"
"Last-Translator: a-j-wood <a-j-wood@users.noreply.translate.codeberg.org>\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: 2025-05-31 08:58+0000\n"
"Last-Translator: milimarg <milimarg@noreply.codeberg.org>\n"
"Language-Team: French <https://translate.codeberg.org/projects/pv/pv/fr/>\n"
"Language: fr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.7.2\n"
"X-Generator: Weblate 5.11.4\n"
"Date: 1999-06-01 15:18:29+0100\n"
"From: Andrew Wood <ivarch@ubik>\n"
"Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-"
@@ -159,19 +159,19 @@ msgstr "préfixer les informations visuelles avec NOM"
#: src/main/help.c:311
msgid "STYLE"
msgstr ""
msgstr "STYLE"
#: src/main/help.c:312
msgid "set default bar style to NAME"
msgstr ""
msgstr "définir le style de barre par défaut à NOM"
#: src/main/help.c:314
msgid "SPEC"
msgstr ""
msgstr "SPÉCIFICATION"
#: src/main/help.c:315
msgid "also send progress to SPEC"
msgstr ""
msgstr "aussi envoyer la progression à SPÉCIFICATION"
#: src/main/help.c:318
msgid "output transfer statistics at the end"
@@ -289,7 +289,7 @@ msgstr ""
#: src/main/help.c:555
msgid "Supported format sequences:"
msgstr ""
msgstr "Séquences de formatage supportées :"
#: src/main/help.c:569
#, c-format
@@ -304,69 +304,69 @@ msgstr "(entrée)"
msgid "state allocation failed"
msgstr "échec de l'allocation de mémoire de condition"
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "échec à statuer sur le fichier"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr "est un répertoire"
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr ""
msgstr "échec de génération du nom de fichier sysfs"
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr ""
msgstr "échec de la lecture de la taille du fichier sysfs"
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr ""
msgstr "échec de l'ouverture du périphérique de bloc"
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr ""
msgstr "échec de l'évaluation de la taille du périphérique de bloc"
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "l'allocation pour la structure d'une option a échoué"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "l'allocation pour la structure de l'option argv a échoué"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
msgstr "valeur numérique non comprise"
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "Valeur entière attendue"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "Valeur numérique attendue"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "ID de processus ou paire pid:fd attendue"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "ID de processus non valide"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Essayez `%s --help' pour plus d'informations."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "Essayez `%s -h' pour plus d'informations."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
@@ -374,25 +374,25 @@ msgstr ""
"impossible d'utiliser le mode ligne ou les options de modificateur de "
"transfert lors de la visualisation des descripteurs de fichiers"
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr ""
"impossible d'utiliser le positionnement du curseur lors de la visualisation "
"des descripteurs de fichier"
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr ""
"impossible d'utiliser la télécommande lors de la visualisation des "
"descripteurs de fichiers"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr ""
"impossible de transférer des fichiers lorsque vous regardez des descripteurs "
"de fichiers"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "non disponible sur les systèmes sans /proc/self/fdinfo"
@@ -440,13 +440,13 @@ msgstr "échec de l'ouverture du terminal"
#: src/pv/display.c:249
msgid "yzafpnum kMGTPEZY"
msgstr ""
msgstr "yzafpnum kMGTPEZY"
#: src/pv/display.c:267
msgid "yzafpnum KMGTPEZY"
msgstr ""
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "échec de l'allocation de mémoire tampon"
@@ -476,28 +476,28 @@ msgstr "(aucun)"
#: src/pv/file.c:414
msgid "(stdin)"
msgstr ""
msgstr "(stdin)"
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr ""
msgstr "b/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr "/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "O/s"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr ""
msgstr "b"
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr "O"
@@ -507,29 +507,29 @@ msgstr "ETA"
#: src/pv/format/fineta.c:81
msgid "FIN"
msgstr ""
msgstr "FIN"
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr ""
msgstr "taux min/moy/max/écart-type"
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr ""
msgstr "taux non mesuré"
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
#: src/pv/watchpid.c:385 src/pv/watchpid.c:406
msgid "pid"
msgstr ""
msgstr "pid"
#: src/pv/state.c:40
msgid "history structure allocation failed"
msgstr "l'allocation de la structure de l'historique a échoué"
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr "échec de l'allocation de la liste de fichiers"
@@ -559,28 +559,28 @@ msgstr "aucun tampon de transfert alloué"
#: src/pv/transfer.c:676
msgid "failed to set interval timer"
msgstr ""
msgstr "La définition de l'intervalle du minuteur a échoué"
#: src/pv/transfer.c:702
msgid "failed to clear interval timer"
msgstr ""
msgstr "La réinitialisation des intervalles du minuteur a échoué"
#: src/pv/transfer.c:744
msgid "line position buffer allocation failed"
msgstr ""
msgstr "L'allocation de la position de la ligne de la mémoire tampon a échoué"
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "l'écriture a échoué"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "l'appel de sélection a échoué"
#: src/pv/watchpid.c:109 src/pv/watchpid.c:121 src/pv/watchpid.c:130
#: src/pv/watchpid.c:184 src/pv/watchpid.c:193 src/pv/watchpid.c:204
msgid "fd"
msgstr ""
msgstr "fd"
#: src/pv/watchpid.c:130 src/pv/watchpid.c:204
msgid "not a regular file or block device"
+45 -45
View File
@@ -5,9 +5,9 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"PO-Revision-Date: 2024-10-20 14:07+0000\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: 2025-01-15 19:08+0000\n"
"Last-Translator: coralpink <coralpink@users.noreply.translate.codeberg.org>\n"
"Language-Team: Polish <https://translate.codeberg.org/projects/pv/pv/pl/>\n"
"Language: pl\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.7.2\n"
"X-Generator: Weblate 5.9.2\n"
#: src/main/help.c:236
msgid "show progress bar"
@@ -152,19 +152,19 @@ msgstr "poprzedź informacje prefiksem NAZWA"
#: src/main/help.c:311
msgid "STYLE"
msgstr ""
msgstr "STYL"
#: src/main/help.c:312
msgid "set default bar style to NAME"
msgstr ""
msgstr "ustaw domyślny styl paska postępu na STYL"
#: src/main/help.c:314
msgid "SPEC"
msgstr ""
msgstr "SPEC"
#: src/main/help.c:315
msgid "also send progress to SPEC"
msgstr ""
msgstr "wysyłaj postęp również do SPEC"
#: src/main/help.c:318
msgid "output transfer statistics at the end"
@@ -283,7 +283,7 @@ msgstr ""
#: src/main/help.c:555
msgid "Supported format sequences:"
msgstr ""
msgstr "Wspierane sekwencje formatowania:"
#: src/main/help.c:569
#, c-format
@@ -298,69 +298,69 @@ msgstr "(wejście)"
msgid "state allocation failed"
msgstr "alokacja stanu programu nie powiodła się"
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "nie udało się wykonać operacji stat na pliku"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr "jest katalogiem"
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr "nie udało się wygenerować nazwy pliku dla sysfs"
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr "nie udało się odczytać rozmiaru pliku sysfs"
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr "nie udało się otworzyć urządzenia blokowego"
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr "nie udało się ustalić rozmiaru urządzenia blokowego"
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "nie udało się zaalokować struktur opcji"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "nie udało się zaalokować struktur opcji argv"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
msgstr "wartość liczbowa niezrozumiana"
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "oczekiwany argument typu liczby całkowitej"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "oczekiwany argument liczbowy"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "oczekiwany proces ID lub para PID:FD"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "niepoprawne ID procesu"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Spróbuj `%s --help' by uzyskać więcej informacji."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "Spróbuj `%s -h' by uzyskać więcej informacji."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
@@ -368,23 +368,23 @@ msgstr ""
"nie można użyć trybu zliczania linii lub opcji modyfikujących przesył "
"łącznie z opcją obserwowania deskryptorów plików"
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr ""
"nie można użyć pozycjonowania kursora łącznie z opcją obserwowania "
"deskryptorów plików"
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr ""
"nie można użyć opcji zaktualizowania ustawień procesu łącznie z opcją "
"obserwowania deskryptorów plików"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr "nie można przesyłać plików z opcją obserwowania deskryptorów plików"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "niedostępne na systemach bez /proc/self/fdinfo"
@@ -437,7 +437,7 @@ msgstr "yzafpnum kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "nie udało się zaalokować bufora"
@@ -470,26 +470,26 @@ msgstr "(brak)"
msgid "(stdin)"
msgstr "(stdin)"
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr "b/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr "/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "B/s"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr "b"
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr "B"
@@ -501,15 +501,15 @@ msgstr "ETA"
msgid "FIN"
msgstr "FIN"
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr "prędkość min/śr/max/odch"
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr "prędkość niezmierzona"
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -521,7 +521,7 @@ msgstr "pid"
msgid "history structure allocation failed"
msgstr "nie udało się zaalokować struktury historii"
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr "nie udało się zaalokować listy plików"
@@ -562,11 +562,11 @@ msgstr "nie udało się wyczyścić interwału czasowego"
msgid "line position buffer allocation failed"
msgstr "alokacja buforu pozycji linii nie powiodła się"
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "błąd zapisu"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "nie udało się wywołać funkcji select"
+37 -37
View File
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -289,69 +289,69 @@ msgstr ""
msgid "state allocation failed"
msgstr "alocação de memória de status falhou"
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "erro obtendo informações do arquivo"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr ""
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr ""
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr ""
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr ""
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr ""
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "erro na alocação da estrutura de opções"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "erro na alocação da estrutura de opções argv"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "argumento inteiro esperado"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "argumento numérico esperado"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "ID do processo ou par pid:fd esperado"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "ID de processo inválido"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Tente `%s --help' para maiores informações."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "Tente `%s -h' para maiores informações."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
@@ -359,21 +359,21 @@ msgstr ""
"não pode usar o modo de linha ou opções de modificador de transferência ao "
"assistir os descritores de arquivo"
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr ""
"não pode usar o posicionamento do cursor ao observar os descritores de "
"arquivo"
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr "não pode usar o controle remoto ao assistir os descritores de arquivo"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr "não pode transferir arquivos ao assistir descritores de arquivo"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "não disponível em sistemas sem /proc/self/fdinfo"
@@ -425,7 +425,7 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "erro alocando o buffer"
@@ -457,26 +457,26 @@ msgstr ""
msgid "(stdin)"
msgstr ""
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr ""
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr ""
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "B/s"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr ""
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr ""
@@ -488,15 +488,15 @@ msgstr "ETA"
msgid "FIN"
msgstr ""
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr ""
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr ""
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -508,7 +508,7 @@ msgstr ""
msgid "history structure allocation failed"
msgstr ""
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr ""
@@ -548,11 +548,11 @@ msgstr ""
msgid "line position buffer allocation failed"
msgstr ""
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "erro de gravação"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "erro na chamada da função select"
+43 -43
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"PO-Revision-Date: 2024-10-22 18:07+0000\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: 2025-01-15 19:08+0000\n"
"Last-Translator: 0ko <0ko@users.noreply.translate.codeberg.org>\n"
"Language-Team: Russian <https://translate.codeberg.org/projects/pv/pv/ru/>\n"
"Language: ru\n"
@@ -11,7 +11,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.8.1\n"
"X-Generator: Weblate 5.9.2\n"
#: src/main/help.c:236
msgid "show progress bar"
@@ -143,11 +143,11 @@ msgstr "писать ИМЯ до визуальной информации"
#: src/main/help.c:311
msgid "STYLE"
msgstr ""
msgstr "СТИЛЬ"
#: src/main/help.c:312
msgid "set default bar style to NAME"
msgstr ""
msgstr "задать стиль полоски по умолчанию как НАЗВАНИЕ"
#: src/main/help.c:314
msgid "SPEC"
@@ -271,7 +271,7 @@ msgstr ""
#: src/main/help.c:555
msgid "Supported format sequences:"
msgstr ""
msgstr "Поддерживаемые последовательности:"
#: src/main/help.c:569
#, c-format
@@ -286,87 +286,87 @@ msgstr "(ввод)"
msgid "state allocation failed"
msgstr ""
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "не удалось получить информацию о файле"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr "является каталогом"
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr "не удалось создать имя файла sysfs"
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr "не удалось узнать размер файла sysfs"
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr "не удалось открыть блочное устройство"
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr "не удалось определить размер блочного устройства"
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "не удалось выделить память для структуры опций"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "не удалось выделить память для структуры опций argv"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
msgstr "число не распознано"
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "ожидалось целое число"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "ожидалось число"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "ожидался ИД процесса или пара ИДпр:ДФ"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "неправильный ИД процесса"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Выполните `%s --help' для получения подробностей."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "Выполните `%s -h' для получения подробностей."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
msgstr ""
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr ""
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr "удалённое управление невозможно при отслеживании дескрипторов файлов"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr "передача файлов невозможна при отслеживании дескрипторов файлов"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "невозможно на системах без /proc/self/fdinfo"
@@ -420,7 +420,7 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "не удалось выделить память для буфера"
@@ -452,26 +452,26 @@ msgstr "(нет)"
msgid "(stdin)"
msgstr "(стд. ввод)"
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr "бит/с"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr "/с"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "байт/с"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr "бит"
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr "байт"
@@ -483,15 +483,15 @@ msgstr "ОЖИД"
msgid "FIN"
msgstr "ЗАВЕРШ"
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr "скор. мин/сред/макс/дев"
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr "скорость не изменяется"
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -503,7 +503,7 @@ msgstr "ИДпр"
msgid "history structure allocation failed"
msgstr "не удалось выделить память для структуры истории"
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr "не удалось выделить память для списка файлов"
@@ -543,11 +543,11 @@ msgstr "не удалось очистить измеритель временн
msgid "line position buffer allocation failed"
msgstr ""
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "запись не удалась"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "запрос выборки не удался"
+37 -37
View File
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: pv 1.8.14\n"
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-22 12:09+0000\n"
"Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n"
"POT-Creation-Date: 2025-07-26 14:50+0100\n"
"PO-Revision-Date: 2024-10-12 23:51+0000\n"
"Last-Translator: a-j-wood <a-j-wood@users.noreply.translate.codeberg.org>\n"
"Language-Team: Turkish <https://translate.codeberg.org/projects/pv/pv/tr/>\n"
@@ -286,69 +286,69 @@ msgstr "(giriş)"
msgid "state allocation failed"
msgstr "durum tahsisi başarısız oldu"
#: src/main/options.c:144 src/pv/file.c:324
#: src/main/options.c:146 src/pv/file.c:324
msgid "failed to stat file"
msgstr "dosya statüsünde başarısız oldu"
#: src/main/options.c:158
#: src/main/options.c:160
msgid "is a directory"
msgstr "bir dizindir"
#: src/main/options.c:187
#: src/main/options.c:189
msgid "failed to generate sysfs filename"
msgstr "sysfs dosya adı oluşturulamadı"
#: src/main/options.c:209
#: src/main/options.c:211
msgid "failed to read sysfs size file"
msgstr "sysfs boyut dosyası okunamadı"
#: src/main/options.c:229
#: src/main/options.c:231
msgid "failed to open block device"
msgstr "blok aygıtı açılamadı"
#: src/main/options.c:239
#: src/main/options.c:241
msgid "failed to determine size of block device"
msgstr "blok aygıtının boyutu belirlenemedi"
#: src/main/options.c:345
#: src/main/options.c:347
msgid "option structure allocation failed"
msgstr "seçenek yapısı tahsisi başarısız oldu"
#: src/main/options.c:364
#: src/main/options.c:366
msgid "option structure argv allocation failed"
msgstr "seçenek yapısı argv tahsisi başarısız oldu"
#: src/main/options.c:417
#: src/main/options.c:419
msgid "numeric value not understood"
msgstr ""
#: src/main/options.c:435
#: src/main/options.c:437
msgid "integer argument expected"
msgstr "tamsayı bağımsız değişkeni bekleniyor"
#: src/main/options.c:447
#: src/main/options.c:449
msgid "numeric argument expected"
msgstr "sayısal bağımsız değişken bekleniyor"
#: src/main/options.c:458
#: src/main/options.c:460
msgid "process ID or pid:fd pair expected"
msgstr "süreç kimliği (ID) veya pid:fd çifti bekleniyor"
#: src/main/options.c:465
#: src/main/options.c:467
msgid "invalid process ID"
msgstr "geçersiz süreç kimliği (ID)"
#: src/main/options.c:698
#: src/main/options.c:700
#, c-format
msgid "Try `%s --help' for more information."
msgstr "Daha fazla bilgi için `%s --help' seçeneğini deneyin."
#: src/main/options.c:700
#: src/main/options.c:702
#, c-format
msgid "Try `%s -h' for more information."
msgstr "Daha fazla bilgi için `%s -h' seçeneğini deneyin."
#: src/main/options.c:731
#: src/main/options.c:733
msgid ""
"cannot use line mode or transfer modifier options when watching file "
"descriptors"
@@ -356,19 +356,19 @@ msgstr ""
"dosya tanımlayıcılarını izlerken satır modu veya aktarım değiştirici "
"seçeneklerini kullanamaz"
#: src/main/options.c:740
#: src/main/options.c:742
msgid "cannot use cursor positioning when watching file descriptors"
msgstr "dosya tanımlayıcılarını izlerken imleç konumlandırmayı kullanamaz"
#: src/main/options.c:749
#: src/main/options.c:751
msgid "cannot use remote control when watching file descriptors"
msgstr "dosya tanımlayıcılarını izlerken uzaktan kumandayı kullanamaz"
#: src/main/options.c:758
#: src/main/options.c:760
msgid "cannot transfer files when watching file descriptors"
msgstr "dosya tanımlayıcıları izlenirken dosya aktarılamıyor"
#: src/main/options.c:773
#: src/main/options.c:775
msgid "not available on systems without /proc/self/fdinfo"
msgstr "/proc/self/fdinfo olmayan sistemlerde kullanılamaz"
@@ -421,7 +421,7 @@ msgstr "yzafpnum kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:1067 src/pv/transfer.c:1056
#: src/pv/display.c:989 src/pv/transfer.c:1057
msgid "buffer allocation failed"
msgstr "arabellek tahsisi başarısız oldu"
@@ -453,26 +453,26 @@ msgstr "(yok)"
msgid "(stdin)"
msgstr "(stdin)"
#: src/pv/format/averagerate.c:30 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:32 src/pv/loop.c:551
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:93
#: src/pv/format/rate.c:37 src/pv/loop.c:562
msgid "b/s"
msgstr "b/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41
msgid "/s"
msgstr "/s"
#: src/pv/format/averagerate.c:34 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:36 src/pv/loop.c:551
#: src/pv/format/averagerate.c:38 src/pv/format/progressbar.c:97
#: src/pv/format/rate.c:41 src/pv/loop.c:562
msgid "B/s"
msgstr "B/s"
#: src/pv/format/bytes.c:31
#: src/pv/format/bytes.c:37
msgid "b"
msgstr "b"
#: src/pv/format/bytes.c:35 src/pv/transfer.c:594
#: src/pv/format/bytes.c:41 src/pv/transfer.c:594
msgid "B"
msgstr "B"
@@ -484,15 +484,15 @@ msgstr "ETA"
msgid "FIN"
msgstr "FIN"
#: src/pv/loop.c:550
#: src/pv/loop.c:561
msgid "rate min/avg/max/mdev"
msgstr "oran min/ortalama/maks/standart sapma"
#: src/pv/loop.c:562
#: src/pv/loop.c:573
msgid "rate not measured"
msgstr "oran ölçülmedi"
#: src/pv/loop.c:772 src/pv/loop.c:823 src/pv/loop.c:876 src/pv/watchpid.c:99
#: src/pv/loop.c:783 src/pv/loop.c:834 src/pv/loop.c:887 src/pv/watchpid.c:99
#: src/pv/watchpid.c:109 src/pv/watchpid.c:120 src/pv/watchpid.c:128
#: src/pv/watchpid.c:165 src/pv/watchpid.c:184 src/pv/watchpid.c:192
#: src/pv/watchpid.c:202 src/pv/watchpid.c:300 src/pv/watchpid.c:308
@@ -504,7 +504,7 @@ msgstr "pid"
msgid "history structure allocation failed"
msgstr "geçmiş yapısı tahsisi başarısız oldu"
#: src/pv/state.c:593 src/pv/state.c:604
#: src/pv/state.c:617 src/pv/state.c:628
msgid "file list allocation failed"
msgstr "dosya listesi tahsisi başarısız oldu"
@@ -544,11 +544,11 @@ msgstr "aralık zamanlayıcısı temizlenemedi"
msgid "line position buffer allocation failed"
msgstr "satır konumu arabellek tahsisi başarısız oldu"
#: src/pv/transfer.c:917
#: src/pv/transfer.c:918
msgid "write failed"
msgstr "yazma başarısız"
#: src/pv/transfer.c:1154
#: src/pv/transfer.c:1159
msgid "select call failed"
msgstr "seçme çağrısı başarısız oldu"
+1 -1
View File
@@ -3,7 +3,7 @@
* `configure' script. Include this after config.h and before anything
* else.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+3
View File
@@ -194,6 +194,9 @@
/* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define to 1 if you have the <sys/shm.h> header file. */
#undef HAVE_SYS_SHM_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Global program option structure and the parsing function prototype.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions internal to the PV library. Include "config.h" first.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions used across the program.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Output debugging information.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Output command-line help to stdout.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -2,7 +2,7 @@
* Main program entry point - read the command line options, then perform
* the appropriate actions.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+3 -1
View File
@@ -1,7 +1,7 @@
/*
* Parse command-line options.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -57,6 +57,8 @@ void opts_free( /*@only@ */ opts_t opts)
free(opts->pidfile);
if (NULL != opts->output)
free(opts->output);
if (NULL != opts->default_bar_style)
free(opts->default_bar_style);
if (NULL != opts->store_and_forward_file)
free(opts->store_and_forward_file);
if (NULL != opts->extra_display)
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Remote-control functions.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+2 -2
View File
@@ -1,7 +1,7 @@
/*
* Output version information to stdout.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -23,7 +23,7 @@ void display_version(void)
/* GNU standard first line format: program and version only */
printf("%s %s\n", PACKAGE_NAME, PACKAGE_VERSION);
/* GNU standard second line format - "Copyright" always in English */
printf("Copyright %s %s\n", "2024", "Andrew Wood");
printf("Copyright %s %s\n", "2025", "Andrew Wood");
/* GNU standard license line and free software notice */
printf("%s\n", _("License: GPLv3+ <https://www.gnu.org/licenses/gpl-3.0.html>"));
printf("%s\n", _("This is free software: you are free to change and redistribute it."));
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions for updating the calculated state of the transfer.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -10,7 +10,7 @@
* terminal, so we try to use a lockfile if terminal locking doesn't work,
* and finally abort if even that is unavailable.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+2 -86
View File
@@ -1,7 +1,7 @@
/*
* Display functions.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -470,84 +470,6 @@ pvdisplay_bytecount_t pv_formatter_segmentcontent(char *content, pvformatter_arg
}
/*
* Populate the display buffer for numeric-output mode.
*
* Called by pv_format() and has the same semantics.
*
* In numeric output mode, our output is just the percentage completion, as
* a number by itself.
*
* With --timer, we prefix the output with the elapsed time.
*
* With --bytes, we output the bytes transferred so far instead of the
* percentage (or we output the number lines transferred, if --lines was
* given with --bytes).
*
* If --rate was given, we output the current transfer rate instead of the
* percentage. With --bytes as well, the rate is given after the
* bytes/lines.
*/
static bool pv__format_numeric(pvstate_t state, pvdisplay_t display)
{
char msg_timer[128]; /* flawfinder: ignore */
char msg_bytes[128]; /* flawfinder: ignore */
char msg_rate[128]; /* flawfinder: ignore */
char msg_percent[128]; /* flawfinder: ignore */
bool first_item, show_percentage;
/* flawfinder: each buffer is kept safe by pv_snprintf(). */
if (NULL == display->display_buffer)
return false;
first_item = true;
show_percentage = true;
msg_timer[0] = '\0';
if (display->showing_timer) {
(void) pv_snprintf(msg_timer, sizeof(msg_timer), "%s%.4Lf", first_item ? "" : " ",
state->transfer.elapsed_seconds);
first_item = false;
}
msg_bytes[0] = '\0';
if (display->showing_bytes) {
(void) pv_snprintf(msg_bytes, sizeof(msg_bytes),
"%s%lld", first_item ? "" : " ",
(long long) ((state->control.bits ? 8 : 1) * state->transfer.transferred));
first_item = false;
show_percentage = false;
}
msg_rate[0] = '\0';
if (display->showing_rate) {
(void) pv_snprintf(msg_rate, sizeof(msg_rate),
"%s%.4Lf", first_item ? "" : " ",
((state->control.bits ? 8.0 : 1.0) * state->calc.transfer_rate));
first_item = false;
show_percentage = false;
}
msg_percent[0] = '\0';
if (show_percentage) {
(void) pv_snprintf(msg_percent, sizeof(msg_percent),
"%s%.0f", first_item ? "" : " ", state->calc.percentage);
first_item = false;
}
(void) pv_snprintf(display->display_buffer,
display->display_buffer_size, "%.39s%.39s%.39s%.39s\n", msg_timer, msg_bytes,
msg_rate, msg_percent);
display->display_string_bytes = strlen(display->display_buffer); /* flawfinder: ignore */
/* flawfinder: always \0 terminated by pv_snprintf(). */
display->display_string_width = display->display_string_bytes;
return true;
}
/*
* Format sequence lookup table.
*/
@@ -1075,13 +997,6 @@ bool pv_format(pvstate_t state, /*@null@ */ const char *format_supplied, pvdispl
display->display_buffer[0] = '\0';
}
/*
* Use the numeric mode function if we're in numeric mode.
*/
if (state->control.numeric) {
return pv__format_numeric(state, display);
}
/* Clear the SGR active codes flag, for the SGR formatter. */
display->sgr_code_active = false;
@@ -1310,6 +1225,7 @@ void pv_display(pvstate_t state, bool final)
if (state->control.numeric) {
pv_tty_write(state, state->display.display_buffer, state->display.display_string_bytes);
pv_tty_write(state, "\n", 1);
} else if (state->control.cursor) {
if (state->control.force || pv_in_foreground()) {
pv_crs_update(state, state->display.display_buffer);
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions relating to elapsed time.
*
* Copyright 2023-2024 Andrew Wood
* Copyright 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions for opening and closing files, and calculating their size.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+6 -2
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for average rate.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -24,7 +24,11 @@ pvdisplay_bytecount_t pv_formatter_average_rate(pvformatter_args_t args)
return 0;
/*@-mustfreefresh@ */
if (args->state->control.bits && !args->state->control.linemode) {
if (args->state->control.numeric) {
/* numeric - raw value without suffix. */
(void) pv_snprintf(content, sizeof(content),
"%.4Lf", ((args->state->control.bits ? 8.0 : 1.0) * args->state->calc.average_rate));
} else if (args->state->control.bits && !args->state->control.linemode) {
/* bits per second */
pv_describe_amount(content, sizeof(content),
"(%s)", 8 * args->state->calc.average_rate, "", _("b/s"), args->display->count_type);
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter functions for styled progress bars.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for transfer buffer percentage utilisation.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+10 -4
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for bytes or lines transferred.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -20,13 +20,19 @@ pvdisplay_bytecount_t pv_formatter_bytes(pvformatter_args_t args)
args->display->showing_bytes = true;
content[0] = '\0';
if (0 == args->buffer_size)
return 0;
content[0] = '\0';
/*@-mustfreefresh@ */
if (args->state->control.bits && !args->state->control.linemode) {
if (args->state->control.numeric) {
/* Numeric mode - raw values only, no suffix. */
(void) pv_snprintf(content, sizeof(content),
"%lld",
(long long) ((args->state->control.bits ? 8 : 1) *
args->state->transfer.transferred));
} else if (args->state->control.bits && !args->state->control.linemode) {
pv_describe_amount(content, sizeof(content), "%s",
(long double) (args->state->transfer.transferred * 8), "", _("b"),
args->display->count_type);
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for ETA display.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -2,7 +2,7 @@
* Formatter function for the local time at which the transfer is expected
* to complete.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for showing the last bytes written.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for showing the name of the transfer.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for the most recently written line.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+8 -3
View File
@@ -1,7 +1,7 @@
/*
* Formatter functions for progress bars.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -388,12 +388,17 @@ pvdisplay_bytecount_t pv_formatter_progress_amount_only(pvformatter_args_t args)
char content[256]; /* flawfinder: ignore - always bounded */
pvdisplay_bytecount_t bytes;
content[0] = '\0';
memset(content, 0, sizeof(content));
if (0 == args->buffer_size)
return 0;
if (args->state->control.size > 0 || args->state->control.rate_gauge) {
if (args->state->control.numeric) {
/* Numeric mode - percentage as a rounded integer with no suffix. */
(void) pv_snprintf(content, sizeof(content), "%.0f", args->state->calc.percentage);
bytes = strlen(content); /* flawfinder: ignore */
/* flawfinder: always \0-terminated by pv_snprintf() and the earlier memset(). */
} else if (args->state->control.size > 0 || args->state->control.rate_gauge) {
/* Known size or rate gauge - percentage or rate. */
bytes = pv_formatter_progress_knownsize(args, content, sizeof(content), false, false, true);
} else {
+7 -2
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for the current rate of transfer.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -26,7 +26,12 @@ pvdisplay_bytecount_t pv_formatter_rate(pvformatter_args_t args)
return 0;
/*@-mustfreefresh@ */
if (args->state->control.bits && !args->state->control.linemode) {
if (args->state->control.numeric) {
/* numeric - raw value without suffix. */
(void) pv_snprintf(content, sizeof(content),
"%.4Lf",
((args->state->control.bits ? 8.0 : 1.0) * args->state->calc.transfer_rate));
} else if (args->state->control.bits && !args->state->control.linemode) {
/* bits per second */
pv_describe_amount(content, sizeof(content), "[%s]",
8 * args->state->calc.transfer_rate, "", _("b/s"), args->display->count_type);
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for ECMA-48 SGR codes.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+9 -6
View File
@@ -1,7 +1,7 @@
/*
* Formatter function for the elapsed transfer time.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -37,11 +37,14 @@ pvdisplay_bytecount_t pv_formatter_timer(pvformatter_args_t args)
if (args->state->transfer.elapsed_seconds < 0.0)
args->state->transfer.elapsed_seconds = 0.0;
/*
* If the elapsed time is more than a day, include a day count as
* well as hours, minutes, and seconds.
*/
if (args->state->transfer.elapsed_seconds > (long double) 86400.0L) {
if (args->state->control.numeric) {
/* Numeric mode - show the number of seconds, unformatted. */
(void) pv_snprintf(content, sizeof(content), "%.4Lf", args->state->transfer.elapsed_seconds);
} else if (args->state->transfer.elapsed_seconds > (long double) 86400.0L) {
/*
* If the elapsed time is more than a day, include a day count as
* well as hours, minutes, and seconds.
*/
(void) pv_snprintf(content,
sizeof(content),
"%ld:%02ld:%02ld:%02ld",
+12 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions providing the main transfer or file descriptor watching loop.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -400,6 +400,17 @@ int pv_main_loop(pvstate_t state)
}
}
/*
* If we've read everything and written everything, and the
* output pipe buffer is NOT empty, then pause a short while
* so we don't spin in a tight loop waiting for the output
* buffer to empty (#164).
*/
if (eof_in && eof_out && state->transfer.written_but_not_consumed > 0) {
debug("%s", "EOF but bytes remain in output pipe - sleeping");
pv_nanosleep(50000000);
}
/*
* Just go round the loop again if there's no display and
* we're not reporting statistics.
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions for converting strings to numbers.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions for setting the process title.
*
* Copyright 2024 Andrew Wood
* Copyright 2024-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Signal handling functions.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+42 -18
View File
@@ -1,7 +1,7 @@
/*
* State management functions.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -263,35 +263,59 @@ void pv_state_set_format(pvstate_t state, bool progress, bool timer, bool eta, b
}
state->control.default_format[0] = '\0';
PV_ADDFORMAT(name, "%N");
PV_ADDFORMAT(bytes, "%b");
PV_ADDFORMAT(bufpercent, "%T");
PV_ADDFORMAT(timer, "%t");
PV_ADDFORMAT(rate, "%r");
PV_ADDFORMAT(average_rate, "%a");
PV_ADDFORMAT(progress, "%p");
PV_ADDFORMAT(eta, "%e");
PV_ADDFORMAT(fineta, "%I");
if (lastwritten > 0) {
char buf[16]; /* flawfinder: ignore */
memset(buf, 0, sizeof(buf));
(void) pv_snprintf(buf, sizeof(buf), "%%%uA", (unsigned int) lastwritten);
PV_ADDFORMAT(lastwritten > 0, buf);
if (false == state->control.numeric) {
/* Standard progress display mode (without "--numeric"). */
/*
* flawfinder rationale: large enough for string, zeroed
* before use, only written to by pv_snprintf() with the
* right buffer length.
* Add the format strings for the enabled options in a
* standard order.
*/
PV_ADDFORMAT(name, "%N");
PV_ADDFORMAT(bytes, "%b");
PV_ADDFORMAT(bufpercent, "%T");
PV_ADDFORMAT(timer, "%t");
PV_ADDFORMAT(rate, "%r");
PV_ADDFORMAT(average_rate, "%a");
PV_ADDFORMAT(progress, "%p");
PV_ADDFORMAT(eta, "%e");
PV_ADDFORMAT(fineta, "%I");
if (lastwritten > 0) {
char buf[16]; /* flawfinder: ignore */
memset(buf, 0, sizeof(buf));
(void) pv_snprintf(buf, sizeof(buf), "%%%uA", (unsigned int) lastwritten);
PV_ADDFORMAT(lastwritten > 0, buf);
/*
* flawfinder rationale: large enough for string,
* zeroed before use, only written to by
* pv_snprintf() with the right buffer length.
*/
}
} else {
/* Numeric mode has different behaviour. */
PV_ADDFORMAT(timer, "%t");
PV_ADDFORMAT(bytes, "%b");
PV_ADDFORMAT(rate, "%r");
PV_ADDFORMAT(!(bytes || rate), "%{progress-amount-only}");
}
debug("%s: [%s]", "default format set", state->control.default_format);
/* Free any previously set name. */
if (NULL != state->control.name) {
free(state->control.name);
state->control.name = NULL;
}
/* Set a new name if one was given. */
if (NULL != name)
state->control.name = pv_strdup(name);
/* Tell pv_format() that the format has changed. */
state->flag.reparse_display = 1;
}
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions for portably managing strings.
*
* Copyright 2023-2024 Andrew Wood
* Copyright 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
+23 -6
View File
@@ -1,7 +1,7 @@
/*
* Functions for transferring data between file descriptors.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -185,7 +185,7 @@ static ssize_t pv__transfer_read_repeated(int fd, char *buf, size_t count)
* not guaranteed to succeed for _all_ sizes; we may end up returning 0 if this
* occurs. (The first write() may return -1 / EINTR if the consumer doesn't
* read any data before our timeout and the buffer of whatever stdout is is
* near-full.) (see https://codeberg.org/a-j-wood/pv/pulls/93)
* near-full.) (see https://codeberg.org/ivarch/pv/pulls/93)
*
* If "sync_after_write" is true, we call fdatasync() after each write() (or
* fsync() if _POSIX_SYNCHRONIZED_IO is not > 0).
@@ -911,6 +911,7 @@ static int pv__transfer_write(pvstate_t state, bool *eof_in, bool *eof_out, long
*eof_in = true;
*eof_out = true;
state->flag.pipe_closed = 1;
debug("%s", "SIGPIPE received - setting pipe_closed");
return 0;
}
@@ -1101,8 +1102,10 @@ ssize_t pv_transfer(pvstate_t state, int fd, bool *eof_in, bool *eof_out, off_t
if ((state->control.linemode) && (lineswritten != NULL))
*lineswritten = 0;
if ((*eof_in) && (*eof_out))
if ((*eof_in) && (*eof_out)) {
debug("%s %d: %s", "fd", fd, "early return 0 - EOF in and out");
return 0;
}
check_read_fd = -1;
check_write_fd = -1;
@@ -1144,8 +1147,10 @@ ssize_t pv_transfer(pvstate_t state, int fd, bool *eof_in, bool *eof_out, off_t
/*
* Ignore transient errors by returning 0 immediately.
*/
if (EINTR == errno)
if (EINTR == errno) {
debug("%s %d: %s", "fd", fd, "early return 0 - is_data_ready < 0");
return 0;
}
/*
* Any other error is a problem and we must report back.
@@ -1170,8 +1175,12 @@ ssize_t pv_transfer(pvstate_t state, int fd, bool *eof_in, bool *eof_out, off_t
* NB this can update state->transfer.written because of splice().
*/
if (ready_to_read) {
if (pv__transfer_read(state, fd, eof_in, eof_out, allowed) == 0)
if (pv__transfer_read(state, fd, eof_in, eof_out, allowed) == 0) {
debug("%s %d: %s (%s=%s, %s=%s, %s=%lu)", "fd", fd,
"early return 0 - pv__transfer_read returned 0", "eof_in", eof_in ? "true" : "false",
"eof_out", eof_out ? "true" : "false", "allowed", (unsigned long) allowed);
return 0;
}
}
/*
@@ -1202,8 +1211,12 @@ ssize_t pv_transfer(pvstate_t state, int fd, bool *eof_in, bool *eof_out, off_t
&& (state->transfer.read_position > state->transfer.write_position)
&& (state->transfer.to_write > 0)
&& (NULL != lineswritten)) {
if (pv__transfer_write(state, eof_in, eof_out, lineswritten) == 0)
if (pv__transfer_write(state, eof_in, eof_out, lineswritten) == 0) {
debug("%s %d: %s (%s=%s, %s=%s, %s=%lu)", "fd", fd,
"early return 0 - pv__transfer_write returned 0", "eof_in", eof_in ? "true" : "false",
"eof_out", eof_out ? "true" : "false", "lineswritten", (unsigned long) lineswritten);
return 0;
}
}
#ifdef MAXIMISE_BUFFER_FILL
/*
@@ -1225,5 +1238,9 @@ ssize_t pv_transfer(pvstate_t state, int fd, bool *eof_in, bool *eof_out, off_t
}
#endif /* MAXIMISE_BUFFER_FILL */
if (0 == state->transfer.written) {
debug("%s %d: %s", "fd", fd, "end-of-function return 0 - transfer.written is zero");
}
return state->transfer.written;
}
+9 -1
View File
@@ -1,7 +1,7 @@
/*
* Functions for watching file descriptors in other processes.
*
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2024 Andrew Wood
* Copyright 2002-2008, 2010, 2012-2015, 2017, 2021, 2023-2025 Andrew Wood
*
* License GPLv3+: GNU GPL version 3 or later; see `docs/COPYING'.
*/
@@ -490,6 +490,7 @@ int pv_watchpid_scanfds(pvstate_t state,
info_array[use_idx].state->control.name = NULL;
info_array[use_idx].state->control.format_string = NULL;
info_array[use_idx].state->control.output_name = NULL;
info_array[use_idx].state->control.default_bar_style = NULL;
/*@+mustfreeonly@ */
info_array[use_idx].state->control.default_format[0] = '\0';
use_format_string =
@@ -498,6 +499,13 @@ int pv_watchpid_scanfds(pvstate_t state,
(void) pv_snprintf(info_array[use_idx].state->control.default_format, PV_SIZEOF_DEFAULT_FORMAT,
"%.510s", use_format_string);
/*
* Duplicate the default bar style string, if there is one.
*/
if (NULL != state->control.default_bar_style) {
pv_state_default_bar_style_set(info_array[use_idx].state, state->control.default_bar_style);
}
/*
* Copy over all the display values, blanking out the
* dynamically allocated parts as above; then set the
+14 -2
View File
@@ -29,8 +29,20 @@ if ! test -n "${testInstallDir}"; then
fi
export DESTDIR="${testInstallDir}"
if ! ${makeCommand} -C "${makeDir}" install DESTDIR="${testInstallDir}" >"${workFile1}" 2>&1; then
echo "\`make install' exited $?"
${makeCommand} -C "${makeDir}" install DESTDIR="${testInstallDir}" >"${workFile1}" 2>&1
rc=$?
if ! test "${rc}" -eq 0; then
if ! test "${makeCommand}" = "make"; then
# Retry with plain "make".
makeCommand="make"
${makeCommand} -C "${makeDir}" install DESTDIR="${testInstallDir}" >>"${workFile1}" 2>&1
rc=$?
fi
fi
if ! test ${rc} -eq 0; then
echo "\`make install' exited ${rc}"
echo "command: ${makeCommand} -C '${makeDir}' install DESTDIR='${testInstallDir}'"
cat "${workFile1}"
rm -rf "${testInstallDir}"
exit 1
fi
+5 -2
View File
@@ -18,8 +18,11 @@ seq -w 3 1 100 \
differentLines=$(tr '\r' '\n' < "${workFile1}" | sed '/^ *$/d' | sort | uniq | wc -l | tr -dc '0-9')
lastLine=$(tr '\r' '\n' < "${workFile1}" | sed '/^ *$/d' | sed -n '$p')
if ! test "${differentLines}" -gt 5; then
echo "fewer than 6 different outputs seen"
# Even on very slow hosts, we should see at least 3 different output lines -
# nothing at the start, something in the middle, and the last few numbers at
# the end.
if ! test "${differentLines}" -gt 2; then
echo "fewer than 3 different outputs seen"
tr '\r' '\n' < "${workFile1}" | sed '/^ *$/d' | sort | uniq
exit 1
fi
+8 -5
View File
@@ -18,18 +18,21 @@ dd if=/dev/zero bs=500 count=1 2>/dev/null \
lineCount=$(wc -l < "${workFile1}" | tr -dc '0-9')
finalLine=$(sed -n '$p' < "${workFile1}")
# The number of output lines should be >8 and <13, and the final byte count
# The number of output lines should be >6 and <13, and the final byte count
# should be 500.
#
if ! test "${lineCount}" -gt 8; then
echo "fewer than 9 output lines (${lineCount})"
if ! test "${lineCount}" -gt 6; then
echo "fewer than 7 output lines (${lineCount}):"
cat "${workFile1}"
exit 1
fi
if ! test "${lineCount}" -lt 13; then
echo "more than 12 output lines (${lineCount})"
echo "more than 12 output lines (${lineCount}):"
cat "${workFile1}"
exit 1
fi
if ! test "${finalLine}" = "500"; then
echo "final byte count was not 500 (${finalLine})"
echo "final byte count was not 500 (${finalLine}):"
cat "${workFile1}"
exit 1
fi
+7 -2
View File
@@ -37,6 +37,7 @@ runInTerminal () {
# tmux 1.8 doesn't have "resize-window"
echo "resize-pane -x ${terminalWidth} -y 5"
echo "pipe-pane 'cat > ${workFile1}'"
sleep 0.5
echo "respawn-pane -k \"${commandToRun}\""
sleep "${secondsToWait}"
echo "kill-server"
@@ -51,7 +52,7 @@ runInTerminal () {
# longest number of characters seen between "[" and "]".
#
runWidthTest () {
runInTerminal "$1" 1 "${testSubject} -pSs 1K </dev/zero >/dev/null" \
runInTerminal "$1" "$2" "${testSubject} -pSs 1K </dev/zero >/dev/null" \
| tr '\r' '\n' \
| sed -n 's/^.*\[//;s/\].*$//p' \
| awk 'BEGIN {m=0} {n=length($0); m=(n>m?n:m)} END {print m}'
@@ -64,7 +65,11 @@ runWidthTest () {
#
widthTest () {
terminalWidth="$1"
longestBar=$(runWidthTest "${terminalWidth}")
longestBar=$(runWidthTest "${terminalWidth}" 1)
# Retry test with longer delay, if null result.
if test -z "${longestBar}" || test "${longestBar}" -eq 0; then
longestBar=$(runWidthTest "${terminalWidth}" 5)
fi
if test -z "${longestBar}"; then
echo "no output from test at width=${terminalWidth}"
exit 1
+7
View File
@@ -35,6 +35,13 @@ if test "${SKIP_VALGRIND_TESTS}" = "1"; then
exit 77
fi
if command -v arch >/dev/null 2>&1 && arch | grep -Fq -e arm -e aarch; then
if ! test "${ENABLE_VALGRIND_ARM}" = "1"; then
echo "skipping valgrind on ARM without ENABLE_VALGRIND_ARM"
exit 77
fi
fi
valgrindHelp="$(valgrind --help 2>&1)"
for valgrindOption in "verbose" "show-error-list" "error-exitcode" "track-fds" "leak-check"; do
echo "${valgrindHelp}" | grep -Fq "${valgrindOption}" || { echo "test requires \`valgrind --${valgrindOption}'"; exit 77; }