From: Philippe E. <ph...@us...> - 2003-06-11 18:48:21
|
Update of /cvsroot/oprofile/oprofile/libpp In directory sc8-pr-cvs1:/tmp/cvs-serv20212/libpp Modified Files: Tag: BRANCH_CALLGRAPH op_header.cpp profile.cpp profile_spec.cpp symbol_sort.cpp Log Message: BRANCH_CALLGRAPH: use exception rather than exit in library code Index: op_header.cpp =================================================================== RCS file: /cvsroot/oprofile/oprofile/libpp/op_header.cpp,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -p -d -r1.3 -r1.3.2.1 --- op_header.cpp 3 Jun 2003 16:18:54 -0000 1.3 +++ op_header.cpp 11 Jun 2003 18:48:15 -0000 1.3.2.1 @@ -13,7 +13,9 @@ #include <cstdlib> #include <iomanip> #include <set> +#include <sstream> +#include "op_exception.h" #include "odb_hash.h" #include "op_cpu_type.h" #include "op_file.h" @@ -26,32 +28,36 @@ void op_check_header(opd_header const & string const & filename) { if (h1.mtime != h2.mtime) { - cerr << "header timestamps are different (" - << h1.mtime << ", " << h2.mtime << ") for " - << filename << "\n"; - exit(EXIT_FAILURE); + ostringstream os; + os << "header timestamps are different (" + << h1.mtime << ", " << h2.mtime << ") for " + << filename << "\n"; + throw op_fatal_error(os.str()); } if (h1.is_kernel != h2.is_kernel) { - cerr << "header is_kernel flags are different for " - << filename << "\n"; - exit(EXIT_FAILURE); + ostringstream os; + os << "header is_kernel flags are different for " + << filename << "\n"; + throw op_fatal_error(os.str()); } if (h1.separate_lib_samples != h2.separate_lib_samples) { - cerr << "header separate_lib_samples are different (" - << h1.separate_lib_samples << ", " - << h2.separate_lib_samples << ") for " - << filename << "\n"; - exit(EXIT_FAILURE); + ostringstream os; + os << "header separate_lib_samples are different (" + << h1.separate_lib_samples << ", " + << h2.separate_lib_samples << ") for " + << filename << "\n"; + throw op_fatal_error(os.str()); } if (h1.separate_kernel_samples != h2.separate_kernel_samples) { - cerr << "header separate_kernel_samples are different (" - << h1.separate_kernel_samples << ", " - << h2.separate_kernel_samples << ") for" - << filename << "\n"; - exit(EXIT_FAILURE); + ostringstream os; + os << "header separate_kernel_samples are different (" + << h1.separate_kernel_samples << ", " + << h2.separate_kernel_samples << ") for" + << filename << "\n"; + throw op_fatal_error(os.str()); } // Note that we don't check CPU speed since that can vary @@ -107,8 +113,9 @@ opd_header read_header(string const & sa sizeof(struct opd_header)); if (rc != EXIT_SUCCESS) { - cerr << samples_db.err_msg << endl; - exit(EXIT_FAILURE); + ostringstream os; + os << samples_db.err_msg << endl; + throw op_fatal_error(os.str()); } opd_header head = *static_cast<opd_header *>(samples_db.base_memory); Index: profile.cpp =================================================================== RCS file: /cvsroot/oprofile/oprofile/libpp/profile.cpp,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -u -p -d -r1.6 -r1.6.2.1 --- profile.cpp 9 Jun 2003 00:07:31 -0000 1.6 +++ profile.cpp 11 Jun 2003 18:48:15 -0000 1.6.2.1 @@ -14,9 +14,11 @@ #include <iostream> #include <string> +#include <sstream> #include <cerrno> +#include "op_excepton.h" #include "op_header.h" #include "op_config.h" #include "op_sample_file.h" @@ -44,17 +46,19 @@ void profile_t::add_sample_file(string c sizeof(struct opd_header)); if (rc != EXIT_SUCCESS) { - cerr << samples_db.err_msg << endl; - exit(EXIT_FAILURE); + ostringstream os; + os << samples_db.err_msg << endl; + throw op_fatal_error(os.str()); } opd_header const & head = *static_cast<opd_header *>(samples_db.base_memory); if (head.version != OPD_VERSION) { - cerr << "oprofpp: samples files version mismatch, are you " - "running a daemon and post-profile tools with version " - "mismatch ?" << endl; - exit(EXIT_FAILURE); + ostringstream os; + os << "oprofpp: samples files version mismatch, are you " + << "running a daemon and post-profile tools with version " + << "mismatch ?\n"; + throw op_fatal_error(os.str()); } // if we already read a sample file header pointer is non null Index: profile_spec.cpp =================================================================== RCS file: /cvsroot/oprofile/oprofile/libpp/profile_spec.cpp,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -p -d -r1.2 -r1.2.2.1 --- profile_spec.cpp 29 May 2003 00:52:03 -0000 1.2 +++ profile_spec.cpp 11 Jun 2003 18:48:15 -0000 1.2.2.1 @@ -20,6 +20,7 @@ #include "string_manip.h" #include "glob_filter.h" #include "locate_images.h" +#include "op_exception.h" using namespace std; @@ -442,11 +443,10 @@ list<string> profile_spec::generate_file } if (!found_file) { - // FIXME: must we throw ? (yes, please - exit() shouldn't be - // in library code) - cerr << "No sample file found: try running opcontrol --dump\n" - << "or specify a session containing sample files" << endl; - exit(EXIT_FAILURE); + ostringstream os; + os << "No sample file found: try running opcontrol --dump\n" + << "or specify a session containing sample files\n"; + throw op_fatal_error(os.str()); } list<string> result; Index: symbol_sort.cpp =================================================================== RCS file: /cvsroot/oprofile/oprofile/libpp/symbol_sort.cpp,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -p -d -r1.3 -r1.3.2.1 --- symbol_sort.cpp 9 Jun 2003 01:12:37 -0000 1.3 +++ symbol_sort.cpp 11 Jun 2003 18:48:15 -0000 1.3.2.1 @@ -14,8 +14,10 @@ #include "symbol_functors.h" #include "file_manip.h" #include "name_storage.h" +#include "op_exception.h" #include <algorithm> +#include <sstream> using namespace std; @@ -76,9 +78,10 @@ int compare_by(sort_options::sort_order default: { // static_cast<> to shut up g++ 2.91.66 which warn // about ambiguity between <<(int) and <<(long int) - cerr << "compare_by(): unknown sort option: " - << static_cast<int>(order) << endl; - exit(EXIT_FAILURE); + ostringstream os; + os << "compare_by(): unknown sort option: " + << static_cast<int>(order) << endl; + throw op_fatal_error(os.str()); } } @@ -139,8 +142,9 @@ void sort_options::add_sort_option(std:: } else if (name == "image") { options.push_back(image); } else { - cerr << "unknown sort option: " << name << endl; - exit(EXIT_FAILURE); + ostringstream os; + os << "unknown sort option: " << name << endl; + throw op_fatal_error(os.str()); } } |