+
+ {
+ 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());
+ string msg(strprintf(_("Unable to check whether '%s' exists."), filename.c_str()));
+ App::dialog_error_blocking(_("SaveAs - Error"),msg.c_str());
+ continue;
+ }
+
+ // if the file exists and the user doesn't want to overwrite it, keep prompting for a filename
+ string msg(strprintf(_("A file named '%s' already exists.\n\n"
+ "Do you want to replace it with the file you are saving?"), filename.c_str()));
+ if ((stat_return == 0) &&
+ !App::dialog_yes_no(_("File exists"),msg.c_str()))
+ continue;
+ }
+