+
+void
+AppleDatabase::dbMakeBackup() {
+ // Make a backup copy next to the current keychain, with filename pattern original.keychain_XXXXXX_backup
+ char * filename_temp_cstr = tempnam( mAtomicFile.dir().c_str(), (mAtomicFile.file() + "_").c_str() );
+ string filename_temp(filename_temp_cstr);
+ filename_temp += "_backup";
+
+ const char * dstFilename = filename_temp.c_str();
+ free(filename_temp_cstr);
+
+ if(copyfile(mAtomicFile.path().c_str(), dstFilename, NULL, COPYFILE_ALL) < 0) {
+ UnixError::throwMe(errno);
+ }
+}
+