12345678910111213141516171819202122232425262728293031323334353637 |
- package filer
- import (
- "fmt"
- "strings"
- "github.com/seaweedfs/seaweedfs/weed/util"
- )
- func (f *Filer) CanRename(source, target util.FullPath, oldName string) error {
- sourcePath := source.Child(oldName)
- if strings.HasPrefix(string(target), string(sourcePath)) {
- return fmt.Errorf("mv: can not move directory to a subdirectory of itself")
- }
- sourceBucket := f.DetectBucket(source)
- targetBucket := f.DetectBucket(target)
- if sourceBucket != targetBucket {
- return fmt.Errorf("can not move across collection %s => %s", sourceBucket, targetBucket)
- }
- return nil
- }
- func (f *Filer) DetectBucket(source util.FullPath) (bucket string) {
- if strings.HasPrefix(string(source), f.DirBucketsPath+"/") {
- bucketAndObjectKey := string(source)[len(f.DirBucketsPath)+1:]
- t := strings.Index(bucketAndObjectKey, "/")
- if t < 0 {
- bucket = bucketAndObjectKey
- }
- if t > 0 {
- bucket = bucketAndObjectKey[:t]
- }
- }
- return bucket
- }
|