From e17f64fce70131cc1c1c04d1683dfa97b1c0c695 Mon Sep 17 00:00:00 2001 From: Andrew Wood Date: Sat, 7 Mar 2026 22:23:10 +0000 Subject: [PATCH] Allow "--size @dir" to read the size of all files under "dir" (#179). --- Makefile.am | 1 + configure.ac | 2 + docs/pv.1 | 14 ++- docs/pv.1.md | 10 +- po/cs.po | 54 +++++----- po/de.po | 60 +++++------ po/es.po | 54 +++++----- po/fi.po | 54 +++++----- po/fr.po | 60 +++++------ po/ka.po | 54 +++++----- po/pl.po | 54 +++++----- po/pt.po | 54 +++++----- po/ru.po | 54 +++++----- po/tr.po | 54 +++++----- src/include/config.h.in | 110 +++++++++++--------- src/main/options.c | 50 +++++++++ tests/Modifiers_-_--size_from_dir_size.test | 67 ++++++++++++ 17 files changed, 481 insertions(+), 325 deletions(-) create mode 100755 tests/Modifiers_-_--size_from_dir_size.test diff --git a/Makefile.am b/Makefile.am index 5f00e4c..936b152 100644 --- a/Makefile.am +++ b/Makefile.am @@ -93,6 +93,7 @@ tests/Modifiers_-_--force.test \ tests/Modifiers_-_--interval.test \ tests/Modifiers_-_--line-mode.test \ tests/Modifiers_-_--size_from_file_size.test \ +tests/Modifiers_-_--size_from_dir_size.test \ tests/Modifiers_-_--size.test \ tests/Modifiers_-_--sync.test \ tests/Sparse_-_Basic.test \ diff --git a/configure.ac b/configure.ac index 7e76e34..2e01b38 100644 --- a/configure.ac +++ b/configure.ac @@ -31,6 +31,7 @@ AC_CHECK_FUNCS([fpathconf sysconf posix_memalign posix_fadvise]) AC_CHECK_FUNCS([nanosleep]) AC_CHECK_FUNCS([setitimer]) AC_CHECK_FUNCS([setproctitle]) +AC_CHECK_FUNCS([nftw]) AC_CHECK_HEADERS([getopt.h]) AC_CHECK_HEADERS([limits.h]) AC_CHECK_HEADERS([langinfo.h]) @@ -40,6 +41,7 @@ AC_CHECK_HEADERS([libgen.h]) AC_CHECK_HEADERS([sys/ioctl.h]) AC_CHECK_HEADERS([libintl.h locale.h]) AC_CHECK_HEADERS([sys/sysmacros.h]) +AC_CHECK_HEADERS([ftw.h]) AC_CHECK_MEMBERS([struct stat.st_blksize]) AC_CHECK_DECLS([SA_SIGINFO], [], [], [[#include ]]) diff --git a/docs/pv.1 b/docs/pv.1 index 6d6f6af..fe41734 100644 --- a/docs/pv.1 +++ b/docs/pv.1 @@ -162,7 +162,8 @@ If \*(lq\fB\-\-si\fR\*(rq appears before this option, suffixes will denote kilobytes (*1000), megabytes, and so on instead. .IP If \fISIZE\fR starts with \*(lq\fB@\fR\*(rq, the size of file whose name -follows the @ will be used. +follows the @ will be used; if that is a directory, the size of all files +under it will be used, like \*(lq\fBdu\~\-\-apparent\-size\~\-b\fR\*(rq. .TP .B \-g, \-\-gauge If the progress bar is shown but the size is not known, then instead of @@ -636,6 +637,17 @@ tar cf \- directory/ \e .EE .in .PP +An alternative way of doing the same thing: +.PP +.in +4 +.EX +tar cf \- directory/ \e +| pv \-\-size @directory/ \e +| gzip \-9 \e +> out.tar.gz +.EE +.in +.PP Taking an image of a disk, skipping errors: .PP .in +4 diff --git a/docs/pv.1.md b/docs/pv.1.md index 763cd35..0181e41 100644 --- a/docs/pv.1.md +++ b/docs/pv.1.md @@ -164,7 +164,8 @@ are explicitly switched on will be shown. denote kilobytes (\*1000), megabytes, and so on instead. If *SIZE* starts with "**@**", the size of file whose name follows - the @ will be used. + the @ will be used; if that is a directory, the size of all files + under it will be used, like "**du \--apparent-size -b**". **-g, \--gauge** @@ -632,6 +633,13 @@ To watch the progress of creating a tar.gz archive: | gzip -9 \ > out.tar.gz +An alternative way of doing the same thing: + + tar cf - directory/ \ + | pv --size @directory/ \ + | gzip -9 \ + > out.tar.gz + Taking an image of a disk, skipping errors: pv -EE /dev/your/disk/device > disk-image.img diff --git a/po/cs.po b/po/cs.po index 96b1fd9..6ac65e3 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2024-10-13 20:43+0000\n" "Last-Translator: mmatous \n" "Language-Team: Czech \n" @@ -293,81 +293,81 @@ msgstr "(vstup)" msgid "state allocation failed" msgstr "selhala alokace stavu" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "očekáváno ID procesu nebo dvojice PID:DS" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "neplatné ID procesu" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "nebylo možné zjistit informace o souboru" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "je adresář" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "selhalo vytváření jména pro soubor v sysfs" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "selhalo čtení velikosti souboru v sysfs" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "selhalo otevření blokového zařízení" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "selhalo zjištění velikosti blokového zařízení" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "selhala alokace struktury pro volby" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "selhala alokace struktury pro argv" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "očekáván celočíselný argument" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "očekáván číselný argument" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Zkuste `%s --help' pro více informací." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Zkuste `%s --h' pro více informací." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" @@ -375,31 +375,31 @@ msgstr "" "při sledování deskriptorů souborů nelze použít řádkový mód nebo volby pro " "modifikaci přenosu" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "při sledování deskriptorů souborů nelze pozicování kurzoru použít" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "při sledování deskriptorů souborů nelze použít vzdálené ovládání" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "při sledování deskriptorů souborů nelze použít přenos souborů" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "není dostupné na systémech bez /proc/self/fdinfo" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/de.po b/po/de.po index 0b07896..0868a4a 100644 --- a/po/de.po +++ b/po/de.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2025-01-14 20:39+0000\n" "Last-Translator: Benny \n" "Language-Team: German \n" @@ -14,9 +14,9 @@ msgstr "" "From: Andrew Wood \n" "Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-" "comments --keyword=_ --keyword=N_\n" -"Files: src/getopt/getopt.c src/getopt/getopt1.c src/version.c src/main/init." -"c src/main/help.c src/main/xpmptr.c src/guts/load.c src/guts/stop.c src/guts/" -"configure.c src/guts/make.c src/guts/install.c src/guts/prefs.c src/ui/" +"Files: src/getopt/getopt.c src/getopt/getopt1.c src/version.c src/main/" +"init.c src/main/help.c src/main/xpmptr.c src/guts/load.c src/guts/stop.c src/" +"guts/configure.c src/guts/make.c src/guts/install.c src/guts/prefs.c src/ui/" "generate.c src/ui/main.c src/ui/xpm.c src/ui/status.c src/ui/activate.c src/" "ui/handlers/main.c src/ui/handlers/package.c src/ui/handlers/prefs.c src/ui/" "handlers/dirsel.c src/ui/handlers/popup.c src/ui/handlers/help.c src/ui/" @@ -311,81 +311,81 @@ msgstr "(eingabe)" msgid "state allocation failed" msgstr "Speicherzuweisung für `state' fehlgeschlagen" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "Prozess-ID oder PID:FD-Paar erwartet" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "ungültige Prozess-ID" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "konnte Dateiinformationen nicht lesen" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "ist ein Verzeichnis" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "konnte Sysfs-Dateinamen nicht erzeugen" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "konnte Größe der Sysfs-Datei nicht lesen" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "konnte Blockgerät nicht öffnen" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "konnte Größe des Blockgeräts nicht ermitteln" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "Speicherzuweisung für `option' fehlgeschlagen" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "Speicherzuweisung für `argv' der Option fehlgeschlagen" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "numerischen Wert nicht verstanden" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "Ganzzahliges Argument erwartet" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "numerisches Argument erwartet" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "`%s --help' zeigt weitere Informationen an." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "`%s -h' zeigt weitere Informationen an." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" @@ -393,36 +393,36 @@ msgstr "" "Beim Beobachten von Dateideskriptoren können keine Optionen für den " "Zeilenmodus oder den Übertragungsmodifikator verwendet werden" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "" "Beim Beobachten von Dateideskriptoren kann Cursor-Positionierung nicht " "verwendet werden" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "" "Beim Beobachten von Dateideskriptoren kann die Fernbedienung nicht verwenden " "werden" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "" "Beim Beobachten von Dateideskriptoren können Dateien nicht übertragen werden" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "Nicht verfügbar auf Systemen ohne /proc/self/fdinfo" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/es.po b/po/es.po index e7b9d75..cb28e58 100644 --- a/po/es.po +++ b/po/es.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -287,111 +287,111 @@ msgstr "" msgid "state allocation failed" msgstr "" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "" -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "" -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" msgstr "" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/fi.po b/po/fi.po index 8e23122..ccc159d 100644 --- a/po/fi.po +++ b/po/fi.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: pv 1.9.34\n" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2025-11-22 15:06+0000\n" "Last-Translator: artnay \n" "Language-Team: Finnish \n" @@ -295,111 +295,111 @@ msgstr "" msgid "state allocation failed" msgstr "" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "virheellinen prosessin ID" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "on hakemisto" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "lohkolaitteen avaaminen epäonnistui" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "lohkolaitteen koon päättely epäonnistui" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "numeerista arvoa ei ymmärretty" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "puuttuva tiedostonimi" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "puuttuva prosessinimi" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Suorita `%s --help' saadaksesi lisätietoja." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Suorita `%s -h' saadaksesi lisätietoja." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" msgstr "" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/fr.po b/po/fr.po index 768caf3..b224898 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2025-05-31 08:58+0000\n" "Last-Translator: milimarg \n" "Language-Team: French \n" @@ -14,9 +14,9 @@ msgstr "" "From: Andrew Wood \n" "Xgettext-Options: --default-domain=pkgbuild --directory=./.pkgdir --add-" "comments --keyword=_ --keyword=N_\n" -"Files: src/getopt/getopt.c src/getopt/getopt1.c src/version.c src/main/init." -"c src/main/help.c src/main/xpmptr.c src/guts/load.c src/guts/stop.c src/guts/" -"configure.c src/guts/make.c src/guts/install.c src/guts/prefs.c src/ui/" +"Files: src/getopt/getopt.c src/getopt/getopt1.c src/version.c src/main/" +"init.c src/main/help.c src/main/xpmptr.c src/guts/load.c src/guts/stop.c src/" +"guts/configure.c src/guts/make.c src/guts/install.c src/guts/prefs.c src/ui/" "generate.c src/ui/main.c src/ui/xpm.c src/ui/status.c src/ui/activate.c src/" "ui/handlers/main.c src/ui/handlers/package.c src/ui/handlers/prefs.c src/ui/" "handlers/dirsel.c src/ui/handlers/popup.c src/ui/handlers/help.c src/ui/" @@ -312,81 +312,81 @@ msgstr "(entrée)" msgid "state allocation failed" msgstr "échec de l'allocation de mémoire de condition" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "ID de processus ou paire pid:fd attendue" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "ID de processus non valide" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "échec à statuer sur le fichier" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "est un répertoire" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "échec de génération du nom de fichier sysfs" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "échec de la lecture de la taille du fichier sysfs" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "échec de l'ouverture du périphérique de bloc" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "échec de l'évaluation de la taille du périphérique de bloc" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "l'allocation pour la structure d'une option a échoué" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "l'allocation pour la structure de l'option argv a échoué" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "valeur numérique non comprise" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "Valeur entière attendue" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "Valeur numérique attendue" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Essayez `%s --help' pour plus d'informations." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Essayez `%s -h' pour plus d'informations." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" @@ -394,37 +394,37 @@ 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:1098 +#: src/main/options.c:1148 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:1107 +#: src/main/options.c:1157 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:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 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:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "non disponible sur les systèmes sans /proc/self/fdinfo" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/ka.po b/po/ka.po index e065a9f..df2428f 100644 --- a/po/ka.po +++ b/po/ka.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: pv 1.9.34\n" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -291,111 +291,111 @@ msgstr "" msgid "state allocation failed" msgstr "" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "" -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "" -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" msgstr "" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/pl.po b/po/pl.po index 9f2b74e..cc4d955 100644 --- a/po/pl.po +++ b/po/pl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2025-10-02 13:23+0000\n" "Last-Translator: Coral Pink \n" "Language-Team: Polish \n" @@ -306,81 +306,81 @@ msgstr "(wejście)" msgid "state allocation failed" msgstr "alokacja stanu programu nie powiodła się" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "oczekiwany proces ID lub para PID:FD" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "niepoprawne ID procesu" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "nie udało się wykonać operacji stat na pliku" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "jest katalogiem" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "nie udało się wygenerować nazwy pliku dla sysfs" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "nie udało się odczytać rozmiaru pliku sysfs" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "nie udało się otworzyć urządzenia blokowego" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "nie udało się ustalić rozmiaru urządzenia blokowego" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "nie udało się zaalokować struktur opcji" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "nie udało się zaalokować struktur opcji argv" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "wartość liczbowa niezrozumiana" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "oczekiwany argument typu liczby całkowitej" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "oczekiwany argument liczbowy" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Spróbuj `%s --help' by uzyskać więcej informacji." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Spróbuj `%s -h' by uzyskać więcej informacji." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" @@ -388,35 +388,35 @@ msgstr "" "nie można użyć trybu zliczania linii lub opcji modyfikujących przesył " "łącznie z opcją obserwowania deskryptorów plików" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "" "nie można użyć pozycjonowania kursora łącznie z opcją obserwowania " "deskryptorów plików" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "" "nie można użyć opcji zaktualizowania ustawień procesu łącznie z opcją " "obserwowania deskryptorów plików" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "nie można przesyłać plików z opcją obserwowania deskryptorów plików" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "niedostępne na systemach bez /proc/self/fdinfo" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/pt.po b/po/pt.po index ba890ea..c5f3594 100644 --- a/po/pt.po +++ b/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -297,81 +297,81 @@ msgstr "" msgid "state allocation failed" msgstr "alocação de memória de status falhou" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "ID do processo ou par pid:fd esperado" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "ID de processo inválido" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "erro obtendo informações do arquivo" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "erro na alocação da estrutura de opções" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "erro na alocação da estrutura de opções argv" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "argumento inteiro esperado" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "argumento numérico esperado" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Tente `%s --help' para maiores informações." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Tente `%s -h' para maiores informações." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" @@ -379,33 +379,33 @@ 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:1098 +#: src/main/options.c:1148 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:1107 +#: src/main/options.c:1157 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:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "não pode transferir arquivos ao assistir descritores de arquivo" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "não disponível em sistemas sem /proc/self/fdinfo" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/ru.po b/po/ru.po index e83e9c4..3e84ac5 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2025-01-15 19:08+0000\n" "Last-Translator: 0ko <0ko@users.noreply.translate.codeberg.org>\n" "Language-Team: Russian \n" @@ -294,111 +294,111 @@ msgstr "(ввод)" msgid "state allocation failed" msgstr "" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "ожидался ИД процесса или пара ИДпр:ДФ" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "неправильный ИД процесса" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "не удалось получить информацию о файле" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "является каталогом" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "не удалось создать имя файла sysfs" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "не удалось узнать размер файла sysfs" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "не удалось открыть блочное устройство" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "не удалось определить размер блочного устройства" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "не удалось выделить память для структуры опций" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "не удалось выделить память для структуры опций argv" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "число не распознано" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "ожидалось целое число" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "ожидалось число" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Выполните `%s --help' для получения подробностей." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Выполните `%s -h' для получения подробностей." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" msgstr "" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "удалённое управление невозможно при отслеживании дескрипторов файлов" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "передача файлов невозможна при отслеживании дескрипторов файлов" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "невозможно на системах без /proc/self/fdinfo" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/po/tr.po b/po/tr.po index 480f9ca..54bf594 100644 --- a/po/tr.po +++ b/po/tr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: pv 1.8.14\n" "Report-Msgid-Bugs-To: https://codeberg.org/ivarch/pv/issues\n" -"POT-Creation-Date: 2025-12-15 20:10+0000\n" +"POT-Creation-Date: 2026-03-07 22:21+0000\n" "PO-Revision-Date: 2025-10-05 20:09+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" @@ -294,81 +294,81 @@ msgstr "(giriş)" msgid "state allocation failed" msgstr "durum tahsisi başarısız oldu" -#: src/main/options.c:370 +#: src/main/options.c:373 msgid "list files may not contain @ lines" msgstr "" -#: src/main/options.c:391 src/main/options.c:393 src/main/options.c:807 +#: src/main/options.c:394 src/main/options.c:396 src/main/options.c:857 msgid "process ID or pid:fd pair expected" msgstr "süreç kimliği (ID) veya pid:fd çifti bekleniyor" -#: src/main/options.c:403 src/main/options.c:405 src/main/options.c:814 +#: src/main/options.c:406 src/main/options.c:408 src/main/options.c:864 msgid "invalid process ID" msgstr "geçersiz süreç kimliği (ID)" -#: src/main/options.c:448 src/pv/file.c:342 +#: src/main/options.c:475 src/pv/file.c:342 msgid "failed to stat file" msgstr "dosya statüsünde başarısız oldu" -#: src/main/options.c:462 +#: src/main/options.c:511 msgid "is a directory" msgstr "bir dizindir" -#: src/main/options.c:491 +#: src/main/options.c:541 msgid "failed to generate sysfs filename" msgstr "sysfs dosya adı oluşturulamadı" -#: src/main/options.c:513 +#: src/main/options.c:563 msgid "failed to read sysfs size file" msgstr "sysfs boyut dosyası okunamadı" -#: src/main/options.c:533 +#: src/main/options.c:583 msgid "failed to open block device" msgstr "blok aygıtı açılamadı" -#: src/main/options.c:543 +#: src/main/options.c:593 msgid "failed to determine size of block device" msgstr "blok aygıtının boyutu belirlenemedi" -#: src/main/options.c:652 +#: src/main/options.c:702 msgid "option structure allocation failed" msgstr "seçenek yapısı tahsisi başarısız oldu" -#: src/main/options.c:671 +#: src/main/options.c:721 msgid "option structure argv allocation failed" msgstr "seçenek yapısı argv tahsisi başarısız oldu" -#: src/main/options.c:723 +#: src/main/options.c:773 msgid "numeric value not understood" msgstr "sayısal değer anlaşılmadı" -#: src/main/options.c:743 +#: src/main/options.c:793 msgid "integer argument expected" msgstr "tamsayı bağımsız değişkeni bekleniyor" -#: src/main/options.c:755 +#: src/main/options.c:805 msgid "numeric argument expected" msgstr "sayısal bağımsız değişken bekleniyor" -#: src/main/options.c:767 +#: src/main/options.c:817 msgid "missing filename" msgstr "" -#: src/main/options.c:795 +#: src/main/options.c:845 msgid "missing process name" msgstr "" -#: src/main/options.c:1056 +#: src/main/options.c:1106 #, c-format msgid "Try `%s --help' for more information." msgstr "Daha fazla bilgi için `%s --help' seçeneğini deneyin." -#: src/main/options.c:1058 +#: src/main/options.c:1108 #, c-format msgid "Try `%s -h' for more information." msgstr "Daha fazla bilgi için `%s -h' seçeneğini deneyin." -#: src/main/options.c:1089 +#: src/main/options.c:1139 msgid "" "cannot use line mode or transfer modifier options when watching file " "descriptors" @@ -376,31 +376,31 @@ msgstr "" "dosya tanımlayıcılarını izlerken satır modu veya aktarım değiştirici " "seçeneklerini kullanamaz" -#: src/main/options.c:1098 +#: src/main/options.c:1148 msgid "cannot use cursor positioning when watching file descriptors" msgstr "dosya tanımlayıcılarını izlerken imleç konumlandırmayı kullanamaz" -#: src/main/options.c:1107 +#: src/main/options.c:1157 msgid "cannot use remote control when watching file descriptors" msgstr "dosya tanımlayıcılarını izlerken uzaktan kumandayı kullanamaz" -#: src/main/options.c:1116 +#: src/main/options.c:1166 msgid "cannot use remote query when watching file descriptors" msgstr "" -#: src/main/options.c:1125 +#: src/main/options.c:1175 msgid "cannot transfer files when watching file descriptors" msgstr "dosya tanımlayıcıları izlenirken dosya aktarılamıyor" -#: src/main/options.c:1150 +#: src/main/options.c:1200 msgid "not available on systems without /proc/self/fdinfo" msgstr "/proc/self/fdinfo olmayan sistemlerde kullanılamaz" -#: src/main/options.c:1162 +#: src/main/options.c:1212 msgid "cannot use remote control and remote query together" msgstr "" -#: src/main/options.c:1189 +#: src/main/options.c:1239 msgid "files cannot be specified with this option" msgstr "" diff --git a/src/include/config.h.in b/src/include/config.h.in index cc54819..ca551ac 100644 --- a/src/include/config.h.in +++ b/src/include/config.h.in @@ -10,10 +10,10 @@ language is requested. */ #undef ENABLE_NLS -/* Define to 1 if you have the `alarm' function. */ +/* Define to 1 if you have the 'alarm' function. */ #undef HAVE_ALARM -/* Define to 1 if you have the `basename' function. */ +/* Define to 1 if you have the 'basename' function. */ #undef HAVE_BASENAME /* Define to 1 if you have the Mac OS X function @@ -24,39 +24,42 @@ the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE -/* Define to 1 if you have the `clock_gettime' function. */ +/* Define to 1 if you have the 'clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT -/* Define to 1 if you have the declaration of `SA_SIGINFO', and to 0 if you +/* Define to 1 if you have the declaration of 'SA_SIGINFO', and to 0 if you don't. */ #undef HAVE_DECL_SA_SIGINFO -/* Define to 1 if you have the `dup2' function. */ +/* Define to 1 if you have the 'dup2' function. */ #undef HAVE_DUP2 /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H -/* Define to 1 if you have the `fdatasync' function. */ +/* Define to 1 if you have the 'fdatasync' function. */ #undef HAVE_FDATASYNC -/* Define to 1 if you have the `fmod' function. */ +/* Define to 1 if you have the 'fmod' function. */ #undef HAVE_FMOD -/* Define to 1 if you have the `fpathconf' function. */ +/* Define to 1 if you have the 'fpathconf' function. */ #undef HAVE_FPATHCONF -/* Define to 1 if you have the `getcwd' function. */ +/* Define to 1 if you have the header file. */ +#undef HAVE_FTW_H + +/* Define to 1 if you have the 'getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H -/* Define to 1 if you have the `getopt_long' function. */ +/* Define to 1 if you have the 'getopt_long' function. */ #undef HAVE_GETOPT_LONG /* Define if the GNU gettext() function is already present or preinstalled. */ @@ -89,52 +92,55 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H -/* Define to 1 if you have the `memcpy' function. */ +/* Define to 1 if you have the 'memcpy' function. */ #undef HAVE_MEMCPY -/* Define to 1 if you have the `memmove' function. */ +/* Define to 1 if you have the 'memmove' function. */ #undef HAVE_MEMMOVE -/* Define to 1 if you have the `memrchr' function. */ +/* Define to 1 if you have the 'memrchr' function. */ #undef HAVE_MEMRCHR -/* Define to 1 if you have the `memset' function. */ +/* Define to 1 if you have the 'memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the header file. */ #undef HAVE_MINIX_CONFIG_H -/* Define to 1 if you have the `mkdir' function. */ +/* Define to 1 if you have the 'mkdir' function. */ #undef HAVE_MKDIR -/* Define to 1 if you have the `nanosleep' function. */ +/* Define to 1 if you have the 'nanosleep' function. */ #undef HAVE_NANOSLEEP -/* Define to 1 if you have the `posix_fadvise' function. */ +/* Define to 1 if you have the 'nftw' function. */ +#undef HAVE_NFTW + +/* Define to 1 if you have the 'posix_fadvise' function. */ #undef HAVE_POSIX_FADVISE -/* Define to 1 if you have the `posix_memalign' function. */ +/* Define to 1 if you have the 'posix_memalign' function. */ #undef HAVE_POSIX_MEMALIGN -/* Define to 1 if you have the `select' function. */ +/* Define to 1 if you have the 'select' function. */ #undef HAVE_SELECT -/* Define to 1 if you have the `setitimer' function. */ +/* Define to 1 if you have the 'setitimer' function. */ #undef HAVE_SETITIMER -/* Define to 1 if you have the `setlocale' function. */ +/* Define to 1 if you have the 'setlocale' function. */ #undef HAVE_SETLOCALE -/* Define to 1 if you have the `setproctitle' function. */ +/* Define to 1 if you have the 'setproctitle' function. */ #undef HAVE_SETPROCTITLE -/* Define to 1 if you have the `shmget' function. */ +/* Define to 1 if you have the 'shmget' function. */ #undef HAVE_SHMGET -/* Define to 1 if you have the `splice' function. */ +/* Define to 1 if you have the 'splice' function. */ #undef HAVE_SPLICE -/* Define to 1 if you have the `sqrtl' function. */ +/* Define to 1 if you have the 'sqrtl' function. */ #undef HAVE_SQRTL /* Define to 1 if stdbool.h conforms to C99. */ @@ -149,10 +155,10 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H -/* Define to 1 if you have the `strchr' function. */ +/* Define to 1 if you have the 'strchr' function. */ #undef HAVE_STRCHR -/* Define to 1 if you have the `strerror' function. */ +/* Define to 1 if you have the 'strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ @@ -161,25 +167,25 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define to 1 if you have the `strlcat' function. */ +/* Define to 1 if you have the 'strlcat' function. */ #undef HAVE_STRLCAT -/* Define to 1 if you have the `strrchr' function. */ +/* Define to 1 if you have the 'strrchr' function. */ #undef HAVE_STRRCHR -/* Define to 1 if you have the `strstr' function. */ +/* Define to 1 if you have the 'strstr' function. */ #undef HAVE_STRSTR -/* Define to 1 if you have the `strtoul' function. */ +/* Define to 1 if you have the 'strtoul' function. */ #undef HAVE_STRTOUL -/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +/* Define to 1 if 'st_blksize' is a member of 'struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLKSIZE -/* Define to 1 if `st_rdev' is a member of `struct stat'. */ +/* Define to 1 if 'st_rdev' is a member of 'struct stat'. */ #undef HAVE_STRUCT_STAT_ST_RDEV -/* Define to 1 if you have the `sysconf' function. */ +/* Define to 1 if you have the 'sysconf' function. */ #undef HAVE_SYSCONF /* Define to 1 if you have the header file. */ @@ -218,7 +224,7 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the `vsnprintf' function. */ +/* Define to 1 if you have the 'vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define to 1 if you have the header file. */ @@ -227,7 +233,7 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCTYPE_H -/* Define to 1 if the system has the type `_Bool'. */ +/* Define to 1 if the system has the type '_Bool'. */ #undef HAVE__BOOL /* Name of package */ @@ -254,12 +260,12 @@ /* Signal handlers can determine the sending PID */ #undef SIGINFO_PROVIDES_PID -/* Define to 1 if all of the C90 standard headers exist (not just the ones +/* Define to 1 if all of the C89 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS -/* Enable extensions on AIX 3, Interix. */ +/* Enable extensions on AIX, Interix, z/OS. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif @@ -320,11 +326,15 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif -/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -353,35 +363,41 @@ /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS -/* Define for large files, on AIX-style hosts. */ +/* Define to 1 on platforms where this makes off_t a 64-bit type. */ #undef _LARGE_FILES -/* Define to empty if `const' does not conform to ANSI C. */ +/* Number of bits in time_t, on hosts where this is settable. */ +#undef _TIME_BITS + +/* Define to 1 on platforms where this makes time_t a 64-bit type. */ +#undef __MINGW_USE_VC2005_COMPAT + +/* Define to empty if 'const' does not conform to ANSI C. */ #undef const -/* Define to `int' if doesn't define. */ +/* Define as 'int' if doesn't define. */ #undef gid_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t -/* Define to `int' if does not define. */ +/* Define to 'int' if does not define. */ #undef mode_t -/* Define to `long int' if does not define. */ +/* Define to 'long int' if does not define. */ #undef off_t /* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t -/* Define to `unsigned int' if does not define. */ +/* Define as 'unsigned int' if doesn't define. */ #undef size_t -/* Define to `int' if does not define. */ +/* Define as 'int' if doesn't define. */ #undef ssize_t -/* Define to `int' if doesn't define. */ +/* Define as 'int' if doesn't define. */ #undef uid_t #include "config-aux.h" diff --git a/src/main/options.c b/src/main/options.c index f21d522..75c7832 100644 --- a/src/main/options.c +++ b/src/main/options.c @@ -31,6 +31,9 @@ #ifdef HAVE_GETOPT_H #include #endif +#ifdef HAVE_FTW_H +#include +#endif void display_help(void); @@ -412,12 +415,36 @@ static bool opts_watchfd_parse(opts_t opts, const char *argument, /*@null@ */ co } +#ifdef HAVE_NFTW +/* + * Callback function for nftw() to add the size of the given file to the + * total size so far. + */ +static off_t dir_tree_file_size_so_far = 0; +static int dir_tree_total_file_size( /*@unused@ */ __attribute__((unused)) + const char *fpath, const struct stat *sb, int typeflag, /*@unused@ */ + __attribute__((unused)) + struct FTW *ftwbuf) +{ + if (typeflag != FTW_F) + return 0; + if (NULL == sb) + return 0; + dir_tree_file_size_so_far += (off_t) (sb->st_size); + return 0; +} +#endif /* HAVE_NFTW */ + + /* * Set opts->size from the size of the file whose name is size_file, * returning false (and reporting the error) if there is a problem. * * If size_file points to a block device, the size of the block device is * used. + * + * If size_file points to a directory, opts->size is set to the sum of the + * sizes of all regular files under that directory, if nftw() is available. */ static bool opts_use_size_of_file(opts_t opts, const char *size_file) { @@ -456,6 +483,28 @@ static bool opts_use_size_of_file(opts_t opts, const char *size_file) return true; } +#ifdef HAVE_NFTW + /* This was a directory - use the size of all files under it. */ + if (S_ISDIR((mode_t) (sb.st_mode))) { + int rc_nftw; + + dir_tree_file_size_so_far = 0; + /* TODO: get max fds rather than just using 1024. */ + rc_nftw = nftw(size_file, dir_tree_total_file_size, 1024, 0 +#ifdef FTW_PHYS + | FTW_PHYS +#endif + ); + + if (rc_nftw < 0) { + fprintf(stderr, "%s: %s: %s\n", opts->program_name, size_file, strerror(errno)); + return false; + } + + opts->size = dir_tree_file_size_so_far; + return true; + } +#else /* HAVE_NFTW */ /* This was a directory - report an error. */ if (S_ISDIR((mode_t) (sb.st_mode))) { /*@-mustfreefresh@ *//* see above */ @@ -463,6 +512,7 @@ static bool opts_use_size_of_file(opts_t opts, const char *size_file) return false; /*@+mustfreefresh@ */ } +#endif /* !HAVE_NFTW */ /* This was not a block device - just use the size and return. */ if (!S_ISBLK((mode_t) (sb.st_mode))) { diff --git a/tests/Modifiers_-_--size_from_dir_size.test b/tests/Modifiers_-_--size_from_dir_size.test new file mode 100755 index 0000000..f2ae26b --- /dev/null +++ b/tests/Modifiers_-_--size_from_dir_size.test @@ -0,0 +1,67 @@ +#!/bin/sh +# +# Similar to the "--size" check but, instead, using directory's size with +# "--size @". + +# Allow all tests to be skipped, e.g. during a release build +test "${SKIP_ALL_TESTS}" = "1" && exit 77 + +true "${testSubject:?not set - call this from 'make check'}" +true "${workFile1:?not set - call this from 'make check'}" +true "${workFile2:?not set - call this from 'make check'}" + +# Process 100 bytes at 100 bytes per second, interval 0.1 seconds, with the +# size set from a directory containing 10 files of $1/10 bytes, and +# expecting a percentage of $2 at the end. +sizeCheck () { + # Make a directory containing 10 files of $1/10 bytes each. + rm -rf "${workFile2}" + mkdir "${workFile2}" + mkdir "${workFile2}/subdir" + s="$1" + s=$((s/10)) + for f in 1 2 3 4 5; do + dd if=/dev/zero bs="$s" count=1 2>/dev/null >"${workFile2}/$f" + dd if=/dev/zero bs="$s" count=1 2>/dev/null >"${workFile2}/subdir/$f" + done + + # Run 100 bytes through the program, using the reference directory's + # total size as the percentage reference. + dd if=/dev/zero bs=100 count=1 2>/dev/null \ + | "${testSubject}" -s "@${workFile2}" -n -i 0.1 -L 100 >/dev/null 2>"${workFile1}" + + # If "-s @" is unsupported, skip the test. + if test $? -eq 64; then + rm -rf "${workFile2}" + echo 'not available on this build' + exit 77 + fi + + rm -rf "${workFile2}" + + lineCount=$(wc -l < "${workFile1}" | tr -dc '0-9') + finalLine=$(sed -n '$p' < "${workFile1}") + + # The number of output lines should be >5 and <13, and the final + # percentage should be $2. + # + if ! test "${lineCount}" -gt 5; then + echo "(reference size=$1) fewer than 6 output lines (${lineCount})" + exit 1 + fi + if ! test "${lineCount}" -lt 13; then + echo "(reference size=$1) more than 12 output lines (${lineCount})" + exit 1 + fi + if ! test "${finalLine}" = "$2"; then + echo "(reference size=$1): final percentage was not $2 (${finalLine})" + cat "${workFile1}" + exit 1 + fi +} + +sizeCheck 100 100 +sizeCheck 200 50 +sizeCheck 50 200 + +exit 0