fix: Protect against prefs write failure

This commit is contained in:
Felix Rieseberg
2020-07-29 08:40:17 -07:00
parent 5b6079eb85
commit 7aa3b3612f

View File

@@ -183,6 +183,8 @@ function writeSafely(filePath, fileData) {
} }
function getPrefs(userImages = []) { function getPrefs(userImages = []) {
let result = '';
try { try {
const prefsTemplatePath = path.join(__dirname, "prefs_template"); const prefsTemplatePath = path.join(__dirname, "prefs_template");
const prefsPath = path.join(__dirname, "prefs"); const prefsPath = path.join(__dirname, "prefs");
@@ -205,11 +207,13 @@ function getPrefs(userImages = []) {
prefs += `\n`; prefs += `\n`;
fs.writeFileSync(prefsPath, prefs); fs.writeFileSync(prefsPath, prefs);
result = 'prefs';
} catch (error) { } catch (error) {
console.error(`getPrefs: Failed to set prefs`, error); console.error(`getPrefs: Failed to set prefs`, error);
result = 'prefs_template';
} }
return "prefs"; return result;
} }
function isMacDirFileOfType(extension = "", v = "") { function isMacDirFileOfType(extension = "", v = "") {
@@ -279,8 +283,8 @@ function copyUserImages() {
return result; return result;
} }
function getAutoLoadFiles(userImages = []) { function getAutoLoadFiles(userImages = [], prefs = '') {
const autoLoadFiles = ["disk", "rom", "prefs", ...userImages]; const autoLoadFiles = ["disk", "rom", prefs, ...userImages];
return autoLoadFiles; return autoLoadFiles;
} }
@@ -483,14 +487,15 @@ function startEmulator(parentConfig) {
let AudioConfig = null; let AudioConfig = null;
let AudioBufferQueue = []; let AudioBufferQueue = [];
const userImages = copyUserImages(); const userImages = copyUserImages();
const prefs = getPrefs(userImages)
const arguments = getAutoLoadFiles(userImages, prefs);
Module = { Module = {
autoloadFiles: getAutoLoadFiles(userImages), autoloadFiles,
userImages,
userImages: userImages, arguments,
arguments: ["--config", getPrefs(userImages)],
canvas: null, canvas: null,
blit: function blit(bufPtr, width, height, depth, usingPalette) { blit: function blit(bufPtr, width, height, depth, usingPalette) {