diff options
Diffstat (limited to 'modules/git/repo_attribute.go')
-rw-r--r-- | modules/git/repo_attribute.go | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/modules/git/repo_attribute.go b/modules/git/repo_attribute.go index d3a3dc8c83..404d9e502c 100644 --- a/modules/git/repo_attribute.go +++ b/modules/git/repo_attribute.go @@ -9,8 +9,6 @@ import ( "fmt" "io" "os" - "strconv" - "strings" "code.gitea.io/gitea/modules/log" ) @@ -288,102 +286,6 @@ func (wr *nulSeparatedAttributeWriter) Close() error { return nil } -type lineSeparatedAttributeWriter struct { - tmp []byte - attributes chan attributeTriple - closed chan struct{} -} - -func (wr *lineSeparatedAttributeWriter) Write(p []byte) (n int, err error) { - l := len(p) - - nlIdx := bytes.IndexByte(p, '\n') - for nlIdx >= 0 { - wr.tmp = append(wr.tmp, p[:nlIdx]...) - - if len(wr.tmp) == 0 { - // This should not happen - if len(p) > nlIdx+1 { - wr.tmp = wr.tmp[:0] - p = p[nlIdx+1:] - nlIdx = bytes.IndexByte(p, '\n') - continue - } else { - return l, nil - } - } - - working := attributeTriple{} - if wr.tmp[0] == '"' { - sb := new(strings.Builder) - remaining := string(wr.tmp[1:]) - for len(remaining) > 0 { - rn, _, tail, err := strconv.UnquoteChar(remaining, '"') - if err != nil { - if len(remaining) > 2 && remaining[0] == '"' && remaining[1] == ':' && remaining[2] == ' ' { - working.Filename = sb.String() - wr.tmp = []byte(remaining[3:]) - break - } - return l, fmt.Errorf("unexpected tail %s", remaining) - } - _, _ = sb.WriteRune(rn) - remaining = tail - } - } else { - idx := bytes.IndexByte(wr.tmp, ':') - if idx < 0 { - return l, fmt.Errorf("unexpected input %s", string(wr.tmp)) - } - working.Filename = string(wr.tmp[:idx]) - if len(wr.tmp) < idx+2 { - return l, fmt.Errorf("unexpected input %s", string(wr.tmp)) - } - wr.tmp = wr.tmp[idx+2:] - } - - idx := bytes.IndexByte(wr.tmp, ':') - if idx < 0 { - return l, fmt.Errorf("unexpected input %s", string(wr.tmp)) - } - - working.Attribute = string(wr.tmp[:idx]) - if len(wr.tmp) < idx+2 { - return l, fmt.Errorf("unexpected input %s", string(wr.tmp)) - } - - working.Value = string(wr.tmp[idx+2:]) - - wr.attributes <- working - wr.tmp = wr.tmp[:0] - if len(p) > nlIdx+1 { - p = p[nlIdx+1:] - nlIdx = bytes.IndexByte(p, '\n') - continue - } else { - return l, nil - } - } - - wr.tmp = append(wr.tmp, p...) - return l, nil -} - -func (wr *lineSeparatedAttributeWriter) ReadAttribute() <-chan attributeTriple { - return wr.attributes -} - -func (wr *lineSeparatedAttributeWriter) Close() error { - select { - case <-wr.closed: - return nil - default: - } - close(wr.attributes) - close(wr.closed) - return nil -} - // Create a check attribute reader for the current repository and provided commit ID func (repo *Repository) CheckAttributeReader(commitID string) (*CheckAttributeReader, context.CancelFunc) { indexFilename, worktree, deleteTemporaryFile, err := repo.ReadTreeToTemporaryIndex(commitID) |