kevgeniy
72490ef956
cat: rewrote most part of the code
...
Rewrote cat to eliminate code duplication and make it safe
- UnsafeWriter is replaced by BufWriter
- write_lines (any option except -T and -v) and write_bytes (-T and -v
options) are replaced by single write_lines method. A new method use
``write_to_end``, ``write_tab_to_end`` or ``write_nonprint_to_end``
method to write all symbols untill the end of line in the right way.
- Benchmarking (-n, -T and -v options respectively):
| old (ns/iter) | new (ns/iter) |
| -------------------------- | -------------------------- |
| 6,501,496 (+/- 1,173,481) | 6,683,158 (+/- 373,539) |
| 8,634,023 (+/- 547,595) | 5,408,676 (+/- 715,458) |
| 24,056,507 (+/- 1,177,445) | 30,879,788 (+/- 1,180,598) |
2016-10-24 04:51:40 +03:00
evgeniy
4a2b8e3c52
cat: conditional compilation added
2016-10-18 19:09:36 +02:00
kevgeniy
2060048c79
Fixed and made the comments clearer
2016-10-16 17:13:02 +02:00
evgeniy
dd16c58ab4
cat utility refactoring:
...
- Less if branches
- Unnecessary range variable deleted
- Optional fail-assertion commented
2016-10-16 12:43:23 +02:00
Wim Hueskes
046ff62af6
more: fix build on windows
2016-10-06 23:35:16 +02:00
Wim Hueskes
4f91662057
who: use i64 instead of time_t
...
fixes build on raspberry pi 2 (armv7-unknown-linux-gnueabihf)
2016-09-03 22:18:10 +02:00
Wim Hueskes
99f70ba648
od: implement 16-bit floating point type
2016-09-03 21:47:36 +02:00
Wim Hueskes
fd5879dcf2
od: refactor parse_formats.rs
...
simplified, more but shorter functions
2016-09-02 21:29:58 +02:00
Wim Hueskes
184c4af76d
od: fix zero width user input (-w0)
2016-09-02 21:27:06 +02:00
Wim Hueskes
92fc286b0e
od: refactor uumain into smaller functions
2016-09-02 21:26:43 +02:00
Wim Hueskes
2c24911d9c
od: refactor: create struct for formatting info
...
also properly document the alignment algorithm.
2016-09-02 21:26:22 +02:00
Wim Hueskes
83a1ff404f
od: refactor: create InputDecoder to convert input
...
It reads from the input and provides data conversion functions.
2016-09-02 21:26:00 +02:00
Wim Hueskes
283a29fd2c
od: refactor IntWriter, do not require parameters
...
use macros to define a function for each format so byte_size
and print_width do not have to be provided by the caller.
2016-09-02 21:25:38 +02:00
Wim Hueskes
f2db897c47
od: refactor: reduce arguments of odfunc
...
Pass the input stream itself instead of the parameters required to
open it. Create InputOffset to handle functionality required for
the byte offset.
2016-09-02 21:25:17 +02:00
Wim Hueskes
d705dc46ce
od: improve/extend --help text
2016-09-02 21:24:56 +02:00
Wim Hueskes
2f12b06ba1
od: implement --traditional
2016-09-02 21:24:29 +02:00
Wim Hueskes
26ec46835c
od: implement +size to skip bytes
2016-09-01 00:24:29 +02:00
Wim Hueskes
9e33c3a48c
od: fix command-line parsing of file names
2016-09-01 00:23:34 +02:00
Wim Hueskes
e8eab8d3e8
od: implement ascii dump
2016-09-01 00:23:11 +02:00
Wim Hueskes
cea4297fdf
od: implement --format / -t
2016-09-01 00:20:02 +02:00
Wim Hueskes
d15604b2e4
od: fix and add tests for simple format args
2016-09-01 00:19:37 +02:00
Wim Hueskes
c2d61a294e
od: refactor: separate mod for parse_format_flags
2016-09-01 00:19:15 +02:00
Wim Hueskes
69bde1170d
od: finish multi-byte support
2016-09-01 00:14:50 +02:00
Wim Hueskes
459db47c2b
od: implement --skip-bytes and --read-bytes
2016-09-01 00:14:25 +02:00
Wim Hueskes
2b10cc47ff
od: implement Read for MultifileReader
...
also add tests and fix error handling
2016-09-01 00:14:02 +02:00
Wim Hueskes
c15936ad68
od: fix performance issue with large values of -w
...
like -w100000000 or larger
2016-09-01 00:13:39 +02:00
Wim Hueskes
bd0424fa0c
od: start with multi-byte support
2016-09-01 00:13:21 +02:00
Wim Hueskes
1164b9e118
od: fix file byte offset for non-octal types
...
removed binary offset, added no offset.
2016-09-01 00:12:59 +02:00
Wim Hueskes
24fb6d66c4
od: proper align different sized output
2016-09-01 00:12:37 +02:00
Wim Hueskes
45895be96d
od: use structs to specify possible dump formats
...
remove extra padding too - preparing proper allignment
2016-09-01 00:12:11 +02:00
Wim Hueskes
f7d7beb79b
od: implement --endian
2016-09-01 00:11:52 +02:00
Vladimir Matveev
d18be30c8a
od: add byteorder_io
...
copied from: https://github.com/netvl/immeta/blob/4460ee/src/utils.rs
workaround for: https://github.com/BurntSushi/byteorder/issues/41
2016-09-01 00:11:42 +02:00
Wim Hueskes
4770690823
od: suppress duplicates
2016-09-01 00:11:23 +02:00
Wim Hueskes
80386ef04f
od: split odfunc()
2016-09-01 00:11:02 +02:00
Wim Hueskes
e006a84136
od: refactor: do all printing in odfunc
2016-09-01 00:10:40 +02:00
Wim Hueskes
36b88f268d
od: enable hexadecimal output
2016-09-01 00:10:23 +02:00
Wim Hueskes
e905c2ec71
od: do not panic on invalid user input
...
use macros from uucore where possible
2016-09-01 00:10:02 +02:00
Wim Hueskes
167d7d3ca9
od: implement -w (width)
2016-09-01 00:09:45 +02:00
Wim Hueskes
1b01f02e9e
od: remove trailing spaces in output
...
can't find documentation confirming this behaviour
besides it does not work correctly on all formats
see also uutils/coreutils#922
2016-09-01 00:09:25 +02:00
Wim Hueskes
f45169d37c
od: refactor: split into modules
2016-09-01 00:09:04 +02:00
Wim Hueskes
104f8eb509
od: implement 64-bit floating point output
2016-09-01 00:08:41 +02:00
Wim Hueskes
f53aefa7e9
od: implement 32-bit floating point output
2016-09-01 00:08:25 +02:00
Wim Hueskes
5c495359c1
od: refactor: convert bytes using byteorder crate
2016-09-01 00:08:00 +02:00
Wim Hueskes
3e143217a9
od: refactor sign_extend
...
easier to understand algoritm which does not use unsafe
2016-09-01 00:01:55 +02:00
Wim Hueskes
e0b7ff1953
od: implement --help and --version
2016-09-01 00:01:35 +02:00
Alex Lyon
362cabe1a6
hashsum: implement SHAKE-128 and SHAKE-256
2016-08-30 17:33:18 -07:00
knight42
f8bd9e2a1b
chown,chgrp: fix bug in option --preserve-root
2016-08-29 11:19:15 +08:00
knight42
d0196b82ad
touch: respect -h
2016-08-28 07:12:25 +08:00
knight42
89ac03d1c2
uucore::fs: add fn resolve_relative_path
2016-08-28 00:02:58 +08:00
knight42
136ca4e197
chgrp,chown: fix bug in option --preserve-root
2016-08-28 00:02:58 +08:00
Martin Kysel
23bab3df69
moved more to unix utils, minor review updates
2016-08-23 11:40:09 +01:00
Martin Kysel
a90aec3f1b
add author name
2016-08-23 10:50:45 +01:00
Martin Kysel
7d77b9720d
Initial more implementation
2016-08-23 10:45:51 +01:00
Nathan Ross
ae0e1c4768
Merge pull request #977 from knight42/chgrp
...
Implement chgrp
2016-08-21 06:39:54 -04:00
Knight
9dda0bcd25
chgrp: implemented
2016-08-21 17:04:38 +08:00
Knight
8cba71adb4
chgrp: add entries
2016-08-21 17:04:02 +08:00
Knight
a4bf852207
mv: cleanup the code
2016-08-21 14:57:28 +08:00
mpkh
2981eb5112
Merge pull request #975 from nathanross/normalize-coreopts-squashed
...
DRYer code and more UX consistency through use of coreopts
2016-08-20 18:44:17 +00:00
Nathan Ross
36503a77c7
impl: use coreopts for brevity and consistent UX
2016-08-20 10:07:24 -04:00
Nathan Ross
edc3bf7c08
impl: dryer use of coreopts
2016-08-20 10:07:24 -04:00
Nathan Ross
ee3aaa017f
uucore: allow 'wrong number of arguments' macro to be more precise
2016-08-20 10:07:08 -04:00
Michael Gehring
dcefbd54c6
Merge pull request #974 from knight42/fix-bugs
...
Fix bugs of `pinky` and `who`
2016-08-20 15:16:19 +02:00
Jian Zeng
14a34b48bf
Merge pull request #969 from robertclancy/tail-f-dev-stdin-bug
...
tail: fix bug when following /dev/stdin
2016-08-20 20:25:08 +08:00
Knight
fb53c019b4
who: limit the parts of split host to 2
2016-08-20 20:22:18 +08:00
Knight
34d2224098
pinky: correct the test
2016-08-20 20:22:18 +08:00
Robert Clancy
3a0c23561e
tail: fix bug when following /dev/stdin
...
main panics when following /dev/stdin since /dev/stdin is not seekable.
Check to see if file is seekable and use unbounded_seek if so.
Also `tail -f` with no files should not follow stdin.
2016-08-20 11:47:02 +01:00
Nathan Ross
268b691881
uucore: add support for optflagopt to coreopts
2016-08-20 05:58:36 -04:00
Nathan Ross
cb1b32cda1
uucore: fix utility name in coreopts parsing error messages
2016-08-20 05:58:36 -04:00
Knight
9ecf899e3d
Remove uucore::c_types
2016-08-20 12:12:49 +08:00
Knight
ddf47fab31
groups: use uucore::entries::get_groups instead
2016-08-20 11:59:58 +08:00
Knight
f49ee5b58b
uname: use utsname in libc instead
2016-08-20 11:59:58 +08:00
Knight
ac6bc5886b
arch: use utsname in libc instead
2016-08-20 11:59:58 +08:00
Knight
c63aa19cd1
Add uucore::utsname to get system info
2016-08-20 11:59:58 +08:00
Knight
b6c864b7f3
uucore::process: add functions to obtain uid/gid, euid/egid
2016-08-20 03:24:23 +08:00
Knight
369c2c2d83
id: use uucore::entries
2016-08-20 03:24:23 +08:00
Knight
2b96f8f0c1
chroot: use uucore::entries
2016-08-20 03:10:37 +08:00
Knight
270290efe6
whoami: use uucore::entries
2016-08-20 03:10:36 +08:00
Knight
99f0114450
stat: use uucore::entries
2016-08-20 03:10:36 +08:00
Knight
40e6c5a397
pinky: use uucore::entries
2016-08-20 03:10:36 +08:00
Knight
f66aaa8b78
ls: use uucore::entries
2016-08-20 03:10:36 +08:00
Knight
40e01b94f3
chown: use uucore::entries
2016-08-20 03:10:36 +08:00
Knight
799804e455
Add uucore::entries
2016-08-20 03:10:36 +08:00
Knight
c2fb66dfcb
uucore::utmpx: fix doctest errors
2016-08-20 02:55:17 +08:00
Knight
bc61634dba
tr: use HashMap in stdlib instead of vec_map
2016-08-20 02:25:55 +08:00
Nathan Ross
9d2616442a
Merge pull request #963 from alsuren/sort--merge
...
Implement sort --merge
2016-08-12 20:42:30 -04:00
David Laban
cf93826eee
sort --check refactor to use iterator
...
This allows us to check files without bringing them entirely into
memory. Also makes it easier to find the disorder in
(seq 9; echo 0) | sort --check
(points at the end of the file, where our previous version would
point at the start of the file)
Itertools' .coalesce() was the most useful helper that I could find
for comparing adjacent values in an iterator. It is designed for
implementing things like .dedup(), so the resulting code is a little
unintuitive.
2016-08-13 00:42:44 +01:00
David Laban
3531c46fb8
sort --merge --unique
...
This uses Itertools' dedup() rather than Vec::dedup(). There is probably
a cleaner, more polymorphic way to do this. Suggestions welcome.
2016-08-13 00:42:44 +01:00
David Laban
e1af1520e7
sort: make compare_by honour settings.reverse
...
This allows sort --merge --reverse to work as well.
2016-08-13 00:42:43 +01:00
David Laban
8a8319a337
sort --merge works, but ignores --unique and --reverse
...
FileMerger receives Lines Iterables of the pre-sorted input files
via push_file() It implements Iterator, which yields lines from the
input files in (merged) sorted order. If the input files are not sorted,
then the behavior is undefined.
Internally, FileMerger uses a
std::collections::BinaryHeap<MergeableFile>.
MergeableFile is an internal helper that implements Ord in a way that
BinaryHeap can use (note that we want smallest-first, but BinaryHeap
returns largest first, so MergeableFile::cmp() calls reverse() on
whatever compare_by() returns.
2016-08-13 00:42:43 +01:00
David Laban
76abc7e51d
sort: refactor compare_fns into Settings
...
Also split out a compare_by(a, b, settings) helper function,
which may be used by --merge, later.
2016-08-13 00:26:20 +01:00
Knight
f19d361013
uniq: add test for case-insensitive comparison
2016-08-13 02:04:19 +08:00
Knight
0ea5314ea1
uucore: make libc optional
2016-08-13 02:00:20 +08:00
mpkh
96e8748336
Merge pull request #945 from nathanross/cut-fix-chars-ranges
...
cut: make chars mode use byte mode behavior
2016-08-12 04:56:47 +00:00
nathanross
f2dc230d0e
uucore: coreopts alignment, spacing, and optional usage
2016-08-11 23:20:39 -04:00
Nathan Ross
4a2532fc12
cut: chars mode has same behavior as byte mode
2016-08-11 18:49:20 -04:00
Nathan Ross
2e41535d69
pinky: switch to using new coreopts syntax
2016-08-11 14:37:26 -04:00
Nathan Ross
6ecf9ecf66
who: switch to using new coreopts syntax
2016-08-11 14:37:25 -04:00
Nathan Ross
617e8ca682
arch: switch to using new coreopts syntax
2016-08-11 14:37:25 -04:00
Nathan Ross
e019b2657e
cut: switch to using new coreopts syntax
2016-08-11 14:37:24 -04:00
Nathan Ross
f8509240df
uucore: require version; syntax; summary; longhelp
2016-08-11 14:37:16 -04:00
Knight
87894dedca
who: implemented
2016-08-11 15:41:28 +08:00
Knight
18da533538
uucore::utmpx: change API and fix error
2016-08-11 15:41:12 +08:00
Knight
8c6cd72848
who: add entries
2016-08-11 00:19:26 +08:00
Knight
963ab9d321
users: use uucore::utmpx
2016-08-10 15:24:55 +08:00
Knight
f4c50921d8
uptime: use uucore::utmpx
2016-08-10 15:24:45 +08:00
Knight
77ef1580c2
pinky: use uucore::utmpx
2016-08-10 15:24:29 +08:00
Knight
301a240b73
uucore::utmpx: refine implementation
2016-08-10 15:23:07 +08:00
Knight
163a3a2540
coreopts: fix error when using msg_wrong_number_of_arguments
macro
2016-08-10 13:59:30 +08:00
Knight
23979542af
uucore: conditional enable different features
2016-08-10 13:57:40 +08:00
Knight
c9dde462c7
uucore: export latest libc
2016-08-10 01:00:39 +08:00
Knight
7d5a4dbf20
coreopts: display package name instead of module path
2016-08-10 00:16:06 +08:00
Nathan Ross
5aaff02195
cut: implement zero-terminated option
...
no changes to char mode because removal
of specialized char mode behavior is pending
2016-08-08 20:15:53 -04:00
Nathan Ross
1bf2c82520
arch: use message templates for consistent, original-work error handling
2016-08-08 04:36:33 -04:00
Nathan Ross
d56389aca0
cut: use message templates for consistent error UX
2016-08-08 04:32:48 -04:00
Nathan Ross
3eb9bbf4b5
uucore: CoreOptions error and version message templates
2016-08-08 04:29:11 -04:00
Nathan Ross
c91fd51197
uucore: add message templates
2016-08-08 03:05:36 -04:00
Nathan Ross
ea6b0e55ad
cut: provide original-work help message and option descriptions
2016-08-07 23:16:15 -04:00
Chris Nikkel
cdfdc3a2bd
uniq: add command line option -z for zero terminated input and output
2016-08-06 18:41:47 -07:00
Knight
0d48744c0f
base64: simplified
2016-08-07 00:41:53 +08:00
Knight
9c7ff133dc
base32: implemented
2016-08-07 00:41:52 +08:00
Knight
276d2ccd53
uucore: add module encoding
2016-08-07 00:41:52 +08:00
Knight
7c5416799e
base32: add entries
2016-08-06 11:45:03 +08:00
Corey Farwell
01da600f71
Remove unused variable binding.
2016-08-05 09:06:39 -04:00
Corey Farwell
8fe3eac087
Remove unused imports.
2016-08-05 09:05:12 -04:00
Corey Farwell
eca7543c61
Cleanup logic around wait_or_timeout
exit status handling.
2016-08-04 21:30:50 -04:00
Nathan Ross
a8f5b430df
Merge pull request #935 from frewsxcv/refactor-time
...
Prefer handling `Duration` over `f32` when dealing with times.
2016-08-04 21:17:38 -04:00
Corey Farwell
99fda0b716
Prefer handling Duration
over f32
when dealing with times.
...
Also refactored out usage of the `time` crate in `uucore`.
2016-08-04 19:21:30 -04:00
Knight
d4ac9f22fc
uptime & users: move functions extern to uucore::utmpx
2016-08-04 23:39:30 +08:00
Knight
833d50e192
pinky: obtain correct timestamp
2016-08-04 23:39:30 +08:00
Knight
0020d5c80c
uucore: update utmpx
2016-08-04 22:37:54 +08:00
Corey Farwell
160f7ed5f4
Use setpgid
from libc.
2016-08-04 08:34:33 -04:00
David Laban
6751d2c708
implement sort --stable
...
Made a new function sort_by(lines, compare_fns), which accepts a
list of compare_fns and calls lines.sort_by() with a closure that
calls each compare_fn in turn until one returns something other
than equal.
Default behavior ensures that String::cmp is the last element in the
compare_fns list (referred to as 'last resort' sorting by man sort).
Passing --stable (-s) turns this behaviour off.
Test cases provided for `sort --month` and `sort --month --stable`.
2016-08-03 07:56:40 +01:00
Mark Karasek
59ad388cce
ls: remove dependence on nightly
2016-07-29 07:07:38 -07:00
Mark Karasek
900cd41eb6
ls improvments
...
* Add options -c, -F, -L, -l, -r, -R, -S, -t, -U, --color
* Fix options -a, -A
* Remove unused options
* Output in columns when not using -l
* Output date with -l
2016-07-28 17:41:52 -07:00
Kevin Robert Stravers
5226ba963c
ls: Implement the '-a' (all) flag
...
The all flag did not cull/remove the directory entries starting with a
dot. The help message indicates it should. The implementation checks
if the string starts with a dot whilst also using '-a' to determine
whether a DirEntry is to be printed.
2016-07-27 11:29:27 +02:00
Kevin Robert Stravers
0afe9b347e
ls: Show columns correctly padded according to the largest file and the largest symlink count
2016-07-26 16:05:20 +02:00
mpkh
da0de488e6
Merge pull request #913 from knight42/pinky
...
Implement pinky
2016-07-26 13:38:53 +04:00
Knight
be20d8605d
pinky: add tests
2016-07-26 17:26:22 +08:00
Knight
6fff3a7665
pinky: cleanup the code
2016-07-26 16:44:30 +08:00
Knight
e0c950e145
pinky: canonicalize host
2016-07-26 16:44:30 +08:00
Knight
f91c60ff70
pinky: fix a weird bug:
...
Strings passed to C functions must ends with NULL.
2016-07-26 16:44:30 +08:00
Knight
048daee8b9
pinky: make ci happy
2016-07-26 16:44:30 +08:00
Knight
fe952d90d8
pinky: iterate over utmp structs using getutxent()
2016-07-26 16:44:29 +08:00
Knight
1056542dd3
uucore::utmpx: revert the changes
2016-07-26 16:44:29 +08:00
Knight
3ed49033b7
pinky: implement short format
2016-07-26 16:44:25 +08:00
Knight
7fb3eef5e5
pinky: implement long format
2016-07-26 16:44:25 +08:00
king6cong
ff7d2bae16
skip directory tail
2016-07-23 23:03:00 +08:00
Jeremy Neptune
a3004fbbff
cp: added -v/--verbose flag
...
I forgot that -v refers to "verbose" and not "version"
when making earlier changes. So I fixed that and for
good measure added the verbose flag anyway.
2016-07-15 14:41:50 -04:00
Jeremy Neptune
cc57ce7699
cp: added -T/--no-target-directory flag
2016-07-15 14:08:04 -04:00
Jeremy Neptune
5e03b7c75d
cp: Added -t flag, and fixed path bug for source files.
...
* Added flag -t/--target-directory
* No longer assumes that the source arguments are files in the CWD (in other words, can copy files from directories other than CWD)
2016-07-15 13:15:05 -04:00