# include "../hdr/defines.h" # include "errno.h" SCCSID(@(#)xmsg.c 5.2); /* Call fatal with an appropriate error message based on errno. If no good message can be made up, it makes up a simple message. The second argument is a pointer to the calling functions name (a string); it's used in the manufactured message. */ xmsg(file,func) char *file, *func; { register char *str; char d[FILESIZE]; extern int errno; extern char Error[]; switch (errno) { case ENFILE: str = "no file (ut3)"; break; case ENOENT: sprintf(str = Error,"`%s' nonexistent (ut4)",file); break; case EACCES: str = d; copy(file,str); file = str; sprintf(str = Error,"directory `%s' unwritable (ut2)", dname(file)); break; case ENOSPC: str = "no space! (ut10)"; break; case EFBIG: str = "write error (ut8)"; break; default: sprintf(str = Error,"errno = %d, function = `%s' (ut11)",errno, func); break; } return(fatal(str)); }