Commit Graph

342 Commits

Author SHA1 Message Date
wiz
4c99916337 va_{start,end} audit:
Make sure that each va_start has one and only one matching va_end,
especially in error cases.
If the va_list is used multiple times, do multiple va_starts/va_ends.
If a function gets va_list as argument, don't let it use va_end (since
it's the callers responsibility).

Improved by comments from enami and christos -- thanks!

Heimdal/krb4/KAME changes already fed back, rest to follow.

Inspired by, but not not based on, OpenBSD.
2001-09-24 13:22:25 +00:00
wiz
456dff6cb8 Spell 'occurred' with two 'r's. 2001-09-16 16:34:23 +00:00
wiz
1e378c4c12 precede, not preceed. 2001-08-20 12:00:46 +00:00
ad
811a1f306a Nit. 2001-08-13 12:33:48 +00:00
matt
2850b6d11e Print out errno when vfork fails. 2001-07-24 05:06:40 +00:00
christos
147dd16dac add .USEBEFORE Attribute 2001-07-03 18:08:50 +00:00
sjg
e28cc22621 Add 4th arg (flags) to Var_Set so that VarLoopExpand can tell it not
to export interator variables when using context VAR_CMD.

Reviewed: christos
2001-06-12 23:36:17 +00:00
christos
815427002e Revert Job_CatchOutput() change; it adds a considerable delay to make, and
it is not clear what problem it is trying to fix.
2001-06-11 04:20:32 +00:00
wiz
40ac848024 Fix various misspellings of compatible/compatibility. 2001-06-11 01:50:48 +00:00
sjg
fc0df160d8 Simplify the exporting of VAR_CMD's via MAKEFLAGS.
We now just list the names of such variables in .MAKEOVERRIDES.
When we come to export MAKEFLAGS we quote the value of each exported variable
using :Q, using: ${.MAKEOVERRIDES:O:u:@v@$v=${$v:Q}@}
The :O:u suppresses duplicate names.
Also modifed Parse_DoVar to re-export MAKEFLAGS whenever .MAKEOVERRIDES
is assigned to so .MAKEOVERRIDES+= PATH will export PATH=${PATH:Q}
to the environment, while .MAKEOVERRIDES= will disable export of VAR_CMD's.
2001-06-10 02:31:00 +00:00
sjg
e843d81502 Mention .MAKEOVERRIDES 2001-06-09 07:00:37 +00:00
sjg
d7c22ce2d7 Do a better job of duplicate suppression in .MAKEOVERRIDES.
From Var_Set: We actually want the equivalent of
.MAKEOVERRIDES:= ${.MAKEOVERRIDES:Nname=*} name='val'
clearing the previous value for name is important, since
doing simple duplicate suppression does not handle:
$ make FOO=goo
which then runs a sub-make with FOO=boo
the commands from that sub-make should see just FOO=boo.
2001-06-09 05:57:31 +00:00
sjg
44372a7be4 Modify handling of command line variable assignments and their exporting
via MAKEFLAGS.  Instead of appending them directly to .MAKEFLAGS, put
them in .MAKEOVERRIDES (and ensure they are quoted).  This is now done
in Var_Set when it exports VAR_CMD's.
Use ExportMAKEFLAGS() to export MAKEFLAGS, using the combined content
of .MAKEFLAGS and .MAKEOVERRIDES (with duplicate supression).
If .MAKEFLAGS is assigned to in a Makefile, ExportMAKEFLAGS is called again.
This allows a line like:
.MAKEOVERRIDES=
to effectively stop the exporting of the command line vars in MAKEFLAGS.
2001-06-09 05:22:47 +00:00
sjg
80a2d65904 Provide a useful? MAKE_VERSION. 2001-06-09 05:17:51 +00:00
explorer
4b9b13c33f Perform variable expansion on sysv rhs patterns. That is, expand ${O} in: ${SRCS:.c=.${O}} 2001-06-05 06:00:39 +00:00
sommerfeld
c60038a831 Avoid being overly specific since the unresolved merge conflict tags
we detect could have come from something other than cvs.
2001-06-02 18:04:44 +00:00
christos
45bc184ebb mention `cvs' in the the previous hack so that the clueless get a clue. 2001-06-02 16:17:08 +00:00
sommerfeld
f705156c1e Gratuitous make(1) hack of the morning: if operator-less lines start
with merge delimeters (<<<<<<, ======, >>>>>>), report "Makefile
contains unresolved merge conflict" rather than "Need an operator".
2001-06-02 14:25:23 +00:00
sjg
9cfd89292b A number of semi-related changes.
1. make -dx turns on DEBUG_SHELL which causes sh -x to be used where
   possible.
2. PrintOnError() is now called when make is stopping due to an error.
   This routine reports the curdir and the value of any variables listed
   in MAKE_PRINT_VAR_ON_ERROR.
3. Variables set via command line, are propagated to child-makes via
   MAKEFLAGS.  This behaviour appears to be necessary for POSIX (according
   to the GNU folk anyway).
4. Do not reset MAKEFILE when reading ".depend" as this rather eliminates the
   usefulness of ${MAKEFILE}.
5. Added ${.newline} as a simple means of being able to include \n in the
   result of a :@ loop expansion.
6. Set ${MAKE_VERSION} if defined.  Need to come up with a useful value.

Reviewed: christos
2001-06-01 20:33:37 +00:00
christos
d0c243e9e5 better error messages on exec* failures. From Simon Burge. 2001-05-29 17:37:51 +00:00
sjg
843e9049af Modifier :P avoid segfault if gn is found but path is NULL. 2001-05-12 06:48:49 +00:00
aymeric
b57e4f3ad4 Fix core dump triggered by a .DEFAULT target with no commands.
Bug reported privately by Nicolas Ollinger <nollinge@ens-lyon.fr>.

You can trigger this bug prior to updating your sources with for example:
% cat > Makefile <<EOF
.DEFAULT:
a
EOF
% make
2001-05-08 15:15:53 +00:00
sommerfeld
46608f023e bin/12734: fix SIGTSTP/SIGCONT handling.
- install SIGCONT handler which reestablishes SIGTSTP handler and then calls
JobRestartJobs() to restart all the suspended jobs.
 - when SIGTSTP is handled, call JobCatchChildren() so *** Suspended messages
get printed before make stops rather than after.
2001-05-01 03:27:50 +00:00
wiz
14dbdf5518 Negative exit code cleanup: Replace exit(-x) with exit(x).
As seen on tech-userlevel.
2001-04-06 11:13:45 +00:00
wiz
11d6505ee1 getcwd lives in 3, not 2. Whitespace fixes. 2001-04-04 09:39:07 +00:00
itojun
6924e04336 redo of previous: do not destroy v->val if str points to v->val.
XXX GC of v->val
2001-03-10 00:41:48 +00:00
itojun
4679105873 correct case with VAR_KEEP. if clause checked VAR_KEEP backwards,
and made str a dangling pointer.
2001-03-09 12:49:05 +00:00
sjg
cefcce2537 Test for non-existant LIB was incorrect (using cmtime cf. mtime). 2001-03-05 16:20:33 +00:00
christos
3e343f9152 PR/12251: Thomas Klausner: Make core dumps on unclosed conditional.
Well, it should say 'make core-dumps on any error on the primary makefile'.
This was a result of the new changes to print the path to the parsed
Makefile... Made the code a lot more conservative, plus prepended <progname>:
to each message.
2001-02-23 21:11:38 +00:00
cgd
2f928e31d3 <sys/time.h>, rather than <time.h>. The former is actually the documented
way to get gettimeofday(), etc.  On some systems on which you might want
to host make (e.g. solaris), <time.h> won't get you a struct timeval
definition.
2001-01-23 02:48:05 +00:00
thorpej
f9db1fd410 Add trace.o 2001-01-18 05:53:05 +00:00
cgd
d594ce939b comment or delete text after CPP directives. 2001-01-16 02:50:27 +00:00
cgd
3e8fb298b1 Avoid accidental use of trigraphs. Pointed out by development version of gcc. 2001-01-16 02:37:03 +00:00
christos
a5854c63b6 .PHONY gnode's don't get a PREFIX, so don't try to set the parent's prefixes
on a parallel make.
2001-01-15 22:17:09 +00:00
mycroft
139c9e6bf2 Once again, do the warning in a format that doesn't completely blow, and that
corresponds with text in the man page.  Also split it into 2 pieces that can
both be used with, e.g., C-x` in Emacs.
2001-01-14 20:54:16 +00:00
christos
a73d3d97ca Provide a new .if commands(<target>) primitive that returns true if the
target has commands associated with it.
2001-01-14 20:44:26 +00:00
christos
3fbe1ebe81 convert error messages into english 2001-01-14 06:02:25 +00:00
christos
07c4e36361 We cannot override commands yet, ignore the additional sets for now.
This will be reverted when the tree is fixed.
2001-01-14 05:41:08 +00:00
christos
50a2a73342 - make the second list of commands override the first like gmake does
- remember where the first command definition occured so that we can debug
  things.
2001-01-14 05:34:06 +00:00
christos
a2da9e7752 make the -W arg work; it was not put in the getopt string. 2001-01-14 05:33:53 +00:00
cgd
741c8f626f back out the change in rev 1.57. it was misguided; see discussion
on current-users (subject "build problem - multibyte.c").
2001-01-13 20:36:58 +00:00
jdolecek
f68d9de78d only print the 'duplicate script for target' warning if
parseWarnFatal is on
2001-01-12 09:27:44 +00:00
christos
bda102d681 PR/11800: Chris Demetriou: Add -W flag to exit on parse warnings.
While I am here, s/make:.*"/%s:\1", progname/
2001-01-10 15:54:00 +00:00
sjg
fc4c89c68b ReadMakefile: Don't simply fopen() fname before checking if we are in separate
objdir.  This is the way freebsd does it, and apart from being more correct,
saves a lot of pointless fopen() calls.
2001-01-07 06:16:02 +00:00
sjg
85be2f6526 Always try an give the absolute pathname of the Makefile that we got an error in.
Use .PARSEDIR if set and not '.', otherwise .CURDIR to qualify the Makefile's path.
2001-01-07 06:08:33 +00:00
sommerfeld
ded2509e8b Missing bit of last change 2001-01-01 15:50:23 +00:00
sommerfeld
3274266e5f Delete forceSerial; just use compatMake for that.
Add -N flag to *really* not execute any commands (useful when using
the -d flags to debug usr/src/Makefile)
Document -N
Update documentation of -n to mention that it still executes commands
for targets marked .MAKE so that the -N/-n distinction is clear.
2001-01-01 15:47:37 +00:00
sommerfeld
1ef47ae656 Include token counts in trace output.
Don't let tokensFree go negative.
2000-12-30 16:38:22 +00:00
sommerfeld
dd9c50102d Fix token accounting for .BEGIN/.END jobs 2000-12-30 15:58:34 +00:00
sommerfeld
663ff035b1 Avoid token leaks when aborting after an error. 2000-12-30 14:21:22 +00:00