github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/cmds/core/dmesg/dmesg.go (about) 1 // Copyright 2012-2017 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // dmesg reads the system log. 6 // 7 // Synopsis: 8 // dmesg [-clear|-read-clear] 9 // 10 // Options: 11 // -clear: clear the log 12 // -read-clear: clear the log after printing 13 package main 14 15 import ( 16 "flag" 17 "log" 18 "os" 19 20 "golang.org/x/sys/unix" 21 ) 22 23 var ( 24 clear bool 25 readClear bool 26 ) 27 28 func init() { 29 flag.BoolVar(&clear, "clear", false, "Clear the log") 30 flag.BoolVar(&readClear, "read-clear", false, "Clear the log after printing") 31 flag.BoolVar(&readClear, "c", false, "Clear the log after printing") 32 } 33 34 func main() { 35 flag.Parse() 36 if clear && readClear { 37 log.Fatalf("cannot specify both -clear and -read-clear") 38 } 39 40 level := unix.SYSLOG_ACTION_READ_ALL 41 if clear { 42 level = unix.SYSLOG_ACTION_CLEAR 43 } 44 if readClear { 45 level = unix.SYSLOG_ACTION_READ_CLEAR 46 } 47 48 b := make([]byte, 256*1024) 49 amt, err := unix.Klogctl(level, b) 50 if err != nil { 51 log.Fatalf("syslog failed: %v", err) 52 } 53 54 os.Stdout.Write(b[:amt]) 55 }