mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-29 01:04:15 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			846 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			846 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package setup
 | |
| 
 | |
| import (
 | |
| 	"strconv"
 | |
| 
 | |
| 	"github.com/miekg/coredns/middleware"
 | |
| )
 | |
| 
 | |
| func parseRoller(c *Controller) (*middleware.LogRoller, error) {
 | |
| 	var size, age, keep int
 | |
| 	// This is kind of a hack to support nested blocks:
 | |
| 	// As we are already in a block: either log or errors,
 | |
| 	// c.nesting > 0 but, as soon as c meets a }, it thinks
 | |
| 	// the block is over and return false for c.NextBlock.
 | |
| 	for c.NextBlock() {
 | |
| 		what := c.Val()
 | |
| 		if !c.NextArg() {
 | |
| 			return nil, c.ArgErr()
 | |
| 		}
 | |
| 		value := c.Val()
 | |
| 		var err error
 | |
| 		switch what {
 | |
| 		case "size":
 | |
| 			size, err = strconv.Atoi(value)
 | |
| 		case "age":
 | |
| 			age, err = strconv.Atoi(value)
 | |
| 		case "keep":
 | |
| 			keep, err = strconv.Atoi(value)
 | |
| 		}
 | |
| 		if err != nil {
 | |
| 			return nil, err
 | |
| 		}
 | |
| 	}
 | |
| 	return &middleware.LogRoller{
 | |
| 		MaxSize:    size,
 | |
| 		MaxAge:     age,
 | |
| 		MaxBackups: keep,
 | |
| 		LocalTime:  true,
 | |
| 	}, nil
 | |
| }
 |