Skip to content

Commit 73c3302

Browse files
committed
1 parent d5605ac commit 73c3302

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

src/main/java/org/cryptomator/linux/quickaccess/DolphinPlaces.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.io.IOException;
1717
import java.io.StringReader;
1818
import java.nio.charset.StandardCharsets;
19+
import java.nio.file.AtomicMoveNotSupportedException;
1920
import java.nio.file.Files;
2021
import java.nio.file.Path;
2122
import java.nio.file.StandardCopyOption;
@@ -86,7 +87,7 @@ public QuickAccessService.QuickAccessEntry add(Path target, String displayName)
8687
writer.write(placesContent, insertIndex, placesContent.length() - insertIndex);
8788
}
8889
// save
89-
Files.move(TMP_FILE, PLACES_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
90+
persistTmpFile();
9091
return new DolphinPlacesEntry(id);
9192
} catch (SAXException | IOException e) {
9293
throw new QuickAccessServiceException("Adding entry to KDE places file failed.", e);
@@ -136,7 +137,7 @@ public void remove() throws QuickAccessServiceException {
136137
writer.write(contentToWrite2);
137138
}
138139
// save
139-
Files.move(TMP_FILE, PLACES_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
140+
persistTmpFile();
140141
isRemoved = true;
141142
} catch (IOException | SAXException e) {
142143
throw new QuickAccessServiceException("Removing entry from KDE places file failed.", e);
@@ -157,6 +158,14 @@ private int indexOfEntryOpeningTag(String placesContent, int idIndex) {
157158
}
158159
}
159160

161+
static void persistTmpFile() throws IOException {
162+
try {
163+
Files.move(TMP_FILE, PLACES_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
164+
} catch (AtomicMoveNotSupportedException e) {
165+
Files.move(TMP_FILE, PLACES_FILE, StandardCopyOption.REPLACE_EXISTING);
166+
}
167+
}
168+
160169
@CheckAvailability
161170
public static boolean isSupported() {
162171
return Files.exists(PLACES_FILE);

src/main/java/org/cryptomator/linux/quickaccess/NautilusBookmarks.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.io.IOException;
1111
import java.nio.charset.StandardCharsets;
12+
import java.nio.file.AtomicMoveNotSupportedException;
1213
import java.nio.file.Files;
1314
import java.nio.file.Path;
1415
import java.nio.file.StandardCopyOption;
@@ -40,7 +41,8 @@ public QuickAccessService.QuickAccessEntry add(Path target, String displayName)
4041
var entries = Files.readAllLines(BOOKMARKS_FILE, StandardCharsets.UTF_8);
4142
entries.add(entryLine);
4243
Files.write(TMP_FILE, entries, StandardCharsets.UTF_8, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
43-
Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
44+
45+
persistTmpFile();
4446
return new NautilusQuickAccessEntry(entryLine);
4547
} catch (IOException e) {
4648
throw new QuickAccessServiceException("Adding entry to Nautilus bookmarks file failed.", e);
@@ -71,7 +73,7 @@ public void remove() throws QuickAccessServiceException {
7173
var entries = Files.readAllLines(BOOKMARKS_FILE);
7274
if (entries.remove(line)) {
7375
Files.write(TMP_FILE, entries, StandardCharsets.UTF_8, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
74-
Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
76+
persistTmpFile();
7577
}
7678
isRemoved = true;
7779
} catch (IOException e) {
@@ -82,6 +84,14 @@ public void remove() throws QuickAccessServiceException {
8284
}
8385
}
8486

87+
static void persistTmpFile() throws IOException {
88+
try {
89+
Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
90+
} catch (AtomicMoveNotSupportedException e) {
91+
Files.move(TMP_FILE, BOOKMARKS_FILE, StandardCopyOption.REPLACE_EXISTING);
92+
}
93+
}
94+
8595
@CheckAvailability
8696
public static boolean isSupported() {
8797
return Files.exists(BOOKMARKS_FILE);

0 commit comments

Comments
 (0)