Yes, that is probably the problem. The code that generates the error is:
// Get file permissions
STAT_STRUCT fileStats;
if (UTF8_Stat(from, &fileStats)) {
AddDebugLogLineM( true, logFileIO, wxT("Error on file copy. Can't stat original file: ") + from );
}
char buffer[FILE_COPY_BUFFER];
CFile input_file(from, CFile::read);
if (!input_file.IsOpened()) {
AddDebugLogLineM( true, logFileIO, wxT("Error on file copy. Can't open original file: ") + from );
return false;
}
CFile output_file;
if (!output_file.Open(to, CFile::write, fileStats.st_mode & 0777)) {
AddDebugLogLineM( true, logFileIO, wxT("Error on file copy. Can't create destination file: ") + to );
return false;
}
The fatx file system probably returns some set of user permissions in the fileStats variable that cannot be used on the open call, and from it comes the "invalid argument". This is most probably a file system problem, I think that if the file system does not support user permissions, it should ignore it, not fail. But that is all supposition, I can't test it here.
You could test a crazy idea that might just work: set umask to 0777 in fstab. I don't know about fatx implementation, but maybe it will return 0000 in fileStats and will not give an error. Of course, I don't even know if that is an usable file system like this, but you should be able to create the file and copy it at least.