sys-process/cronbase: avoid bash complaining about null bytes
authorTobias Klausmann <klausman@gentoo.org>
Fri, 30 Sep 2016 07:22:54 +0000 (09:22 +0200)
committerTobias Klausmann <klausman@gentoo.org>
Fri, 30 Sep 2016 07:25:22 +0000 (09:25 +0200)
Newer versions of bash warn about null bytes in command substitutions,
so run-crons would generate mails with messages like this:

/usr/sbin/run-crons: line 59: warning: command substitution: ignored null byte in input
/usr/sbin/run-crons: line 59: warning: command substitution: ignored null byte in input
/usr/sbin/run-crons: line 60: warning: command substitution: ignored null byte in input
/usr/sbin/run-crons: line 60: warning: command substitution: ignored null byte in input

Since the warning is not useful and the resultant string has its null
bytes deleted, we might as well delete them with tr and get rid of the
warning.

sys-process/cronbase/cronbase-0.3.7-r2.ebuild [moved from sys-process/cronbase/cronbase-0.3.7-r1.ebuild with 100% similarity]
sys-process/cronbase/files/run-crons-0.3.7

index c661c77a43fa3dff3b79d6d60b0e06ad22525f79..c5f2d9ca7b333833b9c8deaa894430adac4d511b 100755 (executable)
@@ -56,8 +56,10 @@ grab_lock() {
 
                # This is better than kill -0 because we can verify that it's really
                # another run-crons process.
-               cmdline1=$(cat "/proc/${cronpid}/cmdline" 2>/dev/null) || :
-               cmdline2=$(cat /proc/$$/cmdline)
+               # The tr call deletes null bytes so newer bash versions do not complain
+               # about them.
+               cmdline1=$(tr -d '\0'  < "/proc/${cronpid}/cmdline" 2>/dev/null) || :
+               cmdline2=$(tr -d '\0'  < /proc/$$/cmdline)
                if [ "${cmdline1}" = "${cmdline2}" ] ; then
                        # Whoa, another run-crons is really running.
                        return 1