suckless unix tools
git clone git://
Log | Files | Refs | README | LICENSE

DateCommit messageAuthorFiles+-
2018-07-07 07:26tty: fix exit value on error from 1 to 2Mattias Andrée1+3-2
2018-07-06 21:19dirname: support --Mattias Andrée1+4-1
2018-07-06 21:19basename: support --Mattias Andrée1+4-1
2018-03-06 13:38Simplify expression in makeline()Roberto E. Vargas Caballero1+4-2
2018-03-04 16:10Improve doglobal()Roberto E. Vargas Caballero1+18-12
2018-03-04 13:06Move join() to use String typeRoberto E. Vargas Caballero1+9-9
2018-03-04 13:06Move lastre to String typeRoberto E. Vargas Caballero1+6-7
2018-03-04 16:08Fix copy()Roberto E. Vargas Caballero1+8-3
2018-03-04 13:06Move text to String typeRoberto E. Vargas Caballero1+7-8
2018-03-04 13:01Move cmdline to String typeRoberto E. Vargas Caballero1+17-15
2018-03-04 19:17Add TODORoberto E. Vargas Caballero1+21-0
2018-03-04 15:08Allow overlapping transferRoberto E. Vargas Caballero1+10-8
2018-03-04 12:59Define new String typeRoberto E. Vargas Caballero1+23-0
2018-03-04 10:58Set restore point before setting signal handlersRoberto E. Vargas Caballero1+6-8
2018-03-04 14:15Rename addchar_() to addchar()Roberto E. Vargas Caballero1+24-39
2018-03-04 19:16Fix undoRoberto E. Vargas Caballero1+17-4
2018-03-04 13:06Move subline() to use String typeRoberto E. Vargas Caballero1+15-16
2018-03-04 13:56Fix type of c in getrhs()Roberto E. Vargas Caballero1+10-11
2018-03-04 16:10Use nextln() in scroll()Roberto E. Vargas Caballero1+10-4
2018-03-04 13:56Fix type of c in execsh()Roberto E. Vargas Caballero1+2-2
2018-03-04 13:06Move execsh() to use String typeRoberto E. Vargas Caballero1+10-11
2018-02-26 06:56od: For the 'c' type, format non-printable charecters as octalMichael Forney1+3-0
2018-02-25 20:56od: Don't modify bytes in the line for the 'a' typeMichael Forney1+7-6
2018-02-24 08:08ed: Write "?\n" and explanatory messages to stdoutMichael Forney1+3-3
2018-01-28 14:51Fix line buffering issue with ed promptSamadi van Koten1+3-1
2017-10-22 00:09sed: Fix parsing bug in find_delimPieter Kockx1+1-0
2017-10-25 07:55sed: Add usagePieter Kockx1+3-1
2017-10-11 22:17which: fix whitespacePieter Kockx1+2-2
2017-10-04 00:25tr: Fix infinite loopPieter Kockx1+1-1
2017-10-21 05:26which: Minor simplificationMichael Forney1+2-4
2017-10-20 19:31which: Don't look for paths with slashes in $PATHMichael Forney1+3-3
2017-10-20 19:30which: Move executable check to helper functionMichael Forney1+12-7
2017-10-11 01:12which: handle relative/absolute pathnamesPieter Kockx1+10-1
2017-10-01 03:36chmod: Use DIRFIRSTDavid Phillips1+1-1
2017-10-01 08:39libutil/recurse: only opendir if recursingDavid Phillips1+8-10
2017-09-10 00:34tar: Fix a few weprintf/eprintf format stringsMichael Forney1+4-4
2017-09-07 17:00Fix segmentation fault in paste(1)Pieter Kockx1+1-1
2017-09-06 01:13Add missing getconf.h dependency to sbase-boxEric Pruitt1+1-1
2017-09-04 00:26getconf: Ensure output was written successfullyMichael Forney1+4-4
2017-09-03 22:39getconf: Report invalid variables as errorsMichael Forney2+3-5
2017-01-02 01:09date: add date/time setting capabilityJohn Vogel2+109-10
2017-09-03 18:39date: Just set TZ to handle -u flagMichael Forney1+5-6
2017-02-03 22:56tar: Explain reason for malformed headerMichael Forney1+15-7
2017-08-22 04:51ls: abort a directory if we cannot opendir itDavid Phillips1+1-0
2017-08-05 21:50Handle { NULL } argv[] properly in manual arg-reductionLaslo Hunhold22+24-23
2017-07-03 21:58tail: Process bytes with -c option, and add -m option for runesMichael Forney2+27-8
2017-07-03 21:58tail: Use fstat in case file is removedMichael Forney1+9-11
2017-07-03 21:58cp: Only call chmod with -p or -aMichael Forney1+6-5
2017-07-03 21:58concat: Use plain read/write instead of buffered stdioMichael Forney8+200-169
2017-01-02 01:00Don't use buffered IO (fread) when not appropriateMichael Forney5+83-69
2017-01-02 01:00libutil: Add writeall utility functionMichael Forney3+26-1
2016-12-15 03:40mkdir: Fix created directory permissionsMichael Forney4+13-16
2016-12-15 03:40mkdir -p: Fail if argument exists, but is not a directoryMichael Forney1+9-0
2016-12-15 03:40mkdir: Fail on EEXIST with no -p flagMichael Forney1+3-4
2016-12-15 03:40du: Don't print 0 entry if stat of named file failsMichael Forney1+8-7
2016-12-15 03:40Remove st != NULL checks from recursor functionsMichael Forney6+10-10
2017-05-07 11:50libutil: fix leaksHiltjo Posthuma1+4-0
2017-03-08 07:10libutil/unescape: NULL terminate unescaped stringMichael Forney1+1-0
2017-03-08 07:32test: Use complete prototypes in func field of struct testMichael Forney1+40-37
2017-02-04 23:44libutil/unescape.c: simplify and add \EMattias Andrée1+42-59
2017-02-04 21:15libutil/unescape.c: only print argv0 once on errorMattias Andrée1+3-3
2017-01-29 21:17cp.1: source and dest are not optionalMattias Andrée1+2-2
2017-01-26 23:41getconf: fail if any other flag than -v is usedMattias Andrée1+3-0
2017-01-10 10:28ed: fix commit 2ccc1e8Roberto E. Vargas Caballero1+1-2
2017-01-10 07:46ed: Don't use strlcpy()Roberto E. Vargas Caballero1+2-3
2017-01-10 07:41Revert "ed: remove double free in join()"Roberto E. Vargas Caballero1+2-1
2016-11-03 15:19ed: Treat addresses of 0 as 1 for insertThomas Mannay1+1-1
2016-10-06 09:16ls: print filenames on the fly rather than in a bufferQuentin Rameau1+20-28
2016-12-27 00:22paste: fix warning on indentation in parallel()Robert Karl1+1-1
2016-12-27 13:49cp: Also preserve atime/mtime for symlinksMichael Forney1+9-7
2016-12-06 10:17cp: Check result of utimensatMichael Forney1+4-2
2016-12-06 10:16xinstall: Check result of fchmodMichael Forney1+2-1
2016-12-06 10:16od: Fix buffer overflow if -N flag is larger than BUFSIZMichael Forney1+10-8
2016-12-27 13:30Add a TODO-note about crypt.cLaslo Hunhold1+3-0
2016-12-06 10:16crypt: Add some missing error checks for cryptsumMichael Forney1+10-6
2016-12-03 11:51install: ignore -sMattias Andrée2+6-31
2016-12-27 12:48xinstall: Fix broken memmove with -tMichael Forney1+1-1
2016-12-01 07:27parsemode: No need to return after eprintfMichael Forney2+3-8
2016-12-27 12:29remove install.1 on make uninstallparazyd1+1-1
2016-10-24 15:16printf: handle \0 in %b argumentsEvan Gates1+5-5
2016-10-20 16:06Makefile: sort file listsEvan Gates1+7-7
2016-10-19 18:04targets must be prerequisites to .PHONY not commandsEvan Gates1+1-2
2016-12-27 12:07ed: Use strlcpy() instead of strcpy() and other minor thingsLaslo Hunhold1+11-7
2016-10-09 23:14ed: add manpageThomas Mannay1+210-2
2016-10-09 23:13ed: remove double free in join()Thomas Mannay1+1-2
2016-10-09 23:12ed: place newly joined lines correctlyThomas Mannay1+13-9
2016-10-09 23:11ed: giving j only one address does nothingThomas Mannay1+2-3
2016-10-09 23:10ed: remove infinite loops in join() and getindex()Thomas Mannay1+6-2
2016-10-05 22:34find: remove VLAsEvan Gates1+17-6
2016-10-05 22:37find: estrdup before basenameEvan Gates1+8-1
2016-07-25 01:04ed: Fix backslash expressions in RHSWolfgang Corcoran-Mathe1+1-6
2016-07-25 01:04ed: Don't match against line 0 in search()Wolfgang Corcoran-Mathe2+2-2
2016-03-26 16:23Add rev(1)Mattias Andrée4+98-0
2016-11-18 11:45tr: Fix multiple ranges with different lengths (Michael Forney)Laslo Hunhold1+1-1
2016-10-05 21:43ls: respect -q when printing directory names with -REvan Gates1+31-26
2016-10-05 17:57ls: fix ls -lq to respect -q flagEvan Gates1+1-1
2016-10-05 23:59tr: Provide a fallthrough case for single-arg -sLaslo Hunhold1+15-5
2016-10-05 22:15tr(1): Properly handle the -dc case for character classesLaslo Hunhold1+7-2
2016-10-05 19:54tr(1): Properly jump to output when inside set complementLaslo Hunhold1+1-1
2016-10-05 19:42tr.1: Make note of some changes in the utilityLaslo Hunhold1+8-3