+ {
+ struct stat s;
+ int stat_return = stat(filename.c_str(), &s);
+
+ // if stat() fails with something other than 'file doesn't exist', there's been a real
+ // error of some kind. let's give up now and ask for a new path.
+ if (stat_return == -1 && errno != ENOENT)
+ {
+ perror(filename.c_str());
+ App::dialog_error_blocking("SaveAs - Error","Unable to check whether '" + filename + "' exists.");
+ continue;
+ }
+
+ // if the file exists and the user doesn't want to overwrite it, keep prompting for a filename
+ if ((stat_return == 0) &&
+ !App::dialog_yes_no("File exists",
+ "A file named '" +
+ filename +
+ "' already exists.\n\n"
+ "Do you want to replace it with the file you are saving?"))
+ continue;
+ }
+