#       $NetBSD: dmesg,v 1.1 2020/04/14 13:58:11 christos Exp $

define dmesg
       set $mbp = msgbufp
       set $bufdata = &$mbp->msg_bufc[0]
       set $print = $mbp->msg_bufs
       set $newl = 0
       set $skip = 0
       set $i = -1
       set $p = $bufdata + $mbp->msg_bufx - 1

       while ($i < $mbp->msg_bufs)
               set $i = $i + 1
               set $p = $p + 1
               if ($p == $bufdata + $mbp->msg_bufs)
                       set $p = $bufdata
               end
               if ($i < $mbp->msg_bufs - $print)
                       loop_continue
               end
               set $c = $p[0]
               # Skip syslog sequences
               if ($skip)
                       if ($c == '>')
                               set $newl = 0
                               set $skip = 0
                       end
                       loop_continue
               end
               if ($newl && $c == '<')
                       set $skip = 1
                       loop_continue
               end
               if ($c == '\0')
                       loop_continue
               end
               set $newl = $c == '\n'
               printf "%c", $c
       end
       if (!$newl)
               printf "\n"
       end
end

document dmesg
print the message buffer
end