| Index: common/dirwalk/util.go
|
| diff --git a/common/dirwalk/util.go b/common/dirwalk/util.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3047ced495d6d43eb7307bfc8e75f74a541aa16f
|
| --- /dev/null
|
| +++ b/common/dirwalk/util.go
|
| @@ -0,0 +1,51 @@
|
| +// Copyright 2016 The LUCI Authors. All rights reserved.
|
| +// Use of this source code is governed under the Apache License, Version 2.0
|
| +// that can be found in the LICENSE file.
|
| +
|
| +package dirwalk
|
| +
|
| +import "io"
|
| +
|
| +type multiReadCloser struct {
|
| + io.Reader
|
| + closers []io.Closer
|
| +}
|
| +
|
| +func (mrc multiReadCloser) Close() error {
|
| + for _, c := range mrc.closers {
|
| + if err := c.Close(); err != nil {
|
| + return err
|
| + }
|
| + }
|
| + return nil
|
| +}
|
| +
|
| +type stringStack struct {
|
| + elements []string
|
| +}
|
| +
|
| +func (s *stringStack) push(v string) {
|
| + s.elements = append(s.elements, v)
|
| +}
|
| +
|
| +func (s *stringStack) pop() string {
|
| + var v string
|
| + v, s.elements = s.elements[s.last()], s.elements[:s.last()]
|
| + return v
|
| +}
|
| +
|
| +func (s *stringStack) peek() string {
|
| + return s.elements[s.last()]
|
| +}
|
| +
|
| +func (s *stringStack) size() int {
|
| + return len(s.elements)
|
| +}
|
| +
|
| +func (s *stringStack) last() int {
|
| + return len(s.elements) - 1
|
| +}
|
| +
|
| +func newStringStack() *stringStack {
|
| + return &stringStack{elements: make([]string, 0)}
|
| +}
|
|
|