From 362a90f3dc2960bf9b272073bb1904a8879e4486 Mon Sep 17 00:00:00 2001 From: Uwe Seimet Date: Mon, 20 Dec 2021 19:37:32 +0100 Subject: [PATCH] Updated error handling --- src/raspberrypi/rascsi_image.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/raspberrypi/rascsi_image.cpp b/src/raspberrypi/rascsi_image.cpp index 0b681686..068af5c4 100644 --- a/src/raspberrypi/rascsi_image.cpp +++ b/src/raspberrypi/rascsi_image.cpp @@ -59,11 +59,15 @@ bool RascsiImage::CreateImageFolder(int fd, const string& filename) if (filename_start != string::npos) { string folder = filename.substr(0, filename_start); - std::error_code error; - filesystem::create_directories(folder, error); - if (error) { - ReturnStatus(fd, false, "Can't create image folder '" + folder + "': " + strerror(errno)); - return false; + // Checking for existence first prevents an error if the top-level folder is a softlink + struct stat st; + if (stat(folder.c_str(), &st)) { + std::error_code error; + filesystem::create_directories(folder, error); + if (error) { + ReturnStatus(fd, false, "Can't create image folder '" + folder + "': " + strerror(errno)); + return false; + } } }