So then, please review. One question at the bottom. # Most basic usage basename /foo/bar.txt => bar.txt
# Old/current "basename NAME SUFFIX" compat- # ibility basename /foo/bar.txt .txt => bar # ERROR, one too many operands basename /foo/bar.txt /x.txt /y.txt => ERROR # BSD-adopted flag to signify no args are a # suffix, process all basename -a /foo/bar.txt /x/y.txt => bar.txt y.txt # For completeness, showing 3 args with -a basename -a /foo/bar.txt /x/y.txt /a/b.txt => bar.txt y.txt b.txt basename -s .txt -a /foo/bar.txt /x/y.txt /a/b.txt => bar y b # No args means read stdin (-f,--filter mode) cat filelist.txt | basename => bar.txt y.txt b.txt # Only "-s <arg>" means read stdin (-f,--filter # mode) cat filelist.txt | basename -s .txt => bar y b # Handle NUL-terminated stdin find / -print | basename --file0-from=- => bar.txt y.txt b.txt # Handle NUL-terminated stdin with suffix strip # (assuming /hh has our 3 files in it and is # readable) find /hh -print | basename --file0-from=- -s .txt => bar y b # Handle NUL-terminated FILE input find / -print | basename --file0-from=FILE => bar.txt y.txt b.txt etc... Is "-f,--filter" necessary?