1#         $NetBSD: dmesg,v 1.1 2020/04/14 13:58:11 christos Exp $
2
3define dmesg
4          set $mbp = msgbufp
5          set $bufdata = &$mbp->msg_bufc[0]
6          set $print = $mbp->msg_bufs
7          set $newl = 0
8          set $skip = 0
9          set $i = -1
10          set $p = $bufdata + $mbp->msg_bufx - 1
11
12          while ($i < $mbp->msg_bufs)
13                    set $i = $i + 1
14                    set $p = $p + 1
15                    if ($p == $bufdata + $mbp->msg_bufs)
16                              set $p = $bufdata
17                    end
18                    if ($i < $mbp->msg_bufs - $print)
19                              loop_continue
20                    end
21                    set $c = $p[0]
22                    # Skip syslog sequences
23                    if ($skip)
24                              if ($c == '>')
25                                        set $newl = 0
26                                        set $skip = 0
27                              end
28                              loop_continue
29                    end
30                    if ($newl && $c == '<')
31                              set $skip = 1
32                              loop_continue
33                    end
34                    if ($c == '\0')
35                              loop_continue
36                    end
37                    set $newl = $c == '\n'
38                    printf "%c", $c
39          end
40          if (!$newl)
41                    printf "\n"
42          end
43end
44
45document dmesg
46print the message buffer
47end
48