Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f7069796e | ||
|
|
adf9672b25 | ||
|
|
7d68a574ca | ||
|
|
9dd06d8acb |
@@ -0,0 +1,3 @@
|
|||||||
|
*~
|
||||||
|
configure
|
||||||
|
patch-backlog
|
||||||
@@ -18,7 +18,7 @@ or `man pv' after installation.
|
|||||||
Compilation
|
Compilation
|
||||||
***********
|
***********
|
||||||
|
|
||||||
If you have downloaded `pv' from Subversion, first run "./generate.sh".
|
If this is not a packaged release, first run "./generate.sh".
|
||||||
|
|
||||||
To compile the package, type "sh ./configure", which should generate a
|
To compile the package, type "sh ./configure", which should generate a
|
||||||
Makefile for your system. You may then type "make" to build everything.
|
Makefile for your system. You may then type "make" to build everything.
|
||||||
@@ -37,7 +37,7 @@ all files used, all functions defined, and all TODOs marked in the code.
|
|||||||
Author and acknowledgements
|
Author and acknowledgements
|
||||||
***************************
|
***************************
|
||||||
|
|
||||||
This package is copyright 2015 Andrew Wood, and is being distributed under
|
This package is copyright 2021 Andrew Wood, and is being distributed under
|
||||||
the terms of the Artistic License 2.0. For more details of this license,
|
the terms of the Artistic License 2.0. For more details of this license,
|
||||||
see the file `doc/COPYING'.
|
see the file `doc/COPYING'.
|
||||||
|
|
||||||
@@ -214,6 +214,7 @@ Credit is also due to:
|
|||||||
|
|
||||||
Peter Korsgaard <http://www.buildroot.net/>
|
Peter Korsgaard <http://www.buildroot.net/>
|
||||||
- provided similar patch for lstat64, specifically for uClibc support
|
- provided similar patch for lstat64, specifically for uClibc support
|
||||||
|
- provided AIX cross-compilation patch to fix bug in -lc128 check
|
||||||
|
|
||||||
Ralf Ramsauer <https://blog.ramses-pyramidenbau.de/>
|
Ralf Ramsauer <https://blog.ramses-pyramidenbau.de/>
|
||||||
- reported bug which dropped transfer rate on terminal resize
|
- reported bug which dropped transfer rate on terminal resize
|
||||||
@@ -227,4 +228,38 @@ Credit is also due to:
|
|||||||
Eric A. Borisch
|
Eric A. Borisch
|
||||||
- provided details of compatibility fix for "%Lu" in watchpid code
|
- provided details of compatibility fix for "%Lu" in watchpid code
|
||||||
|
|
||||||
|
Jan Venekamp
|
||||||
|
- reported MacOS buffer size interactions with pipes
|
||||||
|
|
||||||
|
Matt <https://github.com/lemonsqueeze/pv>
|
||||||
|
- provided "rate-window" patches for rate calculation
|
||||||
|
|
||||||
|
Filippo Valsorda
|
||||||
|
- provided patch for stat64 issue on Apple Silicon
|
||||||
|
|
||||||
|
Matt Koscica, William Dillon
|
||||||
|
- also reported stat64 issue on Apple Silicon
|
||||||
|
|
||||||
|
Norman Rasmussen
|
||||||
|
- suggested -c with -d PID:FD, reject -N with -d PID
|
||||||
|
|
||||||
|
Andriy Gapon, Jonathan Elchison
|
||||||
|
- reported bug where "pv /dev/zero >/dev/null &" stops immediately
|
||||||
|
|
||||||
|
Marcelo Chiesa
|
||||||
|
- reported unused-result warnings when compiling PV 1.6.6
|
||||||
|
|
||||||
|
Jered Floyd
|
||||||
|
- provided patches to improve --rate-limit
|
||||||
|
|
||||||
|
Christoph Biedl
|
||||||
|
- provided ETA and dynamic interval patches
|
||||||
|
|
||||||
|
Richard Fonfara
|
||||||
|
- provided German translations for "pv --help"
|
||||||
|
|
||||||
|
Johannes Gerer <http://johannesgerer.com>
|
||||||
|
- suggested that "-B" should enable "-C"
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ AC_PROG_MAKE_SET
|
|||||||
|
|
||||||
dnl AIX needs -lc128
|
dnl AIX needs -lc128
|
||||||
dnl
|
dnl
|
||||||
AC_EGREP_CPP([yes], [#ifdef _AIX
|
AC_EGREP_CPP([^yes$], [#ifdef _AIX
|
||||||
yes
|
yes
|
||||||
#endif
|
#endif
|
||||||
], [LIBS="$LIBS -lc128"])
|
], [LIBS="$LIBS -lc128"])
|
||||||
@@ -155,6 +155,7 @@ dnl Check for various header files and set various other macros.
|
|||||||
dnl
|
dnl
|
||||||
AC_DEFINE(HAVE_CONFIG_H)
|
AC_DEFINE(HAVE_CONFIG_H)
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
|
AC_HEADER_STDBOOL
|
||||||
AC_CHECK_FUNCS(memcpy basename snprintf stat64)
|
AC_CHECK_FUNCS(memcpy basename snprintf stat64)
|
||||||
AC_CHECK_HEADERS(limits.h)
|
AC_CHECK_HEADERS(limits.h)
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,24 @@
|
|||||||
#define CURSOR_ANSWERBACK_BYTE_BY_BYTE 1
|
#define CURSOR_ANSWERBACK_BYTE_BY_BYTE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Boolean type support. */
|
||||||
|
#undef HAVE_STDBOOL_H
|
||||||
|
#ifdef HAVE_STDBOOL_H
|
||||||
|
# include <stdbool.h>
|
||||||
|
#else
|
||||||
|
# ifndef HAVE__BOOL
|
||||||
|
# ifdef __cplusplus
|
||||||
|
typedef bool _Bool;
|
||||||
|
# else
|
||||||
|
# define _Bool signed char
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# define bool _Bool
|
||||||
|
# define false 0
|
||||||
|
# define true 1
|
||||||
|
# define __bool_true_false_are_defined 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Support for debugging output. */
|
/* Support for debugging output. */
|
||||||
#undef ENABLE_DEBUGGING
|
#undef ENABLE_DEBUGGING
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
#
|
|
||||||
# Dependencies.
|
|
||||||
#
|
|
||||||
|
|
||||||
src/library/getopt.d src/library/getopt.o: src/library/getopt.c src/include/config.h src/include/library/gettext.h
|
|
||||||
src/library/gettext.d src/library/gettext.o: src/library/gettext.c src/include/config.h src/include/library/gettext.h
|
|
||||||
src/pv/signal.d src/pv/signal.o: src/pv/signal.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/watchpid.d src/pv/watchpid.o: src/pv/watchpid.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/cursor.d src/pv/cursor.o: src/pv/cursor.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/file.d src/pv/file.o: src/pv/file.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/display.d src/pv/display.o: src/pv/display.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/loop.d src/pv/loop.o: src/pv/loop.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/number.d src/pv/number.o: src/pv/number.c src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/transfer.d src/pv/transfer.o: src/pv/transfer.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/pv/state.d src/pv/state.o: src/pv/state.c src/include/pv-internal.h src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/main/version.d src/main/version.o: src/main/version.c src/include/config.h src/include/library/gettext.h
|
|
||||||
src/main/debug.d src/main/debug.o: src/main/debug.c src/include/config.h src/include/library/gettext.h src/include/pv.h
|
|
||||||
src/main/main.d src/main/main.o: src/main/main.c src/include/config.h src/include/library/gettext.h src/include/options.h src/include/pv.h
|
|
||||||
src/main/options.d src/main/options.o: src/main/options.c src/include/config.h src/include/library/gettext.h src/include/options.h src/include/library/getopt.h src/include/pv.h
|
|
||||||
src/main/remote.d src/main/remote.o: src/main/remote.c src/include/config.h src/include/library/gettext.h src/include/options.h src/include/pv.h
|
|
||||||
src/main/help.d src/main/help.o: src/main/help.c src/include/config.h src/include/library/gettext.h
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# Automatically generated file listings
|
|
||||||
#
|
|
||||||
# Creation time: Fri Jun 30 22:23:37 BST 2017
|
|
||||||
|
|
||||||
allsrc = src/library/getopt.c \
|
|
||||||
src/library/gettext.c \
|
|
||||||
src/pv/signal.c \
|
|
||||||
src/pv/watchpid.c \
|
|
||||||
src/pv/cursor.c \
|
|
||||||
src/pv/file.c \
|
|
||||||
src/pv/display.c \
|
|
||||||
src/pv/loop.c \
|
|
||||||
src/pv/number.c \
|
|
||||||
src/pv/transfer.c \
|
|
||||||
src/pv/state.c \
|
|
||||||
src/main/version.c \
|
|
||||||
src/main/debug.c \
|
|
||||||
src/main/main.c \
|
|
||||||
src/main/options.c \
|
|
||||||
src/main/remote.c \
|
|
||||||
src/main/help.c
|
|
||||||
|
|
||||||
allobj = src/library/getopt.o \
|
|
||||||
src/library/gettext.o \
|
|
||||||
src/pv/signal.o \
|
|
||||||
src/pv/watchpid.o \
|
|
||||||
src/pv/cursor.o \
|
|
||||||
src/pv/file.o \
|
|
||||||
src/pv/display.o \
|
|
||||||
src/pv/loop.o \
|
|
||||||
src/pv/number.o \
|
|
||||||
src/pv/transfer.o \
|
|
||||||
src/pv/state.o \
|
|
||||||
src/main/version.o \
|
|
||||||
src/main/debug.o \
|
|
||||||
src/main/main.o \
|
|
||||||
src/main/options.o \
|
|
||||||
src/main/remote.o \
|
|
||||||
src/main/help.o \
|
|
||||||
src/library.o \
|
|
||||||
src/pv.o \
|
|
||||||
src/nls.o \
|
|
||||||
src/main.o
|
|
||||||
|
|
||||||
alldep = src/library/getopt.d \
|
|
||||||
src/library/gettext.d \
|
|
||||||
src/pv/signal.d \
|
|
||||||
src/pv/watchpid.d \
|
|
||||||
src/pv/cursor.d \
|
|
||||||
src/pv/file.d \
|
|
||||||
src/pv/display.d \
|
|
||||||
src/pv/loop.d \
|
|
||||||
src/pv/number.d \
|
|
||||||
src/pv/transfer.d \
|
|
||||||
src/pv/state.d \
|
|
||||||
src/main/version.d \
|
|
||||||
src/main/debug.d \
|
|
||||||
src/main/main.d \
|
|
||||||
src/main/options.d \
|
|
||||||
src/main/remote.d \
|
|
||||||
src/main/help.d
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
# Automatically generated module linking rules
|
|
||||||
#
|
|
||||||
# Creation time: Fri Jun 30 22:23:37 BST 2017
|
|
||||||
|
|
||||||
src/library.o: src/library/getopt.o src/library/gettext.o
|
|
||||||
$(LD) $(LDFLAGS) -o $@ src/library/getopt.o src/library/gettext.o
|
|
||||||
|
|
||||||
src/pv.o: src/pv/cursor.o src/pv/display.o src/pv/file.o src/pv/loop.o src/pv/number.o src/pv/signal.o src/pv/state.o src/pv/transfer.o src/pv/watchpid.o
|
|
||||||
$(LD) $(LDFLAGS) -o $@ src/pv/cursor.o src/pv/display.o src/pv/file.o src/pv/loop.o src/pv/number.o src/pv/signal.o src/pv/state.o src/pv/transfer.o src/pv/watchpid.o
|
|
||||||
|
|
||||||
src/main.o: src/main/debug.o src/main/help.o src/main/main.o src/main/options.o src/main/remote.o src/main/version.o
|
|
||||||
$(LD) $(LDFLAGS) -o $@ src/main/debug.o src/main/help.o src/main/main.o src/main/options.o src/main/remote.o src/main/version.o
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/ash
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Script to generate an HTML index of all C code from the current directory
|
# Script to generate an HTML index of all C code from the current directory
|
||||||
# downwards (skipping directories ending in ~). The header comment in each
|
# downwards (skipping directories ending in ~). The header comment in each
|
||||||
|
|||||||
@@ -1,3 +1,35 @@
|
|||||||
|
1.6.19 - 5 September 2021
|
||||||
|
- fix: starting pv in the background no longer immediately stops unless
|
||||||
|
the transfer is to/from the terminal (Andriy Gapon, Jonathan Elchison)
|
||||||
|
- fix: using -B, -A, or -T now switches on -C implicitly
|
||||||
|
(Johannes Gerer, André Stapf)
|
||||||
|
- fix: AIX build fixes (Peter Korsgaard)
|
||||||
|
- i18n: updated German "--help" translations (Richard Fonfara)
|
||||||
|
- i18n: switched to UTF-8 encoding, added missing translations (de,fr,pt)
|
||||||
|
- docs: new "common switches" manual section (Jacek Wielemborek)
|
||||||
|
- docs: use placeholder instead of /dev/sda in the manual (Pranav Peshwe)
|
||||||
|
- docs: mention MacOS pipes and "-B 1024" in the manual (Jan Venekamp)
|
||||||
|
- docs: correct shell in autoconf/scripts/index.sh (Juan Picca)
|
||||||
|
- cleanup: various compiler warnings cleaned up
|
||||||
|
|
||||||
|
Full changelog is below:
|
||||||
|
- (r181) added common switches section to manual (Jacek Wielemborek)
|
||||||
|
- (r184) use placeholder instead of /dev/sda in the manual (Pranav Peshwe)
|
||||||
|
- (r185) replace ash with sh in autoconf/scripts/index.sh (Juan Picca)
|
||||||
|
- (r185) added note to manual about "-B 1024" in MacOS pipes (Jan Venekamp)
|
||||||
|
- (r185) fix AIX config check when the CWD contains "yes" (Peter Korsgaard)
|
||||||
|
- (r189) (#1556) updated German "--help" translations (Richard Fonfara)
|
||||||
|
- (r189) updated missing German translations and changed to UTF-8 encoding
|
||||||
|
- (r191) updated missing French translations and changed to UTF-8 encoding
|
||||||
|
- (r193) updated missing Portuguese translations, changed to UTF-8 encoding
|
||||||
|
- (r196) (#1563) using -B, -A, or -T now switches on -C implicitly
|
||||||
|
(Johannes Gerer, André Stapf)
|
||||||
|
- (r199) fixed numerous compiler warnings in newer GCC versions
|
||||||
|
- (r200,205) fixed bug where "pv /dev/zero >/dev/null &" stopped
|
||||||
|
immediately (Jonathan Elchison, Andriy Gapon)
|
||||||
|
- (r203,205) marked unused arguments with GCC unused attribute, started
|
||||||
|
using boolean data type for flags, corrected more compiler warnings
|
||||||
|
|
||||||
1.6.6 - 30 June 2017
|
1.6.6 - 30 June 2017
|
||||||
- (r161) use %llu instead of %Lu for better compatibility (Eric A. Borisch)
|
- (r161) use %llu instead of %Lu for better compatibility (Eric A. Borisch)
|
||||||
- (r162) (#1532) fix target buffer size (-B) being ignored (AndCycle, Ilya
|
- (r162) (#1532) fix target buffer size (-B) being ignored (AndCycle, Ilya
|
||||||
|
|||||||
@@ -1,21 +1,30 @@
|
|||||||
Things still to do:
|
Things still to do:
|
||||||
|
|
||||||
|
- store terminal state in shm seg (Lars Ellenberg - Feb 2018)
|
||||||
|
- (as above) fix race condition with multiple "pv -c" (Viktor Ashirov - Jan 2020, Lars Ellenberg)
|
||||||
|
- (#1287) if the first pv exits, should the second become IPC leader?
|
||||||
|
- option to show bits/sec instead of bytes (John W. O'Brien - Jan 2019)
|
||||||
|
- option for alternate units like kB (x1000) (David Henderson [cliquesoft.org] - Dec 2018)
|
||||||
|
- (same as above) option to make input suffixes decimal not binary (ie kb rather than KiB)
|
||||||
|
- allow decimal values for -s, -L, -B (suggestion - Thomas Watson)
|
||||||
- allow -E to take a block size argument so errors cause a skip to the
|
- allow -E to take a block size argument so errors cause a skip to the
|
||||||
next block (Anthony DeRobertis)
|
next block (Anthony DeRobertis)
|
||||||
- (#1559) momentary ETA option (Luc Gommans)
|
- (#1559) momentary ETA option (Luc Gommans)
|
||||||
- (#1556) correct German translations (Richard Fonfara)
|
|
||||||
- (#1557) use clock_gettime() in ETA calculation (Mateju Miroslav)
|
- (#1557) use clock_gettime() in ETA calculation (Mateju Miroslav)
|
||||||
- (#1561) show days in same format in ETA as in elapsed time
|
- (#1561) show days in same format in ETA as in elapsed time
|
||||||
- (#1562) allow -r with -l and -n to output lines/sec (Roland Kletzing)
|
- (#1562) allow -r with -l and -n to output lines/sec (Roland Kletzing)
|
||||||
- (#1563) make -B imply -C (Johannes Gerer)
|
|
||||||
- document zsh <() incompatibility (frederik@ofb.net - Frederik Eaton)
|
- document zsh <() incompatibility (frederik@ofb.net - Frederik Eaton)
|
||||||
|
- apply patch for MacOS 11 (Apple Silicon) stat64 issue (Filippo Valsorda)
|
||||||
- do not check terminal in -q/-n mode (zsh <(pv -n) fails)
|
- do not check terminal in -q/-n mode (zsh <(pv -n) fails)
|
||||||
- if -w/-H was specified, ignore SIGWINCH
|
- if -w/-H was specified, ignore SIGWINCH
|
||||||
|
- reset ETA on SIGUSR1 (Jacek Wielemborek - Jan 2019)
|
||||||
- option to enable O_DIRECT (Romain Kang, Jacek Wielemborek)
|
- option to enable O_DIRECT (Romain Kang, Jacek Wielemborek)
|
||||||
- use posix_fadvise() like cat(1) does (Jacek Wielemborek)
|
- use posix_fadvise() like cat(1) does (Jacek Wielemborek)
|
||||||
|
- before exit, flush output (e.g. writing to USB disk), update counters during flush (Kalin KOZHUHAROV - Jun 2018)
|
||||||
|
- permit -c with -d PID:FD, reject -N with -d PID (Norman Rasmussen)
|
||||||
- (#1508) add watchfd tests
|
- (#1508) add watchfd tests
|
||||||
- (#1534) allow multiple -d options
|
- (#1554) allow multiple -d options (Linus Heckemann for multiple PID:FD)
|
||||||
- (#1533) one-shot option (Jacek Wielemborek)
|
- (#1553) one-shot option (Jacek Wielemborek)
|
||||||
- (#1505) option to switch rate to per minute if really slow
|
- (#1505) option to switch rate to per minute if really slow
|
||||||
- (#1510) option "--progress-from FILE", read last number and use it as bytes read:
|
- (#1510) option "--progress-from FILE", read last number and use it as bytes read:
|
||||||
pv --progress-from <( while sleep 1; do du -sb somedir; done ) -s 123g
|
pv --progress-from <( while sleep 1; do du -sb somedir; done ) -s 123g
|
||||||
@@ -24,8 +33,23 @@ Things still to do:
|
|||||||
- (#1286) option for process title (Martin Sarsale) as "pv - name:FooProcess -xyz - transferred: 1.3GB - 500KB/s - running: 10:15:30s"
|
- (#1286) option for process title (Martin Sarsale) as "pv - name:FooProcess -xyz - transferred: 1.3GB - 500KB/s - running: 10:15:30s"
|
||||||
- (#1290) look at effect of O_SYNC or fsync on performance
|
- (#1290) look at effect of O_SYNC or fsync on performance
|
||||||
- (#1281) option (-x?) to use xterm title line for status (Joachim Haga)
|
- (#1281) option (-x?) to use xterm title line for status (Joachim Haga)
|
||||||
- (#1287) if the first pv exits, should the second become IPC leader?
|
|
||||||
- (#1560) use Unicode for more granular progress bar (Alexander Petrossian)
|
- (#1560) use Unicode for more granular progress bar (Alexander Petrossian)
|
||||||
|
- show fd backwards reads more neatly than negative huge numbers
|
||||||
|
- "swallow" option to discard output (André Stapf - Apr 2017)
|
||||||
|
- differentiate "eta" from "fineta" in display (André Stapf - Apr 2017)
|
||||||
|
- continue timer even if input or output is blocking (Martin Probst - Jun 2017)
|
||||||
|
- incorporate ETA patch from Christoph Biedl - Jul 2017
|
||||||
|
- incorporate dynamic interval patch from Christoph Biedl - Dec 2019
|
||||||
|
- option "--size-file" or similar to use size of a file for "-s"
|
||||||
|
- fix rate limit downgrade as per patch (Stephen Kitt - Jan 2018)
|
||||||
|
- normalise progress to 100% if overrun (Andrej Gantvorg - Mar 2018)
|
||||||
|
- incorporate average rate interval patch "rate-window"/"eta-window" (lemonsqueeze/Matt - May/Sep 2018 - https://github.com/lemonsqueeze/pv)
|
||||||
|
- incorporate rate limit patch (Jered Floyd - Dec 2018)
|
||||||
|
- option --sparse (with block size option) to write sparse output (Andriy Galetski - Apr 2019)
|
||||||
|
- correct "-n" behaviour when going past 100% of "-s" size (Marcel - Nov 2018)
|
||||||
|
- option to show speed gauge (% max speed) if progress not known (Ryan Cooley - Jun 2019)
|
||||||
|
- look at
|
||||||
|
https://www.reddit.com/r/unix/comments/6gxduc/how_is_gnu_yes_so_fast/diua761/
|
||||||
|
|
||||||
- add development support for http://clang-analyzer.llvm.org/
|
- add development support for http://clang-analyzer.llvm.org/
|
||||||
- stats for avg/min/max/stddev throughput (Venky.N.Iyer)
|
- stats for avg/min/max/stddev throughput (Venky.N.Iyer)
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.6.6
|
1.6.19
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
Begin3
|
Begin3
|
||||||
Title: @PACKAGE@
|
Title: @PACKAGE@
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
Entered-date: 30JUN17
|
Entered-date: 05SEP21
|
||||||
Description: A tool for monitoring the progress of data through a
|
Description: A tool for monitoring the progress of data through a
|
||||||
pipeline. It can be inserted into any normal pipeline
|
pipeline. It can be inserted into any normal pipeline
|
||||||
between two processes to give a visual indication of how
|
between two processes to give a visual indication of how
|
||||||
|
|||||||
+29
-13
@@ -1,4 +1,4 @@
|
|||||||
.TH @UCPACKAGE@ 1 "June 2017" Linux "User Manuals"
|
.TH @UCPACKAGE@ 1 "September 2021" Linux "User Manuals"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@PACKAGE@ \- monitor the progress of data through a pipe
|
@PACKAGE@ \- monitor the progress of data through a pipe
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@@ -63,19 +63,19 @@ program for a full-screen progress display:
|
|||||||
Taking an image of a disk, skipping errors:
|
Taking an image of a disk, skipping errors:
|
||||||
|
|
||||||
.RS
|
.RS
|
||||||
.B @PACKAGE@ -EE /dev/sda > disk-image.img
|
.B @PACKAGE@ -EE /dev/your/disk/device > disk-image.img
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
Writing an image back to a disk:
|
Writing an image back to a disk:
|
||||||
|
|
||||||
.RS
|
.RS
|
||||||
.B @PACKAGE@ disk-image.img > /dev/sda
|
.B @PACKAGE@ disk-image.img > /dev/your/disk/device
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
Zeroing a disk:
|
Zeroing a disk:
|
||||||
|
|
||||||
.RS
|
.RS
|
||||||
.B @PACKAGE@ < /dev/zero > /dev/sda
|
.B @PACKAGE@ < /dev/zero > /dev/your/disk/device
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
Note that if the input size cannot be calculated, and the output is a block
|
Note that if the input size cannot be calculated, and the output is a block
|
||||||
@@ -155,7 +155,8 @@ percentage of the transfer buffer in use - but see the caveat under
|
|||||||
.B %T
|
.B %T
|
||||||
in the
|
in the
|
||||||
.B FORMATTING
|
.B FORMATTING
|
||||||
section below.
|
section below. Implies
|
||||||
|
.BR \-C .
|
||||||
.TP
|
.TP
|
||||||
.B \-A, \-\-last\-written NUM
|
.B \-A, \-\-last\-written NUM
|
||||||
Show the last
|
Show the last
|
||||||
@@ -164,7 +165,8 @@ bytes written - but see the caveat under
|
|||||||
.B %nA
|
.B %nA
|
||||||
in the
|
in the
|
||||||
.B FORMATTING
|
.B FORMATTING
|
||||||
section below.
|
section below. Implies
|
||||||
|
.BR \-C .
|
||||||
.TP
|
.TP
|
||||||
.B \-F, \-\-format FORMAT
|
.B \-F, \-\-format FORMAT
|
||||||
Ignore the options
|
Ignore the options
|
||||||
@@ -312,7 +314,10 @@ Use a transfer buffer size of
|
|||||||
bytes. A suffix of "K", "M", "G", or "T" can be added to denote
|
bytes. A suffix of "K", "M", "G", or "T" can be added to denote
|
||||||
kibibytes (*1024), mebibytes, and so on. The default buffer size is the
|
kibibytes (*1024), mebibytes, and so on. The default buffer size is the
|
||||||
block size of the input file's filesystem multiplied by 32 (512KiB max), or
|
block size of the input file's filesystem multiplied by 32 (512KiB max), or
|
||||||
400KiB if the block size cannot be determined.
|
400KiB if the block size cannot be determined. This can be useful on
|
||||||
|
platforms like MacOS which perform better in pipelines with specific buffer
|
||||||
|
sizes such as 1024. Implies
|
||||||
|
.BR \-C .
|
||||||
.TP
|
.TP
|
||||||
.B \-C, \-\-no-splice
|
.B \-C, \-\-no-splice
|
||||||
Never use
|
Never use
|
||||||
@@ -328,13 +333,18 @@ but means that the transfer buffer may not be used. This prevents
|
|||||||
.B \-A
|
.B \-A
|
||||||
and
|
and
|
||||||
.B \-T
|
.B \-T
|
||||||
from working, so if you want to use
|
from working, and makes
|
||||||
.B \-A
|
.B \-B
|
||||||
|
redundant, so using
|
||||||
|
.BR \-A ,
|
||||||
|
.BR \-T ,
|
||||||
or
|
or
|
||||||
.B \-T
|
.B \-B
|
||||||
then you will need to use
|
automatically switches on
|
||||||
.BR \-C ,
|
.BR \-C .
|
||||||
at the cost of a small loss in transfer efficiency.
|
Switching on
|
||||||
|
.B \-C
|
||||||
|
results in a small loss of transfer efficiency.
|
||||||
(This option has no effect on systems where
|
(This option has no effect on systems where
|
||||||
.BR splice (2)
|
.BR splice (2)
|
||||||
is unavailable).
|
is unavailable).
|
||||||
@@ -513,6 +523,11 @@ Show only the elapsed time - useful as a simple timer, e.g.
|
|||||||
The default behaviour: progress bar, elapsed time, estimated completion
|
The default behaviour: progress bar, elapsed time, estimated completion
|
||||||
time, current rate, and byte counter.
|
time, current rate, and byte counter.
|
||||||
|
|
||||||
|
.P
|
||||||
|
On MacOS, it may be useful to specify
|
||||||
|
.B -B 1024
|
||||||
|
in a pipeline, as this may improve performance.
|
||||||
|
|
||||||
|
|
||||||
.SH EXIT STATUS
|
.SH EXIT STATUS
|
||||||
An exit status of 1 indicates a problem with the
|
An exit status of 1 indicates a problem with the
|
||||||
@@ -544,6 +559,7 @@ A signal was caught that caused an early exit.
|
|||||||
.B 64
|
.B 64
|
||||||
Memory allocation failed.
|
Memory allocation failed.
|
||||||
|
|
||||||
|
.P
|
||||||
A zero exit status indicates no problems.
|
A zero exit status indicates no problems.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ Before releasing a new version, go through this checklist:
|
|||||||
- make indent indentclean
|
- make indent indentclean
|
||||||
- make update-po
|
- make update-po
|
||||||
- make test
|
- make test
|
||||||
- commit
|
- commit to SVN
|
||||||
- wipe build directory, re-run generate.sh and configure
|
- wipe build directory, re-run generate.sh and configure
|
||||||
- make release
|
- make release
|
||||||
- make manhtml | tidy -asxhtml | sed -e '1,/<body>/d' -e '/<\/body>/,$d'
|
- make manhtml | tidy -asxhtml | sed -e '1,/<body>/d' -e '/<\/body>/,$d'
|
||||||
- update HTML for todo and news
|
- update HTML for todo and news
|
||||||
- copy and sign tar.gz to HTML directory
|
- copy and sign tar.gz to HTML directory (sig as both .asc and .txt)
|
||||||
- submit new release
|
- submit new release to Sourceforge
|
||||||
- upload HTML
|
- upload HTML
|
||||||
- check validator results for project page and manual
|
- check validator results for project page and manual
|
||||||
|
|||||||
+14
@@ -46,6 +46,20 @@ make test
|
|||||||
%doc README doc/NEWS doc/TODO doc/COPYING
|
%doc README doc/NEWS doc/TODO doc/COPYING
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Sep 5 2021 Andrew Wood <andrew.wood@ivarch.com> 1.6.19-1
|
||||||
|
- fix: starting pv in the background no longer immediately stops unless
|
||||||
|
- the transfer is to/from the terminal (Andriy Gapon, Jonathan Elchison)
|
||||||
|
- fix: using -B, -A, or -T now switches on -C implicitly
|
||||||
|
- (Johannes Gerer, André Stapf)
|
||||||
|
- fix: AIX build fixes (Peter Korsgaard)
|
||||||
|
- i18n: updated German "--help" translations (Richard Fonfara)
|
||||||
|
- i18n: switched to UTF-8 encoding, added missing translations (de,fr,pt)
|
||||||
|
- docs: new "common switches" manual section (Jacek Wielemborek)
|
||||||
|
- docs: use placeholder instead of /dev/sda in the manual (Pranav Peshwe)
|
||||||
|
- docs: mention MacOS pipes and "-B 1024" in the manual (Jan Venekamp)
|
||||||
|
- docs: correct shell in autoconf/scripts/index.sh (Juan Picca)
|
||||||
|
- cleanup: various compiler warnings cleaned up
|
||||||
|
|
||||||
* Fri Jun 30 2017 Andrew Wood <andrew.wood@ivarch.com> 1.6.6-1
|
* Fri Jun 30 2017 Andrew Wood <andrew.wood@ivarch.com> 1.6.6-1
|
||||||
- (r161) use %llu instead of %Lu for better compatibility (Eric A. Borisch)
|
- (r161) use %llu instead of %Lu for better compatibility (Eric A. Borisch)
|
||||||
- (r162) (#1532) fix target buffer size (-B) being ignored (AndCycle, Ilya
|
- (r162) (#1532) fix target buffer size (-B) being ignored (AndCycle, Ilya
|
||||||
|
|||||||
+19
-19
@@ -14,30 +14,30 @@ typedef struct opts_s *opts_t;
|
|||||||
|
|
||||||
struct opts_s { /* structure describing run-time options */
|
struct opts_s { /* structure describing run-time options */
|
||||||
char *program_name; /* name the program is running as */
|
char *program_name; /* name the program is running as */
|
||||||
unsigned char do_nothing; /* exit-without-doing-anything flag */
|
bool do_nothing; /* exit-without-doing-anything flag */
|
||||||
unsigned char progress; /* progress bar flag */
|
bool progress; /* progress bar flag */
|
||||||
unsigned char timer; /* timer flag */
|
bool timer; /* timer flag */
|
||||||
unsigned char eta; /* ETA flag */
|
bool eta; /* ETA flag */
|
||||||
unsigned char fineta; /* absolute ETA flag */
|
bool fineta; /* absolute ETA flag */
|
||||||
unsigned char rate; /* rate counter flag */
|
bool rate; /* rate counter flag */
|
||||||
unsigned char average_rate; /* average rate counter flag */
|
bool average_rate; /* average rate counter flag */
|
||||||
unsigned char bytes; /* bytes transferred flag */
|
bool bytes; /* bytes transferred flag */
|
||||||
unsigned char bufpercent; /* transfer buffer percentage flag */
|
bool bufpercent; /* transfer buffer percentage flag */
|
||||||
unsigned int lastwritten; /* show N bytes last written */
|
unsigned int lastwritten; /* show N bytes last written */
|
||||||
unsigned char force; /* force-if-not-terminal flag */
|
bool force; /* force-if-not-terminal flag */
|
||||||
unsigned char cursor; /* whether to use cursor positioning */
|
bool cursor; /* whether to use cursor positioning */
|
||||||
unsigned char numeric; /* numeric output only */
|
bool numeric; /* numeric output only */
|
||||||
unsigned char wait; /* wait for transfer before display */
|
bool wait; /* wait for transfer before display */
|
||||||
unsigned char linemode; /* count lines instead of bytes */
|
bool linemode; /* count lines instead of bytes */
|
||||||
unsigned char null; /* lines are null-terminated */
|
bool null; /* lines are null-terminated */
|
||||||
unsigned char no_op; /* do nothing other than pipe data */
|
bool no_op; /* do nothing other than pipe data */
|
||||||
unsigned long long rate_limit; /* rate limit, in bytes per second */
|
unsigned long long rate_limit; /* rate limit, in bytes per second */
|
||||||
unsigned long long buffer_size;/* buffer size, in bytes (0=default) */
|
unsigned long long buffer_size;/* buffer size, in bytes (0=default) */
|
||||||
unsigned int remote; /* PID of pv to update settings of */
|
unsigned int remote; /* PID of pv to update settings of */
|
||||||
unsigned long long size; /* total size of data */
|
unsigned long long size; /* total size of data */
|
||||||
unsigned char no_splice; /* flag set if never to use splice */
|
bool no_splice; /* flag set if never to use splice */
|
||||||
unsigned char skip_errors; /* skip read errors flag */
|
unsigned int skip_errors; /* skip read errors counter */
|
||||||
unsigned char stop_at_size; /* set if we stop at "size" bytes */
|
bool stop_at_size; /* set if we stop at "size" bytes */
|
||||||
double interval; /* interval between updates */
|
double interval; /* interval between updates */
|
||||||
double delay_start; /* delay before first display */
|
double delay_start; /* delay before first display */
|
||||||
unsigned int watch_pid; /* process to watch fds of */
|
unsigned int watch_pid; /* process to watch fds of */
|
||||||
|
|||||||
+13
-13
@@ -58,16 +58,16 @@ struct pvstate_s {
|
|||||||
/*******************
|
/*******************
|
||||||
* Program control *
|
* Program control *
|
||||||
*******************/
|
*******************/
|
||||||
unsigned char force; /* display even if not on terminal */
|
bool force; /* display even if not on terminal */
|
||||||
unsigned char cursor; /* use cursor positioning */
|
bool cursor; /* use cursor positioning */
|
||||||
unsigned char numeric; /* numeric output only */
|
bool numeric; /* numeric output only */
|
||||||
unsigned char wait; /* wait for data before display */
|
bool wait; /* wait for data before display */
|
||||||
unsigned char linemode; /* count lines instead of bytes */
|
bool linemode; /* count lines instead of bytes */
|
||||||
unsigned char null; /* lines are null-terminated */
|
bool null; /* lines are null-terminated */
|
||||||
unsigned char no_op; /* do nothing other than pipe data */
|
bool no_op; /* do nothing other than pipe data */
|
||||||
unsigned char skip_errors; /* skip read errors flag */
|
unsigned int skip_errors; /* skip read errors counter */
|
||||||
unsigned char stop_at_size; /* set if we stop at "size" bytes */
|
bool stop_at_size; /* set if we stop at "size" bytes */
|
||||||
unsigned char no_splice; /* never use splice() */
|
bool no_splice; /* never use splice() */
|
||||||
unsigned long long rate_limit; /* rate limit, in bytes per second */
|
unsigned long long rate_limit; /* rate limit, in bytes per second */
|
||||||
unsigned long long target_buffer_size; /* buffer size (0=default) */
|
unsigned long long target_buffer_size; /* buffer size (0=default) */
|
||||||
unsigned long long size; /* total size of data */
|
unsigned long long size; /* total size of data */
|
||||||
@@ -135,7 +135,7 @@ struct pvstate_s {
|
|||||||
const char *string;
|
const char *string;
|
||||||
int length;
|
int length;
|
||||||
} format[100];
|
} format[100];
|
||||||
unsigned char display_visible; /* set once anything written to terminal */
|
bool display_visible; /* set once anything written to terminal */
|
||||||
|
|
||||||
/********************
|
/********************
|
||||||
* Cursor/IPC state *
|
* Cursor/IPC state *
|
||||||
@@ -147,8 +147,8 @@ struct pvstate_s {
|
|||||||
int *crs_y_top; /* pointer to Y coord of topmost `pv' */
|
int *crs_y_top; /* pointer to Y coord of topmost `pv' */
|
||||||
int crs_y_lastread; /* last value of _y_top seen */
|
int crs_y_lastread; /* last value of _y_top seen */
|
||||||
int crs_y_offset; /* our Y offset from this top position */
|
int crs_y_offset; /* our Y offset from this top position */
|
||||||
int crs_needreinit; /* set if we need to reinit cursor pos */
|
int crs_needreinit; /* counter if we need to reinit cursor pos */
|
||||||
int crs_noipc; /* set if we can't use IPC */
|
bool crs_noipc; /* set if we can't use IPC */
|
||||||
#endif /* HAVE_IPC */
|
#endif /* HAVE_IPC */
|
||||||
int crs_lock_fd; /* fd of lockfile, -1 if none open */
|
int crs_lock_fd; /* fd of lockfile, -1 if none open */
|
||||||
char crs_lock_file[1024];
|
char crs_lock_file[1024];
|
||||||
|
|||||||
+24
-19
@@ -34,14 +34,14 @@ typedef enum {
|
|||||||
extern double pv_getnum_d(const char *);
|
extern double pv_getnum_d(const char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the given string converted to an integer.
|
* Return the given string converted to an unsigned integer.
|
||||||
*/
|
*/
|
||||||
extern int pv_getnum_i(const char *);
|
extern unsigned int pv_getnum_ui(const char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the given string converted to a long long.
|
* Return the given string converted to an unsigned long long.
|
||||||
*/
|
*/
|
||||||
extern long long pv_getnum_ll(const char *);
|
extern unsigned long long pv_getnum_ull(const char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return zero if the given string is a number of the given type. NB an
|
* Return zero if the given string is a number of the given type. NB an
|
||||||
@@ -61,30 +61,30 @@ extern pvstate_t pv_state_alloc(const char *);
|
|||||||
/*
|
/*
|
||||||
* Set the formatting string, given a set of old-style formatting options.
|
* Set the formatting string, given a set of old-style formatting options.
|
||||||
*/
|
*/
|
||||||
extern void pv_state_set_format(pvstate_t state, unsigned char progress,
|
extern void pv_state_set_format(pvstate_t state, bool progress,
|
||||||
unsigned char timer, unsigned char eta,
|
bool timer, bool eta,
|
||||||
unsigned char fineta, unsigned char rate,
|
bool fineta, bool rate,
|
||||||
unsigned char average_rate, unsigned char bytes,
|
bool average_rate, bool bytes,
|
||||||
unsigned char bufpercent,
|
bool bufpercent,
|
||||||
unsigned int lastwritten,
|
unsigned int lastwritten,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the various options.
|
* Set the various options.
|
||||||
*/
|
*/
|
||||||
extern void pv_state_force_set(pvstate_t, unsigned char);
|
extern void pv_state_force_set(pvstate_t, bool);
|
||||||
extern void pv_state_cursor_set(pvstate_t, unsigned char);
|
extern void pv_state_cursor_set(pvstate_t, bool);
|
||||||
extern void pv_state_numeric_set(pvstate_t, unsigned char);
|
extern void pv_state_numeric_set(pvstate_t, bool);
|
||||||
extern void pv_state_wait_set(pvstate_t, unsigned char);
|
extern void pv_state_wait_set(pvstate_t, bool);
|
||||||
extern void pv_state_delay_start_set(pvstate_t, double);
|
extern void pv_state_delay_start_set(pvstate_t, double);
|
||||||
extern void pv_state_linemode_set(pvstate_t, unsigned char);
|
extern void pv_state_linemode_set(pvstate_t, bool);
|
||||||
extern void pv_state_null_set(pvstate_t, unsigned char);
|
extern void pv_state_null_set(pvstate_t, bool);
|
||||||
extern void pv_state_no_op_set(pvstate_t, unsigned char);
|
extern void pv_state_no_op_set(pvstate_t, bool);
|
||||||
extern void pv_state_skip_errors_set(pvstate_t, unsigned char);
|
extern void pv_state_skip_errors_set(pvstate_t, unsigned int);
|
||||||
extern void pv_state_stop_at_size_set(pvstate_t, unsigned char);
|
extern void pv_state_stop_at_size_set(pvstate_t, bool);
|
||||||
extern void pv_state_rate_limit_set(pvstate_t, unsigned long long);
|
extern void pv_state_rate_limit_set(pvstate_t, unsigned long long);
|
||||||
extern void pv_state_target_buffer_size_set(pvstate_t, unsigned long long);
|
extern void pv_state_target_buffer_size_set(pvstate_t, unsigned long long);
|
||||||
extern void pv_state_no_splice_set(pvstate_t, unsigned char);
|
extern void pv_state_no_splice_set(pvstate_t, bool);
|
||||||
extern void pv_state_size_set(pvstate_t, unsigned long long);
|
extern void pv_state_size_set(pvstate_t, unsigned long long);
|
||||||
extern void pv_state_interval_set(pvstate_t, double);
|
extern void pv_state_interval_set(pvstate_t, double);
|
||||||
extern void pv_state_width_set(pvstate_t, unsigned int);
|
extern void pv_state_width_set(pvstate_t, unsigned int);
|
||||||
@@ -96,6 +96,11 @@ extern void pv_state_watch_fd_set(pvstate_t, int);
|
|||||||
|
|
||||||
extern void pv_state_inputfiles(pvstate_t, int, const char **);
|
extern void pv_state_inputfiles(pvstate_t, int, const char **);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Work out whether we are in the foreground.
|
||||||
|
*/
|
||||||
|
extern bool pv_in_foreground(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Work out the terminal size.
|
* Work out the terminal size.
|
||||||
*/
|
*/
|
||||||
|
|||||||
+16
-12
@@ -23,7 +23,7 @@
|
|||||||
void debugging_output(const char *function, const char *file, int line,
|
void debugging_output(const char *function, const char *file, int line,
|
||||||
const char *format, ...)
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
static int tried_open = 0;
|
static bool tried_open = false;
|
||||||
static FILE *debugfptr = NULL;
|
static FILE *debugfptr = NULL;
|
||||||
char *debugfile;
|
char *debugfile;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@@ -31,30 +31,31 @@ void debugging_output(const char *function, const char *file, int line,
|
|||||||
struct tm *tm;
|
struct tm *tm;
|
||||||
char tbuf[128];
|
char tbuf[128];
|
||||||
|
|
||||||
if (0 == tried_open) {
|
if (false == tried_open) {
|
||||||
debugfile = getenv("DEBUG");
|
debugfile = getenv("DEBUG");
|
||||||
if (NULL != debugfile)
|
if (NULL != debugfile)
|
||||||
debugfptr = fopen(debugfile, "a");
|
debugfptr = fopen(debugfile, "a");
|
||||||
tried_open = 1;
|
tried_open = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == debugfptr)
|
if (NULL == debugfptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
time(&t);
|
(void) time(&t);
|
||||||
tm = localtime(&t);
|
tm = localtime(&t);
|
||||||
tbuf[0] = 0;
|
tbuf[0] = '\0';
|
||||||
strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", tm);
|
if (0 == strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", tm))
|
||||||
|
tbuf[0] = '\0';
|
||||||
|
|
||||||
fprintf(debugfptr, "[%s] (%d) %s (%s:%d): ", tbuf, getpid(),
|
(void) fprintf(debugfptr, "[%s] (%d) %s (%s:%d): ", tbuf, getpid(),
|
||||||
function, file, line);
|
function, file, line);
|
||||||
|
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
vfprintf(debugfptr, format, ap);
|
(void) vfprintf(debugfptr, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
fprintf(debugfptr, "\n");
|
(void) fprintf(debugfptr, "\n");
|
||||||
fflush(debugfptr);
|
(void) fflush(debugfptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* ! ENABLE_DEBUGGING */
|
#else /* ! ENABLE_DEBUGGING */
|
||||||
@@ -62,7 +63,10 @@ void debugging_output(const char *function, const char *file, int line,
|
|||||||
/*
|
/*
|
||||||
* Stub debugging output function.
|
* Stub debugging output function.
|
||||||
*/
|
*/
|
||||||
void debugging_output(const char *function, const char *file, int line,
|
void debugging_output( __attribute__ ((unused))
|
||||||
|
const char *function, __attribute__ ((unused))
|
||||||
|
const char *file, __attribute__ ((unused))
|
||||||
|
int line, __attribute__ ((unused))
|
||||||
const char *format, ...)
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-10
@@ -103,7 +103,7 @@ void display_help(void)
|
|||||||
N_("show version information and exit")},
|
N_("show version information and exit")},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
int i, col1max = 0, tw = 77;
|
unsigned int i, col1max = 0, tw = 77;
|
||||||
char *optbuf;
|
char *optbuf;
|
||||||
|
|
||||||
printf(_("Usage: %s [OPTION] [FILE]..."), PROGRAM_NAME);
|
printf(_("Usage: %s [OPTION] [FILE]..."), PROGRAM_NAME);
|
||||||
@@ -113,13 +113,14 @@ void display_help(void)
|
|||||||
"with monitoring."));
|
"with monitoring."));
|
||||||
|
|
||||||
for (i = 0; optlist[i].optshort; i++) {
|
for (i = 0; optlist[i].optshort; i++) {
|
||||||
int width = 0;
|
unsigned int width = 0;
|
||||||
char *param;
|
char *param;
|
||||||
|
|
||||||
width = 2 + strlen(optlist[i].optshort);
|
width = 2 + (unsigned int) strlen(optlist[i].optshort);
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
if (optlist[i].optlong)
|
if (optlist[i].optlong)
|
||||||
width += 2 + strlen(optlist[i].optlong);
|
width +=
|
||||||
|
2 + (unsigned int) strlen(optlist[i].optlong);
|
||||||
#endif
|
#endif
|
||||||
param = optlist[i].param;
|
param = optlist[i].param;
|
||||||
if (param)
|
if (param)
|
||||||
@@ -133,10 +134,10 @@ void display_help(void)
|
|||||||
|
|
||||||
col1max++;
|
col1max++;
|
||||||
|
|
||||||
optbuf = malloc(col1max + 16);
|
optbuf = malloc((size_t) (col1max + 16));
|
||||||
if (NULL == optbuf) {
|
if (NULL == optbuf) {
|
||||||
fprintf(stderr, "%s: %s\n", PROGRAM_NAME, strerror(errno));
|
fprintf(stderr, "%s: %s\n", PROGRAM_NAME, strerror(errno));
|
||||||
exit(1);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; optlist[i].optshort; i++) {
|
for (i = 0; optlist[i].optshort; i++) {
|
||||||
@@ -145,7 +146,7 @@ void display_help(void)
|
|||||||
char *start;
|
char *start;
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
if (0 == optlist[i].optshort[0]) {
|
if ('\0' == optlist[i].optshort[0]) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -157,7 +158,12 @@ void display_help(void)
|
|||||||
if (description)
|
if (description)
|
||||||
description = _(description);
|
description = _(description);
|
||||||
|
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
|
(void) snprintf(optbuf, (size_t) (col1max + 15),
|
||||||
|
"%s%s%s%s%s", optlist[i].optshort,
|
||||||
|
#else
|
||||||
sprintf(optbuf, "%s%s%s%s%s", optlist[i].optshort,
|
sprintf(optbuf, "%s%s%s%s%s", optlist[i].optshort,
|
||||||
|
#endif
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
optlist[i].optlong ? ", " : "",
|
optlist[i].optlong ? ", " : "",
|
||||||
optlist[i].optlong ? optlist[i].optlong : "",
|
optlist[i].optlong ? optlist[i].optlong : "",
|
||||||
@@ -166,7 +172,7 @@ void display_help(void)
|
|||||||
#endif
|
#endif
|
||||||
param ? " " : "", param ? param : "");
|
param ? " " : "", param ? param : "");
|
||||||
|
|
||||||
printf(" %-*s ", col1max - 2, optbuf);
|
printf(" %-*s ", (int) (col1max - 2), optbuf);
|
||||||
|
|
||||||
if (NULL == description) {
|
if (NULL == description) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@@ -175,7 +181,7 @@ void display_help(void)
|
|||||||
|
|
||||||
start = description;
|
start = description;
|
||||||
|
|
||||||
while (strlen(start) > tw - col1max) {
|
while ((unsigned int) strlen(start) > tw - col1max) {
|
||||||
end = start + tw - col1max;
|
end = start + tw - col1max;
|
||||||
while ((end > start) && (end[0] != ' '))
|
while ((end > start) && (end[0] != ' '))
|
||||||
end--;
|
end--;
|
||||||
@@ -185,7 +191,7 @@ void display_help(void)
|
|||||||
end++;
|
end++;
|
||||||
}
|
}
|
||||||
printf("%.*s\n%*s ", (int) (end - start), start,
|
printf("%.*s\n%*s ", (int) (end - start), start,
|
||||||
col1max, "");
|
(int) col1max, "");
|
||||||
if (end == start)
|
if (end == start)
|
||||||
end++;
|
end++;
|
||||||
start = end;
|
start = end;
|
||||||
|
|||||||
+70
-21
@@ -35,12 +35,13 @@ int main(int argc, char **argv)
|
|||||||
struct termios t, t_save;
|
struct termios t, t_save;
|
||||||
opts_t opts;
|
opts_t opts;
|
||||||
pvstate_t state;
|
pvstate_t state;
|
||||||
|
bool t_saved, t_needs_reset;
|
||||||
int retcode = 0;
|
int retcode = 0;
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
setlocale(LC_ALL, "");
|
(void) setlocale(LC_ALL, "");
|
||||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
(void) bindtextdomain(PACKAGE, LOCALEDIR);
|
||||||
textdomain(PACKAGE);
|
(void) textdomain(PACKAGE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
opts = opts_parse(argc, argv);
|
opts = opts_parse(argc, argv);
|
||||||
@@ -90,7 +91,10 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
fprintf(pidfptr, "%d\n", getpid());
|
fprintf(pidfptr, "%d\n", getpid());
|
||||||
fclose(pidfptr);
|
if (0 != fclose(pidfptr)) {
|
||||||
|
fprintf(stderr, "%s: %s: %s\n", opts->program_name,
|
||||||
|
opts->pidfile, strerror(errno));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -112,7 +116,7 @@ int main(int argc, char **argv)
|
|||||||
* If no size was given, and we're not in line mode, try to
|
* If no size was given, and we're not in line mode, try to
|
||||||
* calculate the total size.
|
* calculate the total size.
|
||||||
*/
|
*/
|
||||||
if ((0 == opts->size) && (0 == opts->linemode)) {
|
if ((0 == opts->size) && (false == opts->linemode)) {
|
||||||
opts->size = pv_calc_total_size(state);
|
opts->size = pv_calc_total_size(state);
|
||||||
debug("%s: %llu", "no size given - calculated",
|
debug("%s: %llu", "no size given - calculated",
|
||||||
opts->size);
|
opts->size);
|
||||||
@@ -122,7 +126,7 @@ int main(int argc, char **argv)
|
|||||||
* If the size is unknown, we cannot have an ETA.
|
* If the size is unknown, we cannot have an ETA.
|
||||||
*/
|
*/
|
||||||
if (opts->size < 1) {
|
if (opts->size < 1) {
|
||||||
opts->eta = 0;
|
opts->eta = false;
|
||||||
debug("%s", "size unknown - ETA disabled");
|
debug("%s", "size unknown - ETA disabled");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,9 +136,9 @@ int main(int argc, char **argv)
|
|||||||
* outputting numerically, we will have nothing to display at all.
|
* outputting numerically, we will have nothing to display at all.
|
||||||
*/
|
*/
|
||||||
if ((0 == isatty(STDERR_FILENO))
|
if ((0 == isatty(STDERR_FILENO))
|
||||||
&& (0 == opts->force)
|
&& (false == opts->force)
|
||||||
&& (0 == opts->numeric)) {
|
&& (false == opts->numeric)) {
|
||||||
opts->no_op = 1;
|
opts->no_op = true;
|
||||||
debug("%s", "nothing to display - setting no_op");
|
debug("%s", "nothing to display - setting no_op");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,6 +223,13 @@ int main(int argc, char **argv)
|
|||||||
O_NONBLOCK | fcntl(STDOUT_FILENO, F_GETFL));
|
O_NONBLOCK | fcntl(STDOUT_FILENO, F_GETFL));
|
||||||
#endif /* MAKE_STDOUT_NONBLOCKING */
|
#endif /* MAKE_STDOUT_NONBLOCKING */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keep track of whether we've saved the terminal attributes and
|
||||||
|
* whether we need to reset them at the end.
|
||||||
|
*/
|
||||||
|
t_saved = false;
|
||||||
|
t_needs_reset = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set terminal option TOSTOP so we get signal SIGTTOU if we try to
|
* Set terminal option TOSTOP so we get signal SIGTTOU if we try to
|
||||||
* write to the terminal while backgrounded.
|
* write to the terminal while backgrounded.
|
||||||
@@ -226,25 +237,56 @@ int main(int argc, char **argv)
|
|||||||
* Also, save the current terminal attributes for later restoration.
|
* Also, save the current terminal attributes for later restoration.
|
||||||
*/
|
*/
|
||||||
memset(&t, 0, sizeof(t));
|
memset(&t, 0, sizeof(t));
|
||||||
tcgetattr(STDERR_FILENO, &t);
|
if (0 != isatty(STDERR_FILENO)) {
|
||||||
|
if (0 == tcgetattr(STDERR_FILENO, &t)) {
|
||||||
|
debug("%s", "saved terminal attributes");
|
||||||
|
t_saved = true;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "%s: %s: %s\n", opts->program_name,
|
||||||
|
_("failed to read terminal attributes"),
|
||||||
|
strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
t_save = t;
|
t_save = t;
|
||||||
t.c_lflag |= TOSTOP;
|
if (t_saved && pv_in_foreground()) {
|
||||||
tcsetattr(STDERR_FILENO, TCSANOW, &t);
|
t.c_lflag |= TOSTOP;
|
||||||
|
(void) tcsetattr(STDERR_FILENO, TCSANOW, &t);
|
||||||
|
t_needs_reset = true;
|
||||||
|
debug("%s", "set terminal TOSTOP attribute");
|
||||||
|
}
|
||||||
|
|
||||||
if (0 != opts->watch_pid) {
|
if (0 != opts->watch_pid) {
|
||||||
if (0 <= opts->watch_fd) {
|
if (0 <= opts->watch_fd) {
|
||||||
pv_sig_init(state);
|
pv_sig_init(state);
|
||||||
retcode = pv_watchfd_loop(state);
|
retcode = pv_watchfd_loop(state);
|
||||||
tcsetattr(STDERR_FILENO, TCSANOW, &t_save);
|
if (t_needs_reset && pv_in_foreground()) {
|
||||||
if (opts->pidfile != NULL)
|
(void) tcsetattr(STDERR_FILENO, TCSANOW,
|
||||||
remove(opts->pidfile);
|
&t_save);
|
||||||
|
}
|
||||||
|
if (opts->pidfile != NULL) {
|
||||||
|
if (0 != remove(opts->pidfile)) {
|
||||||
|
fprintf(stderr, "%s: %s: %s\n",
|
||||||
|
opts->program_name,
|
||||||
|
opts->pidfile,
|
||||||
|
strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
pv_sig_fini(state);
|
pv_sig_fini(state);
|
||||||
} else {
|
} else {
|
||||||
pv_sig_init(state);
|
pv_sig_init(state);
|
||||||
retcode = pv_watchpid_loop(state);
|
retcode = pv_watchpid_loop(state);
|
||||||
tcsetattr(STDERR_FILENO, TCSANOW, &t_save);
|
if (t_needs_reset && pv_in_foreground()) {
|
||||||
if (opts->pidfile != NULL)
|
(void) tcsetattr(STDERR_FILENO, TCSANOW,
|
||||||
remove(opts->pidfile);
|
&t_save);
|
||||||
|
}
|
||||||
|
if (opts->pidfile != NULL) {
|
||||||
|
if (0 != remove(opts->pidfile)) {
|
||||||
|
fprintf(stderr, "%s: %s: %s\n",
|
||||||
|
opts->program_name,
|
||||||
|
opts->pidfile,
|
||||||
|
strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
pv_sig_fini(state);
|
pv_sig_fini(state);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -252,9 +294,16 @@ int main(int argc, char **argv)
|
|||||||
pv_remote_init();
|
pv_remote_init();
|
||||||
retcode = pv_main_loop(state);
|
retcode = pv_main_loop(state);
|
||||||
pv_remote_fini();
|
pv_remote_fini();
|
||||||
tcsetattr(STDERR_FILENO, TCSANOW, &t_save);
|
if (t_needs_reset && pv_in_foreground()) {
|
||||||
if (opts->pidfile != NULL)
|
(void) tcsetattr(STDERR_FILENO, TCSANOW, &t_save);
|
||||||
remove(opts->pidfile);
|
}
|
||||||
|
if (opts->pidfile != NULL) {
|
||||||
|
if (0 != remove(opts->pidfile)) {
|
||||||
|
fprintf(stderr, "%s: %s: %s\n",
|
||||||
|
opts->program_name, opts->pidfile,
|
||||||
|
strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
pv_sig_fini(state);
|
pv_sig_fini(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+106
-118
@@ -27,7 +27,7 @@ void opts_free(opts_t opts)
|
|||||||
{
|
{
|
||||||
if (!opts)
|
if (!opts)
|
||||||
return;
|
return;
|
||||||
if (opts->argv)
|
if (NULL != opts->argv)
|
||||||
free(opts->argv);
|
free(opts->argv);
|
||||||
free(opts);
|
free(opts);
|
||||||
}
|
}
|
||||||
@@ -47,40 +47,40 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
struct option long_options[] = {
|
struct option long_options[] = {
|
||||||
{"help", 0, 0, 'h'},
|
{"help", 0, NULL, (int) 'h'},
|
||||||
{"version", 0, 0, 'V'},
|
{"version", 0, NULL, (int) 'V'},
|
||||||
{"progress", 0, 0, 'p'},
|
{"progress", 0, NULL, (int) 'p'},
|
||||||
{"timer", 0, 0, 't'},
|
{"timer", 0, NULL, (int) 't'},
|
||||||
{"eta", 0, 0, 'e'},
|
{"eta", 0, NULL, (int) 'e'},
|
||||||
{"fineta", 0, 0, 'I'},
|
{"fineta", 0, NULL, (int) 'I'},
|
||||||
{"rate", 0, 0, 'r'},
|
{"rate", 0, NULL, (int) 'r'},
|
||||||
{"average-rate", 0, 0, 'a'},
|
{"average-rate", 0, NULL, (int) 'a'},
|
||||||
{"bytes", 0, 0, 'b'},
|
{"bytes", 0, NULL, (int) 'b'},
|
||||||
{"buffer-percent", 0, 0, 'T'},
|
{"buffer-percent", 0, NULL, (int) 'T'},
|
||||||
{"last-written", 1, 0, 'A'},
|
{"last-written", 1, NULL, (int) 'A'},
|
||||||
{"force", 0, 0, 'f'},
|
{"force", 0, NULL, (int) 'f'},
|
||||||
{"numeric", 0, 0, 'n'},
|
{"numeric", 0, NULL, (int) 'n'},
|
||||||
{"quiet", 0, 0, 'q'},
|
{"quiet", 0, NULL, (int) 'q'},
|
||||||
{"cursor", 0, 0, 'c'},
|
{"cursor", 0, NULL, (int) 'c'},
|
||||||
{"wait", 0, 0, 'W'},
|
{"wait", 0, NULL, (int) 'W'},
|
||||||
{"delay-start", 1, 0, 'D'},
|
{"delay-start", 1, NULL, (int) 'D'},
|
||||||
{"size", 1, 0, 's'},
|
{"size", 1, NULL, (int) 's'},
|
||||||
{"line-mode", 0, 0, 'l'},
|
{"line-mode", 0, NULL, (int) 'l'},
|
||||||
{"null", 0, 0, '0'},
|
{"null", 0, NULL, (int) '0'},
|
||||||
{"interval", 1, 0, 'i'},
|
{"interval", 1, NULL, (int) 'i'},
|
||||||
{"width", 1, 0, 'w'},
|
{"width", 1, NULL, (int) 'w'},
|
||||||
{"height", 1, 0, 'H'},
|
{"height", 1, NULL, (int) 'H'},
|
||||||
{"name", 1, 0, 'N'},
|
{"name", 1, NULL, (int) 'N'},
|
||||||
{"format", 1, 0, 'F'},
|
{"format", 1, NULL, (int) 'F'},
|
||||||
{"rate-limit", 1, 0, 'L'},
|
{"rate-limit", 1, NULL, (int) 'L'},
|
||||||
{"buffer-size", 1, 0, 'B'},
|
{"buffer-size", 1, NULL, (int) 'B'},
|
||||||
{"no-splice", 0, 0, 'C'},
|
{"no-splice", 0, NULL, (int) 'C'},
|
||||||
{"skip-errors", 0, 0, 'E'},
|
{"skip-errors", 0, NULL, (int) 'E'},
|
||||||
{"stop-at-size", 0, 0, 'S'},
|
{"stop-at-size", 0, NULL, (int) 'S'},
|
||||||
{"remote", 1, 0, 'R'},
|
{"remote", 1, NULL, (int) 'R'},
|
||||||
{"pidfile", 1, 0, 'P'},
|
{"pidfile", 1, NULL, (int) 'P'},
|
||||||
{"watchfd", 1, 0, 'd'},
|
{"watchfd", 1, NULL, (int) 'd'},
|
||||||
{0, 0, 0, 0}
|
{NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -94,28 +94,25 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
|
|
||||||
opts = calloc(1, sizeof(*opts));
|
opts = calloc(1, sizeof(*opts));
|
||||||
if (!opts) {
|
if (!opts) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: %s: %s\n", argv[0],
|
||||||
_("%s: option structure allocation failed (%s)"),
|
_("option structure allocation failed"),
|
||||||
argv[0], strerror(errno));
|
strerror(errno));
|
||||||
fprintf(stderr, "\n");
|
return NULL;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
opts->program_name = argv[0];
|
opts->program_name = argv[0];
|
||||||
ptr = strrchr(opts->program_name, '/');
|
ptr = strrchr(opts->program_name, '/');
|
||||||
if (NULL != ptr)
|
if (NULL != ptr)
|
||||||
opts->program_name = &(ptr[1]);
|
opts->program_name = 1 + ptr;
|
||||||
|
|
||||||
opts->argc = 0;
|
opts->argc = 0;
|
||||||
opts->argv = calloc(argc + 1, sizeof(char *));
|
opts->argv = calloc((size_t) (argc + 1), sizeof(char *));
|
||||||
if (!opts->argv) {
|
if (NULL == opts->argv) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: %s: %s\n", opts->program_name,
|
||||||
_
|
_("option structure argv allocation failed"),
|
||||||
("%s: option structure argv allocation failed (%s)"),
|
strerror(errno));
|
||||||
opts->program_name, strerror(errno));
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
numopts = 0;
|
numopts = 0;
|
||||||
@@ -153,7 +150,7 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
opts->program_name, c,
|
opts->program_name, c,
|
||||||
_("integer argument expected"));
|
_("integer argument expected"));
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
@@ -164,7 +161,7 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
opts->program_name, c,
|
opts->program_name, c,
|
||||||
_("numeric argument expected"));
|
_("numeric argument expected"));
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
@@ -175,14 +172,14 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
_
|
_
|
||||||
("process ID or pid:fd pair expected"));
|
("process ID or pid:fd pair expected"));
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (check_pid < 1) {
|
if (check_pid < 1) {
|
||||||
fprintf(stderr, "%s: -%c: %s\n",
|
fprintf(stderr, "%s: -%c: %s\n",
|
||||||
opts->program_name, c,
|
opts->program_name, c,
|
||||||
_("invalid process ID"));
|
_("invalid process ID"));
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -195,109 +192,110 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
switch (c) {
|
switch (c) {
|
||||||
case 'h':
|
case 'h':
|
||||||
display_help();
|
display_help();
|
||||||
opts->do_nothing = 1;
|
opts->do_nothing = true;
|
||||||
return opts;
|
return opts; /* early return */
|
||||||
break;
|
|
||||||
case 'V':
|
case 'V':
|
||||||
display_version();
|
display_version();
|
||||||
opts->do_nothing = 1;
|
opts->do_nothing = true;
|
||||||
return opts;
|
return opts; /* early return */
|
||||||
break;
|
|
||||||
case 'p':
|
case 'p':
|
||||||
opts->progress = 1;
|
opts->progress = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
opts->timer = 1;
|
opts->timer = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
opts->fineta = 1;
|
opts->fineta = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
opts->eta = 1;
|
opts->eta = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
opts->rate = 1;
|
opts->rate = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
opts->average_rate = 1;
|
opts->average_rate = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
opts->bytes = 1;
|
opts->bytes = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
opts->bufpercent = 1;
|
opts->bufpercent = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
|
opts->no_splice = true;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
opts->lastwritten = pv_getnum_i(optarg);
|
opts->lastwritten = pv_getnum_ui(optarg);
|
||||||
numopts++;
|
numopts++;
|
||||||
|
opts->no_splice = true;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
opts->force = 1;
|
opts->force = true;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
opts->numeric = 1;
|
opts->numeric = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
opts->no_op = 1;
|
opts->no_op = true;
|
||||||
numopts++;
|
numopts++;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
opts->cursor = 1;
|
opts->cursor = true;
|
||||||
break;
|
break;
|
||||||
case 'W':
|
case 'W':
|
||||||
opts->wait = 1;
|
opts->wait = true;
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
opts->delay_start = pv_getnum_d(optarg);
|
opts->delay_start = pv_getnum_d(optarg);
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
opts->size = pv_getnum_ll(optarg);
|
opts->size = pv_getnum_ull(optarg);
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
opts->linemode = 1;
|
opts->linemode = true;
|
||||||
break;
|
break;
|
||||||
case '0':
|
case '0':
|
||||||
opts->null = 1;
|
opts->null = true;
|
||||||
opts->linemode = 1;
|
opts->linemode = true;
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
opts->interval = pv_getnum_d(optarg);
|
opts->interval = pv_getnum_d(optarg);
|
||||||
break;
|
break;
|
||||||
case 'w':
|
case 'w':
|
||||||
opts->width = pv_getnum_i(optarg);
|
opts->width = pv_getnum_ui(optarg);
|
||||||
break;
|
break;
|
||||||
case 'H':
|
case 'H':
|
||||||
opts->height = pv_getnum_i(optarg);
|
opts->height = pv_getnum_ui(optarg);
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
opts->name = optarg;
|
opts->name = optarg;
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
opts->rate_limit = pv_getnum_ll(optarg);
|
opts->rate_limit = pv_getnum_ull(optarg);
|
||||||
break;
|
break;
|
||||||
case 'B':
|
case 'B':
|
||||||
opts->buffer_size = pv_getnum_ll(optarg);
|
opts->buffer_size = pv_getnum_ull(optarg);
|
||||||
|
opts->no_splice = true;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
opts->no_splice = 1;
|
opts->no_splice = true;
|
||||||
break;
|
break;
|
||||||
case 'E':
|
case 'E':
|
||||||
opts->skip_errors++;
|
opts->skip_errors++;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
opts->stop_at_size = 1;
|
opts->stop_at_size = true;
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
opts->remote = pv_getnum_i(optarg);
|
opts->remote = pv_getnum_ui(optarg);
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
opts->pidfile = optarg;
|
opts->pidfile = optarg;
|
||||||
@@ -308,8 +306,9 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
case 'd':
|
case 'd':
|
||||||
opts->watch_pid = 0;
|
opts->watch_pid = 0;
|
||||||
opts->watch_fd = -1;
|
opts->watch_fd = -1;
|
||||||
sscanf(optarg, "%u:%d", &(opts->watch_pid),
|
/* No syntax check here, already done earlier */
|
||||||
&(opts->watch_fd));
|
(void) sscanf(optarg, "%u:%d", &(opts->watch_pid),
|
||||||
|
&(opts->watch_fd));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
@@ -323,8 +322,7 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL; /* early return */
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} while (c != -1);
|
} while (c != -1);
|
||||||
@@ -333,53 +331,43 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
if (opts->linemode || opts->null || opts->stop_at_size
|
if (opts->linemode || opts->null || opts->stop_at_size
|
||||||
|| (opts->skip_errors > 0) || (opts->buffer_size > 0)
|
|| (opts->skip_errors > 0) || (opts->buffer_size > 0)
|
||||||
|| (opts->rate_limit > 0)) {
|
|| (opts->rate_limit > 0)) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: %s\n", opts->program_name,
|
||||||
_
|
_
|
||||||
("%s: cannot use line mode or transfer modifier options when watching file descriptors"),
|
("cannot use line mode or transfer modifier options when watching file descriptors"));
|
||||||
opts->program_name);
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts->cursor) {
|
if (opts->cursor) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: %s\n", opts->program_name,
|
||||||
_
|
_
|
||||||
("%s: cannot use cursor positioning when watching file descriptors"),
|
("cannot use cursor positioning when watching file descriptors"));
|
||||||
opts->program_name);
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != opts->remote) {
|
if (0 != opts->remote) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: %s\n", opts->program_name,
|
||||||
_
|
_
|
||||||
("%s: cannot use remote control when watching file descriptors"),
|
("cannot use remote control when watching file descriptors"));
|
||||||
opts->program_name);
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optind < argc) {
|
if (optind < argc) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: %s\n", opts->program_name,
|
||||||
_
|
_
|
||||||
("%s: cannot transfer files when watching file descriptors"),
|
("cannot transfer files when watching file descriptors"));
|
||||||
opts->program_name);
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != access("/proc/self/fdinfo", X_OK)) {
|
if (0 != access("/proc/self/fdinfo", X_OK)) {
|
||||||
fprintf(stderr,
|
fprintf(stderr, "%s: -d: %s\n", opts->program_name,
|
||||||
_
|
_
|
||||||
("%s: -d: not available on systems without /proc/self/fdinfo"),
|
("not available on systems without /proc/self/fdinfo"));
|
||||||
opts->program_name);
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
opts_free(opts);
|
opts_free(opts);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -387,11 +375,11 @@ opts_t opts_parse(int argc, char **argv)
|
|||||||
* Default options: -pterb
|
* Default options: -pterb
|
||||||
*/
|
*/
|
||||||
if (0 == numopts) {
|
if (0 == numopts) {
|
||||||
opts->progress = 1;
|
opts->progress = true;
|
||||||
opts->timer = 1;
|
opts->timer = true;
|
||||||
opts->eta = 1;
|
opts->eta = true;
|
||||||
opts->rate = 1;
|
opts->rate = true;
|
||||||
opts->bytes = 1;
|
opts->bytes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+33
-29
@@ -25,14 +25,14 @@
|
|||||||
#ifdef HAVE_IPC
|
#ifdef HAVE_IPC
|
||||||
struct remote_msg {
|
struct remote_msg {
|
||||||
long mtype;
|
long mtype;
|
||||||
unsigned char progress; /* progress bar flag */
|
bool progress; /* progress bar flag */
|
||||||
unsigned char timer; /* timer flag */
|
bool timer; /* timer flag */
|
||||||
unsigned char eta; /* ETA flag */
|
bool eta; /* ETA flag */
|
||||||
unsigned char fineta; /* absolute ETA flag */
|
bool fineta; /* absolute ETA flag */
|
||||||
unsigned char rate; /* rate counter flag */
|
bool rate; /* rate counter flag */
|
||||||
unsigned char average_rate; /* average rate counter flag */
|
bool average_rate; /* average rate counter flag */
|
||||||
unsigned char bytes; /* bytes transferred flag */
|
bool bytes; /* bytes transferred flag */
|
||||||
unsigned char bufpercent; /* transfer buffer percentage flag */
|
bool bufpercent; /* transfer buffer percentage flag */
|
||||||
unsigned int lastwritten; /* last-written bytes count */
|
unsigned int lastwritten; /* last-written bytes count */
|
||||||
unsigned long long rate_limit; /* rate limit, in bytes per second */
|
unsigned long long rate_limit; /* rate limit, in bytes per second */
|
||||||
unsigned long long buffer_size; /* buffer size, in bytes (0=default) */
|
unsigned long long buffer_size; /* buffer size, in bytes (0=default) */
|
||||||
@@ -59,14 +59,12 @@ static int remote__msgid = -1;
|
|||||||
*/
|
*/
|
||||||
static key_t remote__genkey(void)
|
static key_t remote__genkey(void)
|
||||||
{
|
{
|
||||||
int uid;
|
uid_t uid;
|
||||||
key_t key;
|
key_t key;
|
||||||
|
|
||||||
uid = geteuid();
|
uid = geteuid();
|
||||||
if (uid < 0)
|
|
||||||
uid = 0;
|
|
||||||
|
|
||||||
key = ftok("/tmp", 'P') | uid;
|
key = ftok("/tmp", (int) 'P') | uid;
|
||||||
|
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
@@ -79,7 +77,7 @@ static key_t remote__genkey(void)
|
|||||||
static int remote__msgget(void)
|
static int remote__msgget(void)
|
||||||
{
|
{
|
||||||
/* Catch SIGSYS in case msgget() raises it, so we get ENOSYS */
|
/* Catch SIGSYS in case msgget() raises it, so we get ENOSYS */
|
||||||
signal(SIGSYS, SIG_IGN);
|
(void) signal(SIGSYS, SIG_IGN);
|
||||||
return msgget(remote__genkey(), IPC_CREAT | 0600);
|
return msgget(remote__genkey(), IPC_CREAT | 0600);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,13 +95,13 @@ int pv_remote_set(opts_t opts)
|
|||||||
struct msqid_ds qbuf;
|
struct msqid_ds qbuf;
|
||||||
long timeout;
|
long timeout;
|
||||||
int msgid;
|
int msgid;
|
||||||
long initial_qnum;
|
unsigned long initial_qnum;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check that the remote process exists.
|
* Check that the remote process exists.
|
||||||
*/
|
*/
|
||||||
if (kill(opts->remote, 0) != 0) {
|
if (kill((pid_t) (opts->remote), 0) != 0) {
|
||||||
fprintf(stderr, "%s: %d: %s\n", opts->program_name,
|
fprintf(stderr, "%s: %u: %s\n", opts->program_name,
|
||||||
opts->remote, strerror(errno));
|
opts->remote, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -111,15 +109,15 @@ int pv_remote_set(opts_t opts)
|
|||||||
/*
|
/*
|
||||||
* Make sure parameters are within sensible bounds.
|
* Make sure parameters are within sensible bounds.
|
||||||
*/
|
*/
|
||||||
if (opts->width < 0)
|
if (opts->width < 1)
|
||||||
opts->width = 80;
|
opts->width = 80;
|
||||||
if (opts->height < 0)
|
if (opts->height < 1)
|
||||||
opts->height = 25;
|
opts->height = 25;
|
||||||
if (opts->width > 999999)
|
if (opts->width > 999999)
|
||||||
opts->width = 999999;
|
opts->width = 999999;
|
||||||
if (opts->height > 999999)
|
if (opts->height > 999999)
|
||||||
opts->height = 999999;
|
opts->height = 999999;
|
||||||
if ((opts->interval != 0) && (opts->interval < 0.1))
|
if ((opts->interval > 0) && (opts->interval < 0.1))
|
||||||
opts->interval = 0.1;
|
opts->interval = 0.1;
|
||||||
if (opts->interval > 600)
|
if (opts->interval > 600)
|
||||||
opts->interval = 600;
|
opts->interval = 600;
|
||||||
@@ -128,7 +126,7 @@ int pv_remote_set(opts_t opts)
|
|||||||
* Copy parameters into message buffer.
|
* Copy parameters into message buffer.
|
||||||
*/
|
*/
|
||||||
memset(&msgbuf, 0, sizeof(msgbuf));
|
memset(&msgbuf, 0, sizeof(msgbuf));
|
||||||
msgbuf.mtype = opts->remote;
|
msgbuf.mtype = (long) (opts->remote);
|
||||||
msgbuf.progress = opts->progress;
|
msgbuf.progress = opts->progress;
|
||||||
msgbuf.timer = opts->timer;
|
msgbuf.timer = opts->timer;
|
||||||
msgbuf.eta = opts->eta;
|
msgbuf.eta = opts->eta;
|
||||||
@@ -159,6 +157,7 @@ int pv_remote_set(opts_t opts)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&qbuf, 0, sizeof(qbuf));
|
||||||
if (msgctl(msgid, IPC_STAT, &qbuf) < 0) {
|
if (msgctl(msgid, IPC_STAT, &qbuf) < 0) {
|
||||||
fprintf(stderr, "%s: %s\n", opts->program_name,
|
fprintf(stderr, "%s: %s\n", opts->program_name,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
@@ -178,14 +177,16 @@ int pv_remote_set(opts_t opts)
|
|||||||
while (timeout > 10000) {
|
while (timeout > 10000) {
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
|
||||||
|
memset(&tv, 0, sizeof(tv));
|
||||||
tv.tv_sec = 0;
|
tv.tv_sec = 0;
|
||||||
tv.tv_usec = 10000;
|
tv.tv_usec = 10000;
|
||||||
select(0, NULL, NULL, NULL, &tv);
|
(void) select(0, NULL, NULL, NULL, &tv);
|
||||||
timeout -= 10000;
|
timeout -= 10000;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we can't stat the queue, it must have been deleted.
|
* If we can't stat the queue, it must have been deleted.
|
||||||
*/
|
*/
|
||||||
|
memset(&qbuf, 0, sizeof(qbuf));
|
||||||
if (msgctl(msgid, IPC_STAT, &qbuf) < 0)
|
if (msgctl(msgid, IPC_STAT, &qbuf) < 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -201,20 +202,22 @@ int pv_remote_set(opts_t opts)
|
|||||||
/*
|
/*
|
||||||
* Message not received - delete it.
|
* Message not received - delete it.
|
||||||
*/
|
*/
|
||||||
|
memset(&qbuf, 0, sizeof(qbuf));
|
||||||
if (msgctl(msgid, IPC_STAT, &qbuf) >= 0) {
|
if (msgctl(msgid, IPC_STAT, &qbuf) >= 0) {
|
||||||
msgrcv(msgid, &msgbuf, sizeof(msgbuf) - sizeof(long),
|
(void) msgrcv(msgid, &msgbuf,
|
||||||
opts->remote, IPC_NOWAIT);
|
sizeof(msgbuf) - sizeof(long),
|
||||||
|
(long) (opts->remote), IPC_NOWAIT);
|
||||||
/*
|
/*
|
||||||
* If this leaves nothing on the queue, remove the
|
* If this leaves nothing on the queue, remove the
|
||||||
* queue, in case we created one for no reason.
|
* queue, in case we created one for no reason.
|
||||||
*/
|
*/
|
||||||
if (msgctl(msgid, IPC_STAT, &qbuf) >= 0) {
|
if (msgctl(msgid, IPC_STAT, &qbuf) >= 0) {
|
||||||
if (qbuf.msg_qnum < 1)
|
if (qbuf.msg_qnum < 1)
|
||||||
msgctl(msgid, IPC_RMID, &qbuf);
|
(void) msgctl(msgid, IPC_RMID, &qbuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "%s: %d: %s\n", opts->program_name, opts->remote,
|
fprintf(stderr, "%s: %u: %s\n", opts->program_name, opts->remote,
|
||||||
_("message not received"));
|
_("message not received"));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -230,7 +233,7 @@ int pv_remote_set(opts_t opts)
|
|||||||
void pv_remote_check(pvstate_t state)
|
void pv_remote_check(pvstate_t state)
|
||||||
{
|
{
|
||||||
struct remote_msg msgbuf;
|
struct remote_msg msgbuf;
|
||||||
int got;
|
ssize_t got;
|
||||||
|
|
||||||
if (remote__msgid < 0)
|
if (remote__msgid < 0)
|
||||||
return;
|
return;
|
||||||
@@ -261,7 +264,7 @@ void pv_remote_check(pvstate_t state)
|
|||||||
msgbuf.average_rate,
|
msgbuf.average_rate,
|
||||||
msgbuf.bytes, msgbuf.bufpercent,
|
msgbuf.bytes, msgbuf.bufpercent,
|
||||||
msgbuf.lastwritten,
|
msgbuf.lastwritten,
|
||||||
0 ==
|
'\0' ==
|
||||||
msgbuf.name[0] ? NULL : strdup(msgbuf.name));
|
msgbuf.name[0] ? NULL : strdup(msgbuf.name));
|
||||||
|
|
||||||
if (msgbuf.rate_limit > 0)
|
if (msgbuf.rate_limit > 0)
|
||||||
@@ -277,7 +280,7 @@ void pv_remote_check(pvstate_t state)
|
|||||||
pv_state_width_set(state, msgbuf.width);
|
pv_state_width_set(state, msgbuf.width);
|
||||||
if (msgbuf.height > 0)
|
if (msgbuf.height > 0)
|
||||||
pv_state_height_set(state, msgbuf.height);
|
pv_state_height_set(state, msgbuf.height);
|
||||||
if (msgbuf.format[0] != 0)
|
if (msgbuf.format[0] != '\0')
|
||||||
pv_state_format_string_set(state, strdup(msgbuf.format));
|
pv_state_format_string_set(state, strdup(msgbuf.format));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,7 +301,8 @@ void pv_remote_fini(void)
|
|||||||
{
|
{
|
||||||
if (remote__msgid >= 0) {
|
if (remote__msgid >= 0) {
|
||||||
struct msqid_ds qbuf;
|
struct msqid_ds qbuf;
|
||||||
msgctl(remote__msgid, IPC_RMID, &qbuf);
|
memset(&qbuf, 0, sizeof(qbuf));
|
||||||
|
(void) msgctl(remote__msgid, IPC_RMID, &qbuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+167
-171
@@ -1,8 +1,8 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-06-30 22:21+0100\n"
|
"POT-Creation-Date: 2021-09-05 19:25+0100\n"
|
||||||
"Content-Type: text/plain; charset=iso-8859-15\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Date: 1999-06-01 15:18:29+0100\n"
|
"Date: 1999-06-01 15:18:29+0100\n"
|
||||||
"From: Andrew Wood <ivarch@ubik>\n"
|
"From: Andrew Wood <ivarch@ubik>\n"
|
||||||
"Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-"
|
"Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-"
|
||||||
@@ -19,110 +19,102 @@ msgstr ""
|
|||||||
"nls/intl/textdomain.c src/nls/intl-cat/cat-compat.c src/nls/intl-gett/intl-"
|
"nls/intl/textdomain.c src/nls/intl-cat/cat-compat.c src/nls/intl-gett/intl-"
|
||||||
"compat.c\n"
|
"compat.c\n"
|
||||||
|
|
||||||
#: src/pv/watchpid.c:51 src/pv/watchpid.c:66 src/pv/watchpid.c:76
|
#: src/pv/cursor.c:80
|
||||||
#: src/pv/watchpid.c:107 src/pv/loop.c:519 src/pv/loop.c:580 src/pv/loop.c:632
|
|
||||||
msgid "pid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:68 src/pv/watchpid.c:78 src/pv/watchpid.c:109
|
|
||||||
msgid "fd"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:112
|
|
||||||
msgid "not a regular file or block device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/cursor.c:53
|
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to get terminal name"
|
msgid "failed to get terminal name"
|
||||||
msgstr "Terminal konnte nicht geöffnet werden"
|
msgstr "Terminalname konnte nicht gelesen werden"
|
||||||
|
|
||||||
#: src/pv/cursor.c:96
|
#: src/pv/cursor.c:125
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to open lock file"
|
msgid "failed to open lock file"
|
||||||
msgstr "Datei konnte nicht geschlossen werden"
|
msgstr "Sperrdatei konnte nicht geöffnet werden"
|
||||||
|
|
||||||
#: src/pv/cursor.c:129
|
#: src/pv/cursor.c:159
|
||||||
msgid "lock attempt failed"
|
msgid "lock attempt failed"
|
||||||
msgstr ""
|
msgstr "Sperrversuch fehlgeschlagen"
|
||||||
|
|
||||||
#: src/pv/cursor.c:369
|
#: src/pv/cursor.c:409
|
||||||
msgid "failed to open terminal"
|
msgid "failed to open terminal"
|
||||||
msgstr "Terminal konnte nicht geöffnet werden"
|
msgstr "Terminal konnte nicht geöffnet werden"
|
||||||
|
|
||||||
#: src/pv/file.c:118
|
#: src/pv/display.c:138
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to seek to start of output"
|
|
||||||
msgstr "Dateiinformationen für Ausgabe-Datei konnten nicht gelesen werden"
|
|
||||||
|
|
||||||
#: src/pv/file.c:214
|
|
||||||
msgid "failed to close file"
|
|
||||||
msgstr "Datei konnte nicht geschlossen werden"
|
|
||||||
|
|
||||||
#: src/pv/file.c:237
|
|
||||||
msgid "failed to read file"
|
|
||||||
msgstr "Datei konnte nicht gelesen werden"
|
|
||||||
|
|
||||||
#: src/pv/file.c:247
|
|
||||||
msgid "failed to stat file"
|
|
||||||
msgstr "Dateiinformationen konnten nicht gelesen werden"
|
|
||||||
|
|
||||||
#: src/pv/file.c:256
|
|
||||||
msgid "failed to stat output file"
|
|
||||||
msgstr "Dateiinformationen für Ausgabe-Datei konnten nicht gelesen werden"
|
|
||||||
|
|
||||||
#: src/pv/file.c:279
|
|
||||||
msgid "input file is output file"
|
|
||||||
msgstr "Eingabe-Datei ist Ausgabe-Datei"
|
|
||||||
|
|
||||||
#: src/pv/display.c:117
|
|
||||||
msgid "yzafpnum kMGTPEZY"
|
msgid "yzafpnum kMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:122
|
#: src/pv/display.c:143
|
||||||
msgid "yzafpnum KMGTPEZY"
|
msgid "yzafpnum KMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:532 src/pv/transfer.c:679
|
#: src/pv/display.c:558 src/pv/transfer.c:679
|
||||||
msgid "buffer allocation failed"
|
msgid "buffer allocation failed"
|
||||||
msgstr "Puffer konnte nicht allokiert werden"
|
msgstr "Puffer konnte nicht allokiert werden"
|
||||||
|
|
||||||
#: src/pv/display.c:592 src/pv/transfer.c:458
|
#: src/pv/display.c:618 src/pv/transfer.c:458
|
||||||
msgid "B"
|
msgid "B"
|
||||||
msgstr "B"
|
msgstr "B"
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "/s"
|
msgid "/s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "B/s"
|
msgid "B/s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:671 src/pv/display.c:676 src/pv/display.c:738
|
#: src/pv/display.c:697 src/pv/display.c:702 src/pv/display.c:764
|
||||||
msgid "ETA"
|
msgid "ETA"
|
||||||
msgstr "ETA"
|
msgstr "ETA"
|
||||||
|
|
||||||
|
#: src/pv/file.c:119
|
||||||
|
msgid "failed to seek to start of output"
|
||||||
|
msgstr "Konnte nicht versuchen, die Ausgabe zu starten"
|
||||||
|
|
||||||
|
#: src/pv/file.c:215
|
||||||
|
msgid "failed to close file"
|
||||||
|
msgstr "Datei konnte nicht geschlossen werden"
|
||||||
|
|
||||||
|
#: src/pv/file.c:238
|
||||||
|
msgid "failed to read file"
|
||||||
|
msgstr "Datei konnte nicht gelesen werden"
|
||||||
|
|
||||||
|
#: src/pv/file.c:248
|
||||||
|
msgid "failed to stat file"
|
||||||
|
msgstr "Dateiinformationen konnten nicht gelesen werden"
|
||||||
|
|
||||||
|
#: src/pv/file.c:257
|
||||||
|
msgid "failed to stat output file"
|
||||||
|
msgstr "Dateiinformationen für Ausgabe-Datei konnten nicht gelesen werden"
|
||||||
|
|
||||||
|
#: src/pv/file.c:280
|
||||||
|
msgid "input file is output file"
|
||||||
|
msgstr "Eingabe-Datei ist Ausgabe-Datei"
|
||||||
|
|
||||||
|
#: src/pv/loop.c:520 src/pv/loop.c:590 src/pv/loop.c:642 src/pv/watchpid.c:51
|
||||||
|
#: src/pv/watchpid.c:74 src/pv/watchpid.c:84 src/pv/watchpid.c:115
|
||||||
|
msgid "pid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/state.c:33
|
||||||
|
msgid "none"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/transfer.c:341
|
#: src/pv/transfer.c:341
|
||||||
msgid "read failed"
|
msgid "read failed"
|
||||||
msgstr "read-Aufruf fehlgeschlagen"
|
msgstr "read-Aufruf fehlgeschlagen"
|
||||||
|
|
||||||
#: src/pv/transfer.c:359
|
#: src/pv/transfer.c:359
|
||||||
msgid "warning: read errors detected"
|
msgid "warning: read errors detected"
|
||||||
msgstr ""
|
msgstr "warnung: lesefehler erkannt"
|
||||||
|
|
||||||
#: src/pv/transfer.c:374
|
#: src/pv/transfer.c:374
|
||||||
msgid "file is not seekable"
|
msgid "file is not seekable"
|
||||||
msgstr ""
|
msgstr "datei ist nicht durchsuchbar"
|
||||||
|
|
||||||
#: src/pv/transfer.c:437
|
#: src/pv/transfer.c:437
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to seek past error"
|
msgid "failed to seek past error"
|
||||||
msgstr "Dateiinformationen konnten nicht gelesen werden"
|
msgstr "konnte den Fehler nicht überwinden"
|
||||||
|
|
||||||
#: src/pv/transfer.c:456
|
#: src/pv/transfer.c:456
|
||||||
msgid "skipped past read error"
|
msgid "skipped past read error"
|
||||||
msgstr ""
|
msgstr "über den Lesefehler hinaus verschoben"
|
||||||
|
|
||||||
#: src/pv/transfer.c:631
|
#: src/pv/transfer.c:631
|
||||||
msgid "write failed"
|
msgid "write failed"
|
||||||
@@ -132,12 +124,16 @@ msgstr "write-Aufruf fehlgeschlagen"
|
|||||||
msgid "select call failed"
|
msgid "select call failed"
|
||||||
msgstr "select-Aufruf fehlgeschlagen"
|
msgstr "select-Aufruf fehlgeschlagen"
|
||||||
|
|
||||||
#: src/pv/state.c:33
|
#: src/pv/watchpid.c:76 src/pv/watchpid.c:86 src/pv/watchpid.c:117
|
||||||
msgid "none"
|
msgid "fd"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/watchpid.c:120
|
||||||
|
msgid "not a regular file or block device"
|
||||||
|
msgstr "keine normale Datei oder Blockgerät"
|
||||||
|
|
||||||
#: src/main/version.c:17
|
#: src/main/version.c:17
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%s %s - Copyright %s %s"
|
msgid "%s %s - Copyright %s %s"
|
||||||
msgstr "%s %s - Copyright(C) %s %s"
|
msgstr "%s %s - Copyright(C) %s %s"
|
||||||
|
|
||||||
@@ -160,85 +156,10 @@ msgid ""
|
|||||||
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Dieses Programm wird verbreitet unter der Annahme dass es nützlich ist,\n"
|
"Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein "
|
||||||
"aber OHNE JEGLICHE GARANTIE; insbesondere ohne der impliziten Garantie\n"
|
"wird,\n"
|
||||||
"einer MARKTGÄNGIGKEIT oder EIGNUNG ZU EINEM BESTIMMTEN ZWECK."
|
"aber OHNE JEGLICHE GARANTIE; ohne die implizite Garantie von\n"
|
||||||
|
"MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK."
|
||||||
#: src/main/main.c:73
|
|
||||||
#, fuzzy
|
|
||||||
msgid "state allocation failed"
|
|
||||||
msgstr "Puffer konnte nicht allokiert werden"
|
|
||||||
|
|
||||||
#: src/main/options.c:98
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure allocation failed (%s)"
|
|
||||||
msgstr "%s: `option' konnte nicht allokiert werden (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:114
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure argv allocation failed (%s)"
|
|
||||||
msgstr "%s: `option' (argv) konnte nicht allokiert werden (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:154
|
|
||||||
msgid "integer argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:165
|
|
||||||
msgid "numeric argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:176
|
|
||||||
msgid "process ID or pid:fd pair expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:183
|
|
||||||
msgid "invalid process ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:317
|
|
||||||
#, c-format
|
|
||||||
msgid "Try `%s --help' for more information."
|
|
||||||
msgstr "`%s --help' zeigt weitere Informationen an."
|
|
||||||
|
|
||||||
#: src/main/options.c:321
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid "Try `%s -h' for more information."
|
|
||||||
msgstr "`%s -h' zeigt weitere Informationen an."
|
|
||||||
|
|
||||||
#: src/main/options.c:338
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"%s: cannot use line mode or transfer modifier options when watching file "
|
|
||||||
"descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:348
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use cursor positioning when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:358
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use remote control when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:368
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot transfer files when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:378
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: -d: not available on systems without /proc/self/fdinfo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:218
|
|
||||||
msgid "message not received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:324
|
|
||||||
msgid "IPC not supported on this system"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/help.c:31
|
#: src/main/help.c:31
|
||||||
msgid "show progress bar"
|
msgid "show progress bar"
|
||||||
@@ -253,9 +174,8 @@ msgid "show estimated time of arrival (completion)"
|
|||||||
msgstr "zeige die erwartete Zeit bis zum Ende an"
|
msgstr "zeige die erwartete Zeit bis zum Ende an"
|
||||||
|
|
||||||
#: src/main/help.c:38
|
#: src/main/help.c:38
|
||||||
#, fuzzy
|
|
||||||
msgid "show absolute estimated time of arrival (completion)"
|
msgid "show absolute estimated time of arrival (completion)"
|
||||||
msgstr "zeige die erwartete Zeit bis zum Ende an"
|
msgstr "zeige die absolute geschätzte Zeit bis zur Fertigstellung"
|
||||||
|
|
||||||
#: src/main/help.c:40
|
#: src/main/help.c:40
|
||||||
msgid "show data transfer rate counter"
|
msgid "show data transfer rate counter"
|
||||||
@@ -271,7 +191,7 @@ msgstr "zeige die Anzahl von Bytes, die transferiert worden sind"
|
|||||||
|
|
||||||
#: src/main/help.c:46
|
#: src/main/help.c:46
|
||||||
msgid "show percentage of transfer buffer in use"
|
msgid "show percentage of transfer buffer in use"
|
||||||
msgstr ""
|
msgstr "zeige, wie viel Prozent des Übertragungsbuffers in Benutzung sind"
|
||||||
|
|
||||||
#: src/main/help.c:47
|
#: src/main/help.c:47
|
||||||
msgid "NUM"
|
msgid "NUM"
|
||||||
@@ -279,7 +199,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:48
|
#: src/main/help.c:48
|
||||||
msgid "show NUM bytes last written"
|
msgid "show NUM bytes last written"
|
||||||
msgstr ""
|
msgstr "NUM zeige die zuletzt geschriebenen NUM Bytes"
|
||||||
|
|
||||||
#: src/main/help.c:49
|
#: src/main/help.c:49
|
||||||
msgid "FORMAT"
|
msgid "FORMAT"
|
||||||
@@ -287,7 +207,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:50
|
#: src/main/help.c:50
|
||||||
msgid "set output format to FORMAT"
|
msgid "set output format to FORMAT"
|
||||||
msgstr ""
|
msgstr "setze das Ausgabeformat auf FORMAT"
|
||||||
|
|
||||||
#: src/main/help.c:52
|
#: src/main/help.c:52
|
||||||
msgid "output percentages, not visual information"
|
msgid "output percentages, not visual information"
|
||||||
@@ -295,20 +215,19 @@ msgstr "Ausgabe von Prozent-Angaben statt visueller Darstellung"
|
|||||||
|
|
||||||
#: src/main/help.c:54
|
#: src/main/help.c:54
|
||||||
msgid "do not output any transfer information at all"
|
msgid "do not output any transfer information at all"
|
||||||
msgstr "sämtliche Transferinformationen unterdrücken"
|
msgstr "sämtliche Transferinformationen unterdrücken"
|
||||||
|
|
||||||
#: src/main/help.c:57
|
#: src/main/help.c:57
|
||||||
msgid "display nothing until first byte transferred"
|
msgid "display nothing until first byte transferred"
|
||||||
msgstr "keine Ausgabe bevor das erste Byte übertragen wurde"
|
msgstr "keine Ausgabe bevor das erste Byte übertragen wurde"
|
||||||
|
|
||||||
#: src/main/help.c:58 src/main/help.c:66
|
#: src/main/help.c:58 src/main/help.c:66
|
||||||
msgid "SEC"
|
msgid "SEC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/help.c:59
|
#: src/main/help.c:59
|
||||||
#, fuzzy
|
|
||||||
msgid "display nothing until SEC seconds have passed"
|
msgid "display nothing until SEC seconds have passed"
|
||||||
msgstr "keine Ausgabe bevor das erste Byte übertragen wurde"
|
msgstr "SEC nichts anzeigen, bis SEC Sekunden vergangen sind"
|
||||||
|
|
||||||
#: src/main/help.c:60
|
#: src/main/help.c:60
|
||||||
msgid "SIZE"
|
msgid "SIZE"
|
||||||
@@ -316,15 +235,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:61
|
#: src/main/help.c:61
|
||||||
msgid "set estimated data size to SIZE bytes"
|
msgid "set estimated data size to SIZE bytes"
|
||||||
msgstr "setze erwartete Daten-Länge auf SIZE Byte"
|
msgstr "setze erwartete Datenlänge auf SIZE Byte"
|
||||||
|
|
||||||
#: src/main/help.c:63
|
#: src/main/help.c:63
|
||||||
msgid "count lines instead of bytes"
|
msgid "count lines instead of bytes"
|
||||||
msgstr ""
|
msgstr "zähle Zeilen anstelle von Bytes"
|
||||||
|
|
||||||
#: src/main/help.c:65
|
#: src/main/help.c:65
|
||||||
msgid "lines are null-terminated"
|
msgid "lines are null-terminated"
|
||||||
msgstr ""
|
msgstr "Zeilen sind nullterminiert"
|
||||||
|
|
||||||
#: src/main/help.c:67
|
#: src/main/help.c:67
|
||||||
msgid "update every SEC seconds"
|
msgid "update every SEC seconds"
|
||||||
@@ -344,7 +263,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:71
|
#: src/main/help.c:71
|
||||||
msgid "assume terminal is HEIGHT rows high"
|
msgid "assume terminal is HEIGHT rows high"
|
||||||
msgstr "setze Terminal-Breite auf WIDTH Zeichen"
|
msgstr "setze Terminal-Höhe auf HEIGHT Zeichen"
|
||||||
|
|
||||||
#: src/main/help.c:72
|
#: src/main/help.c:72
|
||||||
msgid "NAME"
|
msgid "NAME"
|
||||||
@@ -352,7 +271,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:73
|
#: src/main/help.c:73
|
||||||
msgid "prefix visual information with NAME"
|
msgid "prefix visual information with NAME"
|
||||||
msgstr "setze den NAMEn für visuelle Darstellung"
|
msgstr "setze den NAMEn für visuelle Darstellung"
|
||||||
|
|
||||||
#: src/main/help.c:75
|
#: src/main/help.c:75
|
||||||
msgid "output even if standard error is not a terminal"
|
msgid "output even if standard error is not a terminal"
|
||||||
@@ -369,7 +288,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:80
|
#: src/main/help.c:80
|
||||||
msgid "limit transfer to RATE bytes per second"
|
msgid "limit transfer to RATE bytes per second"
|
||||||
msgstr "beschränke die Transferrate auf RATE Byte pro Sekunde"
|
msgstr "beschränke die Transferrate auf RATE Byte pro Sekunde"
|
||||||
|
|
||||||
#: src/main/help.c:81
|
#: src/main/help.c:81
|
||||||
msgid "BYTES"
|
msgid "BYTES"
|
||||||
@@ -377,20 +296,19 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:82
|
#: src/main/help.c:82
|
||||||
msgid "use a buffer size of BYTES"
|
msgid "use a buffer size of BYTES"
|
||||||
msgstr ""
|
msgstr "BYTES benutze einen Puffer in der Größe von BYTES"
|
||||||
|
|
||||||
#: src/main/help.c:84
|
#: src/main/help.c:84
|
||||||
msgid "never use splice(), always use read/write"
|
msgid "never use splice(), always use read/write"
|
||||||
msgstr ""
|
msgstr "anstelle von splice() immer read/write benutzen"
|
||||||
|
|
||||||
#: src/main/help.c:86
|
#: src/main/help.c:86
|
||||||
msgid "skip read errors in input"
|
msgid "skip read errors in input"
|
||||||
msgstr ""
|
msgstr "Lesefehler in der Eingabe nicht beachten"
|
||||||
|
|
||||||
#: src/main/help.c:88
|
#: src/main/help.c:88
|
||||||
#, fuzzy
|
|
||||||
msgid "stop after --size bytes have been transferred"
|
msgid "stop after --size bytes have been transferred"
|
||||||
msgstr "zeige die Anzahl von Bytes, die transferiert worden sind"
|
msgstr "anhalten, nachdem --size Bytes übertragen wurden"
|
||||||
|
|
||||||
#: src/main/help.c:90
|
#: src/main/help.c:90
|
||||||
msgid "PID"
|
msgid "PID"
|
||||||
@@ -398,7 +316,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:91
|
#: src/main/help.c:91
|
||||||
msgid "update settings of process PID"
|
msgid "update settings of process PID"
|
||||||
msgstr ""
|
msgstr "Einstellungen der Prozess-PID updaten"
|
||||||
|
|
||||||
#: src/main/help.c:94
|
#: src/main/help.c:94
|
||||||
msgid "FILE"
|
msgid "FILE"
|
||||||
@@ -406,7 +324,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:95
|
#: src/main/help.c:95
|
||||||
msgid "save process ID in FILE"
|
msgid "save process ID in FILE"
|
||||||
msgstr ""
|
msgstr "Prozess-ID in FILE speichern"
|
||||||
|
|
||||||
#: src/main/help.c:97
|
#: src/main/help.c:97
|
||||||
msgid "PID[:FD]"
|
msgid "PID[:FD]"
|
||||||
@@ -414,7 +332,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:98
|
#: src/main/help.c:98
|
||||||
msgid "watch file FD opened by process PID"
|
msgid "watch file FD opened by process PID"
|
||||||
msgstr ""
|
msgstr "die vom Prozess PID geöffnete Datei FD beobachten"
|
||||||
|
|
||||||
#: src/main/help.c:101
|
#: src/main/help.c:101
|
||||||
msgid "show this help and exit"
|
msgid "show this help and exit"
|
||||||
@@ -437,16 +355,94 @@ msgstr ""
|
|||||||
"Verbindet DATEI(en) oder den Standard-Eingabe-Kanal mit dem\n"
|
"Verbindet DATEI(en) oder den Standard-Eingabe-Kanal mit dem\n"
|
||||||
"Standard-Ausgabe-Kanal und misst den Datenstrom."
|
"Standard-Ausgabe-Kanal und misst den Datenstrom."
|
||||||
|
|
||||||
#: src/main/help.c:201
|
#: src/main/help.c:207
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
||||||
"output filename.\n"
|
"output filename.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Das Debuggen ist aktiviert. Exportieren Sie die Umgebungsvariable DEBUG,\n"
|
||||||
|
"um den Ausgabedateinamen zu definieren.\n"
|
||||||
|
|
||||||
#: src/main/help.c:205
|
#: src/main/help.c:211
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please report any bugs to %s."
|
msgid "Please report any bugs to %s."
|
||||||
msgstr "Bitte senden Sie Fehlerberichte an %s."
|
msgstr "Bitte senden Sie Fehlerberichte an %s."
|
||||||
|
|
||||||
#~ msgid "failed to lock terminal"
|
#: src/main/main.c:74
|
||||||
#~ msgstr "Terminal konnte nicht geöffnet werden"
|
msgid "state allocation failed"
|
||||||
|
msgstr "Zustandszuweisung fehlgeschlagen"
|
||||||
|
|
||||||
|
#: src/main/main.c:246
|
||||||
|
#, fuzzy
|
||||||
|
msgid "failed to read terminal attributes"
|
||||||
|
msgstr "Terminalname konnte nicht gelesen werden"
|
||||||
|
|
||||||
|
#: src/main/options.c:98
|
||||||
|
msgid "option structure allocation failed"
|
||||||
|
msgstr "`option' konnte nicht allokiert werden"
|
||||||
|
|
||||||
|
#: src/main/options.c:112
|
||||||
|
msgid "option structure argv allocation failed"
|
||||||
|
msgstr "`option' (argv) konnte nicht allokiert werden"
|
||||||
|
|
||||||
|
#: src/main/options.c:151
|
||||||
|
msgid "integer argument expected"
|
||||||
|
msgstr "Ganzzahliges Argument erwartet"
|
||||||
|
|
||||||
|
#: src/main/options.c:162
|
||||||
|
msgid "numeric argument expected"
|
||||||
|
msgstr "numerisches Argument erwartet"
|
||||||
|
|
||||||
|
#: src/main/options.c:173
|
||||||
|
msgid "process ID or pid:fd pair expected"
|
||||||
|
msgstr "Prozess-ID oder PID:FD-Paar erwartet"
|
||||||
|
|
||||||
|
#: src/main/options.c:180
|
||||||
|
msgid "invalid process ID"
|
||||||
|
msgstr "ungültige Prozess-ID"
|
||||||
|
|
||||||
|
#: src/main/options.c:316
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information."
|
||||||
|
msgstr "`%s --help' zeigt weitere Informationen an."
|
||||||
|
|
||||||
|
#: src/main/options.c:320
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s -h' for more information."
|
||||||
|
msgstr "`%s -h' zeigt weitere Informationen an."
|
||||||
|
|
||||||
|
#: src/main/options.c:336
|
||||||
|
msgid ""
|
||||||
|
"cannot use line mode or transfer modifier options when watching file "
|
||||||
|
"descriptors"
|
||||||
|
msgstr ""
|
||||||
|
"Beim Anzeigen von Dateideskriptoren können keine Optionen für den "
|
||||||
|
"Zeilenmodus oder den Übertragungsmodifikator verwendet werden"
|
||||||
|
|
||||||
|
#: src/main/options.c:344
|
||||||
|
msgid "cannot use cursor positioning when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
"Beim Anzeigen von Dateideskriptoren können keine Zeilenmodus- oder "
|
||||||
|
"Übertragungsmodifikatoroptionen verwendet werden."
|
||||||
|
|
||||||
|
#: src/main/options.c:352
|
||||||
|
msgid "cannot use remote control when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
"kann keine Fernbedienung verwenden, wenn Dateideskriptoren angezeigt werden"
|
||||||
|
|
||||||
|
#: src/main/options.c:360
|
||||||
|
msgid "cannot transfer files when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
"Dateien können beim Betrachten von Dateideskriptoren nicht übertragen werden"
|
||||||
|
|
||||||
|
#: src/main/options.c:368
|
||||||
|
msgid "not available on systems without /proc/self/fdinfo"
|
||||||
|
msgstr "Nicht verfügbar auf Systemen ohne /proc/self/fdinfo"
|
||||||
|
|
||||||
|
#: src/main/remote.c:221
|
||||||
|
msgid "message not received"
|
||||||
|
msgstr "Nachricht nicht empfangen"
|
||||||
|
|
||||||
|
#: src/main/remote.c:328
|
||||||
|
msgid "IPC not supported on this system"
|
||||||
|
msgstr "IPC wird auf diesem System nicht unterstützt"
|
||||||
|
|||||||
+200
-205
@@ -1,8 +1,8 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-06-30 22:21+0100\n"
|
"POT-Creation-Date: 2021-09-05 19:25+0100\n"
|
||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Date: 1999-06-01 15:18:29+0100\n"
|
"Date: 1999-06-01 15:18:29+0100\n"
|
||||||
"From: Andrew Wood <ivarch@ubik>\n"
|
"From: Andrew Wood <ivarch@ubik>\n"
|
||||||
"Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-"
|
"Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-"
|
||||||
@@ -19,126 +19,121 @@ msgstr ""
|
|||||||
"nls/intl/textdomain.c src/nls/intl-cat/cat-compat.c src/nls/intl-gett/intl-"
|
"nls/intl/textdomain.c src/nls/intl-cat/cat-compat.c src/nls/intl-gett/intl-"
|
||||||
"compat.c\n"
|
"compat.c\n"
|
||||||
|
|
||||||
#: src/pv/watchpid.c:51 src/pv/watchpid.c:66 src/pv/watchpid.c:76
|
#: src/pv/cursor.c:80
|
||||||
#: src/pv/watchpid.c:107 src/pv/loop.c:519 src/pv/loop.c:580 src/pv/loop.c:632
|
|
||||||
msgid "pid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:68 src/pv/watchpid.c:78 src/pv/watchpid.c:109
|
|
||||||
msgid "fd"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:112
|
|
||||||
msgid "not a regular file or block device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/cursor.c:53
|
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to get terminal name"
|
msgid "failed to get terminal name"
|
||||||
msgstr "l'ouverture du terminal a échoué"
|
msgstr "échec de lecture du nom du terminal"
|
||||||
|
|
||||||
#: src/pv/cursor.c:96
|
#: src/pv/cursor.c:125
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to open lock file"
|
msgid "failed to open lock file"
|
||||||
msgstr "la fermeture du fichier a échoué"
|
msgstr "échec de l'ouverture du fichier de verrouillage"
|
||||||
|
|
||||||
#: src/pv/cursor.c:129
|
#: src/pv/cursor.c:159
|
||||||
msgid "lock attempt failed"
|
msgid "lock attempt failed"
|
||||||
msgstr ""
|
msgstr "tentative de verrouillage échoué"
|
||||||
|
|
||||||
#: src/pv/cursor.c:369
|
#: src/pv/cursor.c:409
|
||||||
msgid "failed to open terminal"
|
msgid "failed to open terminal"
|
||||||
msgstr "l'ouverture du terminal a échoué"
|
msgstr "l'ouverture du terminal a échoué"
|
||||||
|
|
||||||
#: src/pv/file.c:118
|
#: src/pv/display.c:138
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to seek to start of output"
|
|
||||||
msgstr "échec à statuer sur le fichier de sortie"
|
|
||||||
|
|
||||||
#: src/pv/file.c:214
|
|
||||||
msgid "failed to close file"
|
|
||||||
msgstr "la fermeture du fichier a échoué"
|
|
||||||
|
|
||||||
#: src/pv/file.c:237
|
|
||||||
msgid "failed to read file"
|
|
||||||
msgstr "la lecture du fichier a échoué"
|
|
||||||
|
|
||||||
#: src/pv/file.c:247
|
|
||||||
msgid "failed to stat file"
|
|
||||||
msgstr "échec à statuer sur le fichier"
|
|
||||||
|
|
||||||
#: src/pv/file.c:256
|
|
||||||
msgid "failed to stat output file"
|
|
||||||
msgstr "échec à statuer sur le fichier de sortie"
|
|
||||||
|
|
||||||
#: src/pv/file.c:279
|
|
||||||
msgid "input file is output file"
|
|
||||||
msgstr "fichiers d'entré et de sortie sont les mêmes"
|
|
||||||
|
|
||||||
#: src/pv/display.c:117
|
|
||||||
msgid "yzafpnum kMGTPEZY"
|
msgid "yzafpnum kMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:122
|
#: src/pv/display.c:143
|
||||||
msgid "yzafpnum KMGTPEZY"
|
msgid "yzafpnum KMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:532 src/pv/transfer.c:679
|
#: src/pv/display.c:558 src/pv/transfer.c:679
|
||||||
msgid "buffer allocation failed"
|
msgid "buffer allocation failed"
|
||||||
msgstr "l'allocation de mémoire tampon a échoué"
|
msgstr "l'allocation de mémoire tampon a échoué"
|
||||||
|
|
||||||
#: src/pv/display.c:592 src/pv/transfer.c:458
|
#: src/pv/display.c:618 src/pv/transfer.c:458
|
||||||
msgid "B"
|
msgid "B"
|
||||||
msgstr "O"
|
msgstr "O"
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "/s"
|
msgid "/s"
|
||||||
msgstr "/s"
|
msgstr "/s"
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
#, fuzzy
|
|
||||||
msgid "B/s"
|
msgid "B/s"
|
||||||
msgstr "O/s"
|
msgstr "O/s"
|
||||||
|
|
||||||
#: src/pv/display.c:671 src/pv/display.c:676 src/pv/display.c:738
|
#: src/pv/display.c:697 src/pv/display.c:702 src/pv/display.c:764
|
||||||
msgid "ETA"
|
msgid "ETA"
|
||||||
msgstr "ETA"
|
msgstr "ETA"
|
||||||
|
|
||||||
#: src/pv/transfer.c:341
|
#: src/pv/file.c:119
|
||||||
msgid "read failed"
|
msgid "failed to seek to start of output"
|
||||||
msgstr "la lecture a échoué"
|
msgstr "ne peut pas passer au début de la sortie"
|
||||||
|
|
||||||
#: src/pv/transfer.c:359
|
#: src/pv/file.c:215
|
||||||
msgid "warning: read errors detected"
|
msgid "failed to close file"
|
||||||
|
msgstr "la fermeture du fichier a échoué"
|
||||||
|
|
||||||
|
#: src/pv/file.c:238
|
||||||
|
msgid "failed to read file"
|
||||||
|
msgstr "la lecture du fichier a échoué"
|
||||||
|
|
||||||
|
#: src/pv/file.c:248
|
||||||
|
msgid "failed to stat file"
|
||||||
|
msgstr "échec à statuer sur le fichier"
|
||||||
|
|
||||||
|
#: src/pv/file.c:257
|
||||||
|
msgid "failed to stat output file"
|
||||||
|
msgstr "échec à statuer sur le fichier de sortie"
|
||||||
|
|
||||||
|
#: src/pv/file.c:280
|
||||||
|
msgid "input file is output file"
|
||||||
|
msgstr "fichiers d'entré et de sortie sont les mêmes"
|
||||||
|
|
||||||
|
#: src/pv/loop.c:520 src/pv/loop.c:590 src/pv/loop.c:642 src/pv/watchpid.c:51
|
||||||
|
#: src/pv/watchpid.c:74 src/pv/watchpid.c:84 src/pv/watchpid.c:115
|
||||||
|
msgid "pid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/transfer.c:374
|
|
||||||
msgid "file is not seekable"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/transfer.c:437
|
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to seek past error"
|
|
||||||
msgstr "échec à statuer sur le fichier"
|
|
||||||
|
|
||||||
#: src/pv/transfer.c:456
|
|
||||||
msgid "skipped past read error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/transfer.c:631
|
|
||||||
msgid "write failed"
|
|
||||||
msgstr "l'écriture a échoué"
|
|
||||||
|
|
||||||
#: src/pv/transfer.c:770
|
|
||||||
msgid "select call failed"
|
|
||||||
msgstr "appel de sélection a échoué"
|
|
||||||
|
|
||||||
#: src/pv/state.c:33
|
#: src/pv/state.c:33
|
||||||
msgid "none"
|
msgid "none"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:341
|
||||||
|
msgid "read failed"
|
||||||
|
msgstr "la lecture a échoué"
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:359
|
||||||
|
msgid "warning: read errors detected"
|
||||||
|
msgstr "avertissement: erreurs de lecture détectées"
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:374
|
||||||
|
msgid "file is not seekable"
|
||||||
|
msgstr "ne peut pas se déplacer dans le fichier"
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:437
|
||||||
|
msgid "failed to seek past error"
|
||||||
|
msgstr "n'a pas réussi à dépasser l'erreur"
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:456
|
||||||
|
msgid "skipped past read error"
|
||||||
|
msgstr "erreur de lecture dépassée"
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:631
|
||||||
|
msgid "write failed"
|
||||||
|
msgstr "l'écriture a échoué"
|
||||||
|
|
||||||
|
#: src/pv/transfer.c:770
|
||||||
|
msgid "select call failed"
|
||||||
|
msgstr "appel de sélection a échoué"
|
||||||
|
|
||||||
|
#: src/pv/watchpid.c:76 src/pv/watchpid.c:86 src/pv/watchpid.c:117
|
||||||
|
msgid "fd"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/watchpid.c:120
|
||||||
|
msgid "not a regular file or block device"
|
||||||
|
msgstr "pas un fichier ordinaire ou un périphérique de bloc"
|
||||||
|
|
||||||
#: src/main/version.c:17
|
#: src/main/version.c:17
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%s %s - Copyright %s %s"
|
msgid "%s %s - Copyright %s %s"
|
||||||
msgstr "%s %s - Copyright(C) %s %s"
|
msgstr "%s %s - Copyright(C) %s %s"
|
||||||
|
|
||||||
@@ -152,7 +147,7 @@ msgid ""
|
|||||||
"This program is free software, and is being distributed under the\n"
|
"This program is free software, and is being distributed under the\n"
|
||||||
"terms of the Artistic License 2.0."
|
"terms of the Artistic License 2.0."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ce programme est un logiciel libre et est distribué sous les termes\n"
|
"Ce programme est un logiciel libre et est distribué sous les termes\n"
|
||||||
"anglophone de la Licence Artistique 2.0 (Artistic License 2.0)."
|
"anglophone de la Licence Artistique 2.0 (Artistic License 2.0)."
|
||||||
|
|
||||||
#: src/main/version.c:28
|
#: src/main/version.c:28
|
||||||
@@ -161,86 +156,10 @@ msgid ""
|
|||||||
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ce programme est distribué dans l'espoir qu'il sera utile, mais\n"
|
"Ce programme est distribué dans l'espoir qu'il sera utile, mais\n"
|
||||||
"SANS GARANTIE AUCUNE; ni même de garantie sous-entendu que le\n"
|
"SANS GARANTIE AUCUNE; ni même de garantie sous-entendu que le\n"
|
||||||
"programme soit COMMERCIALISABLE ou APPLICABLE À UNE TÂCHE\n"
|
"programme soit COMMERCIALISABLE ou APPLICABLE À UNE TÂCHE\n"
|
||||||
"PARTICULIÈRE."
|
"PARTICULIÈRE."
|
||||||
|
|
||||||
#: src/main/main.c:73
|
|
||||||
#, fuzzy
|
|
||||||
msgid "state allocation failed"
|
|
||||||
msgstr "l'allocation de mémoire tampon a échoué"
|
|
||||||
|
|
||||||
#: src/main/options.c:98
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure allocation failed (%s)"
|
|
||||||
msgstr "%s: l'allocation pour la structure d'une option a echoué (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:114
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure argv allocation failed (%s)"
|
|
||||||
msgstr "%s: l'allocation pour la structure de l'option argv a echoué (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:154
|
|
||||||
msgid "integer argument expected"
|
|
||||||
msgstr "Valeur entière attendue"
|
|
||||||
|
|
||||||
#: src/main/options.c:165
|
|
||||||
msgid "numeric argument expected"
|
|
||||||
msgstr "Valeur numérique attendue"
|
|
||||||
|
|
||||||
#: src/main/options.c:176
|
|
||||||
msgid "process ID or pid:fd pair expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:183
|
|
||||||
msgid "invalid process ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:317
|
|
||||||
#, c-format
|
|
||||||
msgid "Try `%s --help' for more information."
|
|
||||||
msgstr "Essayez `%s --help' pour plus d'information."
|
|
||||||
|
|
||||||
#: src/main/options.c:321
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid "Try `%s -h' for more information."
|
|
||||||
msgstr "Essayez `%s -h' pour plus d'information."
|
|
||||||
|
|
||||||
#: src/main/options.c:338
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"%s: cannot use line mode or transfer modifier options when watching file "
|
|
||||||
"descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:348
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use cursor positioning when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:358
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use remote control when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:368
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot transfer files when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:378
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: -d: not available on systems without /proc/self/fdinfo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:218
|
|
||||||
msgid "message not received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:324
|
|
||||||
msgid "IPC not supported on this system"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/help.c:31
|
#: src/main/help.c:31
|
||||||
msgid "show progress bar"
|
msgid "show progress bar"
|
||||||
@@ -248,32 +167,31 @@ msgstr "affiche la barre de progression"
|
|||||||
|
|
||||||
#: src/main/help.c:33
|
#: src/main/help.c:33
|
||||||
msgid "show elapsed time"
|
msgid "show elapsed time"
|
||||||
msgstr "affiche le temps écoulé"
|
msgstr "affiche le temps écoulé"
|
||||||
|
|
||||||
#: src/main/help.c:35
|
#: src/main/help.c:35
|
||||||
msgid "show estimated time of arrival (completion)"
|
msgid "show estimated time of arrival (completion)"
|
||||||
msgstr "affiche l'heure approximative de l'achèvement de la tâche"
|
msgstr "affiche l'heure approximative de l'achèvement de la tâche"
|
||||||
|
|
||||||
#: src/main/help.c:38
|
#: src/main/help.c:38
|
||||||
#, fuzzy
|
|
||||||
msgid "show absolute estimated time of arrival (completion)"
|
msgid "show absolute estimated time of arrival (completion)"
|
||||||
msgstr "affiche l'heure approximative de l'achèvement de la tâche"
|
msgstr "affiche l'heure absolute de l'achèvement de la tâche"
|
||||||
|
|
||||||
#: src/main/help.c:40
|
#: src/main/help.c:40
|
||||||
msgid "show data transfer rate counter"
|
msgid "show data transfer rate counter"
|
||||||
msgstr "affiche le taux de tranfert des données"
|
msgstr "affiche le taux de tranfert des données"
|
||||||
|
|
||||||
#: src/main/help.c:42
|
#: src/main/help.c:42
|
||||||
msgid "show data transfer average rate counter"
|
msgid "show data transfer average rate counter"
|
||||||
msgstr ""
|
msgstr "afficher le compteur de taux moyen de transfert de données"
|
||||||
|
|
||||||
#: src/main/help.c:44
|
#: src/main/help.c:44
|
||||||
msgid "show number of bytes transferred"
|
msgid "show number of bytes transferred"
|
||||||
msgstr "affiche le nombre d'octets transférés"
|
msgstr "affiche le nombre d'octets transférés"
|
||||||
|
|
||||||
#: src/main/help.c:46
|
#: src/main/help.c:46
|
||||||
msgid "show percentage of transfer buffer in use"
|
msgid "show percentage of transfer buffer in use"
|
||||||
msgstr ""
|
msgstr "afficher le pourcentage de tampon de transfert utilisé"
|
||||||
|
|
||||||
#: src/main/help.c:47
|
#: src/main/help.c:47
|
||||||
msgid "NUM"
|
msgid "NUM"
|
||||||
@@ -281,16 +199,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:48
|
#: src/main/help.c:48
|
||||||
msgid "show NUM bytes last written"
|
msgid "show NUM bytes last written"
|
||||||
msgstr ""
|
msgstr "affiche NUM octets pour la dernière fois écrits"
|
||||||
|
|
||||||
#: src/main/help.c:49
|
#: src/main/help.c:49
|
||||||
#, fuzzy
|
|
||||||
msgid "FORMAT"
|
msgid "FORMAT"
|
||||||
msgstr "TAUX"
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/help.c:50
|
#: src/main/help.c:50
|
||||||
msgid "set output format to FORMAT"
|
msgid "set output format to FORMAT"
|
||||||
msgstr ""
|
msgstr "définir le format de sortie sur FORMAT"
|
||||||
|
|
||||||
#: src/main/help.c:52
|
#: src/main/help.c:52
|
||||||
msgid "output percentages, not visual information"
|
msgid "output percentages, not visual information"
|
||||||
@@ -302,16 +219,15 @@ msgstr "n'afficher aucune information de transfert"
|
|||||||
|
|
||||||
#: src/main/help.c:57
|
#: src/main/help.c:57
|
||||||
msgid "display nothing until first byte transferred"
|
msgid "display nothing until first byte transferred"
|
||||||
msgstr "ne rien afficher avant qu'au moins un octet soit tranféré"
|
msgstr "ne rien afficher avant qu'au moins un octet soit tranféré"
|
||||||
|
|
||||||
#: src/main/help.c:58 src/main/help.c:66
|
#: src/main/help.c:58 src/main/help.c:66
|
||||||
msgid "SEC"
|
msgid "SEC"
|
||||||
msgstr "SEC"
|
msgstr "SEC"
|
||||||
|
|
||||||
#: src/main/help.c:59
|
#: src/main/help.c:59
|
||||||
#, fuzzy
|
|
||||||
msgid "display nothing until SEC seconds have passed"
|
msgid "display nothing until SEC seconds have passed"
|
||||||
msgstr "ne rien afficher avant qu'au moins un octet soit tranféré"
|
msgstr "n'afficher rien jusqu'à ce que SEC secondes se soient écoulées"
|
||||||
|
|
||||||
#: src/main/help.c:60
|
#: src/main/help.c:60
|
||||||
msgid "SIZE"
|
msgid "SIZE"
|
||||||
@@ -319,7 +235,7 @@ msgstr "TAILLE"
|
|||||||
|
|
||||||
#: src/main/help.c:61
|
#: src/main/help.c:61
|
||||||
msgid "set estimated data size to SIZE bytes"
|
msgid "set estimated data size to SIZE bytes"
|
||||||
msgstr "ajuste la taille estimée des données à TAILLE octets"
|
msgstr "ajuste la taille estimée des données à TAILLE octets"
|
||||||
|
|
||||||
#: src/main/help.c:63
|
#: src/main/help.c:63
|
||||||
msgid "count lines instead of bytes"
|
msgid "count lines instead of bytes"
|
||||||
@@ -327,11 +243,11 @@ msgstr "compte les lignes au lieu des octets"
|
|||||||
|
|
||||||
#: src/main/help.c:65
|
#: src/main/help.c:65
|
||||||
msgid "lines are null-terminated"
|
msgid "lines are null-terminated"
|
||||||
msgstr ""
|
msgstr "les lignes sont terminées par un nul"
|
||||||
|
|
||||||
#: src/main/help.c:67
|
#: src/main/help.c:67
|
||||||
msgid "update every SEC seconds"
|
msgid "update every SEC seconds"
|
||||||
msgstr "mise-à-jour toute les SEC secondes"
|
msgstr "mise-à-jour toute les SEC secondes"
|
||||||
|
|
||||||
#: src/main/help.c:68
|
#: src/main/help.c:68
|
||||||
msgid "WIDTH"
|
msgid "WIDTH"
|
||||||
@@ -339,7 +255,7 @@ msgstr "LARGEUR"
|
|||||||
|
|
||||||
#: src/main/help.c:69
|
#: src/main/help.c:69
|
||||||
msgid "assume terminal is WIDTH characters wide"
|
msgid "assume terminal is WIDTH characters wide"
|
||||||
msgstr "présumer la largeur du terminal à LARGEUR caractères"
|
msgstr "présumer la largeur du terminal à LARGEUR caractères"
|
||||||
|
|
||||||
#: src/main/help.c:70
|
#: src/main/help.c:70
|
||||||
msgid "HEIGHT"
|
msgid "HEIGHT"
|
||||||
@@ -347,7 +263,7 @@ msgstr "HAUTEUR"
|
|||||||
|
|
||||||
#: src/main/help.c:71
|
#: src/main/help.c:71
|
||||||
msgid "assume terminal is HEIGHT rows high"
|
msgid "assume terminal is HEIGHT rows high"
|
||||||
msgstr "présumer la hauteur du terminal à HAUTEUR lignes"
|
msgstr "présumer la hauteur du terminal à HAUTEUR lignes"
|
||||||
|
|
||||||
#: src/main/help.c:72
|
#: src/main/help.c:72
|
||||||
msgid "NAME"
|
msgid "NAME"
|
||||||
@@ -355,15 +271,15 @@ msgstr "NOM"
|
|||||||
|
|
||||||
#: src/main/help.c:73
|
#: src/main/help.c:73
|
||||||
msgid "prefix visual information with NAME"
|
msgid "prefix visual information with NAME"
|
||||||
msgstr "préfixer les informations visuelles avec NOM"
|
msgstr "préfixer les informations visuelles avec NOM"
|
||||||
|
|
||||||
#: src/main/help.c:75
|
#: src/main/help.c:75
|
||||||
msgid "output even if standard error is not a terminal"
|
msgid "output even if standard error is not a terminal"
|
||||||
msgstr "imprime vers la sortie d'erreur même si ce n'est pas un terminal"
|
msgstr "imprime vers la sortie d'erreur même si ce n'est pas un terminal"
|
||||||
|
|
||||||
#: src/main/help.c:77
|
#: src/main/help.c:77
|
||||||
msgid "use cursor positioning escape sequences"
|
msgid "use cursor positioning escape sequences"
|
||||||
msgstr "utiliser les séquences d'échappements de positionnement de curseur"
|
msgstr "utiliser les séquences d'échappements de positionnement de curseur"
|
||||||
|
|
||||||
#: src/main/help.c:79
|
#: src/main/help.c:79
|
||||||
msgid "RATE"
|
msgid "RATE"
|
||||||
@@ -371,7 +287,7 @@ msgstr "TAUX"
|
|||||||
|
|
||||||
#: src/main/help.c:80
|
#: src/main/help.c:80
|
||||||
msgid "limit transfer to RATE bytes per second"
|
msgid "limit transfer to RATE bytes per second"
|
||||||
msgstr "limite le taux de transfer à TAUX octets par seconde"
|
msgstr "limite le taux de transfer à TAUX octets par seconde"
|
||||||
|
|
||||||
#: src/main/help.c:81
|
#: src/main/help.c:81
|
||||||
msgid "BYTES"
|
msgid "BYTES"
|
||||||
@@ -379,20 +295,19 @@ msgstr "OCTETS"
|
|||||||
|
|
||||||
#: src/main/help.c:82
|
#: src/main/help.c:82
|
||||||
msgid "use a buffer size of BYTES"
|
msgid "use a buffer size of BYTES"
|
||||||
msgstr "Utiliser une mémoire tampon de OCTETS octets"
|
msgstr "Utiliser une mémoire tampon de OCTETS octets"
|
||||||
|
|
||||||
#: src/main/help.c:84
|
#: src/main/help.c:84
|
||||||
msgid "never use splice(), always use read/write"
|
msgid "never use splice(), always use read/write"
|
||||||
msgstr ""
|
msgstr "n'utilisez jamais splice(), utilisez toujours read/write"
|
||||||
|
|
||||||
#: src/main/help.c:86
|
#: src/main/help.c:86
|
||||||
msgid "skip read errors in input"
|
msgid "skip read errors in input"
|
||||||
msgstr ""
|
msgstr "ignorer les erreurs de lecture dans l'entrée"
|
||||||
|
|
||||||
#: src/main/help.c:88
|
#: src/main/help.c:88
|
||||||
#, fuzzy
|
|
||||||
msgid "stop after --size bytes have been transferred"
|
msgid "stop after --size bytes have been transferred"
|
||||||
msgstr "affiche le nombre d'octets transférés"
|
msgstr "arrêter après le transfert de --size octets"
|
||||||
|
|
||||||
#: src/main/help.c:90
|
#: src/main/help.c:90
|
||||||
msgid "PID"
|
msgid "PID"
|
||||||
@@ -400,7 +315,7 @@ msgstr "PID"
|
|||||||
|
|
||||||
#: src/main/help.c:91
|
#: src/main/help.c:91
|
||||||
msgid "update settings of process PID"
|
msgid "update settings of process PID"
|
||||||
msgstr "mettre-à-jour la configuration du processus PID"
|
msgstr "mettre-à-jour la configuration du processus PID"
|
||||||
|
|
||||||
#: src/main/help.c:94
|
#: src/main/help.c:94
|
||||||
msgid "FILE"
|
msgid "FILE"
|
||||||
@@ -408,7 +323,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:95
|
#: src/main/help.c:95
|
||||||
msgid "save process ID in FILE"
|
msgid "save process ID in FILE"
|
||||||
msgstr ""
|
msgstr "enregistrer l'ID de processus dans FILE"
|
||||||
|
|
||||||
#: src/main/help.c:97
|
#: src/main/help.c:97
|
||||||
msgid "PID[:FD]"
|
msgid "PID[:FD]"
|
||||||
@@ -416,7 +331,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:98
|
#: src/main/help.c:98
|
||||||
msgid "watch file FD opened by process PID"
|
msgid "watch file FD opened by process PID"
|
||||||
msgstr ""
|
msgstr "regarder le fichier FD ouvert par le processus PID"
|
||||||
|
|
||||||
#: src/main/help.c:101
|
#: src/main/help.c:101
|
||||||
msgid "show this help and exit"
|
msgid "show this help and exit"
|
||||||
@@ -436,19 +351,99 @@ msgid ""
|
|||||||
"Concatenate FILE(s), or standard input, to standard output,\n"
|
"Concatenate FILE(s), or standard input, to standard output,\n"
|
||||||
"with monitoring."
|
"with monitoring."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Concatène FICHIER(s), ou l'entrée standard, sur la sortie standard\n"
|
"Concatène FICHIER(s), ou l'entrée standard, sur la sortie standard\n"
|
||||||
"avec monitorage."
|
"avec monitorage."
|
||||||
|
|
||||||
#: src/main/help.c:201
|
#: src/main/help.c:207
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
||||||
"output filename.\n"
|
"output filename.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Le débogage est activé; exportez la variable d'environnement DEBUG pour\n"
|
||||||
|
"définir le nom du fichier de sortie.\n"
|
||||||
|
|
||||||
#: src/main/help.c:205
|
#: src/main/help.c:211
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please report any bugs to %s."
|
msgid "Please report any bugs to %s."
|
||||||
msgstr "SVP rapporter touts bogues à %s."
|
msgstr "SVP rapporter touts bogues à %s."
|
||||||
|
|
||||||
#~ msgid "failed to lock terminal"
|
#: src/main/main.c:74
|
||||||
#~ msgstr "l'ouverture du terminal a échoué"
|
msgid "state allocation failed"
|
||||||
|
msgstr "échec de l'allocation de mémoire de condition"
|
||||||
|
|
||||||
|
#: src/main/main.c:246
|
||||||
|
#, fuzzy
|
||||||
|
msgid "failed to read terminal attributes"
|
||||||
|
msgstr "échec de lecture du nom du terminal"
|
||||||
|
|
||||||
|
#: src/main/options.c:98
|
||||||
|
msgid "option structure allocation failed"
|
||||||
|
msgstr "l'allocation pour la structure d'une option a echoué"
|
||||||
|
|
||||||
|
#: src/main/options.c:112
|
||||||
|
msgid "option structure argv allocation failed"
|
||||||
|
msgstr "l'allocation pour la structure de l'option argv a echoué"
|
||||||
|
|
||||||
|
#: src/main/options.c:151
|
||||||
|
msgid "integer argument expected"
|
||||||
|
msgstr "Valeur entière attendue"
|
||||||
|
|
||||||
|
#: src/main/options.c:162
|
||||||
|
msgid "numeric argument expected"
|
||||||
|
msgstr "Valeur numérique attendue"
|
||||||
|
|
||||||
|
#: src/main/options.c:173
|
||||||
|
msgid "process ID or pid:fd pair expected"
|
||||||
|
msgstr "ID de processus ou paire pid:fd attendue"
|
||||||
|
|
||||||
|
#: src/main/options.c:180
|
||||||
|
msgid "invalid process ID"
|
||||||
|
msgstr "ID de processus non valide"
|
||||||
|
|
||||||
|
#: src/main/options.c:316
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information."
|
||||||
|
msgstr "Essayez `%s --help' pour plus d'information."
|
||||||
|
|
||||||
|
#: src/main/options.c:320
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s -h' for more information."
|
||||||
|
msgstr "Essayez `%s -h' pour plus d'information."
|
||||||
|
|
||||||
|
#: src/main/options.c:336
|
||||||
|
msgid ""
|
||||||
|
"cannot use line mode or transfer modifier options when watching file "
|
||||||
|
"descriptors"
|
||||||
|
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:344
|
||||||
|
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:352
|
||||||
|
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:360
|
||||||
|
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:368
|
||||||
|
msgid "not available on systems without /proc/self/fdinfo"
|
||||||
|
msgstr "non disponible sur les systèmes sans /proc/self/fdinfo"
|
||||||
|
|
||||||
|
#: src/main/remote.c:221
|
||||||
|
msgid "message not received"
|
||||||
|
msgstr "message non reçu"
|
||||||
|
|
||||||
|
#: src/main/remote.c:328
|
||||||
|
msgid "IPC not supported on this system"
|
||||||
|
msgstr "IPC non pris en charge sur ce système"
|
||||||
|
|||||||
+109
-162
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-06-30 22:21+0100\n"
|
"POT-Creation-Date: 2021-09-05 19:25+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -14,92 +14,88 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/pv/watchpid.c:51 src/pv/watchpid.c:66 src/pv/watchpid.c:76
|
#: src/pv/cursor.c:80
|
||||||
#: src/pv/watchpid.c:107 src/pv/loop.c:519 src/pv/loop.c:580 src/pv/loop.c:632
|
|
||||||
msgid "pid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:68 src/pv/watchpid.c:78 src/pv/watchpid.c:109
|
|
||||||
msgid "fd"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:112
|
|
||||||
msgid "not a regular file or block device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/cursor.c:53
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "failed to get terminal name"
|
msgid "failed to get terminal name"
|
||||||
msgstr "nie uda³o siê otworzyæ terminala"
|
msgstr "nie uda³o siê otworzyæ terminala"
|
||||||
|
|
||||||
# "Przewidywany czas ukoñczenia" for ETA is too long
|
# "Przewidywany czas ukoñczenia" for ETA is too long
|
||||||
#: src/pv/cursor.c:96
|
#: src/pv/cursor.c:125
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "failed to open lock file"
|
msgid "failed to open lock file"
|
||||||
msgstr "nie uda³o siê zamkn±æ pliku"
|
msgstr "nie uda³o siê zamkn±æ pliku"
|
||||||
|
|
||||||
#: src/pv/cursor.c:129
|
#: src/pv/cursor.c:159
|
||||||
msgid "lock attempt failed"
|
msgid "lock attempt failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/cursor.c:369
|
#: src/pv/cursor.c:409
|
||||||
msgid "failed to open terminal"
|
msgid "failed to open terminal"
|
||||||
msgstr "nie uda³o siê otworzyæ terminala"
|
msgstr "nie uda³o siê otworzyæ terminala"
|
||||||
|
|
||||||
#: src/pv/file.c:118
|
#: src/pv/display.c:138
|
||||||
|
msgid "yzafpnum kMGTPEZY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/display.c:143
|
||||||
|
msgid "yzafpnum KMGTPEZY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/display.c:558 src/pv/transfer.c:679
|
||||||
|
msgid "buffer allocation failed"
|
||||||
|
msgstr "nie uda³o siê zaalokowaæ bufora"
|
||||||
|
|
||||||
|
#: src/pv/display.c:618 src/pv/transfer.c:458
|
||||||
|
msgid "B"
|
||||||
|
msgstr "B"
|
||||||
|
|
||||||
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
|
msgid "/s"
|
||||||
|
msgstr "/s"
|
||||||
|
|
||||||
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
|
msgid "B/s"
|
||||||
|
msgstr "B/s"
|
||||||
|
|
||||||
|
#: src/pv/display.c:697 src/pv/display.c:702 src/pv/display.c:764
|
||||||
|
msgid "ETA"
|
||||||
|
msgstr "ETA"
|
||||||
|
|
||||||
|
#: src/pv/file.c:119
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "failed to seek to start of output"
|
msgid "failed to seek to start of output"
|
||||||
msgstr "nie uda³o siê wykonaæ operacji stat na pliku wyj¶ciowym"
|
msgstr "nie uda³o siê wykonaæ operacji stat na pliku wyj¶ciowym"
|
||||||
|
|
||||||
# "Przewidywany czas ukoñczenia" for ETA is too long
|
# "Przewidywany czas ukoñczenia" for ETA is too long
|
||||||
#: src/pv/file.c:214
|
#: src/pv/file.c:215
|
||||||
msgid "failed to close file"
|
msgid "failed to close file"
|
||||||
msgstr "nie uda³o siê zamkn±æ pliku"
|
msgstr "nie uda³o siê zamkn±æ pliku"
|
||||||
|
|
||||||
#: src/pv/file.c:237
|
#: src/pv/file.c:238
|
||||||
msgid "failed to read file"
|
msgid "failed to read file"
|
||||||
msgstr "nie uda³o siê odczytaæ pliku"
|
msgstr "nie uda³o siê odczytaæ pliku"
|
||||||
|
|
||||||
#: src/pv/file.c:247
|
#: src/pv/file.c:248
|
||||||
msgid "failed to stat file"
|
msgid "failed to stat file"
|
||||||
msgstr "nie uda³o siê wykonaæ operacji stat na pliku"
|
msgstr "nie uda³o siê wykonaæ operacji stat na pliku"
|
||||||
|
|
||||||
#: src/pv/file.c:256
|
#: src/pv/file.c:257
|
||||||
msgid "failed to stat output file"
|
msgid "failed to stat output file"
|
||||||
msgstr "nie uda³o siê wykonaæ operacji stat na pliku wyj¶ciowym"
|
msgstr "nie uda³o siê wykonaæ operacji stat na pliku wyj¶ciowym"
|
||||||
|
|
||||||
#: src/pv/file.c:279
|
#: src/pv/file.c:280
|
||||||
msgid "input file is output file"
|
msgid "input file is output file"
|
||||||
msgstr "plik wej¶ciowy jest zarazem plikiem wyj¶ciowym"
|
msgstr "plik wej¶ciowy jest zarazem plikiem wyj¶ciowym"
|
||||||
|
|
||||||
#: src/pv/display.c:117
|
#: src/pv/loop.c:520 src/pv/loop.c:590 src/pv/loop.c:642 src/pv/watchpid.c:51
|
||||||
msgid "yzafpnum kMGTPEZY"
|
#: src/pv/watchpid.c:74 src/pv/watchpid.c:84 src/pv/watchpid.c:115
|
||||||
|
msgid "pid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:122
|
#: src/pv/state.c:33
|
||||||
msgid "yzafpnum KMGTPEZY"
|
msgid "none"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:532 src/pv/transfer.c:679
|
|
||||||
msgid "buffer allocation failed"
|
|
||||||
msgstr "nie uda³o siê zaalokowaæ bufora"
|
|
||||||
|
|
||||||
#: src/pv/display.c:592 src/pv/transfer.c:458
|
|
||||||
msgid "B"
|
|
||||||
msgstr "B"
|
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
|
||||||
msgid "/s"
|
|
||||||
msgstr "/s"
|
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
|
||||||
msgid "B/s"
|
|
||||||
msgstr "B/s"
|
|
||||||
|
|
||||||
#: src/pv/display.c:671 src/pv/display.c:676 src/pv/display.c:738
|
|
||||||
msgid "ETA"
|
|
||||||
msgstr "ETA"
|
|
||||||
|
|
||||||
#: src/pv/transfer.c:341
|
#: src/pv/transfer.c:341
|
||||||
msgid "read failed"
|
msgid "read failed"
|
||||||
msgstr "b³±d odczytu"
|
msgstr "b³±d odczytu"
|
||||||
@@ -129,8 +125,12 @@ msgstr "b
|
|||||||
msgid "select call failed"
|
msgid "select call failed"
|
||||||
msgstr "nie uda³o siê wywo³aæ funkcji select"
|
msgstr "nie uda³o siê wywo³aæ funkcji select"
|
||||||
|
|
||||||
#: src/pv/state.c:33
|
#: src/pv/watchpid.c:76 src/pv/watchpid.c:86 src/pv/watchpid.c:117
|
||||||
msgid "none"
|
msgid "fd"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/watchpid.c:120
|
||||||
|
msgid "not a regular file or block device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/version.c:17
|
#: src/main/version.c:17
|
||||||
@@ -156,82 +156,6 @@ msgid ""
|
|||||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/main.c:73
|
|
||||||
#, fuzzy
|
|
||||||
msgid "state allocation failed"
|
|
||||||
msgstr "nie uda³o siê zaalokowaæ bufora"
|
|
||||||
|
|
||||||
#: src/main/options.c:98
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure allocation failed (%s)"
|
|
||||||
msgstr "%s: nie uda³o siê zaalokowaæ struktur opcji (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:114
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure argv allocation failed (%s)"
|
|
||||||
msgstr "%s: nie uda³o siê zaalokowaæ struktur opcji argv (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:154
|
|
||||||
msgid "integer argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:165
|
|
||||||
msgid "numeric argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:176
|
|
||||||
msgid "process ID or pid:fd pair expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:183
|
|
||||||
msgid "invalid process ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:317
|
|
||||||
#, c-format
|
|
||||||
msgid "Try `%s --help' for more information."
|
|
||||||
msgstr "Spróbuj `%s --help' by uzyskaæ wiêcej informacji"
|
|
||||||
|
|
||||||
#: src/main/options.c:321
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid "Try `%s -h' for more information."
|
|
||||||
msgstr "Spróbuj `%s -h' by uzyskaæ wiêcej informacji"
|
|
||||||
|
|
||||||
#: src/main/options.c:338
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"%s: cannot use line mode or transfer modifier options when watching file "
|
|
||||||
"descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:348
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use cursor positioning when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:358
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use remote control when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:368
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot transfer files when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:378
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: -d: not available on systems without /proc/self/fdinfo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:218
|
|
||||||
msgid "message not received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:324
|
|
||||||
msgid "IPC not supported on this system"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/help.c:31
|
#: src/main/help.c:31
|
||||||
msgid "show progress bar"
|
msgid "show progress bar"
|
||||||
msgstr "poka¿ pasek postêpu"
|
msgstr "poka¿ pasek postêpu"
|
||||||
@@ -428,64 +352,87 @@ msgstr ""
|
|||||||
"£±czenie PLIK(ów) lub wej¶cia standardowego, do wyj¶cia standardowego\n"
|
"£±czenie PLIK(ów) lub wej¶cia standardowego, do wyj¶cia standardowego\n"
|
||||||
"z monitoringiem."
|
"z monitoringiem."
|
||||||
|
|
||||||
#: src/main/help.c:201
|
#: src/main/help.c:207
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
||||||
"output filename.\n"
|
"output filename.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/help.c:205
|
#: src/main/help.c:211
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please report any bugs to %s."
|
msgid "Please report any bugs to %s."
|
||||||
msgstr "Proszê przesy³aæ zg³oszenia b³êdów do %s."
|
msgstr "Proszê przesy³aæ zg³oszenia b³êdów do %s."
|
||||||
|
|
||||||
#~ msgid "failed to lock terminal"
|
#: src/main/main.c:74
|
||||||
#~ msgstr "nie uda³o siê otworzyæ terminala"
|
#, fuzzy
|
||||||
|
msgid "state allocation failed"
|
||||||
|
msgstr "nie uda³o siê zaalokowaæ bufora"
|
||||||
|
|
||||||
#~ msgid "G"
|
#: src/main/main.c:246
|
||||||
#~ msgstr "GB"
|
#, fuzzy
|
||||||
|
msgid "failed to read terminal attributes"
|
||||||
|
msgstr "nie uda³o siê otworzyæ terminala"
|
||||||
|
|
||||||
#~ msgid "M"
|
#: src/main/options.c:98
|
||||||
#~ msgstr "MB"
|
msgid "option structure allocation failed"
|
||||||
|
msgstr "nie uda³o siê zaalokowaæ struktur opcji"
|
||||||
|
|
||||||
#~ msgid "k"
|
#: src/main/options.c:112
|
||||||
#~ msgstr "kB"
|
msgid "option structure argv allocation failed"
|
||||||
|
msgstr "nie uda³o siê zaalokowaæ struktur opcji argv"
|
||||||
|
|
||||||
#~ msgid "GB"
|
#: src/main/options.c:151
|
||||||
#~ msgstr "GB"
|
msgid "integer argument expected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "MB"
|
#: src/main/options.c:162
|
||||||
#~ msgstr "MB"
|
msgid "numeric argument expected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "kB"
|
#: src/main/options.c:173
|
||||||
#~ msgstr "kB"
|
msgid "process ID or pid:fd pair expected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "M/s"
|
#: src/main/options.c:180
|
||||||
#~ msgstr "MB/s"
|
msgid "invalid process ID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "k/s"
|
#: src/main/options.c:316
|
||||||
#~ msgstr "kB/s"
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information."
|
||||||
|
msgstr "Spróbuj `%s --help' by uzyskaæ wiêcej informacji"
|
||||||
|
|
||||||
#~ msgid "/s "
|
#: src/main/options.c:320
|
||||||
#~ msgstr "B/s"
|
#, fuzzy, c-format
|
||||||
|
msgid "Try `%s -h' for more information."
|
||||||
|
msgstr "Spróbuj `%s -h' by uzyskaæ wiêcej informacji"
|
||||||
|
|
||||||
#~ msgid "GB/s"
|
#: src/main/options.c:336
|
||||||
#~ msgstr "GB/s"
|
msgid ""
|
||||||
|
"cannot use line mode or transfer modifier options when watching file "
|
||||||
|
"descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "MB/s"
|
#: src/main/options.c:344
|
||||||
#~ msgstr "MB/s"
|
msgid "cannot use cursor positioning when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "kB/s"
|
#: src/main/options.c:352
|
||||||
#~ msgstr "kB/s"
|
msgid "cannot use remote control when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "For more information, please run `%s --license'."
|
#: src/main/options.c:360
|
||||||
#~ msgstr "By uzyskaæ wiêcej informacji wprowad¼ `%s --license'."
|
msgid "cannot transfer files when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "For more information, please run `%s -l'."
|
#: src/main/options.c:368
|
||||||
#~ msgstr "By uzyskaæ wiêcej informacji wprowad¼ `%s -l'."
|
msgid "not available on systems without /proc/self/fdinfo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "show the license this program is distributed under"
|
#: src/main/remote.c:221
|
||||||
#~ msgstr "wy¶wietl informacje o licencji pod któr± program jest rozprowadzany"
|
msgid "message not received"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "%s %s - Copyright (C) %s %s"
|
#: src/main/remote.c:328
|
||||||
#~ msgstr "%s %s - Prawa autorskie (C) %s %s"
|
msgid "IPC not supported on this system"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
+177
-184
@@ -6,133 +6,129 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-06-30 22:21+0100\n"
|
"POT-Creation-Date: 2021-09-05 19:25+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/pv/watchpid.c:51 src/pv/watchpid.c:66 src/pv/watchpid.c:76
|
#: src/pv/cursor.c:80
|
||||||
#: src/pv/watchpid.c:107 src/pv/loop.c:519 src/pv/loop.c:580 src/pv/loop.c:632
|
|
||||||
msgid "pid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:68 src/pv/watchpid.c:78 src/pv/watchpid.c:109
|
|
||||||
msgid "fd"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:112
|
|
||||||
msgid "not a regular file or block device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/cursor.c:53
|
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to get terminal name"
|
msgid "failed to get terminal name"
|
||||||
msgstr "erro abrindo o terminal"
|
msgstr "erro ao ler o nome do terminal"
|
||||||
|
|
||||||
#: src/pv/cursor.c:96
|
#: src/pv/cursor.c:125
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to open lock file"
|
msgid "failed to open lock file"
|
||||||
msgstr "erro fechando o arquivo"
|
msgstr "erro ao abrir arquivo de bloqueio"
|
||||||
|
|
||||||
#: src/pv/cursor.c:129
|
#: src/pv/cursor.c:159
|
||||||
msgid "lock attempt failed"
|
msgid "lock attempt failed"
|
||||||
msgstr ""
|
msgstr "tentativa de bloqueio falhou"
|
||||||
|
|
||||||
#: src/pv/cursor.c:369
|
#: src/pv/cursor.c:409
|
||||||
msgid "failed to open terminal"
|
msgid "failed to open terminal"
|
||||||
msgstr "erro abrindo o terminal"
|
msgstr "erro abrindo o terminal"
|
||||||
|
|
||||||
#: src/pv/file.c:118
|
#: src/pv/display.c:138
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to seek to start of output"
|
|
||||||
msgstr "erro obtendo informações do arquivo de saída"
|
|
||||||
|
|
||||||
#: src/pv/file.c:214
|
|
||||||
msgid "failed to close file"
|
|
||||||
msgstr "erro fechando o arquivo"
|
|
||||||
|
|
||||||
#: src/pv/file.c:237
|
|
||||||
msgid "failed to read file"
|
|
||||||
msgstr "erro lendo o arquivo"
|
|
||||||
|
|
||||||
#: src/pv/file.c:247
|
|
||||||
msgid "failed to stat file"
|
|
||||||
msgstr "erro obtendo informações do arquivo"
|
|
||||||
|
|
||||||
#: src/pv/file.c:256
|
|
||||||
msgid "failed to stat output file"
|
|
||||||
msgstr "erro obtendo informações do arquivo de saída"
|
|
||||||
|
|
||||||
#: src/pv/file.c:279
|
|
||||||
msgid "input file is output file"
|
|
||||||
msgstr "os arquivos de entrada e saída são o mesmo"
|
|
||||||
|
|
||||||
#: src/pv/display.c:117
|
|
||||||
msgid "yzafpnum kMGTPEZY"
|
msgid "yzafpnum kMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:122
|
#: src/pv/display.c:143
|
||||||
msgid "yzafpnum KMGTPEZY"
|
msgid "yzafpnum KMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:532 src/pv/transfer.c:679
|
#: src/pv/display.c:558 src/pv/transfer.c:679
|
||||||
msgid "buffer allocation failed"
|
msgid "buffer allocation failed"
|
||||||
msgstr "erro alocando o buffer"
|
msgstr "erro alocando o buffer"
|
||||||
|
|
||||||
#: src/pv/display.c:592 src/pv/transfer.c:458
|
#: src/pv/display.c:618 src/pv/transfer.c:458
|
||||||
msgid "B"
|
msgid "B"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "/s"
|
msgid "/s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "B/s"
|
msgid "B/s"
|
||||||
msgstr "B/s"
|
msgstr "B/s"
|
||||||
|
|
||||||
#: src/pv/display.c:671 src/pv/display.c:676 src/pv/display.c:738
|
#: src/pv/display.c:697 src/pv/display.c:702 src/pv/display.c:764
|
||||||
msgid "ETA"
|
msgid "ETA"
|
||||||
msgstr "ETA"
|
msgstr "ETA"
|
||||||
|
|
||||||
|
#: src/pv/file.c:119
|
||||||
|
msgid "failed to seek to start of output"
|
||||||
|
msgstr "não pode mover para o início da produção"
|
||||||
|
|
||||||
|
#: src/pv/file.c:215
|
||||||
|
msgid "failed to close file"
|
||||||
|
msgstr "erro fechando o arquivo"
|
||||||
|
|
||||||
|
#: src/pv/file.c:238
|
||||||
|
msgid "failed to read file"
|
||||||
|
msgstr "erro lendo o arquivo"
|
||||||
|
|
||||||
|
#: src/pv/file.c:248
|
||||||
|
msgid "failed to stat file"
|
||||||
|
msgstr "erro obtendo informações do arquivo"
|
||||||
|
|
||||||
|
#: src/pv/file.c:257
|
||||||
|
msgid "failed to stat output file"
|
||||||
|
msgstr "erro obtendo informações do arquivo de saída"
|
||||||
|
|
||||||
|
#: src/pv/file.c:280
|
||||||
|
msgid "input file is output file"
|
||||||
|
msgstr "os arquivos de entrada e saída são o mesmo"
|
||||||
|
|
||||||
|
#: src/pv/loop.c:520 src/pv/loop.c:590 src/pv/loop.c:642 src/pv/watchpid.c:51
|
||||||
|
#: src/pv/watchpid.c:74 src/pv/watchpid.c:84 src/pv/watchpid.c:115
|
||||||
|
msgid "pid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/state.c:33
|
||||||
|
msgid "none"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/transfer.c:341
|
#: src/pv/transfer.c:341
|
||||||
msgid "read failed"
|
msgid "read failed"
|
||||||
msgstr "erro de leitura"
|
msgstr "erro de leitura"
|
||||||
|
|
||||||
#: src/pv/transfer.c:359
|
#: src/pv/transfer.c:359
|
||||||
msgid "warning: read errors detected"
|
msgid "warning: read errors detected"
|
||||||
msgstr ""
|
msgstr "aviso: erros de leitura detectados"
|
||||||
|
|
||||||
#: src/pv/transfer.c:374
|
#: src/pv/transfer.c:374
|
||||||
msgid "file is not seekable"
|
msgid "file is not seekable"
|
||||||
msgstr ""
|
msgstr "não pode mover dentro do arquivo"
|
||||||
|
|
||||||
#: src/pv/transfer.c:437
|
#: src/pv/transfer.c:437
|
||||||
#, fuzzy
|
|
||||||
msgid "failed to seek past error"
|
msgid "failed to seek past error"
|
||||||
msgstr "erro obtendo informações do arquivo"
|
msgstr "não pode ir além do erro"
|
||||||
|
|
||||||
#: src/pv/transfer.c:456
|
#: src/pv/transfer.c:456
|
||||||
msgid "skipped past read error"
|
msgid "skipped past read error"
|
||||||
msgstr ""
|
msgstr "ignorado erro de leitura"
|
||||||
|
|
||||||
#: src/pv/transfer.c:631
|
#: src/pv/transfer.c:631
|
||||||
msgid "write failed"
|
msgid "write failed"
|
||||||
msgstr "erro de gravação"
|
msgstr "erro de gravação"
|
||||||
|
|
||||||
#: src/pv/transfer.c:770
|
#: src/pv/transfer.c:770
|
||||||
msgid "select call failed"
|
msgid "select call failed"
|
||||||
msgstr "erro na chamada da função select"
|
msgstr "erro na chamada da função select"
|
||||||
|
|
||||||
#: src/pv/state.c:33
|
#: src/pv/watchpid.c:76 src/pv/watchpid.c:86 src/pv/watchpid.c:117
|
||||||
msgid "none"
|
msgid "fd"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/watchpid.c:120
|
||||||
|
msgid "not a regular file or block device"
|
||||||
|
msgstr "não é um arquivo regular ou dispositivo de bloqueio"
|
||||||
|
|
||||||
#: src/main/version.c:17
|
#: src/main/version.c:17
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%s %s - Copyright %s %s"
|
msgid "%s %s - Copyright %s %s"
|
||||||
msgstr "%s %s - Copyright(C) %s %s"
|
msgstr "%s %s - Copyright(C) %s %s"
|
||||||
|
|
||||||
@@ -146,8 +142,8 @@ msgid ""
|
|||||||
"This program is free software, and is being distributed under the\n"
|
"This program is free software, and is being distributed under the\n"
|
||||||
"terms of the Artistic License 2.0."
|
"terms of the Artistic License 2.0."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Este programa é um software livre, distribuído sob os termos da\n"
|
"Este programa é um software livre, distribuído sob os termos da\n"
|
||||||
"Licença Artística."
|
"Licença Artística."
|
||||||
|
|
||||||
#: src/main/version.c:28
|
#: src/main/version.c:28
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -155,89 +151,13 @@ msgid ""
|
|||||||
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Este programa é distribuído com o intuito de que seja útil,\n"
|
"Este programa é distribuído com o intuito de que seja útil,\n"
|
||||||
"porém SEM QUAISQUER GARANTIAS; sem inclusive as garantias implícitas de\n"
|
"porém SEM QUAISQUER GARANTIAS; sem inclusive as garantias implícitas de\n"
|
||||||
"COMERCIALIZAÇÃO e ADEQUAÇÃO A OBJETIVOS PARTICULARES."
|
"COMERCIALIZAÇÃO e ADEQUAÇÃO A OBJETIVOS PARTICULARES."
|
||||||
|
|
||||||
#: src/main/main.c:73
|
|
||||||
#, fuzzy
|
|
||||||
msgid "state allocation failed"
|
|
||||||
msgstr "erro alocando o buffer"
|
|
||||||
|
|
||||||
#: src/main/options.c:98
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure allocation failed (%s)"
|
|
||||||
msgstr "%s: erro na alocação da estrutura de opções (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:114
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure argv allocation failed (%s)"
|
|
||||||
msgstr "%s: erro na alocação da estrutura de opções argv (%s)"
|
|
||||||
|
|
||||||
#: src/main/options.c:154
|
|
||||||
msgid "integer argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:165
|
|
||||||
msgid "numeric argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:176
|
|
||||||
msgid "process ID or pid:fd pair expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:183
|
|
||||||
msgid "invalid process ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:317
|
|
||||||
#, c-format
|
|
||||||
msgid "Try `%s --help' for more information."
|
|
||||||
msgstr "Tente `%s --help' para maiores informações."
|
|
||||||
|
|
||||||
#: src/main/options.c:321
|
|
||||||
#, fuzzy, c-format
|
|
||||||
msgid "Try `%s -h' for more information."
|
|
||||||
msgstr "Tente `%s -h' para maiores informações."
|
|
||||||
|
|
||||||
#: src/main/options.c:338
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"%s: cannot use line mode or transfer modifier options when watching file "
|
|
||||||
"descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:348
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use cursor positioning when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:358
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use remote control when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:368
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot transfer files when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:378
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: -d: not available on systems without /proc/self/fdinfo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:218
|
|
||||||
msgid "message not received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:324
|
|
||||||
msgid "IPC not supported on this system"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/help.c:31
|
#: src/main/help.c:31
|
||||||
msgid "show progress bar"
|
msgid "show progress bar"
|
||||||
msgstr "exibe barra de progressão"
|
msgstr "exibe barra de progressão"
|
||||||
|
|
||||||
#: src/main/help.c:33
|
#: src/main/help.c:33
|
||||||
msgid "show elapsed time"
|
msgid "show elapsed time"
|
||||||
@@ -245,20 +165,19 @@ msgstr "exibe tempo passado"
|
|||||||
|
|
||||||
#: src/main/help.c:35
|
#: src/main/help.c:35
|
||||||
msgid "show estimated time of arrival (completion)"
|
msgid "show estimated time of arrival (completion)"
|
||||||
msgstr "exibe o tempo estimado de término"
|
msgstr "exibe o tempo estimado de término"
|
||||||
|
|
||||||
#: src/main/help.c:38
|
#: src/main/help.c:38
|
||||||
#, fuzzy
|
|
||||||
msgid "show absolute estimated time of arrival (completion)"
|
msgid "show absolute estimated time of arrival (completion)"
|
||||||
msgstr "exibe o tempo estimado de término"
|
msgstr "exibe o tempo absoluto estimado de término"
|
||||||
|
|
||||||
#: src/main/help.c:40
|
#: src/main/help.c:40
|
||||||
msgid "show data transfer rate counter"
|
msgid "show data transfer rate counter"
|
||||||
msgstr "exibe a taxa de transferência"
|
msgstr "exibe a taxa de transferência"
|
||||||
|
|
||||||
#: src/main/help.c:42
|
#: src/main/help.c:42
|
||||||
msgid "show data transfer average rate counter"
|
msgid "show data transfer average rate counter"
|
||||||
msgstr ""
|
msgstr "exibe o contador da taxa média de transferência de dados"
|
||||||
|
|
||||||
#: src/main/help.c:44
|
#: src/main/help.c:44
|
||||||
msgid "show number of bytes transferred"
|
msgid "show number of bytes transferred"
|
||||||
@@ -266,7 +185,7 @@ msgstr "exibe a quantidade de bytes transferidos"
|
|||||||
|
|
||||||
#: src/main/help.c:46
|
#: src/main/help.c:46
|
||||||
msgid "show percentage of transfer buffer in use"
|
msgid "show percentage of transfer buffer in use"
|
||||||
msgstr ""
|
msgstr "exibe a porcentagem de buffer de transferência em uso"
|
||||||
|
|
||||||
#: src/main/help.c:47
|
#: src/main/help.c:47
|
||||||
msgid "NUM"
|
msgid "NUM"
|
||||||
@@ -274,7 +193,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:48
|
#: src/main/help.c:48
|
||||||
msgid "show NUM bytes last written"
|
msgid "show NUM bytes last written"
|
||||||
msgstr ""
|
msgstr "exibe NUM bytes gravados pela última vez"
|
||||||
|
|
||||||
#: src/main/help.c:49
|
#: src/main/help.c:49
|
||||||
msgid "FORMAT"
|
msgid "FORMAT"
|
||||||
@@ -282,28 +201,27 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:50
|
#: src/main/help.c:50
|
||||||
msgid "set output format to FORMAT"
|
msgid "set output format to FORMAT"
|
||||||
msgstr ""
|
msgstr "definir o formato de saída para FORMAT"
|
||||||
|
|
||||||
#: src/main/help.c:52
|
#: src/main/help.c:52
|
||||||
msgid "output percentages, not visual information"
|
msgid "output percentages, not visual information"
|
||||||
msgstr "exibe apenas as porcentagens, sem informações visuais"
|
msgstr "exibe apenas as porcentagens, sem informações visuais"
|
||||||
|
|
||||||
#: src/main/help.c:54
|
#: src/main/help.c:54
|
||||||
msgid "do not output any transfer information at all"
|
msgid "do not output any transfer information at all"
|
||||||
msgstr "executa programa sem exibir quaisquer informações"
|
msgstr "executa programa sem exibir quaisquer informações"
|
||||||
|
|
||||||
#: src/main/help.c:57
|
#: src/main/help.c:57
|
||||||
msgid "display nothing until first byte transferred"
|
msgid "display nothing until first byte transferred"
|
||||||
msgstr "não exibe nada até iniciar o processamento"
|
msgstr "não exibe nada até iniciar o processamento"
|
||||||
|
|
||||||
#: src/main/help.c:58 src/main/help.c:66
|
#: src/main/help.c:58 src/main/help.c:66
|
||||||
msgid "SEC"
|
msgid "SEC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/help.c:59
|
#: src/main/help.c:59
|
||||||
#, fuzzy
|
|
||||||
msgid "display nothing until SEC seconds have passed"
|
msgid "display nothing until SEC seconds have passed"
|
||||||
msgstr "não exibe nada até iniciar o processamento"
|
msgstr "não exibir nada até que os segundos SEC tenham passado"
|
||||||
|
|
||||||
#: src/main/help.c:60
|
#: src/main/help.c:60
|
||||||
msgid "SIZE"
|
msgid "SIZE"
|
||||||
@@ -315,15 +233,15 @@ msgstr "seta a quantidade estimada de dados em SIZE bytes"
|
|||||||
|
|
||||||
#: src/main/help.c:63
|
#: src/main/help.c:63
|
||||||
msgid "count lines instead of bytes"
|
msgid "count lines instead of bytes"
|
||||||
msgstr ""
|
msgstr "contar linhas em vez de bytes"
|
||||||
|
|
||||||
#: src/main/help.c:65
|
#: src/main/help.c:65
|
||||||
msgid "lines are null-terminated"
|
msgid "lines are null-terminated"
|
||||||
msgstr ""
|
msgstr "linhas são terminadas em nulo"
|
||||||
|
|
||||||
#: src/main/help.c:67
|
#: src/main/help.c:67
|
||||||
msgid "update every SEC seconds"
|
msgid "update every SEC seconds"
|
||||||
msgstr "atualiza informações a cada SEC segundos"
|
msgstr "atualiza informações a cada SEC segundos"
|
||||||
|
|
||||||
#: src/main/help.c:68
|
#: src/main/help.c:68
|
||||||
msgid "WIDTH"
|
msgid "WIDTH"
|
||||||
@@ -331,7 +249,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:69
|
#: src/main/help.c:69
|
||||||
msgid "assume terminal is WIDTH characters wide"
|
msgid "assume terminal is WIDTH characters wide"
|
||||||
msgstr "assume que terminal possui WIDTH caracteres de largura"
|
msgstr "presuma que o terminal tem WIDTH caracteres de largura"
|
||||||
|
|
||||||
#: src/main/help.c:70
|
#: src/main/help.c:70
|
||||||
msgid "HEIGHT"
|
msgid "HEIGHT"
|
||||||
@@ -339,7 +257,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:71
|
#: src/main/help.c:71
|
||||||
msgid "assume terminal is HEIGHT rows high"
|
msgid "assume terminal is HEIGHT rows high"
|
||||||
msgstr "assume que terminal possui WIDTH caracteres de largura"
|
msgstr "presuma que o terminal tem HEIGHT caracteres de altura"
|
||||||
|
|
||||||
#: src/main/help.c:72
|
#: src/main/help.c:72
|
||||||
msgid "NAME"
|
msgid "NAME"
|
||||||
@@ -347,11 +265,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:73
|
#: src/main/help.c:73
|
||||||
msgid "prefix visual information with NAME"
|
msgid "prefix visual information with NAME"
|
||||||
msgstr "exibe NAME antes das demais informações"
|
msgstr "exibe NAME antes das demais informações"
|
||||||
|
|
||||||
#: src/main/help.c:75
|
#: src/main/help.c:75
|
||||||
msgid "output even if standard error is not a terminal"
|
msgid "output even if standard error is not a terminal"
|
||||||
msgstr "gera dados mesmo que a saída de erro seja redirecionada"
|
msgstr "gera dados mesmo que a saída de erro seja redirecionada"
|
||||||
|
|
||||||
#: src/main/help.c:77
|
#: src/main/help.c:77
|
||||||
msgid "use cursor positioning escape sequences"
|
msgid "use cursor positioning escape sequences"
|
||||||
@@ -363,7 +281,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:80
|
#: src/main/help.c:80
|
||||||
msgid "limit transfer to RATE bytes per second"
|
msgid "limit transfer to RATE bytes per second"
|
||||||
msgstr "limita a transferência a RATE bytes por segundo"
|
msgstr "limita a transferência a RATE bytes por segundo"
|
||||||
|
|
||||||
#: src/main/help.c:81
|
#: src/main/help.c:81
|
||||||
msgid "BYTES"
|
msgid "BYTES"
|
||||||
@@ -371,20 +289,19 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:82
|
#: src/main/help.c:82
|
||||||
msgid "use a buffer size of BYTES"
|
msgid "use a buffer size of BYTES"
|
||||||
msgstr ""
|
msgstr "use um tamanho de buffer de BYTES"
|
||||||
|
|
||||||
#: src/main/help.c:84
|
#: src/main/help.c:84
|
||||||
msgid "never use splice(), always use read/write"
|
msgid "never use splice(), always use read/write"
|
||||||
msgstr ""
|
msgstr "nunca use splice(), sempre use read/write"
|
||||||
|
|
||||||
#: src/main/help.c:86
|
#: src/main/help.c:86
|
||||||
msgid "skip read errors in input"
|
msgid "skip read errors in input"
|
||||||
msgstr ""
|
msgstr "ignorar erros de leitura em entrada"
|
||||||
|
|
||||||
#: src/main/help.c:88
|
#: src/main/help.c:88
|
||||||
#, fuzzy
|
|
||||||
msgid "stop after --size bytes have been transferred"
|
msgid "stop after --size bytes have been transferred"
|
||||||
msgstr "exibe a quantidade de bytes transferidos"
|
msgstr "parar após --size bytes terem sido transferidos"
|
||||||
|
|
||||||
#: src/main/help.c:90
|
#: src/main/help.c:90
|
||||||
msgid "PID"
|
msgid "PID"
|
||||||
@@ -392,7 +309,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:91
|
#: src/main/help.c:91
|
||||||
msgid "update settings of process PID"
|
msgid "update settings of process PID"
|
||||||
msgstr ""
|
msgstr "atualizar as configurações do processo PID"
|
||||||
|
|
||||||
#: src/main/help.c:94
|
#: src/main/help.c:94
|
||||||
msgid "FILE"
|
msgid "FILE"
|
||||||
@@ -400,7 +317,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:95
|
#: src/main/help.c:95
|
||||||
msgid "save process ID in FILE"
|
msgid "save process ID in FILE"
|
||||||
msgstr ""
|
msgstr "salvar ID do processo em FILE"
|
||||||
|
|
||||||
#: src/main/help.c:97
|
#: src/main/help.c:97
|
||||||
msgid "PID[:FD]"
|
msgid "PID[:FD]"
|
||||||
@@ -408,7 +325,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/main/help.c:98
|
#: src/main/help.c:98
|
||||||
msgid "watch file FD opened by process PID"
|
msgid "watch file FD opened by process PID"
|
||||||
msgstr ""
|
msgstr "assistir arquivo FD aberto pelo processo PID"
|
||||||
|
|
||||||
#: src/main/help.c:101
|
#: src/main/help.c:101
|
||||||
msgid "show this help and exit"
|
msgid "show this help and exit"
|
||||||
@@ -416,31 +333,107 @@ msgstr "exibe esta tela de ajuda e termina"
|
|||||||
|
|
||||||
#: src/main/help.c:103
|
#: src/main/help.c:103
|
||||||
msgid "show version information and exit"
|
msgid "show version information and exit"
|
||||||
msgstr "exibe a versão e termina"
|
msgstr "exibe a versão e termina"
|
||||||
|
|
||||||
#: src/main/help.c:109
|
#: src/main/help.c:109
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: %s [OPTION] [FILE]..."
|
msgid "Usage: %s [OPTION] [FILE]..."
|
||||||
msgstr "Uso: %s [OPÇÕES] [ARQUIVOS]..."
|
msgstr "Uso: %s [OPÇÕES] [ARQUIVOS]..."
|
||||||
|
|
||||||
#: src/main/help.c:112
|
#: src/main/help.c:112
|
||||||
msgid ""
|
msgid ""
|
||||||
"Concatenate FILE(s), or standard input, to standard output,\n"
|
"Concatenate FILE(s), or standard input, to standard output,\n"
|
||||||
"with monitoring."
|
"with monitoring."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Concatena ARQUIVO(s) ou a entrada padrão e grava na saída padrão,\n"
|
"Concatena ARQUIVO(s) ou a entrada padrão e grava na saída padrão,\n"
|
||||||
"com monitoramento."
|
"com monitoramento."
|
||||||
|
|
||||||
#: src/main/help.c:201
|
#: src/main/help.c:207
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
||||||
"output filename.\n"
|
"output filename.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"A depuração está habilitada; exporte a variável de ambiente DEBUG para\n"
|
||||||
|
"definir o nome do arquivo de saída.\n"
|
||||||
|
|
||||||
#: src/main/help.c:205
|
#: src/main/help.c:211
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please report any bugs to %s."
|
msgid "Please report any bugs to %s."
|
||||||
msgstr "Por favor, reporte quaisquer defeitos para %s."
|
msgstr "Por favor, reporte quaisquer defeitos para %s."
|
||||||
|
|
||||||
#~ msgid "failed to lock terminal"
|
#: src/main/main.c:74
|
||||||
#~ msgstr "erro abrindo o terminal"
|
msgid "state allocation failed"
|
||||||
|
msgstr "alocação de memória de status falhou"
|
||||||
|
|
||||||
|
#: src/main/main.c:246
|
||||||
|
#, fuzzy
|
||||||
|
msgid "failed to read terminal attributes"
|
||||||
|
msgstr "erro ao ler o nome do terminal"
|
||||||
|
|
||||||
|
#: src/main/options.c:98
|
||||||
|
msgid "option structure allocation failed"
|
||||||
|
msgstr "erro na alocação da estrutura de opções"
|
||||||
|
|
||||||
|
#: src/main/options.c:112
|
||||||
|
msgid "option structure argv allocation failed"
|
||||||
|
msgstr "erro na alocação da estrutura de opções argv"
|
||||||
|
|
||||||
|
#: src/main/options.c:151
|
||||||
|
msgid "integer argument expected"
|
||||||
|
msgstr "argumento inteiro esperado"
|
||||||
|
|
||||||
|
#: src/main/options.c:162
|
||||||
|
msgid "numeric argument expected"
|
||||||
|
msgstr "argumento numérico esperado"
|
||||||
|
|
||||||
|
#: src/main/options.c:173
|
||||||
|
msgid "process ID or pid:fd pair expected"
|
||||||
|
msgstr "ID do processo ou par pid:fd esperado"
|
||||||
|
|
||||||
|
#: src/main/options.c:180
|
||||||
|
msgid "invalid process ID"
|
||||||
|
msgstr "ID de processo inválido"
|
||||||
|
|
||||||
|
#: src/main/options.c:316
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information."
|
||||||
|
msgstr "Tente `%s --help' para maiores informações."
|
||||||
|
|
||||||
|
#: src/main/options.c:320
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s -h' for more information."
|
||||||
|
msgstr "Tente `%s -h' para maiores informações."
|
||||||
|
|
||||||
|
#: src/main/options.c:336
|
||||||
|
msgid ""
|
||||||
|
"cannot use line mode or transfer modifier options when watching file "
|
||||||
|
"descriptors"
|
||||||
|
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:344
|
||||||
|
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:352
|
||||||
|
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:360
|
||||||
|
msgid "cannot transfer files when watching file descriptors"
|
||||||
|
msgstr "não pode transferir arquivos ao assistir descritores de arquivo"
|
||||||
|
|
||||||
|
#: src/main/options.c:368
|
||||||
|
msgid "not available on systems without /proc/self/fdinfo"
|
||||||
|
msgstr "não disponível em sistemas sem /proc/self/fdinfo"
|
||||||
|
|
||||||
|
#: src/main/remote.c:221
|
||||||
|
msgid "message not received"
|
||||||
|
msgstr "mensagem não recebida"
|
||||||
|
|
||||||
|
#: src/main/remote.c:328
|
||||||
|
msgid "IPC not supported on this system"
|
||||||
|
msgstr "IPC não suportado neste sistema"
|
||||||
|
|||||||
+125
-128
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-06-30 22:21+0100\n"
|
"POT-Creation-Date: 2021-09-05 19:25+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -16,87 +16,83 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: src/pv/watchpid.c:51 src/pv/watchpid.c:66 src/pv/watchpid.c:76
|
#: src/pv/cursor.c:80
|
||||||
#: src/pv/watchpid.c:107 src/pv/loop.c:519 src/pv/loop.c:580 src/pv/loop.c:632
|
|
||||||
msgid "pid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:68 src/pv/watchpid.c:78 src/pv/watchpid.c:109
|
|
||||||
msgid "fd"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/watchpid.c:112
|
|
||||||
msgid "not a regular file or block device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/cursor.c:53
|
|
||||||
msgid "failed to get terminal name"
|
msgid "failed to get terminal name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/cursor.c:96
|
#: src/pv/cursor.c:125
|
||||||
msgid "failed to open lock file"
|
msgid "failed to open lock file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/cursor.c:129
|
#: src/pv/cursor.c:159
|
||||||
msgid "lock attempt failed"
|
msgid "lock attempt failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/cursor.c:369
|
#: src/pv/cursor.c:409
|
||||||
msgid "failed to open terminal"
|
msgid "failed to open terminal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/file.c:118
|
#: src/pv/display.c:138
|
||||||
msgid "failed to seek to start of output"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/file.c:214
|
|
||||||
msgid "failed to close file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/file.c:237
|
|
||||||
msgid "failed to read file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/file.c:247
|
|
||||||
msgid "failed to stat file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/file.c:256
|
|
||||||
msgid "failed to stat output file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/file.c:279
|
|
||||||
msgid "input file is output file"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pv/display.c:117
|
|
||||||
msgid "yzafpnum kMGTPEZY"
|
msgid "yzafpnum kMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:122
|
#: src/pv/display.c:143
|
||||||
msgid "yzafpnum KMGTPEZY"
|
msgid "yzafpnum KMGTPEZY"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:532 src/pv/transfer.c:679
|
#: src/pv/display.c:558 src/pv/transfer.c:679
|
||||||
msgid "buffer allocation failed"
|
msgid "buffer allocation failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:592 src/pv/transfer.c:458
|
#: src/pv/display.c:618 src/pv/transfer.c:458
|
||||||
msgid "B"
|
msgid "B"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "/s"
|
msgid "/s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:628 src/pv/display.c:636
|
#: src/pv/display.c:654 src/pv/display.c:662
|
||||||
msgid "B/s"
|
msgid "B/s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/display.c:671 src/pv/display.c:676 src/pv/display.c:738
|
#: src/pv/display.c:697 src/pv/display.c:702 src/pv/display.c:764
|
||||||
msgid "ETA"
|
msgid "ETA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/file.c:119
|
||||||
|
msgid "failed to seek to start of output"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/file.c:215
|
||||||
|
msgid "failed to close file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/file.c:238
|
||||||
|
msgid "failed to read file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/file.c:248
|
||||||
|
msgid "failed to stat file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/file.c:257
|
||||||
|
msgid "failed to stat output file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/file.c:280
|
||||||
|
msgid "input file is output file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/loop.c:520 src/pv/loop.c:590 src/pv/loop.c:642 src/pv/watchpid.c:51
|
||||||
|
#: src/pv/watchpid.c:74 src/pv/watchpid.c:84 src/pv/watchpid.c:115
|
||||||
|
msgid "pid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/state.c:33
|
||||||
|
msgid "none"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/transfer.c:341
|
#: src/pv/transfer.c:341
|
||||||
msgid "read failed"
|
msgid "read failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -125,8 +121,12 @@ msgstr ""
|
|||||||
msgid "select call failed"
|
msgid "select call failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pv/state.c:33
|
#: src/pv/watchpid.c:76 src/pv/watchpid.c:86 src/pv/watchpid.c:117
|
||||||
msgid "none"
|
msgid "fd"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pv/watchpid.c:120
|
||||||
|
msgid "not a regular file or block device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/version.c:17
|
#: src/main/version.c:17
|
||||||
@@ -152,81 +152,6 @@ msgid ""
|
|||||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/main.c:73
|
|
||||||
msgid "state allocation failed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:98
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure allocation failed (%s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:114
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: option structure argv allocation failed (%s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:154
|
|
||||||
msgid "integer argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:165
|
|
||||||
msgid "numeric argument expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:176
|
|
||||||
msgid "process ID or pid:fd pair expected"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:183
|
|
||||||
msgid "invalid process ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:317
|
|
||||||
#, c-format
|
|
||||||
msgid "Try `%s --help' for more information."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:321
|
|
||||||
#, c-format
|
|
||||||
msgid "Try `%s -h' for more information."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:338
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"%s: cannot use line mode or transfer modifier options when watching file "
|
|
||||||
"descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:348
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use cursor positioning when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:358
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot use remote control when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:368
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: cannot transfer files when watching file descriptors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/options.c:378
|
|
||||||
#, c-format
|
|
||||||
msgid "%s: -d: not available on systems without /proc/self/fdinfo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:218
|
|
||||||
msgid "message not received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/remote.c:324
|
|
||||||
msgid "IPC not supported on this system"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/main/help.c:31
|
#: src/main/help.c:31
|
||||||
msgid "show progress bar"
|
msgid "show progress bar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -418,13 +343,85 @@ msgid ""
|
|||||||
"with monitoring."
|
"with monitoring."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/help.c:201
|
#: src/main/help.c:207
|
||||||
msgid ""
|
msgid ""
|
||||||
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
"Debugging is enabled; export the DEBUG environment variable to define the\n"
|
||||||
"output filename.\n"
|
"output filename.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/main/help.c:205
|
#: src/main/help.c:211
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please report any bugs to %s."
|
msgid "Please report any bugs to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/main.c:74
|
||||||
|
msgid "state allocation failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/main.c:246
|
||||||
|
msgid "failed to read terminal attributes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:98
|
||||||
|
msgid "option structure allocation failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:112
|
||||||
|
msgid "option structure argv allocation failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:151
|
||||||
|
msgid "integer argument expected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:162
|
||||||
|
msgid "numeric argument expected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:173
|
||||||
|
msgid "process ID or pid:fd pair expected"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:180
|
||||||
|
msgid "invalid process ID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:316
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:320
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s -h' for more information."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:336
|
||||||
|
msgid ""
|
||||||
|
"cannot use line mode or transfer modifier options when watching file "
|
||||||
|
"descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:344
|
||||||
|
msgid "cannot use cursor positioning when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:352
|
||||||
|
msgid "cannot use remote control when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:360
|
||||||
|
msgid "cannot transfer files when watching file descriptors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/options.c:368
|
||||||
|
msgid "not available on systems without /proc/self/fdinfo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/remote.c:221
|
||||||
|
msgid "message not received"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/main/remote.c:328
|
||||||
|
msgid "IPC not supported on this system"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
+103
-45
@@ -21,6 +21,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#ifdef HAVE_IPC
|
#ifdef HAVE_IPC
|
||||||
#include <sys/ipc.h>
|
#include <sys/ipc.h>
|
||||||
@@ -34,6 +35,32 @@
|
|||||||
#endif /* HAVE_IPC */
|
#endif /* HAVE_IPC */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write the given buffer to the given file descriptor, retrying until all
|
||||||
|
* bytes have been written or an error has occurred.
|
||||||
|
*/
|
||||||
|
static void write_retry(int fd, const char *buf, size_t count)
|
||||||
|
{
|
||||||
|
while (count > 0) {
|
||||||
|
ssize_t nwritten;
|
||||||
|
|
||||||
|
nwritten = write(fd, buf, count);
|
||||||
|
|
||||||
|
if (nwritten < 0) {
|
||||||
|
if ((EINTR == errno) || (EAGAIN == errno)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (nwritten < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
count -= nwritten;
|
||||||
|
buf += nwritten;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a per-euid, per-tty, lockfile in ${TMPDIR:-${TMP:-/tmp}} for the
|
* Create a per-euid, per-tty, lockfile in ${TMPDIR:-${TMP:-/tmp}} for the
|
||||||
* tty on the given file descriptor.
|
* tty on the given file descriptor.
|
||||||
@@ -69,15 +96,17 @@ static void pv_crs_open_lockfile(pvstate_t state, int fd)
|
|||||||
if (!tmpdir)
|
if (!tmpdir)
|
||||||
tmpdir = "/tmp";
|
tmpdir = "/tmp";
|
||||||
|
|
||||||
|
memset(state->crs_lock_file, 0, sizeof(state->crs_lock_file));
|
||||||
#ifdef HAVE_SNPRINTF
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(state->crs_lock_file, sizeof(state->crs_lock_file) - 1,
|
(void) snprintf(state->crs_lock_file,
|
||||||
"%s/pv-%s-%i.lock", tmpdir, basename(ttydev),
|
sizeof(state->crs_lock_file) - 1,
|
||||||
(int) geteuid());
|
"%s/pv-%s-%i.lock", tmpdir, basename(ttydev),
|
||||||
|
(int) geteuid());
|
||||||
#else
|
#else
|
||||||
sprintf(state->crs_lock_file,
|
(void) sprintf(state->crs_lock_file,
|
||||||
"%.*s/pv-%8s-%i.lock",
|
"%.*s/pv-%8s-%i.lock",
|
||||||
sizeof(state->crs_lock_file) - 64, tmpdir,
|
sizeof(state->crs_lock_file) - 64, tmpdir,
|
||||||
basename(ttydev), (int) geteuid());
|
basename(ttydev), (int) geteuid());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -113,8 +142,9 @@ static void pv_crs_lock(pvstate_t state, int fd)
|
|||||||
if (state->crs_lock_fd >= 0)
|
if (state->crs_lock_fd >= 0)
|
||||||
lock_fd = state->crs_lock_fd;
|
lock_fd = state->crs_lock_fd;
|
||||||
|
|
||||||
lock.l_type = F_WRLCK;
|
memset(&lock, 0, sizeof(lock));
|
||||||
lock.l_whence = SEEK_SET;
|
lock.l_type = (short) F_WRLCK;
|
||||||
|
lock.l_whence = (short) SEEK_SET;
|
||||||
lock.l_start = 0;
|
lock.l_start = 0;
|
||||||
lock.l_len = 1;
|
lock.l_len = 1;
|
||||||
while (fcntl(lock_fd, F_SETLKW, &lock) < 0) {
|
while (fcntl(lock_fd, F_SETLKW, &lock) < 0) {
|
||||||
@@ -155,11 +185,12 @@ static void pv_crs_unlock(pvstate_t state, int fd)
|
|||||||
if (state->crs_lock_fd >= 0)
|
if (state->crs_lock_fd >= 0)
|
||||||
lock_fd = state->crs_lock_fd;
|
lock_fd = state->crs_lock_fd;
|
||||||
|
|
||||||
lock.l_type = F_UNLCK;
|
memset(&lock, 0, sizeof(lock));
|
||||||
lock.l_whence = SEEK_SET;
|
lock.l_type = (short) F_UNLCK;
|
||||||
|
lock.l_whence = (short) SEEK_SET;
|
||||||
lock.l_start = 0;
|
lock.l_start = 0;
|
||||||
lock.l_len = 1;
|
lock.l_len = 1;
|
||||||
fcntl(lock_fd, F_SETLK, &lock);
|
(void) fcntl(lock_fd, F_SETLK, &lock);
|
||||||
|
|
||||||
if (state->crs_lock_fd >= 0) {
|
if (state->crs_lock_fd >= 0) {
|
||||||
debug("%s: %s", state->crs_lock_file,
|
debug("%s: %s", state->crs_lock_file,
|
||||||
@@ -181,10 +212,11 @@ static void pv_crs_ipccount(pvstate_t state)
|
|||||||
{
|
{
|
||||||
struct shmid_ds buf;
|
struct shmid_ds buf;
|
||||||
|
|
||||||
|
memset(&buf, 0, sizeof(buf));
|
||||||
buf.shm_nattch = 0;
|
buf.shm_nattch = 0;
|
||||||
|
|
||||||
shmctl(state->crs_shmid, IPC_STAT, &buf);
|
(void) shmctl(state->crs_shmid, IPC_STAT, &buf);
|
||||||
state->crs_pvcount = buf.shm_nattch;
|
state->crs_pvcount = (int) (buf.shm_nattch);
|
||||||
|
|
||||||
if (state->crs_pvcount > state->crs_pvmax)
|
if (state->crs_pvcount > state->crs_pvmax)
|
||||||
state->crs_pvmax = state->crs_pvcount;
|
state->crs_pvmax = state->crs_pvcount;
|
||||||
@@ -204,23 +236,29 @@ static int pv_crs_get_ypos(int terminalfd)
|
|||||||
struct termios old_tty;
|
struct termios old_tty;
|
||||||
char cpr[32];
|
char cpr[32];
|
||||||
int ypos;
|
int ypos;
|
||||||
int r;
|
ssize_t r;
|
||||||
#ifdef CURSOR_ANSWERBACK_BYTE_BY_BYTE
|
#ifdef CURSOR_ANSWERBACK_BYTE_BY_BYTE
|
||||||
int got;
|
int got;
|
||||||
#endif /* CURSOR_ANSWERBACK_BYTE_BY_BYTE */
|
#endif /* CURSOR_ANSWERBACK_BYTE_BY_BYTE */
|
||||||
|
|
||||||
tcgetattr(terminalfd, &tty);
|
if (0 != tcgetattr(terminalfd, &tty)) {
|
||||||
tcgetattr(terminalfd, &old_tty);
|
debug("%s: %s", "tcgetattr (1) failed", strerror(errno));
|
||||||
|
}
|
||||||
|
if (0 != tcgetattr(terminalfd, &old_tty)) {
|
||||||
|
debug("%s: %s", "tcgetattr (2) failed", strerror(errno));
|
||||||
|
}
|
||||||
tty.c_lflag &= ~(ICANON | ECHO);
|
tty.c_lflag &= ~(ICANON | ECHO);
|
||||||
tcsetattr(terminalfd, TCSANOW | TCSAFLUSH, &tty);
|
if (0 != tcsetattr(terminalfd, TCSANOW | TCSAFLUSH, &tty)) {
|
||||||
|
debug("%s: %s", "tcsetattr (1) failed", strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
write(terminalfd, "\033[6n", 4);
|
write_retry(terminalfd, "\033[6n", 4);
|
||||||
|
|
||||||
memset(cpr, 0, sizeof(cpr));
|
memset(cpr, 0, sizeof(cpr));
|
||||||
|
|
||||||
#ifdef CURSOR_ANSWERBACK_BYTE_BY_BYTE
|
#ifdef CURSOR_ANSWERBACK_BYTE_BY_BYTE
|
||||||
/* Read answerback byte by byte - fails on AIX */
|
/* Read answerback byte by byte - fails on AIX */
|
||||||
for (got = 0, r = 0; got < sizeof(cpr) - 2; got += r) {
|
for (got = 0, r = 0; got < (int) (sizeof(cpr) - 2); got += r) {
|
||||||
r = read(terminalfd, cpr + got, 1);
|
r = read(terminalfd, cpr + got, 1);
|
||||||
if (r <= 0) {
|
if (r <= 0) {
|
||||||
debug("got=%d, r=%d: %s", got, r, strerror(errno));
|
debug("got=%d, r=%d: %s", got, r, strerror(errno));
|
||||||
@@ -249,9 +287,11 @@ static int pv_crs_get_ypos(int terminalfd)
|
|||||||
}
|
}
|
||||||
#endif /* CURSOR_ANSWERBACK_BYTE_BY_BYTE */
|
#endif /* CURSOR_ANSWERBACK_BYTE_BY_BYTE */
|
||||||
|
|
||||||
ypos = pv_getnum_i(cpr + 2);
|
ypos = (int) pv_getnum_ui(cpr + 2);
|
||||||
|
|
||||||
tcsetattr(terminalfd, TCSANOW | TCSAFLUSH, &old_tty);
|
if (0 != tcsetattr(terminalfd, TCSANOW | TCSAFLUSH, &old_tty)) {
|
||||||
|
debug("%s: %s", "tcsetattr (2) failed", strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
debug("%s: %d", "ypos", ypos);
|
debug("%s: %d", "ypos", ypos);
|
||||||
|
|
||||||
@@ -281,7 +321,7 @@ static int pv_crs_ipcinit(pvstate_t state, char *ttyfile, int terminalfd)
|
|||||||
* we don't end up interfering in any way with instances of `pv'
|
* we don't end up interfering in any way with instances of `pv'
|
||||||
* running on another terminal.
|
* running on another terminal.
|
||||||
*/
|
*/
|
||||||
key = ftok(ttyfile, 'p');
|
key = ftok(ttyfile, (int) 'p');
|
||||||
if (-1 == key) {
|
if (-1 == key) {
|
||||||
debug("%s: %s\n", "ftok failed", strerror(errno));
|
debug("%s: %s\n", "ftok failed", strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
@@ -300,7 +340,7 @@ static int pv_crs_ipcinit(pvstate_t state, char *ttyfile, int terminalfd)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
state->crs_y_top = shmat(state->crs_shmid, 0, 0);
|
state->crs_y_top = shmat(state->crs_shmid, NULL, 0);
|
||||||
|
|
||||||
pv_crs_ipccount(state);
|
pv_crs_ipccount(state);
|
||||||
|
|
||||||
@@ -347,7 +387,7 @@ void pv_crs_init(pvstate_t state)
|
|||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
state->crs_lock_fd = -2;
|
state->crs_lock_fd = -2;
|
||||||
state->crs_lock_file[0] = 0;
|
state->crs_lock_file[0] = '\0';
|
||||||
|
|
||||||
if (!state->cursor)
|
if (!state->cursor)
|
||||||
return;
|
return;
|
||||||
@@ -368,13 +408,13 @@ void pv_crs_init(pvstate_t state)
|
|||||||
pv_error(state, "%s: %s: %s",
|
pv_error(state, "%s: %s: %s",
|
||||||
_("failed to open terminal"), ttyfile,
|
_("failed to open terminal"), ttyfile,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
state->cursor = 0;
|
state->cursor = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifdef HAVE_IPC
|
#ifdef HAVE_IPC
|
||||||
if (pv_crs_ipcinit(state, ttyfile, fd) != 0) {
|
if (pv_crs_ipcinit(state, ttyfile, fd) != 0) {
|
||||||
debug("%s", "ipcinit failed, setting noipc flag");
|
debug("%s", "ipcinit failed, setting noipc flag");
|
||||||
state->crs_noipc = 1;
|
state->crs_noipc = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -397,14 +437,14 @@ void pv_crs_init(pvstate_t state)
|
|||||||
* initial ypos.
|
* initial ypos.
|
||||||
*/
|
*/
|
||||||
if (state->crs_y_start > 0)
|
if (state->crs_y_start > 0)
|
||||||
write(STDERR_FILENO, "\n", 1);
|
write_retry(STDERR_FILENO, "\n", 1);
|
||||||
pv_crs_unlock(state, fd);
|
pv_crs_unlock(state, fd);
|
||||||
|
|
||||||
if (state->crs_y_start < 1)
|
if (state->crs_y_start < 1)
|
||||||
state->cursor = 0;
|
state->cursor = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fd);
|
(void) close(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -465,7 +505,7 @@ void pv_crs_update(pvstate_t state, char *str)
|
|||||||
|
|
||||||
#ifdef HAVE_IPC
|
#ifdef HAVE_IPC
|
||||||
if (!state->crs_noipc) {
|
if (!state->crs_noipc) {
|
||||||
if (state->crs_needreinit)
|
if (state->crs_needreinit > 0)
|
||||||
pv_crs_reinit(state);
|
pv_crs_reinit(state);
|
||||||
|
|
||||||
pv_crs_ipccount(state);
|
pv_crs_ipccount(state);
|
||||||
@@ -488,7 +528,8 @@ void pv_crs_update(pvstate_t state, char *str)
|
|||||||
* scroll the screen (only if we're the first `pv'), and then move
|
* scroll the screen (only if we're the first `pv'), and then move
|
||||||
* our initial Y co-ordinate up.
|
* our initial Y co-ordinate up.
|
||||||
*/
|
*/
|
||||||
if (((state->crs_y_start + state->crs_pvmax) > state->height)
|
if (((state->crs_y_start + state->crs_pvmax) >
|
||||||
|
(int) (state->height))
|
||||||
&& (!state->crs_noipc)
|
&& (!state->crs_noipc)
|
||||||
) {
|
) {
|
||||||
int offs;
|
int offs;
|
||||||
@@ -509,10 +550,16 @@ void pv_crs_update(pvstate_t state, char *str)
|
|||||||
if (0 == state->crs_y_offset) {
|
if (0 == state->crs_y_offset) {
|
||||||
pv_crs_lock(state, STDERR_FILENO);
|
pv_crs_lock(state, STDERR_FILENO);
|
||||||
|
|
||||||
sprintf(pos, "\033[%d;1H", state->height);
|
memset(pos, 0, sizeof(pos));
|
||||||
write(STDERR_FILENO, pos, strlen(pos));
|
# ifdef HAVE_SNPRINTF
|
||||||
|
(void) snprintf(pos, sizeof(pos) - 1, "\033[%u;1H",
|
||||||
|
state->height);
|
||||||
|
# else
|
||||||
|
(void) sprintf(pos, "\033[%u;1H", state->height);
|
||||||
|
# endif
|
||||||
|
write_retry(STDERR_FILENO, pos, strlen(pos));
|
||||||
for (; offs > 0; offs--) {
|
for (; offs > 0; offs--) {
|
||||||
write(STDERR_FILENO, "\n", 1);
|
write_retry(STDERR_FILENO, "\n", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
pv_crs_unlock(state, STDERR_FILENO);
|
pv_crs_unlock(state, STDERR_FILENO);
|
||||||
@@ -531,12 +578,18 @@ void pv_crs_update(pvstate_t state, char *str)
|
|||||||
*/
|
*/
|
||||||
if ((y < 1) || (y > 999999))
|
if ((y < 1) || (y > 999999))
|
||||||
y = 1;
|
y = 1;
|
||||||
sprintf(pos, "\033[%d;1H", y);
|
|
||||||
|
memset(pos, 0, sizeof(pos));
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
|
(void) snprintf(pos, sizeof(pos) - 1, "\033[%d;1H", y);
|
||||||
|
#else
|
||||||
|
(void) sprintf(pos, "\033[%d;1H", y);
|
||||||
|
#endif
|
||||||
|
|
||||||
pv_crs_lock(state, STDERR_FILENO);
|
pv_crs_lock(state, STDERR_FILENO);
|
||||||
|
|
||||||
write(STDERR_FILENO, pos, strlen(pos));
|
write_retry(STDERR_FILENO, pos, strlen(pos));
|
||||||
write(STDERR_FILENO, str, strlen(str));
|
write_retry(STDERR_FILENO, str, strlen(str));
|
||||||
|
|
||||||
pv_crs_unlock(state, STDERR_FILENO);
|
pv_crs_unlock(state, STDERR_FILENO);
|
||||||
}
|
}
|
||||||
@@ -548,11 +601,11 @@ void pv_crs_update(pvstate_t state, char *str)
|
|||||||
void pv_crs_fini(pvstate_t state)
|
void pv_crs_fini(pvstate_t state)
|
||||||
{
|
{
|
||||||
char pos[32];
|
char pos[32];
|
||||||
int y;
|
unsigned int y;
|
||||||
|
|
||||||
debug("%s", "fini");
|
debug("%s", "fini");
|
||||||
|
|
||||||
y = state->crs_y_start;
|
y = (unsigned int) (state->crs_y_start);
|
||||||
|
|
||||||
#ifdef HAVE_IPC
|
#ifdef HAVE_IPC
|
||||||
if ((state->crs_pvmax > 0) && (!state->crs_noipc))
|
if ((state->crs_pvmax > 0) && (!state->crs_noipc))
|
||||||
@@ -568,34 +621,39 @@ void pv_crs_fini(pvstate_t state)
|
|||||||
if ((y < 1) || (y > 999999))
|
if ((y < 1) || (y > 999999))
|
||||||
y = 1;
|
y = 1;
|
||||||
|
|
||||||
sprintf(pos, "\033[%d;1H\n", y);
|
memset(pos, 0, sizeof(pos));
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
|
(void) snprintf(pos, sizeof(pos) - 1, "\033[%u;1H\n", y);
|
||||||
|
#else
|
||||||
|
(void) sprintf(pos, "\033[%u;1H\n", y);
|
||||||
|
#endif
|
||||||
|
|
||||||
pv_crs_lock(state, STDERR_FILENO);
|
pv_crs_lock(state, STDERR_FILENO);
|
||||||
|
|
||||||
write(STDERR_FILENO, pos, strlen(pos));
|
write_retry(STDERR_FILENO, pos, strlen(pos));
|
||||||
|
|
||||||
#ifdef HAVE_IPC
|
#ifdef HAVE_IPC
|
||||||
pv_crs_ipccount(state);
|
pv_crs_ipccount(state);
|
||||||
shmdt((void *) state->crs_y_top);
|
(void) shmdt((void *) state->crs_y_top);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are the last instance detaching from the shared memory,
|
* If we are the last instance detaching from the shared memory,
|
||||||
* delete it so it's not left lying around.
|
* delete it so it's not left lying around.
|
||||||
*/
|
*/
|
||||||
if (state->crs_pvcount < 2)
|
if (state->crs_pvcount < 2)
|
||||||
shmctl(state->crs_shmid, IPC_RMID, 0);
|
(void) shmctl(state->crs_shmid, IPC_RMID, NULL);
|
||||||
|
|
||||||
#endif /* HAVE_IPC */
|
#endif /* HAVE_IPC */
|
||||||
|
|
||||||
pv_crs_unlock(state, STDERR_FILENO);
|
pv_crs_unlock(state, STDERR_FILENO);
|
||||||
|
|
||||||
if (state->crs_lock_fd >= 0) {
|
if (state->crs_lock_fd >= 0) {
|
||||||
close(state->crs_lock_fd);
|
(void) close(state->crs_lock_fd);
|
||||||
/*
|
/*
|
||||||
* We can get away with removing this on exit because all
|
* We can get away with removing this on exit because all
|
||||||
* the other PVs will be finishing at the same sort of time.
|
* the other PVs will be finishing at the same sort of time.
|
||||||
*/
|
*/
|
||||||
remove(state->crs_lock_file);
|
(void) remove(state->crs_lock_file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+47
-16
@@ -28,12 +28,33 @@ void pv_error(pvstate_t state, char *format, ...)
|
|||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
fprintf(stderr, "%s: ", state->program_name);
|
fprintf(stderr, "%s: ", state->program_name);
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
vfprintf(stderr, format, ap);
|
(void) vfprintf(stderr, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return true if we are the foreground process on the terminal, or if we
|
||||||
|
* aren't outputting to a terminal; false otherwise.
|
||||||
|
*/
|
||||||
|
bool pv_in_foreground(void)
|
||||||
|
{
|
||||||
|
pid_t our_process_group;
|
||||||
|
pid_t tty_process_group;
|
||||||
|
|
||||||
|
if (0 == isatty(STDERR_FILENO))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
our_process_group = getpgrp();
|
||||||
|
tty_process_group = tcgetpgrp(STDERR_FILENO);
|
||||||
|
if (our_process_group == tty_process_group)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill in *width and *height with the current terminal size,
|
* Fill in *width and *height with the current terminal size,
|
||||||
* if possible.
|
* if possible.
|
||||||
@@ -43,7 +64,7 @@ void pv_screensize(unsigned int *width, unsigned int *height)
|
|||||||
#ifdef TIOCGWINSZ
|
#ifdef TIOCGWINSZ
|
||||||
struct winsize wsz;
|
struct winsize wsz;
|
||||||
|
|
||||||
if (isatty(STDERR_FILENO)) {
|
if (0 != isatty(STDERR_FILENO)) {
|
||||||
if (0 == ioctl(STDERR_FILENO, TIOCGWINSZ, &wsz)) {
|
if (0 == ioctl(STDERR_FILENO, TIOCGWINSZ, &wsz)) {
|
||||||
*width = wsz.ws_col;
|
*width = wsz.ws_col;
|
||||||
*height = wsz.ws_row;
|
*height = wsz.ws_row;
|
||||||
@@ -213,7 +234,11 @@ static void pv__sizestr(char *buffer, int bufsize, char *format,
|
|||||||
str_disp, si_prefix, suffix);
|
str_disp, si_prefix, suffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(buffer, bufsize, format, sizestr_buffer);
|
snprintf(buffer, bufsize, format, sizestr_buffer);
|
||||||
|
#else
|
||||||
|
sprintf(buffer, format, sizestr_buffer);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -244,8 +269,8 @@ static void pv__format_init(pvstate_t state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
formatstr =
|
formatstr =
|
||||||
state->format_string ? state->
|
state->format_string ? state->format_string : state->
|
||||||
format_string : state->default_format;
|
default_format;
|
||||||
|
|
||||||
state->components_used = 0;
|
state->components_used = 0;
|
||||||
|
|
||||||
@@ -274,7 +299,7 @@ static void pv__format_init(pvstate_t state)
|
|||||||
for (strpos = 0; formatstr[strpos] != 0 && segment < 99;
|
for (strpos = 0; formatstr[strpos] != 0 && segment < 99;
|
||||||
strpos++, segment++) {
|
strpos++, segment++) {
|
||||||
if ('%' == formatstr[strpos]) {
|
if ('%' == formatstr[strpos]) {
|
||||||
int num;
|
unsigned int num;
|
||||||
strpos++;
|
strpos++;
|
||||||
num = 0;
|
num = 0;
|
||||||
while (isdigit(formatstr[strpos])) {
|
while (isdigit(formatstr[strpos])) {
|
||||||
@@ -470,6 +495,7 @@ static char *pv__format(pvstate_t state,
|
|||||||
* update or if the average rate display is enabled. Otherwise it's
|
* update or if the average rate display is enabled. Otherwise it's
|
||||||
* not worth the extra CPU cycles.
|
* not worth the extra CPU cycles.
|
||||||
*/
|
*/
|
||||||
|
average_rate = 0;
|
||||||
if ((bytes_since_last < 0)
|
if ((bytes_since_last < 0)
|
||||||
|| ((state->components_used & PV_DISPLAY_AVERAGERATE) != 0)) {
|
|| ((state->components_used & PV_DISPLAY_AVERAGERATE) != 0)) {
|
||||||
/* Sanity check to avoid division by zero */
|
/* Sanity check to avoid division by zero */
|
||||||
@@ -682,7 +708,7 @@ static char *pv__format(pvstate_t state,
|
|||||||
* ETA used to be.
|
* ETA used to be.
|
||||||
*/
|
*/
|
||||||
if (bytes_since_last < 0) {
|
if (bytes_since_last < 0) {
|
||||||
int i;
|
unsigned int i;
|
||||||
for (i = 0; i < sizeof(state->str_eta)
|
for (i = 0; i < sizeof(state->str_eta)
|
||||||
&& state->str_eta[i] != 0; i++) {
|
&& state->str_eta[i] != 0; i++) {
|
||||||
state->str_eta[i] = ' ';
|
state->str_eta[i] = ' ';
|
||||||
@@ -744,7 +770,7 @@ static char *pv__format(pvstate_t state,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!show_eta) {
|
if (!show_eta) {
|
||||||
int i;
|
unsigned int i;
|
||||||
for (i = 0; i < sizeof(state->str_fineta)
|
for (i = 0; i < sizeof(state->str_fineta)
|
||||||
&& state->str_fineta[i] != 0; i++) {
|
&& state->str_fineta[i] != 0; i++) {
|
||||||
state->str_fineta[i] = ' ';
|
state->str_fineta[i] = ' ';
|
||||||
@@ -796,7 +822,7 @@ static char *pv__format(pvstate_t state,
|
|||||||
available_width = 0;
|
available_width = 0;
|
||||||
|
|
||||||
if (available_width >
|
if (available_width >
|
||||||
sizeof(state->str_progress) - 16)
|
(int) (sizeof(state->str_progress)) - 16)
|
||||||
available_width =
|
available_width =
|
||||||
sizeof(state->str_progress) - 16;
|
sizeof(state->str_progress) - 16;
|
||||||
|
|
||||||
@@ -826,7 +852,7 @@ static char *pv__format(pvstate_t state,
|
|||||||
available_width = 0;
|
available_width = 0;
|
||||||
|
|
||||||
if (available_width >
|
if (available_width >
|
||||||
sizeof(state->str_progress) - 16)
|
(int) (sizeof(state->str_progress)) - 16)
|
||||||
available_width =
|
available_width =
|
||||||
sizeof(state->str_progress) - 16;
|
sizeof(state->str_progress) - 16;
|
||||||
|
|
||||||
@@ -882,7 +908,8 @@ static char *pv__format(pvstate_t state,
|
|||||||
if (segment_length < 1)
|
if (segment_length < 1)
|
||||||
break;
|
break;
|
||||||
/* Skip segment if it would make the display too wide */
|
/* Skip segment if it would make the display too wide */
|
||||||
if (segment_length + display_string_length > state->width)
|
if (segment_length + display_string_length >
|
||||||
|
(int) (state->width))
|
||||||
break;
|
break;
|
||||||
strncat(state->display_buffer,
|
strncat(state->display_buffer,
|
||||||
state->format[segment].string, segment_length);
|
state->format[segment].string, segment_length);
|
||||||
@@ -895,7 +922,7 @@ static char *pv__format(pvstate_t state,
|
|||||||
*/
|
*/
|
||||||
output_length = strlen(state->display_buffer);
|
output_length = strlen(state->display_buffer);
|
||||||
if ((output_length < state->prev_length)
|
if ((output_length < state->prev_length)
|
||||||
&& (state->width >= state->prev_width)) {
|
&& ((int) (state->width) >= state->prev_width)) {
|
||||||
char spaces[32];
|
char spaces[32];
|
||||||
int spaces_to_add;
|
int spaces_to_add;
|
||||||
spaces_to_add = state->prev_length - output_length;
|
spaces_to_add = state->prev_length - output_length;
|
||||||
@@ -954,12 +981,16 @@ void pv_display(pvstate_t state, long double esec, long long sl,
|
|||||||
if (state->numeric) {
|
if (state->numeric) {
|
||||||
write(STDERR_FILENO, display, strlen(display));
|
write(STDERR_FILENO, display, strlen(display));
|
||||||
} else if (state->cursor) {
|
} else if (state->cursor) {
|
||||||
pv_crs_update(state, display);
|
if (pv_in_foreground()) {
|
||||||
state->display_visible = 1;
|
pv_crs_update(state, display);
|
||||||
|
state->display_visible = true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
write(STDERR_FILENO, display, strlen(display));
|
if (pv_in_foreground()) {
|
||||||
write(STDERR_FILENO, "\r", 1);
|
write(STDERR_FILENO, display, strlen(display));
|
||||||
state->display_visible = 1;
|
write(STDERR_FILENO, "\r", 1);
|
||||||
|
state->display_visible = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
debug("%s: [%s]", "display", display);
|
debug("%s: [%s]", "display", display);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ unsigned long long pv_calc_total_size(pvstate_t state)
|
|||||||
|
|
||||||
total = 0;
|
total = 0;
|
||||||
rc = 0;
|
rc = 0;
|
||||||
|
memset(&sb, 0, sizeof(sb));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No files specified - check stdin.
|
* No files specified - check stdin.
|
||||||
|
|||||||
+24
-14
@@ -166,7 +166,8 @@ int pv_main_loop(pvstate_t state)
|
|||||||
* try to write more than we're allowed to.
|
* try to write more than we're allowed to.
|
||||||
*/
|
*/
|
||||||
if ((0 < state->size) && (state->stop_at_size)) {
|
if ((0 < state->size) && (state->stop_at_size)) {
|
||||||
if ((state->size < (total_written + cansend))
|
if (((long) (state->size) <
|
||||||
|
(total_written + cansend))
|
||||||
|| ((0 == cansend)
|
|| ((0 == cansend)
|
||||||
&& (0 == state->rate_limit))) {
|
&& (0 == state->rate_limit))) {
|
||||||
cansend = state->size - total_written;
|
cansend = state->size - total_written;
|
||||||
@@ -505,7 +506,7 @@ int pv_watchpid_loop(pvstate_t state)
|
|||||||
struct pvstate_s *state_array = NULL;
|
struct pvstate_s *state_array = NULL;
|
||||||
int array_length = 0;
|
int array_length = 0;
|
||||||
int fd_to_idx[FD_SETSIZE] = { 0, };
|
int fd_to_idx[FD_SETSIZE] = { 0, };
|
||||||
struct timeval next_update, cur_time, next_remotecheck;
|
struct timeval next_update, cur_time;
|
||||||
int idx;
|
int idx;
|
||||||
int prev_displayed_lines, blank_lines;
|
int prev_displayed_lines, blank_lines;
|
||||||
int first_pass = 1;
|
int first_pass = 1;
|
||||||
@@ -532,19 +533,31 @@ int pv_watchpid_loop(pvstate_t state)
|
|||||||
* it's not present.
|
* it's not present.
|
||||||
*/
|
*/
|
||||||
original_format_string =
|
original_format_string =
|
||||||
state->format_string ? state->
|
state->format_string ? state->format_string : state->
|
||||||
format_string : state->default_format;
|
default_format;
|
||||||
if (NULL == strstr(original_format_string, "%N")) {
|
if (NULL == strstr(original_format_string, "%N")) {
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(new_format_string, sizeof(new_format_string) - 1,
|
snprintf(new_format_string, sizeof(new_format_string) - 1,
|
||||||
"%%N %s", original_format_string);
|
#else
|
||||||
|
sprintf(new_format_string,
|
||||||
|
#endif
|
||||||
|
"%%N %s", original_format_string);
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(new_format_string, sizeof(new_format_string) - 1,
|
snprintf(new_format_string, sizeof(new_format_string) - 1,
|
||||||
"%s", original_format_string);
|
#else
|
||||||
|
sprintf(new_format_string,
|
||||||
|
#endif
|
||||||
|
"%s", original_format_string);
|
||||||
}
|
}
|
||||||
state_copy.format_string = NULL;
|
state_copy.format_string = NULL;
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(state_copy.default_format,
|
snprintf(state_copy.default_format,
|
||||||
sizeof(state_copy.default_format) - 1, "%s",
|
sizeof(state_copy.default_format) - 1,
|
||||||
new_format_string);
|
#else
|
||||||
|
sprintf(state_copy.default_format,
|
||||||
|
#endif
|
||||||
|
"%.510s", new_format_string);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get things ready for the main loop.
|
* Get things ready for the main loop.
|
||||||
@@ -552,9 +565,6 @@ int pv_watchpid_loop(pvstate_t state)
|
|||||||
|
|
||||||
gettimeofday(&cur_time, NULL);
|
gettimeofday(&cur_time, NULL);
|
||||||
|
|
||||||
next_remotecheck.tv_sec = cur_time.tv_sec;
|
|
||||||
next_remotecheck.tv_usec = cur_time.tv_usec;
|
|
||||||
|
|
||||||
next_update.tv_sec = cur_time.tv_sec;
|
next_update.tv_sec = cur_time.tv_sec;
|
||||||
next_update.tv_usec = cur_time.tv_usec;
|
next_update.tv_usec = cur_time.tv_usec;
|
||||||
pv_timeval_add_usec(&next_update,
|
pv_timeval_add_usec(&next_update,
|
||||||
@@ -649,7 +659,7 @@ int pv_watchpid_loop(pvstate_t state)
|
|||||||
struct timeval init_time;
|
struct timeval init_time;
|
||||||
long double elapsed;
|
long double elapsed;
|
||||||
|
|
||||||
if (displayed_lines >= state->height)
|
if (displayed_lines >= (int) (state->height))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
idx = fd_to_idx[fd];
|
idx = fd_to_idx[fd];
|
||||||
@@ -733,7 +743,7 @@ int pv_watchpid_loop(pvstate_t state)
|
|||||||
debug("%s: %d", "adding blank lines", blank_lines);
|
debug("%s: %d", "adding blank lines", blank_lines);
|
||||||
|
|
||||||
while (blank_lines > 0) {
|
while (blank_lines > 0) {
|
||||||
int x;
|
unsigned int x;
|
||||||
if (displayed_lines > 0)
|
if (displayed_lines > 0)
|
||||||
write(STDERR_FILENO, "\n", 1);
|
write(STDERR_FILENO, "\n", 1);
|
||||||
for (x = 0; x < state->width; x++)
|
for (x = 0; x < state->width; x++)
|
||||||
@@ -756,7 +766,7 @@ int pv_watchpid_loop(pvstate_t state)
|
|||||||
*/
|
*/
|
||||||
blank_lines = prev_displayed_lines;
|
blank_lines = prev_displayed_lines;
|
||||||
while (blank_lines > 0) {
|
while (blank_lines > 0) {
|
||||||
int x;
|
unsigned int x;
|
||||||
for (x = 0; x < state->width; x++)
|
for (x = 0; x < state->width; x++)
|
||||||
write(STDERR_FILENO, " ", 1);
|
write(STDERR_FILENO, " ", 1);
|
||||||
write(STDERR_FILENO, "\r", 1);
|
write(STDERR_FILENO, "\r", 1);
|
||||||
|
|||||||
+24
-23
@@ -13,31 +13,31 @@
|
|||||||
* including <ctype.h> causes weird versioned glibc dependencies on certain
|
* including <ctype.h> causes weird versioned glibc dependencies on certain
|
||||||
* Red Hat systems, complicating package management.
|
* Red Hat systems, complicating package management.
|
||||||
*/
|
*/
|
||||||
static int pv__isdigit(char c)
|
static bool pv__isdigit(char c)
|
||||||
{
|
{
|
||||||
return ((c >= '0') && (c <= '9'));
|
return ((c >= '0') && (c <= '9')) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the numeric value of "str", as a long long.
|
* Return the numeric value of "str", as an unsigned long long.
|
||||||
*/
|
*/
|
||||||
long long pv_getnum_ll(const char *str)
|
unsigned long long pv_getnum_ull(const char *str)
|
||||||
{
|
{
|
||||||
long long n = 0;
|
unsigned long long n = 0;
|
||||||
long long decimal = 0;
|
unsigned long long decimal = 0;
|
||||||
int decdivisor = 1;
|
unsigned int decdivisor = 1;
|
||||||
int shift = 0;
|
unsigned int shift = 0;
|
||||||
|
|
||||||
if (0 == str)
|
if (NULL == str)
|
||||||
return n;
|
return n;
|
||||||
|
|
||||||
while (str[0] != 0 && (!pv__isdigit(str[0])))
|
while (str[0] != '\0' && (!pv__isdigit(str[0])))
|
||||||
str++;
|
str++;
|
||||||
|
|
||||||
for (; pv__isdigit(str[0]); str++) {
|
for (; pv__isdigit(str[0]); str++) {
|
||||||
n = n * 10;
|
n = n * 10;
|
||||||
n += (str[0] - '0');
|
n += (unsigned long long) (str[0] - '0');
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -48,7 +48,8 @@ long long pv_getnum_ll(const char *str)
|
|||||||
for (; pv__isdigit(str[0]); str++) {
|
for (; pv__isdigit(str[0]); str++) {
|
||||||
if (decdivisor < 10000) {
|
if (decdivisor < 10000) {
|
||||||
decimal = decimal * 10;
|
decimal = decimal * 10;
|
||||||
decimal += (str[0] - '0');
|
decimal +=
|
||||||
|
(unsigned long long) (str[0] - '0');
|
||||||
decdivisor = decdivisor * 10;
|
decdivisor = decdivisor * 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -58,7 +59,7 @@ long long pv_getnum_ll(const char *str)
|
|||||||
* Parse any units given (K=KiB=*1024, M=MiB=1024KiB, G=GiB=1024MiB,
|
* Parse any units given (K=KiB=*1024, M=MiB=1024KiB, G=GiB=1024MiB,
|
||||||
* T=TiB=1024GiB).
|
* T=TiB=1024GiB).
|
||||||
*/
|
*/
|
||||||
if (str[0]) {
|
if (str[0] != '\0') {
|
||||||
while ((' ' == str[0]) || ('\t' == str[0]))
|
while ((' ' == str[0]) || ('\t' == str[0]))
|
||||||
str++;
|
str++;
|
||||||
switch (str[0]) {
|
switch (str[0]) {
|
||||||
@@ -89,7 +90,7 @@ long long pv_getnum_ll(const char *str)
|
|||||||
* more than 30 at a time to avoid overflows.
|
* more than 30 at a time to avoid overflows.
|
||||||
*/
|
*/
|
||||||
while (shift > 0) {
|
while (shift > 0) {
|
||||||
int shiftby;
|
unsigned int shiftby;
|
||||||
|
|
||||||
shiftby = shift;
|
shiftby = shift;
|
||||||
if (shiftby > 30)
|
if (shiftby > 30)
|
||||||
@@ -118,15 +119,15 @@ double pv_getnum_d(const char *str)
|
|||||||
double n = 0.0;
|
double n = 0.0;
|
||||||
double step = 1;
|
double step = 1;
|
||||||
|
|
||||||
if (0 == str)
|
if (NULL == str)
|
||||||
return n;
|
return n;
|
||||||
|
|
||||||
while (str[0] != 0 && (!pv__isdigit(str[0])))
|
while (str[0] != '\0' && (!pv__isdigit(str[0])))
|
||||||
str++;
|
str++;
|
||||||
|
|
||||||
for (; pv__isdigit(str[0]); str++) {
|
for (; pv__isdigit(str[0]); str++) {
|
||||||
n = n * 10;
|
n = n * 10;
|
||||||
n += (str[0] - '0');
|
n += (double) (str[0] - '0');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((str[0] != '.') && (str[0] != ','))
|
if ((str[0] != '.') && (str[0] != ','))
|
||||||
@@ -136,7 +137,7 @@ double pv_getnum_d(const char *str)
|
|||||||
|
|
||||||
for (; pv__isdigit(str[0]) && step < 1000000; str++) {
|
for (; pv__isdigit(str[0]) && step < 1000000; str++) {
|
||||||
step = step * 10;
|
step = step * 10;
|
||||||
n += (str[0] - '0') / step;
|
n += ((double) (str[0] - '0')) / step;
|
||||||
}
|
}
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
@@ -144,11 +145,11 @@ double pv_getnum_d(const char *str)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the numeric value of "str", as an int.
|
* Return the numeric value of "str", as an unsigned int.
|
||||||
*/
|
*/
|
||||||
int pv_getnum_i(const char *str)
|
unsigned int pv_getnum_ui(const char *str)
|
||||||
{
|
{
|
||||||
return (int) pv_getnum_ll(str);
|
return (unsigned int) pv_getnum_ull(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -176,7 +177,7 @@ int pv_getnum_check(const char *str, pv_numtype_t type)
|
|||||||
for (; pv__isdigit(str[0]); str++);
|
for (; pv__isdigit(str[0]); str++);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 == str[0])
|
if ('\0' == str[0])
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -202,7 +203,7 @@ int pv_getnum_check(const char *str, pv_numtype_t type)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str[0] != 0)
|
if (str[0] != '\0')
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
+11
-6
@@ -25,7 +25,8 @@ static pvstate_t pv_sig_state = NULL;
|
|||||||
* subsequent SIGCONT we can try writing to the terminal again, in case we
|
* subsequent SIGCONT we can try writing to the terminal again, in case we
|
||||||
* get backgrounded and later get foregrounded again.
|
* get backgrounded and later get foregrounded again.
|
||||||
*/
|
*/
|
||||||
static void pv_sig_ttou(int s)
|
static void pv_sig_ttou( __attribute__ ((unused))
|
||||||
|
int s)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@@ -45,7 +46,8 @@ static void pv_sig_ttou(int s)
|
|||||||
* Handle SIGTSTP (stop typed at tty) by storing the time the signal
|
* Handle SIGTSTP (stop typed at tty) by storing the time the signal
|
||||||
* happened for later use by pv_sig_cont(), and then stopping the process.
|
* happened for later use by pv_sig_cont(), and then stopping the process.
|
||||||
*/
|
*/
|
||||||
static void pv_sig_tstp(int s)
|
static void pv_sig_tstp( __attribute__ ((unused))
|
||||||
|
int s)
|
||||||
{
|
{
|
||||||
gettimeofday(&(pv_sig_state->pv_sig_tstp_time), NULL);
|
gettimeofday(&(pv_sig_state->pv_sig_tstp_time), NULL);
|
||||||
raise(SIGSTOP);
|
raise(SIGSTOP);
|
||||||
@@ -57,7 +59,8 @@ static void pv_sig_tstp(int s)
|
|||||||
* last SIGTSTP to the elapsed time offset, and by trying to write to the
|
* last SIGTSTP to the elapsed time offset, and by trying to write to the
|
||||||
* terminal again (by replacing the /dev/null stderr with the old stderr).
|
* terminal again (by replacing the /dev/null stderr with the old stderr).
|
||||||
*/
|
*/
|
||||||
static void pv_sig_cont(int s)
|
static void pv_sig_cont( __attribute__ ((unused))
|
||||||
|
int s)
|
||||||
{
|
{
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct termios t;
|
struct termios t;
|
||||||
@@ -111,7 +114,8 @@ static void pv_sig_cont(int s)
|
|||||||
/*
|
/*
|
||||||
* Handle SIGWINCH (window size changed) by setting a flag.
|
* Handle SIGWINCH (window size changed) by setting a flag.
|
||||||
*/
|
*/
|
||||||
static void pv_sig_winch(int s)
|
static void pv_sig_winch( __attribute__ ((unused))
|
||||||
|
int s)
|
||||||
{
|
{
|
||||||
pv_sig_state->pv_sig_newsize = 1;
|
pv_sig_state->pv_sig_newsize = 1;
|
||||||
}
|
}
|
||||||
@@ -120,7 +124,8 @@ static void pv_sig_winch(int s)
|
|||||||
/*
|
/*
|
||||||
* Handle termination signals by setting the abort flag.
|
* Handle termination signals by setting the abort flag.
|
||||||
*/
|
*/
|
||||||
static void pv_sig_term(int s)
|
static void pv_sig_term( __attribute__ ((unused))
|
||||||
|
int s)
|
||||||
{
|
{
|
||||||
pv_sig_state->pv_sig_abort = 1;
|
pv_sig_state->pv_sig_abort = 1;
|
||||||
}
|
}
|
||||||
@@ -211,7 +216,7 @@ void pv_sig_init(pvstate_t state)
|
|||||||
/*
|
/*
|
||||||
* Shut down signal handling.
|
* Shut down signal handling.
|
||||||
*/
|
*/
|
||||||
void pv_sig_fini(pvstate_t state)
|
void pv_sig_fini( __attribute__ ((unused)) pvstate_t state)
|
||||||
{
|
{
|
||||||
sigaction(SIGPIPE, &(pv_sig_state->pv_sig_old_sigpipe), NULL);
|
sigaction(SIGPIPE, &(pv_sig_state->pv_sig_old_sigpipe), NULL);
|
||||||
sigaction(SIGTTOU, &(pv_sig_state->pv_sig_old_sigttou), NULL);
|
sigaction(SIGTTOU, &(pv_sig_state->pv_sig_old_sigttou), NULL);
|
||||||
|
|||||||
+28
-22
@@ -17,8 +17,8 @@ pvstate_t pv_state_alloc(const char *program_name)
|
|||||||
pvstate_t state;
|
pvstate_t state;
|
||||||
|
|
||||||
state = calloc(1, sizeof(*state));
|
state = calloc(1, sizeof(*state));
|
||||||
if (0 == state)
|
if (NULL == state)
|
||||||
return 0;
|
return NULL;
|
||||||
|
|
||||||
state->program_name = program_name;
|
state->program_name = program_name;
|
||||||
state->watch_pid = 0;
|
state->watch_pid = 0;
|
||||||
@@ -34,7 +34,7 @@ pvstate_t pv_state_alloc(const char *program_name)
|
|||||||
#ifdef HAVE_SPLICE
|
#ifdef HAVE_SPLICE
|
||||||
state->splice_failed_fd = -1;
|
state->splice_failed_fd = -1;
|
||||||
#endif /* HAVE_SPLICE */
|
#endif /* HAVE_SPLICE */
|
||||||
state->display_visible = 0;
|
state->display_visible = false;
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
@@ -65,20 +65,20 @@ void pv_state_free(pvstate_t state)
|
|||||||
/*
|
/*
|
||||||
* Set the formatting string, given a set of old-style formatting options.
|
* Set the formatting string, given a set of old-style formatting options.
|
||||||
*/
|
*/
|
||||||
void pv_state_set_format(pvstate_t state, unsigned char progress,
|
void pv_state_set_format(pvstate_t state, bool progress,
|
||||||
unsigned char timer, unsigned char eta,
|
bool timer, bool eta,
|
||||||
unsigned char fineta, unsigned char rate,
|
bool fineta, bool rate,
|
||||||
unsigned char average_rate, unsigned char bytes,
|
bool average_rate, bool bytes,
|
||||||
unsigned char bufpercent,
|
bool bufpercent,
|
||||||
unsigned int lastwritten, const char *name)
|
unsigned int lastwritten, const char *name)
|
||||||
{
|
{
|
||||||
#define PV_ADDFORMAT(x,y) if (x) { \
|
#define PV_ADDFORMAT(x,y) if (x) { \
|
||||||
if (state->default_format[0] != 0) \
|
if (state->default_format[0] != '\0') \
|
||||||
strcat(state->default_format, " "); \
|
strcat(state->default_format, " "); \
|
||||||
strcat(state->default_format, y); \
|
strcat(state->default_format, y); \
|
||||||
}
|
}
|
||||||
|
|
||||||
state->default_format[0] = 0;
|
state->default_format[0] = '\0';
|
||||||
PV_ADDFORMAT(name, "%N");
|
PV_ADDFORMAT(name, "%N");
|
||||||
PV_ADDFORMAT(bytes, "%b");
|
PV_ADDFORMAT(bytes, "%b");
|
||||||
PV_ADDFORMAT(bufpercent, "%T");
|
PV_ADDFORMAT(bufpercent, "%T");
|
||||||
@@ -90,8 +90,14 @@ void pv_state_set_format(pvstate_t state, unsigned char progress,
|
|||||||
PV_ADDFORMAT(fineta, "%I");
|
PV_ADDFORMAT(fineta, "%I");
|
||||||
if (lastwritten > 0) {
|
if (lastwritten > 0) {
|
||||||
char buf[16];
|
char buf[16];
|
||||||
sprintf(buf, "%%%uA", lastwritten);
|
memset(buf, 0, sizeof(buf));
|
||||||
PV_ADDFORMAT(lastwritten, buf);
|
#ifdef HAVE_SNPRINTF
|
||||||
|
(void) snprintf(buf, sizeof(buf) - 1, "%%%uA",
|
||||||
|
lastwritten);
|
||||||
|
#else
|
||||||
|
(void) sprintf(buf, "%%%uA", lastwritten);
|
||||||
|
#endif
|
||||||
|
PV_ADDFORMAT(lastwritten > 0, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
state->name = name;
|
state->name = name;
|
||||||
@@ -99,22 +105,22 @@ void pv_state_set_format(pvstate_t state, unsigned char progress,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void pv_state_force_set(pvstate_t state, unsigned char val)
|
void pv_state_force_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->force = val;
|
state->force = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pv_state_cursor_set(pvstate_t state, unsigned char val)
|
void pv_state_cursor_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->cursor = val;
|
state->cursor = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_numeric_set(pvstate_t state, unsigned char val)
|
void pv_state_numeric_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->numeric = val;
|
state->numeric = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_wait_set(pvstate_t state, unsigned char val)
|
void pv_state_wait_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->wait = val;
|
state->wait = val;
|
||||||
};
|
};
|
||||||
@@ -124,27 +130,27 @@ void pv_state_delay_start_set(pvstate_t state, double val)
|
|||||||
state->delay_start = val;
|
state->delay_start = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_linemode_set(pvstate_t state, unsigned char val)
|
void pv_state_linemode_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->linemode = val;
|
state->linemode = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_null_set(pvstate_t state, unsigned char val)
|
void pv_state_null_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->null = val;
|
state->null = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_no_op_set(pvstate_t state, unsigned char val)
|
void pv_state_no_op_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->no_op = val;
|
state->no_op = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_skip_errors_set(pvstate_t state, unsigned char val)
|
void pv_state_skip_errors_set(pvstate_t state, unsigned int val)
|
||||||
{
|
{
|
||||||
state->skip_errors = val;
|
state->skip_errors = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_stop_at_size_set(pvstate_t state, unsigned char val)
|
void pv_state_stop_at_size_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->stop_at_size = val;
|
state->stop_at_size = val;
|
||||||
};
|
};
|
||||||
@@ -160,7 +166,7 @@ void pv_state_target_buffer_size_set(pvstate_t state,
|
|||||||
state->target_buffer_size = val;
|
state->target_buffer_size = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
void pv_state_no_splice_set(pvstate_t state, unsigned char val)
|
void pv_state_no_splice_set(pvstate_t state, bool val)
|
||||||
{
|
{
|
||||||
state->no_splice = val;
|
state->no_splice = val;
|
||||||
};
|
};
|
||||||
|
|||||||
+13
-14
@@ -160,19 +160,20 @@ static ssize_t pv__transfer_write_repeated(int fd, void *buf, size_t count)
|
|||||||
* out of time - also on our gettimeofday() check.
|
* out of time - also on our gettimeofday() check.
|
||||||
*/
|
*/
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
|
# if 0 /* disabled after 1.6.0 - see comment above */
|
||||||
fd_set writefds;
|
fd_set writefds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
# endif
|
||||||
tv.tv_sec = 0;
|
|
||||||
tv.tv_usec = 0;
|
|
||||||
FD_ZERO(&writefds);
|
|
||||||
FD_SET(fd, &writefds);
|
|
||||||
|
|
||||||
debug("%s %d: %s (%ld %s, %ld %s)", "fd", fd,
|
debug("%s %d: %s (%ld %s, %ld %s)", "fd", fd,
|
||||||
"trying another write after partial buffer flush",
|
"trying another write after partial buffer flush",
|
||||||
nwritten, "written", count, "remaining");
|
nwritten, "written", count, "remaining");
|
||||||
|
|
||||||
# if 0 /* disabled after 1.6.0 - see comment above */
|
# if 0 /* disabled after 1.6.0 - see comment above */
|
||||||
|
tv.tv_sec = 0;
|
||||||
|
tv.tv_usec = 0;
|
||||||
|
FD_ZERO(&writefds);
|
||||||
|
FD_SET(fd, &writefds);
|
||||||
if (select(fd + 1, NULL, &writefds, NULL, &tv) < 1)
|
if (select(fd + 1, NULL, &writefds, NULL, &tv) < 1)
|
||||||
break;
|
break;
|
||||||
# endif
|
# endif
|
||||||
@@ -211,8 +212,7 @@ static ssize_t pv__transfer_write_repeated(int fd, void *buf, size_t count)
|
|||||||
*/
|
*/
|
||||||
static int pv__transfer_read(pvstate_t state, int fd,
|
static int pv__transfer_read(pvstate_t state, int fd,
|
||||||
int *eof_in, int *eof_out,
|
int *eof_in, int *eof_out,
|
||||||
unsigned long long allowed,
|
unsigned long long allowed)
|
||||||
long *lineswritten)
|
|
||||||
{
|
{
|
||||||
unsigned long bytes_can_read;
|
unsigned long bytes_can_read;
|
||||||
unsigned long amount_to_skip;
|
unsigned long amount_to_skip;
|
||||||
@@ -484,7 +484,7 @@ static int pv__transfer_read(pvstate_t state, int fd,
|
|||||||
* On error, sets *eof_out to 1, sets state->written to -1, and updates
|
* On error, sets *eof_out to 1, sets state->written to -1, and updates
|
||||||
* state->exit_status.
|
* state->exit_status.
|
||||||
*/
|
*/
|
||||||
static int pv__transfer_write(pvstate_t state, int fd,
|
static int pv__transfer_write(pvstate_t state,
|
||||||
int *eof_in, int *eof_out,
|
int *eof_in, int *eof_out,
|
||||||
long *lineswritten)
|
long *lineswritten)
|
||||||
{
|
{
|
||||||
@@ -531,8 +531,8 @@ static int pv__transfer_write(pvstate_t state, int fd,
|
|||||||
for (ptr++;
|
for (ptr++;
|
||||||
ptr -
|
ptr -
|
||||||
(char *) state->transfer_buffer -
|
(char *) state->transfer_buffer -
|
||||||
state->write_position < nwritten;
|
state->write_position <
|
||||||
ptr++) {
|
(size_t) nwritten; ptr++) {
|
||||||
if (*ptr == '\0')
|
if (*ptr == '\0')
|
||||||
++lines;
|
++lines;
|
||||||
}
|
}
|
||||||
@@ -738,7 +738,7 @@ long pv_transfer(pvstate_t state, int fd, int *eof_in, int *eof_out,
|
|||||||
*/
|
*/
|
||||||
state->to_write = state->read_position - state->write_position;
|
state->to_write = state->read_position - state->write_position;
|
||||||
if ((state->rate_limit > 0) || (allowed > 0)) {
|
if ((state->rate_limit > 0) || (allowed > 0)) {
|
||||||
if (state->to_write > allowed) {
|
if ((unsigned long long) (state->to_write) > allowed) {
|
||||||
state->to_write = allowed;
|
state->to_write = allowed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -784,8 +784,7 @@ long pv_transfer(pvstate_t state, int fd, int *eof_in, int *eof_out,
|
|||||||
*/
|
*/
|
||||||
if (FD_ISSET(fd, &readfds)) {
|
if (FD_ISSET(fd, &readfds)) {
|
||||||
if (pv__transfer_read
|
if (pv__transfer_read
|
||||||
(state, fd, eof_in, eof_out, allowed,
|
(state, fd, eof_in, eof_out, allowed) == 0)
|
||||||
lineswritten) == 0)
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -831,7 +830,7 @@ long pv_transfer(pvstate_t state, int fd, int *eof_in, int *eof_out,
|
|||||||
&& (state->read_position > state->write_position)
|
&& (state->read_position > state->write_position)
|
||||||
&& (state->to_write > 0)) {
|
&& (state->to_write > 0)) {
|
||||||
if (pv__transfer_write
|
if (pv__transfer_write
|
||||||
(state, fd, eof_in, eof_out, lineswritten) == 0)
|
(state, eof_in, eof_out, lineswritten) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#ifdef MAXIMISE_BUFFER_FILL
|
#ifdef MAXIMISE_BUFFER_FILL
|
||||||
|
|||||||
+30
-9
@@ -52,12 +52,20 @@ int pv_watchfd_info(pvstate_t state, pvwatchfd_t info, int automatic)
|
|||||||
info->watch_pid, strerror(errno));
|
info->watch_pid, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(info->file_fdinfo, sizeof(info->file_fdinfo) - 1,
|
snprintf(info->file_fdinfo, sizeof(info->file_fdinfo) - 1,
|
||||||
"/proc/%u/fdinfo/%d", info->watch_pid, info->watch_fd);
|
#else
|
||||||
|
sprintf(info->file_fdinfo,
|
||||||
|
#endif
|
||||||
|
"/proc/%u/fdinfo/%d", info->watch_pid, info->watch_fd);
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(info->file_fd, sizeof(info->file_fd) - 1,
|
snprintf(info->file_fd, sizeof(info->file_fd) - 1,
|
||||||
"/proc/%u/fd/%d", info->watch_pid, info->watch_fd);
|
#else
|
||||||
|
sprintf(info->file_fd,
|
||||||
|
#endif
|
||||||
|
"/proc/%u/fd/%d", info->watch_pid, info->watch_fd);
|
||||||
|
|
||||||
|
memset(info->file_fdpath, 0, sizeof(info->file_fdpath));
|
||||||
if (readlink
|
if (readlink
|
||||||
(info->file_fd, info->file_fdpath,
|
(info->file_fd, info->file_fdpath,
|
||||||
sizeof(info->file_fdpath) - 1) < 0) {
|
sizeof(info->file_fdpath) - 1) < 0) {
|
||||||
@@ -183,7 +191,11 @@ int pv_watchpid_scanfds(pvstate_t state, pvstate_t pristine,
|
|||||||
struct pvwatchfd_s *info_array = NULL;
|
struct pvwatchfd_s *info_array = NULL;
|
||||||
struct pvstate_s *state_array = NULL;
|
struct pvstate_s *state_array = NULL;
|
||||||
|
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(fd_dir, sizeof(fd_dir) - 1, "/proc/%u/fd", watch_pid);
|
snprintf(fd_dir, sizeof(fd_dir) - 1, "/proc/%u/fd", watch_pid);
|
||||||
|
#else
|
||||||
|
sprintf(fd_dir, "/proc/%u/fd", watch_pid);
|
||||||
|
#endif
|
||||||
dptr = opendir(fd_dir);
|
dptr = opendir(fd_dir);
|
||||||
if (NULL == dptr)
|
if (NULL == dptr)
|
||||||
return 1;
|
return 1;
|
||||||
@@ -362,20 +374,29 @@ void pv_watchpid_setname(pvstate_t state, pvwatchfd_t info)
|
|||||||
|
|
||||||
max_display_length = (state->width / 2) - 6;
|
max_display_length = (state->width / 2) - 6;
|
||||||
if (max_display_length >= path_length) {
|
if (max_display_length >= path_length) {
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(info->display_name,
|
snprintf(info->display_name,
|
||||||
sizeof(info->display_name) - 1, "%4d:%s",
|
sizeof(info->display_name) - 1,
|
||||||
info->watch_fd, info->file_fdpath);
|
#else
|
||||||
|
sprintf(info->display_name,
|
||||||
|
#endif
|
||||||
|
"%4d:%.498s", info->watch_fd, info->file_fdpath);
|
||||||
} else {
|
} else {
|
||||||
int prefix_length, suffix_length;
|
int prefix_length, suffix_length;
|
||||||
|
|
||||||
prefix_length = max_display_length / 4;
|
prefix_length = max_display_length / 4;
|
||||||
suffix_length = max_display_length - prefix_length - 3;
|
suffix_length = max_display_length - prefix_length - 3;
|
||||||
|
|
||||||
|
#ifdef HAVE_SNPRINTF
|
||||||
snprintf(info->display_name,
|
snprintf(info->display_name,
|
||||||
sizeof(info->display_name) - 1, "%4d:%.*s...%.*s",
|
sizeof(info->display_name) - 1,
|
||||||
info->watch_fd, prefix_length, info->file_fdpath,
|
#else
|
||||||
suffix_length,
|
sprintf(info->display_name,
|
||||||
info->file_fdpath + path_length - suffix_length);
|
#endif
|
||||||
|
"%4d:%.*s...%.*s",
|
||||||
|
info->watch_fd, prefix_length, info->file_fdpath,
|
||||||
|
suffix_length,
|
||||||
|
info->file_fdpath + path_length - suffix_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug("%s: %d: [%s]", "set name for fd", info->watch_fd,
|
debug("%s: %d: [%s]", "set name for fd", info->watch_fd,
|
||||||
|
|||||||
Reference in New Issue
Block a user