Commit graph

605 commits

Author SHA1 Message Date
Sylvestre Ledru
ac031dffa4 new release 0.0.5 2021-04-03 10:30:07 +02:00
Sylvestre Ledru
4d7ad77433 rustfmt the recent change 2021-04-02 23:31:22 +02:00
est31
14a49edd1c
Use Iterator::copied() in sieve.rs (#1774) 2021-04-02 23:30:07 +02:00
Jamie Quigley
31f5666727
more: add error message if the argument is a directory (#1983) 2021-04-02 22:34:02 +02:00
Sivachandran
9151410d08
csplit: move from getopts to clap (#1995) 2021-04-02 22:14:56 +02:00
Juliana Rodrigueiro
97da14fcb2 install: Fix behaviour of the -d flag
The '-d' flag should create all ancestors (or components) of a
directory regardless of the presence of the "-D" flag.

From the man page:
       -d, --directory
              treat all arguments as directory names; create all components of the specified directories

With GNU:
    $ install -v -d dir1/di2
    install: creating directory 'dir1'
    install: creating directory 'dir1/di2'
With this version:
    $ ./target/release/install -v -d dir3/di4
    install: dir3/di4: No such file or directory (os error 2)
    install: dir3/di4: chmod failed with error No such file or directory (os error 2)
    install: created directory 'dir3/di4'

Also, one of the unit tests misinterprets what a "component" is,
and hence was fixed.
2021-04-02 20:04:25 +01:00
Juliana Rodrigueiro
2a02f01fc2 install: Don't display success message when the dir was not created
Also don't run chmod when we just failed to create the directory.

Behaviour before this patch:

    $ ./target/release/install -v -d dir1/dir2
    install: dir1/dir2: Permission denied (os error 13)
    install: dir1/dir2: chmod failed with error No such file or directory (os error 2)
    install: created directory 'dir1/dir2'
2021-04-02 19:59:43 +01:00
Juliana Rodrigueiro
349c4f7af6 install: Make log message identical to GNU install
$ install -v -d dir1
    install: creating directory 'dir1'
2021-04-02 19:59:43 +01:00
Sylvestre Ledru
4934af0c3d
Merge pull request #2007 from drocco007/fold-preserve-blank-lines
fold: preserve blank lines
2021-04-02 20:00:05 +02:00
Daniel Rocco
d12f96d9ca fold: preserve blank lines 2021-04-02 10:14:11 -04:00
ReggaeMuffin
2eb32d845e
chores: run cargo +1.40.0 fmt
Apparently fmt from 1.40.0 is a bit more strict in some places

Let me know if this is worthwhile merging :)
2021-04-02 10:56:49 +01:00
Sylvestre Ledru
de6aa69259
Merge pull request #1997 from sylvestre/polish3
Rustfmt+clippy+cargo.lock update
2021-04-02 11:37:56 +02:00
Jan Scheer
4a6176855a
relpath: move from getops to clap (#1939) (#1990)
* relpath: add tests

* relpath: move from getopts to clap
2021-04-02 09:55:57 +02:00
Paul Otten
7859bf885f Consistency with GNU version of du when doing du -h on an empty file 2021-04-01 19:42:43 -04:00
Paul Otten
7112182dbc Consider device id when comparing files 2021-04-01 18:37:20 -04:00
Sylvestre Ledru
dcbcf01665 Fix some clippy warnings 2021-04-01 23:42:30 +02:00
Sylvestre Ledru
6734ce785d rustfmt the recent changes 2021-04-01 23:25:37 +02:00
paulotten
090d29496a
Issue #1622 port du to windows (#1788)
* Issue #1622 port `du` to windows

* Attempt to support Rust 1.32

Old version was getting "attributes are not yet allowed on `if`
expressions" on Rust 1.32

* Less #[cfg]

* Less duplicate code.

I need the return and the semicolon after if otherwise the second #[cfg]
leads to unexpected token complilation error

* More accurate size on disk calculations for windows

* Expect the same output on windows as with WSL

* Better matches output from du on WSL

* In the absence of feedback I'm disabling these tests on Windows.
They require `ln`. Windows does not ship with this utility.

* Use the coreutils version of `ln` to test `du`

`fn ccmd` is courtesy of @Artoria2e5

* Look up inodes (file ids) on Windows

* One more #[cfg(windows)] to prevent unreachable statement warning on linux
2021-04-01 23:16:47 +02:00
Árni Dagur
7a947cfe46
cat: Improve performance on Linux (#1978)
* cat: Improve performance, especially on Linux

* cat: Don't use io::copy for splice fallback

On my MacBook Pro 2020, it is around 25% faster to not use io::copy.

* cat: Only fall back to generic copy if first splice fails

* cat: Don't double buffer stdout

* cat: Don't use experimental or-pattern syntax

* cat: Remove nix symbol use from non-Linux
2021-04-01 23:08:48 +02:00
Terts Diepraam
2941dfd698
ls: quoting style (#1989) 2021-04-01 22:50:13 +02:00
Aleksandar Janicijevic
cf4970f083
shred: Replaced eprintln with show_error (#1992) 2021-04-01 08:53:48 +02:00
Alessandro Stoltenberg
7669a4387a
echo: Some minor changes to options (#1960) 2021-03-31 22:27:24 +02:00
Yagiz Degirmenci
e958864bd9
tac: exit with proper code, move from getopts to clap, add test for invalid inputs (#1957) 2021-03-31 21:21:10 +02:00
Aleksandar Janicijevic
751ae6a8f8
shred: use clap for argument management (#1961) 2021-03-31 21:19:04 +02:00
desbma
be03c948ed
Add pre-commit hook + run fmt (#1959) 2021-03-30 21:24:01 +02:00
Árni Dagur
698dab12a6
wc: Don't read() if we only need to count number of bytes (Version 2) (#1851)
* wc: Don't read() if we only need to count number of bytes

* Resolve a few code review comments

* Use write macros instead of print

* Fix wc tests in case only one thing is printed

* wc: Fix style

* wc: Use return value of first splice rather than second

* wc: Make main loop more readable

* wc: Don't unwrap on failed write to stdout

* wc: Increment error count when stats fail to print

* Re-add Cargo.lock
2021-03-30 20:53:02 +02:00
Kourosh
775682508a
more: move from getopts to clap (#1962) 2021-03-30 20:39:58 +02:00
Sylvestre Ledru
a5402eed41
Merge pull request #1967 from jhscheer/iss1775
chmod: fixed behavior for dangling symlinks (#1775)
2021-03-30 20:30:16 +02:00
Jan Scheer
2647a72e9e chmod: fixed behavior for dangling symlinks (#1775) 2021-03-29 22:07:09 +02:00
Yagiz Degirmenci
25df51a525
fix(cksum): check metadata of the path (#1951)
* fix: check metadata of the path

* chore: use existing path
2021-03-29 18:44:42 +02:00
Raymond Wang
d88de3c6a6
tr: more explicit flag names (#1966) 2021-03-29 17:16:48 +02:00
Ricardo Iglesias
5f17719a59
Implemented --indicator-style flag on ls. (#1907)
* Implemented --indicator-style flag on ls.

* Rust fmt

* Grouped indicator_style args.

* Added tests for sockets and pipes.

Needed to modify util.rs to add support for pipes (aka FIFOs).

* Updated util.rs to remove FIFO operations on Windows

* Fixed slight error in specifying (not(windows))

* Fixed style violations and added indicator_style test for non-unix systems
2021-03-29 13:10:13 +02:00
Mikadore
8320b1ec5f
Rewrote head (#1911)
See https://github.com/uutils/coreutils/pull/1911
for the details
2021-03-29 13:08:48 +02:00
electricboogie
da5f2f3a6c
sort: Add a GNU-style Random Sorter (#1922) 2021-03-29 13:05:52 +02:00
Yagiz Degirmenci
8cc7a90d7c
sum: fix crash on invalid inputs, move to clap, add tests (#1952) 2021-03-29 13:03:56 +02:00
Raymond Wang
ab5b6dd844
tr: move from getopts to claps #1929 (#1954) 2021-03-29 13:03:24 +02:00
Sylvestre Ledru
acb57ecbd0
Merge pull request #1955 from jhscheer/chmod2clap
chmod: move from getopts to clap
2021-03-29 13:02:13 +02:00
Dominik Bittner
3714e2201b
tty: Move from getopts to clap (#1956)
+ tty: Add some tests
2021-03-29 13:00:47 +02:00
Jan Scheer
a9a3794d5a chmod: add tests 2021-03-28 20:56:37 +02:00
Craig Pastro
6d4f70ccb2
shuf: move from getopts to clap (#1950) 2021-03-28 15:08:37 +02:00
Jan Scheer
43c6a52b63 chmod: move from getopts to clap 2021-03-28 13:11:39 +02:00
k0ur0x
bcb1828ad6 comm: move from getopts to clap 2021-03-28 05:51:43 +04:30
Sylvestre Ledru
dc879634cb
Merge pull request #1839 from jhscheer/iss1769
rm: fix for -d to match GNU's output #1769
2021-03-27 22:56:16 +01:00
Ivan
500771c78d
tee: should match GNU's output if used with /dev/full (#1944)
+ aligned 'tee' output with GNU tee when one of the files is '/dev/full'
+ don't stop tee when one of the outputs fails; just continue and return
error status from tee in the end

Co-authored-by: Ivan Rymarchyk <irymarchyk@arlo.com>
2021-03-27 20:02:49 +01:00
Yagiz Degirmenci
f66a188414
mkfifo: general refactor, move to clap, add tests (#1945)
* mkfifo: general refactor, move to clap, add unimplemented flags

* chore: update Cargo.lock

* chore: delete unused variables, simplify multiple lines with crash

* test: add tests

* chore: revert the use of crash

* test: use even more invalid mod mode
2021-03-27 20:00:59 +01:00
Yagiz Degirmenci
0bdd61af5e
cksum: use clap for argument management (#1943) 2021-03-27 13:31:29 +01:00
Yagiz Degirmenci
ac7edcc4fa
ptx: delete getopts dependency (#1942)
* chore: delete getopts dependency

* deps: update Cargo.lock
2021-03-27 13:31:06 +01:00
Sylvestre Ledru
faef7e9214 fix(install): Unbreak the CI by bringing the old behavior for install of /dev/null 2021-03-27 10:08:06 +01:00
Antonio Gurgel
35675fdfe7
install: implement -C / --compare (#1811)
* install: implement `-C` / `--compare`

GNU coreutils [1] checks the following: whether
- either file is nonexistent,
- there's a sticky bit or set[ug]id bit in play,
- either file isn't a regular file,
- the sizes of both files mismatch,
- the destination file's owner differs from intended, or
- the contents of both files mismatch.

[1] https://git.savannah.gnu.org/cgit/coreutils.git/tree/src/install.c?h=v8.32#n174

* Add test: non-regular files

* Forgot a #[test]

* Give up on non-regular file test

* `cargo fmt` install.rs
2021-03-27 09:18:47 +01:00
Rein F
3ca21940f8
nl: move from getopts to clap (#1921) 2021-03-27 08:55:31 +01:00
Terts Diepraam
955c547adf
ls: overrideable -n option (#1917) 2021-03-26 19:12:01 +01:00
Yagiz Degirmenci
83f8140aaf
cat: move cat to clap (#1910) 2021-03-26 17:26:37 +01:00
Max Semenik
035f811dd0
Fix "panic message is not a string literal" warnings (#1915)
New in Rust 1.51.

Closes #1914
2021-03-26 11:09:16 +01:00
Jan Scheer
aac79d13b3
Merge branch 'master' into iss1769 2021-03-25 23:23:08 +01:00
Jan Scheer
61eb4f250d rm: add more tests 2021-03-25 23:04:02 +01:00
Terts Diepraam
23b70001a8
ls: version sort (#1898) 2021-03-25 20:24:53 +01:00
Sivachandran
52997b63fb
pathchk: move from getopts to clap (#1897) 2021-03-25 11:27:34 +01:00
Mekka
99da9ea6ec
Cleanup: Fix grammar in "cp" macro comments. (#1905)
Replaced "they if" with "if they" in the comments above the "prompt_yes" macro.
2021-03-25 10:36:48 +01:00
Yagiz Degirmenci
63317b3529
ptx: move from getopts to clap (#1893)
* ptx: move from getopts to clap

* chore: delete comment

* chore: fix some clippy warnings
2021-03-24 21:46:17 +01:00
Jan Scheer
bdf603a65e rm: make -d/-r obligatory for removing symlink_dir (windows) 2021-03-24 12:42:23 +01:00
Kevin Burke
4873c8a24b
mv: ensure line prints (#1890)
Previously this used `print` instead of `println`, and as a result the
prompt would never appear and the command would hang. The Rust docs
note this about print:

> Note that stdout is frequently line-buffered by default so it may be
> necessary to use io::stdout().flush() to ensure the output is emitted
> immediately.

Changing to `println` fixes the issue.

Fixes #1889.

Co-authored-by: Kevin Burke <kevin@burke.dev>
2021-03-23 21:49:35 +01:00
Alessandro Stoltenberg
b54f0b1ff2
echo: Refactored help message. (#1886) 2021-03-23 11:55:18 +01:00
Yagiz Degirmenci
545fe7d887
feat(unexpand): move from getopts to clap (#1883)
* feat: move unexpand to clap

* chore: allow muliple files

* test: add test fixture, test reading from a file

* test: fix typo on file name, add test for multiple inputs

* chore: use 'success()' instead of asserting

* chore: delete unused variables

* chore: use help instead of long_help, break long line
2021-03-23 09:42:05 +01:00
Yagiz Degirmenci
5e2e2e8ab6
echo: allow leading hyphens (#1887)
* fix: use settings to allow leading hyphen and trailing var arg

fixes: https://github.com/uutils/coreutils/issues/1873

* test: add test cases

* test: add more test cases with different order in hyphen values

* chore: add comment to explain why we need TrailingVarArg
2021-03-23 09:40:05 +01:00
Yagiz Degirmenci
e5ef7486d5
feat: move echo to clap (#1884) 2021-03-22 22:42:14 +01:00
Neculai Balaban
a1b50ae0f4
nohup: move from getopts to clap (#1871)
- changed some error return codes to match GNU implementation
- changed warning/error messages to match GNU nohup
- replaced getopts dependency with clap
- added a test
2021-03-22 20:09:00 +01:00
Yagiz Degirmenci
20dec4cbba
fix: fix clippy warnings (#1876) 2021-03-22 20:08:07 +01:00
Terts Diepraam
de3f9b8186
ls: across & commas formats and width parameter (#1869) 2021-03-22 18:24:23 +01:00
Yagiz Degirmenci
d86ee34bc6
tsort: move from getopts to clap (#1867) 2021-03-22 18:16:28 +01:00
Yagiz Degirmenci
27b7552ef4
fix(tail): add support for negative indexing (#1865)
closes: https://github.com/uutils/coreutils/issues/1860
2021-03-22 10:01:54 +01:00
Sylvestre Ledru
21be280c5a rustfmt the od changes 2021-03-21 22:22:21 +01:00
Yagiz Degirmenci
6c98415340
fix(head): check the whether file exists before unwrap (#1858)
closes https://github.com/uutils/coreutils/issues/1800
2021-03-21 21:27:44 +01:00
pedrohjordao
ca8fbc37bf
od: Changes command line parser to clap (#1849) 2021-03-21 16:19:30 +01:00
Yagiz Degirmenci
f60790dd41
chroot: move to clap from getopts (#1792)
+ add tests
2021-03-21 16:18:47 +01:00
Terts Diepraam
25d4a08387
ls: long format author, group and owner (#1850)
This PR adds the options to customize what information is shown in long format regarding author, group & owner. Specifically it adds:
- `--author`: shows the author, which is always the same as the owner. GNU has this feature because GNU/Hurd supports a difference between author and owner, but I don't think Rust supports GNU/Hurd, so I just used the owner.
- `-G` & `--no-group`: hide the group information.
- `-o`: hide the group and use long format (equivalent to `-lG`).
- `-g`: hide the owner and use long format.

The `-o` and `-g` options have some interesting behaviour that I had to account for. Some examples:
- `-og` hides both group and owner.
- `-ol` still hides the group. Same behaviour with variations such as `-o --format=long`, `-gl`, `-g --format=long` and `-ogl`.
- They even retain some information when overridden by another format: `-oCl` (or `-o --format=vertical --format=long`) still hides the group.

My previous solution for handling the behaviour where `-l1` shows the long format did not fit with these additions, so I had to rewrite that as well.

The tests only cover the how many names (author, group and owner) are present in the output, so it can't distinguish between, for example, author & group and group & owner.
2021-03-21 16:18:06 +01:00
Sylvestre Ledru
45acb087b8
Merge pull request #1848 from nomius10/install_bugfix
install: fix bug #1823
2021-03-20 20:53:57 +01:00
Neculai Balaban
f8125a1040 install: match GNU warning output 2021-03-20 16:11:29 +02:00
Neculai Balaban
0f7423dfa6 install: fix bug #1823 2021-03-20 14:49:22 +02:00
nicoo
8b9ac0c7c3
Revert #1571 “perf/factor ~ deduplicate divisors” (#1842)
It was a draft PR, not ready for merging, and its premature inclusion
caused repeated issues, see 368f47381b & friends.

Close #1841.

This reverts commits 3743a3e1e7,
                     ce218e01b6, and
                     b7b0c76b8e.
2021-03-20 11:46:58 +01:00
Alex Lyon
e9adc5067b
cksum: generate CRC table in a const fn (#1744) 2021-03-20 10:33:04 +01:00
Jan Scheer
0e217e202a
tee: move from getopts to clap (#1814) 2021-03-19 22:58:50 +01:00
Sylvestre Ledru
e76ce1e908
Merge pull request #1844 from tertsdiepraam/ls/si
ls: --si flag and more compatible size formatting
2021-03-19 21:18:25 +01:00
Neculai Balaban
c6927d97c8
cp: add support for -x/--one-file-system (#1840) 2021-03-19 21:15:35 +01:00
Terts Diepraam
118b802fe8 ls: --si and more compatible size formatting 2021-03-19 15:14:25 +01:00
Sylvestre Ledru
976fa95ce8 fix(ls): fix a clippy warning
"this `if` has identical blocks"
2021-03-19 14:25:07 +01:00
Sylvestre Ledru
e521b46c09
Merge pull request #1820 from tertsdiepraam/master
ls: move from getopts to clap and structure configuration
2021-03-19 09:55:27 +01:00
Marco Satti
5ec87dc70a
date: Implement setting the date on Unix & Windows (#1798)
* date: implement set date for unix and windows

Parsing the date string is not fully implemented yet, as in it relies
on the internals of chrono - things like "Mon, 14 Aug 2006 02:34:56 -0600"
do not work, nor does "2006-08-14 02:34:56" (no TZ / local time). This
is no different to using the "--date" option however, and will get fixed
when `parse_date` is a bit smarter.

Only supports unix and Windows platforms for now.
2021-03-19 09:54:01 +01:00
Sylvestre Ledru
fcccc2a973
Merge pull request #1826 from pfnsec/master
head: add support for -z/--zero-terminated
2021-03-18 21:37:12 +01:00
Jan Scheer
58b9372dbe rm: fix for -d to match GNU's output #1769 2021-03-18 14:46:56 +01:00
Sylvestre Ledru
22e22bc074
Merge pull request #1835 from aspenluxxxy/update-nix
Update nix to 0.13 in uu_more
2021-03-18 14:37:54 +01:00
aspen
4e29b693f8
uutils: change every target_os = "macos" to target_vendor = "apple" 2021-03-18 08:42:53 -04:00
aspen
ed7e24c5b0
uu_more: update nix to 0.13 2021-03-18 08:39:06 -04:00
Sylvestre Ledru
99be7a3172
Merge pull request #1810 from jeckersb/nice-clap
nice: move from getopts to clap #1794
2021-03-17 22:03:42 +01:00
Sylvestre Ledru
44a7adc9a0
Merge pull request #1812 from konomith/feature/preserve_timestamps_#1758
install: Implement --preserve-timestamps (-p)
2021-03-17 22:02:54 +01:00
Sylvestre Ledru
a690ffde41
Merge pull request #1821 from deantvv/expand-clap
expand: replace getopts with clap
2021-03-17 22:01:31 +01:00
Sylvestre Ledru
6a109a5069
Merge pull request #1834 from jhscheer/patch-3
rm: add an additional flag -R for --recursive
2021-03-17 21:52:02 +01:00
Sylvestre Ledru
ba55ef166e
Merge pull request #1827 from drocco007/numfmt-delimiter
numfmt: implement --delimiter
2021-03-17 21:50:47 +01:00
Jan Scheer
d9adec3496
add comment 2021-03-17 14:46:25 +01:00
nicoo
955fa74a42
factor::tests: Check that powers of known-factorization numbers are factored correctly (#1831)
* factor::tests::recombines_factors: Minor refactor (skip useless bool)

* factor::tests: Check factorizations of powers of factored numbers

* factor::Factors: Add debug assertions to (Factor ^ Exponent)

* factor::tests: Drop obsoleted tests

`factor_correctly_recombines_prior_test_failures` was replaced with
`factor_2044854919485649` as this was the only test not subsumed.

* factor::tests::2044854919485649: Check the expected factorisation
2021-03-17 13:58:53 +01:00
John Eckersberg
64b8c8aac7 nice: move from getopts to clap #1794 2021-03-17 08:52:13 -04:00