package icslog

import (
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

//returns created log file numnber in today
func (l *IcsLog) getTodayLogFileNum() int {
	dir := filepath.Dir(l.LogFileName)
	files, rerr := os.ReadDir(dir)
	if rerr != nil {
		return 0
	}
	iter := 0
	for _, file := range files {
		if !file.IsDir() {
			if strings.Contains(file.Name(), filepath.Base(l.LogFileName)) {
				iter++
			}
		}
	}

	if iter > MAX_LOG_ROTATE_NUM {
		return 0
	}

	return iter
}

func (l *IcsLog) shiftLogFiles(filenum int) {
	dir := filepath.Dir(l.LogFileName)
	files, rerr := os.ReadDir(dir)
	if rerr != nil {
		return
	}

	//l.M.Lock()
	remFileNum := filenum
	filesLen := len(files) - 1
	for file := files[filesLen]; ; file = files[filesLen] {
		if !file.IsDir() {
			//fmt.Println(">>333", file.Name(), filepath.Base(l.LogFileName))
			if strings.Contains(file.Name(), filepath.Base(l.LogFileName)) {
				//fmt.Println(filesLen, file.Name())
				old := fmt.Sprintf("%s/%s", dir, file.Name())
				//fmt.Println(old)
				new := fmt.Sprintf("%s.%02d", l.LogFileName, remFileNum)
				//fmt.Println(new)
				os.Rename(old, new)
				remFileNum--
				if remFileNum < 0 {
					//fmt.Println(">666")
					break
				}
				//fmt.Println(">444")
			}
		}
		filesLen--
		if filesLen < 0 {
			break
		}
	}
	//l.M.Unlock()
}

func (l *IcsLog) checkLogRotate() bool {
	return l.isRotate
}