|
977 | 977 | <span id="977">977</span>
|
978 | 978 | <span id="978">978</span>
|
979 | 979 | <span id="979">979</span>
|
| 980 | +<span id="980">980</span> |
| 981 | +<span id="981">981</span> |
| 982 | +<span id="982">982</span> |
| 983 | +<span id="983">983</span> |
| 984 | +<span id="984">984</span> |
| 985 | +<span id="985">985</span> |
| 986 | +<span id="986">986</span> |
| 987 | +<span id="987">987</span> |
| 988 | +<span id="988">988</span> |
| 989 | +<span id="989">989</span> |
| 990 | +<span id="990">990</span> |
| 991 | +<span id="991">991</span> |
| 992 | +<span id="992">992</span> |
| 993 | +<span id="993">993</span> |
| 994 | +<span id="994">994</span> |
| 995 | +<span id="995">995</span> |
| 996 | +<span id="996">996</span> |
980 | 997 | </pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.
|
981 | 998 | //
|
982 | 999 | // (c) Tyler Steele <tyler.steele@protonmail.com>
|
|
1380 | 1397 | <span class="kw">let </span>output_thread = thread::spawn(gen_prog_updater(rx, i.settings.status));
|
1381 | 1398 | <span class="kw">let </span><span class="kw-2">mut </span>progress_as_secs = <span class="number">0</span>;
|
1382 | 1399 |
|
| 1400 | + <span class="comment">// Optimization: if no blocks are to be written, then don't |
| 1401 | + // bother allocating any buffers. |
| 1402 | + </span><span class="kw">if let </span><span class="prelude-val">Some</span>(Num::Blocks(<span class="number">0</span>) | Num::Bytes(<span class="number">0</span>)) = i.settings.count { |
| 1403 | + <span class="kw">return </span><span class="self">self</span>.finalize(rstat, wstat, start, <span class="kw-2">&</span>prog_tx, output_thread); |
| 1404 | + }; |
| 1405 | + |
1383 | 1406 | <span class="comment">// Create a common buffer with a capacity of the block size.
|
1384 | 1407 | // This is the max size needed.
|
1385 | 1408 | </span><span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="macro">vec!</span>[BUF_INIT_BYTE; bsize];
|
|
1418 | 1441 | prog_tx.send(prog_update).unwrap_or(());
|
1419 | 1442 | }
|
1420 | 1443 | }
|
| 1444 | + <span class="self">self</span>.finalize(rstat, wstat, start, <span class="kw-2">&</span>prog_tx, output_thread) |
| 1445 | + } |
1421 | 1446 |
|
| 1447 | + <span class="doccomment">/// Flush output, print final stats, and join with the progress thread. |
| 1448 | + </span><span class="kw">fn </span>finalize<T>( |
| 1449 | + <span class="kw-2">&mut </span><span class="self">self</span>, |
| 1450 | + rstat: ReadStat, |
| 1451 | + wstat: WriteStat, |
| 1452 | + start: time::Instant, |
| 1453 | + prog_tx: <span class="kw-2">&</span>mpsc::Sender<ProgUpdate>, |
| 1454 | + output_thread: thread::JoinHandle<T>, |
| 1455 | + ) -> std::io::Result<()> { |
1422 | 1456 | <span class="comment">// Flush the output, if configured to do so.
|
1423 | 1457 | </span><span class="self">self</span>.sync()<span class="question-mark">?</span>;
|
1424 | 1458 |
|
|
0 commit comments