From 5f938fb9ed8aa650a82fef92bcf1ff3e91ff1808 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 10 Jun 2023 14:18:59 +0100 Subject: [PATCH] s3: fix "Entry doesn't belong in directory" errors when using directory markers Before this change we were incorrectly identifying the root directory of the listing and adding it into the listing. This caused higher layers of rclone to emit the error above. See #7038 --- backend/s3/s3.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index 0543d89cd..6a93af10a 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -3727,11 +3727,7 @@ func (f *Fs) list(ctx context.Context, opt listOpt, fn listFn) error { fs.Logf(f, "Odd name received %q", remote) continue } - remote = remote[len(opt.prefix):] isDirectory := (remote == "" || strings.HasSuffix(remote, "/")) && object.Size != nil && *object.Size == 0 - if opt.addBucket { - remote = bucket.Join(opt.bucket, remote) - } // is this a directory marker? if isDirectory { if opt.noSkipMarkers { @@ -3746,6 +3742,10 @@ func (f *Fs) list(ctx context.Context, opt listOpt, fn listFn) error { remote = strings.TrimRight(remote, "/") } } + remote = remote[len(opt.prefix):] + if opt.addBucket { + remote = bucket.Join(opt.bucket, remote) + } if versionIDs != nil { err = fn(remote, object, versionIDs[i], isDirectory) } else {