| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | // Copyright 2020 The Libc Authors. All rights reserved. | 
					
						
							|  |  |  | // Use of this source code is governed by a BSD-style | 
					
						
							|  |  |  | // license that can be found in the LICENSE file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-08 21:12:23 +01:00
										 |  |  | //go:build libc.dmesg | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | // +build libc.dmesg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package libc // import "modernc.org/libc" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"path/filepath" | 
					
						
							|  |  |  | 	"strings" | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const dmesgs = true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var ( | 
					
						
							|  |  |  | 	pid  = fmt.Sprintf("[%v %v] ", os.Getpid(), filepath.Base(os.Args[0])) | 
					
						
							|  |  |  | 	logf *os.File | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							|  |  |  | 	var err error | 
					
						
							|  |  |  | 	if logf, err = os.OpenFile("/tmp/libc.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY|os.O_SYNC, 0644); err != nil { | 
					
						
							|  |  |  | 		panic(err.Error()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	dmesg("%v", time.Now()) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func dmesg(s string, args ...interface{}) { | 
					
						
							|  |  |  | 	if s == "" { | 
					
						
							|  |  |  | 		s = strings.Repeat("%v ", len(args)) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	s = fmt.Sprintf(pid+s, args...) | 
					
						
							|  |  |  | 	switch { | 
					
						
							|  |  |  | 	case len(s) != 0 && s[len(s)-1] == '\n': | 
					
						
							|  |  |  | 		fmt.Fprint(logf, s) | 
					
						
							|  |  |  | 	default: | 
					
						
							|  |  |  | 		fmt.Fprintln(logf, s) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |