Mask the Features with the Fs passed in Only optional features which are implemented in both the original Fs AND the one passed in will be advertised. Any features which aren't in both will be set to false/nil, except for UnWrap/Wrap which will be left untouched.
(ctx context.Context, f Fs)
| 376 | // aren't in both will be set to false/nil, except for UnWrap/Wrap which |
| 377 | // will be left untouched. |
| 378 | func (ft *Features) Mask(ctx context.Context, f Fs) *Features { |
| 379 | mask := f.Features() |
| 380 | ft.CaseInsensitive = ft.CaseInsensitive && mask.CaseInsensitive |
| 381 | ft.DuplicateFiles = ft.DuplicateFiles && mask.DuplicateFiles |
| 382 | ft.ReadMimeType = ft.ReadMimeType && mask.ReadMimeType |
| 383 | ft.WriteMimeType = ft.WriteMimeType && mask.WriteMimeType |
| 384 | ft.ReadMetadata = ft.ReadMetadata && mask.ReadMetadata |
| 385 | ft.WriteMetadata = ft.WriteMetadata && mask.WriteMetadata |
| 386 | ft.UserMetadata = ft.UserMetadata && mask.UserMetadata |
| 387 | ft.ReadDirMetadata = ft.ReadDirMetadata && mask.ReadDirMetadata |
| 388 | ft.WriteDirMetadata = ft.WriteDirMetadata && mask.WriteDirMetadata |
| 389 | ft.WriteDirSetModTime = ft.WriteDirSetModTime && mask.WriteDirSetModTime |
| 390 | ft.UserDirMetadata = ft.UserDirMetadata && mask.UserDirMetadata |
| 391 | ft.DirModTimeUpdatesOnWrite = ft.DirModTimeUpdatesOnWrite && mask.DirModTimeUpdatesOnWrite |
| 392 | ft.CanHaveEmptyDirectories = ft.CanHaveEmptyDirectories && mask.CanHaveEmptyDirectories |
| 393 | ft.BucketBased = ft.BucketBased && mask.BucketBased |
| 394 | ft.BucketBasedRootOK = ft.BucketBasedRootOK && mask.BucketBasedRootOK |
| 395 | ft.SetTier = ft.SetTier && mask.SetTier |
| 396 | ft.GetTier = ft.GetTier && mask.GetTier |
| 397 | ft.ServerSideAcrossConfigs = ft.ServerSideAcrossConfigs && mask.ServerSideAcrossConfigs |
| 398 | // ft.IsLocal = ft.IsLocal && mask.IsLocal Don't propagate IsLocal |
| 399 | ft.SlowModTime = ft.SlowModTime && mask.SlowModTime |
| 400 | ft.SlowHash = ft.SlowHash && mask.SlowHash |
| 401 | ft.FilterAware = ft.FilterAware && mask.FilterAware |
| 402 | ft.PartialUploads = ft.PartialUploads && mask.PartialUploads |
| 403 | ft.NoMultiThreading = ft.NoMultiThreading && mask.NoMultiThreading |
| 404 | // ft.Overlay = ft.Overlay && mask.Overlay don't propagate Overlay |
| 405 | ft.ChunkWriterDoesntSeek = ft.ChunkWriterDoesntSeek && mask.ChunkWriterDoesntSeek |
| 406 | ft.DoubleSlash = ft.DoubleSlash && mask.DoubleSlash |
| 407 | |
| 408 | if mask.Purge == nil { |
| 409 | ft.Purge = nil |
| 410 | } |
| 411 | if mask.Copy == nil { |
| 412 | ft.Copy = nil |
| 413 | } |
| 414 | if mask.Move == nil { |
| 415 | ft.Move = nil |
| 416 | } |
| 417 | if mask.DirMove == nil { |
| 418 | ft.DirMove = nil |
| 419 | } |
| 420 | if mask.MkdirMetadata == nil { |
| 421 | ft.MkdirMetadata = nil |
| 422 | } |
| 423 | if mask.ChangeNotify == nil { |
| 424 | ft.ChangeNotify = nil |
| 425 | } |
| 426 | // if mask.UnWrap == nil { |
| 427 | // ft.UnWrap = nil |
| 428 | // } |
| 429 | // if mask.Wrapper == nil { |
| 430 | // ft.Wrapper = nil |
| 431 | // } |
| 432 | if mask.DirCacheFlush == nil { |
| 433 | ft.DirCacheFlush = nil |
| 434 | } |
| 435 | if mask.PublicLink == nil { |