From 3e2a606adb0dcaa60e6e61cbfc9feefa64cc8c43 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 10 Jun 2023 14:18:59 +0100 Subject: [PATCH] gcs: 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. Fixes #7038 --- backend/googlecloudstorage/googlecloudstorage.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/googlecloudstorage/googlecloudstorage.go b/backend/googlecloudstorage/googlecloudstorage.go index c8537372d..4bd7a41e4 100644 --- a/backend/googlecloudstorage/googlecloudstorage.go +++ b/backend/googlecloudstorage/googlecloudstorage.go @@ -690,11 +690,7 @@ func (f *Fs) list(ctx context.Context, bucket, directory, prefix string, addBuck fs.Logf(f, "Odd name received %q", object.Name) continue } - remote = remote[len(prefix):] isDirectory := remote == "" || strings.HasSuffix(remote, "/") - if addBucket { - remote = path.Join(bucket, remote) - } // is this a directory marker? if isDirectory { // Don't insert the root directory @@ -704,6 +700,10 @@ func (f *Fs) list(ctx context.Context, bucket, directory, prefix string, addBuck // process directory markers as directories remote = strings.TrimRight(remote, "/") } + remote = remote[len(prefix):] + if addBucket { + remote = path.Join(bucket, remote) + } err = fn(remote, object, isDirectory) if err != nil {