diff options
author | Charley Wang <chwang@redhat.com> | 2010-03-01 10:22:08 -0500 |
---|---|---|
committer | Charley Wang <chwang@redhat.com> | 2010-03-01 10:22:08 -0500 |
commit | 6861e05642c23c569ef34d49bfa3fe83e2badc11 (patch) | |
tree | 5ab933bb112549d91fa72b2fc8729fbf08388a1d /main.cxx | |
parent | 59de45f155d78e08f55e5ee5e16c24af40f20e5a (diff) | |
download | systemtap-steved-6861e05642c23c569ef34d49bfa3fe83e2badc11.tar.gz systemtap-steved-6861e05642c23c569ef34d49bfa3fe83e2badc11.tar.xz systemtap-steved-6861e05642c23c569ef34d49bfa3fe83e2badc11.zip |
PR11229: Make parse_kernel_config return int and suggest that the user check their installation of kernel devel
Diffstat (limited to 'main.cxx')
-rw-r--r-- | main.cxx | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -419,10 +419,19 @@ void setup_kernel_release (systemtap_session &s, const char* kstr) } -void parse_kernel_config (systemtap_session &s) +int parse_kernel_config (systemtap_session &s) { // PR10702: pull config options string kernel_config_file = s.kernel_build_tree + "/.config"; + struct stat st; + int rc = stat(kernel_config_file.c_str(), &st); + if (rc != 0) + { + clog << "Checking \"" << kernel_config_file << "\" failed: " << strerror(errno) << endl + << "Ensure kernel development headers & makefiles are installed." << endl; + return rc; + } + ifstream kcf (kernel_config_file.c_str()); string line; while (getline (kcf, line)) @@ -438,6 +447,7 @@ void parse_kernel_config (systemtap_session &s) clog << "Parsed kernel \"" << kernel_config_file << "\", number of tuples: " << s.kernel_config.size() << endl; kcf.close(); + return 0; } /* @@ -1069,7 +1079,11 @@ main (int argc, char * const argv []) } // Now that no further changes to s.kernel_build_tree can occur, let's use it. - parse_kernel_config (s); + if (parse_kernel_config (s) != 0) + { + exit (1); + } + // Create the name of the C source file within the temporary // directory. @@ -1450,3 +1464,4 @@ pass_5: } /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ + |