Simplify how Charmonizer probes use redirection. Have all Charmonizer probe code snippets print directly to stdout rather than have them perform redirection themselves. Remove the "_charm.h" header that was used to support the old-style redirection.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/614c8ad6 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/614c8ad6 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/614c8ad6 Branch: refs/heads/master Commit: 614c8ad69bdf664d1d0aafd301fa5baa4710a884 Parents: ca3a784 Author: Marvin Humphrey <[email protected]> Authored: Wed Nov 28 17:10:43 2012 -0800 Committer: Marvin Humphrey <[email protected]> Committed: Mon Dec 3 12:39:30 2012 -0800 ---------------------------------------------------------------------- charmonizer/src/Charmonizer/Core/Compiler.c | 7 ++-- charmonizer/src/Charmonizer/Probe.c | 26 --------------- charmonizer/src/Charmonizer/Probe/FuncMacro.c | 9 ++--- charmonizer/src/Charmonizer/Probe/Integers.c | 15 +++------ charmonizer/src/Charmonizer/Probe/LargeFiles.c | 12 ++---- charmonizer/src/Charmonizer/Probe/VariadicMacros.c | 6 +-- 6 files changed, 18 insertions(+), 57 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/614c8ad6/charmonizer/src/Charmonizer/Core/Compiler.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/Compiler.c b/charmonizer/src/Charmonizer/Core/Compiler.c index 9fc9790..b6486b2 100644 --- a/charmonizer/src/Charmonizer/Core/Compiler.c +++ b/charmonizer/src/Charmonizer/Core/Compiler.c @@ -320,9 +320,10 @@ chaz_CC_capture_output(const char *source, size_t *output_len) { compile_succeeded = chaz_CC_compile_exe(CHAZ_CC_TRY_SOURCE_PATH, CHAZ_CC_TRY_BASENAME, source); if (compile_succeeded) { - chaz_OS_run_local(chaz_CC.try_exe_name, NULL); - captured_output - = chaz_Util_slurp_file(CHAZ_CC_TARGET_PATH, output_len); + chaz_OS_run_local_redirected(chaz_CC.try_exe_name, + CHAZ_CC_TARGET_PATH); + captured_output = chaz_Util_slurp_file(CHAZ_CC_TARGET_PATH, + output_len); } else { *output_len = 0; http://git-wip-us.apache.org/repos/asf/lucy/blob/614c8ad6/charmonizer/src/Charmonizer/Probe.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe.c b/charmonizer/src/Charmonizer/Probe.c index 84009a1..18176f7 100644 --- a/charmonizer/src/Charmonizer/Probe.c +++ b/charmonizer/src/Charmonizer/Probe.c @@ -24,14 +24,6 @@ #include "Charmonizer/Core/Compiler.h" #include "Charmonizer/Core/OperatingSystem.h" -/* Write the "_charm.h" file used by every probe. - */ -static void -chaz_Probe_write_charm_h(void); - -static void -chaz_Probe_remove_charm_h(void); - void chaz_Probe_init(const char *cc_command, const char *cc_flags) { /* Proces CHARM_VERBOSITY environment variable. */ @@ -45,7 +37,6 @@ chaz_Probe_init(const char *cc_command, const char *cc_flags) { chaz_CC_init(cc_command, cc_flags); chaz_ConfWriter_init(); chaz_HeadCheck_init(); - chaz_Probe_write_charm_h(); if (chaz_Util_verbosity) { printf("Initialization complete.\n"); } } @@ -55,26 +46,9 @@ chaz_Probe_clean_up(void) { if (chaz_Util_verbosity) { printf("Cleaning up...\n"); } /* Dispatch various clean up routines. */ - chaz_Probe_remove_charm_h(); chaz_ConfWriter_clean_up(); chaz_CC_clean_up(); if (chaz_Util_verbosity) { printf("Cleanup complete.\n"); } } -static void -chaz_Probe_write_charm_h(void) { - static const char charm_h_code[] = - CHAZ_QUOTE( #ifndef CHARM_H ) - CHAZ_QUOTE( #define CHARM_H 1 ) - CHAZ_QUOTE( #include <stdio.h> ) - CHAZ_QUOTE( #define Charm_Setup freopen("_charmonizer_target", "w", stdout) ) - CHAZ_QUOTE( #endif ); - chaz_Util_write_file("_charm.h", charm_h_code); -} - -static void -chaz_Probe_remove_charm_h(void) { - chaz_Util_remove_and_verify("_charm.h"); -} - http://git-wip-us.apache.org/repos/asf/lucy/blob/614c8ad6/charmonizer/src/Charmonizer/Probe/FuncMacro.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe/FuncMacro.c b/charmonizer/src/Charmonizer/Probe/FuncMacro.c index c0024b8..ae5cb4c 100644 --- a/charmonizer/src/Charmonizer/Probe/FuncMacro.c +++ b/charmonizer/src/Charmonizer/Probe/FuncMacro.c @@ -26,9 +26,8 @@ static int chaz_FuncMacro_probe_iso() { static const char iso_func_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%s", __func__); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); @@ -49,9 +48,8 @@ static int chaz_FuncMacro_probe_gnu() { /* Code for verifying GNU func macro. */ static const char gnu_func_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%s", __FUNCTION__); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); @@ -72,10 +70,9 @@ chaz_FuncMacro_probe_gnu() { static char* chaz_FuncMacro_try_inline(const char *keyword, size_t *output_len) { static const char inline_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( static %s int foo() { return 1; } ) CHAZ_QUOTE( int main() { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%%d", foo()); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); http://git-wip-us.apache.org/repos/asf/lucy/blob/614c8ad6/charmonizer/src/Charmonizer/Probe/Integers.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe/Integers.c b/charmonizer/src/Charmonizer/Probe/Integers.c index ad9a3b5..d2d0d7c 100644 --- a/charmonizer/src/Charmonizer/Probe/Integers.c +++ b/charmonizer/src/Charmonizer/Probe/Integers.c @@ -29,9 +29,8 @@ static int chaz_Integers_machine_is_big_endian(void); static const char chaz_Integers_sizes_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main () { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%d ", (int)sizeof(char)); ) CHAZ_QUOTE( printf("%d ", (int)sizeof(short)); ) CHAZ_QUOTE( printf("%d ", (int)sizeof(int)); ) @@ -41,32 +40,29 @@ static const char chaz_Integers_sizes_code[] = CHAZ_QUOTE( } ); static const char chaz_Integers_type64_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() ) CHAZ_QUOTE( { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%%d", (int)sizeof(%s)); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); static const char chaz_Integers_literal64_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( #define big 9000000000000000000%s ) CHAZ_QUOTE( int main() ) CHAZ_QUOTE( { ) CHAZ_QUOTE( int truncated = (int)big; ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%%d\n", truncated); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); static const char chaz_Integers_u64_to_double_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() ) CHAZ_QUOTE( { ) CHAZ_QUOTE( unsigned __int64 int_num = 0; ) CHAZ_QUOTE( double float_num; ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( float_num = (double)int_num; ) CHAZ_QUOTE( printf("%%f\n", float_num); ) CHAZ_QUOTE( return 0; ) @@ -367,9 +363,8 @@ chaz_Integers_run(void) { /* Buffer to hold the code, and its start and end. */ static const char format_64_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%%%su", 18446744073709551615%s); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); http://git-wip-us.apache.org/repos/asf/lucy/blob/614c8ad6/charmonizer/src/Charmonizer/Probe/LargeFiles.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe/LargeFiles.c b/charmonizer/src/Charmonizer/Probe/LargeFiles.c index e171f84..39f841a 100644 --- a/charmonizer/src/Charmonizer/Probe/LargeFiles.c +++ b/charmonizer/src/Charmonizer/Probe/LargeFiles.c @@ -119,10 +119,9 @@ static const int chaz_LargeFiles_probe_off64(void) { static const char off64_code[] = CHAZ_QUOTE( %s ) - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() ) CHAZ_QUOTE( { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("%%d", (int)sizeof(%s)); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); @@ -166,11 +165,10 @@ static int chaz_LargeFiles_try_stdio64(chaz_LargeFiles_stdio64_combo *combo) { static const char stdio64_code[] = CHAZ_QUOTE( %s ) - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() { ) CHAZ_QUOTE( %s pos; ) CHAZ_QUOTE( FILE *f; ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( f = %s("_charm_stdio64", "w"); ) CHAZ_QUOTE( if (f == NULL) return -1; ) CHAZ_QUOTE( printf("%%d", (int)sizeof(%s)); ) @@ -235,10 +233,9 @@ static int chaz_LargeFiles_probe_lseek(chaz_LargeFiles_unbuff_combo *combo) { static const char lseek_code[] = CHAZ_QUOTE( %s ) - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() { ) CHAZ_QUOTE( int fd; ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( fd = open("_charm_lseek", O_WRONLY | O_CREAT, 0666); ) CHAZ_QUOTE( if (fd == -1) { return -1; } ) CHAZ_QUOTE( %s(fd, 0, SEEK_SET); ) @@ -272,11 +269,10 @@ chaz_LargeFiles_probe_pread64(chaz_LargeFiles_unbuff_combo *combo) { * fine as long as it compiles. */ static const char pread64_code[] = CHAZ_QUOTE( %s ) - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( int main() { ) CHAZ_QUOTE( int fd = 20; ) CHAZ_QUOTE( char buf[1]; ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( printf("1"); ) CHAZ_QUOTE( %s(fd, buf, 1, 1); ) CHAZ_QUOTE( return 0; ) http://git-wip-us.apache.org/repos/asf/lucy/blob/614c8ad6/charmonizer/src/Charmonizer/Probe/VariadicMacros.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe/VariadicMacros.c b/charmonizer/src/Charmonizer/Probe/VariadicMacros.c index 9802273..4ac98dd 100644 --- a/charmonizer/src/Charmonizer/Probe/VariadicMacros.c +++ b/charmonizer/src/Charmonizer/Probe/VariadicMacros.c @@ -24,21 +24,19 @@ /* Code for verifying ISO-style variadic macros. */ static const char chaz_VariadicMacros_iso_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( #define ISO_TEST(fmt, ...) \\ ) " printf(fmt, __VA_ARGS__) \n" CHAZ_QUOTE( int main() { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( ISO_TEST("%d %d", 1, 1); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } ); /* Code for verifying GNU-style variadic macros. */ static const char chaz_VariadicMacros_gnuc_code[] = - CHAZ_QUOTE( #include "_charm.h" ) + CHAZ_QUOTE( #include <stdio.h> ) CHAZ_QUOTE( #define GNU_TEST(fmt, args...) printf(fmt, ##args) ) CHAZ_QUOTE( int main() { ) - CHAZ_QUOTE( Charm_Setup; ) CHAZ_QUOTE( GNU_TEST("%d %d", 1, 1); ) CHAZ_QUOTE( return 0; ) CHAZ_QUOTE( } );
