-#include "config.h"
+/*
+ * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
-#if HAVE_STDIO_H
-#include <stdio.h>
-#endif
+#include "squid.h"
+
+#include <cassert>
+#include <cerrno>
+#include <csignal>
+#include <cstring>
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
#if HAVE_FCNTL_H
#include <fcntl.h>
#endif
-#if HAVE_ASSERT_H
-#include <assert.h>
-#endif
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
-#if HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
#if HAVE_PATHS_H
#include <paths.h>
#endif
#endif
/* Rotate numbers 0 through N up one */
for (i = rotate_count; i > 1;) {
- i--;
+ --i;
snprintf(from, MAXPATHLEN, "%s.%d", path, i - 1);
snprintf(to, MAXPATHLEN, "%s.%d", path, i);
#if _SQUID_OS2_ || _SQUID_WINDOWS_
- remove(to);
+ if (remove(to) < 0) {
+ fprintf(stderr, "WARNING: remove '%s' failure: %s\n", to, xstrerror());
+ }
#endif
- rename(from, to);
+ if (rename(from, to) < 0 && errno != ENOENT) {
+ fprintf(stderr, "WARNING: rename '%s' to '%s' failure: %s\n", from, to, xstrerror());
+ }
}
if (rotate_count > 0) {
snprintf(to, MAXPATHLEN, "%s.%d", path, 0);
#if _SQUID_OS2_ || _SQUID_WINDOWS_
- remove(to);
+ if (remove(to) < 0) {
+ fprintf(stderr, "WARNING: remove '%s' failure: %s\n", to, xstrerror());
+ }
#endif
- rename(path, to);
+ if (rename(path, to) < 0 && errno != ENOENT) {
+ fprintf(stderr, "WARNING: rename %s to %s failure: %s\n", path, to, xstrerror());
+ }
}
}
* out of device space - recover by rotating and hoping that rotation count drops a big one.
*/
if (err == EFBIG || err == ENOSPC) {
- fprintf(stderr, "WARNING: %s writing %s. Attempting to recover via a log rotation.\n",strerror(err),argv[1]);
+ fprintf(stderr, "WARNING: %s writing %s. Attempting to recover via a log rotation.\n",xstrerr(err),argv[1]);
fclose(fp);
rotate(argv[1], rotate_count);
fp = fopen(argv[1], "a");