logerr
logerr(EX_OSERR, "not enough memory");
logerr(EX_OSERR, "unable to open temporary file");
logerr(EX_OSERR, "temporary file write error");
logerr(EX_OSERR, "dup failed");
logerr(EX_USAGE, "usage: mail.local [-l] [-f from] user ...");
logerr(EX_USAGE, "multiple -f options");
logerr(0, "Bad argument size %zu", len);
logerr(errno, "Can't allocate %zu", len+1);
logerr(0, "Decoding error %s %d != %zu", argv[1], res,
logerr(0, "Invalid utmpx type %d", (int)utx->ut_type);
logerr(0, "Non-printable characters in hostname");
logerr(0, "User %ld does not exist in password"
logerr(0, "Current user `%s' does not match "
logerr(errno, "Cannot stat `%s'", tty);
logerr(0, "%s: Is not owned by you", tty);
logerr(0, "%s: Not a tty device", tty);
logerr(errno, "Can't access `%s'", tty);
logerr(errno, "Cannot open `%s'", tty);
logerr(0, "Cannot find existing entry for `%s'",
logerr(0, "Cannot modify entry for `%s' "
logerr(errno, "Can't setuid %ld", (long)euid);
logerr(errno, "Cannot update utmp entry");
logerr(int e, const char *fmt, ...)
logerr(errno, "Can't setuid %ld", (long)ruid);
logerr(int e, const char *fmt, ...)
logerr(1, "unable to open %s", rodent.portname);
logerr(1, "cannot open %s", wsm);
logerr(1, "failed to become a daemon");