aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-04-11scan_key: support more terminals.Elliott Hughes
Although we can get away with ignoring termcap/terminfo on the output side by restricting ourselves to generally-supported escape sequences, the input side is trickier because we need to support the sequences sent by common terminals. Luckily, this isn't is as bad as it sounds because only Home/End commonly differ. But it does mean we need a slightly different implementation to deal with the many-to-one mapping. Since we can't use TAGGED_ARRAY for this (without inflicting pain on all the callers) I've also switched to OR-ing in the modifier keys, so we have (say) KEY_UP|KEY_SHIFT rather than a separate KEY_SUP. This also generalizes better should we ever need to support multiple modifiers at once. To reduce the number of #defines, I've also switched from KEY_F1, KEY_F2, and so on to KEY_FN+1, KEY_FN+2, and so on. This isn't obviously necessary, and easily undone if we'd rather have move #defines in return for slightly more natural naming. To enable all this, I've inverted scan_key and scan_key_getsize so that scan_key_getsize is now the underlying function, and we don't waste all the top bits encoding width and height between scan_key and scan_key_getsize. Tested by pressing Home and End in hexedit in all of the terminals available to me.
2019-04-05Restore symlink times and add --restrictRob Landley
2019-04-05Minor tweaks and fix a bug with "tar cvzf tar.tgz" autodetecting when specified.Rob Landley
2019-04-05tar: Fix -ORob Landley
2019-04-05tar cleanup: Hook up --exclude to filter plumbingRob Landley
2019-04-04Add "toyonly" function to test suite.Rob Landley
2019-04-04Add decompressed version.Rob Landley
2019-04-04Tweak stat.Rob Landley
next_printf() shouldn't return null unless it never found the start of an escape sequence (it'll return a pointer to the null at the end of the string otherwise), and the only time we point it at a % and it doesn't is when it's %%. So handle that before calling. (Also, a single trailing % prints in other implementations, and while I'm there update to use FLAG() macros, add a couple comments, and only xflush() once per pattern.)
2019-04-04stat: avoid null dereference.liwugang
When the specified format string has odd '%' in the end, the next_printf function will return null. Checking the result value before using it. Signed-off-by: liwugang <liwugang@xiaomi.com>
2019-04-03More tar tests, and fix tar to pass them.Rob Landley
2019-04-03VI rewrote char delete and hjkl movementsJarno Mäkipää
Reimplemented basic cursor movements and char delete. In order to work more correctly with utf-8 data. x,h,j,k,l seems to work now with test data such as tests/files/utf8/test2.txt hjkl now accept count parameter so 1000j will scroll file 1000 lines relative move to bottom word movements w,e,b... still need to be still reimplemented in order to step correctly on utf-8 data
2019-04-03Autodetect gzip and bz2 for both compression and decompression.Rob Landley
2019-04-02Don't leak stdout pipe filehandle into children.Rob Landley
2019-04-02Yeah, ok, that one can get used uninitialized.Rob Landley
2019-04-02More tar cleanup, more tests.Rob Landley
2019-04-02Have xflush() only flush stdout (that's all it checks errors on),Rob Landley
and tweak a couple comments.
2019-04-02Fix a test that wasn't deterministic.Rob Landley
2019-04-02Don't emit random -EPIPE error messages in a pipeline, just exit silently.Rob Landley
2019-04-02Don't check in todo notes.Rob Landley
2019-04-02More tar cleanup and tests.Rob Landley
2019-04-02Help text tweak.Rob Landley
2019-04-01Silence spurious gcc "lnk cannot be used uninitialized" warning.Rob Landley
2019-04-01More tar cleanup.Rob Landley
2019-03-31Add "skipnot" function to test suite, skips next test if command line fails.Rob Landley
2019-03-31More tar cleanup, some tests.Rob Landley
2019-03-31More tar cleanup.Rob Landley
2019-03-29vi: bug fixesJarno Mäkipää
Style cleanups: Removing whitespaces at end of lines, hopefully reduces git am warnings Bug fixes: fix segfault if file did not exist, now creates one empty line fix insert mode text not showing on start of line fix append on empty line fix cursor move right on empty line
2019-03-28bc: add a trivial regression test for input from stdin.Elliott Hughes
A trivial test, but it would have caught the previous bug...
2019-03-28vi.c improved utf-8 supportJarno Mäkipää
Now calculates utf-8 rune width properly before trying to print on screen. works with test1.txt and test2.txt on tests/files/utf8 folder with 0x0300-0x036F combining chars Uses mbtowc and wcwidth to calculate width of rune. These both should be implemented on c runtime that conforms POSIX-1.2001. Different c runtimes might have different level of support to combining char ranges etc... I think there is no standard way to calculate utf-8 rune width without converting it first to widechar. And i think conversion to widechar just to calculate width is silly, since all write calls can be done with utf8 directly (on utf8 locales ofc), but in order to calculate them yourself without pointless conversion, one would need to write variable byte lookup array for binary searching weird ranges and make sure it works with big-endian systems too... By the way running ./watch ./cat tests/files/utf8/japan.txt does not print the text for some reason, but other test data does... I was checking how well original crunch_str works and noticed it. -Jarno
2019-03-27Skip file contents in error case.Rob Landley
2019-03-27Silence another broken gcc "tar is never used uninitialized" warning.Rob Landley
2019-03-27Cleanup extract_to_disk(), enforce "file creation must be under cwd),Rob Landley
implement deferred utime updates (so directory timestamps correct).
2019-03-27xabspath: use O_PATH for dirfd.Elliott Hughes
SELinux on Android is unhappy if you try to read "/": avc: denied { read } for name="/" dev="dm-3" ino=2 scontext=u:r:hal_dumpstate_impl:s0 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0 That could happen via the open of ".." too, and potentially any other directory might have similar restrictions, so move all of the open calls to using O_PATH. O_PATH seems more intention-revealing given what this function is doing anyway.
2019-03-27Change fileunderdir() to return abspath to file.Rob Landley
2019-03-26xabspath: use O_PATH.Elliott Hughes
SELinux on Android is unhappy if you try to read "/": avc: denied { read } for name="/" dev="dm-3" ino=2 scontext=u:r:hal_dumpstate_impl:s0 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0 O_PATH seems more intention-revealing anyway.
2019-03-26Make touch use xparsedate() (result: -t and -d the same, autodetects format),Rob Landley
and fix tests to pass on host too.
2019-03-25Fix bc_vec_concatDaniel Rosenberg
BcVec contains the null at the end, so v->len is greater than strlen(v->v) by one.
2019-03-25Add rm -v.makepost@firemail.cc
Gentoo removes verbosely when building packages, for example vim-core: https://github.com/gentoo/gentoo/blob/665eaa8/app-editors/vim-core/vim-core-8.1.0648.ebuild#L120 Implement like toy cp, without prepending an escape sign to quotation marks in filenames. Document in a test this difference from coreutils but similarity to busybox. How do other implementations handle such escapes? If it matters, would you approach it with a loop and multiple prints or somehow else? Short help description follows 141a075, consistent with other commands.
2019-03-25find: fix inverted -exec exit statusVidar Holen
The return value of -exec was the command's exit code, which did not account for the fact that an exit code of zero means success, while in C, zero means failure. From POSIX: > the primary shall evaluate as true if the utility returns a zero > value as exit status This commit flips the return value, and adds two tests.
2019-03-24Factor out xparsedate() and xvali_date() into lib.Rob Landley
2019-03-24vi: Code style cleanupJarno Mäkipää
Variable initialization to start of blocks Space after if,for,while: if() -> if () Space after comma on function calls: write(fd,buf,count); -> write(fd, buf, count); Spaces surrounding variable initialization Pointer * binding to variable instead of type: int* i -> int *i Spaces surrounding compare operators No spaces surrounding arimetic operators Some aligntment whitespace fixes Still messy and needs more cleanup, but there is bigger issues to solve first.
2019-03-23vi: Removed C99/GNU99 style for loop initializersJarno Mäkipää
Removed for(int i = 0;....) style loop initializers to be consistant with project style. Removed few unused global variables Added 2 empty white space lines back to CONFIG comment section.
2019-03-23vi.c double_list based implementation.Jarno Mäkipää
Has beginnings of reading file, saving file, hjkl movement, insert, ex (only w, wq, q!), search with /, some other normal mode actions (dd, w, b, e), some utf8 support Everything is still very unfinished and partly behaves wrongly comparing to original vi. But simple tasks like modifying short config files should be possible. Some things like draw_page needs serious refactor since it now writes whole screen after every keypress. Didint bother to refactor yet if linked list needs to be replaced with something else...
2019-03-23login: clear environment when -p is absentWilliam Djupström
2019-03-22Silence stupid, pointless warnings.Rob Landley
Two "is never used uninitialized" and one "we don't trust you to get clearly documented operator precedence right". (The compiler may not "suggest". Every time I go "abc && def || exit 1" in the shell it means I know the operator precedence _and_ the short-circuit rules, which are the same as C here. This is a warning aimed at C++ developers, it should not be enabled for C.)
2019-03-22My todo entries were bothering people.Rob Landley
2019-03-22More tar cleanup, add --owner and --group, and start of new tests.Rob Landley
2019-03-21Test for compiler existence when sourcing portability.sh.Rob Landley
2019-03-20Next round of tar cleanup.Rob Landley
2019-03-18cmp/env/nice/nohup/sort: use TOYFLAG_ARGFAIL.Elliott Hughes
Also be a bit more consistent about `COMMAND [ARG...]` in usage text.