Skip to content

Releases: raforg/rawhide

3.3 (20231013)

13 Oct 14:14
Compare
Choose a tag to compare
- Makefile - Place env CFLAGS after explicit flags so they can override the explicit flags
- configure - Fix --prefix= buglet (only worked if it was the first argument)
- Makefile - Include env CPPFLAGS (just in case)
- configure - Add --macports-prefix for macports with non-default prefix
- configure - Add missing --etcdir and fix --destdir and --mandir
- tests - Adapt to identify new adduser/addgroup help message
- Add body pattern modifiers: .body .ibody .rebody .reibody
- .reuse/dep5 - Make more accurate (strlcpy/strlcat not exactly BSD-3-Clause)
- pcre2 - Stop using the PCRE2_NEVER_BACKSLASH_C option
- configure - Remove 'when present' from pcre2 message for consistency
- configure/tests - Replace `which` with `command -v` (more consistent)
- tests - Make RAWHIDE_TEST_MULTIBYTE_USER_GROUP message shorter
- tests - On FreeBSD chflags uappnd fails on zfs so test with sappnd
- Add -j option (same as -L "%j\n")
- configure - Add --enable-ubsan --enable-asan (undefined behaviour/address sanitizers)
- doc - Show explicit -f- (as distinct from: -f fname) in --help output and SYNOPSIS
- doc - Add rhs/rht/rhz etc. shell functions (rh/-r/-l/-v sorted (via jq) by path/mtime/size)
- doc - Make rawhide.conf(5) manual entry fit in 80 columns again
- doc - Update grammar to include recently added pattern modifiers
- Fix -L %j access_control_list_verbose on FreeBSD/Solaris (wasn't verbose)
- Revoke any setuid/setgid privileges at the start

3.2 (20230609)

09 Jun 11:24
Compare
Choose a tag to compare
- Add support for attr (flags) on FreeBSD, OpenBSD, NetBSD, and macOS
- Add ./configure --default (to avoid needing the details in Makefile)
- Change --help pattern modifiers layout to improve readability
- Remove explicit PCRE2 JIT compilation (had introduced uninitialized reads)
- Add file type pattern modifiers: .what .iwhat .rewhat .reiwhat
- Add MIME type pattern modifiers: .mime .imime .remime .reimime
- Add -L %w (file type description) %W (MIME type)
- Add to -L %j (JSON) output fields: filetype mimetype

3.1 (20221011)

11 Oct 06:23
Compare
Choose a tag to compare
- Add built-in symbols for Linux ext2-style file attributes: attr proj gen
- Add real /etc/rawhide.conf.d/attributes (for Linux with libe2p installed)
- Add reference file fields: attr proj gen attribute project generation
- Add -L %e %J %I conversions (Linux ext2-style file attributes project generation)
- Add to -L %j (JSON) output, Linux ext2-style file attributes project generation
- Add replacing "/".i "/".re "/".rei with implicit "/".ipath "/".repath "/".reipath
- Add identifying pattern modifiers by unique prefixes (e.g., "/".p for "/".path)
- Add "make default" target (extracted from make dist, to undo ./configure)
- Fix -l column width buglet when user/group names contain multi-byte characters
- Fix max path length buglet when crossing filesystem boundaries during traversal
- Allow multiple -f options (but not multiple -f- because stdin can't be read twice)
- Allow -f option argument to be a directory or to have a corresponding .d directory
- Cache test-related getenv values that were being checked many times in normal use
- Add a few more tests to maximize coverage within reason (97.04% on my Debian dev VM)
- Add explicit PCRE2 JIT compilation (not noticeably faster - maybe default behaviour)

3.0 (20220330)

17 Sep 12:38
Compare
Choose a tag to compare
- Update (after 32 years!) to compile and work again (ISO/IEC C, POSIX)
- Remove internal getopt/glob_match, replacing with standard getopt/fnmatch
- Remove MANIFEST (empty)
- Remove META (only relevant for the original comp.source.unix release)
- Add LICENSE COPYING CHANGELOG CODE_OF_CONDUCT.md
- Change -h option so it terminates (was documented behaviour but still wrong)
- Fix insecure multiple potential buffer overruns
- Fix insecure -x shell command injection
- Improve syntax error messages (more informative)
- Increase static code/data/stack space by three orders of magnitude
- Increase identifier length limit to 200
- Add @groupname and @@ expression notation
- Add support for underscore in function/parameter names
- Add support for dot, dash, and underscore in user/group names
- Add support for ~/.rhrc.d/*, /etc/rawhide.conf, and /etc/rawhide.conf.d/*
- Add -N and -n options to suppress system-wide config and user-specific config
- Add // and # single-line comment styles
- Add built-in stat field symbols: blksize blocks
- Change built-in symbols: hours/days/weeks to hour/day/week
- Add built-in number symbols: second minute month year
- Change to default "-e 1" expression to match everything (rather than stdin)
- Add "-f -" convention to read from stdin (now that it's no longer the default)
- Add error reporting during directory traversal (stderr and exit status)
- Interpret two-digit years as being in the current century
- Add built-in number symbols: IRWXU IRUSR IWUSR IXUSR
- Add built-in number symbols: IRWXG IRGRP IWGRP IXGRP
- Add built-in number symbols: IRWXO IROTH IWOTH IXOTH
- Add /etc/rawhide.conf "standard" library (nice names for things, handy functions)
- Remove example rhrc (subsumed by /etc/rawhide.conf)
- Change built-in symbol NOW to now (not backwards compatible!) NOW { now }
- Make "return" and ";" optional in functions (always redundant, more compact)
- Make rh exit with failure status if any -x command exits with failure status
- Add many ruthless tests
- Add -V (version) option
- Add --help and --version options
- Add -0 option (nul-separated output) for use with xargs -0
- Make "-e" optional for lean flexible cmdline (expr can appear among dir args)
- Fix built-in prune over-pruning (wasn't reset until after siblings done)
- Add built-in symbol: exit (terminate immediately - usage: 'expr ? exit : 0')
- Make "return" a keyword token rather than a built-in symbol
- Fix "glob" string tokeniser to handle "\""
- Fix inaccurate [yyyy/mm/dd] to time_t conversion (use standard mktime)
- Add support for datetimes: [yyyy/mm/dd hh:mm:ss] (ss and mm:ss are optional)
- Make "*" match leading dot (POSIX/GNU find compatible, but not Solaris find) 
- Test on Debian, Ubuntu, Fedora, FreeBSD, OpenBSD, NetBSD, macOS, Solaris, Cygwin
- Move some functions from rh.c/rhparse.c to more appropriate modules
- Fix crash on attempt to divide by zero (and modulo)
- Add support for doors (IFDOOR) on Solaris
- Add hexadecimal number literals (0xff)
- Add options -m # (minimum depth) and -M # (maximum depth)
- Fix/Add short-circuit semantics for || and && operators (for "expr && exit")
- Add built-in symbols: nouser nogroup
- Minimize the number of race conditions during traversal (fstatat/openat/fdopendir)
- Add built-in symbols: readable writable executable (faccessat/access)
- Add -X 'cmd' option (like -x with safe cd for minimal race conditions)
- Automatically remove cwd and other non-absolute dirs from $PATH when -X is used
- Add configure script to adjust binary/config/manpage installation locations
- Gzip manual entries when installing on systems that prefer it
- Add -? 'spec' option (debug: cmdline parser traversal exec all extra)
- Add "/path".mtime syntax for comparison against reference files
- Add -D option (depth-first traversal)
- Add -U option (unlink)
- Add heuristic to better identify expr/path when no -e and path doesn't exist
- Make -l (without -v) more like ls -l (add nlink username groupname mtime)
- Add output column options: -d -i -B -s -g -o -a -u -c (mostly ls-compatible)
- Make -v option include all the output columns
- Add other output format options: -H -I -T -#
- Add name output format options: -Q -E -b -q -p -t -F (mostly ls-compatible)
- Change -H and -I to round up (ls-compatible output)
- Add -HH and -II to round half up (more accurate)
- Remove rh.man (troff) in favour of POD format (for html and troff output)
- Re-document everything: README.md rh.1.pod rawhide.conf.5.pod
- Add built-in symbol: today (last midnight local time)
- Add "pattern".modifier syntax for glob modifiers: .i .path .ipath .link .ilink
- Add -1 option (single filesystem - don't cross filesystem boundaries)
- Add built-ins for symlink targets: texists tdev tino tmode tnlink tuid tgid ...
- Add -y option (follow symlinks on the cmdline and in reference files)
- Add -Y option (follow symlinks encountered while searching as well)
- Add $RAWHIDE_REPORT_BROKEN_SYMLINKS to treat broken symlinks as an error
- Add -S option (space column: blocks * 512)
- Add -L 'format' option (output details in user-supplied printf-like format)
- Add defense against terminal escape injection for stdout/stderr (but not debug)
- Add pcre2 pattern modifiers: .re .repath .relink .rei .reipath .reilink
- Add access control list (ACL) pattern modifiers: .acl .iacl .reacl .reiacl
- Add -L %z format (access control list)
- Add extended attribute (EA) pattern modifiers: .ea .iea .reea .reiea
- Add -L %x format (extended attributes)
- Add -L %Z format (selinux context - via ea (not via libselinux))
- Add "cmd".sh "pattern" modifier syntax to execute shell commands via system()
- Add empty string "".mtime syntax to concisely refer to the last reference file path
- Change size of (readable) directories to num of entries (excluding . and ..) (so empty() works)
- Add decimal token size/scale units suffixes: K M G T P E k m g t p e
- Replace "long" with "long long" everywhere (sorry 1990s!) to get 64-bit numbers on 32-bit systems
- Add memory/file descriptor checking (valgrind): make test with VALGRIND=1 or vg=1 (30s -> 40m)
- Change size of readable directories for -l and -L %s to the number of entries (excluding . and ..)
- Add ACL/EA indicator to -l type/perm column: acl='+' ea='@' both='*' neither=' '
- Change prune to return 1 not 0 (but make expr 0 overall) so (bad && prune || good) is now possible
- "Fix" %S (for -x/-X/"cmd".sh) so it's "/" for / (was empty)
- Add configure --enable-ndebug --disable-ndebug (stripped binary 10% (12K) smaller with NDEBUG)
- Add RAWHIDE_COLUMN_WIDTH_* env vars for people who don't like columns that widen on demand
- Add configure --static=SIZE ("large" is default, "small" is 10%, "tiny" is 1%, all fine choices)
- Add -L %X format (ACL/EA indicator like in rh -l)
- Add built-in field symbols: major minor rmajor rminor tmajor tminor trmajor trminor
- Add reference file fields: .major .minor .rmajor .rminor
- Add -L %B (blksize) %E (rdev) %r (rdev minor) %R (rdev major) %v (dev minor) %V (dev major)
- Add configure --disable-major (just for preparing the source distribution)
- Add $RAWHIDE_CONFIG and $RAWHIDE_RC (not just for testing, and/but not for root)
- Add configure --enable-mangz --disable-mangz (just so distribution can default to non-gzipped)
- Add to ACL/EA indicator '.' for selinux (if nothing more interesting) (-l and -L %X)
- Add LICENSES/* and .reuse/dep5 (REUSE 3.0 compliant)
- Add built-in symbol: trim (like prune but doesn't prevent the current candidate from matching)
- Change -r to mean -m1 -M1 (was originally just -M1, this is much better)
- Fix -U combined with -y/-Y and symlinks to directories (was attempting rmdir for symlink)
- Add $RAWHIDE_DONT_REPORT_CYCLES to suppress reporting filesystem cycles
- Add gcov test coverage measurement (96.20% overall - remainder manually scrutinized)
- Add configure --enable-gcov --disable-gcov
- Add gcov_summary
- Fix defense against terminal escape injection for stderr when stdout piped to a non-terminal
- Treat "" that contains / as implicit "".path (so that "/" just works)
- Add support for non-ASCII characters (UTF-8/ISO-8859-*) in function/parameter/user/group names
- Don't \ quote non-ASCII characters (UTF-8/ISO-8859-*) in shell command %s %S interpolation
- Add -L %j format (JSON)
- Fix handling of SIGINT/SIGQUIT in -x/-X/"cmd".sh sub-processes (didn't terminate rh as well)
- Add configure --disable-cc-other (just for preparing the source distribution)
- Add make help
- Add make gcov
- Add samples/{README,.rh.sh,brevity.rh,rawhide.conf-tiny}
- Add /etc/rawhide.conf.d/attributes to reserve some identifiers for the next version

2.0 (19900218)

15 Feb 07:45
Compare
Choose a tag to compare
- Initial commit (from Comp.sources.unix by Ken Stauffer)