X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fexceptions.cc;h=1ded4483485649d97e57200d549a45b20d144cf9;hb=f30ff718cbe924c8fcb6bf3a6a485271da85855d;hp=28846e1617b0523a43f31b7fcaf0f897ee91f518;hpb=fe9bbdf3f5223ee94cb51ba00ddab7f4a6ddb754;p=libdcp.git diff --git a/src/exceptions.cc b/src/exceptions.cc index 28846e16..1ded4483 100644 --- a/src/exceptions.cc +++ b/src/exceptions.cc @@ -1,20 +1,34 @@ /* Copyright (C) 2014 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of libdcp. + + libdcp is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + libdcp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with libdcp. If not, see . + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. */ /** @file src/exceptions.cc @@ -25,10 +39,11 @@ #include "compose.hpp" using std::string; +using std::runtime_error; using namespace dcp; FileError::FileError (string message, boost::filesystem::path filename, int number) - : _message (String::compose ("%1 (%2) (error %3)", message, filename.string(), number)) + : runtime_error (String::compose ("%1 (%2) (error %3)", message, filename.string(), number)) , _filename (filename) , _number (number) { @@ -36,35 +51,68 @@ FileError::FileError (string message, boost::filesystem::path filename, int numb } UnresolvedRefError::UnresolvedRefError (string id) - : _message (String::compose ("Unresolved reference to asset id %1", id)) + : runtime_error (String::compose ("Unresolved reference to asset id %1", id)) { } TimeFormatError::TimeFormatError (string bad_time) - : _message (String::compose ("Bad time string %1", bad_time)) + : runtime_error (String::compose ("Bad time string %1", bad_time)) { } MissingAssetError::MissingAssetError (boost::filesystem::path path, AssetType type) - : _path (path) - , _type (type) + : DCPReadError ( + type == MAIN_PICTURE ? String::compose ("Missing asset %1 for main picture", path.string()) : + (type == MAIN_SOUND ? String::compose ("Missing asset %1 for main sound", path.string()) : + (type == MAIN_SUBTITLE ? String::compose ("Missing asset %1 for main subtitle", path.string()) : + String::compose ("Missing asset %1", path.string())))) +{ + +} + +NotEncryptedError::NotEncryptedError (string const & what) + : runtime_error (String::compose ("%1 is not encrypted", what)) +{ + +} + + +ProgrammingError::ProgrammingError (string file, int line) + : runtime_error (String::compose ("Programming error at %1:%2", file, line)) +{ + +} + +MismatchedStandardError::MismatchedStandardError () + : DCPReadError ("DCP contains both Interop and SMPTE parts") +{ + +} + +KDMDecryptionError::KDMDecryptionError (std::string message, int cipher_length, int modulus_dmax) + : runtime_error (String::compose ("Could not decrypt KDM (%1) (%2/%3)", message, cipher_length, modulus_dmax)) +{ + +} + +KDMFormatError::KDMFormatError (std::string message) + : runtime_error (String::compose ("Could not parse KDM (%1)", message)) +{ + +} + +CertificateChainError::CertificateChainError (std::string message) + : runtime_error (message) +{ + +} + +DCPReadError::DCPReadError (string message, string detail) + : runtime_error(String::compose("%1 (%2)", message, detail)) + , _message(message) + , _detail(detail) { - string type_name; - switch (_type) { - case MAIN_PICTURE: - type_name = " for main picture"; - break; - case MAIN_SOUND: - type_name = " for main sound"; - break; - case MAIN_SUBTITLE: - type_name = " for main subtitle"; - break; - case UNKNOWN: - break; - } - - _message = String::compose ("Missing asset %1%2", path.string(), type_name); + }