Commit graph

469 commits

Author SHA1 Message Date
Arcterus
a149efe45a uucore: don't follow symlinks when examining them (fixes #799) 2020-11-08 19:56:49 -06:00
Michael Gehring
512a6a3201 expand, unexpand: fix build on stable 2020-11-08 19:56:49 -06:00
Michael Gehring
0a3a2ca935 Fix clippy warnings 2020-11-08 19:56:49 -06:00
Michael Gehring
ce733b38a9 Fix arm build
Fixes #719
2020-11-08 19:56:49 -06:00
Joseph Crail
bde309a29f Remove trait shim needed before Path stabilized
Now that Path has stabilized in Rust 1.5, I removed the UUPathExt trait
needed to support stable, beta, and nightly.
2020-11-08 19:56:49 -06:00
Joseph Crail
0678332a1f Add macro to properly find program name. 2020-11-08 19:56:49 -06:00
Joseph Crail
b8ee12f703 More import fixes for Windows. 2020-11-08 19:56:49 -06:00
Joseph Crail
3863842fae Fix errors with bools represented as ints. 2020-11-08 19:56:49 -06:00
Joseph Crail
9c4c9f6782 Refactor check for standard stream interactivity.
Since several utilities check if the standard streams are interactive, I
moved this into the uucore::fs library as is_std*_interactive(). I also
added Windows support for these methods, which only return false (or at
least until someone finds a way to support this).
2020-11-08 19:56:49 -06:00
Joseph Crail
14eccb4335 uucore: specify a few modules to be Unix-only 2020-11-08 19:56:49 -06:00
Michael Gehring
23e0315262 Remove deprecated lint 2020-11-08 19:56:49 -06:00
Joseph Crail
6095dfee66 Split utility files into separate library.
Everything in src/common has been moved to src/uucore. This is defined
as a Cargo library, instead of directly included. This gives us
flexibility to make the library an external crate in the future.

Fixes #717.
2020-11-08 19:56:42 -06:00
Roy Ivy III
67b07eaaa9 create empty repository for 'uucore' 2015-11-23 00:00:01 -05:00
Joseph Crail
3b5c776675 Add tests for rmdir.
I also adjusted error message to conform to GNU implementation.
2015-11-01 15:31:48 -05:00
Joseph Crail
4121d1e25d Remove unnecessary parentheses. 2015-10-31 02:32:55 -04:00
Roman Gafiyatullin
7b54410557 expr: prefix operators length/1, index/3 and substr/3 2015-10-09 19:26:51 +03:00
Roman Gafiyatullin
092e4d1ed4 Implement expr.
Implemented as follows:

    Usage: expr EXPRESSION
      or:  expr OPTION

          --help     display this help and exit
          --version  output version information and exit

    Print the value of EXPRESSION to standard output.  A blank line below
    separates increasing precedence groups.  EXPRESSION may be:

      ARG1 | ARG2       ARG1 if it is neither null nor 0, otherwise ARG2

      ARG1 & ARG2       ARG1 if neither argument is null or 0, otherwise 0

      ARG1 < ARG2       ARG1 is less than ARG2
      ARG1 <= ARG2      ARG1 is less than or equal to ARG2
      ARG1 = ARG2       ARG1 is equal to ARG2
      ARG1 != ARG2      ARG1 is unequal to ARG2
      ARG1 >= ARG2      ARG1 is greater than or equal to ARG2
      ARG1 > ARG2       ARG1 is greater than ARG2

      ARG1 + ARG2       arithmetic sum of ARG1 and ARG2
      ARG1 - ARG2       arithmetic difference of ARG1 and ARG2

      ARG1 * ARG2       arithmetic product of ARG1 and ARG2
      ARG1 / ARG2       arithmetic quotient of ARG1 divided by ARG2
      ARG1 % ARG2       arithmetic remainder of ARG1 divided by ARG2

      STRING : REGEXP   [NOT IMPLEMENTED] anchored pattern match of REGEXP in STRING

      match STRING REGEXP        [NOT IMPLEMENTED] same as STRING : REGEXP
      substr STRING POS LENGTH   [NOT IMPLEMENTED] substring of STRING, POS counted from 1
      index STRING CHARS         [NOT IMPLEMENTED] index in STRING where any CHARS is found, or 0
      length STRING              [NOT IMPLEMENTED] length of STRING
      + TOKEN                    interpret TOKEN as a string, even if it is a
                                   keyword like 'match' or an operator like '/'

      ( EXPRESSION )             value of EXPRESSION

    Beware that many operators need to be escaped or quoted for shells.
    Comparisons are arithmetic if both ARGs are numbers, else lexicographical.
    Pattern matches return the string matched between \( and \) or null; if
    \( and \) are not used, they return the number of characters matched or 0.

    Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null
    or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.

    Environment variables:
    	* EXPR_DEBUG_TOKENS=1   dump expression's tokens
    	* EXPR_DEBUG_RPN=1      dump expression represented in reverse polish notation
    	* EXPR_DEBUG_SYA_STEP=1 dump each parser step
    	* EXPR_DEBUG_AST=1      dump expression represented abstract syntax tree
2015-10-09 12:31:25 +03:00
Carlos Liam
87d14978e9 Clean whitespace
Remove leading newlines and replace lines containing only whitespace
with empty lines
2015-10-06 12:04:46 -04:00
Michael Gehring
d167674ba7 Fix nightly build 2015-09-29 22:37:24 +02:00
Roman Gafiyatullin
b4dd12104f factor: panic running againts power of two.
No further calculations required in case 'num' is already 1.
2015-10-02 20:30:35 +03:00
Steve Klabnik
0c117eb8a8 initial work 2015-09-27 23:55:28 -04:00
Steve Klabnik
ac7e289d29 Fix the build 2015-09-27 23:34:23 -04:00
Danilo Bargen
3e1c6e7e71 Use system error codes 2015-09-18 11:51:59 +02:00
Danilo Bargen
0e7223cfb0 Handle null pointer return value for getpwuid on Linux 2015-09-18 11:12:39 +02:00
Danilo Bargen
a8f9b40674 Return Result<String, String> from getusername 2015-09-18 11:12:39 +02:00
Heather
fe0a49f7a4 Merge pull request #671 from ebfe/cargo-build
Basic Cargo based build
2015-09-17 16:42:43 +03:00
Christian Zinck
f31192d46a enhanced numeric sort and new human readable sort 2015-08-30 20:06:33 -04:00
Michael Gehring
5411252d3a touch: add filetime dependency 2015-08-28 21:12:30 +02:00
Michael Gehring
9d8abbcb06 Basic Cargo build
Builds the uutils multicall binary containing all utils (except stdbuf)
by default. To only build a subset
    `cargo --no-default-features --features <utils>`
can be used.

Whats missing is building the standalone binaries and a mechanism to
automatically disable the build of unix only utils on windows.
2015-08-28 21:12:30 +02:00
Gustavo Hexsel
f8df842dfb Moved code officially to run on nightly since it's a dependency 2015-08-26 12:50:07 -04:00
Sam Gibson
c06b8218f7 Fix build by making du not use futures
Use channels and push them into a vector instead. Code remains largely the same.
2015-08-24 18:57:09 +12:00
Joseph Crail
26f0ec8379 Fix difference w/ GNU coreutils' sum.
When using the SYSV algorithm and reading from standard input, the GNU
coreutils implementation does not output the filename, in this case "-".
2015-08-14 00:10:15 -04:00
Heather
809affff6c Merge pull request #678 from jbcrail/stabilize-4
Remove unstable features from mv/touch.
2015-08-12 08:13:40 +03:00
Joseph Crail
e9b008cf70 Remove unstable features from ptx.
I cleaned up string references, whitespace, and use of unstable
features. I also added a comment about reverting to connect, making
others aware that the method should be replaced by join after 1.3.
2015-08-12 00:01:10 -04:00
Joseph Crail
eff8851cf9 Fix bug when setting time w/o year. 2015-08-11 21:45:11 -04:00
Joseph Crail
e455ba5de1 Replace unstable set_file_times w/ external crate. 2015-08-11 21:45:11 -04:00
Joseph Crail
9d84890c89 Convert to byte vec w/o using deprecated methods. 2015-08-11 21:45:11 -04:00
Joseph Crail
480019f5b3 Add comments for deprecated connect().
We are using connect() instead of join() until Rust 1.3 is stable.
Currently, connect() is just a thin wrapper over join(). Keeping the
deprecated method allows us to build on all releases.
2015-08-09 23:12:23 -04:00
Joseph Crail
43d3834880 Backport and/or replace unstable features.
I removed the unstable slice_patterns and str_char features. I also used
the deprecated connect() method, instead of join().
2015-08-08 03:53:21 -04:00
Joseph Crail
b089831ea0 Switch over to internal canonicalize().
The method, fs::canonicalize(), is unstable and can't be used for stable
builds. We already have our own implementation of canonicalize(), which
supports more options than the Rust library implementation.
2015-07-31 18:55:33 -04:00
Joseph Crail
4a331897cb Replace unstable VecMap w/ external crate. 2015-07-31 17:05:22 -04:00
Joseph Crail
4300cd5a48 Replace unstable init() method. 2015-07-31 16:21:06 -04:00
Joseph Crail
047d963a26 Remove unused feature attribute. 2015-07-31 16:21:06 -04:00
Joseph Crail
f41d5b3f8f Replace unstable fs:walk_dir() w/ external crate. 2015-07-31 16:21:06 -04:00
Joseph Crail
6ff576e300 Use non-PathExt canonicalize(). 2015-07-31 16:21:06 -04:00
Joseph Crail
f03b22a65c Stabilize several PathExt methods. 2015-07-31 16:21:06 -04:00
Karol Rozycki
b025b44806 -f flag for uniq 2015-07-31 19:37:40 +02:00
Joseph Crail
9bc6eb4e7b Replace deprecated methods.
I replaced position_elem() and slice_chars(). I also removed an unused
feature attribute.
2015-07-30 22:21:18 -04:00
Joseph Crail
157c20c7d3 Replace deprecated methods. 2015-07-27 00:35:34 -04:00
Peter Atashian
010bda9df2 Fix build on non-windows
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-07-20 16:40:29 -04:00
Peter Atashian
47f82f0de2 Various Windows fixes
Improve handling of unicode on Windows
Disable a few crates on Windows that abuse unix APIs too much

Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-07-19 20:25:48 -04:00
Joseph Crail
49d9de17fe Fix deprecation warnings for tr.
I switched over to the bit-vec/bit-set cargos.
2015-07-09 18:30:03 -04:00
Alex Lyon
8f6d13df5f Merge pull request #647 from jbcrail/fix-osx-stdbuf
Fix OS X build errors for stdbuf.
2015-07-09 14:58:07 -07:00
Alex Lyon
7c2ed679ab Merge pull request #649 from jbcrail/fix-stdbuf-regression
Fix stdbuf regression.
2015-07-09 12:58:13 -07:00
Joseph Crail
b8ab2c125f Fix stdbuf regression.
When replacing range_inclusive(), I introduced a bug when parsing
arguments. I added a smoke test to prevent basic regressions in the
future.
2015-07-09 15:23:14 -04:00
Joseph Crail
3fa2e89a7a Fix OS X build errors for stdbuf.
I removed unused linker flags, added platform-specific linker flags, and
used DYLD_LIBRARY_PATH (instead of DYLD_INSERT_LIBRARIES) for loading
the dynamic library. I also removed an unused variable mutation.
2015-07-09 13:04:04 -04:00
Joseph Crail
3270040778 Remove unused mutation from variables. 2015-07-08 22:24:02 -04:00
Joseph Crail
01b0d5da1c Remove unused attribute. 2015-07-05 22:36:34 -04:00
Joseph Crail
9f1dc98925 Add initial implementation for ln.
There are several areas needing improvement:

1) add tests for hard links
2) add implementation for uncommon flags (-d, -L, -n, -P, -r)
3) align error messages more closely with GNU implementation
2015-07-05 14:52:31 -04:00
Joseph Crail
951be1bfaa Fix alignment of mv help. 2015-07-01 22:09:33 -04:00
Joseph Crail
dd97629a0e Merge pull request #640 from remram44/mv-strip-trailing-slashes
Implement mv's --strip-trailing-slashes
2015-06-30 23:31:03 -04:00
Remi Rampin
0691965d63 Use ChildExt to wait from timeout.rs 2015-06-30 18:45:13 -04:00
Remi Rampin
dc40480e6e Switch wait_or_timeout() to f64 2015-06-30 18:44:32 -04:00
Remi Rampin
d806ab4809 Use ChildExt to kill from timeout.rs 2015-06-30 18:44:30 -04:00
Remi Rampin
cce3d5171d ChildExt for send_signal() and wait_or_timeout() 2015-06-30 18:42:51 -04:00
Remi Rampin
13f5994e15 Rename time.rs to parse_time.rs
Conflicts with crate time.
2015-06-30 18:42:51 -04:00
Remi Rampin
28302555b8 Replace missing signal() by libc kill() directly 2015-06-30 18:42:50 -04:00
Remi Rampin
66a40d555d Update timeout.rs to new io 2015-06-30 18:42:19 -04:00
Remi Rampin
0ed57b3896 Fix simple typo in mv.rs 2015-06-30 15:21:40 -04:00
Remi Rampin
b8d5602655 Implement mv's --strip-trailing-slashes 2015-06-30 13:24:19 -04:00
Joseph Crail
690a483a8a Update to nightly build.
I updated the library dependencies, features, and deprecated methods.
2015-06-23 23:00:00 -04:00
Joseph Crail
cf7db989e7 Update dependencies.
I added the regex-syntax crate to the dependencies for hashsum, nl, and
ptx.
2015-06-04 22:37:51 -04:00
Joseph Crail
0df4918f2d Fix split tests.
I added an additional regex dependency and converted strings to
Vec<u8>'s for the assertions.
2015-06-04 13:57:17 -04:00
Joseph Crail
1e22455032 Align formatting with GNU implementation. 2015-06-03 01:41:56 -04:00
Joseph Crail
ac8d972ed9 Refactor wc settings into dedicated struct. 2015-06-03 01:41:56 -04:00
Joseph Crail
b25a344566 Add quiet and verbose flags to head. 2015-05-31 20:26:57 -04:00
Joseph Crail
1580daea7c Refactor utility settings into dedicated struct.
This will make it easier to add support for additional options, such as
verbosity and negative byte/line counts.
2015-05-30 19:10:15 -04:00
Joseph Crail
b008ed103d Improve descriptions of available options. 2015-05-30 19:10:15 -04:00
Joseph Crail
826d8a6530 Add newline when printing lines. 2015-05-30 19:10:15 -04:00
dokaptur
5aa68eb716 printing version unified and tests 2015-05-30 13:48:53 +02:00
dokaptur
ea7df03c0a initial ptx commit 2015-05-30 09:35:28 +02:00
Joseph Crail
17e732f0fd Flush pending stdout writes. 2015-05-29 13:51:11 -04:00
Heather
f84d5462a3 Merge pull request #625 from jbcrail/add-base64-tests
Add tests for base64.
2015-05-29 07:57:35 +03:00
Joseph Crail
1be9c41105 Upgrade regex cargo. 2015-05-29 00:50:32 -04:00
Joseph Crail
1c405d9c91 Remove duplicate header in error messages. 2015-05-28 23:23:54 -04:00
Camille TJHOA
72d8ab0506 Fix hostname 2015-05-27 23:55:25 +02:00
Nikita Ofitserov
abd3e1e8e4 Fix 'env -' case 2015-05-27 00:51:14 +03:00
Joseph Crail
28e00cbd78 Standardize display of utility name and version. 2015-05-25 14:50:15 -04:00
Joseph Crail
d558e37288 Add macro to manually flush a writer.
I built upon the pipe_* macros, adding pipe_flush!() to flush an
optional writer (default to stdout if no writer is given).
2015-05-23 03:31:42 -04:00
Heather
9ee7d96e5b Merge pull request #619 from jbcrail/replace-utf8-ellipsis
Replace UTF-8 ellipsis character w/ ASCII periods.
2015-05-23 09:06:56 +03:00
Joseph Crail
2ef14832dc Replace UTF-8 ellipsis character w/ ASCII periods. 2015-05-23 01:56:33 -04:00
Joseph Crail
07d57ac109 Fix failure to print stdout for echo.
Upon program termination, pending stdout writes were not automatically
flushed. When newlines are disabled, I force a flush to stdout.
2015-05-22 21:49:33 -04:00
Vinícius dos Santos Oliveira
c17f925b11 cat.rs: removing need for mut variable 2015-05-22 13:53:13 -03:00
Joseph Crail
496d5883a4 Switch to external getopts cargo (part 3).
I switched over to the getopts crate on crates.io, instead of Rust's
private implementation. This will allow coreutils to build for Rust 1.0.

I'm splitting the updates into several commits for easier reviewing.
2015-05-21 21:32:55 -04:00
Joseph Crail
509a35ff7a Switch to external getopts cargo (part 2).
I switched over to the getopts crate on crates.io, instead of Rust's
private implementation. This will allow coreutils to build for Rust 1.0.

I'm splitting the updates into several commits for better reviewing.
2015-05-21 15:00:34 -04:00
Joseph Crail
b4b08de42c Switch to external getopts cargo (part 1).
I switched over to the getopts crate on crates.io, instead of Rust's
private implementation. This will allow coreutils to build for Rust 1.0.

I'm splitting the updates into several commits for better reviewing.
2015-05-20 22:47:30 -04:00
Joseph Crail
a94bd0bd35 Remove unstable regex macros.
This will allow coreutils to get further along when building against
Rust 1.0.
2015-05-19 21:40:03 -04:00
Heather
e7518b3eae Merge pull request #608 from jbcrail/rm-unstable-exit-status
Replace unstable set_exit_status() with exit().
2015-05-19 07:15:14 +03:00
Joseph Crail
7d1d307b92 Replace unstable set_exit_status() with exit().
With the 1.0 release, unstable features are causing build errors. I
replaced references to std::env::set_exit_status() with
std::process::exit().
2015-05-18 21:22:51 -04:00
Joseph Crail
430e9530d4 Fix nohup.
I upgraded to the nightly build.
2015-05-18 20:27:32 -04:00