Index: sources/storage/FileHandler.cpp =================================================================== diff -u -raf8d98b36b427e2b5f4d6659fcf3b58ee79eab6a -rb7649e74aeebe1545ba0db9aabe2b41f0a28baec --- sources/storage/FileHandler.cpp (.../FileHandler.cpp) (revision af8d98b36b427e2b5f4d6659fcf3b58ee79eab6a) +++ sources/storage/FileHandler.cpp (.../FileHandler.cpp) (revision b7649e74aeebe1545ba0db9aabe2b41f0a28baec) @@ -148,6 +148,8 @@ { // disabled coco begin validated: This needs user interaction to export to USB device // has been tested manually since currently it is the only place it has been used. + + // cp without --link or --dereference will not follow symlinks by default when copying with -r QString cmd = "cp"; QStringList arguments; arguments << "-r" << vSource << vDestination; Index: sources/storage/FileHandler.h =================================================================== diff -u -r265600079f9f3b741cd3e67c229f39ec66571419 -rb7649e74aeebe1545ba0db9aabe2b41f0a28baec --- sources/storage/FileHandler.h (.../FileHandler.h) (revision 265600079f9f3b741cd3e67c229f39ec66571419) +++ sources/storage/FileHandler.h (.../FileHandler.h) (revision b7649e74aeebe1545ba0db9aabe2b41f0a28baec) @@ -96,6 +96,11 @@ static quint8 mO_CopyPercent = 0; quint8 mC_CopyPercent = 0; + // determine if the file is a symlink by checking for the absolute path of the QFile object + // if it is empty, this indicates that it is not a symlink, otherwise skip the file + QString symLinkAbsolutePath = srcFile.symLinkTarget(); + if(!symLinkAbsolutePath.isEmpty()) { return eOK ; } // skipping the file + if ( ! srcDir .exists() ) { err = eSrcFolderNotExist ; goto lErr; } if ( ! srcFile.exists() ) { err = eSrcFileNotExist ; goto lErr; }