diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 42 |
1 files changed, 18 insertions, 24 deletions
@@ -43,7 +43,6 @@ extern double atof (); #endif extern char *mktemp (); -static void log_working_directory (); static void print_data_base (), print_version (); static void decode_switches (), decode_env_switches (); static void define_makeflags (); @@ -387,7 +386,7 @@ enter_command_line_file (name) /* Skip following slashes: ".//foo" is "foo", not "/foo". */ ++name; } - + if (*name == '\0') { /* It was all slashes! Move back to the dot and truncate @@ -427,7 +426,7 @@ main (argc, argv, envp) default_goal_file = 0; reading_filename = 0; reading_lineno_ptr = 0; - + #if !defined (HAVE_STRSIGNAL) && !defined (HAVE_SYS_SIGLIST) signame_init (); #endif @@ -489,7 +488,7 @@ main (argc, argv, envp) argv[0] = ""; if (argv[0][0] == '\0') program = "make"; - else + else { program = rindex (argv[0], '/'); #ifdef __MSDOS__ @@ -688,10 +687,6 @@ main (argc, argv, envp) starting_directory = current_directory; } - /* Tell the user where he is. */ - - if (print_directory_flag) - log_working_directory (1); /* Read any stdin makefiles into temporary files. */ @@ -920,7 +915,7 @@ main (argc, argv, envp) d = d->next; } } - } + } /* Set up `MAKEFLAGS' specially while remaking makefiles. */ define_makeflags (1, 1); @@ -932,11 +927,11 @@ main (argc, argv, envp) #define BOGUS_UPDATE_STATUS 0 assert (BOGUS_UPDATE_STATUS); break; - + case -1: /* Did nothing. */ break; - + case 2: /* Failed to update. Figure out if we care. */ { @@ -1010,8 +1005,7 @@ main (argc, argv, envp) if (print_data_base_flag) print_data_base (); - if (print_directory_flag) - log_working_directory (0); + log_working_directory (0); if (makefiles != 0) { @@ -1233,7 +1227,7 @@ handle_non_switch_argument (arg, env) goals. */ struct file *f = enter_command_line_file (arg); f->cmd_target = 1; - + if (goals == 0) { goals = (struct dep *) xmalloc (sizeof (struct dep)); @@ -1375,13 +1369,13 @@ positive integral argument", optarg = argv[optind++]; if (doit) - *(double *) cs->value_ptr + *(double *) cs->value_ptr = (optarg != 0 ? atof (optarg) : *(double *) cs->noarg_value); break; } - + /* We've found the switch. Stop looking. */ break; } @@ -1950,8 +1944,7 @@ die (status) if (print_data_base_flag) print_data_base (); - if (print_directory_flag) - log_working_directory (0); + log_working_directory (0); } exit (status); @@ -1960,20 +1953,21 @@ die (status) /* Write a message indicating that we've just entered or left (according to ENTERING) the current directory. */ -static void +void log_working_directory (entering) int entering; { static int entered = 0; char *message = entering ? "Entering" : "Leaving"; - if (entering) - entered = 1; - else if (!entered) - /* Don't print the leaving message if we - haven't printed the entering message. */ + /* Print nothing without the flag. Don't print the entering message + again if we already have. Don't print the leaving message if we + haven't printed the entering message. */ + if (! print_directory_flag || entering == entered) return; + entered = entering; + if (print_data_base_flag) fputs ("# ", stdout); |