From d1b3549da1b8013bd791b27f02cee2293505b075 Mon Sep 17 00:00:00 2001 From: dsmith Date: Wed, 8 Nov 2006 19:10:21 +0000 Subject: [PATCH] 2006-11-08 David Smith * cache.cxx (get_from_cache): To preserve semantics with non-cached use, if the last pass is 3, display the cached C source. --- ChangeLog | 6 ++++++ cache.cxx | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32eee9d65..5f48844ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-11-08 David Smith + + * cache.cxx (get_from_cache): To preserve semantics with + non-cached use, if the last pass is 3, display the cached C + source. + 2006-11-08 Frank Ch. Eigler * staptree.cxx (print_format::components_to_string): Quote ". diff --git a/cache.cxx b/cache.cxx index 0bbc84169..247bb96b3 100644 --- a/cache.cxx +++ b/cache.cxx @@ -3,6 +3,7 @@ #include "util.h" #include #include +#include extern "C" { #include @@ -96,6 +97,18 @@ get_from_cache(systemtap_session& s) } } + // We're done with these file handles. + close(fd_module); + close(fd_c); + + // To preserve semantics (since this will happen if we're not + // caching), display the C source if the last pass is 3. + if (s.last_pass == 3) + { + ifstream i (s.translated_source.c_str()); + cout << i.rdbuf(); + } + // If everything worked, tell the user. We need to do this here, // since if copying the cached C file works, but copying the cached // module fails, we remove the cached C file and let the C file get @@ -107,7 +120,5 @@ get_from_cache(systemtap_session& s) clog << "Pass 4: using cached " << s.hash_path << endl; } - close(fd_module); - close(fd_c); return true; } -- 2.43.5