diff --git a/cc.c b/cc.c index b9e9d3a..82d8d3b 100644 --- a/cc.c +++ b/cc.c @@ -36,6 +36,7 @@ void spawn_processes(int debug_flag, char* prefix, char* preprocessed_file, char void prechecks(int argc, char** argv) { + int env = 0; char* hold; int i = 1; while(i <= argc) @@ -89,6 +90,28 @@ void prechecks(int argc, char** argv) M2LIBC_PATH = hold; i += 2; } + else if(match(argv[i], "-D")) + { + hold = argv[i+1]; + if(NULL == hold) + { + fputs("-D requires an argument", stderr); + exit(EXIT_FAILURE); + } + while(0 != hold[0]) + { + if('=' == hold[0]) + { + hold[0] = 0; + hold = hold + 1; + break; + } + hold = hold + 1; + } + init_macro_env(argv[i+1], hold, "__ARGV__", env); + env = env + 1; + i += 2; + } else { i += 1; @@ -238,6 +261,11 @@ int main(int argc, char** argv, char** envp) /* Handled by precheck */ i += 2; } + else if(match(argv[i], "-D")) + { + /* Handled by precheck */ + i += 2; + } else if(match(argv[i], "-h") || match(argv[i], "--help")) { fputs(" -f input file\n -o output file\n --help for this message\n --version for file version\n-E or --preprocess-only\n--max-string N (N is a number)\n--fuzz\n--no-debug\n", stdout);