# HG changeset patch # User David A. Holland # Date 1434089685 14400 # Node ID 3e7e696fe5583d0e3507ba8f5bf0e6c5a225ae4c # Parent 5922e6ca6b8028f8d5037b48eebf52a25fdfcc0c Clean up the mess Joerg made of apply_builtin_macros(). diff -r 5922e6ca6b80 -r 3e7e696fe558 macro.c --- a/macro.c Fri Jun 12 02:05:29 2015 -0400 +++ b/macro.c Fri Jun 12 02:14:45 2015 -0400 @@ -602,30 +602,6 @@ } void -macro_define_file(struct place *p) -{ - struct macro *m; - struct expansionitem *ei; - - m = macro_define_common_start(p, "__FILE__", p); - ei = expansionitem_create_file(); - expansionitemarray_add(&m->expansion, ei, NULL); - macro_define_common_end(m); -} - -void -macro_define_line(struct place *p) -{ - struct macro *m; - struct expansionitem *ei; - - m = macro_define_common_start(p, "__LINE__", p); - ei = expansionitem_create_line(); - expansionitemarray_add(&m->expansion, ei, NULL); - macro_define_common_end(m); -} - -void macro_define_params(struct place *p1, const char *macro, struct place *p2, const char *params, struct place *p3, const char *expansion) @@ -640,6 +616,24 @@ } void +macro_define_magic(struct place *p, const char *macro) +{ + struct macro *m; + struct expansionitem *ei; + + m = macro_define_common_start(p, macro, p); + if (!strcmp(macro, "__FILE__")) { + ei = expansionitem_create_file(); + } + else { + assert(!strcmp(macro, "__LINE__")); + ei = expansionitem_create_line(); + } + expansionitemarray_add(&m->expansion, ei, NULL); + macro_define_common_end(m); +} + +void macro_undef(const char *macro) { struct macro *m; diff -r 5922e6ca6b80 -r 3e7e696fe558 macro.h --- a/macro.h Fri Jun 12 02:05:29 2015 -0400 +++ b/macro.h Fri Jun 12 02:14:45 2015 -0400 @@ -35,13 +35,12 @@ void macros_init(void); void macros_cleanup(void); -void macro_define_file(struct place *); -void macro_define_line(struct place *); void macro_define_plain(struct place *, const char *macro, struct place *, const char *expansion); void macro_define_params(struct place *, const char *macro, struct place *, const char *params, struct place *, const char *expansion); +void macro_define_magic(struct place *, const char *macro); void macro_undef(const char *macro); bool macro_isdefined(const char *macro); diff -r 5922e6ca6b80 -r 3e7e696fe558 main.c --- a/main.c Fri Jun 12 02:05:29 2015 -0400 +++ b/main.c Fri Jun 12 02:14:45 2015 -0400 @@ -195,14 +195,12 @@ static void -apply_special_macros(unsigned *builtin_counter) +apply_magic_macro(unsigned num, const char *name) { struct place p; - place_setbuiltin(&p, ++(*builtin_counter)); - macro_define_file(&p); - place_setbuiltin(&p, ++(*builtin_counter)); - macro_define_line(&p); + place_setbuiltin(&p, num); + macro_define_magic(&p, name); } static @@ -217,35 +215,38 @@ static void -apply_builtin_macros(unsigned *builtin_counter) +apply_builtin_macros(void) { + unsigned n = 1; + + apply_magic_macro(n++, "__FILE__"); + apply_magic_macro(n++, "__LINE__"); + #ifdef CONFIG_OS - apply_builtin_macro(++(*builtin_counter), CONFIG_OS, "1"); + apply_builtin_macro(n++, CONFIG_OS, "1"); #endif #ifdef CONFIG_OS_2 - apply_builtin_macro(++(*builtin_counter), CONFIG_OS_2, "1"); + apply_builtin_macro(n++, CONFIG_OS_2, "1"); #endif #ifdef CONFIG_CPU - apply_builtin_macro(++(*builtin_counter), CONFIG_CPU, "1"); + apply_builtin_macro(n++, CONFIG_CPU, "1"); #endif #ifdef CONFIG_CPU_2 - apply_builtin_macro(++(*builtin_counter), CONFIG_CPU_2, "1"); + apply_builtin_macro(n++, CONFIG_CPU_2, "1"); #endif #ifdef CONFIG_SIZE - apply_builtin_macro(++(*builtin_counter), CONFIG_SIZE, "1"); + apply_builtin_macro(n++, CONFIG_SIZE, "1"); #endif #ifdef CONFIG_BINFMT - apply_builtin_macro(++(*builtin_counter), CONFIG_BINFMT, "1"); + apply_builtin_macro(n++, CONFIG_BINFMT, "1"); #endif #ifdef CONFIG_COMPILER - apply_builtin_macro(++(*builtin_counter), CONFIG_COMPILER, - VERSION_MAJOR); - apply_builtin_macro(++(*builtin_counter), CONFIG_COMPILER_MINOR, - VERSION_MINOR); - apply_builtin_macro(++(*builtin_counter), "__VERSION__", VERSION_LONG); + apply_builtin_macro(n++, CONFIG_COMPILER, VERSION_MAJOR); + apply_builtin_macro(n++, CONFIG_COMPILER_MINOR, VERSION_MINOR); + apply_builtin_macro(n++, "__VERSION__", VERSION_LONG); #endif } @@ -1043,7 +1044,6 @@ const char *inputfile = NULL; const char *outputfile = NULL; struct place cmdplace; - unsigned builtin_counter; int i; progname = strrchr(argv[0], '/'); @@ -1089,11 +1089,7 @@ mode.output_file = outputfile; loadincludepath(); - - builtin_counter = 0; - apply_special_macros(&builtin_counter); - apply_builtin_macros(&builtin_counter); - + apply_builtin_macros(); apply_commandline_macros(); read_commandline_files(); place_setnowhere(&cmdplace);