Andrew Wood
a1e2651b4c
Remove the tcsetpgrp() code, as it did not work, since it turns out that zsh 5.8 was setting the terminal process group ID to that of itself when the last command in the pipeline was not a subshell - not to an invalid pgid or anything like that - so we cannot safely detect this or work around it.
2024-10-11 19:48:56 +01:00
Andrew Wood
ec498ec476
Added a possible workaround, and extra debugging, for the missing display output issue in #100 , but turned off at the moment.
2024-10-09 22:07:56 +01:00
Andrew Wood
579b592c12
Correct the wording of the line buffer allocation failure error message.
2024-10-09 18:55:33 +01:00
Andrew Wood
856da09741
Add a circular buffer of line positions so that in line mode we can work out how many lines are in the unconsumed portion of the output pipe buffer.
2024-10-05 23:04:18 +01:00
Andrew Wood
bfe301ae1c
Preserve errno after the output write, and if the output pipe is closed, propagate this to the main loop so it does not wait forever for the pipe buffer to empty.
2024-10-05 17:05:14 +01:00
Andrew Wood
d9a0041870
New --store-and-forward option ( #100 ), including refactoring several areas to allow PV to run in two passes, and the ability to look at the output pipe buffer utilisation to more accurately reflect the total data transferred to the receiving end, rather than just the total amount written to the output buffer.
2024-10-05 16:21:59 +01:00
Andrew Wood
ea3787e393
Call posix_fadvise() each time we open a new file, not just on the first one.
2024-10-05 15:00:08 +01:00
Andrew Wood
de2fe7f6be
Correct the O_DIRECT flag setting to use the output file descriptor rather than assuming stdout.
2024-10-05 14:17:15 +01:00
Andrew Wood
c548d1f2d8
Add a "--gauge" option which alters the progress bar to show the current rate as a percentage of the max rate seen, if the size is unknown ( #46 ).
2024-10-04 22:15:14 +01:00
Andrew Wood
208ac286f8
Calculate rate_min, rate_max, etc, regardless of whether show_stats is true, since the overhead is minimal and it will allow us to use that information for other options later.
2024-10-04 20:15:15 +01:00
Andrew Wood
9aef419c4c
Surround the "--average-rate" average rate with brackets rather than square brackets, to differentiate it from the "--rate" current rate.
2024-10-04 19:59:21 +01:00
Andrew Wood
a2c6490d31
Prefix the estimated completion time of "--fineta" with "FIN" rather than "ETA" to differentiate it from the "ETA" provided by "--eta" ( #43 ).
2024-10-04 19:45:08 +01:00
Andrew Wood
4b399995f5
Allow --rate to be used with --numeric ( #17 ).
2024-10-04 19:08:02 +01:00
Andrew Wood
877bb1f91f
Move calculation code into its own file, to make display.c smaller and keep it focused purely on display.
2024-10-04 17:22:43 +01:00
Andrew Wood
cd696e60ab
Make pv__calc_percentage() into pv_percentage() in number.c instead of a static function in display.c, so it can be used in multiple places in future.
2024-10-04 17:15:18 +01:00
Andrew Wood
9bd5a518ea
New option "--stats", to show a line of statistics about the transfer once it has ended (issue #49 ).
2024-10-04 15:12:22 +01:00
Andrew Wood
65d568c283
Refactor display and calculation functions to separate them out more cleanly, move more information into the state structure instead of repeating it as function parameters, and fix a memory leak in the whole-PID mode of --watchfd.
2024-10-04 13:27:17 +01:00
Andrew Wood
a118f110fa
Use verbose variable names for readability.
2024-10-04 11:58:57 +01:00
Andrew Wood
f803f29158
Move transfer rate calculations into their own function, and make pv__format stand alone, to maintain separation of concerns.
2024-10-04 11:54:47 +01:00
Andrew Wood
954c2d32c1
Move calculated values out of state.display into a new structure, state.calc, to separate out the display portion from the calculation portion; and move history_interval into state.control, as it is a control parameter set at the start.
2024-10-04 11:08:01 +01:00
Andrew Wood
545769885d
Raise a SIGCONT to the whole process group after receiving a SIGTTOU, so that pipelines can be resumed in the background (for example "pv /dev/zero | cat > /dev/null" can now be suspended and put into the background - if we do not send that signal then "cat" remains stopped, as mentioned in issue #56 ).
2024-10-04 10:24:08 +01:00
Andrew Wood
94ea82c10a
Indentation correction.
2024-10-04 10:21:23 +01:00
Andrew Wood
a6c978573f
Move pv_write_retry() and pv_tty_write() from cursor.c to display.c so they sit with all the other display functions.
2024-10-04 09:06:24 +01:00
Andrew Wood
9a639b40b7
Use gmtime() instead of localtime() in debugging output to avoid lockups in signal handlers due to time zone lookups.
2024-10-04 08:53:14 +01:00
Andrew Wood
e84f47abc8
Refactor handling of TTOU so that instead of shuffling stderr to another file descriptor and using /dev/null when backgrounded, we set a flag to suspend terminal output, and perform all terminal writes through a new pv_tty_write function which checks that flag.
2024-10-03 23:03:31 +01:00
Andrew Wood
52a720ec33
Improve the readability of the code that handles SIGTTOU.
2024-10-03 22:08:11 +01:00
Andrew Wood
23bd296aeb
Re-order structure members to minimise padding / holes, after analysis with "pahole" on a 64-bit system.
2024-10-03 21:25:41 +01:00
Andrew Wood
69a56ced7a
Correct double-free on exit when using --watchfd - issue #96 .
2024-09-07 21:04:09 +01:00
Andrew Wood
60936080da
Move the "--size @FILE" file size reading into its own function for clarity; standardise its error message format to "program: file: message: detail"; uniquely name variables; refuse to accept a directory as a file; and with this option, try reading the size of a block device from sysfs if we can, to avoid requiring read permissions on the device.
2024-08-06 23:17:15 +01:00
Alexander Perlis
f6b0ddc0b3
Support block devices in @-syntax
2024-08-01 00:36:02 +00:00
Andrew Wood
e4ab8c56a0
Minor adjustment to comments.
2024-07-17 07:41:48 +01:00
Eric A. Borisch
3fdfd07443
Improve description and comments for blocking-write() after select()
2024-07-16 23:39:15 -05:00
Andrew Wood
d801cdd722
Remove spurious strerror() call from debug report.
2024-07-16 22:44:10 +01:00
Andrew Wood
72e5078ce9
Move the MAKE_OUTPUT_NONBLOCKING code to state.c, as it can no longer work in main.c due to accessing internal structures; but still leave it switched off by default for now.
2024-07-16 22:41:31 +01:00
Andrew Wood
a7c3f3dd35
Write the error from write() to the debugging output if nwritten is <0.
2024-07-16 22:23:51 +01:00
Andrew Wood
12f0312b00
Move the "stop at size" option setting to before the size calculation, otherwise if the size calculation tries to override that setting, it cannot do so ( #91 ).
2024-07-16 21:58:47 +01:00
Andrew Wood
8c0e3e9dad
When checking how many bytes were written, place the constant to the left of the equality check to match the rest of the code (this avoids accidental assignment if one equals sign is accidentally written instead of two), and write the appropriate debug message depending on whether the write was interrupted or it was empty.
2024-07-16 21:54:13 +01:00
Andrew Wood
c7104f0c0d
Merge pull request 'src/pv/transfer.c: timer going off returns with total_written==0; which is not an error.' ( #92 ) from eborisch/pv:write-can-return-0 into main
...
Reviewed-on: https://codeberg.org/a-j-wood/pv/pulls/92
2024-07-16 20:47:32 +00:00
Andrew Wood
f8fc5844b1
Re-order the output file descriptor setting and the size detection to correct the problem with output block device size detection that was broken in 1.8.10 ( #91 ).
2024-07-16 21:39:29 +01:00
eborisch
d86d8cf65a
Clarify state.
2024-07-16 03:57:11 +00:00
eborisch
11e5b5fe95
src/pv/transfer.c: write(2) returning 0 is not an error
...
This is being hit easily on FreeBSD with pv sitting in a zfs send/recv pipeline. As write(2) returning 0 is not an error, handle it similar to returning -1 with EINTR or EAGAIN: wait a bit and try again.
2024-07-15 21:36:57 +00:00
Andrew Wood
2bed6776e4
Truncate files written with "-o".
2024-06-08 22:02:11 +01:00
Andrew Wood
01e0290d6e
More replacement of hard-coded exit status bitmask values with named constants.
2024-06-08 21:57:36 +01:00
Andrew Wood
1c61154206
Replace hard-coded exit status bitmask values with named constants.
2024-06-08 21:49:46 +01:00
Andrew Wood
addf25ff16
Minor cleanups after merge.
2024-06-08 21:21:11 +01:00
Martin Dørum
6073445551
document the --output in the man page and help text
2024-06-08 14:31:21 +02:00
Martin Dørum
30763684b7
add -o/--output option
2024-06-08 14:31:19 +02:00
Andrew Wood
ace8f44f59
Added more debugging to stdout writes.
2024-05-11 21:13:12 +01:00
Andrew Wood
98994bbeaa
Correct the copyright year in the "--version" output.
2024-04-22 22:25:22 +01:00
Andrew Wood
b375041790
Correct issues #34 , #86 , #87 - progress output stopping when writing output data blocks - by adding a SIGALRM handler, since ignoring the signal prevents it from interrupting writes; and use setitimer() where available, instead of alarm(), to provide sufficient granularity to handle the case where the --interval is not a whole number of seconds.
2024-04-21 13:54:01 +01:00