Commit graph

995 commits

Author SHA1 Message Date
Michael Debertol
83554f4475 add benchmarking instructions 2021-05-01 21:16:29 +02:00
Ricardo Iglesias
193ad56c2a Removed clippy warnings. 2021-05-01 11:36:46 -07:00
Ricardo Iglesias
f307de22d0 base64: Refactor argument parsing
Moved most of the argument parsing logic to `base32/base_common.rs` to
allow for significant code reuse.
2021-05-01 11:36:46 -07:00
Ricardo Iglesias
05b20c32a9 base64: Moved argument parsing to clap.
Moved argument parsing to clap and added tests to cover using "-" as
stdin, passing in too many file arguments, and updated the "wrap" error
message in the tests.
2021-05-01 11:36:46 -07:00
Jeffrey Finkelstein
5674d09327 fixup! tr: implement translate and squeeze (-s) mode 2021-05-01 13:01:55 -04:00
Jan Scheer
83eb704415 Merge branch 'master' into issue2147 2021-05-01 18:52:35 +02:00
Jan Scheer
117e84eed3 tr: implement complement separately from delete or squeeze (#2147) 2021-05-01 18:46:13 +02:00
Sylvestre Ledru
bffcb431b5
Merge pull request #2148 from jhscheer/pinky2clap
pinky: move from getopts to clap (#2123)
2021-05-01 17:49:10 +02:00
Sylvestre Ledru
34bf7cc5ea
Merge pull request #2150 from jhscheer/fix_clap_short
tr/dirname: fix clap short_alias
2021-05-01 17:39:15 +02:00
Michael Debertol
be0c924c95 Merge branch 'master' of https://github.com/uutils/coreutils into sort-no-json-extsort 2021-05-01 17:29:03 +02:00
Michael Debertol
01d178cf17 sort: don't rely on serde-json for extsort
It is much faster to just write the lines to disk, separated by \n
(or \0 if zero-terminated is enabled), instead of serializing to json.

external_sort now knows of the Line struct instead of interacting with
it using the ExternallySortable trait. Similarly, it now uses the
crash_if_err! macro to handle errors, instead of bubbling them up.

Some functions were changed from taking &[Line] as the input to taking
an Iterator<Item = Line>. This removes the need to collect to a Vec
when not necessary.
2021-05-01 17:20:56 +02:00
Nicolas Thery
70ab0d01d2 kill: change default signal
The default signal is SIGTERM, not SIGKILL.
2021-05-01 16:47:42 +02:00
Sylvestre Ledru
d2913f8080 rustfmt the recent change 2021-05-01 13:12:10 +02:00
Sylvestre Ledru
59ea28628b printf: remove useless declaration 2021-05-01 13:11:41 +02:00
Jeffrey Finkelstein
0f3bc23739 tr: implement translate and squeeze (-s) mode
Add translate and squeeze mode to the `tr` program. For example:

    $ printf xx | tr -s x y
    y

Fixes #2141.
2021-04-30 18:17:05 -04:00
Jan Scheer
798a033311 pinky: move from getopts to clap (#2123) 2021-04-30 20:57:38 +02:00
Jan Scheer
45dd9d4e96 tr/dirname: fix clap short_alias 2021-04-30 20:19:43 +02:00
Terts Diepraam
d300895d28 ls: add birth time for windows and attampt to fix test 2021-04-29 22:23:04 +02:00
Terts Diepraam
d624827913 ls: fix windows and add more file types 2021-04-29 18:44:46 +02:00
Terts Diepraam
c69afa00ff ls: implement device symbol and id 2021-04-29 18:25:34 +02:00
Michael Debertol
fecbf3dc85 sort: remove an unneeded clone() 2021-04-29 18:05:55 +02:00
Michael Debertol
a4813c2646 sort: actually use the f64 cache
This was probably reverted accidentally.
2021-04-29 18:05:43 +02:00
Michael Debertol
9f45431bf0 sort: add some custom string comparisons
This removes the need to allocate a new string for each line when used
with -f, -d or -i. Instead, a custom string comparison algorithm takes
care of these cases.

The resulting performance improvement is about 20% per flag (i.e. there
is a 60% improvement when combining all three flags)

As a side-effect, the size of the Line struct was reduced from 96 to 80
bytes, reducing the overhead for each line.
2021-04-29 18:05:14 +02:00
Arijit Dey
2593b3f2e1
Rewrite the cli usage function
Add crossterm as dependency

Complete the paging portion

Fixed tests

cp: extract linux COW logic into function

cp: add --reflink support for macOS

Fixes #1773

Fix error in Cargo.lock

Quit automatically if not much output is left

Remove unnecessary redox and windows specific code

Handle line wrapping

Put everything according to uutils coding standards

Add support for multiple files

Fix failing test

Use the args argument to get cli arguments

Fix bug where text is repeated multiple times during printing

Add a little prompt

Add a top file prompt for multiple files

Change println in loops to stdout.write and setup terminal only once

Fix bug where all lines were printed in a single row

Remove useless file and fix failing test

Fix another test
2021-04-29 20:23:35 +05:30
nicoo
b89978a4c9
factor: Add annotations for coz, the causal profiler (#2142)
* factor: Add annotations for coz, the causal profiler

* Update Cargo.lock

Generated with `nix-shell -p rustup --run 'cargo +1.40.0 update'`
2021-04-29 15:56:56 +02:00
Jan Scheer
512d206f1e who: move from getopts to clap 2.33.3 (#2124) 2021-04-29 00:11:21 +02:00
Jan Scheer
6f16cafe88 who: move from getopts to clap (#2124) 2021-04-28 22:58:28 +02:00
Rein F
a60fd07bc3
ls: improvements on time handling (#1986)
* ls: added creation time

* ls: Added most time features

Missing support for posix-,Format+, translating via locales. Also required more tests

* ls: rustfmt

* ls: Additional changes and fixes

Fixed the argument order, fixed a wrong iso format.

* ls: additional tests for styles

* ls: perfected arg parsing on time styles

* fix birthime test

* ls: Use 'stdout_str' in new tests

* ls: Disabled birthtime test for windows

* ls: removed indoc as a dependency

* ls: birthime test, sync first created file

* ls: birthime test, add comment explaining sync

* Removed ruby testfile birth_test.rb

This accidentally got commited in a merge
2021-04-28 20:54:27 +02:00
Sylvestre Ledru
167520067c
Merge pull request #2111 from cbjadwani/cut_optimizations
cut: optimizations
2021-04-28 20:40:28 +02:00
Chirag Jadwani
25f99097cc cut: add BENCHMARKING.md
and minor refactoring
2021-04-28 23:28:26 +05:30
Sylvestre Ledru
a37e3181a2
Merge pull request #2130 from electricboogie/master
sort: implement --buffer-size and --temporary-directory (external sort)
2021-04-28 09:21:14 +02:00
Sylvestre Ledru
33139817a2
Merge pull request #2136 from jaggededgedjustice/allow-truncate-size-and-reference
Allow truncate to take --size and --reference
2021-04-27 22:43:25 +02:00
electricboogie
ec19bb72d5 Modified to remove 2 unnecessary consts now that we use std::env::temp_dir 2021-04-27 15:39:20 -05:00
Sylvestre Ledru
30cf6ec235
Merge pull request #2131 from ricardoaiglesias/base32-clap
Base32 clap
2021-04-27 09:20:45 +02:00
Ricardo Iglesias
ae0cabc60a Moved argument parsing to uumain. 2021-04-26 20:15:11 -07:00
Sylvestre Ledru
7a3b44d972
Merge pull request #2133 from tertsdiepraam/ls/fix_color_grid_alignment
`ls`: fix grid alignment with `--color`
2021-04-26 22:51:21 +02:00
Sylvestre Ledru
ece5e14b0d
fix a typo 2021-04-26 22:51:02 +02:00
James Robson
a7037b1ca9 Allow truncate to take --size and --reference 2021-04-26 18:39:32 +01:00
Terts Diepraam
35838dc8a9 ls: document hyperfine script 2021-04-26 18:36:15 +02:00
Terts Diepraam
4023e40174 ls: further reduce OsStr -> String conversions 2021-04-26 18:03:56 +02:00
Ricardo Iglesias
11d0565f0e base32: Moved clap argument parsing to base32.rs
Now, all base_common.rs has is the handle_input function.
2021-04-26 08:22:41 -07:00
Ricardo Iglesias
d56462a4b3 base32: Fixed style violations. Added tests
Tests now cover using "-" as standard input and reading from a file.
2021-04-26 08:00:55 -07:00
electricboogie
f3ed5a100f Possible fix to Windows issues, ext_sort bool setting 2021-04-26 08:54:40 -05:00
Terts Diepraam
c69b72c840 ls: forgot to commit Cargo.{toml, lock} 2021-04-26 15:04:55 +02:00
Terts Diepraam
58fd61b3e8 ls: fix grid alignment for unicode 2021-04-26 15:00:39 +02:00
Terts Diepraam
cfc11b47a5 ls: fix grid alignment with --color 2021-04-26 14:41:41 +02:00
Terts Diepraam
e4c0069493 ls: remove path strip 2021-04-26 09:53:13 +02:00
Terts Diepraam
322478d9a2 ls: document flamegraph 2021-04-26 09:37:47 +02:00
Sylvestre Ledru
7dcc8c2960
Merge pull request #1968 from alstolten/feat2
ls: Implements extension sorting
2021-04-26 09:03:06 +02:00
Ricardo Iglesias
99c13f202e Merge branch 'master' of github.com:uutils/coreutils into base32-clap 2021-04-25 22:36:26 -07:00
Ricardo Iglesias
5578ba6eed base32: move from getopts to clap
Note, I needed to change the error messages in one of the tests because
getopt and clap have different error messages when not providing a
default value
2021-04-25 22:24:55 -07:00
electricboogie
c01c6a7d78 Ran rustfmt 2021-04-25 22:41:11 -05:00
electricboogie
6654519c7d Specify a default tempdir for Windows 2021-04-25 22:39:17 -05:00
electricboogie
e5c19734c8 Change Default Buffer to usize::MAX 2021-04-25 21:38:22 -05:00
electricboogie
1a407c2328 Set a dynamic minimum buffer size 2021-04-25 21:17:56 -05:00
electricboogie
8e258075f6 Potential fix to tests on Windows 2021-04-25 19:21:19 -05:00
electricboogie
fc899ffe7a Implement a minimum readback buffer 2021-04-25 19:07:24 -05:00
electricboogie
32222c1ee7 Remove unneeded condition for use of NumCache 2021-04-25 17:52:20 -05:00
electricboogie
0f707cdb25 Adjust max buffer size for read back as well 2021-04-25 16:33:12 -05:00
Christopher Regali
368e984fac
Change unchecked unwrapping to unwrap_or_default for Args-trait (#1845) (#1852)
* Change unchecked unwrapping to unwrap_or_default for argument parsing (resolving #1845)

* Added unit-testing for the collect_str function on invalid utf8 OsStrs

* Added a warning-message for identification purpose to the collect_str method.

* - Add removal of wrongly encoded empty strings to basename
- Add testing of broken encoding to basename
- Changed UCommand to use collect_str in args method to allow for integration testing of that method
- Change UCommand to use unwarp_or_default in arg method to match the behaviour of collect_str

* Trying out a new pattern for convert_str for getting a feeling of how the API feels with more control

* Adding convenience API for compact calls

* Add new API to everywhere, fix test for basename

* Added unit-testing for the conversion options

* Added unit-testing for the conversion options for windows

* fixed compilation and some merge hiccups

* Remove windows tests in order to make merge request build

* Fix formatting to match rustfmt for the merged file

* Improve documentation of the collect_str method and the unit-tests

* Fix compilation problems with test

Co-authored-by: Christopher Regali <chris.vdop@gmail.com>
Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
2021-04-25 23:28:42 +02:00
electricboogie
6f82cd4f15 Fix errors for usize on 32bit platforms 2021-04-25 16:27:36 -05:00
electricboogie
dbdac22262 Add back unstable sort 2021-04-25 15:48:20 -05:00
electricboogie
5fb7014c2b Add a BufWriter for writes out to temp files 2021-04-25 15:42:36 -05:00
electricboogie
733949b2e7 Add dynamic buffer adjustment, fix test comment 2021-04-25 15:13:27 -05:00
Ricardo Iglesias
c3d7358df6
ls: ignore leading period when sorting by name (#2112)
* ls: ignore leading period when sorting by name

ls now behaves like GNU ls with respect to sorting files by ignoring
leading periods when sorting by main.

Added tests to ensure "touch a .a b .b ; ls" returns ".a  a  .b  b"

* Replaced clone/collect calls.
2021-04-25 21:08:05 +02:00
Alessandro Stoltenberg
43f3f7e01c feat2: Rebased on current master and incorporated changes done to the filetype handling. 2021-04-25 20:13:42 +02:00
electricboogie
2f37b85426 unwrap_or_else can be an unwrap_or 2021-04-25 12:58:04 -05:00
Alessandro Stoltenberg
9c221148a8 ls: Extension sorting, use file_stem() instead of to_string_lossy() 2021-04-25 19:45:59 +02:00
Alessandro Stoltenberg
bbcca3eefd ls: Implements https://github.com/uutils/coreutils/issues/1880 extension sorting. 2021-04-25 19:45:59 +02:00
electricboogie
f0a473f40e Fix tests 2021-04-25 12:38:43 -05:00
electricboogie
094d9a9e47 Fix bug in human_numeric convert 2021-04-25 12:27:11 -05:00
electricboogie
4c395146dd Merge branch 'master' of https://github.com/uutils/coreutils 2021-04-25 10:11:27 -05:00
electricboogie
26fc8e57c7 Fix NumCache and Serde JSON conflict by disabling NumCache during extsort general numeric compares 2021-04-25 10:03:29 -05:00
Sylvestre Ledru
e667cc2641
Merge pull request #2115 from tertsdiepraam/ls/reduce_write_calls
`ls`: reduce write syscalls & cleanup
2021-04-25 11:52:51 +02:00
Sylvestre Ledru
c19e191360
Merge pull request #2113 from siebenHeaven/ls-optimize-sort
ls: Use sort_by_cached_key
2021-04-25 11:13:23 +02:00
Terts Diepraam
fc6c7a279e ls: clean up imports 2021-04-25 10:46:51 +02:00
Anup Mahindre
7e06316ece ls: Use sort_by_cached_key 2021-04-25 13:37:07 +05:30
Sylvestre Ledru
441763b73d
Merge pull request #2059 from cbjadwani/master
uniq: avoid building list of duplicate lines
2021-04-25 09:48:48 +02:00
Sylvestre Ledru
d3775ea0e8
Merge pull request #2110 from nthery/cp_reflink_macos
cp: add  --reflink support to macos, fixes #1773
2021-04-25 09:28:14 +02:00
electricboogie
2b8a6e98ee Working ExtSort 2021-04-25 00:20:56 -05:00
Terts Diepraam
e995eea579 ls: general cleanup 2021-04-25 00:23:14 +02:00
Terts Diepraam
ce04f8a759 ls: use bufwriter to write stdout 2021-04-24 23:46:19 +02:00
Nicolas Thery
4bf33e98a8 cp: add --reflink support for macOS
Fixes #1773
2021-04-24 19:26:15 +02:00
Nicolas Thery
b8e23c20c2 cp: extract linux COW logic into function 2021-04-24 19:22:12 +02:00
Chirag Jadwani
2c1459cbfc cut: optimizations
* Use buffered stdout to reduce write sys calls.

This simple change yielded the biggest performace gain.

* Use `for_byte_record_with_terminator` from the `bstr` crate.

This is to minimize the per line copying needed by
`BufReader::read_until`. The `cut_fields` and `cut_fields_delimiter`
functions used `read_until` to iterate over lines. That required copying
each input line to the line buffer. With
`for_byte_record_with_terminator` copying is minimized as it calls our
closure with a reference to BufReader's buffer most of the time.  It
needs to copy (internally) only to process any incomplete lines at the
end of the buffer.

* Re-write `Searcher` to use `memchr`.

Switch from the naive implementation to one that uses `memchr`.

* Rewrite `cut_bytes` almost entirely.

This was already well optimized. The performance gain in this case is
not from avoiding copying. In fact, it needed zero copying whereas new
implementation introduces some copying similar to `cut_fields` described
above. But the occassional copying cost is more than offset by the use
of the very fast `memchr` inside `for_byte_record_with_terminator`.
This change also simplifies the code significantly. Removed the `buffer`
module.
2021-04-24 22:29:48 +05:30
Sylvestre Ledru
2f17bfc14c
Merge pull request #2106 from miDeb/sort-debug
sort: implement --debug
2021-04-24 18:46:58 +02:00
Sylvestre Ledru
c9b0378ca3
Merge pull request #2104 from tertsdiepraam/ls/skip_metadata
`ls`: skip reading metadata
2021-04-24 18:13:53 +02:00
Sylvestre Ledru
d7e8a03237
Merge pull request #2097 from miDeb/sort-disable-dictionary-mode
sort: disallow certain flags with -d and -i
2021-04-24 14:58:32 +02:00
Sylvestre Ledru
b41951614b
Merge branch 'master' into sort-disable-dictionary-mode 2021-04-24 13:56:39 +02:00
Terts Diepraam
1328d18878 ls: remove outdated comment 2021-04-24 13:19:50 +02:00
Michael Debertol
5dcfb51110 flip default for debug to the effective default 2021-04-24 10:52:40 +02:00
Terts Diepraam
728f0bd61d ls: remove redundant parentheses 2021-04-24 10:47:36 +02:00
Terts Diepraam
ce8c58b93e Merge branch 'master' into ls/skip_metadata 2021-04-24 10:45:43 +02:00
Sylvestre Ledru
8ccc6ade61
Merge branch 'master' into split-wsl-detection 2021-04-24 10:24:13 +02:00
Sylvestre Ledru
9517395839
Merge pull request #2088 from nthery/cp_reflink_never
cp: add support for --reflink=never
2021-04-24 10:07:41 +02:00
Sylvestre Ledru
fb6394554e
Merge pull request #2096 from tertsdiepraam/ls/fix_backslash_escape
ls: improve code cov
2021-04-24 10:05:32 +02:00
Sylvestre Ledru
513ff4e45f
Merge branch 'master' into sort-disable-dictionary-mode 2021-04-24 10:04:23 +02:00
Sylvestre Ledru
b96f7dbaea
Merge pull request #2087 from pedrohjordao/printf-clap-opts
Changes parameter parsing to clap
2021-04-24 10:02:05 +02:00
Sylvestre Ledru
372d08c341
Merge pull request #2098 from miDeb/sort-trailing-separator
sort: fix tokenization for trailing separators
2021-04-24 10:00:20 +02:00
Sylvestre Ledru
a9fa4adddf
Merge pull request #2102 from jaggededgedjustice/fix-tail-sleep-interval
tail --sleep-interval takes a value
2021-04-24 09:59:03 +02:00
Sylvestre Ledru
b10837f180
Merge pull request #2103 from jhscheer/refactor_tests
refactor tests (#1982)
2021-04-24 09:58:20 +02:00
Sylvestre Ledru
46b95fb8bd
Merge pull request #2099 from tertsdiepraam/ls/cross_platform_colors
ls: cross-platform colors
2021-04-24 09:56:46 +02:00
Michael Debertol
e6f6b109a5 sort: implement --debug
This adds a --debug flag, which, when activated, will draw lines below
the characters that are actually used for comparisons.

This is not a complete implementation of --debug. It should, quoting the man page
for GNU sort: "annotate the part of the line used to sort, and warn
about questionable usage to stderr". Warning about "questionable usage"
is not part of this patch.

This change required some adjustments to be able to get the range that
is actually used for comparisons. Most notably, general numeric comparisons
were rewritten, fixing some bugs along the lines.

Testing is mostly done by adding fixtures for the expected debug output of
existing tests.
2021-04-23 22:36:15 +02:00
James Robson
b68ecf1269 Allow space in truncate --size 2021-04-23 16:36:46 +01:00
Terts Diepraam
eccb86c9ed ls: fix -a test 2021-04-23 08:26:20 +02:00
Jan Scheer
646c6cacbc refactor tests (#1982) 2021-04-23 02:28:46 +02:00
Terts Diepraam
3874a24457 ls: add once_cell to Cargo.toml 2021-04-23 00:35:45 +02:00
Terts Diepraam
a114f855f0 ls: revert to_ascii_lowercase 2021-04-22 23:43:00 +02:00
Terts Diepraam
e241f3ad69 ls: skip reading metadata 2021-04-22 22:45:24 +02:00
James Robson
3678777539 tail --sleep-interval takes a value 2021-04-22 16:10:08 +01:00
Terts Diepraam
ea10647a62 Merge remote-tracking branch 'upstream/master' into ls/fix_backslash_escape 2021-04-22 14:23:35 +02:00
Terts Diepraam
b9f4964a96 ls: bring up to date with recent changes 2021-04-22 11:39:08 +02:00
Terts Diepraam
cd1514bd57 Merge branch 'master' into ls/cross_platform_colors 2021-04-22 11:30:26 +02:00
Terts Diepraam
4e4c3aba00 ls: don't color symlink target 2021-04-22 11:16:33 +02:00
Anup Mahindre
8554cdf35b
Optimize recursive ls (#2083)
* ls: Remove allocations by eliminating collect/clones

* ls: Introduce PathData structure

- PathData will hold Path related metadata / strings that are required
frequently in subsequent functions
- All data is precomputed and cached and subsequent functions just
use cached data

* ls: Cache more data related to paths

- Cache filename and sort by filename instead of full path
- Cache uid->usr and gid->grp mappings
https://github.com/uutils/coreutils/pull/2099/files
* ls: Add BENCHMARKING.md

* ls: Document PathData structure

* tests/ls: Add testcase for error paths with width option

* ls: Fix unused import warning

cached will be only used for unix currently as current use of
caching gid/uid mappings is only relevant on unix

* ls: Suggest checking syscall count in BENCHMARKING.md

* ls: Remove mentions of sort in BENCHMARKING.md

* ls: Remove dependency on cached

Implement caching using HashMap and lazy_static

* ls: Fix MSRV error related to map_or

Rust 1.40 did not support map_or for result types
2021-04-22 09:19:17 +02:00
Terts Diepraam
1d7e206d72 ls: fix mac build 2021-04-21 20:04:52 +02:00
Michael Debertol
8a05148d7b sort: fix tokenization for trailing separators
Trailing separators were included at the end of the last token, but they
should not be.

This changes tokenize_with_separator as suggested by @cbjadwani.
2021-04-21 19:07:03 +02:00
Terts Diepraam
3fc8d2e422 ls: make compatible with Rust 1.40 again 2021-04-21 18:05:10 +02:00
Terts Diepraam
ff39538375 ls: further refactor --color and classification 2021-04-21 18:00:43 +02:00
Michael Debertol
8b906b9547 remove feature use stabilized in 1.51 2021-04-21 18:00:01 +02:00
Michael Debertol
4a305b32c6 sort: disallow certain flags with -d and -i
GNU sort disallows these combinations, presumably because they are
likely not what the user really wants.

Ignoring characters would cause things to be put together that aren't
together in the input. For example, -dn would cause "0.12" or "0,12" to
be parsed as "12" which is highly unexpected and confusing.
2021-04-21 17:49:40 +02:00
Terts Diepraam
34a824af71 ls: use lscolors crate 2021-04-21 17:35:02 +02:00
Terts Diepraam
29b5b6b276 ls: fix unit tests to match last change 2021-04-21 13:03:31 +02:00
Terts Diepraam
f34c992932 ls: always quote backslash in shell style 2021-04-21 12:45:21 +02:00
Árni Dagur
387227087f
cat: Put splice code in separate file, handle more failures (#2067)
* cat: Refactor splice code, handle more failures

* cat: Add tests for stdout redirected to files
2021-04-21 12:21:31 +02:00
Terts Diepraam
fd54614130 Merge branch 'master' into ls/fix_backslash_escape 2021-04-21 12:06:54 +02:00
Terts Diepraam
f84f23ddfe tests/ls: add coverage for special shell character after escaped char 2021-04-21 11:22:10 +02:00
Terts Diepraam
795d89f11d ls: don't escape backslash in shell style quoting 2021-04-21 11:08:40 +02:00
electricboogie
25021f31eb Incorporate overhead of Line struct 2021-04-19 21:24:52 -05:00
Sivachandran
0ea35f3fbc
Implement install create leading components(-D) option (#2092)
* Implement install's create leading components(-D) option

* Format changes

* Add install test to check fail on long dir name
2021-04-19 22:03:13 +02:00
electricboogie
b8d667c383 Clippy lints, more work on ext_sorter leads to 2 failing tests 2021-04-19 10:57:53 -05:00
Pedro Jordão
158ae35da5 Commented out code removal 2021-04-19 14:21:49 +01:00
Chirag Jadwani
3bb99e7047 uniq: avoid building list of duplicate lines
This reduces memory usage by only storing two lines of the input file at
a time. The current implementation first builds a list of all duplicate
lines ('group') and then decides which lines of the group should be
printed.
2021-04-19 17:02:59 +05:30
Jan Scheer
049f21a199
du: fix tests on linux (#2066) (#2090) 2021-04-19 10:45:51 +02:00
electricboogie
e7bcd59558 Remove a clone 2021-04-18 18:22:30 -05:00
electricboogie
fcebdbb7a7 Cleanup comment 2021-04-18 17:51:44 -05:00
electricboogie
5efd67b5e2 License cleanup 2021-04-18 17:44:45 -05:00
electricboogie
72858dda42 Ran rustfmt 2021-04-18 17:40:59 -05:00
electricboogie
258325491f Make human_numeric_convert a method 2021-04-18 17:39:42 -05:00
electricboogie
8072e2092a Cleanup loop, run rustfmt 2021-04-18 16:33:18 -05:00
electricboogie
deb94cef7a Cleanup 2021-04-18 15:52:48 -05:00
electricboogie
559f4e81f6 More license cleanup 2021-04-18 15:47:05 -05:00
electricboogie
fb19522ca0 Bring back non-external sort as default 2021-04-18 15:39:20 -05:00
electricboogie
e841bb6a24 More license cleanup 2021-04-18 15:20:16 -05:00
electricboogie
9170e7a511 Modify NOTICE 2021-04-18 15:15:12 -05:00
electricboogie
298e269531 Remove unsed code 2021-04-18 15:08:42 -05:00
electricboogie
0151f30c4e Change directory structure 2021-04-18 15:04:25 -05:00
electricboogie
e3e1ee30eb Add additional notices 2021-04-18 14:37:16 -05:00
electricboogie
0275a43c5b Make modifications clearer per Apache license 2021-04-18 14:05:27 -05:00
electricboogie
42da444f40 Remove unused deps 2021-04-18 13:49:11 -05:00
electricboogie
5bb66b26dd Merge branch 'master' of https://github.com/uutils/coreutils 2021-04-18 13:45:33 -05:00
electricboogie
dad7761be9 Add test 2021-04-18 13:43:41 -05:00
electricboogie
da94e35044 Cleanup, removed unused code, add copyright 2021-04-18 13:02:50 -05:00
electricboogie
d7b7ce52bc Vendored ext_sorter, removed unstable, created a byte buffer sized vector instead of a numbered capacity vector 2021-04-18 11:54:18 -05:00
Nicolas Thery
f36832c392 cp: add support for --reflink=never
- Passing `never` to `--reflink` does not raise an error anymore.
- Remove `Options::reflink` flag as it was redundant with
  `reflink_mode`.
- Add basic tests for this option.  Does not check that a copy-on-write
  rather than a regular copy was made.
2021-04-18 18:51:59 +02:00
Sylvestre Ledru
d3f71810df
Merge pull request #2063 from jhscheer/iss2060
chown: fix #2060
2021-04-18 09:50:23 +02:00
electricboogie
a73d108dd8 Merge branch 'master' of https://github.com/uutils/coreutils 2021-04-17 23:25:02 -05:00
electricboogie
4c8d62c2be More cleanup 2021-04-17 23:24:32 -05:00
electricboogie
3a1e92fdd2 More cleanup 2021-04-17 22:39:05 -05:00
electricboogie
7a8767e359 Cleanup 2021-04-17 22:34:03 -05:00
electricboogie
65e9c7b1b5 Sorta working ExtSort - concat struct elements 2021-04-17 21:30:03 -05:00
Jan Scheer
df2dcc5b99 chown: fix parse_spec() for colon (#2060) 2021-04-18 00:11:59 +02:00
Michael Debertol
519b9d34a6
sort: use unstable sort when possible (#2076)
* sort: use unstable sort when possible

This results in a very minor performance (speed) improvement.
It does however result in a memory usage reduction, because unstable
sort does not allocate auxiliary memory. There's also an improvement in
overall CPU usage.

* add benchmarking instructions

* add user time

* fix typo
2021-04-17 22:40:13 +02:00
Pedro Jordão
01fef70143 Changes parameter parsing to clap
- Uses clap to parse parameters
- Removes of "allow" directive where they are not necessary
- Removes of unused variables
2021-04-17 20:42:05 +01:00
electricboogie
acfe0681d4 Merge branch 'master' of https://github.com/uutils/coreutils 2021-04-17 11:54:45 -05:00
Michael Debertol
4bbbe3a3f2
sort: implement numeric string comparison (#2070)
* sort: implement numeric string comparison

This implements -n and -h using a string comparison algorithm instead
of parsing each number to a f64 and comparing those.

This should result in a moderate performance increase and eliminate loss
of precision.

* cache parsed f64 numbers

For general numeric comparisons we have to parse numbers as f64,
as this behavior is explicitly documented by GNU coreutils.
We can however cache the parsed value to speed up comparisons.

* fix leading zeroes for negative numbers

* use more appropriate name for exponent

* improvements to the parse function

* move checks into main loop and fix thousands separator condition

* remove unneeded checks

* rustfmt
2021-04-17 13:49:35 +02:00
Sylvestre Ledru
481d1ee659
Merge pull request #2077 from tertsdiepraam/ls/dereference-command-line
ls: dereference command line
2021-04-17 13:31:52 +02:00
Sylvestre Ledru
c5b43c0994 rustfmt the recent change 2021-04-17 13:21:30 +02:00
Sylvestre Ledru
eec389fa94
Merge branch 'master' into ls/dereference-command-line 2021-04-17 10:30:42 +02:00
Andrew Rowson
d0c7e8c09e
du error output should match GNU (#1776)
* du error output should match GNU

* Created a new error macro which allows the customization of the
  "error:" string part
* Match the du output based on the type of error encountered. Can extend
  to handling other errors I guess.

* Rustfmt updates

* Added non-windows test for du no permission output
2021-04-17 10:26:52 +02:00
Sylvestre Ledru
fc057b816b
Merge branch 'master' into split-wsl-detection 2021-04-17 10:22:54 +02:00
Aleksandar Janicijevic
fe207640e2
touch: dealing with DST in touch -m -t (#2073) 2021-04-17 10:08:10 +02:00
electricboogie
a76d452f75
Sort: More small fixes (#2065)
* Various fixes and performance improvements

* fix a typo

Co-authored-by: Michael Debertol <michael.debertol@gmail.com>

* Fix month parse for months with leading whitespace

* Implement test for months whitespace fix

* Confirm human numeric works as expected with whitespace with a test

* Correct arg help value name for --parallel

* Fix SemVer non version lines/empty line sorting with a test

Co-authored-by: Sylvestre Ledru <sledru@mozilla.com>
Co-authored-by: Michael Debertol <michael.debertol@gmail.com>
2021-04-17 10:06:19 +02:00
Terts Diepraam
2c130ae7c0 ls: take -l into account with dereference-command-line 2021-04-14 14:42:14 +02:00
Terts Diepraam
5c28ac1b0d ls: dereference command line 2021-04-14 14:12:00 +02:00
electricboogie
c49f93c9af Psuedo working extsort 2021-04-12 18:05:37 -05:00
electricboogie
e6c195a675 ExtSort 2021-04-12 14:24:22 -05:00
Reto Hablützel
a4253d1254 apply more clippy suggestions from nightly 2021-04-12 20:07:10 +02:00
Reto Hablützel
07e9c5896c ignore strip_suffix until minimum rust version is 1.45 2021-04-12 19:53:47 +02:00
Reto Hablützel
d219b6e705 strip_suffix is not avaialble with rust 1.40 2021-04-12 19:50:23 +02:00
Reto Hablützel
d67560c37a fix clippy for unix 2021-04-11 16:34:19 +02:00
Reto Hablützel
b465c34eef fix ls 2021-04-11 16:16:38 +02:00
Reto Hablützel
75a76613e4 fix clippy in cp 2021-04-11 16:09:18 +02:00
Reto Hablützel
97d12d6e3c fix trivial warnings without features 2021-04-11 16:05:25 +02:00
electricboogie
c6021e10c2 Fix SemVer non version lines/empty line sorting with a test 2021-04-10 15:27:16 -05:00
Árni Dagur
eb4971e6f4
cat: Unrevert splice patch (#2020)
* cat: Unrevert splice patch

* cat: Add fifo test

* cat: Add tests for error cases

* cat: Add tests for character devices

* wc: Make sure we handle short splice writes

* cat: Fix tests for 1.40.0 compiler

* cat: Run rustfmt on test_cat.rs

* Run 'cargo +1.40.0 update'
2021-04-10 22:19:53 +02:00
electricboogie
7133273725 Correct arg help value name for --parallel 2021-04-10 14:13:49 -05:00
electricboogie
3c1c76444b Merge branch 'master' of https://github.com/uutils/coreutils 2021-04-10 13:26:56 -05:00
Michael Debertol
69f4410a8a
sort: dedup using compare_by (#2064)
compare_by is the function used for sorting, we should use it for dedup
as well.
2021-04-10 19:49:10 +02:00
electricboogie
2d9f15d12c Fix month parse for months with leading whitespace 2021-04-10 12:02:02 -05:00
Michael Debertol
49c9d8c901
sort: implement -k and -t support (#1996)
* sort: implement basic -k and -t support

This allows to specify keys after the -k flag and a custom field
separator using -t.

Support for options for specific keys is still missing, and the -b flag
is not passed down correctly.

* sort: implement support for key options

* remove unstable feature use

* don't pipe in input when we expect a failure

* only tokenize when needed, remove a clone()

* improve comments

* fix clippy lints

* re-add test

* buffer writes to stdout

* fix ignore_non_printing

and make the test fail in case it is broken :)

* move attribute to the right position

* add more tests

* add my name to the copyright section

* disallow dead code

* move a comment

* re-add a loc

* use smallvec for a perf improvement in the common case

* add BENCHMARKING.md

* add ignore_case to benchmarks
2021-04-10 14:54:58 +02:00
Sylvestre Ledru
e1221ef3f8
Merge pull request #2036 from joppich/issue1930
stdbuf: move from getopts to clap
2021-04-10 11:58:01 +02:00
electricboogie
e5113ad00e
Sort: Various fixes and performance improvements (#2057)
* Various fixes and performance improvements

* fix a typo

Co-authored-by: Michael Debertol <michael.debertol@gmail.com>

Co-authored-by: Sylvestre Ledru <sledru@mozilla.com>
Co-authored-by: Michael Debertol <michael.debertol@gmail.com>
2021-04-10 11:56:20 +02:00
Sivachandran
ee070028e4
install: implement stripping symbol table (#2047) 2021-04-10 11:53:29 +02:00
Nicolas Thery
698924a20a
unlink: move from getopts to clap (#2052) (#2058) 2021-04-10 11:50:21 +02:00
Aleksandar Janicijevic
18191f9212
shred: Implemented --force option (#2012) 2021-04-10 10:41:59 +02:00
joppich
c54b5f2d82 stdbuf: move from getopts to clap 2021-04-10 00:39:12 +02:00
Sylvestre Ledru
9ae4928b7b
Ignore a test (#2053)
* Disable chksum: test_arg_overrides_stdin
fails often with:

---- test_cksum::test_arg_overrides_stdin stdout ----
current_directory_resolved:
touch: /tmp/.tmpv9hydc/a
run: /target/x86_64-unknown-linux-gnu/debug/coreutils cksum a
thread 'test_cksum::test_arg_overrides_stdin' panicked at 'Broken pipe (os error 32)', tests/common/util.rs:742:37
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

* rustfmt the recent change
2021-04-09 10:14:41 +02:00
electricboogie
8474249e5f
Sort: Implement stable sort, ignore non-printing, month sort dedup, auto parallel sort through rayon, zero terminated sort, check silent (#2008) 2021-04-08 22:07:09 +02:00
Sylvestre Ledru
717b875b5d
Merge pull request #2046 from ricardoaiglesias/timeout-clap
timeout: Moved argument parsing to clap
2021-04-07 23:19:36 +02:00
Sylvestre Ledru
ac43052cc5
Merge pull request #1602 from wishawa/master
ptx: Improve performance: remove N^2 loop and reduce repetitive regex compilations.
2021-04-07 23:14:23 +02:00
paulotten
52706372aa
Replace outdated time 0.1 dependancy with latest version of chrono (#2044)
* Replace outdated time 0.1 dependancy with latest version of chrono

I also noticed that times are being miscalculated on linux, so I fixed that.

* Add time test for issue #2042

* Cleanup use declarations

* Tie time test to `touch` feature
- if we compile with the right OS feature flag then we should have it,
  even on Windows
2021-04-07 08:41:04 +02:00
Ricardo Iglesias
8232c527a3 timeout: tests passing.
Forgot to handle the case where no arguments were passed to the COMMAND.
Because ARGS can be empty, we need two separate cases for handling
options.values_of(options::ARGS)
2021-04-06 23:30:15 -07:00
Ricardo Iglesias
431a6ee1b5 timeout: Fixed ownership issues
Fixed some minor ownership issues in converting from the options to the
arguments to the timeout COMMAND.

Additionally, fixed a rustfmt issue in other files (fold/stdbuf.rs)
2021-04-06 23:07:52 -07:00
Ricardo Iglesias
cccf89a48c timeout: Moved argument parsing to clap
Changed from optparse to clap.

None of the logic within timeout has been changed, which could use some
refactoring, but that's beyond the scope of this commit.
2021-04-06 22:13:28 -07:00
Sylvestre Ledru
b2b45d8af2
Merge branch 'master' into fold-backspace-and-carriage-return 2021-04-06 22:53:10 +02:00
Yagiz Degirmenci
c965effe07
fold: move to clap, add tests (#2015) 2021-04-06 22:51:27 +02:00
Wisha Wa
7b20c79bdd ptx: fix an incorrect option name in option parsing 2021-04-06 18:07:02 +00:00
Wisha Wa
5fc007b295 ptx: remove a hack that was added in attempt to mimick GNU ptx 2021-04-06 13:40:14 +00:00
Wisha Wa
f9fc3b5a1d ptx: add explaination comments, replace mut with shadowing, and rename variables for clarity. 2021-04-06 13:37:16 +00:00
Sylvestre Ledru
45d70b0c98
Merge pull request #2033 from Gilnaa/panic_2021
Fixed panic!/assert! used with improper format strings
2021-04-06 13:46:07 +02:00
Gilad Naaman
bc426fb3af Fixed panic!/assert! used with improper format strings 2021-04-06 14:23:54 +03:00
Wisha Wa
f00df3f3d8 Merge remote-tracking branch 'upstream/master' 2021-04-06 10:56:19 +00:00
Daniel Rocco
56bc7a44eb fold: preserve carriage return and overwritten chars in output 2021-04-06 06:55:52 -04:00
Daniel Rocco
0b731dfd1a fold: preserve backspace and overwritten chars in output 2021-04-06 06:55:52 -04:00
ReggaeMuffin
b1fcb621a8
wsl2: wsl no longer differs in output
refactor `is_wsl` to `is_wsl_1` and `is_wsl_2`

On my tests with wsl2 ubuntu2004 all tests pass without special cases

I moved wsl detection into uucore so that it can be shared instead of duplicated

I moved `parse_mode` into uucode as it seemed to fit there better and anyway requires libc feature
2021-04-06 10:58:49 +01:00
Sylvestre Ledru
cc4f32d87a
Merge pull request #2035 from tertsdiepraam/ls/hide_and_ignore
ls: add short option for ignore
2021-04-06 08:54:26 +02:00
Terts Diepraam
cbc5132981 ls: add short option for ignore 2021-04-05 23:06:56 +02:00
Sylvestre Ledru
3f3b12ebcc
Merge pull request #1998 from paulotten/issue1969
Consider device id when comparing files
2021-04-05 22:34:12 +02:00
Sylvestre Ledru
f57eb0fdfa
Merge pull request #1993 from cbjadwani/master
uniq: Implement --group option
2021-04-05 22:33:04 +02:00
Sylvestre Ledru
7cdeb18dff
Merge pull request #2026 from tertsdiepraam/ls/hide_and_ignore
ls: --hide and --ignore
2021-04-05 22:31:23 +02:00
Marvin Hofmann
9581fcf688
rm: add verbose output and trim multiple slashes (#1988)
* rm: add verbose output and trim multiple slashes

Uses the normalize_path used in cargo to strip duplicate slashes
With a link to a std rfc https://github.com/rust-lang/rfcs/issues/2208

This fixes https://github.com/uutils/coreutils/issues/1829

This also touches https://github.com/uutils/coreutils/issues/1768 
but does not attempt to fully solve it
2021-04-05 22:18:47 +02:00
Daniel Rocco
e5c61a28be fold: variable width tabs, guard treating tab as whitespace
Treat tab chars as advancing to the next tab stop rather than having a fixed
8-column width.

Also treat tab as a whitespace split target only when splitting on word
boundaries.
2021-04-05 08:55:07 -04:00
Terts Diepraam
5134348a11 ls: use globset instead of glob 2021-04-04 23:39:11 +02:00
Terts Diepraam
51770e6bee ls: invalid pattern move from error to warning 2021-04-04 22:40:36 +02:00
Terts Diepraam
76308dbec9 ls: tests for invalid patterns for hide and ignore 2021-04-04 22:35:22 +02:00
Terts Diepraam
fa4272a19b ls: --hide and --ignore 2021-04-04 19:19:56 +02:00
Sylvestre Ledru
bd8b129d9a
Merge pull request #2016 from tertsdiepraam/ls/control_characters
ls: show/hide control chars
2021-04-04 18:38:15 +02:00
Sylvestre Ledru
c196f4ae8b
Merge pull request #2023 from ycd/cut
cut: move to clap, add gnu like error messages + tests
2021-04-04 14:47:15 +02:00
Sylvestre Ledru
6bee31e8e8
Merge pull request #2021 from ycd/dirname
dirname: move to clap, write to stderr on errors
2021-04-04 14:45:37 +02:00
Chirag Jadwani
19c6a42de5 uniq: implement group option 2021-04-04 15:22:17 +05:30
Daniel Rocco
bad1df9c1b fold: improve newline handling and test coverage
- refactor implementation for readability

- correct handling of files with no trailing newline and/or blank lines
2021-04-03 22:47:38 -04:00
Yagiz Degirmenci
f47345ec9b cut: add gnu compatability to error messages 2021-04-03 20:55:10 +03:00
Yagiz Degirmenci
e84b60b7d5 cut: add display order 2021-04-03 20:30:28 +03:00
Yagiz Degirmenci
7e677b3e6c cut: fix formatting, use constant values 2021-04-03 20:21:57 +03:00
Yagiz Degirmenci
cfc3d52be4 cut: move to clap 2021-04-03 20:19:30 +03:00
Yagiz Degirmenci
b940b2d79c dirname: move to clap, simplify code 2021-04-03 18:24:39 +03:00
Sylvestre Ledru
f37284129e new release 0.0.6 to address the cat issue 2021-04-03 16:06:58 +02:00
Sylvestre Ledru
a852574745 Fix bug #2017 - cat isn't working
Revert "cat: Improve performance on Linux (#1978)"

This reverts commit 7a947cfe46.
2021-04-03 15:50:59 +02:00
Terts Diepraam
06bdc144d7 ls: show/hide control chars 2021-04-03 12:43:37 +02:00
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