- if (FileExists(OutputFile)) wxRemoveFile(OutputFile);
- wxCopyFile("tmp1.rtf", OutputFile);
+ if (FileExists(OutputFile))
+ wxRemoveFile(OutputFile);
+
+ char *cwdStr;
+ cwdStr = wxGetWorkingDirectory();
+
+ wxString outputDirStr;
+ outputDirStr = wxPathOnly(OutputFile);
+
+ // Determine if the temp file and the output file are in the same directory,
+ // and if they are, then just rename the temp file rather than copying
+ // it, as this is much faster when working with large (multi-megabyte files)
+ if ((wxStrcmp(outputDirStr.c_str(),"") == 0) || // no path specified on output file
+ (wxStrcmp(cwdStr,outputDirStr.c_str()) == 0)) // paths do not match
+ {
+ wxRenameFile("tmp1.rtf", OutputFile);
+ }
+ else
+ {
+ wxCopyFile("tmp1.rtf", OutputFile);
+ }
+ delete [] cwdStr;