init
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
//go:build !windows
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
// 文件名按字节的长度上限,留几个字节给后面追加的扩展名
|
||||
const maxFilenameBytes = 250
|
||||
|
||||
// 转换文件名和限制文件名长度,添加保存文件夹的路径
|
||||
func transFilename(filename string) string {
|
||||
// 转换文件名不允许的特殊字符
|
||||
re := regexp.MustCompile(`[<>:"/\\|?*\r\n]`)
|
||||
filename = re.ReplaceAllString(filename, "-")
|
||||
// linux 和 macOS 下文件名有字节数上限,按字节截断时不能把一个多字节字符切成两半
|
||||
if len(filename) > maxFilenameBytes {
|
||||
cut := maxFilenameBytes
|
||||
for cut > 0 && !utf8.RuneStart(filename[cut]) {
|
||||
cut--
|
||||
}
|
||||
filename = filename[:cut]
|
||||
}
|
||||
return filepath.Join(recordingDir(), filename)
|
||||
}
|
||||
Reference in New Issue
Block a user