Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-07-08 | Work around a posix violation in the croups filesystem that LTP requires. | Rob Landley | |
Posix says you removing a non-empty directory "shall fail" in both: https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/functions/unlinkat.html https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/functions/rmdir.html So toybox mv went ahead and unlinked the directory even if the contents hadn't all been deleted because posix guarantees it to be harmless. But cgroups (https://lwn.net/Articles/679786/) deletes the non-empty directory, thus the Linux Test Project's cgroups_fj_function test6 was failing with toybox mv because they depend on not triggering the posix violating behavior. Work around it by having mv DIRTREE_SAVE failing nodes and then check for a non-empty ->child in the COMEAGAIN as a signal not to unlink the dir. While I'm there do some code cleanup, add a cp -i test... | |||
2021-02-07 | Add lots of "static" annotations, make a couple things use FLAG() macros, etc. | Rob Landley | |
2020-10-15 | Three trivial code cleanups and a comment tweak. | Rob Landley | |
2020-10-15 | Nitpicky cleanup. | Rob Landley | |
We need to *name = 0 explicitly for the !name && !statless case, so don't need the +1 in memset that was only zeroing in the !name && statless case. | |||
2020-10-15 | dirtree_path: always honor size request. | Elliott Hughes | |
tar asks dirtree_path() to reserve space for a trailing '/', but recent changes broke that for the case that was resolving to just a strdup(). Caught by `export ASAN=1` and `make test_tar`. | |||
2020-10-12 | Fix bug introduced last commit: the if (name) else case needs to zero it. | Rob Landley | |
2020-10-11 | toysh: more variable/wildcard plumbing and tests. | Rob Landley | |
2020-10-06 | The non-recursive dirtree_path wasn't stripping a trailing / from initial path. | Rob Landley | |
2020-10-03 | Return empty string for dirtree_path() of "" (instead of NULL). | Rob Landley | |
2020-10-03 | Non-recursive dirtree_path() needs to return start of allocation | Rob Landley | |
when passed in extra allocation length or else free() gets very unhappy. | |||
2020-09-26 | Teach dirtree that top level "" node is "." but not show in dirtree_path(). | Rob Landley | |
2019-12-14 | dirtree.c: avoid spurious EINVAL warnings. | Elliott Hughes | |
An Android engineer complained that they were seeing this when not running as root: $ adb shell ls ls: ./postinstall: Invalid argument ls: ./init: Permission denied ls: ./data_mirror: Invalid argument ls: ./init.environ.rc: Invalid argument ls: ./metadata: Invalid argument acct adb_keys apex From strace, it was here: newfstatat(4, "adb_keys", 0x7fc67eca88, AT_SYMLINK_NOFOLLOW) = -1 EACCES (Permission denied) readlinkat(4, "adb_keys", 0x5e843c7720, 4095) = -1 EINVAL (Invalid argument) So stop looking at st.st_mode (and then deciding to do a readlinkat()) if we didn't actually successfully stat(). | |||
2019-11-23 | Elliott pointed out a codepath that could use uninitialized data. | Rob Landley | |
(If DIRTREE_SYMFOLLOW returns ENOENT, skipping the second fstatat() would also skip the else goto error) | |||
2019-10-29 | Let "find -L -type -l" find dangling symlinks. | Rob Landley | |
2019-08-26 | Try to make ls failure more graceful. Print ? ? ? entries instead of error msg. | Rob Landley | |
Tweak DIRTREE_STATLESS so it returns zero stat for any error (I'm testing that dev, ino, and blksize are all zero), and fill in file type from readdir() | |||
2019-08-09 | find: fix dangling symlink behavior. | Elliott Hughes | |
ENOENT is ignored, but other errors are reported. | |||
2019-06-20 | The O_PATH breaks stuff, have to work around Android's selinux rules for / | Rob Landley | |
some other way. | |||
2019-06-11 | Add DIRTREE_STATLESS to return entries we couldn't stat(). | Rob Landley | |
Sets ->again |= 2 when that happens and ->st is zeroed. While we're there, don't memset(st) and then memcpy(st) over it, and use O_PATH in the open(). | |||
2018-10-27 | Dirtree shouldn't put a "No" in front of filename for "permission denied". | Rob Landley | |
2016-12-08 | Add DIRTREE_PROC to skip non-numeric entries and make ps/top etc use it. | Rob Landley | |
2016-11-21 | Have dirtree_notdotdot() pass through !node->parent so . and .. on the command | Rob Landley | |
line aren't filtered out. Audited all the callers and removed redundant calls, adjusted call sequence, etc. (And let rm _not_ do this, because posix.) | |||
2016-04-21 | Have dirtree_recurse() take the new dirfd as an argument. | Rob Landley | |
2016-03-07 | Cleanup pass on the dirtree infrastructure, in preparation for making rm -r | Rob Landley | |
handle infinite depth. Fix docs, tweak dirtree_handle_callback() semantics, remove dirtree_start() and don't export dirtree_handle_callback(), instead offer dirtree_flagread(). (dirtree_read() is a wrapper around dirtree_flagread passing 0 for flags.) | |||
2015-12-06 | Rename dirtree->data to dirfd, and don't store symlink length in it. | Rob Landley | |
2015-05-09 | Add DIRTREE_SHUTUP to disable dirtree warnings if file vanishes out from | Rob Landley | |
under traversal. Pass through full flag set in dirtree_add_node(), add dirtree_start() wrapper to provide symlink-only behavior (avoiding a lot of DIRTREE_SYMFOLLOW*!!(logic) repeated in callers). | |||
2014-09-22 | Respond to two static analysis issues in dirtree_path() reported by Ashwini ↵ | Rob Landley | |
Sharma. dirtree->name is an array, not a pointer, so can't be zero. Remove the test. We dereference plen without checking it for null but calling dirtree_path(0, 0) is pilot error: only the _first_ call can have plen = 0. Add a comment. | |||
2014-07-29 | Actually set the again flag when calling the dirtree comeagain callback. | Rob Landley | |
2014-07-26 | Move DIRTREE_COMEAGAIN second callback up to when the filehandle is still ↵ | Rob Landley | |
open, and add dir->again variable to distinguish second call instead of checking for -1 filehandle. | |||
2014-07-26 | Default xcreate/xopen to O_CLOEXEC. (Pass O_CLOEXEC in the flags to switch ↵ | Rob Landley | |
it back off.) This way we're not leaking filehandles to children from things like find -exec. | |||
2014-07-21 | Fix memory leak in error path. | Rob Landley | |
2013-07-06 | This inlines CRC64, and nothing more. | Isaac Dunham | |
The functions involved were called only once. | |||
2012-12-31 | Make dirtree_handle_callback() start with dirtree_ like the rest of the ↵ | Rob Landley | |
dirtree functions. | |||
2012-12-08 | Complicate the rm -i behavior to do what posix specifies. | Rob Landley | |
2012-12-06 | Have dirtree_add_node() set parent so error message can provide full path. | Rob Landley | |
2012-11-13 | Reindent to two spaces per level. Remove vi: directives that haven't worked ↵ | Rob Landley | |
right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style. The actual code should be the same afterward, this is just cosmetic refactoring. | |||
2012-07-18 | Only add / in dirtree_path if it hasn't already got one, spotted by Ashwini ↵ | Rob Landley | |
Sharma. | |||
2012-06-24 | Unify chown and chgrp, add support for -hHLP flags.0.3.1 | Rob Landley | |
2012-06-16 | Add dirtree_parentfd() | Rob Landley | |
2012-06-09 | Implement DIRTREE_SYMFOLLOW and ls -cSHL. | Rob Landley | |
2012-06-01 | Changed my mind about the design again, now callback is dirtree_opennode() ↵ | Rob Landley | |
and recursion choice is how caller interprets flags. | |||
2012-06-01 | Factor out dirtree_comeagain() callback, setting up depth-first search with ↵ | Rob Landley | |
open filehandle in node->extra. | |||
2012-05-27 | Update chgrp so -R works, tweaking DIRTREE_COMEAGAIN design along the way. | Rob Landley | |
2012-05-20 | dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to ↵ | Rob Landley | |
DIRTREE_RECURSE and DIRTREE_SAVE. | |||
2012-05-09 | Whitespace (tabs vs spaces) cleanup. | Rob Landley | |
2012-04-22 | More work on ls. Now ls -lR sort of works-ish. | Rob Landley | |
2012-04-14 | Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls ↵ | Rob Landley | |
(from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.) | |||
2008-11-12 | Work around a reiserfs bug. (One line change, switch from looking at broken ↵ | Rob Landley | |
struct dirent->dt_type to looking at stat() output. The rest are unrelated variable renames.) | |||
2008-05-12 | Update mdev to work around the newest sysfs api breakage in the 2.6.25 kernel. | Rob Landley | |
(Yeah, I know sysfs hasn't actually got an API, but I like to pretend...) | |||
2008-03-24 | If we don't remember to closedir(), the leaked filehandles add up. | Rob Landley | |
2008-02-21 | Make cp pass most of its test suite. Still need to add symlink support. | Rob Landley | |