Commit Graph
348 Commits
Author SHA1 Message Date
Andrew Wood 1a70cc228a Correction to the description and removal of the TODO marker; and use the transfer interval as the time to wait after closure (#81). 2025-10-17 22:50:33 +01:00
Andrew Wood 17ca4fc9c9 Keep displaying --watchfd fds for a short time after they are closed, and don't clear the display at the end but just move the cursor past it (#81). 2025-10-17 20:40:14 +01:00
Andrew Wood 0aac6d6aac Add comments and "pid_last_seen", "fd_last_seen" structure members for proposed new logic that will hold fd info on-screen a short time after closure, to retain the progress display when a watched process exits (#81). 2025-10-17 19:09:46 +01:00
Andrew Wood 61021eab6b Remove the TODO markers for #81 as this work will be done in a separate branch. 2025-10-17 17:52:33 +01:00
Andrew Wood 972f8b7df8 Re-order no_splice and sparse_output relative to other flags to more closely match the order they appear in the manual. 2025-10-15 23:23:16 +01:00
Andrew Wood a40bdfb55f Merge branch 'issue45_sparse' (#45). 2025-10-15 23:17:05 +01:00
Andrew Wood 3c9ab822fe Call lseek() at the start if output is appending, so that future lseek()s are relative to the right position, fixing the issue with incorrect truncation size (#45). 2025-10-15 23:08:33 +01:00
Andrew Wood fb5ce33518 Add debugging messages about truncation and seeking (#45). 2025-10-15 22:43:56 +01:00
Andrew Wood 5c15337662 Only call ftruncate() once, when the output file descriptor is closed at the end, instead of after every lseek() - this corrects the file growth on XFS but has the side effect that writing to stdout in >> (append) mode truncates the file to the wrong size (#45). 2025-10-15 22:32:21 +01:00
Andrew Wood 71f929e29c Add a TODO indicating the problems so far and what to try next (#45). 2025-10-15 17:49:38 +01:00
Andrew Wood c21ad6fdf1 For sparse output, instead of fstat(), ftruncate(), then lseek(), do lseek() then ftruncate(), like dd does (#45). 2025-10-14 23:38:15 +01:00
Andrew Wood 72686655cf Move the pv__transfer_write_completed label, jumped to on a sparse write, outside of the compound statement; and so, move all of the variables within that compound statement to the start of the function. The GCC on RHEL derivatives like AlmaLinux 9, Rocky 8, CentOS 7/6/5 throws an error if the label is at the end of that block rather than just outside it (#45). 2025-10-14 22:03:41 +01:00
Andrew Wood 54913fddbe First working draft of --sparse transfers, tests still needed (#45). 2025-10-13 22:13:54 +01:00
Andrew Wood 023cf22a59 Add --sparse / -O to the manual, to --help, and to option processing (#45). 2025-10-13 21:26:24 +01:00
Andrew Wood 164d7f7738 Add the extra --watchfd syntax to the help for that option. 2025-10-13 17:58:37 +01:00
Andrew Wood 6b8acd9e01 Add sparse_output option and control flags, and an output_not_seekable transfer flag, to structures for "sparse output" mode in future (#45). 2025-10-12 18:12:43 +01:00
Andrew Wood 72d9efc993 More specific TODOs for one way of implementing #81. 2025-10-07 22:17:10 +01:00
Andrew Wood 64c4e8efb9 Add TODO markers for one way of implementing #81. 2025-10-06 18:03:46 +01:00
Andrew Wood 25dadb2bfd Add a comment describing what this structure is for. 2025-10-06 18:01:57 +01:00
Andrew Wood 615c1d5321 Explicitly cast both sides of the comparison to "long long", otherwise there is an overflow on 32-bit systems and stop-at-size stops at the wrong point (#166). 2025-10-05 21:20:27 +01:00
Andrew Wood 3442d7651a Use a void *, not a char *, so the types are consistent throughout. 2025-10-05 21:16:34 +01:00
Andrew Wood 7982badb65 Write a debugging line when truncating transfers for stop-at-size. 2025-10-05 21:15:58 +01:00
Andrew Wood a83a549de5 Correct the value size in the debug statement, otherwise it overflows on 32-bits systems. 2025-10-05 21:02:27 +01:00
Andrew Wood 8504964f1a Remove old non-functional code relating to ETAs and --size in the --watchfd loop. 2025-10-05 18:07:02 +01:00
Andrew Wood f83aa2272b Fix incorrect usage of "optarg". 2025-10-04 21:51:26 +01:00
Andrew Wood fb7c05c262 Implement the "pgrep" call for --watchfd =NAME (#95). 2025-10-04 21:50:25 +01:00
Andrew Wood bd4ca7301c Document the new "=NAME" (#95) and "@FILE" (#12) syntax for --watchfd options. 2025-10-04 20:17:46 +01:00
Andrew Wood 242297a3c6 Partial draft of "-d @filename" (#12) and "-d =processname" syntax (#95). 2025-10-04 17:46:43 +01:00
Andrew Wood 0a658f99bb In --watchfd, when deciding whether to insert %N into the format, check for %{name} in the current format as well as the existing check for %N. 2025-10-04 14:49:06 +01:00
Andrew Wood 11dc25966d If stop_at_size is true, do not read more than control.size even if that is 0 (#166). 2025-10-01 18:06:59 +01:00
Andrew Wood be066f6c8c Restrict the amount to read when --stop-at-size is active so that reads, as well as writes, never go past --size bytes (#166). 2025-09-30 22:27:25 +01:00
Andrew Wood 751263376b Adjust the format and reparse the display, if a remote update -R was received while in the --watchfd loop. 2025-09-29 21:42:48 +01:00
Andrew Wood d903a7d188 Add a return value to pv_remote_check() so its caller can know whether a message was received. 2025-09-29 21:31:05 +01:00
Andrew Wood 9fe604df1a Move the declaration of changes_made outside the conditional, so as to not break on macOS. 2025-09-29 17:53:56 +01:00
Andrew Wood 64cd9cd85c Move the watchfd %N format insertion into its own function, so it can be called separately elsewhere in future, and to make it easier to extend the %N detection to find %{name} later as well. 2025-09-28 17:22:56 +01:00
Andrew Wood 10ef5a8596 If watching more than one distinct PID with --watchfd, display the PID as well as the FD number (#12). 2025-09-28 16:36:06 +01:00
Andrew Wood 77ed2e5989 Another minor issue noted as a TODO. 2025-09-27 18:32:27 +01:00
Andrew Wood 284ceba52b Add TODO marker after some testing showed an issue. 2025-09-27 18:24:59 +01:00
Andrew Wood 3ea19829d7 Merge pv_watchpid_loop into pv_watchfd_loop, and allow multiple PID / PID:FD sets to be watched at once (#12). 2025-09-27 17:55:18 +01:00
Andrew Wood c49fc4aa57 Eliminate the fd_to_idx array in --watchfd, so that file descriptors aren't constrained to FD_SETSIZE and so we don't have to track another array. 2025-09-26 23:40:39 +01:00
Andrew Wood 7fdb6716e1 In the pvwatchfd_s structure, use booleans "displayable" and "unused" instead of having values of watch_pid=0 for unused and watch_fd=-1 for not displayable, so that each item only means one thing. 2025-09-26 23:01:07 +01:00
Andrew Wood c61c589378 Typo correction in the comment. 2025-09-26 22:29:36 +01:00
Andrew Wood 0b2f9ec397 Only call pv_watchfd_loop() from main, so that eventually pv_watchpid_loop() can be removed and multiple "-d" values supported (#12). 2025-09-24 22:11:44 +01:00
Andrew Wood a0a9d682ca Reject "-o" when using "-d". 2025-09-23 05:45:43 +01:00
Andrew Wood 22bf08f8e4 Accept additional arguments when -d is specified, expecting them to be more pid[:fd] values (#12). 2025-09-22 21:50:35 +01:00
Andrew Wood b5fbd1978e Replace watch_pid, watch_fd with arrays, though for now only use the first item in the arrays (#12). 2025-09-21 19:50:56 +01:00
Andrew Wood db80f838ff Explicitly set an action variable to say which action to perform, instead of inferring it from other settings like whether a watch PID was set (#12). 2025-09-18 06:18:18 +01:00
Andrew Wood 8c2e934768 Add a TODO marker for the next step to take. 2025-09-18 05:47:15 +01:00
Andrew Wood dbce5b355e Add --watchfd option values to an array in the main state, as well as to the currently used variables (#12). 2025-09-17 23:12:13 +01:00
Andrew Wood 12cc996d32 Add --watchfd option values to an array as well as to the currently used variables (#12). 2025-09-17 22:12:45 +01:00