"bytes"
"encoding/binary"
"errors"
+ "fmt"
"io"
"path/filepath"
"strings"
return strings.Contains(strings.ToLower(string(fp.Items[fp.Len()-1].Name)), "upload")
}
+func (fp *FilePath) IsUserDir() bool {
+ if fp.Len() == 0 {
+ return false
+ }
+
+ return strings.HasPrefix(string(fp.Items[0].Name), "~")
+}
+
+
func (fp *FilePath) Len() uint16 {
return binary.BigEndian.Uint16(fp.ItemCount[:])
}
-func readPath(fileRoot string, filePath, fileName []byte) (fullPath string, err error) {
+func ReadPath(fileRoot string, filePath, fileName []byte) (fullPath string, err error) {
var fp FilePath
if filePath != nil {
if _, err = fp.Write(filePath); err != nil {
subPath,
filepath.Join("/", string(fileName)),
)
-
+ fullPath, err = txtDecoder.String(fullPath)
+ if err != nil {
+ return "", fmt.Errorf("invalid filepath encoding: %w", err)
+ }
return fullPath, nil
}