Use standalone flags to indicate whether we are tracking the last bytes output or the previous line written, so that the component array is not needed outside of display.c.

This commit is contained in:
Andrew Wood
2024-12-08 10:23:24 +00:00
parent 3d52919411
commit cfea00b200
11 changed files with 83 additions and 76 deletions
+9 -9
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: 2024-10-13 20:43+0000\n"
"Last-Translator: mmatous <mmatous@users.noreply.translate.codeberg.org>\n"
"Language-Team: Czech <https://translate.codeberg.org/projects/pv/pv/cs/>\n"
@@ -403,37 +403,37 @@ msgstr "yzafpnum kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "selhala alokace vyrovnávací paměti"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr "b"
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr "B"
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr "b/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr "/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "B/s"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ETA"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr "FIN"
+9 -9
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: 2024-10-13 20:43+0000\n"
"Last-Translator: fnetX <otto@codeberg.org>\n"
"Language-Team: German <https://translate.codeberg.org/projects/pv/pv/de/>\n"
@@ -426,37 +426,37 @@ msgstr "yzafpnµm kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnµm KMGTPEZY"
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "Speicherzuweisung für den Puffer fehlgeschlagen"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr "b"
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr "B"
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr "b/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr "/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "B/s"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ETA"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr "Endzeit"
+9 -9
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -395,37 +395,37 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr ""
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr ""
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr ""
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr ""
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr ""
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr ""
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr ""
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr ""
+9 -9
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: 2024-10-12 11:13+0000\n"
"Last-Translator: a-j-wood <a-j-wood@users.noreply.translate.codeberg.org>\n"
"Language-Team: French <https://translate.codeberg.org/projects/pv/pv/fr/>\n"
@@ -430,37 +430,37 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "échec de l'allocation de mémoire tampon"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr ""
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr "O"
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr ""
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr "/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "O/s"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ETA"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr ""
+9 -9
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: 2024-10-20 14:07+0000\n"
"Last-Translator: coralpink <coralpink@users.noreply.translate.codeberg.org>\n"
"Language-Team: Polish <https://translate.codeberg.org/projects/pv/pv/pl/>\n"
@@ -421,37 +421,37 @@ msgstr "yzafpnum kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "nie udało się zaalokować bufora"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr "b"
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr "B"
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr "b/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr "/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "B/s"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ETA"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr "FIN"
+9 -9
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -409,37 +409,37 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "erro alocando o buffer"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr ""
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr ""
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr ""
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr ""
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "B/s"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ETA"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr ""
+9 -9
View File
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: 2024-10-22 18:07+0000\n"
"Last-Translator: 0ko <0ko@users.noreply.translate.codeberg.org>\n"
"Language-Team: Russian <https://translate.codeberg.org/projects/pv/pv/ru/>\n"
@@ -404,37 +404,37 @@ msgstr ""
msgid "yzafpnum KMGTPEZY"
msgstr ""
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "не удалось выделить память для буфера"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr "бит"
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr "байт"
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr "бит/с"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr "/с"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "байт/с"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ОЖИД"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr "ЗАВЕРШ"
+9 -9
View File
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pv 1.8.14\n"
"Report-Msgid-Bugs-To: pv@ivarch.com\n"
"POT-Creation-Date: 2024-12-07 23:06+0000\n"
"POT-Creation-Date: 2024-12-08 10:22+0000\n"
"PO-Revision-Date: 2024-10-12 23:51+0000\n"
"Last-Translator: a-j-wood <a-j-wood@users.noreply.translate.codeberg.org>\n"
"Language-Team: Turkish <https://translate.codeberg.org/projects/pv/pv/tr/>\n"
@@ -405,37 +405,37 @@ msgstr "yzafpnum kMGTPEZY"
msgid "yzafpnum KMGTPEZY"
msgstr "yzafpnum KMGTPEZY"
#: src/pv/display.c:693 src/pv/transfer.c:1064
#: src/pv/display.c:698 src/pv/transfer.c:1064
msgid "buffer allocation failed"
msgstr "arabellek tahsisi başarısız oldu"
#: src/pv/display.c:822
#: src/pv/display.c:827
msgid "b"
msgstr "b"
#: src/pv/display.c:825 src/pv/transfer.c:602
#: src/pv/display.c:830 src/pv/transfer.c:602
msgid "B"
msgstr "B"
#: src/pv/display.c:869 src/pv/display.c:884 src/pv/display.c:1139
#: src/pv/display.c:874 src/pv/display.c:889 src/pv/display.c:1144
#: src/pv/loop.c:549
msgid "b/s"
msgstr "b/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
msgid "/s"
msgstr "/s"
#: src/pv/display.c:873 src/pv/display.c:888 src/pv/display.c:1143
#: src/pv/display.c:878 src/pv/display.c:893 src/pv/display.c:1148
#: src/pv/loop.c:549
msgid "B/s"
msgstr "B/s"
#: src/pv/display.c:916 src/pv/display.c:920
#: src/pv/display.c:921 src/pv/display.c:925
msgid "ETA"
msgstr "ETA"
#: src/pv/display.c:986
#: src/pv/display.c:991
msgid "FIN"
msgstr "FIN"
+2
View File
@@ -222,6 +222,8 @@ struct pvstate_s {
size_t format_segment_count; /* number of format string segments */
unsigned int prev_screen_width; /* screen width last time we were called */
bool tracking_last_output; /* set if displaying the last few bytes output */
bool tracking_previous_line; /* set if displaying the previously output line */
bool display_visible; /* set once anything written to terminal */
} display;
+5
View File
@@ -443,6 +443,9 @@ static void pv__format_init(pvstate_t state, /*@null@ */ const char *format_supp
memset(display->format, 0, PV_FORMAT_ARRAY_MAX * sizeof(display->format[0]));
memset(display->component, 0, PV_COMPONENT__MAX * sizeof(display->component[0]));
display->tracking_last_output = false;
display->tracking_previous_line = false;
if (state->control.name) {
(void) pv_snprintf(display->component[PV_COMPONENT_NAME].content, PV_SIZEOF_COMPONENT_STR,
"%9.500s:", state->control.name);
@@ -535,12 +538,14 @@ static void pv__format_init(pvstate_t state, /*@null@ */ const char *format_supp
chosen_size = (size_t) number_prefix;
if (display->lastoutput_bytes < chosen_size)
display->lastoutput_bytes = chosen_size;
display->tracking_last_output = true;
break;
case 'L':
seg_type = PV_COMPONENT_PREVLINE;
if (number_prefix > PV_SIZEOF_PREVLINE_BUFFER)
number_prefix = PV_SIZEOF_PREVLINE_BUFFER;
chosen_size = (size_t) number_prefix;
display->tracking_previous_line = true;
break;
case 'r':
seg_type = PV_COMPONENT_RATE;
+4 -4
View File
@@ -722,7 +722,7 @@ static int pv__transfer_write(pvstate_t state, bool *eof_in, bool *eof_out, long
if ((state->control.linemode) && (lineswritten != NULL))
tracking_lines = true;
else if (state->display.component[PV_COMPONENT_PREVLINE].required)
else if (state->display.tracking_previous_line)
tracking_lines = true;
/*
@@ -772,7 +772,7 @@ static int pv__transfer_write(pvstate_t state, bool *eof_in, bool *eof_out, long
* line ("%L"), add to our line
* buffer.
*/
if (state->display.component[PV_COMPONENT_PREVLINE].required
if (state->display.tracking_previous_line
&& state->display.next_line_len < PV_SIZEOF_PREVLINE_BUFFER - 1) {
state->display.next_line[state->display.next_line_len] = *ptr;
state->display.next_line_len++;
@@ -789,7 +789,7 @@ static int pv__transfer_write(pvstate_t state, bool *eof_in, bool *eof_out, long
* with the line we just completed, and
* start a new one.
*/
if (state->display.component[PV_COMPONENT_PREVLINE].required) {
if (state->display.tracking_previous_line) {
memset(state->display.previous_line, 0, PV_SIZEOF_PREVLINE_BUFFER);
if (state->display.next_line_len > PV_SIZEOF_PREVLINE_BUFFER - 1)
state->display.next_line_len = PV_SIZEOF_PREVLINE_BUFFER - 1;
@@ -840,7 +840,7 @@ static int pv__transfer_write(pvstate_t state, bool *eof_in, bool *eof_out, long
* If we're monitoring the output, update our copy of the
* last few bytes we've written.
*/
if (state->display.component[PV_COMPONENT_OUTPUTBUF].required && (nwritten > 0)) {
if (state->display.tracking_last_output && (nwritten > 0)) {
size_t new_portion_size, old_portion_size;
new_portion_size = (size_t) nwritten;