Age | Commit message (Collapse) | Author |
|
(Broken out of a larger patch, fixed the other part a different way.)
|
|
Once upon a time you could call fchown() and let it fail. Then gcc decided
not using its return code was inconcievable, but you could typecast it to (void)
to shut it up. Then gcc noticed people doing that and clutched its pearls and
took it away, so I added an if() statement that does nothing with the result
because we _expect_ this to fail when we're not root. Then clang started
complaining about an if (); statement with the semicolon on the same line,
but decided it's ok if the ; is on the next line (I.E. significant whitespace
in C), so I'm adding an "assignemnt to self" that gets optimized away so
it does a more _explicit_ nothing (the same way you suppress gcc's broken
"this isn't used uninitialized" warnings).
If the compilers weren't going to so much trouble to force the issue I might
add code to only call fchown when we're UID 0, but I refuse to be coerced
into it. (And if getpid() is still a system call instead of a vdso member
then it doesn't actually _save_ us anything, the dentry should be hot and
the permission check was just "if (!uid)" before selinux entered into it and
we're operating on an fd so the security's the same.)
|
|
(It was defaulting to 99999 but not FLAG_w, so it tried to _pad_ to 99999.)
|
|
an array index, which doesn't work as a local variable name. So rename it.
|
|
__attribute__((returns_twice)) instead of noinline.
Yes LLVM supports it: https://llvm.org/bugs/show_bug.cgi?id=6287
|
|
|
|
|
|
|
|
(left-justified) fields.
|
|
subtract one _less_ than /dev prefix length or string isn't terminated.
|
|
|
|
An ELF file with no program headers is valid, and binutils leaves e_phentsize
zero in that case. Fix the corruption check to cope.
Also, since notes are in both the program and section headers (and I'm not
aware of the possibility of having no sections but still having notes ---
where would they be?), look for them in the section headers instead.
Also extend the parsing of the .android.note.ident ELF note to include the
NDK version information if present. (This won't be present for platform
binaries, but will be present for NDK-built binaries such as app libraries.)
|
|
from incrementing by a double.
|
|
just for terminal width.
|
|
comment (I.E. negative first value _left_ justifies). This makes ps display
the same truncated values with and without a tty.
Also add a few comments to the rest of the file.
|
|
|
|
|
|
|
|
The finit_module() system call, introduced in Linux 3.8, reads the
module from a supplied file descriptor. This allows the kernel to do
security checks based on the file's location.
|
|
While most systems have their kernel modules, modules.dep etc located at
/lib/modules/`uname -r` this is not always the case.
The -d option may be used to specify a nonstandard path for these files.
It may be used more than once to specify multiple directories where
these files may be found.
|
|
I knew that just showing the process name was a divergence from
traditional Android behavior, but I was curious to see whether anyone
cared. Bug reports show that they do. I've not made this conditional on
CFG_TOYBOX_ON_ANDROID on the assumption that this is more useful for
everyone else too. (Why are you asking for per-thread information if
you don't actually want to be able to identify individual threads?)
Why not _just_ show the thread name? Because on Android at least, every
process has lots of identically-named threads; everyone has GC threads,
everyone has JIT threads, and so knowing _just_ the thread name is
rarely useful.
Why show thread name first? Because the kernel limits thread names to 15
bytes plus a NUL, so any left-over space should go to the process name,
so that should come last.
Why call the thread name THREAD? Because "CMD" isn't obviously "thread
name" to folks who don't know how this is implemented behind the scenes.
This change also removes an incorrect "usage:" comment. None of the
other commands in this file duplicated their "usage:" lines, and this
copy wasn't even close to being correct.
Bug: http://b/34610082
|
|
|
|
our comparison in years, and email with the maintainer convinced me it's
not a good yardstick for "what a traditional linux system expects to have".)
|
|
|
|
Android O removes name length limit for system properties.
Use __system_property_read_callback instead of deprecated
__system_property_read in getprop and remove check for
property name length in setprop.
Test: adb shell setprop debug.test.very.very.long.property.name valueforpropertywithlongname
Test: adb shell getprop | grep debug.test.very.very.long.property.name
Bug: http://b/33926793
Change-Id: I57ca99ea33283d069cd1b7b9f110ec9fb27f3d19
|
|
|
|
Recognize full range of linux serial speeds (only error cfsetspeed returns
is invalid speed value).
|
|
|
|
Our device bringup folks wanted a simple serial console, both on the
host and on the device. This is certainly enough to replace what I've
been using personally on the host.
I'd never heard of "microcom" until I asked the internets what busybox
users use, so I don't care what we call this or what the options are
called. (But would like to decide before it gets ossified in a million
factory test scripts and the like!)
The tool that this replaces for me defaulted to /dev/ttyUSB0, but since
I don't know whether that default would be useful for most other people
too, I left that out. Command-line history will solve my transition
problem.
|
|
for a reason and I need to completely rewrite it.
|
|
|
|
(The switch to 64 bits screwed up varargs: everything used to be promoted to 32
bits, but now it's 32 bits or 64 bits depending on type declarations, so you
need the type declarations. Because promoting "char" arguments to 32 bits back
when a megabyte was a lot of memory was ok, but promoting everything to 64 bits
now that you can get 2 gigabytes of ram in a phone is unacceptable.)
|
|
|
|
can show both output and reply lines.
|
|
upload/download that aren't implemented yet.)
|
|
make xsocket()'s returned fd CLOEXEC.
|
|
shouldn't segfault falling off the end of the list trying to report a
nonexistent error condition.
|
|
and although it was partially restored by https://lwn.net/Articles/699704/
that didn't include this list.
|
|
POSIX does have a name for the struct timespec in struct stat.
|
|
sizeof(int) != sizeof(size_t) for LP64, leading to hilarity^Wcrashes.
|
|
The "lsm" portability stuff could abstract this away, but Android doesn't
need it, and getprop is meaningless on non-Android. (And if you're just
building with the NDK, on recent enough versions of Android you won't be
able to read most of the system properties anyway because access to them is
increasingly restricted by selinux.)
|
|
Removes the dependency on libcutils for everything except ps.
|
|
A "globally unique 32 bit number" is a concept the Linux world has outgrown.
|
|
|
|
|
|
commandline tool fails to sort by the 3rd,4th,etc column. For example: when you exec
$ sort -t',' -k 3n
on a file which cotains:
1,2,3,4
2,3,4,1
4,1,2,3
3,4,1,2
you got:
4,1,2,3
1,2,3,4
2,3,4,1
3,4,1,2
but the expected output should be:
3,4,1,2
4,1,2,3
1,2,3,4
2,3,4,1
The bug is due to the dependency of "isspace(str[end])" at line 113.
When searching for the non-space key_separator, the search stopped just at the position of first key_separator it met.
The bug can be easily fixed by adding "end++" when the search have found one separator and exit the for loop.
|
|
Kernel can handle 64k maximum segment size.
|
|
because there's no -asec or -ahour.)
|
|
|
|
|