[TUHS] Happy birthday, Dennis Ritchie! [ really sun vs dec/apollo --> X and NeWS ]

Larry McVoy lm at mcvoy.com
Tue Sep 19 12:50:31 AEST 2017


On Mon, Sep 18, 2017 at 08:52:08PM -0400, Random832 wrote:
> On Thu, Sep 14, 2017, at 15:37, Steve Johnson wrote:
> > I wrote a paper on error messages at one point.?? I had examples from
> > bad to best.?? In a nutshell (worst to best):
> > 
> > 	* <program aborts, leaving the world in an unknown state>
> > 	* "internal error",?? "beta table overflow", "operation failed"
> > 	* "Writing the output file failed"
> > 	* "File xxx could not be opened for writing."
> > 	* "File xxx could not be opened for writing: check the file location
> > and permissions"
> > 
> > 	* "Writing the output file xxx caused an error.?? See <link> for
> > possible reasons and corrections" 
> > 
> > Most git messages fall between 2 and 3.?? But there are occasional 4's
> > and 5's.
> 
> Just out of curiosity, where does perror(filename), quite possibly the
> *most* common error message on Unix as a whole, fall on your scale? It
> says which of the file location or permissions (or whatever else) it is,
> but not whether it was attempting to open it for reading or writing.

So in the BitKeeper source, perror is redifined to my_perror which is
this:

void    
my_perror(char *file, int line, char *msg)
{
        char    *p = 0;
        int     save = errno;

        if (p = getenv("_BK_VERSION")) {
                if (strneq(p, "bk-", 3)) p += 3;
                fprintf(stderr, "%s:%d (%s): ", file, line, p);
        } else {
                fprintf(stderr, "%s:%d: ", file, line);
        }
        if (p = strerror(errno)) {
                fprintf(stderr, "%s: %s\n", msg, p);
        } else {
                fprintf(stderr, "%s: errno=%d\n", msg, errno);
        }
        errno = save;   
}

libc should do that.


More information about the TUHS mailing list