--- src/common/vfs.h.orig 2022-03-21 20:53:50.276310515 -0500 +++ src/common/vfs.h 2022-03-21 21:00:33.902698088 -0500 @@ -168,24 +168,24 @@ * If the remote metadata changes, the local placeholder's metadata should possibly * change as well. */ - virtual Q_REQUIRED_RESULT Result updateMetadata(const QString &filePath, time_t modtime, qint64 size, const QByteArray &fileId) = 0; + Q_REQUIRED_RESULT virtual Result updateMetadata(const QString &filePath, time_t modtime, qint64 size, const QByteArray &fileId) = 0; /// Create a new dehydrated placeholder. Called from PropagateDownload. - virtual Q_REQUIRED_RESULT Result createPlaceholder(const SyncFileItem &item) = 0; + Q_REQUIRED_RESULT virtual Result createPlaceholder(const SyncFileItem &item) = 0; /** Convert a hydrated placeholder to a dehydrated one. Called from PropagateDownlaod. * * This is different from delete+create because preserving some file metadata * (like pin states) may be essential for some vfs plugins. */ - virtual Q_REQUIRED_RESULT Result dehydratePlaceholder(const SyncFileItem &item) = 0; + Q_REQUIRED_RESULT virtual Result dehydratePlaceholder(const SyncFileItem &item) = 0; /** Discovery hook: even unchanged files may need UPDATE_METADATA. * * For instance cfapi vfs wants local hydrated non-placeholder files to * become hydrated placeholder files. */ - virtual Q_REQUIRED_RESULT bool needsMetadataUpdate(const SyncFileItem &item) = 0; + Q_REQUIRED_RESULT virtual bool needsMetadataUpdate(const SyncFileItem &item) = 0; /** Convert a new file to a hydrated placeholder. * @@ -200,13 +200,13 @@ * new placeholder shall supersede, for rename-replace actions with new downloads, * for example. */ - virtual Q_REQUIRED_RESULT Result convertToPlaceholder( + Q_REQUIRED_RESULT virtual Result convertToPlaceholder( const QString &filename, const SyncFileItem &item, const QString &replacesFile = QString()) = 0; /// Determine whether the file at the given absolute path is a dehydrated placeholder. - virtual Q_REQUIRED_RESULT bool isDehydratedPlaceholder(const QString &filePath) = 0; + Q_REQUIRED_RESULT virtual bool isDehydratedPlaceholder(const QString &filePath) = 0; /** Similar to isDehydratedPlaceholder() but used from sync discovery. * @@ -215,7 +215,7 @@ * * Returning true means that type was fully determined. */ - virtual Q_REQUIRED_RESULT bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0; + Q_REQUIRED_RESULT virtual bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0; /** Sets the pin state for the item at a path. * @@ -226,7 +226,7 @@ * * folderPath is relative to the sync folder. Can be "" for root folder. */ - virtual Q_REQUIRED_RESULT bool setPinState(const QString &folderPath, PinState state) = 0; + Q_REQUIRED_RESULT virtual bool setPinState(const QString &folderPath, PinState state) = 0; /** Returns the pin state of an item at a path. * @@ -237,7 +237,7 @@ * * Returns none on retrieval error. */ - virtual Q_REQUIRED_RESULT Optional pinState(const QString &folderPath) = 0; + Q_REQUIRED_RESULT virtual Optional pinState(const QString &folderPath) = 0; /** Returns availability status of an item at a path. * @@ -246,7 +246,7 @@ * * folderPath is relative to the sync folder. Can be "" for root folder. */ - virtual Q_REQUIRED_RESULT AvailabilityResult availability(const QString &folderPath) = 0; + Q_REQUIRED_RESULT virtual AvailabilityResult availability(const QString &folderPath) = 0; public slots: /** Update in-sync state based on SyncFileStatusTracker signal.