Commit Graph

687 Commits

Author SHA1 Message Date
sin
44b3ea8f76 Use _exit() instead of return if exec* fails 2014-11-13 17:06:41 +00:00
sin
2869adf458 Update TODO 2014-11-13 16:33:47 +00:00
sin
519a4f8105 Don't overwrite the line buffer when we hit EOF on one of the files in comm(1) 2014-11-13 16:01:53 +00:00
sin
d208659414 Add "-" support to comm(1) 2014-11-13 16:01:44 +00:00
sin
49c91462b3 Undef MIN/MAX in case they are defined somewhere else 2014-11-13 16:01:34 +00:00
sin
7ffe164106 Modify argv[0] in place 2014-11-13 16:01:22 +00:00
sin
6449db8691 Make both arguments to cmp(1) mandatory and handle "-" properly 2014-11-13 16:01:10 +00:00
sin
dfd0e6e77d Add a conformance table in the README
We should investigate the current state of the tools one by one
and mark out those that are complete and POSIX conformant.
2014-11-13 14:59:41 +00:00
sin
9f6dd58538 Remove unneeded statement 2014-11-13 14:56:43 +00:00
sin
f9a7a7e59f Fix argument naming in dirname(1) 2014-11-13 14:56:34 +00:00
sin
a7ad11ed5e Fix overflow in basename(1) 2014-11-13 14:56:25 +00:00
sin
c59894bd5c Implement cat -u and report correct exit condition 2014-11-13 14:56:15 +00:00
sin
5773a8f22b Implement concat() using read(2) and write(2)
This forces the data to be read as soon as they are available
and a simple cat(1) when stdin is referring to a tty works as
expected.
2014-11-13 14:56:06 +00:00
sin
a8c31586c5 Revert "config.mk: make cc the default $CC"
This reverts commit d2b527e369685606f812233a24dab12188d8930c.
2014-11-11 18:17:26 +00:00
sin
63f9f1ac14 Add special signal to the sigs table instead 2014-11-11 17:43:10 +00:00
sin
3ffe690384 Handle the special-case signal 0 and "0" properly 2014-11-11 17:40:26 +00:00
sin
f06ada4592 Simplify logic in kill(1) 2014-11-11 17:31:42 +00:00
sin
e4e47a617e Handle "--" for -l and -s as well in kill(1) 2014-11-11 17:13:10 +00:00
sin
c0f540162f Die early if signal is invalid in -signum 2014-11-11 16:34:33 +00:00
sin
0967d2e278 Factor out check for WTERMSIG 2014-11-11 16:34:28 +00:00
sin
e0b0741ba1 Add name2sig() and simplify kill(1) 2014-11-11 16:29:01 +00:00
sin
88f26b222b Actually print usage if kill -l is invoked with more than 1 arg 2014-11-11 16:09:24 +00:00
sin
a81544a810 kill -l accepts at most 1 arg 2014-11-11 16:08:30 +00:00
sin
aee8535a71 Fix outdated comments 2014-11-11 15:55:31 +00:00
sin
23d1dc6a55 Update manpage and usage for kill(1) 2014-11-11 15:53:26 +00:00
sin
61046dd39b Remove redundant check in kill(1) 2014-11-11 15:40:58 +00:00
sin
a0e9050925 Implement XSI extensions -signal_name and -signal_number for kill(1) 2014-11-11 15:37:26 +00:00
sin
237673302d Make kill(1) POSIX conformant
* XSI extensions support is missing, -signal_name and -signal_number.
2014-11-11 15:08:58 +00:00
sin
0444d16475 Fix kill -l 2014-11-10 23:56:10 +00:00
Hiltjo Posthuma
603d86f276 config.mk: make cc the default $CC 2014-11-10 23:56:10 +00:00
Hiltjo Posthuma
6d410168b8 style fix: fix indentation (double) 2014-11-10 23:56:10 +00:00
Evan Gates
5cf965ffbf return exit status of command in sbase-box 2014-11-08 13:50:55 +00:00
sin
9750071b97 Fix stupid GCC warning
tar.c:239:9: warning: missing braces around initializer [-Wmissing-braces]

I believe this is an unresolved bug in GCC.
2014-11-03 10:21:05 +00:00
sin
b03b2b1d5d Add Michael Forney to LICENSE 2014-11-03 10:17:41 +00:00
Michael Forney
62850af594 chown: Support numeric uids/gids 2014-11-03 10:15:40 +00:00
Michael Forney
6164445cce Fix symbolic mode parsing in parsemode
I found quite a lot of bugs, so I ended up pretty much rewriting as I
followed the spec¹.

Now, it works as follows:

- Determine a mask (who) of bits that can be modified for the subsequent
  operations. If none are specified, select all file mode bits.
- In a loop, determine which operation (+, -, =) to apply.
- If the next character is a permcopy (u, g, o), set the new permissions
  (perm) corresponding to the bits set in the user, group or other parts
  of the existing mode.
- Otherwise, set the new permissions by looping through the next r, w,
  x, s, t characters.
- Now, the set of bits we want to add or remove is (who & perm). Set or
  remove these bits according the the operation (first clearing the
  appropriate bits if the operation is =).
- Continue from the top if the next character is a comma, otherwise,
  process the next operation.

I tested this on some made up inputs, and I believe it is working
correctly now:

  parsemode("g+w", 0644, 0),    before: 0606, now: 0664, fixed
  parsemode("u+rx", 0222, 0),   before: 0077, now: 0722, fixed
  parsemode("+x", 0644, 023),   before: 0754, now: 0754, still works
  parsemode("+w", 0444, 022),   before: 0644, now: 0644, still works
  parsemode("+w", 0444, 0),     before: 0666, now: 0666, still works
  parsemode("+s", 0755, 0),     before: 0755, now: 6755, fixed
  parsemode("u+s", 0755, 0),    before: 0055, now: 4755, fixed
  parsemode("g+s", 0755, 0),    before: 0705, now: 2755, fixed
  parsemode("g=u", 0700, 0),    before: 0000, now: 0770, fixed
  parsemode("go=u-w", 0700, 0), before: 0000, now: 0755, fixed
  parsemode("o+u-g", 0641, 0),  before: 0000, now: 0643, fixed
  parsemode("u=rx,o+w,g-r", 0654, 0) before: error, now: 0516, fixed
  parsemode(",", 0654, 0), before: error, now: error, still works

¹ http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html
2014-11-03 10:15:29 +00:00
Michael Forney
6327290cf2 grep: Fix -c flag 2014-11-02 09:46:52 +00:00
Michael Forney
1ca8a314f8 grep: Remove newlines before matching a line
Otherwise, a pattern with a '$' anchor will never match and POSIX says that

  "By default, an input line shall be selected if any pattern ... matches any
   part of the line excluding the terminating <newline>"
2014-11-02 09:46:46 +00:00
Michael Forney
7ed4866556 tar: Implement -m flag
This changes the default behavior to adjust mtimes to what is present in
the file header.
2014-11-01 22:34:29 +00:00
Michael Forney
e1f87da43e tar: Handle archives with the prefix field
Also, handle names and prefixes that fill the entire field (and have no
NUL byte) by using a precision specifier.
2014-11-01 22:34:19 +00:00
Michael Forney
0e8a8c9426 tar: Support typeflag '\0' when extracting
POSIX recommends that "For backwards-compatibility, a typeflag value of
binary zero ( '\0' ) should be recognized as meaning a regular file when
extracting files from the archive".
2014-11-01 22:34:08 +00:00
Michael Forney
453ce96d44 tar: Don't crash when get{pw,gr}uid fails 2014-11-01 22:33:55 +00:00
sin
73115682ed Mention programs that were imported from OpenBSD
These need replacing or cleaning up at some point.
2014-10-21 17:50:43 +01:00
sin
d364a813be Remove misleading line in README
We try to follow POSIX as much as possible.
2014-10-19 13:20:51 +01:00
Hiltjo Posthuma
4d4e2608c1 ls: add -h flag
for util/human don't show "B" for bytes.
2014-10-19 12:54:19 +01:00
Hiltjo Posthuma
2cf82f4c16 du: add -d flag to specify the max depth to show files or directories
we don't allow to use it with -s (like GNU du). busybox allows it.
2014-10-18 23:57:00 +01:00
Hiltjo Posthuma
b6b8fe9591 separate humansize into a util function
also show 1 decimal of human size string like: 4M -> 4.4M
2014-10-18 23:56:51 +01:00
sin
ff93350289 Fix col(1) -f
patch taken from openbsd.

Ingo Schwarze says:

If you call the col(1) utility with the -f option, permitting forward
half-line feeds in the output stream, and the input stream actually
contains half-line feeds in either direction, you end up with corrupt
output, containing meaningless escape-digitnine sequences instead of
the required escape-tab sequences.

   $ hexdump -C half.txt
  00000000  61 1b 09 62 1b 09 63 0a                    |a..b..c.|
  00000008
   $ col -f < half.txt | hexdump -C
  00000000  61 1b 39 0d 20 62 1b 39  0d 20 20 63 0a    |a.9. b.9.  c.|
  0000000d

Note how the third character changes from 0x09 to 0x39.

OK to commit the following fix?  Don't worry, it isn't dangerous,
it only changes two *bits*, only a quarter of a byte.

The bug was introduced by the original author, Michael Rendell,
and committed by Keith Bostic on May 22, 1990 (SCCS rev. 5.1).

The following operating systems are affected:

 * 4.3BSD Reno, BSD Net/2, 4.4BSD, 4.4BSD Lite1, 4.4BSD Lite2
 * All versions of 386BSD, NetBSD, OpenBSD, FreeBSD and DragonFly
 * All versions of Debian GNU/Linux and probably many other Linuxes
2014-10-17 21:14:00 +01:00
sin
353ac69a93 Fix a completely broken ln(1) 2014-10-17 16:08:16 +01:00
Evan Gates
0cc3beb739 Introduce new test(1) implementation 2014-10-17 15:47:55 +01:00