*/
if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
- || (write_full(fd, fl, sizeof *fl) == -1)
- || (close (fd) != 0)) {
- SYSLOG ((LOG_WARN,
- "Can't write faillog entry for UID %lu in %s: %m",
- (unsigned long) uid, FAILLOG_FILE));
+ || (write_full(fd, fl, sizeof *fl) == -1)) {
+ goto err_write;
+ }
+
+ if (close (fd) != 0 && errno != EINTR) {
+ goto err_close;
+ }
+
+ return;
+
+err_write:
+ {
+ int saved_errno = errno;
(void) close (fd);
+ errno = saved_errno;
}
+err_close:
+ SYSLOG ((LOG_WARN,
+ "Can't write faillog entry for UID %lu to %s: %m",
+ (unsigned long) uid, FAILLOG_FILE));
}
static bool too_many_failures (const struct faillog *fl)
fail.fail_cnt = 0;
if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
- || (write_full(fd, &fail, sizeof fail) == -1)
- || (close (fd) != 0)) {
- SYSLOG ((LOG_WARN,
- "Can't reset faillog entry for UID %lu in %s: %m",
- (unsigned long) uid, FAILLOG_FILE));
- (void) close (fd);
+ || (write_full(fd, &fail, sizeof fail) == -1)) {
+ goto err_write;
+ }
+
+ if (close (fd) != 0 && errno != EINTR) {
+ goto err_close;
}
} else {
(void) close (fd);
}
return 1;
+
+err_write:
+ {
+ int saved_errno = errno;
+ (void) close (fd);
+ errno = saved_errno;
+ }
+err_close:
+ SYSLOG ((LOG_WARN,
+ "Can't reset faillog entry for UID %lu in %s: %m",
+ (unsigned long) uid, FAILLOG_FILE));
+ return 1;
}
/*
STRNCPY(newlog.ll_host, host);
#endif
if ( (lseek (fd, offset, SEEK_SET) != offset)
- || (write_full(fd, &newlog, sizeof newlog) == -1)
- || (close (fd) != 0)) {
- SYSLOG ((LOG_WARN,
- "Can't write lastlog entry for UID %lu in %s.",
- (unsigned long) pw->pw_uid, LASTLOG_FILE));
+ || (write_full(fd, &newlog, sizeof newlog) == -1)) {
+ goto err_write;
+ }
+
+ if (close (fd) != 0 && errno != EINTR) {
+ goto err_close;
+ }
+
+ return;
+
+err_write:
+ {
+ int saved_errno = errno;
(void) close (fd);
+ errno = saved_errno;
}
+err_close:
+ SYSLOG ((LOG_WARN,
+ "Can't write lastlog entry for UID %lu in %s: %m",
+ (unsigned long) pw->pw_uid, LASTLOG_FILE));
}
-
* Append the new failure record and close the log file.
*/
- if ( (write_full(fd, failent, sizeof *failent) == -1)
- || (close (fd) != 0)) {
- SYSLOG ((LOG_WARN,
- "Can't append failure of user %s to %s: %m",
- username, ftmp));
+ if (write_full(fd, failent, sizeof *failent) == -1) {
+ goto err_write;
+ }
+
+ if (close (fd) != 0 && errno != EINTR) {
+ goto err_close;
+ }
+
+ return;
+
+err_write:
+ {
+ int saved_errno = errno;
(void) close (fd);
+ errno = saved_errno;
}
+err_close:
+ SYSLOG ((LOG_WARN,
+ "Can't append failure of user %s to %s: %m",
+ username, ftmp));
}
/*