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

DateCommit messageAuthorFiles+-
2019-08-05 17:13ls, tar: Guard inclusion of sys/sysmacros.h by absence of `major` definitionMichael Forney2+2-2
2019-07-27 20:29which: check AT_EACCESSMattias Andrée1+1-1
2019-07-27 20:29which: remove unnecessary third parameter in O_RDONLY call to open(3)Mattias Andrée1+1-1
2019-07-04 21:49chgrp: parse gid if operand is not group nameRichard Ipsum1+4-4
2019-07-03 16:32chown/chgrp: chown target not symlink by defaultRichard Ipsum2+2-2
2019-06-30 20:17Don't justify text in READMEMichael Forney1+14-14
2019-06-30 20:13Move utility status to its own section at the end of READMEMichael Forney1+31-28
2019-06-30 01:39Remove unnecessary ';' after ARGENDMichael Forney2+2-2
2019-06-28 07:18Revert "Do not use arg.h for tools which take no flags"Michael Forney13+70-13
2019-06-13 20:52Add .gitignoreMichael Forney2+103-1
2019-06-13 20:45mkfifo: Simplify -m handlingMichael Forney1+4-12
2019-06-13 20:07sed: Print better error message when open failsMichael Forney1+11-6
2019-06-09 17:39mkfifo: Set initial modeRichard Ipsum1+1-1
2019-05-20 07:13libutil: Rename functions in reserved namespace to prevent potential conflictMichael Forney1+6-0
2019-05-20 16:21grep: Fix exit status on use of -lRichard Ipsum1+1-1
2019-04-28 20:26cal: Centre month and year above calendarRichard Ipsum1+9-6
2019-04-22 22:35cal: Fix grid alignment for years < 1000Richard Ipsum1+1-1
2019-04-17 00:44expr: Allocate arrays with reallocarray instead of VLAMichael Forney1+4-2
2019-04-17 00:41libutil: Add enreallocarrayMichael Forney2+8-1
2019-04-17 00:27libutf: Adjust runelen prototype to match definitionMichael Forney1+1-1
2019-04-13 02:11date: Fix default format stringRichard Ipsum1+1-1
2019-02-22 22:26sort: Use regular `double` for -nMichael Forney1+3-3
2018-11-20 22:33Fix typoStephen Gregoratto1+1-1
2018-07-02 07:42On glibc, include sysmacros.h directlyDavid Phillips2+7-0
2018-09-26 00:57find: Make -H and -L flag handling clearerMichael Forney1+10-3
2018-07-11 18:53uname: check that no operands are specifiedMattias Andrée1+3-0
2018-09-22 10:30ed: Changed delimiter to fix unterminated TODO commentFiras Khalil Khana1+1-1
2018-09-20 08:49ed: Add more bugs to TODORoberto E. Vargas Caballero1+10-0
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 19:17Add TODORoberto E. Vargas Caballero1+21-0
2018-03-04 19:16Fix undoRoberto E. Vargas Caballero1+17-4
2018-03-04 16:10Use nextln() in scroll()Roberto E. Vargas Caballero1+10-4
2018-03-04 16:10Improve doglobal()Roberto E. Vargas Caballero1+18-12
2018-03-04 16:08Fix copy()Roberto E. Vargas Caballero1+8-3
2018-03-04 15:08Allow overlapping transferRoberto E. Vargas Caballero1+10-8
2018-03-04 14:15Rename addchar_() to addchar()Roberto E. Vargas Caballero1+24-39
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 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-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 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 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-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-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-11 22:17which: fix whitespacePieter Kockx1+2-2
2017-10-04 00:25tr: Fix infinite loopPieter Kockx1+1-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
More commits remaining [...]