From 7b08f7a2af3f66ab95437e4490499cebb20e5e41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Wed, 28 Apr 2021 22:11:42 +0200 Subject: [PATCH] Remove dynamic exception specification to fix C++17 compatibility The dynamic exception specifications have been deprecated in C++11 and eventually removed in C++17 [1]. GCC-11 uses gnu++17 by default, causing advancecomp to fail to compile: In file included from rezip.cc:24: file.h:70:43: error: ISO C++17 does not allow dynamic exception specifications 70 | bool file_exists(const std::string& file) throw (error); | ^~~~~ file.h:71:75: error: ISO C++17 does not allow dynamic exception specifications 71 | e(const std::string& path, const char* data, unsigned size) throw (error); | ^~~~~ ... Since there is really no gain from having these specifications anymore, just remove them to fix the build. [1] https://en.cppreference.com/w/cpp/language/except_spec --- file.cc | 26 +++++++++++++------------- file.h | 24 ++++++++++++------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/file.cc b/file.cc index 1e90348..d676d25 100644 --- a/file.cc +++ b/file.cc @@ -98,7 +98,7 @@ void infopath::readonly_set(bool Areadonly) /** * Check if a file exists. */ -bool file_exists(const string& path) throw (error) +bool file_exists(const string& path) { struct stat s; if (stat(path.c_str(), &s) != 0) { @@ -114,7 +114,7 @@ bool file_exists(const string& path) throw (error) /** * Write a whole file. */ -void file_write(const string& path, const char* data, unsigned size) throw (error) +void file_write(const string& path, const char* data, unsigned size) { FILE* f = fopen(path.c_str(), "wb"); if (!f) @@ -134,7 +134,7 @@ void file_write(const string& path, const char* data, unsigned size) throw (erro /** * Read a whole file. */ -void file_read(const string& path, char* data, unsigned size) throw (error) +void file_read(const string& path, char* data, unsigned size) { file_read(path, data, 0, size); } @@ -142,7 +142,7 @@ void file_read(const string& path, char* data, unsigned size) throw (error) /** * Read a whole file. */ -void file_read(const string& path, char* data, unsigned offset, unsigned size) throw (error) +void file_read(const string& path, char* data, unsigned offset, unsigned size) { FILE* f = fopen(path.c_str(), "rb"); if (!f) @@ -166,7 +166,7 @@ void file_read(const string& path, char* data, unsigned offset, unsigned size) t /** * Get the time of a file. */ -time_t file_time(const string& path) throw (error) +time_t file_time(const string& path) { struct stat s; if (stat(path.c_str(), &s)!=0) @@ -178,7 +178,7 @@ time_t file_time(const string& path) throw (error) /** * Set the time of a file. */ -void file_utime(const string& path, time_t tod) throw (error) +void file_utime(const string& path, time_t tod) { struct utimbuf u; @@ -192,7 +192,7 @@ void file_utime(const string& path, time_t tod) throw (error) /** * Get the size of a file. */ -unsigned file_size(const string& path) throw (error) +unsigned file_size(const string& path) { struct stat s; if (stat(path.c_str(), &s)!=0) @@ -204,7 +204,7 @@ unsigned file_size(const string& path) throw (error) /** * Get the crc of a file. */ -crc_t file_crc(const string& path) throw (error) +crc_t file_crc(const string& path) { unsigned size = file_size(path); @@ -227,7 +227,7 @@ crc_t file_crc(const string& path) throw (error) /** * Copy a file. */ -void file_copy(const string& path1, const string& path2) throw (error) +void file_copy(const string& path1, const string& path2) { unsigned size; @@ -249,7 +249,7 @@ void file_copy(const string& path1, const string& path2) throw (error) /** * Move a file. */ -void file_move(const string& path1, const string& path2) throw (error) +void file_move(const string& path1, const string& path2) { if (rename(path1.c_str(), path2.c_str())!=0 && errno==EXDEV) { @@ -271,7 +271,7 @@ void file_move(const string& path1, const string& path2) throw (error) /** * Remove a file. */ -void file_remove(const string& path1) throw (error) +void file_remove(const string& path1) { if (remove(path1.c_str())!=0) { throw error() << "Failed remove of " << path1; @@ -281,7 +281,7 @@ void file_remove(const string& path1) throw (error) /** * Rename a file. */ -void file_rename(const string& path1, const string& path2) throw (error) +void file_rename(const string& path1, const string& path2) { if (rename(path1.c_str(), path2.c_str())!=0) { throw error() << "Failed rename of " << path1 << " to " << path2; @@ -409,7 +409,7 @@ string file_adjust(const string& path) throw () /** * Make a drectory tree. */ -void file_mktree(const std::string& path) throw (error) +void file_mktree(const std::string& path) { string dir = file_dir(path); string name = file_name(path); diff --git a/file.h b/file.h index 1b0cf85..49429b5 100644 --- a/file.h +++ b/file.h @@ -67,18 +67,18 @@ typedef unsigned crc_t; crc_t crc_compute(const char* data, unsigned len); crc_t crc_compute(crc_t pred, const char* data, unsigned len); -bool file_exists(const std::string& file) throw (error); -void file_write(const std::string& path, const char* data, unsigned size) throw (error); -void file_read(const std::string& path, char* data, unsigned size) throw (error); -void file_read(const std::string& path, char* data, unsigned offset, unsigned size) throw (error); -time_t file_time(const std::string& path) throw (error); -void file_utime(const std::string& path, time_t tod) throw (error); -unsigned file_size(const std::string& path) throw (error); -crc_t file_crc(const std::string& path) throw (error); -void file_copy(const std::string& path1, const std::string& path2) throw (error); -void file_move(const std::string& path1, const std::string& path2) throw (error); -void file_remove(const std::string& path1) throw (error); -void file_mktree(const std::string& path1) throw (error); +bool file_exists(const std::string& file); +void file_write(const std::string& path, const char* data, unsigned size); +void file_read(const std::string& path, char* data, unsigned size); +void file_read(const std::string& path, char* data, unsigned offset, unsigned size); +time_t file_time(const std::string& path); +void file_utime(const std::string& path, time_t tod); +unsigned file_size(const std::string& path); +crc_t file_crc(const std::string& path); +void file_copy(const std::string& path1, const std::string& path2); +void file_move(const std::string& path1, const std::string& path2); +void file_remove(const std::string& path1); +void file_mktree(const std::string& path1); std::string file_temp(const std::string& path) throw (); std::string file_randomize(const std::string& path, int n) throw ();