Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Noticed while using telnetd to manually test some telnet fixes: telnetd
would sometimes exit when I'd disconnect because it couldn't find pid 0
on its list of sessions.
I've not seen obscure exits because select() times out, but I've also
changed that `return` to an error_exit() so we'll at least know what's
happened if that ever occurs.
Also use <arpa/telnet.h> rather than manually #define'ing its constants,
use the FLAG() macro throughout, and xsetsockopt(). Don't pointlessly
set errno to 0 at the start of main and then never look at it again.
|
|
The kill(2) should be checking whether `pid` still exists, not the
process that wait(2) just told us has exited.
|
|
(fixes up some test suite tests).
|
|
I've been using toybox vi as a makeshift "less" lately. This patch
contains all the fixes I've made...
$ should go to the last character before the newline, not the newline.
Fix ^b and ^f, and ^e and ^y (which was mistakenly ^u before, which is
also a movement key, but half of ^d/^u, neither of which we actually
implement, and neither of which I've ever used myself --- I might have
large hands, but they're not _that_ large).
Fix the display of lines longer than 1024 characters.
Fix the display of the "~"s after the end of the file, and use VT100 dim
to make it a bit more obvious that they're not actually part of the
file. Also be a bit more consistent about \033 which is the most common
way to write \x1b in toybox.
Don't show the status while in ex mode.
Make what the status is showing a little less unclear by adding a "C"
for the byte offset and file size, and add a percentage (albeit one
based on bytes rather than lines).
Fix the flickering seen on updates with the usual stupid trick of
setting a large buffer.
Handle SIGWINCH.
Add support for Home/End/PageUp/PageDown.
Remove a bit of duplication around calls to draw_page().
|
|
Not fully wired up yet, probably a bunch of regressions.
|
|
I broke this when I added the masking out of the S_IFMT bits for macOS,
because string_to_mode needs the full mode with those extra bits,
specifically so that it can recognize directories for +X to work.
I've duplicated chtest rather than change chtest to explicitly set the
modes to 000 before running the given chmod command because I didn't
want to touch *all* the tests and obscure the addition of just one.
|
|
across one of the issues I forgot to fix. Added a couple comments and
renamed a variable to try to clarify the code while I was there.
|
|
It's legal for a system call to set non-zero errno and return a good
status. The caller (grep) should check return status first.
Test: 2000 loops of greping 1000+ lines each loop
Signed-off-by: Robin Hsu <robinhsu@google.com>
Change-Id: I55f7cd5d8a6289c5e8a21ed3057e995a75b9b4fa
|
|
|
|
|
|
A tar file created by toybox tar with values large enough to need
base-256 rather than ASCII octal caused a tar reader to crash, and
caused GNU tar to complain.
I note from the docs at
https://github.com/libarchive/libarchive/blob/master/libarchive/tar.5#L326
that they imply that only the top *bit* should be set to indicate this
format, not the whole top byte, to give a 95-bit or 63-bit field. But I
don't think we can hit that in practice?
Bug: http://issuetracker.google.com/181683612
|
|
|
|
|
|
Other dd implementations always show the status on exit, whether success
or failure. Fix that by using xsigatexit() (and clarify the comment for
that function a little, since it didn't previously address the "at exit"
part of its behavior at all).
This also fixes SIGUSR1 behavior so that we show the status immediately
rather than on the next trip round the read/write loop.
Tested with `dd of=/dev/full`, sending SIGUSR1 twice from another shell
(to see the status immediately each time, without exiting), then hitting
^C (to see the status and then exiting), then restarting dd and hitting
enter (to see a write error followed by the status before exiting).
Bug: https://issuetracker.google.com/177017283
|
|
|
|
My patch to fix df behavior on macOS broke the stat build on macOS.
First off, we had %s and %S the wrong way round compared to coreutils,
though since Linux always seems to use the same value for both,
no-one will ever have noticed.
Annoyingly, Linux and macOS disagree about what statfs::f_bsize
means, and whether statfs::f_iosize and statfs::f_frsize exist (each
has one or the other, depending on what f_bsize *doesn't* mean to
them). This mess is presumably why statvfs exists.
Unfortunately, statvfs on macOS at least doesn't contain the file
system type information. So we either need to do *both* statfs()
and statvfs() for macOS, or we need to take into account the different
fields.
This patch adds an #ifdef outside of portability.h because I wasn't
sure we actually wanted to add statfs_best_transfer_size() and
statfs_real_block_size() functions to lib for this. But that's an
easy cleanup if desired.
|
|
|
|
And fix one test for NUL that should be a length test for -z support
|
|
On Linux, struct statvfs' f_bsize and f_frsize seem to be
interchangeable. On macOS, they're wildly different. f_bsize is the
"preferred length of I/O requests for files on this file system"
(corresponding to statfs::f_iosize), and f_frsize is the "size in
bytes of the minimum unit of allocation on this file system"
(corresponding to statfs::f_bsize. POSIX appears to say nothing
about the interpretation of these fields, but man7.org's statvfs(2)
page is quite clear that statvfs::f_blocks, for example, is in units
of f_frsize, not f_bsize.
This is the only place in the tree where we use statvfs::f_bsize
(other than the stat(1) output that's supposed to be f_bsize and
that has a corresponding f_frsize dual anyway.
I've removed the Apple-specific #define f_frsize in portability.h
because that seems to have been from my previous attempt to understand
what was going on here. The output of the relevant stat(1) fields
on macOS are the same before/after this patch.
This makes toybox df's output match the system's df on a MacBook
Pro running macOS 11.2.1.
Tested on a Raspberry Pi 400 running Linux too, where I see no
change in the output before/after this patch.
|
|
|
|
|
|
more recently than the resulting mount point.
|
|
|
|
|
|
|
|
|
|
Requested by aheirman on github: uses access(X_OK) which checks access
control lists as well as permissions, and that _we_ can access them
(u+x could be owned by a different user)...
|
|
|
|
|
|
|
|
|
|
Also reorder the --help output to separate the "whats" from the "hows",
as with other commands that have lots of options, and add units to the
help too.
|
|
by not writing as much payload as the header promised.
|
|
|
|
Ethan Sommer noticed that chown is using chgrp_main() due to OLDTOY, so
the wrapper function isn't needed.
|
|
|
|
Avoid fgets() into toybuf other than to skip header lines, preferring
fscanf() or xgetline() instead.
Remove the early returns if we fail to skip a header line (fixes #62).
Fix `netstat -xl` which was previously broken (because only -a would
include listening sockets).
Fix a variety of formatting issues, bringing the diff between toybox
netstat and net-tools netstat down (which was what I used for testing).
Use FLAG() more consistently.
|
|
|
|
I need to set up a test environment for this...
|
|
|
|
Instead of unlink() && check errno, call lstat() explicitly to check
file existence if "-f" is specified.
There is a regression when if the path to be removed is nonexistence
and within a readonly filesystem, then unlink() could set the EROFS
errno instead of ENOENT, thus screwing up the output of `rm`.
|
|
or else singlemake enables it for all commands. (I was trying to
move it out of the command namespace, but it's not a global config
option either...)
|
|
|
|
|
|
|
|
|