mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-10-31 00:01:40 +01:00 
			
		
		
		
	This updates all source files to use a new standard header for copyright and license declaration. Notably, copyright no longer includes a date, and we now use the standard SPDX-License-Identifier header. This commit was done almost entirely mechanically with perl, and then some minimal manual fixes. Updates #6865 Signed-off-by: Will Norris <will@tailscale.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			963 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			963 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) Tailscale Inc & AUTHORS
 | |
| // SPDX-License-Identifier: BSD-3-Clause
 | |
| 
 | |
| // Package lineread reads lines from files. It's not fancy, but it got repetitive.
 | |
| package lineread
 | |
| 
 | |
| import (
 | |
| 	"bufio"
 | |
| 	"io"
 | |
| 	"os"
 | |
| )
 | |
| 
 | |
| // File opens name and calls fn for each line. It returns an error if the Open failed
 | |
| // or once fn returns an error.
 | |
| func File(name string, fn func(line []byte) error) error {
 | |
| 	f, err := os.Open(name)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	defer f.Close()
 | |
| 	return Reader(f, fn)
 | |
| }
 | |
| 
 | |
| // Reader calls fn for each line.
 | |
| // If fn returns an error, Reader stops reading and returns that error.
 | |
| // Reader may also return errors encountered reading and parsing from r.
 | |
| // To stop reading early, use a sentinel "stop" error value and ignore
 | |
| // it when returned from Reader.
 | |
| func Reader(r io.Reader, fn func(line []byte) error) error {
 | |
| 	bs := bufio.NewScanner(r)
 | |
| 	for bs.Scan() {
 | |
| 		if err := fn(bs.Bytes()); err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 	}
 | |
| 	return bs.Err()
 | |
| }
 |