From 0982ea470afb0a6064c70d326873477bb21d0b78 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Wed, 1 Nov 2017 15:56:34 +0100
Subject: [PATCH] report failure when opening a file

---
 alib2cli/src/builtin/ReadFile.cpp  | 3 +++
 alib2cli/src/builtin/WriteFile.cpp | 9 +++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/alib2cli/src/builtin/ReadFile.cpp b/alib2cli/src/builtin/ReadFile.cpp
index a9e45bf7a9..2664061efa 100644
--- a/alib2cli/src/builtin/ReadFile.cpp
+++ b/alib2cli/src/builtin/ReadFile.cpp
@@ -20,6 +20,9 @@ std::string ReadFile::read ( const std::string & filename ) {
 		return std::string ( ( std::istreambuf_iterator < char > ( std::cin ) ), std::istreambuf_iterator < char > ( ) );
 	} else {
 		std::ifstream t ( filename );
+		if ( ! t.is_open ( ) ) {
+			throw exception::CommonException ( "File could not be opened." );
+		}
 		t >> std::noskipws;
 		return std::string ( ( std::istreambuf_iterator < char > ( t ) ), std::istreambuf_iterator < char > ( ) );
 	}
diff --git a/alib2cli/src/builtin/WriteFile.cpp b/alib2cli/src/builtin/WriteFile.cpp
index e17baf974f..b6369141f5 100644
--- a/alib2cli/src/builtin/WriteFile.cpp
+++ b/alib2cli/src/builtin/WriteFile.cpp
@@ -16,8 +16,13 @@ namespace builtin {
 void WriteFile::write ( const std::string & filename, const std::string & data ) {
 	if ( filename == "-" )
 		std::cout << data;
-	else
-		std::ofstream ( filename ) << data;
+	else {
+		std::ofstream t ( filename );
+		if ( ! t.is_open ( ) ) {
+			throw exception::CommonException ( "File could not be opened." );
+		}
+		t << data;
+	}
 }
 
 auto WriteFileString = registration::AbstractRegister < WriteFile, void, const std::string &, const std::string & > ( WriteFile::write );
-- 
GitLab