Avoid arbitrary limits on the length or number of any data
structure, including file names, lines, files, and symbols, by
allocating all data structures dynamically. In most Unix
utilities, “long lines are silently truncated”. This is not
acceptable in a GNU utility. Utilities reading files should not
drop NUL characters, or any other nonprinting characters
including those with codes above 0177. The only sensible
exceptions would be utilities specifically intended for
interface to certain types of terminals or printers that can’t
handle those characters. Whenever possible, try to make programs
work properly with sequences of bytes that represent multibyte
characters; UTF-8 is the most important. Check every system call
for an error return, unless you know you wish to ignore errors.
Include the system error text (from strerror, or equivalent) in
every error message resulting from a failing system call, as
well as the name of the file if any and the name of the utility.
Just “cannot open foo.c” or “stat failed”