SysIII/usr/src/lib/libPW/xmsg.c
static char Sccsid[]="@(#)xmsg 3.1";
/*
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.
*/
# include "errno.h"
# include "sys/types.h"
# include "macros.h"
xmsg(file,func)
char *file, *func;
{
register char *str;
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 = (char *)alloca(size(file));
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));
}