To comply with POSIX standard `tee` implementation must not buffer
its output, so we replace std::io::copy implementation that does
buffering with the custom one.
* tail: fix test that disables output in bash shell
* tail: fix platform related issues after test change
* tail: use new imports on same platforms as test they are needed for
* chore: cleanup workspace crates
* properly add all crates to the workspace cargo.toml as members
* except `fuzz` because it still has some issues, TBD
* use quotes around `true` and `false` to ensure there is no bool confusion
* remove a few leftover readme comments
* mark all unpublishable crates as `publish = false` to avoid accidental publishing
* Add `uutests` to the main workspace
* grammar
* a bit more cleanup based on feedback
* revert true/false
* Update tests/benches/factor dependencies
* cat: Check if a file can be overwritten safely in Unix
* cat: Check if a file can be overwritten safely in Windows
* cat: Test writing read-write file that is input and output
* cat: Unit test `is_appending` function
* cat: Unit test `is_unsafe_overwrite` function
* cat: Comment why a few function calls could return Err
* cat: Remove obvious comments from test
* reworked arg processing. control character mappings are correctly grouped now, ie 'stty erase ^H'
* stty: setting control chars to undefined (disabling them) is implemented
* setting control chars
* stty: can now set control chars. need to improve checks on valid mappings
* stty: matches GNU in what control character mappings are allowed
* stty: run rustfmt and remove extra comments
* stty: setting control char code review fixes
* stty: fix rustfmt errors
* stty: more small edits after review
* stty: refactor set control char changes for better testing
* stty: fix ci error
* stty: fix issues from code review
* Fix linting and style issues
* Change condition to not fail for dangling symlinks
The function `move_files_into_dir` had a condition that failed when a
dangling symlink was moved into a folder, which resulted in a file
or directory doesn't exist error
* Added a test case
Summary:
Partial fix for https://github.com/uutils/coreutils/issues/6591
The current code declare libstdbuf as a build-dependency of stdbuf as a
workaround to enforce that libstdbuf is compiled before stdbuf. This breaks
cross-compilation, because build-dependencies were compiled for the host
architecture, and not for the target architecture.
The reason this workaround is necessary is that bindeps is available only in nightly at the moment:
https://rust-lang.github.io/rfcs/3028-cargo-binary-dependencies.html
This commit replaces the "build-dependency" workaround with another workaround:
calling cargo manually to build libstdbuf in the build.rs of stdbuf, in order to ensure that libstdbuf is built before stdbuf.
Changes:
- Removed cpp/cpp_build dependencies:
The cpp, cpp_build, and related dependencies were removed because they made cross-compilation in a build.rs file very complex, since you need
to pass proper CXX env variables for cross-compilation, whereas cross-compiling rust code using cargo is quite simple.
Provided Rust implementations for getting stdin, stdout, and stderr pointers.
Switched from C++/cpp macro-based initialization to using the Rust ctor crate for library initialization.
- Remove "feat_require_crate_cpp" which is not needed any more, since stdbuf was the only utility using the cpp crate.
Tests:
This commit fixes e.g. this test:
cross test --target aarch64-unknown-linux-gnu --features stdbuf test_stdbuf::test_libstdbuf_preload -- --nocapture
- The "i686" build of stdbuf was also broken (stdbuf 32 bits, but libstdbuf 64 bits) and test_stdbuf::test_libstdbuf_preload of the i686 builds in github CI serves as regression
test for this issue, no need to add a cross-rs test for aarch64.
- The x86_64 musl build of stdbuf was also broken and was passing tests in CI only because it was compiled with the wrong libc (glibc instead of musl)
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>