https://bugs.gentoo.org/847382#c3
https://github.com/logrotate/logrotate/commit/31cf1099ab8514dfcae5a980bc77352edd5292f8
https://github.com/logrotate/logrotate/commit/7b1fa328bf70eb8434166f151bd075cd1440d0dc

From 31cf1099ab8514dfcae5a980bc77352edd5292f8 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Fri, 27 May 2022 09:56:07 +0200
Subject: [PATCH] lockState: do not print `error:` when exit code is unaffected

Closes: https://github.com/logrotate/logrotate/pull/448
--- a/logrotate.c
+++ b/logrotate.c
@@ -3050,8 +3050,8 @@ static int lockState(const char *stateFilename, int skip_state_lock)
     }
 
     if (sb.st_mode & S_IROTH) {
-        message(MESS_ERROR, "state file %s is world-readable and thus can"
-                " be locked from other unprivileged users."
+        message(MESS_NORMAL, "warning: state file %s is world-readable"
+                " and thus can be locked from other unprivileged users."
                 " Skipping lock acquisition...\n",
                 stateFilename);
         close(lockFd);

From 7b1fa328bf70eb8434166f151bd075cd1440d0dc Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Fri, 27 May 2022 16:02:57 +0200
Subject: [PATCH] log: unify handling of log levels

Use MESS_WARN instead of MESS_NORMAL and make it always use
the `warning:` prefix.  MESS_WARN is now mapped to LOG_WARNING
for syslog.

Also drop MESS_VERBOSE, which was not set anywhere.

Closes: https://github.com/logrotate/logrotate/pull/239
Closes: https://github.com/logrotate/logrotate/pull/449
--- a/config.c
+++ b/config.c
@@ -643,7 +643,7 @@ static void set_criterium(enum criterium *pDst, enum criterium src, int *pSet)
 {
     if (*pSet && (*pDst != src)) {
         /* we are overriding a previously set criterium */
-        message(MESS_VERBOSE, "warning: '%s' overrides previously specified '%s'\n",
+        message(MESS_DEBUG, "note: '%s' overrides previously specified '%s'\n",
                 crit_to_string(src), crit_to_string(*pDst));
     }
     *pDst = src;
@@ -1021,7 +1021,7 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig)
 
     if (getuid() == ROOT_UID) {
         if ((sb_config.st_mode & 07533) != 0400) {
-            message(MESS_NORMAL,
+            message(MESS_WARN,
                     "Potentially dangerous mode on %s: 0%o\n",
                     configFile, (unsigned) (sb_config.st_mode & 07777));
         }
@@ -1386,7 +1386,7 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig)
                             RAISE_ERROR();
                         }
                     } else if (!strcmp(key, "errors")) {
-                        message(MESS_NORMAL,
+                        message(MESS_WARN,
                                 "%s: %d: the errors directive is deprecated and no longer used.\n",
                                 configFile, lineNum);
                     } else if (!strcmp(key, "mail")) {
--- a/log.c
+++ b/log.c
@@ -40,9 +40,12 @@ static void log_once(FILE *where, int level, const char *format, va_list args)
 {
     switch (level) {
         case MESS_DEBUG:
-        case MESS_NORMAL:
-        case MESS_VERBOSE:
             break;
+
+        case MESS_WARN:
+            fprintf(where, "warning: ");
+            break;
+
         default:
             fprintf(where, "error: ");
             break;
@@ -78,10 +81,11 @@ void message(int level, const char *format, ...)
                 priority |= LOG_DEBUG;
                 break;
             case MESS_DEBUG:
-            case MESS_VERBOSE:
-            case MESS_NORMAL:
                 priority |= LOG_INFO;
                 break;
+            case MESS_WARN:
+                priority |= LOG_WARNING;
+                break;
             case MESS_ERROR:
                 priority |= LOG_ERR;
                 break;
--- a/log.h
+++ b/log.h
@@ -5,8 +5,7 @@
 
 #define MESS_REALDEBUG  1
 #define MESS_DEBUG      2
-#define MESS_VERBOSE    3
-#define MESS_NORMAL     4
+#define MESS_WARN       4
 #define MESS_ERROR      5
 #define MESS_FATAL      6
 
--- a/logrotate.c
+++ b/logrotate.c
@@ -3050,7 +3050,7 @@ static int lockState(const char *stateFilename, int skip_state_lock)
     }
 
     if (sb.st_mode & S_IROTH) {
-        message(MESS_NORMAL, "warning: state file %s is world-readable"
+        message(MESS_WARN, "state file %s is world-readable"
                 " and thus can be locked from other unprivileged users."
                 " Skipping lock acquisition...\n",
                 stateFilename);
@@ -3106,7 +3106,7 @@ int main(int argc, const char **argv)
         POPT_AUTOHELP { NULL, 0, 0, NULL, 0, NULL, NULL }
     };
 
-    logSetLevel(MESS_NORMAL);
+    logSetLevel(MESS_WARN);
     setlocale (LC_ALL, "");
 
     optCon = poptGetContext("logrotate", argc, argv, options, 0);
@@ -3117,7 +3117,7 @@ int main(int argc, const char **argv)
         switch (arg) {
             case 'd':
                 debug = 1;
-                message(MESS_NORMAL, "WARNING: logrotate in debug mode does nothing"
+                message(MESS_WARN, "logrotate in debug mode does nothing"
                         " except printing debug messages!  Consider using verbose"
                         " mode (-v) instead if this is not what you want.\n\n");
                 /* fallthrough */
--- a/test/test-0080.sh
+++ b/test/test-0080.sh
@@ -10,4 +10,4 @@ cleanup 80
 preptest test.log 80 1 0
 
 $RLR -d test-config.80 2>&1 | \
-    grep -q "warning: 'daily' overrides previously specified 'size'"
+    grep -q "note: 'daily' overrides previously specified 'size'"

