Merge pull request #4 from softlandia/ValidUTF8

fix ValidUTF8
This commit is contained in:
Vitaly Sergienko 2022-02-19 18:45:46 +03:00 коммит произвёл GitHub
Родитель 2413526f28 d58cd5db87
Коммит fcd43cc7cc
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 38 добавлений и 5 удалений

8
cpd.go
Просмотреть файл

@ -1,7 +1,7 @@
//Package cpd - code page detect
// (c) 2020 softlandia@gmail.com
package cpd
import (
"bufio"
"errors"
@ -61,7 +61,7 @@ func CodepageAutoDetect(b []byte) IDCodePage {
// support convert only from/to Windows1251/IBM866
func FileConvertCodepage(fileName string, fromCP, toCP IDCodePage) error {
switch {
case (fromCP == toCP):
case fromCP == toCP:
return nil
case (fromCP != CP1251) && (fromCP != CP866):
return nil
@ -74,7 +74,7 @@ func FileConvertCodepage(fileName string, fromCP, toCP IDCodePage) error {
}
defer iFile.Close()
//TODO need using sytem tmp folder
//TODO need using system tmp folder
tmpFileName := fileName + "~"
oFile, err := os.Create(tmpFileName)
if err != nil {
@ -150,7 +150,7 @@ var (
errUnsupportedOutputCodepage = errors.New("cpd: output codepage not support encode")
)
// NewReader - convertion to UTF-8
// NewReader - conversion to UTF-8
// return input reader if input contain less 4 bytes
// return input reader if input contain ASCII data
// if cpn[0] exist, then using it as input codepage name

14
go.mod Normal file
Просмотреть файл

@ -0,0 +1,14 @@
module github.com/softlandia/cpd
go 1.17
require (
github.com/stretchr/testify v1.7.0
golang.org/x/text v0.3.7
)
require (
github.com/davecgh/go-spew v1.1.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
)

14
go.sum Normal file
Просмотреть файл

@ -0,0 +1,14 @@
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

Просмотреть файл

@ -50,7 +50,7 @@ func testUTF8bitPattern(b byte) (int, cp int32) {
return 0, 0
}
//ValidUTF8 - return true if imput slice contain true UTF-8
//ValidUTF8 - return true if input slice contain true UTF-8
func ValidUTF8(data []byte) bool {
m := len(data)
if m <= 1 {
@ -67,6 +67,11 @@ func ValidUTF8(data []byte) bool {
if n == 0 {
return false
}
if i+int(n) >= m {
break
}
i++
var j int32
for j = 1; j < n; j++ {