diff --git a/src/config.d b/src/config.d index 678736cc..e73bc1ed 100644 --- a/src/config.d +++ b/src/config.d @@ -664,11 +664,20 @@ final class Config int returnRequiredDirectoryPermisions() { // read the configuredDirectoryPermissionMode and return + if (configuredDirectoryPermissionMode == 0) { + // the configured value is zero, this means that directories would get + // values of d--------- + configureRequiredDirectoryPermisions(); + } return configuredDirectoryPermissionMode; } int returnRequiredFilePermisions() { // read the configuredFilePermissionMode and return + if (configuredFilePermissionMode == 0) { + // the configured value is zero + configureRequiredFilePermisions(); + } return configuredFilePermissionMode; } } diff --git a/src/onedrive.d b/src/onedrive.d index 47542748..eb2cfff2 100644 --- a/src/onedrive.d +++ b/src/onedrive.d @@ -725,7 +725,14 @@ final class OneDriveApi refreshToken = response["refresh_token"].str(); accessTokenExpiration = Clock.currTime() + dur!"seconds"(response["expires_in"].integer()); if (!.dryRun) { - std.file.write(cfg.refreshTokenFilePath, refreshToken); + try { + // try and update the refresh_token file + std.file.write(cfg.refreshTokenFilePath, refreshToken); + cfg.refreshTokenFilePath.setAttributes(cfg.returnRequiredFilePermisions()); + } catch (FileException e) { + // display the error message + displayFileSystemErrorMessage(e.msg); + } } if (printAccessToken) writeln("New access token: ", accessToken); } else { @@ -1310,6 +1317,14 @@ final class OneDriveApi log.error(" Error Reason: ", errorMessage["error_description"].str); } } + + // Parse and display error message received from the local file system + private void displayFileSystemErrorMessage(string message) + { + log.error("ERROR: The local file system returned an error with the following message:"); + auto errorArray = splitLines(message); + log.error(" Error Message: ", errorArray[0]); + } } unittest