Author: nextgens
Date: 2007-04-25 09:41:26 +0000 (Wed, 25 Apr 2007)
New Revision: 12934

Modified:
   trunk/freenet/src/freenet/l10n/L10n.java
Log:
Follow toad's advice : backup the l10n override into a temporary file before 
moving it over

Modified: trunk/freenet/src/freenet/l10n/L10n.java
===================================================================
--- trunk/freenet/src/freenet/l10n/L10n.java    2007-04-25 09:19:13 UTC (rev 
12933)
+++ trunk/freenet/src/freenet/l10n/L10n.java    2007-04-25 09:41:26 UTC (rev 
12934)
@@ -124,14 +124,23 @@
        private static void _saveTranslationFile() {
                FileOutputStream fos = null;
                BufferedOutputStream bos = null;
+               File finalFile = new File(L10n.PREFIX + 
L10n.getSelectedLanguage() + L10n.OVERRIDE_SUFFIX);

                try {
-                       fos = new FileOutputStream(new File(L10n.PREFIX + 
L10n.getSelectedLanguage() + L10n.OVERRIDE_SUFFIX));
+                       // We don't set deleteOnExit on it : if the save 
operation fails, we want a backup
+                       File tempFile = new File(finalFile.getPath() + "-" + 
System.currentTimeMillis() + ".tmp");
+                       Logger.minor("L10n", "The temporary filename is : " + 
tempFile);
+                       
+                       fos = new FileOutputStream(tempFile);
                        bos = new BufferedOutputStream(fos);

                        
bos.write(L10n.translationOverride.toOrderedString().getBytes("UTF-8"));
                        bos.flush();

+                       
+                       tempFile.renameTo(finalFile);
+                       tempFile.delete();
+                       
                        Logger.normal("L10n", "Override file saved 
successfully!");
                } catch (IOException e) {
                        Logger.error("L10n", "Error while saving the 
translation override: "+ e.getMessage(), e);


Reply via email to